sunxianglong 2 miesięcy temu
rodzic
commit
c0a448948b

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesProductCmtDataDao.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.MesProductCmtData;
+
+/**
+ * cmt过程参数表DAO接口
+ * @author sxl
+ * @version 2026-08-19
+ */
+@MyBatisDao
+public interface MesProductCmtDataDao extends CrudDao<MesProductCmtData> {
+	
+}

+ 108 - 0
src/main/java/com/jeesite/modules/mes/entity/MesProductCmtData.java

@@ -0,0 +1,108 @@
+package com.jeesite.modules.mes.entity;
+
+import javax.validation.constraints.Size;
+
+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;
+
+/**
+ * cmt过程参数表Entity
+ * @author sxl
+ * @version 2026-08-19
+ */
+@Table(name="mes_product_cmt_data", alias="a", label="cmt过程参数表信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="oprno", attrName="oprno", label="工位号"),
+		@Column(name="ss_speed", attrName="ssSpeed", label="送丝速度"),
+		@Column(name="current", attrName="current", label="电流"),
+		@Column(name="voltage", attrName="voltage", label="电压"),
+		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
+	}, orderBy="a.id DESC"
+)
+public class MesProductCmtData extends DataEntity<MesProductCmtData> {
+
+	private static final long serialVersionUID = 1L;
+	private String sn;		// 工件码
+	private String oprno;		// 工位号
+	private String ssSpeed;		// 送丝速度
+	private String current;		// 电流
+	private String voltage;		// 电压
+	/** 产线编号(接口上传用,不落库) */
+	private String lineSn;
+	/** 送丝速度(接口字段 wireSpeed,映射到 ssSpeed) */
+	private String wireSpeed;
+
+	public MesProductCmtData() {
+		this(null);
+	}
+
+	public MesProductCmtData(String id){
+		super(id);
+	}
+
+	@Size(min=0, max=64, message="工件码长度不能超过 64 个字符")
+	public String getSn() {
+		return sn;
+	}
+
+	public void setSn(String sn) {
+		this.sn = sn;
+	}
+
+	@Size(min=0, max=64, message="工位号长度不能超过 64 个字符")
+	public String getOprno() {
+		return oprno;
+	}
+
+	public void setOprno(String oprno) {
+		this.oprno = oprno;
+	}
+
+	@Size(min=0, max=2000, message="送丝速度长度不能超过 64 个字符")
+	public String getSsSpeed() {
+		return ssSpeed;
+	}
+
+	public void setSsSpeed(String ssSpeed) {
+		this.ssSpeed = ssSpeed;
+	}
+
+	@Size(min=0, max=2000, message="电流长度不能超过 64 个字符")
+	public String getCurrent() {
+		return current;
+	}
+
+	public void setCurrent(String current) {
+		this.current = current;
+	}
+
+	@Size(min=0, max=2000, message="电压长度不能超过 64 个字符")
+	public String getVoltage() {
+		return voltage;
+	}
+
+	public void setVoltage(String voltage) {
+		this.voltage = voltage;
+	}
+
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
+
+	public String getWireSpeed() {
+		return wireSpeed;
+	}
+
+	public void setWireSpeed(String wireSpeed) {
+		this.wireSpeed = wireSpeed;
+	}
+
+}

+ 81 - 0
src/main/java/com/jeesite/modules/mes/service/MesProductCmtDataService.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.MesProductCmtData;
+import com.jeesite.modules.mes.dao.MesProductCmtDataDao;
+
+/**
+ * cmt过程参数表Service
+ * @author sxl
+ * @version 2026-08-19
+ */
+@Service
+public class MesProductCmtDataService extends CrudService<MesProductCmtDataDao, MesProductCmtData> {
+	
+	/**
+	 * 获取单条数据
+	 * @param mesProductCmtData
+	 * @return
+	 */
+	@Override
+	public MesProductCmtData get(MesProductCmtData mesProductCmtData) {
+		return super.get(mesProductCmtData);
+	}
+	
+	/**
+	 * 查询分页数据
+	 * @param mesProductCmtData 查询条件
+	 * @param mesProductCmtData.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesProductCmtData> findPage(MesProductCmtData mesProductCmtData) {
+		return super.findPage(mesProductCmtData);
+	}
+	
+	/**
+	 * 查询列表数据
+	 * @param mesProductCmtData
+	 * @return
+	 */
+	@Override
+	public List<MesProductCmtData> findList(MesProductCmtData mesProductCmtData) {
+		return super.findList(mesProductCmtData);
+	}
+	
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesProductCmtData
+	 */
+	@Override
+	@Transactional
+	public void save(MesProductCmtData mesProductCmtData) {
+		super.save(mesProductCmtData);
+	}
+	
+	/**
+	 * 更新状态
+	 * @param mesProductCmtData
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesProductCmtData mesProductCmtData) {
+		super.updateStatus(mesProductCmtData);
+	}
+	
+	/**
+	 * 删除数据
+	 * @param mesProductCmtData
+	 */
+	@Override
+	@Transactional
+	public void delete(MesProductCmtData mesProductCmtData) {
+		super.delete(mesProductCmtData);
+	}
+	
+}

+ 148 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductCmtDataController.java

@@ -0,0 +1,148 @@
+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.transaction.annotation.Transactional;
+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.RequestBody;
+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.lang.StringUtils;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.MesProductCmtData;
+import com.jeesite.modules.mes.service.MesProductCmtDataService;
+
+/**
+ * cmt过程参数表Controller
+ * @author sxl
+ * @version 2026-08-19
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesProductCmtData")
+public class MesProductCmtDataController extends BaseController {
+
+	@Autowired
+	private MesProductCmtDataService mesProductCmtDataService;
+	
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesProductCmtData get(String id, boolean isNewRecord) {
+		return mesProductCmtDataService.get(id, isNewRecord);
+	}
+	
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesProductCmtData:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesProductCmtData mesProductCmtData, Model model) {
+		model.addAttribute("mesProductCmtData", mesProductCmtData);
+		return "modules/mes/mesProductCmtDataList";
+	}
+	
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesProductCmtData:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesProductCmtData> listData(MesProductCmtData mesProductCmtData, HttpServletRequest request, HttpServletResponse response) {
+		mesProductCmtData.setPage(new Page<>(request, response));
+		Page<MesProductCmtData> page = mesProductCmtDataService.findPage(mesProductCmtData);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesProductCmtData:view")
+	@RequestMapping(value = "form")
+	public String form(MesProductCmtData mesProductCmtData, Model model) {
+		model.addAttribute("mesProductCmtData", mesProductCmtData);
+		return "modules/mes/mesProductCmtDataForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesProductCmtData:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesProductCmtData mesProductCmtData) {
+		mesProductCmtDataService.save(mesProductCmtData);
+		return renderResult(Global.TRUE, text("保存cmt过程参数表成功!"));
+	}
+	
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesProductCmtData:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesProductCmtData mesProductCmtData) {
+		mesProductCmtDataService.delete(mesProductCmtData);
+		return renderResult(Global.TRUE, text("删除cmt过程参数表成功!"));
+	}
+
+	/**
+	 * 客户端上报 CMT 过程参数
+	 */
+	@PostMapping(value = "add")
+	@ResponseBody
+	@Transactional
+	public String add(@RequestBody MesProductCmtData mesProductCmtData) {
+		if (mesProductCmtData == null) {
+			return renderResult(Global.FALSE, text("参数错误!"));
+		}
+		if (StringUtils.isBlank(mesProductCmtData.getSn())) {
+			return renderResult(Global.FALSE, text("工件码不能为空!"));
+		}
+		if (StringUtils.isBlank(mesProductCmtData.getOprno())) {
+			return renderResult(Global.FALSE, text("工位号不能为空!"));
+		}
+		if (StringUtils.isBlank(mesProductCmtData.getLineSn())) {
+			return renderResult(Global.FALSE, text("产线编号不能为空!"));
+		}
+
+		String wireSpeed = StringUtils.isNotBlank(mesProductCmtData.getWireSpeed())
+				? mesProductCmtData.getWireSpeed().trim()
+				: (mesProductCmtData.getSsSpeed() == null ? null : mesProductCmtData.getSsSpeed().trim());
+		if (StringUtils.isBlank(wireSpeed)) {
+			return renderResult(Global.FALSE, text("送丝速度不能为空!"));
+		}
+		if (StringUtils.isBlank(mesProductCmtData.getCurrent())) {
+			return renderResult(Global.FALSE, text("电流不能为空!"));
+		}
+		if (StringUtils.isBlank(mesProductCmtData.getVoltage())) {
+			return renderResult(Global.FALSE, text("电压不能为空!"));
+		}
+
+		String oprno = mesProductCmtData.getOprno().trim();
+		if (oprno.length() == 5) {
+			oprno = oprno + "A";
+		}
+
+		MesProductCmtData entity = new MesProductCmtData();
+		entity.setSn(mesProductCmtData.getSn().trim());
+		entity.setOprno(oprno);
+		entity.setSsSpeed(wireSpeed);
+		entity.setCurrent(mesProductCmtData.getCurrent().trim());
+		entity.setVoltage(mesProductCmtData.getVoltage().trim());
+		mesProductCmtDataService.save(entity);
+		return renderResult(Global.TRUE, text("操作成功!"));
+	}
+	
+}

+ 35 - 11
src/main/java/com/jeesite/modules/mes/web/MesScrewController.java

@@ -13,8 +13,10 @@ import com.jeesite.modules.mes.entity.MesScrew;
 import com.jeesite.modules.mes.entity.MesScrewInfo;
 import com.jeesite.modules.mes.entity.MesToolLife;
 import com.jeesite.modules.mes.resp.BindMaterialResp;
+import com.jeesite.modules.mes.resp.ParamsResp;
 import com.jeesite.modules.mes.service.MesLineProcessMaterialService;
 import com.jeesite.modules.mes.service.MesMaterialPrebindService;
+import com.jeesite.modules.mes.service.MesProductRecordService;
 import com.jeesite.modules.mes.service.MesScrewInfoService;
 import com.jeesite.modules.mes.service.MesScrewService;
 import com.jeesite.modules.mes.service.MesToolLifeService;
@@ -54,6 +56,8 @@ public class MesScrewController extends BaseController {
 	private MesMaterialPrebindService mesMaterialPrebindService;
 	@Autowired
 	private MesToolLifeService mesToolLifeService;
+	@Autowired
+	private MesProductRecordService mesProductRecordService;
 
 	/**
 	 * 查询列表
@@ -117,19 +121,34 @@ public class MesScrewController extends BaseController {
 	@Transactional
 	public String batchSave(@RequestBody MesScrew mesScrew) {
 		if (mesScrew == null
-				|| ("").equals(mesScrew.getOprno())
-				|| ("").equals(mesScrew.getLineSn())) {
+				|| StringUtils.isBlank(mesScrew.getSn())
+				|| StringUtils.isBlank(mesScrew.getOprno())
+				|| StringUtils.isBlank(mesScrew.getLineSn())) {
 			return renderResult(Global.FALSE, text("操作失败!缺少参数值!"));
 		}
+		if (StringUtils.isBlank(mesScrew.getResult())) {
+			return renderResult(Global.FALSE, text("工位结果不能为空!"));
+		}
+		String result = mesScrew.getResult().trim();
+		if (!"OK".equals(result) && !"NG".equals(result)) {
+			return renderResult(Global.FALSE, text("工位结果错误!"));
+		}
+
+		String sn = mesScrew.getSn().trim();
+		String oprno = mesScrew.getOprno().trim();
+		if (oprno.length() == 5) {
+			oprno = oprno + "A";
+		}
+		String lineSn = mesScrew.getLineSn().trim();
 
 		Date createDate = DateLocalUtils.getCurrentTimeReturnDate();
 		List<MesScrew> list = mesScrew.getData();
 
 		// 一级表:锁付批次
 		MesScrewInfo mesScrewInfo = new MesScrewInfo();
-		mesScrewInfo.setSn(mesScrew.getSn());
-		mesScrewInfo.setOprno(mesScrew.getOprno());
-		mesScrewInfo.setLineSn(mesScrew.getLineSn());
+		mesScrewInfo.setSn(sn);
+		mesScrewInfo.setOprno(oprno);
+		mesScrewInfo.setLineSn(lineSn);
 		mesScrewInfo.setCreateDate(createDate);
 		mesScrewInfo.setCount(list == null || list.isEmpty() ? 0 : list.size());
 		mesScrewInfo.setBatch(DateLocalUtils.generateBatch());
@@ -139,8 +158,8 @@ public class MesScrewController extends BaseController {
 		if (list != null && list.size() > 0) {
 			for (MesScrew dtl : list) {
 				MesScrew extend = new MesScrew();
-				extend.setSn(mesScrew.getSn());
-				extend.setOprno(mesScrew.getOprno());
+				extend.setSn(sn);
+				extend.setOprno(oprno);
 				extend.setScrewNo(dtl.getScrewNo());
 				extend.setScrewTask(dtl.getScrewTask());
 				extend.setScrewToquer(dtl.getScrewToquer());
@@ -153,12 +172,12 @@ public class MesScrewController extends BaseController {
 			}
 		}
 
-		if ("OP060".equals(mesScrew.getOprno())) {
+		if ("OP060".equals(oprno) || "OP060A".equals(oprno)) {
 			List<String> crafts = new ArrayList<>();
 			crafts.add("400008");
 
 			List<BindMaterialResp> bmlists = mesLineProcessMaterialService.getBindMaterial(
-					mesScrew.getOprno(), mesScrew.getLineSn());
+					oprno, lineSn);
 			if (!ListUtils.isEmpty(bmlists)) {
 				for (BindMaterialResp bindMaterialResp : bmlists) {
 					if (!StringUtils.isEmpty(bindMaterialResp.getBatchSn())) {
@@ -174,8 +193,7 @@ public class MesScrewController extends BaseController {
 				}
 			}
 
-			List<MesToolLife> tools = mesToolLifeService.getToolLifeList(
-					mesScrew.getOprno(), mesScrew.getLineSn());
+			List<MesToolLife> tools = mesToolLifeService.getToolLifeList(oprno, lineSn);
 			if (!ListUtils.isEmpty(tools)) {
 				for (MesToolLife mesToolLife : tools) {
 					Integer curLife = mesToolLife.getCurLife() - mesToolLife.getConsumeLife();
@@ -186,6 +204,12 @@ public class MesScrewController extends BaseController {
 			}
 		}
 
+		// 保存成功后,根据工位号和结果更新工位总结果
+		List<ParamsResp> params = new ArrayList<>();
+		List<BindMaterialResp> bmlists = mesLineProcessMaterialService.getBindMaterial(oprno, lineSn);
+		mesProductRecordService.updateRecordResult(sn, oprno, "100000", "", result,
+				"", params, lineSn, true, bmlists, null);
+
 		return renderResult(Global.TRUE, text("操作成功!"));
 	}
 

+ 3 - 2
src/main/resources/config/application.yml

@@ -53,8 +53,8 @@ jdbc:
   # Mysql 数据库配置
   type: mysql
   driver: com.mysql.cj.jdbc.Driver
-  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-#  url: jdbc:mysql://10.0.20.10:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+#  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://10.0.20.10:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.22.99:3306/mes_cloud?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  username: mes_cloud
 #  password: YD57bSRabiyWBwkZ
@@ -681,6 +681,7 @@ shiro:
     ${adminPath}/mes/mesProductYgsl/batchsave = anon
     ${adminPath}/mes/mesProductHb/upload = anon
     ${adminPath}/mes/mesProductCmt/batchsave = anon
+    ${adminPath}/mes/mesProductCmtData/add = anon
     ${adminPath}/mes/mesDeviceState/add = anon
     ${adminPath}/mes/mesDeviceTime/list2 = anon
     ${adminPath}/mes/mesDeviceTime/listData2 = anon

+ 15 - 0
src/main/resources/mappings/modules/mes/MesProductCmtDataDao.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeesite.modules.mes.dao.MesProductCmtDataDao">
+	
+	<!-- 查询数据
+	<select id="findList" resultType="MesProductCmtData">
+		SELECT ${sqlMap.column.toSql()}
+		FROM ${sqlMap.table.toSql()}
+		<where>
+			${sqlMap.where.toSql()}
+		</where>
+		ORDER BY ${sqlMap.order.toSql()}
+	</select> -->
+	
+</mapper>

+ 1 - 1
src/main/resources/mappings/modules/mes/MesProductDao.xml

@@ -15,7 +15,7 @@
 	<select id="findInfo" resultType="com.jeesite.modules.mes.entity.MesProduct">
 		SELECT ${sqlMap.column.toSql()}
 		FROM ${sqlMap.table.toSql()}
-		WHERE sn = #{sn} and  cate= #{cate}
+		WHERE sn = #{sn}
 		ORDER BY ${sqlMap.order.toSql()}
 		LIMIT 1
 	</select>

+ 91 - 0
src/main/resources/views/modules/mes/mesProductCmtDataForm.html

@@ -0,0 +1,91 @@
+<% layout('/layouts/default.html', {title: 'cmt过程参数表管理', 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(mesProductCmtData.isNewRecord ? '新增cmt过程参数表' : '编辑cmt过程参数表')}
+			</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="${mesProductCmtData}" action="${ctx}/mes/mesProductCmtData/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="64" 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="64" 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="ssSpeed" maxlength="64" 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="current" maxlength="64" 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="voltage" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="box-footer">
+				<div class="row">
+					<div class="col-sm-offset-2 col-sm-10">
+						<% if (hasPermi('mes:mesProductCmtData: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>

+ 86 - 0
src/main/resources/views/modules/mes/mesProductCmtDataList.html

@@ -0,0 +1,86 @@
+<% layout('/layouts/default.html', {title: 'cmt过程参数表管理', 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('cmt过程参数表管理')}
+			</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:mesProductCmtData:edit')){ %>
+					<a href="${ctx}/mes/mesProductCmtData/form" class="btn btn-default btnTool" title="${text('新增cmt过程参数表')}"><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="${mesProductCmtData}" action="${ctx}/mes/mesProductCmtData/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="64" 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="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('送丝速度')}:</label>
+					<div class="control-inline">
+						<#form:input path="ssSpeed" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('电流')}:</label>
+					<div class="control-inline">
+						<#form:input path="current" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('电压')}:</label>
+					<div class="control-inline">
+						<#form:input path="voltage" maxlength="64" 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/mesProductCmtData/form?id='+row.id+'" class="btnList" data-title="${text("编辑cmt过程参数表")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
+		{header:'${text("送丝速度")}', name:'ssSpeed', index:'a.ss_speed', width:150, align:"left"},
+		{header:'${text("电流")}', name:'current', index:'a.current', width:150, align:"left"},
+		{header:'${text("电压")}', name:'voltage', index:'a.voltage', width:150, align:"left"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesProductCmtData:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesProductCmtData/form?id='+row.id+'" class="btnList" title="${text("编辑cmt过程参数表")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesProductCmtData/delete?id='+row.id+'" class="btnList" title="${text("删除cmt过程参数表")}" data-confirm="${text("确认要删除该cmt过程参数表吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
+			//<% } %>
+			return actions.join('');
+		}}
+	],
+	// 加载成功后执行事件
+	ajaxSuccess: function(data){
+		
+	}
+});
+</script>

+ 4 - 1
src/main/resources/views/modules/mes/mesScrewInfoList.html

@@ -63,7 +63,10 @@ $('#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/mesScrewInfo/form?id='+row.id+'" class="btnList" data-title="${text("编辑锁付数据详情表")}">'+(val||row.id)+'</a>';
+			if (!val) {
+				return row.id || '';
+			}
+			return '<a href="${ctx}/mes/mesScrew/list?sn='+encodeURIComponent(val)+'" class="btnList" data-title="${text("锁付明细")} - '+val+'">'+val+'</a>';
 		}},
 		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
 		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:150, align:"left"},

+ 35 - 51
src/main/resources/views/modules/mes/mesScrewList.html

@@ -1,14 +1,19 @@
-<% layout('/layouts/default.html', {title: 'mes_screw管理', libs: ['dataGrid']}){ %>
+<% 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('mes_screw管理')}
+				<i class="fa icon-notebook"></i>
+				<% if (isNotBlank(mesScrew.sn)) { %>
+					${text('锁付明细')} - ${mesScrew.sn}
+				<% } else { %>
+					${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:mesScrew:edit')){ %>
-					<a href="${ctx}/mes/mesScrew/form" class="btn btn-default btnTool" title="${text('新增mes_screw')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
+				<% if(isBlank(mesScrew.sn) && hasPermi('mes:mesScrew:edit')){ %>
+					<a href="${ctx}/mes/mesScrew/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>
@@ -16,12 +21,8 @@
 		<div class="box-body">
 			<#form:form id="searchForm" model="${mesScrew}" action="${ctx}/mes/mesScrew/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="255" class="form-control width-120"/>
-					</div>
-				</div>
+				<#form:hidden path="sn"/>
+				<#form:hidden path="batchId"/>
 				<div class="form-group">
 					<label class="control-label">${text('工位号')}:</label>
 					<div class="control-inline">
@@ -41,36 +42,12 @@
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('锁付扭力')}:</label>
-					<div class="control-inline">
-						<#form:input path="screwToquer" 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="screwRing" 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="screwTime" 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="result" maxlength="64" class="form-control width-120"/>
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('批次ID')}:</label>
-					<div class="control-inline">
-						<#form:input path="batchId" maxlength="255" 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>
@@ -82,33 +59,40 @@
 </div>
 <% } %>
 <script>
+var detailMode = '${mesScrew.sn!}' !== '';
 // 初始化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/mesScrew/form?id='+row.id+'" class="btnList" data-title="${text("编辑mes_screw")}">'+(val||row.id)+'</a>';
-		}},
-		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
-		{header:'${text("螺丝序号")}', name:'screwNo', index:'a.screw_no', width:150, align:"left"},
-		{header:'${text("锁付任务号")}', name:'screwTask', index:'a.screw_task', width:150, align:"left"},
-		{header:'${text("锁付扭力")}', name:'screwToquer', index:'a.screw_toquer', width:150, align:"left"},
-		{header:'${text("锁付圈数")}', name:'screwRing', index:'a.screw_ring', width:150, align:"left"},
-		{header:'${text("锁付时长")}', name:'screwTime', index:'a.screw_time', width:150, align:"left"},
-		{header:'${text("结果")}', name:'result', index:'a.result', width:150, align:"left"},
-		{header:'${text("批次ID")}', name:'batchId', index:'a.batch_id', width:150, align:"left"},
-		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:220, align:"left", frozen:true},
+		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:120, align:"left"},
+		{header:'${text("螺丝序号")}', name:'screwNo', index:'a.screw_no', width:120, align:"left"},
+		{header:'${text("锁付任务号")}', name:'screwTask', index:'a.screw_task', width:120, align:"left"},
+		{header:'${text("锁付扭力")}', name:'screwToquer', index:'a.screw_toquer', width:120, align:"left"},
+		{header:'${text("锁付圈数")}', name:'screwRing', index:'a.screw_ring', width:120, align:"left"},
+		{header:'${text("锁付时长")}', name:'screwTime', index:'a.screw_time', width:120, align:"left"},
+		{header:'${text("结果")}', name:'result', index:'a.result', width:100, align:"center"},
+		{header:'${text("创建时间")}', name:'createDate', index:'a.create_date', width:150, align:"center"},
+		{header:'${text("批次ID")}', name:'batchId', index:'a.batch_id', width:150, align:"left", hidden: detailMode},
+		{header:'${text("操作")}', name:'actions', width:120, hidden: detailMode, formatter: function(val, obj, row, act){
 			var actions = [];
 			//<% if(hasPermi('mes:mesScrew:edit')){ %>
-				actions.push('<a href="${ctx}/mes/mesScrew/form?id='+row.id+'" class="btnList" title="${text("编辑mes_screw")}"><i class="fa fa-pencil"></i></a>&nbsp;');
-				actions.push('<a href="${ctx}/mes/mesScrew/delete?id='+row.id+'" class="btnList" title="${text("删除mes_screw")}" data-confirm="${text("确认要删除该mes_screw吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesScrew/form?id='+row.id+'" class="btnList" title="${text("编辑锁付明细")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesScrew/delete?id='+row.id+'" class="btnList" title="${text("删除锁付明细")}" data-confirm="${text("确认要删除该锁付明细吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
 			//<% } %>
 			return actions.join('');
 		}}
 	],
-	// 加载成功后执行事件
+	frozenCols: true,
 	ajaxSuccess: function(data){
-		
 	}
 });
-</script>
+if (detailMode) {
+	var fixedSn = '${mesScrew.sn!}';
+	$('#searchForm').on('reset', function(){
+		setTimeout(function(){
+			$('#sn').val(fixedSn);
+		}, 0);
+	});
+}
+</script>