hfy 4 дней назад
Родитель
Сommit
fa2ab52276

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesProductProdVisualDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesProductProdVisual;
+
+/**
+ * 拉铆过程参数DAO接口
+ * @author mes
+ * @version 2026-06-11
+ */
+@MyBatisDao
+public interface MesProductProdVisualDao extends CrudDao<MesProductProdVisual> {
+	
+}

+ 185 - 0
src/main/java/com/jeesite/modules/mes/entity/MesProductProdVisual.java

@@ -0,0 +1,185 @@
+package com.jeesite.modules.mes.entity;
+
+import javax.validation.constraints.Size;
+import java.util.Date;
+import java.util.List;
+
+import com.jeesite.common.mybatis.annotation.JoinTable;
+import com.jeesite.common.mybatis.annotation.JoinTable.Type;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import com.jeesite.common.entity.DataEntity;
+import com.jeesite.common.mybatis.annotation.Column;
+import com.jeesite.common.mybatis.annotation.Table;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
+import lombok.Getter;
+
+/**
+ * 拉铆过程参数Entity
+ * @author mes
+ * @version 2026-06-11
+ */
+@Table(name="mes_product_prod_visual", alias="a", label="拉铆过程参数信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="oprno", attrName="oprno", label="工位"),
+		@Column(name="line_sn", attrName="lineSn", label="产线编号"),
+		@Column(name="type", attrName="type", label="类型,A枪 B枪"),
+		@Column(name="f_out", attrName="fout", label="f_out"),
+		@Column(name="s_out", attrName="sout", label="s_out"),
+		@Column(name="f_min", attrName="fmin", label="f_min"),
+		@Column(name="s_min", attrName="smin", label="s_min"),
+		@Column(name="f_max", attrName="fmax", label="f_max"),
+		@Column(name="s_max", attrName="smax", label="s_max"),
+		@Column(name="number", attrName="number", label="number"),
+		@Column(name="result", attrName="result", label="结果"),
+		@Column(name="date_time", attrName="dateTime", label="拉铆时间", isUpdateForce=true),
+		@Column(name="create_by", attrName="createBy", label="工作人员", isUpdate=false),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isUpdateForce=true),
+	}, orderBy="a.id DESC"
+)
+public class MesProductProdVisual extends DataEntity<MesProductProdVisual> {
+	
+	private static final long serialVersionUID = 1L;
+	private String sn;		// 工件码
+	private String oprno;		// 工位
+	private String lineSn;		// 产线编号
+	private String type;		// 类型M5,M6
+	private String fout;		// f_out
+	private String sout;		// s_out
+	private String fmin;		// f_min
+	private String smin;		// s_min
+	private String fmax;		// f_max
+	private String smax;		// s_max
+	private String number;		// number
+	@Getter
+	private String result;		// 结果
+	private Date dateTime;		// 拉铆时间
+	@Getter
+	private List<MesProductProdVisual> datas;
+
+	public void setDatas(List<MesProductProdVisual> datas) {
+		this.datas = datas;
+	}
+
+	public void setResult(String result) {
+		this.result = result;
+	}
+
+	public MesProductProdVisual() {
+		this(null);
+	}
+	
+	public MesProductProdVisual(String id){
+		super(id);
+	}
+	
+	@Size(min=0, max=100, message="工件码长度不能超过 100 个字符")
+	public String getSn() {
+		return sn;
+	}
+
+	public void setSn(String sn) {
+		this.sn = sn;
+	}
+	
+	@Size(min=0, max=100, message="工位长度不能超过 100 个字符")
+	public String getOprno() {
+		return oprno;
+	}
+
+	public void setOprno(String oprno) {
+		this.oprno = oprno;
+	}
+	
+	@Size(min=0, max=100, message="产线编号长度不能超过 100 个字符")
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
+	
+	@Size(min=0, max=100, message="类型,A枪 B枪长度不能超过 100 个字符")
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+	
+	@Size(min=0, max=100, message="f_out长度不能超过 100 个字符")
+	public String getFout() {
+		return fout;
+	}
+
+	public void setFout(String fout) {
+		this.fout = fout;
+	}
+	
+	@Size(min=0, max=100, message="s_out长度不能超过 100 个字符")
+	public String getSout() {
+		return sout;
+	}
+
+	public void setSout(String sout) {
+		this.sout = sout;
+	}
+	
+	@Size(min=0, max=100, message="f_min长度不能超过 100 个字符")
+	public String getFmin() {
+		return fmin;
+	}
+
+	public void setFmin(String fmin) {
+		this.fmin = fmin;
+	}
+	
+	@Size(min=0, max=100, message="s_min长度不能超过 100 个字符")
+	public String getSmin() {
+		return smin;
+	}
+
+	public void setSmin(String smin) {
+		this.smin = smin;
+	}
+	
+	@Size(min=0, max=100, message="f_max长度不能超过 100 个字符")
+	public String getFmax() {
+		return fmax;
+	}
+
+	public void setFmax(String fmax) {
+		this.fmax = fmax;
+	}
+	
+	@Size(min=0, max=100, message="s_max长度不能超过 100 个字符")
+	public String getSmax() {
+		return smax;
+	}
+
+	public void setSmax(String smax) {
+		this.smax = smax;
+	}
+	
+	@Size(min=0, max=100, message="number长度不能超过 100 个字符")
+	public String getNumber() {
+		return number;
+	}
+
+	public void setNumber(String number) {
+		this.number = number;
+	}
+	
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public Date getDateTime() {
+		return dateTime;
+	}
+
+	public void setDateTime(Date dateTime) {
+		this.dateTime = dateTime;
+	}
+	
+}

+ 1 - 1
src/main/java/com/jeesite/modules/mes/service/MesLineProcessMaterialService.java

@@ -106,7 +106,7 @@ public class MesLineProcessMaterialService extends CrudService<MesLineProcessMat
 		MesLineProcessMaterial mesLineProcessMaterial = new MesLineProcessMaterial();
 		mesLineProcessMaterial.setOprno(oprno);
 		mesLineProcessMaterial.setLineSn(lineSn);
-		mesLineProcessMaterial.setStatus("0");
+		//mesLineProcessMaterial.setStatus("0");
 		List<MesLineProcessMaterial> lists = findList(mesLineProcessMaterial);
 		if(ListUtils.isEmpty(lists)){
 			return null; // 不需要绑定物料

+ 81 - 0
src/main/java/com/jeesite/modules/mes/service/MesProductProdVisualService.java

@@ -0,0 +1,81 @@
+package com.jeesite.modules.mes.service;
+
+import java.util.List;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.service.CrudService;
+import com.jeesite.modules.mes.entity.MesProductProdVisual;
+import com.jeesite.modules.mes.dao.MesProductProdVisualDao;
+
+/**
+ * 拉铆过程参数Service
+ * @author mes
+ * @version 2026-06-11
+ */
+@Service
+public class MesProductProdVisualService extends CrudService<MesProductProdVisualDao, MesProductProdVisual> {
+	
+	/**
+	 * 获取单条数据
+	 * @param mesProductProdVisual
+	 * @return
+	 */
+	@Override
+	public MesProductProdVisual get(MesProductProdVisual mesProductProdVisual) {
+		return super.get(mesProductProdVisual);
+	}
+	
+	/**
+	 * 查询分页数据
+	 * @param mesProductProdVisual 查询条件
+	 * @param mesProductProdVisual.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesProductProdVisual> findPage(MesProductProdVisual mesProductProdVisual) {
+		return super.findPage(mesProductProdVisual);
+	}
+	
+	/**
+	 * 查询列表数据
+	 * @param mesProductProdVisual
+	 * @return
+	 */
+	@Override
+	public List<MesProductProdVisual> findList(MesProductProdVisual mesProductProdVisual) {
+		return super.findList(mesProductProdVisual);
+	}
+	
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesProductProdVisual
+	 */
+	@Override
+	@Transactional
+	public void save(MesProductProdVisual mesProductProdVisual) {
+		super.save(mesProductProdVisual);
+	}
+	
+	/**
+	 * 更新状态
+	 * @param mesProductProdVisual
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesProductProdVisual mesProductProdVisual) {
+		super.updateStatus(mesProductProdVisual);
+	}
+	
+	/**
+	 * 删除数据
+	 * @param mesProductProdVisual
+	 */
+	@Override
+	@Transactional
+	public void delete(MesProductProdVisual mesProductProdVisual) {
+		super.delete(mesProductProdVisual);
+	}
+	
+}

+ 97 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductProdVisualController.java

@@ -0,0 +1,97 @@
+package com.jeesite.modules.mes.web;
+
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.jeesite.common.config.Global;
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.MesProductProdVisual;
+import com.jeesite.modules.mes.service.MesProductProdVisualService;
+
+/**
+ * 拉铆过程参数Controller
+ * @author mes
+ * @version 2026-06-11
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesProductProdVisual")
+public class MesProductProdVisualController extends BaseController {
+
+	@Autowired
+	private MesProductProdVisualService mesProductProdVisualService;
+	
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesProductProdVisual get(String id, boolean isNewRecord) {
+		return mesProductProdVisualService.get(id, isNewRecord);
+	}
+	
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesProductProdVisual:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesProductProdVisual mesProductProdVisual, Model model) {
+		model.addAttribute("mesProductProdVisual", mesProductProdVisual);
+		return "modules/mes/mesProductProdVisualList";
+	}
+	
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesProductProdVisual:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesProductProdVisual> listData(MesProductProdVisual mesProductProdVisual, HttpServletRequest request, HttpServletResponse response) {
+		mesProductProdVisual.setPage(new Page<>(request, response));
+		Page<MesProductProdVisual> page = mesProductProdVisualService.findPage(mesProductProdVisual);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesProductProdVisual:view")
+	@RequestMapping(value = "form")
+	public String form(MesProductProdVisual mesProductProdVisual, Model model) {
+		model.addAttribute("mesProductProdVisual", mesProductProdVisual);
+		return "modules/mes/mesProductProdVisualForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesProductProdVisual:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesProductProdVisual mesProductProdVisual) {
+		mesProductProdVisualService.save(mesProductProdVisual);
+		return renderResult(Global.TRUE, text("保存拉铆过程参数成功!"));
+	}
+	
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesProductProdVisual:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesProductProdVisual mesProductProdVisual) {
+		mesProductProdVisualService.delete(mesProductProdVisual);
+		return renderResult(Global.TRUE, text("删除拉铆过程参数成功!"));
+	}
+	
+}

+ 100 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java

@@ -2951,7 +2951,107 @@ public class MesProductRecordController extends BaseController {
 
 		return renderResult(Global.TRUE, text("操作成功!"));
 	}
+	/*3D拉铆扫码到站检测*/
+	@PostMapping(value = "result")
+	@ResponseBody
+	public HashMap<String, String> result(@RequestBody MesProductProdVisual mesProductProdVisual,HttpServletRequest request) {
+//		mesTorsionalProcess.setSn(mesTorsionalProcess.getBarcode());
+
+		String sn = mesProductProdVisual.getSn();
+		String oprno = mesProductProdVisual.getOprno();
+		String lineSn = mesProductProdVisual.getLineSn();
+		mesLogService.apisave2(oprno,lineSn,JSON.toJSONString(mesProductProdVisual),request);
+
+		HashMap<String, String> hashMap = new HashMap<>();
+		hashMap.put("Data", "null");
+		hashMap.put("Message", "null");
+		if (StringUtils.isEmpty(sn)||StringUtils.isEmpty(oprno)||StringUtils.isEmpty(lineSn)) {
+			hashMap.put("Message", "参数为空");
+			hashMap.put("Result", "FAIL");
+			return hashMap;
+		}
+		User user = UserUtils.getUser();
+		String userCode = user.getUserCode();
+//更新工位当前工件
+		String ret = checkQualityCommon(oprno,sn,lineSn,userCode);
+		String checkret = ret.substring(3,5);
+		if(checkret.equals("UD")){
+			hashMap.put("Message", "工件可以加工");
+			hashMap.put("Result", "SUCCESS");
+		}else{
+			String lx = ret.substring(0,3);
+			String lmsg = ErrorMsg.getErrorMsg(checkret,lx);
+			hashMap.put("Message", lmsg);
+			hashMap.put("Result", "Fail");
+		}
 
+		return hashMap;
+	}
+	@Autowired
+	private MesProductProdVisualService mesProductProdVisualService;
+	/*产品拉铆过程上传*/
+	@PostMapping(value = "process")
+	@ResponseBody
+	public 	HashMap<String, String> process(HttpServletRequest request,
+											  @RequestBody MesProductProdVisual mesProductProdVisual) {
+		HashMap<String, String> hashMap = new HashMap<>();
+		hashMap.put("Data", "null");
+		if (mesProductProdVisual == null || mesProductProdVisual.getDatas()==null||StringUtils.isEmpty(mesProductProdVisual.getSn())||
+				StringUtils.isEmpty(mesProductProdVisual.getOprno())||
+				StringUtils.isEmpty(mesProductProdVisual.getLineSn())||
+				StringUtils.isEmpty(mesProductProdVisual.getResult())){
+			hashMap.put("Message", "参数为null");
+			hashMap.put("Result", "Fail");
+			return hashMap;
+		}
+		String oprno = mesProductProdVisual.getOprno();
+		String sn = mesProductProdVisual.getSn();
+		String lineSn = mesProductProdVisual.getLineSn();
+		String result = mesProductProdVisual.getResult();
+		mesLogService.apisave2(oprno,lineSn,JSON.toJSONString(mesProductProdVisual),request);
+
+
+		String userCode = "";
+		List<ParamsResp> params = new ArrayList<>();
+		try{
+			// 2.判断物料批次是否符合绑定
+			List<BindMaterialResp> bmlists = mesLineProcessMaterialService.getBindMaterial(oprno, lineSn);
+
+			mesProductRecordService.updateRecordResult(sn,oprno,"100000","",result,userCode,params,lineSn,true,bmlists);
+		}catch (Exception e){
+			hashMap.put("Message", "参数为null");
+			hashMap.put("Result", "Fail");
+			return hashMap;
+		}
+
+
+		//添加扭力过程参数表
+		List<MesProductProdVisual> list = mesProductProdVisual.getDatas();
+		if (list!= null && list.size() > 0){
+			Date currentDate = new Date();
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+			String dateString = format.format(currentDate);
+			Date time=null;
+			try {
+				time = format.parse(dateString);
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+			for (MesProductProdVisual dtl : list) {
+				dtl.setOprno(oprno);
+				dtl.setSn(sn);
+				dtl.setLineSn(lineSn);
+				dtl.setCreateDate(time);
+//				dtl.setCreateBy(mesProductRecord.getCreateBy());
+				mesProductProdVisualService.save(dtl);
+			}
+		}
+
+		hashMap.put("Message", "上传成功");
+		hashMap.put("Result", "SUCCESS");
+		return hashMap;
+
+	}
 	/*3D拧紧扫码到站检测*/
 	@PostMapping(value = "select")
 	@ResponseBody

+ 7 - 5
src/main/resources/config/application.yml

@@ -54,12 +54,12 @@ jdbc:
   # Mysql 数据库配置
   type: mysql
   driver: com.mysql.cj.jdbc.Driver
-  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_199_0y7a?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://192.168.16.100:3306/mes_cloud?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.16.100:3306/mes_cloud?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-#  username: mes_cloud
-#  password: Aw3EYLj5GcHnrFm8
-  username: root
-  password: 123456
+  username: mes_cloud
+  password: Aw3EYLj5GcHnrFm8
+#  username: root
+#  password: 123456
 
   testSql: SELECT 1
 
@@ -623,6 +623,8 @@ shiro:
     ${adminPath}/mes/mesProduct/screenData = anon
     ${adminPath}/mes/mesProductCcd/testDate = anon
     ${adminPath}/mes/mesProductCcd/add = anon
+      ${adminPath}/mes/mesProductRecord/result = anon
+    ${adminPath}/mes/mesProductRecord/process  = anon
     ${adminPath}/mes/mesProductRecord/currentProduct = anon
     ${adminPath}/mes/mesProductFsw/add = anon
     ${adminPath}/mes/mesProductProd/batchsave = anon

+ 155 - 0
src/main/resources/views/modules/mes/mesProductProdVisualForm.html

@@ -0,0 +1,155 @@
+<% layout('/layouts/default.html', {title: '拉铆过程参数管理', libs: ['validate']}){ %>
+<div class="main-content">
+	<div class="box box-main">
+		<div class="box-header with-border">
+			<div class="box-title">
+				<i class="fa icon-note"></i> ${text(mesProductProdVisual.isNewRecord ? '新增拉铆过程参数' : '编辑拉铆过程参数')}
+			</div>
+			<div class="box-tools pull-right">
+				<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
+			</div>
+		</div>
+		<#form:form id="inputForm" model="${mesProductProdVisual}" action="${ctx}/mes/mesProductProdVisual/save" method="post" class="form-horizontal">
+			<div class="box-body">
+				<div class="form-unit">${text('基本信息')}</div>
+				<#form:hidden path="id"/>
+				<div class="row">
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('工件码')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="sn" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('工位')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="oprno" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('产线编号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="lineSn" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('类型,A枪 B枪')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="type" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('f_out')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="fout" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('s_out')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="sout" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('f_min')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="fmin" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('s_min')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="smin" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('f_max')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="fmax" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('s_max')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="smax" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('number')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="number" maxlength="100" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('拉铆时间')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="dateTime" readonly="true" maxlength="20" class="form-control laydate"
+									dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="box-footer">
+				<div class="row">
+					<div class="col-sm-offset-2 col-sm-10">
+						<% if (hasPermi('mes:mesProductProdVisual:edit')){ %>
+							<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
+						<% } %>
+						<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
+					</div>
+				</div>
+			</div>
+		</#form:form>
+	</div>
+</div>
+<% } %>
+<script>
+$("#inputForm").validate({
+	submitHandler: function(form){
+		js.ajaxSubmitForm($(form), function(data){
+			js.showMessage(data.message);
+			if(data.result == Global.TRUE){
+				js.closeCurrentTabPage(function(contentWindow){
+					contentWindow.page();
+				});
+			}
+		}, "json");
+    }
+});
+</script>

+ 150 - 0
src/main/resources/views/modules/mes/mesProductProdVisualList.html

@@ -0,0 +1,150 @@
+<% layout('/layouts/default.html', {title: '拉铆过程参数管理', libs: ['dataGrid']}){ %>
+<div class="main-content">
+	<div class="box box-main">
+		<div class="box-header">
+			<div class="box-title">
+				<i class="fa icon-notebook"></i> ${text('拉铆过程参数管理')}
+			</div>
+			<div class="box-tools pull-right">
+				<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
+				<% if(hasPermi('mes:mesProductProdVisual:edit')){ %>
+					<a href="${ctx}/mes/mesProductProdVisual/form" class="btn btn-default btnTool" title="${text('新增拉铆过程参数')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
+				<% } %>
+				<a href="#" class="btn btn-default" id="btnSetting" title="${text('设置')}"><i class="fa fa-navicon"></i></a>
+			</div>
+		</div>
+		<div class="box-body">
+			<#form:form id="searchForm" model="${mesProductProdVisual}" action="${ctx}/mes/mesProductProdVisual/listData" method="post" class="form-inline hide"
+					data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
+				<div class="form-group">
+					<label class="control-label">${text('工件码')}:</label>
+					<div class="control-inline">
+						<#form:input path="sn" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工位')}:</label>
+					<div class="control-inline">
+						<#form:input path="oprno" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('产线编号')}:</label>
+					<div class="control-inline">
+						<#form:input path="lineSn" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('类型,A枪 B枪')}:</label>
+					<div class="control-inline">
+						<#form:input path="type" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('f_out')}:</label>
+					<div class="control-inline">
+						<#form:input path="fout" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('s_out')}:</label>
+					<div class="control-inline">
+						<#form:input path="sout" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('f_min')}:</label>
+					<div class="control-inline">
+						<#form:input path="fmin" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('s_min')}:</label>
+					<div class="control-inline">
+						<#form:input path="smin" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('f_max')}:</label>
+					<div class="control-inline">
+						<#form:input path="fmax" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('s_max')}:</label>
+					<div class="control-inline">
+						<#form:input path="smax" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('number')}:</label>
+					<div class="control-inline">
+						<#form:input path="number" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('拉铆时间')}:</label>
+					<div class="control-inline">
+						<#form:input path="dateTime" readonly="true" maxlength="20" class="form-control laydate width-datetime"
+							dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工作人员')}:</label>
+					<div class="control-inline">
+						<#form:input path="createBy" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('创建时间')}:</label>
+					<div class="control-inline">
+						<#form:input path="createDate" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
+					<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
+				</div>
+			</#form:form>
+			<table id="dataGrid"></table>
+			<div id="dataGridPage"></div>
+		</div>
+	</div>
+</div>
+<% } %>
+<script>
+// 初始化DataGrid对象
+$('#dataGrid').dataGrid({
+	searchForm: $("#searchForm"),
+	columnModel: [
+		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesProductProdVisual/form?id='+row.id+'" class="btnList" data-title="${text("编辑拉铆过程参数")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("工位")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
+		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:150, align:"left"},
+		{header:'${text("类型,A枪 B枪")}', name:'type', index:'a.type', width:150, align:"left"},
+		{header:'${text("f_out")}', name:'fout', index:'a.f_out', width:150, align:"left"},
+		{header:'${text("s_out")}', name:'sout', index:'a.s_out', width:150, align:"left"},
+		{header:'${text("f_min")}', name:'fmin', index:'a.f_min', width:150, align:"left"},
+		{header:'${text("s_min")}', name:'smin', index:'a.s_min', width:150, align:"left"},
+		{header:'${text("f_max")}', name:'fmax', index:'a.f_max', width:150, align:"left"},
+		{header:'${text("s_max")}', name:'smax', index:'a.s_max', width:150, align:"left"},
+		{header:'${text("number")}', name:'number', index:'a.number', width:150, align:"left"},
+		{header:'${text("拉铆时间")}', name:'dateTime', index:'a.date_time', width:150, align:"center"},
+		{header:'${text("工作人员")}', name:'createBy', index:'a.create_by', width:150, align:"left"},
+		{header:'${text("创建时间")}', name:'createDate', index:'a.create_date', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesProductProdVisual:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesProductProdVisual/form?id='+row.id+'" class="btnList" title="${text("编辑拉铆过程参数")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesProductProdVisual/delete?id='+row.id+'" class="btnList" title="${text("删除拉铆过程参数")}" data-confirm="${text("确认要删除该拉铆过程参数吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
+			//<% } %>
+			return actions.join('');
+		}}
+	],
+	// 加载成功后执行事件
+	ajaxSuccess: function(data){
+		
+	}
+});
+</script>