فهرست منبع

添加设备保养,模具保养,保养记录,设备工位四个列表

dkk 4 ماه پیش
والد
کامیت
96fafa4a66
32فایلهای تغییر یافته به همراه2310 افزوده شده و 5 حذف شده
  1. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceMaintenanceDao.java
  2. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceWorkstationDao.java
  3. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaintenanceRecordDao.java
  4. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMoldMaintenanceDao.java
  5. 111 0
      src/main/java/com/jeesite/modules/mes/entity/MesDeviceMaintenance.java
  6. 95 0
      src/main/java/com/jeesite/modules/mes/entity/MesDeviceWorkstation.java
  7. 79 0
      src/main/java/com/jeesite/modules/mes/entity/MesMaintenanceRecord.java
  8. 101 0
      src/main/java/com/jeesite/modules/mes/entity/MesMoldMaintenance.java
  9. 87 0
      src/main/java/com/jeesite/modules/mes/service/MesDeviceMaintenanceService.java
  10. 81 0
      src/main/java/com/jeesite/modules/mes/service/MesDeviceWorkstationService.java
  11. 66 0
      src/main/java/com/jeesite/modules/mes/service/MesMaintenanceRecordService.java
  12. 87 0
      src/main/java/com/jeesite/modules/mes/service/MesMoldMaintenanceService.java
  13. 96 0
      src/main/java/com/jeesite/modules/mes/web/MesDeviceMaintenanceController.java
  14. 101 0
      src/main/java/com/jeesite/modules/mes/web/MesDeviceWorkstationController.java
  15. 198 0
      src/main/java/com/jeesite/modules/mes/web/MesFlawRecordController.java
  16. 96 0
      src/main/java/com/jeesite/modules/mes/web/MesMaintenanceRecordController.java
  17. 96 0
      src/main/java/com/jeesite/modules/mes/web/MesMoldMaintenanceController.java
  18. 0 5
      src/main/java/com/jeesite/modules/mes/web/MesQualityController.java
  19. 15 0
      src/main/resources/mappings/modules/mes/MesDeviceMaintenanceDao.xml
  20. 15 0
      src/main/resources/mappings/modules/mes/MesDeviceWorkstationDao.xml
  21. 15 0
      src/main/resources/mappings/modules/mes/MesMaintenanceRecordDao.xml
  22. 15 0
      src/main/resources/mappings/modules/mes/MesMoldMaintenanceDao.xml
  23. 106 0
      src/main/resources/views/modules/mes/mesDeviceMaintenanceForm.html
  24. 91 0
      src/main/resources/views/modules/mes/mesDeviceMaintenanceList.html
  25. 86 0
      src/main/resources/views/modules/mes/mesDeviceWorkstationForm.html
  26. 66 0
      src/main/resources/views/modules/mes/mesDeviceWorkstationList.html
  27. 93 0
      src/main/resources/views/modules/mes/mesFlawRecordInfo.html
  28. 121 0
      src/main/resources/views/modules/mes/mesFlawRecordList.html
  29. 86 0
      src/main/resources/views/modules/mes/mesMaintenanceRecordForm.html
  30. 68 0
      src/main/resources/views/modules/mes/mesMaintenanceRecordList.html
  31. 97 0
      src/main/resources/views/modules/mes/mesMoldMaintenanceForm.html
  32. 82 0
      src/main/resources/views/modules/mes/mesMoldMaintenanceList.html

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceMaintenanceDao.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.MesDeviceMaintenance;
+
+/**
+ * 设备保养DAO接口
+ * @author mes
+ * @version 2026-06-26
+ */
+@MyBatisDao
+public interface MesDeviceMaintenanceDao extends CrudDao<MesDeviceMaintenance> {
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceWorkstationDao.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.MesDeviceWorkstation;
+
+/**
+ * 设备工位DAO接口
+ * @author mes
+ * @version 2026-06-26
+ */
+@MyBatisDao
+public interface MesDeviceWorkstationDao extends CrudDao<MesDeviceWorkstation> {
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaintenanceRecordDao.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.MesMaintenanceRecord;
+
+/**
+ * 保养记录DAO接口
+ * @author mes
+ * @version 2026-06-26
+ */
+@MyBatisDao
+public interface MesMaintenanceRecordDao extends CrudDao<MesMaintenanceRecord> {
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMoldMaintenanceDao.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.MesMoldMaintenance;
+
+/**
+ * 模具保养DAO接口
+ * @author mes
+ * @version 2026-06-26
+ */
+@MyBatisDao
+public interface MesMoldMaintenanceDao extends CrudDao<MesMoldMaintenance> {
+
+}

+ 111 - 0
src/main/java/com/jeesite/modules/mes/entity/MesDeviceMaintenance.java

@@ -0,0 +1,111 @@
+package com.jeesite.modules.mes.entity;
+
+import java.util.Date;
+import javax.validation.constraints.Size;
+
+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;
+
+/**
+ * 设备保养Entity
+ * @author mes
+ * @version 2026-06-26
+ */
+@Table(name="mes_device_maintenance", alias="a", label="设备保养信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="name", attrName="name", label="名称", isQuery=true),
+		@Column(name="code", attrName="code", label="编号", isQuery=true),
+		@Column(name="maintenance_category", attrName="maintenanceCategory", label="保养类别", isQuery=true),
+		@Column(name="maintenance_date", attrName="maintenanceDate", label="保养日期", isQuery=true),
+		@Column(name="content", attrName="content", label="保养内容"),
+		@Column(name="maintenance_user", attrName="maintenanceUser", label="保养人", isQuery=true),
+		@Column(name="maintenance_status", attrName="maintenanceStatus", label="保养状态", isQuery=true),
+		@Column(name="remarks", attrName="remarks", label="备注"),
+		@Column(name="create_by", attrName="createBy", label="create_by", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="create_date", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="update_by", isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="update_date", isQuery=false, isUpdateForce=true),
+}, orderBy="a.maintenance_date DESC"
+)
+public class MesDeviceMaintenance extends DataEntity<MesDeviceMaintenance> {
+
+	private static final long serialVersionUID = 1L;
+	private String name;				// 名称
+	private String code;				// 编号
+	private String maintenanceCategory;	// 保养类别
+	private Date maintenanceDate;		// 保养日期
+	private String content;				// 保养内容
+	private String maintenanceUser;		// 保养人
+	private String maintenanceStatus;	// 保养状态
+
+	public MesDeviceMaintenance() {
+		this(null);
+	}
+
+	public MesDeviceMaintenance(String id){
+		super(id);
+	}
+
+	@Size(min=0, max=255, message="名称长度不能超过 255 个字符")
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	@Size(min=0, max=100, message="编号长度不能超过 100 个字符")
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	@Size(min=0, max=100, message="保养类别长度不能超过 100 个字符")
+	public String getMaintenanceCategory() {
+		return maintenanceCategory;
+	}
+
+	public void setMaintenanceCategory(String maintenanceCategory) {
+		this.maintenanceCategory = maintenanceCategory;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public Date getMaintenanceDate() {
+		return maintenanceDate;
+	}
+
+	public void setMaintenanceDate(Date maintenanceDate) {
+		this.maintenanceDate = maintenanceDate;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	@Size(min=0, max=100, message="保养人长度不能超过 100 个字符")
+	public String getMaintenanceUser() {
+		return maintenanceUser;
+	}
+
+	public void setMaintenanceUser(String maintenanceUser) {
+		this.maintenanceUser = maintenanceUser;
+	}
+
+	public String getMaintenanceStatus() {
+		return maintenanceStatus;
+	}
+
+	public void setMaintenanceStatus(String maintenanceStatus) {
+		this.maintenanceStatus = maintenanceStatus;
+	}
+}

+ 95 - 0
src/main/java/com/jeesite/modules/mes/entity/MesDeviceWorkstation.java

@@ -0,0 +1,95 @@
+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.JoinTable;
+import com.jeesite.common.mybatis.annotation.Table;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
+
+/**
+ * 设备工位Entity
+ * @author mes
+ * @version 2026-06-26
+ */
+@Table(name="mes_device_workstation", alias="a", label="设备工位信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="device_name", attrName="deviceName", label="设备名称", isQuery=true, queryType=QueryType.LIKE),
+		@Column(name="device_code", attrName="deviceCode", label="设备编号", isQuery=true, queryType=QueryType.LIKE),
+		@Column(name="line_process_id", attrName="lineProcessId", label="所属工位id", isQuery=true),
+		@Column(name="remarks", attrName="remarks", label="备注"),
+		@Column(name="create_by", attrName="createBy", label="create_by", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="create_date", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="update_by", isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="update_date", isQuery=false, isUpdateForce=true),
+},
+	joinTable={
+			@JoinTable(type=JoinTable.Type.LEFT_JOIN, entity=MesLineProcess.class, attrName="this", alias="b",
+					on="b.id = a.line_process_id",
+					columns={
+							@Column(name="oprno", attrName="oprno", label="工位号"),
+							@Column(name="title", attrName="workstationName", label="工位名称"),
+					}),
+	}, orderBy="a.create_date DESC"
+)
+public class MesDeviceWorkstation extends DataEntity<MesDeviceWorkstation> {
+
+	private static final long serialVersionUID = 1L;
+	private String deviceName;			// 设备名称
+	private String deviceCode;			// 设备编号
+	private String lineProcessId;		// 所属工位id
+	private String oprno;				// 工位号(来自JOIN)
+	private String workstationName;		// 工位名称(来自JOIN)
+
+	public MesDeviceWorkstation() {
+		this(null);
+	}
+
+	public MesDeviceWorkstation(String id){
+		super(id);
+	}
+
+	@Size(min=0, max=255, message="设备名称长度不能超过 255 个字符")
+	public String getDeviceName() {
+		return deviceName;
+	}
+
+	public void setDeviceName(String deviceName) {
+		this.deviceName = deviceName;
+	}
+
+	@Size(min=0, max=100, message="设备编号长度不能超过 100 个字符")
+	public String getDeviceCode() {
+		return deviceCode;
+	}
+
+	public void setDeviceCode(String deviceCode) {
+		this.deviceCode = deviceCode;
+	}
+
+	@Size(min=0, max=64, message="所属工位id长度不能超过 64 个字符")
+	public String getLineProcessId() {
+		return lineProcessId;
+	}
+
+	public void setLineProcessId(String lineProcessId) {
+		this.lineProcessId = lineProcessId;
+	}
+
+	public String getOprno() {
+		return oprno;
+	}
+
+	public void setOprno(String oprno) {
+		this.oprno = oprno;
+	}
+
+	public String getWorkstationName() {
+		return workstationName;
+	}
+
+	public void setWorkstationName(String workstationName) {
+		this.workstationName = workstationName;
+	}
+}

+ 79 - 0
src/main/java/com/jeesite/modules/mes/entity/MesMaintenanceRecord.java

@@ -0,0 +1,79 @@
+package com.jeesite.modules.mes.entity;
+
+import java.util.Date;
+import javax.validation.constraints.Size;
+
+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;
+
+/**
+ * 保养记录Entity
+ * @author mes
+ * @version 2026-06-26
+ */
+@Table(name="mes_maintenance_record", alias="a", label="保养记录信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="maintenance_category", attrName="maintenanceCategory", label="保养类别", isQuery=true),
+		@Column(name="content", attrName="content", label="保养内容", isQuery=true),
+		@Column(name="mold_device", attrName="moldDevice", label="模具设备", isQuery=true),
+		@Column(name="maintenance_date", attrName="maintenanceDate", label="保养时间", isQuery=true),
+		@Column(name="remarks", attrName="remarks", label="备注"),
+		@Column(name="create_by", attrName="createBy", label="create_by", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="create_date", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="update_by", isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="update_date", isQuery=false, isUpdateForce=true),
+}, orderBy="a.maintenance_date DESC"
+)
+public class MesMaintenanceRecord extends DataEntity<MesMaintenanceRecord> {
+
+	private static final long serialVersionUID = 1L;
+	private String maintenanceCategory;	// 保养类别
+	private String content;				// 保养内容
+	private String moldDevice;			// 模具设备
+	private Date maintenanceDate;		// 保养时间
+
+	public MesMaintenanceRecord() {
+		this(null);
+	}
+
+	public MesMaintenanceRecord(String id){
+		super(id);
+	}
+
+	public String getMaintenanceCategory() {
+		return maintenanceCategory;
+	}
+
+	public void setMaintenanceCategory(String maintenanceCategory) {
+		this.maintenanceCategory = maintenanceCategory;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	@Size(min=0, max=255, message="模具设备长度不能超过 255 个字符")
+	public String getMoldDevice() {
+		return moldDevice;
+	}
+
+	public void setMoldDevice(String moldDevice) {
+		this.moldDevice = moldDevice;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public Date getMaintenanceDate() {
+		return maintenanceDate;
+	}
+
+	public void setMaintenanceDate(Date maintenanceDate) {
+		this.maintenanceDate = maintenanceDate;
+	}
+}

+ 101 - 0
src/main/java/com/jeesite/modules/mes/entity/MesMoldMaintenance.java

@@ -0,0 +1,101 @@
+package com.jeesite.modules.mes.entity;
+
+import java.util.Date;
+import javax.validation.constraints.Size;
+
+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;
+
+/**
+ * 模具保养Entity
+ * @author mes
+ * @version 2026-06-26
+ */
+@Table(name="mes_mold_maintenance", alias="a", label="模具保养信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="name", attrName="name", label="名称", isQuery=true),
+		@Column(name="code", attrName="code", label="编号", isQuery=true),
+		@Column(name="maintenance_date", attrName="maintenanceDate", label="保养日期", isQuery=true),
+		@Column(name="content", attrName="content", label="保养内容"),
+		@Column(name="maintenance_user", attrName="maintenanceUser", label="保养人", isQuery=true),
+		@Column(name="maintenance_status", attrName="maintenanceStatus", label="保养状态", isQuery=true),
+		@Column(name="remarks", attrName="remarks", label="备注"),
+		@Column(name="create_by", attrName="createBy", label="create_by", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="create_date", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="update_by", isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="update_date", isQuery=false, isUpdateForce=true),
+}, orderBy="a.maintenance_date DESC"
+)
+public class MesMoldMaintenance extends DataEntity<MesMoldMaintenance> {
+
+	private static final long serialVersionUID = 1L;
+	private String name;				// 名称
+	private String code;				// 编号
+	private Date maintenanceDate;		// 保养日期
+	private String content;				// 保养内容
+	private String maintenanceUser;		// 保养人
+	private String maintenanceStatus;	// 保养状态
+
+	public MesMoldMaintenance() {
+		this(null);
+	}
+
+	public MesMoldMaintenance(String id){
+		super(id);
+	}
+
+	@Size(min=0, max=255, message="名称长度不能超过 255 个字符")
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	@Size(min=0, max=100, message="编号长度不能超过 100 个字符")
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public Date getMaintenanceDate() {
+		return maintenanceDate;
+	}
+
+	public void setMaintenanceDate(Date maintenanceDate) {
+		this.maintenanceDate = maintenanceDate;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	@Size(min=0, max=100, message="保养人长度不能超过 100 个字符")
+	public String getMaintenanceUser() {
+		return maintenanceUser;
+	}
+
+	public void setMaintenanceUser(String maintenanceUser) {
+		this.maintenanceUser = maintenanceUser;
+	}
+
+	public String getMaintenanceStatus() {
+		return maintenanceStatus;
+	}
+
+	public void setMaintenanceStatus(String maintenanceStatus) {
+		this.maintenanceStatus = maintenanceStatus;
+	}
+}

+ 87 - 0
src/main/java/com/jeesite/modules/mes/service/MesDeviceMaintenanceService.java

@@ -0,0 +1,87 @@
+package com.jeesite.modules.mes.service;
+
+import java.util.Date;
+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.MesDeviceMaintenance;
+import com.jeesite.modules.mes.dao.MesDeviceMaintenanceDao;
+import com.jeesite.modules.sys.utils.UserUtils;
+
+/**
+ * 设备保养Service
+ * @author mes
+ * @version 2026-06-26
+ */
+@Service
+public class MesDeviceMaintenanceService extends CrudService<MesDeviceMaintenanceDao, MesDeviceMaintenance> {
+
+	/**
+	 * 获取单条数据
+	 * @param mesDeviceMaintenance
+	 * @return
+	 */
+	@Override
+	public MesDeviceMaintenance get(MesDeviceMaintenance mesDeviceMaintenance) {
+		return super.get(mesDeviceMaintenance);
+	}
+
+	/**
+	 * 查询分页数据
+	 * @param mesDeviceMaintenance 查询条件
+	 * @param mesDeviceMaintenance.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesDeviceMaintenance> findPage(MesDeviceMaintenance mesDeviceMaintenance) {
+		return super.findPage(mesDeviceMaintenance);
+	}
+
+	/**
+	 * 查询列表数据
+	 * @param mesDeviceMaintenance
+	 * @return
+	 */
+	@Override
+	public List<MesDeviceMaintenance> findList(MesDeviceMaintenance mesDeviceMaintenance) {
+		return super.findList(mesDeviceMaintenance);
+	}
+
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesDeviceMaintenance
+	 */
+	@Override
+	@Transactional
+	public void save(MesDeviceMaintenance mesDeviceMaintenance) {
+		if (mesDeviceMaintenance.getIsNewRecord()) {
+			mesDeviceMaintenance.setMaintenanceDate(new Date());
+			mesDeviceMaintenance.setMaintenanceUser(UserUtils.getUser().getUserName());
+		}
+		super.save(mesDeviceMaintenance);
+	}
+
+	/**
+	 * 更新状态
+	 * @param mesDeviceMaintenance
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesDeviceMaintenance mesDeviceMaintenance) {
+		super.updateStatus(mesDeviceMaintenance);
+	}
+
+	/**
+	 * 删除数据
+	 * @param mesDeviceMaintenance
+	 */
+	@Override
+	@Transactional
+	public void delete(MesDeviceMaintenance mesDeviceMaintenance) {
+		super.delete(mesDeviceMaintenance);
+	}
+
+}

+ 81 - 0
src/main/java/com/jeesite/modules/mes/service/MesDeviceWorkstationService.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.MesDeviceWorkstation;
+import com.jeesite.modules.mes.dao.MesDeviceWorkstationDao;
+
+/**
+ * 设备工位Service
+ * @author mes
+ * @version 2026-06-26
+ */
+@Service
+public class MesDeviceWorkstationService extends CrudService<MesDeviceWorkstationDao, MesDeviceWorkstation> {
+
+	/**
+	 * 获取单条数据
+	 * @param mesDeviceWorkstation
+	 * @return
+	 */
+	@Override
+	public MesDeviceWorkstation get(MesDeviceWorkstation mesDeviceWorkstation) {
+		return super.get(mesDeviceWorkstation);
+	}
+
+	/**
+	 * 查询分页数据
+	 * @param mesDeviceWorkstation 查询条件
+	 * @param mesDeviceWorkstation.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesDeviceWorkstation> findPage(MesDeviceWorkstation mesDeviceWorkstation) {
+		return super.findPage(mesDeviceWorkstation);
+	}
+
+	/**
+	 * 查询列表数据
+	 * @param mesDeviceWorkstation
+	 * @return
+	 */
+	@Override
+	public List<MesDeviceWorkstation> findList(MesDeviceWorkstation mesDeviceWorkstation) {
+		return super.findList(mesDeviceWorkstation);
+	}
+
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesDeviceWorkstation
+	 */
+	@Override
+	@Transactional
+	public void save(MesDeviceWorkstation mesDeviceWorkstation) {
+		super.save(mesDeviceWorkstation);
+	}
+
+	/**
+	 * 更新状态
+	 * @param mesDeviceWorkstation
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesDeviceWorkstation mesDeviceWorkstation) {
+		super.updateStatus(mesDeviceWorkstation);
+	}
+
+	/**
+	 * 删除数据
+	 * @param mesDeviceWorkstation
+	 */
+	@Override
+	@Transactional
+	public void delete(MesDeviceWorkstation mesDeviceWorkstation) {
+		super.delete(mesDeviceWorkstation);
+	}
+
+}

+ 66 - 0
src/main/java/com/jeesite/modules/mes/service/MesMaintenanceRecordService.java

@@ -0,0 +1,66 @@
+package com.jeesite.modules.mes.service;
+
+import java.util.Date;
+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.MesMaintenanceRecord;
+import com.jeesite.modules.mes.dao.MesMaintenanceRecordDao;
+
+/**
+ * 保养记录Service
+ * @author mes
+ * @version 2026-06-26
+ */
+@Service
+public class MesMaintenanceRecordService extends CrudService<MesMaintenanceRecordDao, MesMaintenanceRecord> {
+
+	/**
+	 * 获取单条数据
+	 */
+	@Override
+	public MesMaintenanceRecord get(MesMaintenanceRecord mesMaintenanceRecord) {
+		return super.get(mesMaintenanceRecord);
+	}
+
+	/**
+	 * 查询分页数据
+	 */
+	@Override
+	public Page<MesMaintenanceRecord> findPage(MesMaintenanceRecord mesMaintenanceRecord) {
+		return super.findPage(mesMaintenanceRecord);
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@Override
+	public List<MesMaintenanceRecord> findList(MesMaintenanceRecord mesMaintenanceRecord) {
+		return super.findList(mesMaintenanceRecord);
+	}
+
+	/**
+	 * 保存数据(插入或更新)
+	 */
+	@Override
+	@Transactional
+	public void save(MesMaintenanceRecord mesMaintenanceRecord) {
+		if (mesMaintenanceRecord.getIsNewRecord()) {
+			mesMaintenanceRecord.setMaintenanceDate(new Date());
+		}
+		super.save(mesMaintenanceRecord);
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@Override
+	@Transactional
+	public void delete(MesMaintenanceRecord mesMaintenanceRecord) {
+		super.delete(mesMaintenanceRecord);
+	}
+
+}

+ 87 - 0
src/main/java/com/jeesite/modules/mes/service/MesMoldMaintenanceService.java

@@ -0,0 +1,87 @@
+package com.jeesite.modules.mes.service;
+
+import java.util.Date;
+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.MesMoldMaintenance;
+import com.jeesite.modules.mes.dao.MesMoldMaintenanceDao;
+import com.jeesite.modules.sys.utils.UserUtils;
+
+/**
+ * 模具保养Service
+ * @author mes
+ * @version 2026-06-26
+ */
+@Service
+public class MesMoldMaintenanceService extends CrudService<MesMoldMaintenanceDao, MesMoldMaintenance> {
+
+	/**
+	 * 获取单条数据
+	 * @param mesMoldMaintenance
+	 * @return
+	 */
+	@Override
+	public MesMoldMaintenance get(MesMoldMaintenance mesMoldMaintenance) {
+		return super.get(mesMoldMaintenance);
+	}
+
+	/**
+	 * 查询分页数据
+	 * @param mesMoldMaintenance 查询条件
+	 * @param mesMoldMaintenance.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesMoldMaintenance> findPage(MesMoldMaintenance mesMoldMaintenance) {
+		return super.findPage(mesMoldMaintenance);
+	}
+
+	/**
+	 * 查询列表数据
+	 * @param mesMoldMaintenance
+	 * @return
+	 */
+	@Override
+	public List<MesMoldMaintenance> findList(MesMoldMaintenance mesMoldMaintenance) {
+		return super.findList(mesMoldMaintenance);
+	}
+
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesMoldMaintenance
+	 */
+	@Override
+	@Transactional
+	public void save(MesMoldMaintenance mesMoldMaintenance) {
+		if (mesMoldMaintenance.getIsNewRecord()) {
+			mesMoldMaintenance.setMaintenanceDate(new Date());
+			mesMoldMaintenance.setMaintenanceUser(UserUtils.getUser().getUserName());
+		}
+		super.save(mesMoldMaintenance);
+	}
+
+	/**
+	 * 更新状态
+	 * @param mesMoldMaintenance
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesMoldMaintenance mesMoldMaintenance) {
+		super.updateStatus(mesMoldMaintenance);
+	}
+
+	/**
+	 * 删除数据
+	 * @param mesMoldMaintenance
+	 */
+	@Override
+	@Transactional
+	public void delete(MesMoldMaintenance mesMoldMaintenance) {
+		super.delete(mesMoldMaintenance);
+	}
+
+}

+ 96 - 0
src/main/java/com/jeesite/modules/mes/web/MesDeviceMaintenanceController.java

@@ -0,0 +1,96 @@
+package com.jeesite.modules.mes.web;
+
+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.MesDeviceMaintenance;
+import com.jeesite.modules.mes.service.MesDeviceMaintenanceService;
+
+/**
+ * 设备保养Controller
+ * @author mes
+ * @version 2026-06-26
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesDeviceMaintenance")
+public class MesDeviceMaintenanceController extends BaseController {
+
+	@Autowired
+	private MesDeviceMaintenanceService mesDeviceMaintenanceService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesDeviceMaintenance get(String id, boolean isNewRecord) {
+		return mesDeviceMaintenanceService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesDeviceMaintenance:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesDeviceMaintenance mesDeviceMaintenance, Model model) {
+		model.addAttribute("mesDeviceMaintenance", mesDeviceMaintenance);
+		return "modules/mes/mesDeviceMaintenanceList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesDeviceMaintenance:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesDeviceMaintenance> listData(MesDeviceMaintenance mesDeviceMaintenance, HttpServletRequest request, HttpServletResponse response) {
+		mesDeviceMaintenance.setPage(new Page<>(request, response));
+		Page<MesDeviceMaintenance> page = mesDeviceMaintenanceService.findPage(mesDeviceMaintenance);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesDeviceMaintenance:view")
+	@RequestMapping(value = "form")
+	public String form(MesDeviceMaintenance mesDeviceMaintenance, Model model) {
+		model.addAttribute("mesDeviceMaintenance", mesDeviceMaintenance);
+		return "modules/mes/mesDeviceMaintenanceForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesDeviceMaintenance:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesDeviceMaintenance mesDeviceMaintenance) {
+		mesDeviceMaintenanceService.save(mesDeviceMaintenance);
+		return renderResult(Global.TRUE, text("保存设备保养记录成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesDeviceMaintenance:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesDeviceMaintenance mesDeviceMaintenance) {
+		mesDeviceMaintenanceService.delete(mesDeviceMaintenance);
+		return renderResult(Global.TRUE, text("删除设备保养记录成功!"));
+	}
+
+}

+ 101 - 0
src/main/java/com/jeesite/modules/mes/web/MesDeviceWorkstationController.java

@@ -0,0 +1,101 @@
+package com.jeesite.modules.mes.web;
+
+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.MesDeviceWorkstation;
+import com.jeesite.modules.mes.entity.MesLineProcess;
+import com.jeesite.modules.mes.service.MesDeviceWorkstationService;
+import com.jeesite.modules.mes.service.MesLineProcessService;
+
+/**
+ * 设备工位Controller
+ * @author mes
+ * @version 2026-06-26
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesDeviceWorkstation")
+public class MesDeviceWorkstationController extends BaseController {
+
+	@Autowired
+	private MesDeviceWorkstationService mesDeviceWorkstationService;
+	@Autowired
+	private MesLineProcessService mesLineProcessService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesDeviceWorkstation get(String id, boolean isNewRecord) {
+		return mesDeviceWorkstationService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesDeviceWorkstation:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesDeviceWorkstation mesDeviceWorkstation, Model model) {
+		model.addAttribute("mesDeviceWorkstation", mesDeviceWorkstation);
+		return "modules/mes/mesDeviceWorkstationList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesDeviceWorkstation:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesDeviceWorkstation> listData(MesDeviceWorkstation mesDeviceWorkstation, HttpServletRequest request, HttpServletResponse response) {
+		mesDeviceWorkstation.setPage(new Page<>(request, response));
+		Page<MesDeviceWorkstation> page = mesDeviceWorkstationService.findPage(mesDeviceWorkstation);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesDeviceWorkstation:view")
+	@RequestMapping(value = "form")
+	public String form(MesDeviceWorkstation mesDeviceWorkstation, Model model) {
+		model.addAttribute("mesDeviceWorkstation", mesDeviceWorkstation);
+		model.addAttribute("lineProcessList", mesLineProcessService.findList(new MesLineProcess()));
+		return "modules/mes/mesDeviceWorkstationForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesDeviceWorkstation:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesDeviceWorkstation mesDeviceWorkstation) {
+		mesDeviceWorkstationService.save(mesDeviceWorkstation);
+		return renderResult(Global.TRUE, text("保存设备工位记录成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesDeviceWorkstation:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesDeviceWorkstation mesDeviceWorkstation) {
+		mesDeviceWorkstationService.delete(mesDeviceWorkstation);
+		return renderResult(Global.TRUE, text("删除设备工位记录成功!"));
+	}
+
+}

+ 198 - 0
src/main/java/com/jeesite/modules/mes/web/MesFlawRecordController.java

@@ -0,0 +1,198 @@
+package com.jeesite.modules.mes.web;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+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.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.util.ObjectUtils;
+
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.MesProductRecord;
+import com.jeesite.modules.mes.entity.MesTemplateItems;
+import com.jeesite.modules.mes.req.MesSearchDateReq;
+import com.jeesite.modules.mes.service.MesProductRecordService;
+import com.jeesite.modules.mes.service.MesTemplateItemsService;
+import com.jeesite.modules.mes.util.CommonUitl;
+
+/**
+ * 探伤记录Controller(仅展示OP070工位的生产记录)
+ * @author system
+ * @version 2025-06-25
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesFlawRecord")
+public class MesFlawRecordController extends BaseController {
+
+	@Autowired
+	private MesProductRecordService mesProductRecordService;
+
+	@Autowired
+	private MesTemplateItemsService mesTemplateItemsService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesProductRecord get(String id, boolean isNewRecord) {
+		return mesProductRecordService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesProductRecord:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesProductRecord mesProductRecord, Model model) {
+		MesSearchDateReq dateMap = CommonUitl.getSearchDate();
+
+		if(mesProductRecord.getUpdateDate_gte() == null){
+			mesProductRecord.setUpdateDate_gte(dateMap.getStartDate());
+		}
+		if(mesProductRecord.getUpdateDate_lte() == null){
+			mesProductRecord.setUpdateDate_lte(dateMap.getEndtDate());
+		}
+		// 固定过滤OP070工位
+		mesProductRecord.setOprno("OP070");
+		model.addAttribute("mesProductRecord", mesProductRecord);
+		return "modules/mes/mesFlawRecordList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesProductRecord:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesProductRecord> listData(MesProductRecord mesProductRecord, HttpServletRequest request, HttpServletResponse response) {
+		Page page1 = new Page<>(request, response);
+		mesProductRecord.setPage(page1);
+		mesProductRecord.getSqlMap().getOrder().setOrderBy("a.id DESC");
+		// 固定过滤OP070工位
+		mesProductRecord.getSqlMap().getWhere().and("oprno", QueryType.EQ, "OP070");
+		// 如果查询状态的值为 1, 表示用户选择查询 已加工
+		if("1".equals(mesProductRecord.getProcessState()) && "".equals(mesProductRecord.getContent()))
+			mesProductRecord.getSqlMap().getWhere().and("content", QueryType.NE, "UDF");
+		// 如果查询状态的值为 0, 表示用户选择查询 未加工
+		else if ("0".equals(mesProductRecord.getProcessState()) && "".equals(mesProductRecord.getContent()))
+			mesProductRecord.getSqlMap().getWhere().and("content", QueryType.EQ, "UDF");
+		Page<MesProductRecord> page = mesProductRecordService.findPage(mesProductRecord);
+		for (int i = 0; i < page.getList().size(); i++) {
+			MesTemplateItems mesTemplateItems = new MesTemplateItems();
+			mesTemplateItems.setId(page.getList().get(i).getTid());
+			MesTemplateItems mt = mesTemplateItemsService.get(mesTemplateItems);
+			if (!ObjectUtils.isEmpty(mt)) {
+				page.getList().get(i).setMessageType(mt.getCate());
+				page.getList().get(i).setTitle(mt.getTitle());
+			}
+		}
+		return page;
+	}
+
+	/**
+	 * 导出数据
+	 */
+	@RequiresPermissions("mes:mesProductRecord:view")
+	@RequestMapping(value = "exportData")
+	public void exportData(MesProductRecord mesProductRecord, HttpServletResponse response) {
+		mesProductRecord.getSqlMap().getWhere().and("oprno", QueryType.EQ, "OP070");
+		java.util.List<MesProductRecord> list = mesProductRecordService.findList(mesProductRecord);
+		String fileName = "探伤记录" + com.jeesite.common.lang.DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+		try (com.jeesite.common.utils.excel.ExcelExport ee = new com.jeesite.common.utils.excel.ExcelExport("探伤记录", MesProductRecord.class)) {
+			ee.setDataList(list).write(response, fileName);
+		}
+	}
+
+	/**
+	 * 查看详情
+	 */
+	@RequiresPermissions("mes:mesProductRecord:view")
+	@RequestMapping(value = "info")
+	public String info(MesProductRecord mesProductRecord, Model model) {
+		model.addAttribute("mesProductRecord", mesProductRecord);
+		return "modules/mes/mesFlawRecordInfo";
+	}
+
+	/**
+	 * 获取工件码对应的jpg图片列表
+	 */
+	@RequiresPermissions("mes:mesProductRecord:view")
+	@RequestMapping(value = "imageList")
+	@ResponseBody
+	public List<Map<String, String>> imageList(String sn) {
+		List<Map<String, String>> result = new ArrayList<>();
+		if (sn == null || sn.trim().isEmpty()) {
+			return result;
+		}
+		// 图片存储目录:D:/mescloud/{工件码}/
+		File dir = new File("D:/mescloud/" + sn);
+		if (!dir.exists() || !dir.isDirectory()) {
+			return result;
+		}
+		File[] files = dir.listFiles((d, name) -> {
+			String lower = name.toLowerCase();
+			return lower.endsWith(".jpg") || lower.endsWith(".jpeg");
+		});
+		if (files == null) {
+			return result;
+		}
+		for (File file : files) {
+			Map<String, String> map = new HashMap<>();
+			map.put("name", file.getName());
+			map.put("size", String.valueOf(file.length()));
+			result.add(map);
+		}
+		return result;
+	}
+
+	/**
+	 * 输出指定工件码的指定图片
+	 */
+	@RequiresPermissions("mes:mesProductRecord:view")
+	@RequestMapping(value = "viewImage")
+	public void viewImage(String sn, String fileName, HttpServletResponse response) {
+		if (sn == null || sn.trim().isEmpty() || fileName == null || fileName.trim().isEmpty()) {
+			return;
+		}
+		// 安全检查:防止路径穿越
+		if (sn.contains("..") || fileName.contains("..") || fileName.contains("/") || fileName.contains("\\")) {
+			return;
+		}
+		String lower = fileName.toLowerCase();
+		if (!lower.endsWith(".jpg") && !lower.endsWith(".jpeg")) {
+			return;
+		}
+		File file = new File("D:/mescloud/" + sn + "/" + fileName);
+		if (!file.exists() || !file.isFile()) {
+			return;
+		}
+		response.setContentType("image/jpeg");
+		response.setContentLengthLong(file.length());
+		try (FileInputStream fis = new FileInputStream(file);
+			 OutputStream os = response.getOutputStream()) {
+			byte[] buffer = new byte[4096];
+			int len;
+			while ((len = fis.read(buffer)) != -1) {
+				os.write(buffer, 0, len);
+			}
+			os.flush();
+		} catch (Exception e) {
+			logger.error("输出探伤图片失败: " + file.getPath(), e);
+		}
+	}
+}

+ 96 - 0
src/main/java/com/jeesite/modules/mes/web/MesMaintenanceRecordController.java

@@ -0,0 +1,96 @@
+package com.jeesite.modules.mes.web;
+
+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.MesMaintenanceRecord;
+import com.jeesite.modules.mes.service.MesMaintenanceRecordService;
+
+/**
+ * 保养记录Controller
+ * @author mes
+ * @version 2026-06-26
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesMaintenanceRecord")
+public class MesMaintenanceRecordController extends BaseController {
+
+	@Autowired
+	private MesMaintenanceRecordService mesMaintenanceRecordService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesMaintenanceRecord get(String id, boolean isNewRecord) {
+		return mesMaintenanceRecordService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesMaintenanceRecord:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesMaintenanceRecord mesMaintenanceRecord, Model model) {
+		model.addAttribute("mesMaintenanceRecord", mesMaintenanceRecord);
+		return "modules/mes/mesMaintenanceRecordList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesMaintenanceRecord:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesMaintenanceRecord> listData(MesMaintenanceRecord mesMaintenanceRecord, HttpServletRequest request, HttpServletResponse response) {
+		mesMaintenanceRecord.setPage(new Page<>(request, response));
+		Page<MesMaintenanceRecord> page = mesMaintenanceRecordService.findPage(mesMaintenanceRecord);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesMaintenanceRecord:view")
+	@RequestMapping(value = "form")
+	public String form(MesMaintenanceRecord mesMaintenanceRecord, Model model) {
+		model.addAttribute("mesMaintenanceRecord", mesMaintenanceRecord);
+		return "modules/mes/mesMaintenanceRecordForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesMaintenanceRecord:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesMaintenanceRecord mesMaintenanceRecord) {
+		mesMaintenanceRecordService.save(mesMaintenanceRecord);
+		return renderResult(Global.TRUE, text("保存保养记录成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesMaintenanceRecord:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesMaintenanceRecord mesMaintenanceRecord) {
+		mesMaintenanceRecordService.delete(mesMaintenanceRecord);
+		return renderResult(Global.TRUE, text("删除保养记录成功!"));
+	}
+
+}

+ 96 - 0
src/main/java/com/jeesite/modules/mes/web/MesMoldMaintenanceController.java

@@ -0,0 +1,96 @@
+package com.jeesite.modules.mes.web;
+
+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.MesMoldMaintenance;
+import com.jeesite.modules.mes.service.MesMoldMaintenanceService;
+
+/**
+ * 模具保养Controller
+ * @author mes
+ * @version 2026-06-26
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesMoldMaintenance")
+public class MesMoldMaintenanceController extends BaseController {
+
+	@Autowired
+	private MesMoldMaintenanceService mesMoldMaintenanceService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesMoldMaintenance get(String id, boolean isNewRecord) {
+		return mesMoldMaintenanceService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesMoldMaintenance:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesMoldMaintenance mesMoldMaintenance, Model model) {
+		model.addAttribute("mesMoldMaintenance", mesMoldMaintenance);
+		return "modules/mes/mesMoldMaintenanceList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesMoldMaintenance:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesMoldMaintenance> listData(MesMoldMaintenance mesMoldMaintenance, HttpServletRequest request, HttpServletResponse response) {
+		mesMoldMaintenance.setPage(new Page<>(request, response));
+		Page<MesMoldMaintenance> page = mesMoldMaintenanceService.findPage(mesMoldMaintenance);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesMoldMaintenance:view")
+	@RequestMapping(value = "form")
+	public String form(MesMoldMaintenance mesMoldMaintenance, Model model) {
+		model.addAttribute("mesMoldMaintenance", mesMoldMaintenance);
+		return "modules/mes/mesMoldMaintenanceForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesMoldMaintenance:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesMoldMaintenance mesMoldMaintenance) {
+		mesMoldMaintenanceService.save(mesMoldMaintenance);
+		return renderResult(Global.TRUE, text("保存模具保养记录成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesMoldMaintenance:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesMoldMaintenance mesMoldMaintenance) {
+		mesMoldMaintenanceService.delete(mesMoldMaintenance);
+		return renderResult(Global.TRUE, text("删除模具保养记录成功!"));
+	}
+
+}

+ 0 - 5
src/main/java/com/jeesite/modules/mes/web/MesQualityController.java

@@ -133,11 +133,6 @@ public class MesQualityController extends BaseController {
 	@RequiresPermissions("mes:mesQuality:view")
 	@RequestMapping(value = "detail")
 	public String detail(MesQuality mesQuality, Model model) {
-		String[] itemId = mesQuality.getItems().split(",");
-		MesRepairItems mesRepairItems = new MesRepairItems();
-		mesRepairItems.getSqlMap().getWhere().and("id", QueryType.IN,itemId);
-		List<MesRepairItems> lists = mesRepairItemsService.findList(mesRepairItems);
-		mesQuality.setMesRepairItemsList(lists);
 		model.addAttribute("mesQuality", mesQuality);
 		return "modules/mes/mesQualityInfo";
 	}

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

+ 106 - 0
src/main/resources/views/modules/mes/mesDeviceMaintenanceForm.html

@@ -0,0 +1,106 @@
+<% layout('/layouts/default.html', {title: '设备保养管理', libs: ['validate','dataGrid']}){ %>
+<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(mesDeviceMaintenance.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="${mesDeviceMaintenance}" action="${ctx}/mes/mesDeviceMaintenance/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="name" maxlength="255" class="form-control required"/>
+							</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="code" maxlength="100" class="form-control required"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<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:select path="maintenanceCategory" dictType="mes_device_maintenance_category" blankOption="true" class="form-control required"/>
+						</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:select path="maintenanceStatus" dictType="mes_device_maintenance_status" blankOption="true" class="form-control required"/>
+						</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-10">
+								<#form:textarea path="content" rows="4" 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-10">
+								<#form:textarea path="remarks" rows="3" 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:mesDeviceMaintenance: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>

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

@@ -0,0 +1,91 @@
+<% 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:mesDeviceMaintenance:edit')){ %>
+					<a href="${ctx}/mes/mesDeviceMaintenance/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="${mesDeviceMaintenance}" action="${ctx}/mes/mesDeviceMaintenance/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="name" 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="code" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('保养类别')}:</label>
+					<div class="control-inline">
+						<#form:select path="maintenanceCategory" dictType="mes_device_maintenance_category" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('保养人')}:</label>
+					<div class="control-inline">
+						<#form:input path="maintenanceUser" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('保养状态')}:</label>
+					<div class="control-inline">
+						<#form:select path="maintenanceStatus" dictType="mes_device_maintenance_status" 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:'name', index:'a.name', width:150, align:"center"},
+		{header:'${text("编号")}', name:'code', index:'a.code', width:150, align:"center"},
+		{header:'${text("保养类别")}', name:'maintenanceCategory', index:'a.maintenance_category', width:120, align:"center", formatter: function(val){
+			return js.getDictLabel(${@DictUtils.getDictListJson('mes_device_maintenance_category')}, val, '${text("未知")}', true);
+		}},
+		{header:'${text("保养日期")}', name:'maintenanceDate', index:'a.maintenance_date', width:150, align:"center"},
+		{header:'${text("保养内容")}', name:'content', index:'a.content', width:200, align:"center"},
+		{header:'${text("保养人")}', name:'maintenanceUser', index:'a.maintenance_user', width:120, align:"center"},
+		{header:'${text("保养状态")}', name:'maintenanceStatus', index:'a.maintenance_status', width:100, align:"center", formatter: function(val){
+			return js.getDictLabel(${@DictUtils.getDictListJson('mes_device_maintenance_status')}, val, '${text("未知")}', true);
+		}},
+		{header:'${text("备注")}', name:'remarks', index:'a.remarks', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesDeviceMaintenance:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesDeviceMaintenance/form?id='+row.id+'" class="btnList" title="${text("编辑设备保养记录")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesDeviceMaintenance/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>

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

@@ -0,0 +1,86 @@
+<% layout('/layouts/default.html', {title: '设备工位管理', libs: ['validate','dataGrid']}){ %>
+<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(mesDeviceWorkstation.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="${mesDeviceWorkstation}" action="${ctx}/mes/mesDeviceWorkstation/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="deviceName" maxlength="255" class="form-control required"/>
+							</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="deviceCode" maxlength="100" class="form-control required"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<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:select path="lineProcessId" items="${lineProcessList}" itemLabel="oprno" itemValue="id" blankOption="true" class="form-control required"/>
+							</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-10">
+								<#form:textarea path="remarks" rows="3" 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:mesDeviceWorkstation: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>

+ 66 - 0
src/main/resources/views/modules/mes/mesDeviceWorkstationList.html

@@ -0,0 +1,66 @@
+<% 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:mesDeviceWorkstation:edit')){ %>
+					<a href="${ctx}/mes/mesDeviceWorkstation/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="${mesDeviceWorkstation}" action="${ctx}/mes/mesDeviceWorkstation/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="deviceName" 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="deviceCode" maxlength="100" 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:'deviceName', index:'a.device_name', width:150, align:"center"},
+		{header:'${text("设备编号")}', name:'deviceCode', index:'a.device_code', width:150, align:"center"},
+		{header:'${text("所属工位号")}', name:'oprno', index:'b.oprno', width:150, align:"center"},
+		{header:'${text("所属工位名称")}', name:'workstationName', index:'b.title', width:150, align:"center"},
+		{header:'${text("备注")}', name:'remarks', index:'a.remarks', width:200, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesDeviceWorkstation:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesDeviceWorkstation/form?id='+row.id+'" class="btnList" title="${text("编辑设备工位记录")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesDeviceWorkstation/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>

+ 93 - 0
src/main/resources/views/modules/mes/mesFlawRecordInfo.html

@@ -0,0 +1,93 @@
+<% layout('/layouts/default.html', {title: '探伤记录详情', libs: ['dataGrid']}){ %>
+<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('探伤记录详情')}
+			</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>
+		<div class="box-body">
+			<div class="form-unit">${text('基本信息')}</div>
+			<table class="table table-bordered">
+				<tr>
+					<th class="mpc-header">工件码</th>
+					<td>${mesProductRecord.sn}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">工艺号</th>
+					<td>${mesProductRecord.craft}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">工件类型</th>
+					<td>${mesProductRecord.cateSn}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">产线编号</th>
+					<td>${mesProductRecord.lineSn}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">绑定内容</th>
+					<td>${mesProductRecord.materielSn}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">结果</th>
+					<td>${mesProductRecord.content}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">备注</th>
+					<td>${mesProductRecord.remark}</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">创建时间</th>
+					<td>${@DateUtils.formatDateTime(mesProductRecord.createDate) }</td>
+				</tr>
+				<tr>
+					<th class="mpc-header">更新时间</th>
+					<td>${@DateUtils.formatDateTime(mesProductRecord.updateDate) }</td>
+				</tr>
+			</table>
+
+			<div class="form-unit">${text('探伤图片')}</div>
+			<div id="imageContainer" style="margin-top:10px;">
+				<p id="noImageTip" class="text-muted" style="padding:10px;">暂无探伤图片</p>
+			</div>
+		</div>
+		<div class="box-footer">
+			<div class="row">
+				<div class="col-sm-offset-2 col-sm-10">
+					<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>
+	</div>
+</div>
+<% } %>
+<script>
+$(function(){
+	var sn = '${mesProductRecord.sn}';
+	if(!sn){
+		return;
+	}
+	$.get('${ctx}/mes/mesFlawRecord/imageList', {sn: sn}, function(list){
+		if(!list || list.length === 0){
+			return;
+		}
+		$('#noImageTip').remove();
+		var html = '<div style="display:flex;flex-wrap:wrap;gap:15px;padding:10px;">';
+		for(var i = 0; i < list.length; i++){
+			var imgUrl = '${ctx}/mes/mesFlawRecord/viewImage?sn=' + encodeURIComponent(sn) + '&fileName=' + encodeURIComponent(list[i].name);
+			html += '<div style="text-align:center;">';
+			html += '<a href="' + imgUrl + '" target="_blank" style="display:block;">';
+			html += '<img src="' + imgUrl + '" style="max-width:300px;max-height:225px;border:1px solid #ddd;border-radius:4px;padding:3px;" />';
+			html += '</a>';
+			html += '<div style="margin-top:5px;font-size:12px;color:#666;word-break:break-all;max-width:300px;">' + list[i].name + '</div>';
+			html += '</div>';
+		}
+		html += '</div>';
+		$('#imageContainer').html(html);
+	});
+});
+</script>

+ 121 - 0
src/main/resources/views/modules/mes/mesFlawRecordList.html

@@ -0,0 +1,121 @@
+<% 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>
+				<a href="#" class="btn btn-default" id="btnExport"><i class="glyphicon glyphicon-export"></i> 导出</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="${mesProductRecord}" action="${ctx}/mes/mesFlawRecord/listData" method="post" class="form-inline hide"
+					data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
+				<#form:hidden path="pid"/>
+				<#form:hidden path="oprno" value="OP070"/>
+				<div class="form-group">
+					<label class="control-label">${text('工件码')}:</label>
+					<div class="control-inline">
+						<#form:input path="sn" maxlength="50" class="form-control width-sn width-260"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工艺号')}:</label>
+					<div class="control-inline">
+						<#form:input path="craft" maxlength="30" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工件类型')}:</label>
+					<div class="control-inline">
+						<#form:input path="cateSn" maxlength="30" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('绑定内容')}:</label>
+					<div class="control-inline">
+						<#form:input path="materielSn" maxlength="50" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('结果')}:</label>
+					<div class="control-inline">
+						<#form:input path="content" maxlength="1000" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('加工状态')}:</label>
+					<div class="control-inline" style="width: 80px">
+						<#form:select path="processState" dictType="mes_product_record_process_state" blankOption="true" class="form-control width-120" />
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('更新日期')}:</label>
+					<div class="control-inline">
+						<#form:input path="updateDate_gte" readonly="true" maxlength="20" class="form-control laydate width-datetime"
+						dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" data-done="updateDate_lte.click()"/>
+						&nbsp;-&nbsp;
+						<#form:input path="updateDate_lte" 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">
+					<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:280, align:"center", frozen:true,  formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesFlawRecord/info?id='+row.id+'" class="btnList" data-title="${text("查看探伤记录")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("工艺号")}', name:'craft', index:'a.craft', width:90, align:"center"},
+		{header:'${text("报文名称")}', name:'title', index:'b.title', width:180, align:"center",sortable:false},
+		{header:'${text("结果")}', name:'content', index:'a.content', width:80, align:"center"},
+		{header:'${text("绑定内容")}', name:'materielSn', index:'a.materiel_sn', width:180, align:"center"},
+		{header:'${text("工件类型")}', name:'cateSn', index:'a.cate_sn', width:90, align:"center"},
+		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:90, align:"center"},
+		{header:'${text("备注")}', name:'remark', index:'a.remark', width:150, align:"center"},
+		{header:'${text("来源")}', name:'source', index:'a.source', width:150, align:"center", formatter: function(val, obj, row, act){
+				return js.getDictLabel(${@DictUtils.getDictListJson('mes_product_modify_source')}, val, '${text("未知")}', true);
+			}},
+		{header:'${text("更新日期")}', name:'updateDate', index:'a.update_date', width:160, align:"center",frozen:true },
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesProductRecord:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesProductRecord/edit?id='+row.id+'" class="btnList" title="${text("编辑")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+			//<% } %>
+				actions.push('<a href="${ctx}/mes/mesFlawRecord/info?id='+row.id+'" class="btnList" title="${text("查看探伤记录")}"><i class="fa fa-fw fa-eye"></i></a>&nbsp;');
+				//<% if(hasPermi('mes:mesProductRecord:reload')){ %>
+				actions.push('<a href="${ctx}/mes/mesProductRecord/cz?id='+row.id+'" class="btnList" title="重置" data-confirm="确认要重置该数据吗?"><i class="fa  fa-refresh"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesProductRecord/ok?id='+row.id+'" class="btnList" title="OK" data-confirm="确认要该记录OK吗?"><i class="fa fa-check-circle-o"></i></a>&nbsp;');
+				//<% } %>
+				return actions.join('');
+		}}
+	],
+	frozenCols: true,
+	// 加载成功后执行事件
+	ajaxSuccess: function(data){
+		
+	}
+});
+
+$('#btnExport').click(function(){
+	js.ajaxSubmitForm($('#searchForm'), {
+		url:'${ctx}/mes/mesFlawRecord/exportData',
+		downloadFile:true
+	});
+});
+</script>

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

@@ -0,0 +1,86 @@
+<% layout('/layouts/default.html', {title: '保养记录管理', libs: ['validate','dataGrid']}){ %>
+<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(mesMaintenanceRecord.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="${mesMaintenanceRecord}" action="${ctx}/mes/mesMaintenanceRecord/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:select path="maintenanceCategory" dictType="mes_maintenance_category" blankOption="true" class="form-control required"/>
+							</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="moldDevice" maxlength="255" class="form-control required"/>
+							</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-10">
+								<#form:textarea path="content" rows="4" 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-10">
+								<#form:textarea path="remarks" rows="3" 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:mesMaintenanceRecord: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>

+ 68 - 0
src/main/resources/views/modules/mes/mesMaintenanceRecordList.html

@@ -0,0 +1,68 @@
+<% 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:mesMaintenanceRecord:edit')){ %>
+					<a href="${ctx}/mes/mesMaintenanceRecord/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="${mesMaintenanceRecord}" action="${ctx}/mes/mesMaintenanceRecord/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:select path="maintenanceCategory" dictType="mes_maintenance_category" blankOption="true" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('模具设备')}:</label>
+					<div class="control-inline">
+						<#form:input path="moldDevice" 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>
+			</#form:form>
+			<table id="dataGrid"></table>
+			<div id="dataGridPage"></div>
+		</div>
+	</div>
+</div>
+<% } %>
+<script>
+// 初始化DataGrid对象
+$('#dataGrid').dataGrid({
+	searchForm: $("#searchForm"),
+	columnModel: [
+		{header:'${text("保养类别")}', name:'maintenanceCategory', index:'a.maintenance_category', width:120, align:"center", formatter: function(val){
+			return js.getDictLabel(${@DictUtils.getDictListJson('mes_maintenance_category')}, val, '${text("未知")}', true);
+		}},
+		{header:'${text("保养内容")}', name:'content', index:'a.content', width:250, align:"center"},
+		{header:'${text("模具设备")}', name:'moldDevice', index:'a.mold_device', width:150, align:"center"},
+		{header:'${text("保养时间")}', name:'maintenanceDate', index:'a.maintenance_date', width:150, align:"center"},
+		{header:'${text("备注")}', name:'remarks', index:'a.remarks', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesMaintenanceRecord:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesMaintenanceRecord/form?id='+row.id+'" class="btnList" title="${text("编辑保养记录")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesMaintenanceRecord/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>

+ 97 - 0
src/main/resources/views/modules/mes/mesMoldMaintenanceForm.html

@@ -0,0 +1,97 @@
+<% layout('/layouts/default.html', {title: '模具保养管理', libs: ['validate','dataGrid']}){ %>
+<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(mesMoldMaintenance.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="${mesMoldMaintenance}" action="${ctx}/mes/mesMoldMaintenance/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="name" maxlength="255" class="form-control required"/>
+							</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="code" maxlength="100" class="form-control required"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<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:select path="maintenanceStatus" dictType="mes_mold_maintenance_status" blankOption="true" class="form-control required"/>
+						</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-10">
+								<#form:textarea path="content" rows="4" 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-10">
+								<#form:textarea path="remarks" rows="3" 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:mesMoldMaintenance: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>

+ 82 - 0
src/main/resources/views/modules/mes/mesMoldMaintenanceList.html

@@ -0,0 +1,82 @@
+<% 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:mesMoldMaintenance:edit')){ %>
+					<a href="${ctx}/mes/mesMoldMaintenance/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="${mesMoldMaintenance}" action="${ctx}/mes/mesMoldMaintenance/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="name" 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="code" 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="maintenanceUser" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('保养状态')}:</label>
+					<div class="control-inline">
+						<#form:select path="maintenanceStatus" dictType="mes_mold_maintenance_status" 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:'name', index:'a.name', width:150, align:"center"},
+		{header:'${text("编号")}', name:'code', index:'a.code', width:150, align:"center"},
+		{header:'${text("保养日期")}', name:'maintenanceDate', index:'a.maintenance_date', width:150, align:"center"},
+		{header:'${text("保养内容")}', name:'content', index:'a.content', width:200, align:"center"},
+		{header:'${text("保养人")}', name:'maintenanceUser', index:'a.maintenance_user', width:120, align:"center"},
+		{header:'${text("保养状态")}', name:'maintenanceStatus', index:'a.maintenance_status', width:100, align:"center", formatter: function(val){
+			return js.getDictLabel(${@DictUtils.getDictListJson('mes_mold_maintenance_status')}, val, '${text("未知")}', true);
+		}},
+		{header:'${text("备注")}', name:'remarks', index:'a.remarks', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesMoldMaintenance:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesMoldMaintenance/form?id='+row.id+'" class="btnList" title="${text("编辑模具保养记录")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesMoldMaintenance/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>