소스 검색

硬度优化,设备模具工件绑定接口

sunxianglong 3 달 전
부모
커밋
b945c5de0b
27개의 변경된 파일과 1657개의 추가작업 그리고 16개의 파일을 삭제
  1. 21 0
      src/main/java/com/jeesite/modules/mes/dao/MesEqMdDao.java
  2. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMdDao.java
  3. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMdSnDao.java
  4. 75 0
      src/main/java/com/jeesite/modules/mes/entity/MesEqMd.java
  5. 64 0
      src/main/java/com/jeesite/modules/mes/entity/MesMd.java
  6. 99 0
      src/main/java/com/jeesite/modules/mes/entity/MesMdSn.java
  7. 94 0
      src/main/java/com/jeesite/modules/mes/service/MesEqMdService.java
  8. 29 0
      src/main/java/com/jeesite/modules/mes/service/MesHardnessConfigService.java
  9. 43 6
      src/main/java/com/jeesite/modules/mes/service/MesHardnessService.java
  10. 81 0
      src/main/java/com/jeesite/modules/mes/service/MesMdService.java
  11. 122 0
      src/main/java/com/jeesite/modules/mes/service/MesMdSnService.java
  12. 5 0
      src/main/java/com/jeesite/modules/mes/service/MesProductRecordService.java
  13. 132 0
      src/main/java/com/jeesite/modules/mes/web/MesEqMdController.java
  14. 97 0
      src/main/java/com/jeesite/modules/mes/web/MesMdController.java
  15. 142 0
      src/main/java/com/jeesite/modules/mes/web/MesMdSnController.java
  16. 7 0
      src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java
  17. 27 0
      src/main/resources/mappings/modules/mes/MesEqMdDao.xml
  18. 15 0
      src/main/resources/mappings/modules/mes/MesMdDao.xml
  19. 15 0
      src/main/resources/mappings/modules/mes/MesMdSnDao.xml
  20. 100 0
      src/main/resources/views/modules/mes/mesEqMdForm.html
  21. 79 0
      src/main/resources/views/modules/mes/mesEqMdList.html
  22. 8 1
      src/main/resources/views/modules/mes/mesHardnessInfo.html
  23. 16 9
      src/main/resources/views/modules/mes/mesHardnessList.html
  24. 77 0
      src/main/resources/views/modules/mes/mesMdForm.html
  25. 72 0
      src/main/resources/views/modules/mes/mesMdList.html
  26. 112 0
      src/main/resources/views/modules/mes/mesMdSnForm.html
  27. 95 0
      src/main/resources/views/modules/mes/mesMdSnList.html

+ 21 - 0
src/main/java/com/jeesite/modules/mes/dao/MesEqMdDao.java

@@ -0,0 +1,21 @@
+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.MesEqMd;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 设备模具绑定表DAO接口
+ * @author sxl
+ * @version 2026-07-17
+ */
+@MyBatisDao
+public interface MesEqMdDao extends CrudDao<MesEqMd> {
+
+	/**
+	 * 按模具编码查询设备模具绑定
+	 */
+	MesEqMd selectByMouldCode(@Param("mouldCode") String mouldCode);
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMdDao.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.MesMd;
+
+/**
+ * 模具信息表DAO接口
+ * @author sxl
+ * @version 2026-07-17
+ */
+@MyBatisDao
+public interface MesMdDao extends CrudDao<MesMd> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMdSnDao.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.MesMdSn;
+
+/**
+ * 模具工件表DAO接口
+ * @author sxl
+ * @version 2026-07-17
+ */
+@MyBatisDao
+public interface MesMdSnDao extends CrudDao<MesMdSn> {
+	
+}

+ 75 - 0
src/main/java/com/jeesite/modules/mes/entity/MesEqMd.java

@@ -0,0 +1,75 @@
+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;
+
+/**
+ * 设备模具绑定表Entity
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Table(name="mes_eq_md", alias="a", label="设备模具绑定表信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="equipment_code", attrName="equipmentCode", label="设备编码"),
+		@Column(name="mould_code", attrName="mouldCode", label="模具编码"),
+		@Column(name="equipment_name", attrName="equipmentName", label="设备名称", queryType=QueryType.LIKE),
+		@Column(name="model", attrName="model", label="设备型号"),
+	}, orderBy="a.id DESC"
+)
+public class MesEqMd extends DataEntity<MesEqMd> {
+	
+	private static final long serialVersionUID = 1L;
+	private String equipmentCode;		// 设备编码
+	private String mouldCode;		// 模具编码
+	private String equipmentName;		// 设备名称
+	private String model;		// 设备型号
+
+	public MesEqMd() {
+		this(null);
+	}
+	
+	public MesEqMd(String id){
+		super(id);
+	}
+	
+	@Size(min=0, max=64, message="设备编码长度不能超过 64 个字符")
+	public String getEquipmentCode() {
+		return equipmentCode;
+	}
+
+	public void setEquipmentCode(String equipmentCode) {
+		this.equipmentCode = equipmentCode;
+	}
+	
+	@Size(min=0, max=64, message="模具编码长度不能超过 64 个字符")
+	public String getMouldCode() {
+		return mouldCode;
+	}
+
+	public void setMouldCode(String mouldCode) {
+		this.mouldCode = mouldCode;
+	}
+	
+	@Size(min=0, max=64, message="设备名称长度不能超过 64 个字符")
+	public String getEquipmentName() {
+		return equipmentName;
+	}
+
+	public void setEquipmentName(String equipmentName) {
+		this.equipmentName = equipmentName;
+	}
+	
+	@Size(min=0, max=64, message="设备型号长度不能超过 64 个字符")
+	public String getModel() {
+		return model;
+	}
+
+	public void setModel(String model) {
+		this.model = model;
+	}
+	
+}

+ 64 - 0
src/main/java/com/jeesite/modules/mes/entity/MesMd.java

@@ -0,0 +1,64 @@
+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;
+
+/**
+ * 模具信息表Entity
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Table(name="mes_md", alias="a", label="模具信息表信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="md_code", attrName="mdCode", label="模具编码"),
+		@Column(name="md_name", attrName="mdName", label="模具名称", queryType=QueryType.LIKE),
+		@Column(name="md_tpye", attrName="mdTpye", label="模具号"),
+	}, orderBy="a.id DESC"
+)
+public class MesMd extends DataEntity<MesMd> {
+	
+	private static final long serialVersionUID = 1L;
+	private String mdCode;		// 模具编码
+	private String mdName;		// 模具名称
+	private String mdTpye;		// 模具号
+
+	public MesMd() {
+		this(null);
+	}
+	
+	public MesMd(String id){
+		super(id);
+	}
+	
+	@Size(min=0, max=64, message="模具编码长度不能超过 64 个字符")
+	public String getMdCode() {
+		return mdCode;
+	}
+
+	public void setMdCode(String mdCode) {
+		this.mdCode = mdCode;
+	}
+	
+	@Size(min=0, max=64, message="模具名称长度不能超过 64 个字符")
+	public String getMdName() {
+		return mdName;
+	}
+
+	public void setMdName(String mdName) {
+		this.mdName = mdName;
+	}
+	
+	@Size(min=0, max=64, message="模具号长度不能超过 64 个字符")
+	public String getMdTpye() {
+		return mdTpye;
+	}
+
+	public void setMdTpye(String mdTpye) {
+		this.mdTpye = mdTpye;
+	}
+	
+}

+ 99 - 0
src/main/java/com/jeesite/modules/mes/entity/MesMdSn.java

@@ -0,0 +1,99 @@
+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;
+
+/**
+ * 模具工件表Entity
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Table(name="mes_md_sn", alias="a", label="模具工件表信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="mold_code", attrName="moldCode", label="模具编码"),
+		@Column(name="mold_name", attrName="moldName", label="模具名称", queryType=QueryType.LIKE),
+		@Column(name="mold_type", attrName="moldType", label="模具类型"),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false, isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="更新时间", isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="更新人", isQuery=false),
+	}, orderBy="a.update_date DESC"
+)
+public class MesMdSn extends DataEntity<MesMdSn> {
+	
+	private static final long serialVersionUID = 1L;
+	private String moldCode;		// 模具编码
+	private String moldName;		// 模具名称
+	private String moldType;		// 模具类型
+	private String sn;		// 工件码
+	private String equipmentCode;		// 设备编号(来自mes_eq_md)
+	private String equipmentName;		// 设备名称(来自mes_eq_md)
+
+	public MesMdSn() {
+		this(null);
+	}
+	
+	public MesMdSn(String id){
+		super(id);
+	}
+	
+	@Size(min=0, max=64, message="模具编码长度不能超过 64 个字符")
+	public String getMoldCode() {
+		return moldCode;
+	}
+
+	public void setMoldCode(String moldCode) {
+		this.moldCode = moldCode;
+	}
+	
+	@Size(min=0, max=64, message="模具名称长度不能超过 64 个字符")
+	public String getMoldName() {
+		return moldName;
+	}
+
+	public void setMoldName(String moldName) {
+		this.moldName = moldName;
+	}
+	
+	@Size(min=0, max=64, message="模具类型长度不能超过 64 个字符")
+	public String getMoldType() {
+		return moldType;
+	}
+
+	public void setMoldType(String moldType) {
+		this.moldType = moldType;
+	}
+	
+	@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 getEquipmentCode() {
+		return equipmentCode;
+	}
+
+	public void setEquipmentCode(String equipmentCode) {
+		this.equipmentCode = equipmentCode;
+	}
+
+	@Size(min=0, max=64, message="设备名称长度不能超过 64 个字符")
+	public String getEquipmentName() {
+		return equipmentName;
+	}
+
+	public void setEquipmentName(String equipmentName) {
+		this.equipmentName = equipmentName;
+	}
+	
+}

+ 94 - 0
src/main/java/com/jeesite/modules/mes/service/MesEqMdService.java

@@ -0,0 +1,94 @@
+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.MesEqMd;
+import com.jeesite.modules.mes.dao.MesEqMdDao;
+import com.jeesite.modules.file.utils.FileUploadUtils;
+
+/**
+ * 设备模具绑定表Service
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Service
+public class MesEqMdService extends CrudService<MesEqMdDao, MesEqMd> {
+	
+	/**
+	 * 获取单条数据
+	 * @param mesEqMd
+	 * @return
+	 */
+	@Override
+	public MesEqMd get(MesEqMd mesEqMd) {
+		return super.get(mesEqMd);
+	}
+	
+	/**
+	 * 查询分页数据
+	 * @param mesEqMd 查询条件
+	 * @param mesEqMd.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesEqMd> findPage(MesEqMd mesEqMd) {
+		return super.findPage(mesEqMd);
+	}
+	
+	/**
+	 * 查询列表数据
+	 * @param mesEqMd
+	 * @return
+	 */
+	@Override
+	public List<MesEqMd> findList(MesEqMd mesEqMd) {
+		return super.findList(mesEqMd);
+	}
+
+	/**
+	 * 按模具编码查询设备模具绑定
+	 */
+	public MesEqMd selectByMouldCode(String mouldCode) {
+		if (mouldCode == null || mouldCode.trim().isEmpty()) {
+			return null;
+		}
+		return dao.selectByMouldCode(mouldCode.trim());
+	}
+	
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesEqMd
+	 */
+	@Override
+	@Transactional
+	public void save(MesEqMd mesEqMd) {
+		super.save(mesEqMd);
+		// 保存上传图片
+		FileUploadUtils.saveFileUpload(mesEqMd, mesEqMd.getId(), "mesEqMd_image");
+	}
+	
+	/**
+	 * 更新状态
+	 * @param mesEqMd
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesEqMd mesEqMd) {
+		super.updateStatus(mesEqMd);
+	}
+	
+	/**
+	 * 删除数据
+	 * @param mesEqMd
+	 */
+	@Override
+	@Transactional
+	public void delete(MesEqMd mesEqMd) {
+		super.delete(mesEqMd);
+	}
+	
+}

+ 29 - 0
src/main/java/com/jeesite/modules/mes/service/MesHardnessConfigService.java

@@ -33,6 +33,9 @@ public class MesHardnessConfigService extends CrudService<MesHardnessConfigDao,
 	@Override
 	@Transactional
 	public void save(MesHardnessConfig config) {
+		if (config != null) {
+			config.setStandardOp(normalizeOp(config.getStandardOp()));
+		}
 		MesHardnessConfig existing = getConfig();
 		if (existing != null) {
 			config.setId(existing.getId());
@@ -42,4 +45,30 @@ public class MesHardnessConfigService extends CrudService<MesHardnessConfigDao,
 		}
 		super.save(config);
 	}
+
+	/**
+	 * 规范化比较运算符,避免 > 被转义成 &gt; 后无法判定
+	 */
+	private String normalizeOp(String op) {
+		if (op == null || op.trim().isEmpty()) {
+			return op;
+		}
+		op = op.trim()
+				.replace("&gt;", ">")
+				.replace("&lt;", "<")
+				.replace("&eq;", "=")
+				.replace(">", ">")
+				.replace("<", "<")
+				.replace("=", "=");
+		if ("gt".equalsIgnoreCase(op)) {
+			return ">";
+		}
+		if ("lt".equalsIgnoreCase(op)) {
+			return "<";
+		}
+		if ("eq".equalsIgnoreCase(op) || "==".equals(op)) {
+			return "=";
+		}
+		return op;
+	}
 }

+ 43 - 6
src/main/java/com/jeesite/modules/mes/service/MesHardnessService.java

@@ -52,23 +52,26 @@ public class MesHardnessService extends CrudService<MesHardnessDao, MesHardness>
 
 		// 获取标准值配置
 		MesHardnessConfig config = mesHardnessConfigService.getConfig();
-		String standardOp = config != null ? config.getStandardOp() : null;
+		String standardOp = normalizeOp(config != null ? config.getStandardOp() : null);
 		String standardNum = config != null ? config.getStandardValue() : null;
+		if (standardNum != null) {
+			standardNum = standardNum.trim();
+		}
 
 		// 组合标准值字符串,如 ">50"
 		String standardValueStr = "";
-		double standardNumVal = 0;
+		Double standardNumVal = null;
 		if (StringUtils.isNotEmpty(standardOp) && StringUtils.isNotEmpty(standardNum)) {
 			standardValueStr = standardOp + standardNum;
 			standardNumVal = Double.parseDouble(standardNum);
 		}
 
 		// 计算平均值(取整)
-		int avg =  Math.round((value1 + value2 + value3) / 3.0f);
+		int avg = Math.round((value1 + value2 + value3) / 3.0f);
 
-		// 逐一比较三个实测值与标准值,全部合格才为"合格"
+		// 三个实测值均满足标准才判定为"合格"
 		boolean allPass = true;
-		if (StringUtils.isNotEmpty(standardOp) && standardNumVal > 0) {
+		if (StringUtils.isNotEmpty(standardOp) && standardNumVal != null) {
 			allPass = isPass(value1, standardOp, standardNumVal)
 					&& isPass(value2, standardOp, standardNumVal)
 					&& isPass(value3, standardOp, standardNumVal);
@@ -93,14 +96,48 @@ public class MesHardnessService extends CrudService<MesHardnessDao, MesHardness>
 	}
 
 	/**
+	 * 规范化比较运算符(兼容 gt/&gt;/> 等被转义或别名写入的情况)
+	 */
+	private String normalizeOp(String op) {
+		if (StringUtils.isEmpty(op)) {
+			return op;
+		}
+		op = op.trim()
+				.replace("&gt;", ">")
+				.replace("&lt;", "<")
+				.replace("&eq;", "=")
+				.replace(">", ">")
+				.replace("<", "<")
+				.replace("=", "=");
+		if ("gt".equalsIgnoreCase(op)) {
+			return ">";
+		}
+		if ("lt".equalsIgnoreCase(op)) {
+			return "<";
+		}
+		if ("eq".equalsIgnoreCase(op) || "==".equals(op)) {
+			return "=";
+		}
+		if ("gte".equalsIgnoreCase(op) || "ge".equalsIgnoreCase(op)) {
+			return ">=";
+		}
+		if ("lte".equalsIgnoreCase(op) || "le".equalsIgnoreCase(op)) {
+			return "<=";
+		}
+		return op;
+	}
+
+	/**
 	 * 判断单个实测值是否合格
 	 */
 	private boolean isPass(int actual, String op, double standard) {
 		switch (op) {
 			case ">": return actual > standard;
+			case ">=": return actual >= standard;
 			case "<": return actual < standard;
+			case "<=": return actual <= standard;
 			case "=": return actual == standard;
-			default:  return false;
+			default: return false;
 		}
 	}
 

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

+ 122 - 0
src/main/java/com/jeesite/modules/mes/service/MesMdSnService.java

@@ -0,0 +1,122 @@
+package com.jeesite.modules.mes.service;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.common.service.CrudService;
+import com.jeesite.modules.mes.entity.MesMdSn;
+import com.jeesite.modules.mes.entity.MesEqMd;
+import com.jeesite.modules.mes.dao.MesMdSnDao;
+import com.jeesite.modules.file.utils.FileUploadUtils;
+
+/**
+ * 模具工件表Service
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Service
+public class MesMdSnService extends CrudService<MesMdSnDao, MesMdSn> {
+
+	@Autowired
+	private MesEqMdService mesEqMdService;
+	
+	/**
+	 * 获取单条数据
+	 * @param mesMdSn
+	 * @return
+	 */
+	@Override
+	public MesMdSn get(MesMdSn mesMdSn) {
+		MesMdSn entity = super.get(mesMdSn);
+		fillEquipment(entity);
+		return entity;
+	}
+	
+	/**
+	 * 查询分页数据
+	 * @param mesMdSn 查询条件
+	 * @param mesMdSn.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesMdSn> findPage(MesMdSn mesMdSn) {
+		Page<MesMdSn> page = super.findPage(mesMdSn);
+		fillEquipment(page.getList());
+		return page;
+	}
+	
+	/**
+	 * 查询列表数据
+	 * @param mesMdSn
+	 * @return
+	 */
+	@Override
+	public List<MesMdSn> findList(MesMdSn mesMdSn) {
+		List<MesMdSn> list = super.findList(mesMdSn);
+		fillEquipment(list);
+		return list;
+	}
+
+	/**
+	 * 根据模具编码查询设备信息并回填
+	 */
+	private void fillEquipment(List<MesMdSn> list) {
+		if (list == null || list.isEmpty()) {
+			return;
+		}
+		for (MesMdSn item : list) {
+			fillEquipment(item);
+		}
+	}
+
+	/**
+	 * 根据模具编码查询设备信息并回填
+	 */
+	private void fillEquipment(MesMdSn item) {
+		if (item == null || StringUtils.isBlank(item.getMoldCode())) {
+			return;
+		}
+		MesEqMd eqMd = mesEqMdService.selectByMouldCode(item.getMoldCode());
+		if (eqMd != null) {
+			item.setEquipmentCode(eqMd.getEquipmentCode());
+			item.setEquipmentName(eqMd.getEquipmentName());
+		}
+	}
+	
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesMdSn
+	 */
+	@Override
+	@Transactional
+	public void save(MesMdSn mesMdSn) {
+		super.save(mesMdSn);
+		// 保存上传图片
+		FileUploadUtils.saveFileUpload(mesMdSn, mesMdSn.getId(), "mesMdSn_image");
+	}
+	
+	/**
+	 * 更新状态
+	 * @param mesMdSn
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesMdSn mesMdSn) {
+		super.updateStatus(mesMdSn);
+	}
+	
+	/**
+	 * 删除数据
+	 * @param mesMdSn
+	 */
+	@Override
+	@Transactional
+	public void delete(MesMdSn mesMdSn) {
+		super.delete(mesMdSn);
+	}
+	
+}

+ 5 - 0
src/main/java/com/jeesite/modules/mes/service/MesProductRecordService.java

@@ -359,6 +359,11 @@ public class MesProductRecordService extends CrudService<MesProductRecordDao, Me
 					mpr1.setContent("OK");
 				}
 
+				// 创建模板时 OP070 工位结果默认为 OK
+				if ("OP070".equals(CommonUitl.formatOprno(mesTemplateItems.getOprno()))) {
+					mpr1.setContent("OK");
+				}
+
 				records.add(mpr1);
 				i++;
 			}

+ 132 - 0
src/main/java/com/jeesite/modules/mes/web/MesEqMdController.java

@@ -0,0 +1,132 @@
+package com.jeesite.modules.mes.web;
+
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.modules.mes.resp.CommonResp;
+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.MesEqMd;
+import com.jeesite.modules.mes.service.MesEqMdService;
+
+/**
+ * 设备模具绑定表Controller
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesEqMd")
+public class MesEqMdController extends BaseController {
+
+	@Autowired
+	private MesEqMdService mesEqMdService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesEqMd get(String id, boolean isNewRecord) {
+		return mesEqMdService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesEqMd:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesEqMd mesEqMd, Model model) {
+		model.addAttribute("mesEqMd", mesEqMd);
+		return "modules/mes/mesEqMdList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesEqMd:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesEqMd> listData(MesEqMd mesEqMd, HttpServletRequest request, HttpServletResponse response) {
+		mesEqMd.setPage(new Page<>(request, response));
+		Page<MesEqMd> page = mesEqMdService.findPage(mesEqMd);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesEqMd:view")
+	@RequestMapping(value = "form")
+	public String form(MesEqMd mesEqMd, Model model) {
+		model.addAttribute("mesEqMd", mesEqMd);
+		return "modules/mes/mesEqMdForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesEqMd:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesEqMd mesEqMd) {
+		mesEqMdService.save(mesEqMd);
+		return renderResult(Global.TRUE, text("保存设备模具绑定表成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesEqMd:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesEqMd mesEqMd) {
+		mesEqMdService.delete(mesEqMd);
+		return renderResult(Global.TRUE, text("删除设备模具绑定表成功!"));
+	}
+
+//	@RequiresPermissions("mes:mesEqMd:edit")
+	@RequestMapping(value = "eqList")
+	@ResponseBody
+	public CommonResp eqList(MesEqMd mesEqMd) {
+		CommonResp<List<MesEqMd>> resp = new CommonResp<>();
+		List<MesEqMd> list = mesEqMdService.findList(mesEqMd);
+		resp.setData(list);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
+	}
+
+	@RequestMapping(value = "eqMdSave")
+	@ResponseBody
+	public String eqMdSave(MesEqMd mesEqMd) {
+		if (mesEqMd == null || StringUtils.isBlank(mesEqMd.getEquipmentCode())) {
+			return renderResult(Global.FALSE, text("设备编号不能为空!"));
+		}
+		if (StringUtils.isBlank(mesEqMd.getMouldCode())) {
+			return renderResult(Global.FALSE, text("模具编码不能为空!"));
+		}
+		MesEqMd query = new MesEqMd();
+		query.setEquipmentCode(mesEqMd.getEquipmentCode().trim());
+		List<MesEqMd> list = mesEqMdService.findList(query);
+		if (list == null || list.isEmpty()) {
+			return renderResult(Global.FALSE, text("设备模具绑定记录不存在!"));
+		}
+		MesEqMd exist = list.get(0);
+		exist.setMouldCode(mesEqMd.getMouldCode().trim());
+		mesEqMdService.update(exist);
+		return renderResult(Global.TRUE, text("保存成功!"));
+	}
+
+}

+ 97 - 0
src/main/java/com/jeesite/modules/mes/web/MesMdController.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.MesMd;
+import com.jeesite.modules.mes.service.MesMdService;
+
+/**
+ * 模具信息表Controller
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesMd")
+public class MesMdController extends BaseController {
+
+	@Autowired
+	private MesMdService mesMdService;
+	
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesMd get(String id, boolean isNewRecord) {
+		return mesMdService.get(id, isNewRecord);
+	}
+	
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesMd:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesMd mesMd, Model model) {
+		model.addAttribute("mesMd", mesMd);
+		return "modules/mes/mesMdList";
+	}
+	
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesMd:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesMd> listData(MesMd mesMd, HttpServletRequest request, HttpServletResponse response) {
+		mesMd.setPage(new Page<>(request, response));
+		Page<MesMd> page = mesMdService.findPage(mesMd);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesMd:view")
+	@RequestMapping(value = "form")
+	public String form(MesMd mesMd, Model model) {
+		model.addAttribute("mesMd", mesMd);
+		return "modules/mes/mesMdForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesMd:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesMd mesMd) {
+		mesMdService.save(mesMd);
+		return renderResult(Global.TRUE, text("保存模具信息表成功!"));
+	}
+	
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesMd:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesMd mesMd) {
+		mesMdService.delete(mesMd);
+		return renderResult(Global.TRUE, text("删除模具信息表成功!"));
+	}
+	
+}

+ 142 - 0
src/main/java/com/jeesite/modules/mes/web/MesMdSnController.java

@@ -0,0 +1,142 @@
+package com.jeesite.modules.mes.web;
+
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.modules.mes.entity.MesMd;
+import com.jeesite.modules.mes.resp.CommonResp;
+import com.jeesite.modules.mes.service.MesMdService;
+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.MesMdSn;
+import com.jeesite.modules.mes.service.MesMdSnService;
+
+/**
+ * 模具工件表Controller
+ * @author sxl
+ * @version 2026-07-17
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesMdSn")
+public class MesMdSnController extends BaseController {
+
+	@Autowired
+	private MesMdSnService mesMdSnService;
+	@Autowired
+	private MesMdService mesMdService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesMdSn get(String id, boolean isNewRecord) {
+		return mesMdSnService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesMdSn:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesMdSn mesMdSn, Model model) {
+		model.addAttribute("mesMdSn", mesMdSn);
+		return "modules/mes/mesMdSnList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesMdSn:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesMdSn> listData(MesMdSn mesMdSn, HttpServletRequest request, HttpServletResponse response) {
+		mesMdSn.setPage(new Page<>(request, response));
+		Page<MesMdSn> page = mesMdSnService.findPage(mesMdSn);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesMdSn:view")
+	@RequestMapping(value = "form")
+	public String form(MesMdSn mesMdSn, Model model) {
+		model.addAttribute("mesMdSn", mesMdSn);
+		return "modules/mes/mesMdSnForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesMdSn:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesMdSn mesMdSn) {
+		mesMdSnService.save(mesMdSn);
+		return renderResult(Global.TRUE, text("保存模具工件表成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesMdSn:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesMdSn mesMdSn) {
+		mesMdSnService.delete(mesMdSn);
+		return renderResult(Global.TRUE, text("删除模具工件表成功!"));
+	}
+
+	/**
+	 * PDA模具工件列表
+	 */
+	@RequestMapping(value = "eqList")
+	@ResponseBody
+	public CommonResp eqList(MesMd mesMd) {
+		CommonResp<List<MesMd>> resp = new CommonResp<>();
+		List<MesMd> list = mesMdService.findList(mesMd);
+		resp.setData(list);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
+	}
+
+	/**
+	 * PDA更新模具工件绑定(按工件码更新模具编码)
+	 */
+	@RequestMapping(value = "eqMdSave")
+	@ResponseBody
+	public String eqMdSave(MesMdSn mesMdSn) {
+		if (mesMdSn == null || StringUtils.isBlank(mesMdSn.getSn())) {
+			return renderResult(Global.FALSE, text("工件码不能为空!"));
+		}
+		if (StringUtils.isBlank(mesMdSn.getMoldCode())) {
+			return renderResult(Global.FALSE, text("模具编码不能为空!"));
+		}
+		MesMd query = new MesMd();
+		query.setMdCode(mesMdSn.getMoldCode().trim());
+		List<MesMd> list = mesMdService.findList(query);
+		if (list == null || list.isEmpty()) {
+			return renderResult(Global.FALSE, text("模具工件记录不存在!"));
+		}
+		MesMd exist = list.get(0);
+		mesMdSn.setMoldName(exist.getMdName());
+		mesMdSn.setMoldType(exist.getMdTpye());
+		mesMdSnService.save(mesMdSn);
+		return renderResult(Global.TRUE, text("保存成功!"));
+	}
+
+}

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

@@ -4121,6 +4121,13 @@ public String check(@RequestBody MesElectricTorque mesElectricTorque,HttpServlet
 			resp.setResult(Global.FALSE);
 		}
 
+		// OP070 允许重复扫码(本工位已 OK 时仍可继续加工)
+		if("OP070".equals(oprno) && (checkret.equalsIgnoreCase("OK"))){
+			checkret = "UD";
+			resp.setMessage("工件可以加工");
+			resp.setResult(Global.TRUE);
+		}
+
 		resp.setData(checkret);
 		return resp;
 

+ 27 - 0
src/main/resources/mappings/modules/mes/MesEqMdDao.xml

@@ -0,0 +1,27 @@
+<?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.MesEqMdDao">
+	
+	<!-- 查询数据
+	<select id="findList" resultType="MesEqMd">
+		SELECT ${sqlMap.column.toSql()}
+		FROM ${sqlMap.table.toSql()}
+		<where>
+			${sqlMap.where.toSql()}
+		</where>
+		ORDER BY ${sqlMap.order.toSql()}
+	</select> -->
+
+	<select id="selectByMouldCode" resultType="com.jeesite.modules.mes.entity.MesEqMd">
+		SELECT
+			id,
+			equipment_code AS equipmentCode,
+			mould_code AS mouldCode,
+			equipment_name AS equipmentName,
+			model
+		FROM mes_eq_md
+		WHERE mould_code = #{mouldCode}
+		LIMIT 1
+	</select>
+	
+</mapper>

+ 15 - 0
src/main/resources/mappings/modules/mes/MesMdDao.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.MesMdDao">
+	
+	<!-- 查询数据
+	<select id="findList" resultType="MesMd">
+		SELECT ${sqlMap.column.toSql()}
+		FROM ${sqlMap.table.toSql()}
+		<where>
+			${sqlMap.where.toSql()}
+		</where>
+		ORDER BY ${sqlMap.order.toSql()}
+	</select> -->
+	
+</mapper>

+ 15 - 0
src/main/resources/mappings/modules/mes/MesMdSnDao.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.MesMdSnDao">
+	
+	<!-- 查询数据
+	<select id="findList" resultType="MesMdSn">
+		SELECT ${sqlMap.column.toSql()}
+		FROM ${sqlMap.table.toSql()}
+		<where>
+			${sqlMap.where.toSql()}
+		</where>
+		ORDER BY ${sqlMap.order.toSql()}
+	</select> -->
+	
+</mapper>

+ 100 - 0
src/main/resources/views/modules/mes/mesEqMdForm.html

@@ -0,0 +1,100 @@
+<% layout('/layouts/default.html', {title: '设备模具绑定表管理', libs: ['validate','fileupload']}){ %>
+<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(mesEqMd.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="${mesEqMd}" action="${ctx}/mes/mesEqMd/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-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('设备编码')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="equipmentCode" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('模具编码')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="mouldCode" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('设备名称')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="equipmentName" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('设备型号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="model" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2">
+								<span class="required hide">*</span> ${text('图片上传')}:</label>
+							<div class="col-sm-8">
+								<#form:fileupload id="uploadImage" bizKey="${mesEqMd.id}" bizType="mesEqMd_image"
+									uploadType="image" class="" readonly="false" preview="true"/>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="box-footer">
+				<div class="row">
+					<div class="col-sm-offset-2 col-sm-10">
+						<% if (hasPermi('mes:mesEqMd: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>

+ 79 - 0
src/main/resources/views/modules/mes/mesEqMdList.html

@@ -0,0 +1,79 @@
+<% 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:mesEqMd:edit')){ %>
+					<a href="${ctx}/mes/mesEqMd/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="${mesEqMd}" action="${ctx}/mes/mesEqMd/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="equipmentCode" 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="mouldCode" 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="equipmentName" 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="model" 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:'equipmentCode', index:'a.equipment_code', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesEqMd/form?id='+row.id+'" class="btnList" data-title="${text("编辑设备模具绑定表")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("模具编码")}', name:'mouldCode', index:'a.mould_code', width:150, align:"left"},
+		{header:'${text("设备名称")}', name:'equipmentName', index:'a.equipment_name', width:150, align:"left"},
+		{header:'${text("设备型号")}', name:'model', index:'a.model', width:150, align:"left"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesEqMd:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesEqMd/form?id='+row.id+'" class="btnList" title="${text("编辑设备模具绑定表")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesEqMd/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>

+ 8 - 1
src/main/resources/views/modules/mes/mesHardnessInfo.html

@@ -1,4 +1,4 @@
-<% layout('/layouts/default.html', {title: '硬度检测详情', libs: ['dataGrid']}){ %>
+<% layout('/layouts/default.html', {title: '硬度检测详情', libs: ['dataGrid','fileupload']}){ %>
 <div class="main-content">
 	<div class="box box-main">
 		<div class="box-header with-border">
@@ -61,6 +61,13 @@
 							<td>${mesHardness.remark}</td>
 						</tr>
 						<tr>
+							<th class="mpc-header">图片</th>
+							<td>
+								<#form:fileupload id="uploadImage" bizKey="${mesHardness.id}" bizType="mesHardness_image"
+									uploadType="image" class="" readonly="true" preview="true"/>
+							</td>
+						</tr>
+						<tr>
 							<th class="mpc-header">测量日期</th>
 							<td>${@DateUtils.formatDate(mesHardness.measureDate)}</td>
 						</tr>

+ 16 - 9
src/main/resources/views/modules/mes/mesHardnessList.html

@@ -64,9 +64,9 @@
 						<label class="control-label col-sm-4">${text('比较方式')}:</label>
 						<div class="col-sm-8">
 							<select id="standardOp" class="form-control">
-								<option value=">">大于</option>
-								<option value="<">小于</option>
-								<option value="=">等于</option>
+								<option value="gt">大于</option>
+								<option value="lt">小于</option>
+								<option value="eq">等于</option>
 							</select>
 						</div>
 					</div>
@@ -98,10 +98,13 @@ $('#dataGrid').dataGrid({
 		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"center"},
 		{header:'${text("标准值")}', name:'standardValue', index:'a.standard_value', width:100, align:"center", formatter: function(val){
 			if(val && val.length > 0){
-				var op = val.substring(0, 1);
-				var num = val.substring(1);
-				var opMap = {'>': '大于', '<': '小于', '=': '等于'};
-				return (opMap[op] || op) + num;
+				var opMap = {'>': '大于', '>=': '大于等于', '<': '小于', '<=': '小于等于', '=': '等于',
+					'gt': '大于', 'lt': '小于', 'eq': '等于', '&gt;': '大于', '&lt;': '小于'};
+				var m = String(val).match(/^(>=|<=|>|<|=|gt|lt|eq|&gt;|&lt;)(.*)$/i);
+				if(m){
+					return (opMap[m[1]] || opMap[m[1].toLowerCase()] || m[1]) + m[2];
+				}
+				return val;
 			}
 			return '';
 		}},
@@ -142,10 +145,14 @@ $('#btnExport').click(function(){
 $('#btnStandardConfig').click(function(){
 	$.get('${ctx}/mes/mesHardness/getConfig', function(data){
 		if(data && data.standardOp){
-			$('#standardOp').val(data.standardOp);
+			var op = data.standardOp;
+			if(op === '>' || op === '&gt;' || op === '>'){ op = 'gt'; }
+			else if(op === '<' || op === '&lt;' || op === '<'){ op = 'lt'; }
+			else if(op === '=' || op === '&eq;' || op === '=' || op === '=='){ op = 'eq'; }
+			$('#standardOp').val(op);
 			$('#standardValueInput').val(data.standardValue);
 		} else {
-			$('#standardOp').val('>');
+			$('#standardOp').val('gt');
 			$('#standardValueInput').val('');
 		}
 		$('#configModal').modal('show');

+ 77 - 0
src/main/resources/views/modules/mes/mesMdForm.html

@@ -0,0 +1,77 @@
+<% 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(mesMd.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="${mesMd}" action="${ctx}/mes/mesMd/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-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('模具编码')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="mdCode" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('模具名称')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="mdName" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('模具号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="mdTpye" 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:mesMd: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>

+ 72 - 0
src/main/resources/views/modules/mes/mesMdList.html

@@ -0,0 +1,72 @@
+<% 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:mesMd:edit')){ %>
+					<a href="${ctx}/mes/mesMd/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="${mesMd}" action="${ctx}/mes/mesMd/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="mdCode" 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="mdName" 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="mdTpye" 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:'mdCode', index:'a.md_code', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesMd/form?id='+row.id+'" class="btnList" data-title="${text("编辑模具信息表")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("模具名称")}', name:'mdName', index:'a.md_name', width:150, align:"left"},
+		{header:'${text("模具号")}', name:'mdTpye', index:'a.md_tpye', width:150, align:"left"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesMd:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesMd/form?id='+row.id+'" class="btnList" title="${text("编辑模具信息表")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesMd/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>

+ 112 - 0
src/main/resources/views/modules/mes/mesMdSnForm.html

@@ -0,0 +1,112 @@
+<% layout('/layouts/default.html', {title: '模具工件表管理', libs: ['validate','fileupload']}){ %>
+<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(mesMdSn.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="${mesMdSn}" action="${ctx}/mes/mesMdSn/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="moldCode" 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="moldName" 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="moldType" 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="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="equipmentCode" maxlength="64" class="form-control" readonly="true"/>
+							</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="equipmentName" maxlength="64" class="form-control" readonly="true"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2">
+								<span class="required hide">*</span> ${text('图片上传')}:</label>
+							<div class="col-sm-10">
+								<#form:fileupload id="uploadImage" bizKey="${mesMdSn.id}" bizType="mesMdSn_image"
+									uploadType="image" class="" readonly="false" preview="true"/>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="box-footer">
+				<div class="row">
+					<div class="col-sm-offset-2 col-sm-10">
+						<% if (hasPermi('mes:mesMdSn: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>

+ 95 - 0
src/main/resources/views/modules/mes/mesMdSnList.html

@@ -0,0 +1,95 @@
+<% 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:mesMdSn:edit')){ %>
+					<a href="${ctx}/mes/mesMdSn/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="${mesMdSn}" action="${ctx}/mes/mesMdSn/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="moldCode" 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="moldName" 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="moldType" 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="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="equipmentCode" 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="equipmentName" 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:'equipmentCode', width:150, align:"left", sortable:false},
+		{header:'${text("设备名称")}', name:'equipmentName', width:150, align:"left", sortable:false},
+		{header:'${text("模具编码")}', name:'moldCode', index:'a.mold_code', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesMdSn/form?id='+row.id+'" class="btnList" data-title="${text("编辑模具工件表")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("模具名称")}', name:'moldName', index:'a.mold_name', width:150, align:"left"},
+		{header:'${text("模具类型")}', name:'moldType', index:'a.mold_type', width:150, align:"left"},
+		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"left"},
+
+		{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesMdSn:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesMdSn/form?id='+row.id+'" class="btnList" title="${text("编辑模具工件表")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesMdSn/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>