ソースを参照

Merge branch 'master' of http://121.36.46.135:3000/mes-ljz/mescloud

sunxianglong 4 ヶ月 前
親
コミット
914c6448ce
22 ファイル変更、680 行追加、389 行削除
  1. 46 14
      src/main/java/com/jeesite/modules/mes/entity/MesMaterialCheck.java
  2. 33 15
      src/main/java/com/jeesite/modules/mes/entity/MesMaterialCheckItems.java
  3. 57 30
      src/main/java/com/jeesite/modules/mes/entity/MesMaterialCheckRecordItems.java
  4. 29 0
      src/main/java/com/jeesite/modules/mes/entity/MesMaterialReport.java
  5. 1 4
      src/main/java/com/jeesite/modules/mes/service/MesMaterialCheckService.java
  6. 101 20
      src/main/java/com/jeesite/modules/mes/web/MesFlawRecordController.java
  7. 1 25
      src/main/java/com/jeesite/modules/mes/web/MesMaterialBlpRecordController.java
  8. 1 88
      src/main/java/com/jeesite/modules/mes/web/MesMaterialCheckRecordController.java
  9. 0 24
      src/main/java/com/jeesite/modules/mes/web/MesMaterialThRecordController.java
  10. 5 2
      src/main/resources/views/modules/mes/mesFlawRecordInfo.html
  11. 7 9
      src/main/resources/views/modules/mes/mesMaterialBlpRecordInfo.html
  12. 48 22
      src/main/resources/views/modules/mes/mesMaterialCheckForm.html
  13. 21 10
      src/main/resources/views/modules/mes/mesMaterialCheckItemsForm.html
  14. 7 12
      src/main/resources/views/modules/mes/mesMaterialCheckItemsList.html
  15. 12 12
      src/main/resources/views/modules/mes/mesMaterialCheckList.html
  16. 128 38
      src/main/resources/views/modules/mes/mesMaterialCheckRecordForm.html
  17. 84 30
      src/main/resources/views/modules/mes/mesMaterialCheckRecordForm2.html
  18. 59 12
      src/main/resources/views/modules/mes/mesMaterialCheckRecordFormEdit.html
  19. 22 9
      src/main/resources/views/modules/mes/mesMaterialCheckRecordInfo.html
  20. 2 2
      src/main/resources/views/modules/mes/mesMaterialCheckRecordList.html
  21. 10 3
      src/main/resources/views/modules/mes/mesMaterialReportList.html
  22. 6 8
      src/main/resources/views/modules/mes/mesMaterialThRecordInfo.html

+ 46 - 14
src/main/java/com/jeesite/modules/mes/entity/MesMaterialCheck.java

@@ -2,14 +2,11 @@ package com.jeesite.modules.mes.entity;
 
 import javax.validation.constraints.Size;
 
-import com.jeesite.common.collect.ListUtils;
 import com.jeesite.common.entity.DataEntity;
 import com.jeesite.common.mybatis.annotation.Column;
 import com.jeesite.common.mybatis.annotation.Table;
 import com.jeesite.common.mybatis.mapper.query.QueryType;
 
-import java.util.List;
-
 /**
  * 来料检查内容表Entity
  * @author mes
@@ -18,7 +15,11 @@ import java.util.List;
 @Table(name="mes_material_check", alias="a", label="来料检查内容表信息", columns={
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="org", attrName="org", label="项目"),
+		@Column(name="serial_no",attrName = "serialNo",label="编号"),
 		@Column(name="content", attrName="content", label="检查内容"),
+		@Column(name="check_tool", attrName="checkTool", label="检查工具"),
+		@Column(name="check_frequency", attrName="checkFrequency", label="检查频率"),
+		@Column(name="measure_type", attrName="measureType", label="测量类型"),
 		@Column(name="status", attrName="status", label="状态", isUpdate=false),
 		@Column(name="material_id", attrName="materialId"),
 		@Column(name="type", attrName="type"),
@@ -35,12 +36,25 @@ public class MesMaterialCheck extends DataEntity<MesMaterialCheck> {
 	private static final long serialVersionUID = 1L;
 	private String org;		// 项目
 	private String content;		// 检查内容
+	private String checkTool;		// 检查工具
+	private String checkFrequency;		// 检查频率
 	private String materialId;
 	private String orgName;
-	private List img = ListUtils.newArrayList();
 	private String type;
 	private String minValue;		// 最小值
-	private String maxValue;		// 最大值
+	private String maxValue;
+	private String measureType;// 最大值
+
+	public String getSerialNo() {
+		return serialNo;
+	}
+
+	public void setSerialNo(String serialNo) {
+		this.serialNo = serialNo;
+	}
+
+	private String serialNo;        // 编号
+
 
 	public MesMaterialCheck() {
 		this(null);
@@ -67,6 +81,32 @@ public class MesMaterialCheck extends DataEntity<MesMaterialCheck> {
 		this.content = content;
 	}
 
+	@Size(min=0, max=255, message="检查工具长度不能超过 255 个字符")
+	public String getCheckTool() {
+		return checkTool;
+	}
+
+	public void setCheckTool(String checkTool) {
+		this.checkTool = checkTool;
+	}
+
+	@Size(min=0, max=255, message="检查频率长度不能超过 255 个字符")
+	public String getCheckFrequency() {
+		return checkFrequency;
+	}
+
+	public void setCheckFrequency(String checkFrequency) {
+		this.checkFrequency = checkFrequency;
+	}
+
+	public String getMeasureType() {
+		return measureType;
+	}
+
+	public void setMeasureType(String measureType) {
+		this.measureType = measureType;
+	}
+
 	public String getMaterialId() {
 		return materialId;
 	}
@@ -83,14 +123,6 @@ public class MesMaterialCheck extends DataEntity<MesMaterialCheck> {
 		this.orgName = orgName;
 	}
 
-	public List getImg() {
-		return img;
-	}
-
-	public void setImg(List img) {
-		this.img = img;
-	}
-
 	public String getType() {
 		return type;
 	}
@@ -114,4 +146,4 @@ public class MesMaterialCheck extends DataEntity<MesMaterialCheck> {
 	public void setMaxValue(String maxValue) {
 		this.maxValue = maxValue;
 	}
-}
+}

+ 33 - 15
src/main/java/com/jeesite/modules/mes/entity/MesMaterialCheckItems.java

@@ -2,14 +2,10 @@ package com.jeesite.modules.mes.entity;
 
 import javax.validation.constraints.Size;
 
-import com.jeesite.common.collect.ListUtils;
 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;
-
-import java.util.List;
 
 /**
  * 物料检查内容Entity
@@ -20,17 +16,20 @@ import java.util.List;
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="material_id", attrName="materialId", label="物料id"),
 		@Column(name="material_check_id", attrName="materialCheckId", label="物料检查内容id"),
+		@Column(name="serial_no", attrName="serialNo", label="编号"),
 	},
 		joinTable={
 				@JoinTable(type= JoinTable.Type.JOIN, entity=MesMaterial.class, attrName="this", alias="b",
 						on="b.id = a.material_id",
 						columns={
-								@Column(name="title", attrName="materialTitle", label="工序名称"),
+								@Column(name="title", attrName="materialTitle", label="物料名称"),
 						}),
 				@JoinTable(type= JoinTable.Type.JOIN, entity=MesMaterialCheck.class, attrName="this", alias="c",
 						on="c.id = a.material_check_id",
 						columns={
 								@Column(name="content", attrName="materialCheckTitle", label="检查内容"),
+								@Column(name="check_tool", attrName="checkTool", label="检查工具"),
+								@Column(name="check_frequency", attrName="checkFrequency", label="检查频率"),
 								@Column(name="org", attrName="org", label="项目"),
 						}),
 		},
@@ -43,9 +42,12 @@ public class MesMaterialCheckItems extends DataEntity<MesMaterialCheckItems> {
 	private String materialCheckId;		// 物料检查内容id
 	private String materialTitle;
 	private String materialCheckTitle;
+	private String checkTool;
+	private String checkFrequency;
+	private String measureType;
 	private String org;
 	private String orgName;
-	private List img = ListUtils.newArrayList();
+	private String serialNo;
 
 	public MesMaterialCheckItems() {
 		this(null);
@@ -73,6 +75,14 @@ public class MesMaterialCheckItems extends DataEntity<MesMaterialCheckItems> {
 		this.materialCheckId = materialCheckId;
 	}
 
+	public String getSerialNo() {
+		return serialNo;
+	}
+
+	public void setSerialNo(String serialNo) {
+		this.serialNo = serialNo;
+	}
+
 	public String getMaterialTitle() {
 		return materialTitle;
 	}
@@ -89,6 +99,22 @@ public class MesMaterialCheckItems extends DataEntity<MesMaterialCheckItems> {
 		this.materialCheckTitle = materialCheckTitle;
 	}
 
+	public String getCheckTool() {
+		return checkTool;
+	}
+
+	public void setCheckTool(String checkTool) {
+		this.checkTool = checkTool;
+	}
+
+	public String getCheckFrequency() {
+		return checkFrequency;
+	}
+
+	public void setCheckFrequency(String checkFrequency) {
+		this.checkFrequency = checkFrequency;
+	}
+
 	public String getOrg() {
 		return org;
 	}
@@ -104,12 +130,4 @@ public class MesMaterialCheckItems extends DataEntity<MesMaterialCheckItems> {
 	public void setOrgName(String orgName) {
 		this.orgName = orgName;
 	}
-
-	public List getImg() {
-		return img;
-	}
-
-	public void setImg(List img) {
-		this.img = img;
-	}
-}
+}

+ 57 - 30
src/main/java/com/jeesite/modules/mes/entity/MesMaterialCheckRecordItems.java

@@ -2,14 +2,10 @@ package com.jeesite.modules.mes.entity;
 
 import javax.validation.constraints.Size;
 
-import com.jeesite.common.collect.ListUtils;
 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;
-
-import java.util.List;
 
 /**
  * 来料检查记录详细表Entity
@@ -20,21 +16,24 @@ import java.util.List;
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="record_id", attrName="recordId", label="检查记录id"),
 		@Column(name="check_id", attrName="checkId", label="检查内容id"),
-		@Column(name="a1", attrName="a1", label="实测值1"),
-		@Column(name="a2", attrName="a2", label="实测值2"),
-		@Column(name="a3", attrName="a3", label="实测值3"),
-		@Column(name="a4", attrName="a4", label="实测值4"),
-		@Column(name="a5", attrName="a5", label="实测值5"),
+		@Column(name="a1", attrName="a1", label="实测值"),
+		@Column(name="a2", attrName="a2", label="实测值"),
+		@Column(name="a3", attrName="a3", label="实测值"),
+		@Column(name="a4", attrName="a4", label="实测值"),
+		@Column(name="a5", attrName="a5", label="实测值"),
 		@Column(name="result", attrName="result", label="结果"),
+		@Column(name="conclusion_content", attrName="conclusionContent", label="结论内容"),
 	},
 		joinTable={
-
 				@JoinTable(type= JoinTable.Type.JOIN, entity=MesMaterialCheck.class, attrName="this", alias="c",
-						on="c.id = a.check_id",
-						columns={
-								@Column(name="content", attrName="materialCheckTitle", label="检查内容"),
-								@Column(name="org", attrName="org", label="项目"),
-						}),
+				on="c.id = a.check_id",
+				columns={
+						@Column(name="content", attrName="materialCheckTitle", label="检查内容"),
+						@Column(name="check_tool", attrName="checkTool", label="检查工具"),
+						@Column(name="check_frequency", attrName="checkFrequency", label="检查频率"),
+						@Column(name="measure_type", attrName="measureType", label="测量类型"),
+						@Column(name="org", attrName="org", label="项目"),
+				}),
 		},
 		orderBy="a.id DESC"
 )
@@ -43,16 +42,20 @@ public class MesMaterialCheckRecordItems extends DataEntity<MesMaterialCheckReco
 	private static final long serialVersionUID = 1L;
 	private String recordId;		// 检查记录id
 	private String checkId;		// 检查内容id
-	private String a1;		// 实测值1
-	private String a2;		// 实测值2
-	private String a3;		// 实测值3
-	private String a4;		// 实测值4
-	private String a5;		// 实测值5
+	private String a1;		// 实测值
+	private String a2;		// 实测值
+	private String a3;		// 实测值
+	private String a4;		// 实测值
+	private String a5;		// 实测值
 	private String materialCheckTitle;
+	private String conclusionContent;
+	private String checkTool;
+	private String checkFrequency;
+	private String measureType;
 	private String org;
 	private String orgName;
 	private String result;
-	private List img = ListUtils.newArrayList();
+
 	public MesMaterialCheckRecordItems() {
 		this(null);
 	}
@@ -127,6 +130,38 @@ public class MesMaterialCheckRecordItems extends DataEntity<MesMaterialCheckReco
 		this.materialCheckTitle = materialCheckTitle;
 	}
 
+	public String getConclusionContent() {
+		return conclusionContent;
+	}
+
+	public void setConclusionContent(String conclusionContent) {
+		this.conclusionContent = conclusionContent;
+	}
+
+	public String getCheckTool() {
+		return checkTool;
+	}
+
+	public void setCheckTool(String checkTool) {
+		this.checkTool = checkTool;
+	}
+
+	public String getCheckFrequency() {
+		return checkFrequency;
+	}
+
+	public void setCheckFrequency(String checkFrequency) {
+		this.checkFrequency = checkFrequency;
+	}
+
+	public String getMeasureType() {
+		return measureType;
+	}
+
+	public void setMeasureType(String measureType) {
+		this.measureType = measureType;
+	}
+
 	public String getOrg() {
 		return org;
 	}
@@ -143,14 +178,6 @@ public class MesMaterialCheckRecordItems extends DataEntity<MesMaterialCheckReco
 		this.orgName = orgName;
 	}
 
-	public List getImg() {
-		return img;
-	}
-
-	public void setImg(List img) {
-		this.img = img;
-	}
-
 	public String getResult() {
 		return result;
 	}
@@ -158,4 +185,4 @@ public class MesMaterialCheckRecordItems extends DataEntity<MesMaterialCheckReco
 	public void setResult(String result) {
 		this.result = result;
 	}
-}
+}

+ 29 - 0
src/main/java/com/jeesite/modules/mes/entity/MesMaterialReport.java

@@ -39,6 +39,16 @@ import java.util.Date;
 				columns={
 						@Column(name="title", attrName="title", label="名称"),
 				}),
+		@JoinTable(type= JoinTable.Type.LEFT_JOIN, entity=MesMaterialCheckRecord.class, attrName="this", alias="c",
+				on="c.sn = a.sn",
+				columns={
+						@Column(name="state", attrName="checkResult", label="检查结果"),
+				}),
+		@JoinTable(type= JoinTable.Type.LEFT_JOIN, entity=MesMaterial.class, attrName="this", alias="d",
+				on="d.erp_sn = SUBSTRING_INDEX(a.sn, '_', 1)",
+				columns={
+						@Column(name="title", attrName="productName", label="产品名称"),
+				}),
 },orderBy="a.update_date DESC"
 )
 public class MesMaterialReport extends DataEntity<MesMaterialReport> {
@@ -53,10 +63,13 @@ public class MesMaterialReport extends DataEntity<MesMaterialReport> {
 	private String remark;		// 备注
 
 	private String title;  //物料名称
+	private String checkResult;  //检查结果
+	private String productName;  //产品名称
 	@ExcelFields({
 //		@ExcelField(title="id", attrName="id", align=Align.CENTER, sort=10),
 //		@ExcelField(title="物料id", attrName="materialId", align=Align.CENTER, sort=20),
 		@ExcelField(title="来料码", attrName="sn", align=Align.CENTER, sort=30),
+		@ExcelField(title="产品名称", attrName="productName", align=Align.CENTER, sort=35),
 		@ExcelField(title="发货日期", attrName="faDate", align=Align.CENTER, sort=40, dataFormat="yyyy-MM-dd hh:mm"),
 		@ExcelField(title="发货数量", attrName="faNums", align=Align.CENTER, sort=50),
 		@ExcelField(title="实际数量", attrName="nums", align=Align.CENTER, sort=50),
@@ -176,4 +189,20 @@ public class MesMaterialReport extends DataEntity<MesMaterialReport> {
 	public void setTitle(String title) {
 		this.title = title;
 	}
+
+	public String getCheckResult() {
+		return checkResult;
+	}
+
+	public void setCheckResult(String checkResult) {
+		this.checkResult = checkResult;
+	}
+
+	public String getProductName() {
+		return productName;
+	}
+
+	public void setProductName(String productName) {
+		this.productName = productName;
+	}
 }

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

@@ -9,7 +9,6 @@ import com.jeesite.common.lang.StringUtils;
 import com.jeesite.common.service.CrudService;
 import com.jeesite.modules.mes.entity.MesMaterialCheck;
 import com.jeesite.modules.mes.dao.MesMaterialCheckDao;
-import com.jeesite.modules.file.utils.FileUploadUtils;
 
 /**
  * 来料检查内容表Service
@@ -64,8 +63,6 @@ public class MesMaterialCheckService extends CrudService<MesMaterialCheckDao, Me
 			mesMaterialCheck.setMaxValue(null);
 		}
 		super.save(mesMaterialCheck);
-		// 保存上传图片
-		FileUploadUtils.saveFileUpload(mesMaterialCheck, mesMaterialCheck.getId(), "mesMaterialCheck_image");
 	}
 	
 	/**
@@ -88,4 +85,4 @@ public class MesMaterialCheckService extends CrudService<MesMaterialCheckDao, Me
 		super.delete(mesMaterialCheck);
 	}
 	
-}
+}

+ 101 - 20
src/main/java/com/jeesite/modules/mes/web/MesFlawRecordController.java

@@ -4,10 +4,14 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -39,6 +43,13 @@ import com.jeesite.modules.mes.util.CommonUitl;
 @RequestMapping(value = "${adminPath}/mes/mesFlawRecord")
 public class MesFlawRecordController extends BaseController {
 
+	/** 探伤照片根目录 */
+	private static final String PHOTO_BASE_DIR = "D:/";
+	/** 三级文件夹下的子文件夹:A、B */
+	private static final String[] SUB_FOLDERS = {"A", "B"};
+	/** dirKey 格式校验:年/月/日/A 或 B,防止路径穿越 */
+	private static final Pattern DIR_KEY_PATTERN = Pattern.compile("^\\d{4}/\\d{2}/\\d{2}/[AB]$");
+
 	@Autowired
 	private MesProductRecordService mesProductRecordService;
 
@@ -130,32 +141,35 @@ public class MesFlawRecordController extends BaseController {
 
 	/**
 	 * 获取工件码对应的jpg图片列表
+	 * 目录结构:D:/{年}/{月}/{日}/{A|B}/{工件码}/
+	 * 为防止漏搜索,按更新日期查找前一天、当天、后一天对应的 A、B 文件夹
 	 */
 	@RequiresPermissions("mes:mesProductRecord:view")
 	@RequestMapping(value = "imageList")
 	@ResponseBody
-	public List<Map<String, String>> imageList(String sn) {
+	public List<Map<String, String>> imageList(String sn, String updateDate) {
 		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);
+		Date date = parseDate(updateDate);
+		List<File> dirs = findPhotoDirs(sn, date);
+		for (File dir : dirs) {
+			File[] files = dir.listFiles((d, name) -> {
+				String lower = name.toLowerCase();
+				return lower.endsWith(".jpg") || lower.endsWith(".jpeg");
+			});
+			if (files == null) {
+				continue;
+			}
+			String dirKey = getDirKey(dir);
+			for (File file : files) {
+				Map<String, String> map = new HashMap<>();
+				map.put("name", file.getName());
+				map.put("size", String.valueOf(file.length()));
+				map.put("dir", dirKey);
+				result.add(map);
+			}
 		}
 		return result;
 	}
@@ -165,7 +179,7 @@ public class MesFlawRecordController extends BaseController {
 	 */
 	@RequiresPermissions("mes:mesProductRecord:view")
 	@RequestMapping(value = "viewImage")
-	public void viewImage(String sn, String fileName, HttpServletResponse response) {
+	public void viewImage(String sn, String fileName, String dir, HttpServletResponse response) {
 		if (sn == null || sn.trim().isEmpty() || fileName == null || fileName.trim().isEmpty()) {
 			return;
 		}
@@ -173,11 +187,14 @@ public class MesFlawRecordController extends BaseController {
 		if (sn.contains("..") || fileName.contains("..") || fileName.contains("/") || fileName.contains("\\")) {
 			return;
 		}
+		if (dir == null || !DIR_KEY_PATTERN.matcher(dir).matches()) {
+			return;
+		}
 		String lower = fileName.toLowerCase();
 		if (!lower.endsWith(".jpg") && !lower.endsWith(".jpeg")) {
 			return;
 		}
-		File file = new File("D:/mescloud/" + sn + "/" + fileName);
+		File file = new File(PHOTO_BASE_DIR + dir + "/" + sn + "/" + fileName);
 		if (!file.exists() || !file.isFile()) {
 			return;
 		}
@@ -195,4 +212,68 @@ public class MesFlawRecordController extends BaseController {
 			logger.error("输出探伤图片失败: " + file.getPath(), e);
 		}
 	}
+
+	/**
+	 * 解析日期字符串,支持 yyyy-MM-dd HH:mm:ss 和 yyyy-MM-dd 两种格式
+	 */
+	private Date parseDate(String dateStr) {
+		if (dateStr == null || dateStr.trim().isEmpty()) {
+			return null;
+		}
+		String[] formats = {"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd"};
+		for (String fmt : formats) {
+			try {
+				return new SimpleDateFormat(fmt).parse(dateStr);
+			} catch (Exception e) {
+				// 尝试下一种格式
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 查找工件码对应的所有探伤照片目录
+	 * 根据更新日期搜索前一天、当天、后一天对应的 A、B 文件夹
+	 * 目录结构:D:/{年}/{月}/{日}/{A|B}/{工件码}/
+	 */
+	private List<File> findPhotoDirs(String sn, Date updateDate) {
+		List<File> dirs = new ArrayList<>();
+		if (sn == null || sn.trim().isEmpty() || updateDate == null) {
+			return dirs;
+		}
+		// 安全检查:防止路径穿越
+		if (sn.contains("..") || sn.contains("/") || sn.contains("\\")) {
+			return dirs;
+		}
+		// 前一天、当天、后一天
+		for (int offset = -1; offset <= 1; offset++) {
+			Calendar cal = Calendar.getInstance();
+			cal.setTime(updateDate);
+			cal.add(Calendar.DAY_OF_MONTH, offset);
+			String datePath = String.format("%04d/%02d/%02d",
+					cal.get(Calendar.YEAR),
+					cal.get(Calendar.MONTH) + 1,
+					cal.get(Calendar.DAY_OF_MONTH));
+			for (String sub : SUB_FOLDERS) {
+				File dir = new File(PHOTO_BASE_DIR + datePath + "/" + sub + "/" + sn);
+				if (dir.exists() && dir.isDirectory()) {
+					dirs.add(dir);
+				}
+			}
+		}
+		return dirs;
+	}
+
+	/**
+	 * 根据目录计算 dirKey: 年/月/日/A 或 B
+	 * dir = D:/2026/07/03/A/{工件码} -> dirKey = 2026/07/03/A
+	 */
+	private String getDirKey(File dir) {
+		File subFolder = dir.getParentFile();   // A 或 B
+		File dayFolder = subFolder.getParentFile();   // 日
+		File monthFolder = dayFolder.getParentFile();   // 月
+		File yearFolder = monthFolder.getParentFile(); // 年
+		return yearFolder.getName() + "/" + monthFolder.getName() + "/"
+				+ dayFolder.getName() + "/" + subFolder.getName();
+	}
 }

+ 1 - 25
src/main/java/com/jeesite/modules/mes/web/MesMaterialBlpRecordController.java

@@ -2,14 +2,10 @@ package com.jeesite.modules.mes.web;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.jeesite.common.collect.ListUtils;
-import com.jeesite.common.collect.MapUtils;
-import com.jeesite.modules.file.entity.FileUpload;
-import com.jeesite.modules.file.service.FileUploadService;
 import com.jeesite.modules.mes.dao.MesMaterialCheckRecordDao;
 import com.jeesite.modules.mes.entity.*;
 import com.jeesite.modules.mes.service.*;
@@ -49,8 +45,6 @@ public class MesMaterialBlpRecordController extends BaseController {
 	private MesApplyService mesApplyService;
 	@Autowired
 	private DictDataService dictDataService;
-	@Autowired
-	private FileUploadService fileUploadService;
 	/**
 	 * 获取数据
 	 */
@@ -105,8 +99,6 @@ public class MesMaterialBlpRecordController extends BaseController {
 
 		List<MesMaterialCheckRecordItems> mitList = mesMaterialCheckRecordItemsService.findList(mci);
 
-		String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
-
 		for (MesMaterialCheckRecordItems item:mitList){
 			DictData dictData = new DictData();
 			dictData.setDictType("mes_material_org");
@@ -115,22 +107,6 @@ public class MesMaterialBlpRecordController extends BaseController {
 			if(!ListUtils.isEmpty(dic)){
 				item.setOrgName(dic.get(0).getDictLabel());
 			}
-
-			FileUpload fu = new FileUpload();
-			fu.setBizKey(item.getCheckId());
-			fu.setBizType("mesMaterialCheck_image");
-			List<FileUpload> finfo = fileUploadService.findList(fu);
-			List imgList = ListUtils.newArrayList();
-			for (FileUpload fi:finfo){
-				Map<String, Object> map1 = MapUtils.newHashMap();
-				map1.put("id",fi.getFileEntity().getFileId());
-				map1.put("url",host + fi.getFileUrl());
-				map1.put("name",fi.getFileName());
-				map1.put("size",fi.getFileEntity().getFileSize());
-
-				imgList.add(map1);
-			}
-			item.setImg(imgList);
 		}
 
 		model.addAttribute("mitList", mitList);
@@ -192,4 +168,4 @@ public class MesMaterialBlpRecordController extends BaseController {
 		mesMaterialBlpRecordService.dealsave(mesMaterialBlpRecord,state,remark);
 		return renderResult(Global.TRUE, text("操作成功!"));
 	}
-}
+}

+ 1 - 88
src/main/java/com/jeesite/modules/mes/web/MesMaterialCheckRecordController.java

@@ -14,8 +14,6 @@ import com.jeesite.common.collect.MapUtils;
 import com.jeesite.common.lang.ObjectUtils;
 import com.jeesite.common.lang.StringUtils;
 import com.jeesite.common.mybatis.mapper.query.QueryType;
-import com.jeesite.modules.file.entity.FileUpload;
-import com.jeesite.modules.file.service.FileUploadService;
 import com.jeesite.modules.mes.entity.*;
 import com.jeesite.modules.mes.resp.CommonResp;
 import com.jeesite.modules.mes.service.*;
@@ -66,8 +64,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 	private MesApprovalService mesApprovalService;
 	@Autowired
 	private DictDataService dictDataService;
-	@Autowired
-	private FileUploadService fileUploadService;
 
 	@Autowired
 	private MesMaterialCheckService mesMaterialCheckService;
@@ -179,6 +175,7 @@ public class MesMaterialCheckRecordController extends BaseController {
 			mesMaterialCheckRecordItems.setA4(mecheck.getJSONObject(i).getString("a4"));
 			mesMaterialCheckRecordItems.setA5(mecheck.getJSONObject(i).getString("a5"));
 			mesMaterialCheckRecordItems.setResult(mecheck.getJSONObject(i).getString("result"));
+			mesMaterialCheckRecordItems.setConclusionContent(mecheck.getJSONObject(i).getString("conclusionContent"));
 			mesMaterialCheckRecordItemsService.save(mesMaterialCheckRecordItems);
 		}
 		if(mesMaterialCheckRecord.getState().equals("1")){
@@ -222,7 +219,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 		MesMaterialCheckRecordItems mci = new MesMaterialCheckRecordItems();
 		mci.setRecordId(mesMaterialCheckRecord.getId());
 		List<MesMaterialCheckRecordItems> mitList = mesMaterialCheckRecordItemsService.findList(mci);
-		String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
 
 		for (MesMaterialCheckRecordItems item:mitList){
 			DictData dictData = new DictData();
@@ -232,22 +228,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 			if(!ListUtils.isEmpty(dic)){
 				item.setOrgName(dic.get(0).getDictLabel());
 			}
-
-			FileUpload fu = new FileUpload();
-			fu.setBizKey(item.getCheckId());
-			fu.setBizType("mesMaterialCheck_image");
-			List<FileUpload> finfo = fileUploadService.findList(fu);
-			List imgList = ListUtils.newArrayList();
-			for (FileUpload fi:finfo){
-				Map<String, Object> map1 = MapUtils.newHashMap();
-				map1.put("id",fi.getFileEntity().getFileId());
-				map1.put("url",host + fi.getFileUrl());
-				map1.put("name",fi.getFileName());
-				map1.put("size",fi.getFileEntity().getFileSize());
-
-				imgList.add(map1);
-			}
-			item.setImg(imgList);
 		}
 
 		model.addAttribute("mitList", mitList);
@@ -293,7 +273,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 		MesMaterialCheck mci = new MesMaterialCheck();
 		mci.setMaterialId(ma.getId());
 		List<MesMaterialCheck> mitList = mesMaterialCheckService.findList(mci);
-		String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
 
 		for (MesMaterialCheck item:mitList){
 			DictData dictData = new DictData();
@@ -303,22 +282,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 			if(!ListUtils.isEmpty(dic)){
 				item.setOrgName(dic.get(0).getDictLabel());
 			}
-
-			FileUpload fu = new FileUpload();
-			fu.setBizKey(item.getId());
-			fu.setBizType("mesMaterialCheck_image");
-			List<FileUpload> finfo = fileUploadService.findList(fu);
-			List imgList = ListUtils.newArrayList();
-			for (FileUpload fi:finfo){
-				Map<String, Object> map1 = MapUtils.newHashMap();
-				map1.put("id",fi.getFileEntity().getFileId());
-				map1.put("url",host + fi.getFileUrl());
-				map1.put("name",fi.getFileName());
-				map1.put("size",fi.getFileEntity().getFileSize());
-
-				imgList.add(map1);
-			}
-			item.setImg(imgList);
 		}
 
 		Map<String, Object> map = MapUtils.newHashMap();
@@ -339,39 +302,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 	@RequestMapping(value = "edit")
 	public String edit(MesMaterialCheckRecord mesMaterialCheckRecord, Model model,HttpServletRequest req) {
 		model.addAttribute("mesMaterialCheckRecord", mesMaterialCheckRecord);
-//		MesMaterialCheckRecordItems mci = new MesMaterialCheckRecordItems();
-//		mci.setRecordId(mesMaterialCheckRecord.getId());
-//		List<MesMaterialCheckRecordItems> mitList = mesMaterialCheckRecordItemsService.findList(mci);
-//		model.addAttribute("mitList", mitList);
-//		String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
-//
-//		for (MesMaterialCheckRecordItems item:mitList){
-//			DictData dictData = new DictData();
-//			dictData.setDictType("mes_material_org");
-//			dictData.setDictValue(item.getOrg());
-//			List<DictData> dic = dictDataService.findList(dictData);
-//			if(!ListUtils.isEmpty(dic)){
-//				item.setOrgName(dic.get(0).getDictLabel());
-//			}
-//
-//			FileUpload fu = new FileUpload();
-//			fu.setBizKey(item.getCheckId());
-//			fu.setBizType("mesMaterialCheck_image");
-//			List<FileUpload> finfo = fileUploadService.findList(fu);
-//			List imgList = ListUtils.newArrayList();
-//			for (FileUpload fi:finfo){
-//				Map<String, Object> map1 = MapUtils.newHashMap();
-//				map1.put("id",fi.getFileEntity().getFileId());
-//				map1.put("url",host + fi.getFileUrl());
-//				map1.put("name",fi.getFileName());
-//				map1.put("size",fi.getFileEntity().getFileSize());
-//
-//				imgList.add(map1);
-//			}
-//			item.setImg(imgList);
-//		}
-//
-//		model.addAttribute("mitList", mitList);
 		return "modules/mes/mesMaterialCheckRecordFormEdit";
 	}
 	@RequestMapping(value = "getSnInfo2")
@@ -382,7 +312,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 		MesMaterialCheckRecordItems mci = new MesMaterialCheckRecordItems();
 		mci.setRecordId(recordId);
 		List<MesMaterialCheckRecordItems> mitList = mesMaterialCheckRecordItemsService.findList(mci);
-		String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
 
 		for (MesMaterialCheckRecordItems item:mitList){
 			DictData dictData = new DictData();
@@ -392,22 +321,6 @@ public class MesMaterialCheckRecordController extends BaseController {
 			if(!ListUtils.isEmpty(dic)){
 				item.setOrgName(dic.get(0).getDictLabel());
 			}
-
-			FileUpload fu = new FileUpload();
-			fu.setBizKey(item.getCheckId());
-			fu.setBizType("mesMaterialCheck_image");
-			List<FileUpload> finfo = fileUploadService.findList(fu);
-			List imgList = ListUtils.newArrayList();
-			for (FileUpload fi:finfo){
-				Map<String, Object> map1 = MapUtils.newHashMap();
-				map1.put("id",fi.getFileEntity().getFileId());
-				map1.put("url",host + fi.getFileUrl());
-				map1.put("name",fi.getFileName());
-				map1.put("size",fi.getFileEntity().getFileSize());
-
-				imgList.add(map1);
-			}
-			item.setImg(imgList);
 		}
 
 		resp.setData(mitList);

+ 0 - 24
src/main/java/com/jeesite/modules/mes/web/MesMaterialThRecordController.java

@@ -1,14 +1,10 @@
 package com.jeesite.modules.mes.web;
 
 import java.util.List;
-import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.jeesite.common.collect.ListUtils;
-import com.jeesite.common.collect.MapUtils;
-import com.jeesite.modules.file.entity.FileUpload;
-import com.jeesite.modules.file.service.FileUploadService;
 import com.jeesite.modules.mes.entity.*;
 import com.jeesite.modules.mes.service.MesMaterialCheckRecordItemsService;
 import com.jeesite.modules.mes.service.MesMaterialThRecordItemsService;
@@ -45,8 +41,6 @@ public class MesMaterialThRecordController extends BaseController {
 	@Autowired
 	private DictDataService dictDataService;
 	@Autowired
-	private FileUploadService fileUploadService;
-	@Autowired
 	private MesMaterialCheckRecordItemsService mesMaterialCheckRecordItemsService;
 	/**
 	 * 获取数据
@@ -104,8 +98,6 @@ public class MesMaterialThRecordController extends BaseController {
 
 
 
-		String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
-
 		for (MesMaterialCheckRecordItems item:checkRecord){
 			DictData dictData = new DictData();
 			dictData.setDictType("mes_material_org");
@@ -114,22 +106,6 @@ public class MesMaterialThRecordController extends BaseController {
 			if(!ListUtils.isEmpty(dic)){
 				item.setOrgName(dic.get(0).getDictLabel());
 			}
-
-			FileUpload fu = new FileUpload();
-			fu.setBizKey(item.getCheckId());
-			fu.setBizType("mesMaterialCheck_image");
-			List<FileUpload> finfo = fileUploadService.findList(fu);
-			List imgList = ListUtils.newArrayList();
-			for (FileUpload fi:finfo){
-				Map<String, Object> map1 = MapUtils.newHashMap();
-				map1.put("id",fi.getFileEntity().getFileId());
-				map1.put("url",host + fi.getFileUrl());
-				map1.put("name",fi.getFileName());
-				map1.put("size",fi.getFileEntity().getFileSize());
-
-				imgList.add(map1);
-			}
-			item.setImg(imgList);
 		}
 
 		model.addAttribute("checkRecord", checkRecord);

+ 5 - 2
src/main/resources/views/modules/mes/mesFlawRecordInfo.html

@@ -71,14 +71,17 @@ $(function(){
 	if(!sn){
 		return;
 	}
-	$.get('${ctx}/mes/mesFlawRecord/imageList', {sn: sn}, function(list){
+	var updateDate = '${@DateUtils.formatDateTime(mesProductRecord.updateDate)}';
+	$.get('${ctx}/mes/mesFlawRecord/imageList', {sn: sn, updateDate: updateDate}, 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);
+			var imgUrl = '${ctx}/mes/mesFlawRecord/viewImage?sn=' + encodeURIComponent(sn)
+				+ '&fileName=' + encodeURIComponent(list[i].name)
+				+ '&dir=' + encodeURIComponent(list[i].dir);
 			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;" />';

+ 7 - 9
src/main/resources/views/modules/mes/mesMaterialBlpRecordInfo.html

@@ -46,7 +46,9 @@
 									<tr>
 										<th>项目</th>
 										<th>检查内容</th>
-										<th>图片</th>
+										<th>结论内容</th>
+										<th>检查工具</th>
+										<th>检查频率</th>
 										<th>实测值1</th>
 										<th>实测值2</th>
 										<th>实测值3</th>
@@ -57,13 +59,9 @@
 									<tr>
 										<td>${item.orgName}</td>
 										<td>${item.materialCheckTitle}</td>
-										<td>
-											<% for(var items in item.img){ %>
-											<span style="padding-left: 5px">
-										         <img src="${items.url}" style="width: 60px" onclick="open_img(this)" alt="">
-								        	</span>
-											<% } %>
-										</td>
+										<td>${item.conclusionContent}</td>
+										<td>${item.checkTool}</td>
+										<td>${item.checkFrequency}</td>
 										<td>${item.a1}</td>
 										<td>${item.a2}</td>
 										<td>${item.a3}</td>
@@ -167,4 +165,4 @@ $("#inputForm").validate({
     }
 });
 
-</script>
+</script>

+ 48 - 22
src/main/resources/views/modules/mes/mesMaterialCheckForm.html

@@ -1,4 +1,4 @@
-<% layout('/layouts/default.html', {title: '来料检查内容表管理', libs: ['validate','fileupload']}){ %>
+<% layout('/layouts/default.html', {title: '来料检查内容表管理', libs: ['validate']}){ %>
 <div class="main-content">
 	<div class="box box-main">
 		<div class="box-header with-border">
@@ -15,16 +15,25 @@
 				<#form:hidden path="id"/>
 				<#form:hidden path="materialId"/>
 				<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">
-								${mml.title}
-							</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">
+							${mml.title}
 						</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="serialNo" maxlength="64" class="form-control"/>
+						</div>
+					</div>
+				</div>
+			</div>
 				<div class="row">
 					<div class="col-xs-6">
 						<div class="form-group">
@@ -48,17 +57,36 @@
 					</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="${mesMaterialCheck.id}" bizType="mesMaterialCheck_image"
-									uploadType="image" class="" readonly="false" preview="true"/>
-							</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="checkTool" maxlength="255" 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="checkFrequency" maxlength="255" class="form-control"/>
 						</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="measureType" dictType="mes_measure_type" blankOption="true" class="form-control" />
+						</div>
+					</div>
+				</div>
+			</div>
 				<div class="row">
 					<div class="col-xs-6">
 						<div class="form-group">
@@ -72,7 +100,7 @@
 				</div>
 				<div class="row">
 					<div class="col-xs-6" id="min">
-						<div class="form-group"  >
+						<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">
@@ -92,16 +120,14 @@
 						</div>
 					</div>
 				</div>
-
-
 			</div>
 			<div class="box-footer">
 				<div class="row">
 					<div class="col-sm-offset-2 col-sm-10">
 						<% if (hasPermi('mes:mesMaterialCheck:edit')){ %>
-							<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
+							<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>
+						<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>
@@ -122,4 +148,4 @@ $("#inputForm").validate({
 		}, "json");
     }
 });
-</script>
+</script>

+ 21 - 10
src/main/resources/views/modules/mes/mesMaterialCheckItemsForm.html

@@ -12,20 +12,31 @@
 		<#form:form id="inputForm" model="${mesMaterialCheckItems}" action="${ctx}/mes/mesMaterialCheckItems/save" method="post" class="form-horizontal">
 			<div class="box-body">
 				<div class="form-unit">${text('基本信息')}</div>
-				<#form:hidden path="id"/>
-				<#form:hidden path="materialId"/>
+			<#form:hidden path="id"/>
+			<#form:hidden path="materialId"/>
 
-				<div class="row">
-					<div class="col-xs-12">
-						<div class="form-group">
-							<label class="control-label col-sm-2" title="">
-								<span class="required">*</span> ${text('物料')}:<i class="fa icon-question hide"></i></label>
-							<div class="col-sm-8">
-								${mml.title}
-							</div>
+			<div class="row">
+				<div class="col-xs-12">
+					<div class="form-group">
+						<label class="control-label col-sm-2" title="">
+							<span class="required">*</span> ${text('物料')}:<i class="fa icon-question hide"></i></label>
+						<div class="col-sm-8">
+							${mml.title}
 						</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-8">
+							<#form:input path="serialNo" maxlength="64" class="form-control"/>
+						</div>
+					</div>
+				</div>
+			</div>
 				<div class="row">
 					<div class="col-xs-12">
 						<div class="form-group">

+ 7 - 12
src/main/resources/views/modules/mes/mesMaterialCheckItemsList.html

@@ -16,15 +16,9 @@
 		<div class="box-body">
 			<#form:form id="searchForm" model="${mesMaterialCheckItems}" action="${ctx}/mes/mesMaterialCheckItems/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="materialTitle" maxlength="64" class="form-control width-120"/>-->
-<!--					</div>-->
-<!--				</div>-->
-			<#form:hidden path="materialId"/>
+				<#form:hidden path="materialId"/>
 
-			<div class="form-group">
+				<div class="form-group">
 					<label class="control-label">${text('物料检查内容')}:</label>
 					<div class="control-inline">
 						<#form:input path="materialCheckTitle" maxlength="64" class="form-control width-120"/>
@@ -42,12 +36,14 @@
 </div>
 <% } %>
 <script>
-// 初始化DataGrid对象
 $('#dataGrid').dataGrid({
 	searchForm: $("#searchForm"),
 	columnModel: [
+		{header:'${text("编号")}', name:'serialNo', index:'a.serial_no', width:80, align:"center"},
 		{header:'${text("物料")}', name:'materialTitle', index:'a.materialTitle', width:150, align:"center"},
-		{header:'${text("检查内容")}', name:'materialCheckTitle', index:'a.materialCheckTitle', width:150, align:"center"},
+		{header:'${text("检查内容")}', name:'materialCheckTitle', index:'a.materialCheckTitle', width:220, align:"center"},
+		{header:'${text("检查工具")}', name:'checkTool', index:'a.check_tool', width:150, align:"center"},
+		{header:'${text("检查频率")}', name:'checkFrequency', index:'a.check_frequency', width:150, align:"center"},
 		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
 			var actions = [];
 			//<% if(hasPermi('mes:mesMaterialCheckItems:edit')){ %>
@@ -57,9 +53,8 @@ $('#dataGrid').dataGrid({
 			return actions.join('');
 		}}
 	],
-	// 加载成功后执行事件
 	ajaxSuccess: function(data){
 		
 	}
 });
-</script>
+</script>

+ 12 - 12
src/main/resources/views/modules/mes/mesMaterialCheckList.html

@@ -16,9 +16,9 @@
 		<div class="box-body">
 			<#form:form id="searchForm" model="${mesMaterialCheck}" action="${ctx}/mes/mesMaterialCheck/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="materialId"/>
+				<#form:hidden path="materialId"/>
 
-			<div class="form-group">
+				<div class="form-group">
 					<label class="control-label">${text('项目')}:</label>
 					<div class="control-inline width-120">
 						<#form:select path="org" dictType="mes_material_org" blankOption="true" class="form-control"/>
@@ -48,23 +48,24 @@
 </div>
 <% } %>
 <script>
-// 初始化DataGrid对象
 $('#dataGrid').dataGrid({
 	searchForm: $("#searchForm"),
 	columnModel: [
-		{header:'${text("项目")}', name:'org', index:'a.org', width:150, align:"center", frozen:true, formatter: function(val, obj, row, act){
+		{header:'${text("编号")}', name:'serialNo', index:'a.serial_no', width:300, align:"center"},
+		{header:'${text("项目")}', name:'org', index:'a.org', width:120, align:"center", frozen:true, formatter: function(val, obj, row, act){
 				return js.getDictLabel(${@DictUtils.getDictListJson('mes_material_org')}, val, '${text("未知")}', true);
 			}},
-		{header:'${text("检查内容")}', name:'content', index:'a.content', width:350, align:"center"},
-		{header:'${text("判定类型")}', name:'type', index:'a.type', width:150, align:"center", formatter: function(val, obj, row, act){
+		{header:'${text("检查内容")}', name:'content', index:'a.content', width:300, align:"center"},
+		{header:'${text("检查工具")}', name:'checkTool', index:'a.check_tool', width:150, align:"center"},
+		{header:'${text("检查频率")}', name:'checkFrequency', index:'a.check_frequency', width:150, align:"center"},
+		{header:'${text("判定类型")}', name:'type', index:'a.type', width:120, align:"center", formatter: function(val, obj, row, act){
 				return js.getDictLabel(${@DictUtils.getDictListJson('mes_material_check_type')}, val, '${text("未知")}', true);
 			}},
-		{header:'${text("最小值")}', name:'minValue', index:'a.min_value', width:150, align:"center"},
-		{header:'${text("最大值")}', name:'maxValue', index:'a.max_value', width:150, align:"center"},
-		{header:'${text("状态")}', name:'status', index:'a.status', width:150, align:"center", formatter: function(val, obj, row, act){
+		{header:'${text("最小值")}', name:'minValue', index:'a.min_value', width:120, align:"center"},
+		{header:'${text("最大值")}', name:'maxValue', index:'a.max_value', width:120, align:"center"},
+		{header:'${text("状态")}', name:'status', index:'a.status', width:120, align:"center", formatter: function(val, obj, row, act){
 			return js.getDictLabel(${@DictUtils.getDictListJson('sys_search_status')}, val, '${text("未知")}', true);
 		}},
-		// {header:'${text("创建时间")}', name:'createDate', index:'a.create_date', width:150, align:"center"},
 		{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 = [];
@@ -75,9 +76,8 @@ $('#dataGrid').dataGrid({
 			return actions.join('');
 		}}
 	],
-	// 加载成功后执行事件
 	ajaxSuccess: function(data){
 		
 	}
 });
-</script>
+</script>

+ 128 - 38
src/main/resources/views/modules/mes/mesMaterialCheckRecordForm.html

@@ -31,7 +31,7 @@
 					</div>
 				<input type="hidden" name="checkList" id="checkList">
 				<div v-if="is_show">
-					<div class="form-unit">${text('物料信信息')}</div>
+					<div class="form-unit">${text('物料信息')}</div>
 					<div class="col-xs-12">
 						<div class="form-group">
 							<label class="control-label col-sm-2" title="">
@@ -70,7 +70,9 @@
 									<tr>
 										<th>项目</th>
 										<th>检查内容</th>
-										<th>图片</th>
+										<th>结论内容</th>
+										<th>检查工具</th>
+										<th>检查频率</th>
 										<th>实测值1</th>
 										<th>实测值2</th>
 										<th>实测值3</th>
@@ -79,21 +81,57 @@
 										<th>结果</th>
 									</tr>
 									<tr v-for="(item,index) in options" :key="index">
-										<td>{{item.orgName}}</td>
-										<td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
+									<td>{{item.orgName}}</td>
+									<td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
+									<td style="word-wrap: break-word;overflow-wrap: break-word;">
+										<textarea v-model="item.conclusionContent" class="form-control" rows="2"></textarea>
+									</td>
+									<td>{{item.checkTool}}</td>
+									<td>{{item.checkFrequency}}</td>
+									<template v-if="item.measureType == '2'">
 										<td>
-											<span v-for="(item1,index1) in item.img" :key="index1" style="padding-left: 5px">
-												<img style="width: 60px" onclick="open_img(this)" :src="item1.url" alt="">
-											</span>
+											<select v-model="item.a1" class="form-control" @change="autoResult(item)">
+
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+										<td>
+											<select v-model="item.a2" class="form-control" @change="autoResult(item)">
+
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
 										</td>
-										<template v-if="hasMeasureRange(item)">
-											<td><input type="text" v-model="item.a1" class="form-control"></td>
-											<td><input type="text" v-model="item.a2" class="form-control"></td>
-											<td><input type="text" v-model="item.a3" class="form-control"></td>
-											<td><input type="text" v-model="item.a4" class="form-control"></td>
-											<td><input type="text" v-model="item.a5" class="form-control"></td>
-										</template>
-										<td v-else colspan="5"></td>
+										<td>
+											<select v-model="item.a3" class="form-control" @change="autoResult(item)">
+
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+										<td>
+											<select v-model="item.a4" class="form-control" @change="autoResult(item)">
+
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+										<td>
+											<select v-model="item.a5" class="form-control" @change="autoResult(item)">
+
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+									</template>
+									<template v-else>
+									<td><input type="text" v-model="item.a1" class="form-control" @input="formatData()"></td>
+									<td><input type="text" v-model="item.a2" class="form-control" @input="formatData()"></td>
+									<td><input type="text" v-model="item.a3" class="form-control" @input="formatData()"></td>
+									<td><input type="text" v-model="item.a4" class="form-control" @input="formatData()"></td>
+									<td><input type="text" v-model="item.a5" class="form-control" @input="formatData()"></td>
+								</template>
 										<td>
 											<div v-if="item.type == 1">
 												<label v-if="item.result == 1"><input type="radio" v-model="item.result" value="1">合格</label>
@@ -127,6 +165,20 @@
 <!--						</div>-->
 <!--					</div>-->
 				</div>
+			<div class="form-unit" v-show="is_show">${text('图片上传')}(最多10张)</div>
+			<div class="row" v-show="is_show">
+				<div class="col-xs-12">
+					<div class="form-group">
+						<label class="control-label col-sm-2" title="">
+							${text('检查图片')}:<i class="fa icon-question hide"></i>
+						</label>
+						<div class="col-sm-10">
+							<#form:fileupload id="uploadImage" bizKey="${mesMaterialCheckRecord.id}" bizType="mesMaterialCheckRecord_image"
+								uploadType="image" class="" readonly="false" preview="true" maxUploadNum="10"/>
+						</div>
+					</div>
+				</div>
+			</div>
 			<div class="box-footer" v-if="is_show">
 				<div class="row">
 					<div class="col-sm-offset-4 col-sm-8">
@@ -203,35 +255,58 @@ var vm = new Vue({
 		},
 		formatData(){
 			for (let o in this.options){
-				// this.options[o]['result'] = "";
-				if(this.options[o]['type'] == "1"){ // 系统判定
-					let fminval = parseFloat(this.options[o].minValue?this.options[o].minValue:'');
-					this.options[o].minValue = fminval;
-					let fmaxval = parseFloat(this.options[o].maxValue?this.options[o].maxValue:'');
-					this.options[o].maxValue = fmaxval;
+				let item = this.options[o];
+				// 检查5个实测值是否全部为空
+				let v1 = item.a1 ? String(item.a1).trim() : '';
+				let v2 = item.a2 ? String(item.a2).trim() : '';
+				let v3 = item.a3 ? String(item.a3).trim() : '';
+				let v4 = item.a4 ? String(item.a4).trim() : '';
+				let v5 = item.a5 ? String(item.a5).trim() : '';
+				let allEmpty = (v1 === '' && v2 === '' && v3 === '' && v4 === '' && v5 === '');
 
-					if (!this.hasMeasureRange(this.options[o])) {
-						this.options[o].result = this.options[o].result || "1";
+				if(item['type'] == "1"){ // 系统判定
+					let fminval = parseFloat(item.minValue ? item.minValue : '');
+					item.minValue = fminval;
+					let fmaxval = parseFloat(item.maxValue ? item.maxValue : '');
+					item.maxValue = fmaxval;
+
+					// 5个实测值未输入或未选择时,默认不合格
+					if(allEmpty){
+						item.result = "0";
 						continue;
 					}
-
+					// 下拉框类型:全部为"合格"才合格
+					if(item.measureType == '2'){
+						let allOk = (v1 === '合格' && v2 === '合格' && v3 === '合格' && v4 === '合格' && v5 === '合格');
+						item.result = allOk ? "1" : "0";
+						continue;
+					}
+					// 输入框类型无测量范围但有输入值,默认合格
+					if (!this.hasMeasureRange(item)) {
+						item.result = "1";
+						continue;
+					}
+					// 输入框类型有测量范围,逐个判断
 					let tret = "1";
-					let a1 = parseFloat(this.options[o].a1?this.options[o].a1:'');
-					let ret1 = this.checkResult(fminval,fmaxval,a1);
-					let a2 = parseFloat(this.options[o].a2?this.options[o].a2:'');
-					let ret2 = this.checkResult(fminval,fmaxval,a2);
-					let a3 = parseFloat(this.options[o].a3?this.options[o].a3:'');
-					let ret3 = this.checkResult(fminval,fmaxval,a3);
-					let a4 = parseFloat(this.options[o].a4?this.options[o].a4:'');
-					let ret4 = this.checkResult(fminval,fmaxval,a4);
-					let a5 = parseFloat(this.options[o].a5?this.options[o].a5:'');
-					let ret5 = this.checkResult(fminval,fmaxval,a5);
+					let a1 = parseFloat(item.a1 ? item.a1 : '');
+					let ret1 = this.checkResult(fminval, fmaxval, a1);
+					let a2 = parseFloat(item.a2 ? item.a2 : '');
+					let ret2 = this.checkResult(fminval, fmaxval, a2);
+					let a3 = parseFloat(item.a3 ? item.a3 : '');
+					let ret3 = this.checkResult(fminval, fmaxval, a3);
+					let a4 = parseFloat(item.a4 ? item.a4 : '');
+					let ret4 = this.checkResult(fminval, fmaxval, a4);
+					let a5 = parseFloat(item.a5 ? item.a5 : '');
+					let ret5 = this.checkResult(fminval, fmaxval, a5);
 					if(ret1 == "NG" || ret2 == "NG" || ret3 == "NG" || ret4 == "NG" || ret5 == "NG"){
 						tret = "0"
 					}
-					this.options[o].result = tret;
-				}else{ //人工判定
-
+					item.result = tret;
+				}else{ // 人工判定
+					// 5个实测值未输入或未选择且未手动选择结果时,默认不合格
+					if(allEmpty && (item.result === '' || item.result === undefined || item.result === null)){
+						item.result = "0";
+					}
 				}
 			}
 
@@ -250,6 +325,21 @@ var vm = new Vue({
 			console.log('ret11',val,JSON.stringify(this.options));
 			this.formatData();
 		},
+		// 测量类型为下拉框时,根据5个实测值自动判定结果
+		autoResult(item){
+			if(item.measureType != '2'){
+				return;
+			}
+			var allOk = true;
+			var arr = [item.a1, item.a2, item.a3, item.a4, item.a5];
+			for (let i=0;i<arr.length;i++){
+				if(arr[i] != '合格'){
+					allOk = false;
+					break;
+				}
+			}
+			item.result = allOk ? '1' : '0';
+		},
 		checkResult(fminval,fmaxval,fcontent){
 			let result = "NG";
 			if(fcontent !== null){
@@ -365,4 +455,4 @@ var vm = new Vue({
 		}
 	}
 })
-</script>
+</script>

+ 84 - 30
src/main/resources/views/modules/mes/mesMaterialCheckRecordForm2.html

@@ -71,7 +71,9 @@
 									<tr>
 										<th>项目</th>
 										<th>检查内容</th>
-										<th>图片</th>
+										<th>结论内容</th>
+										<th>检查工具</th>
+										<th>检查频率</th>
 										<th>实测值1</th>
 										<th>实测值2</th>
 										<th>实测值3</th>
@@ -80,38 +82,75 @@
 										<th>结果</th>
 									</tr>
 									<tr v-for="(item,index) in options" :key="index">
-										<td>{{item.orgName}}</td>
-										<td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
+									<td>{{item.orgName}}</td>
+									<td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
+									<td style="word-wrap: break-word;overflow-wrap: break-word;">
+										<textarea v-model="item.conclusionContent" class="form-control" rows="2"></textarea>
+									</td>
+									<td>{{item.checkTool}}</td>
+									<td>{{item.checkFrequency}}</td>
+									<template v-if="item.measureType == '2'">
 										<td>
-											<span v-for="(item1,index1) in item.img" :key="index1" style="padding-left: 5px">
-												<img style="width: 60px" onclick="open_img(this)" :src="item1.url" alt="">
-											</span>
+											<select v-model="item.a1" class="form-control" @change="autoResult(item)">
+												<option value="">请选择</option>
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
 										</td>
-										<template v-if="hasMeasureRange(item)">
-											<td><input type="text" v-model="item.a1" class="form-control"></td>
-											<td><input type="text" v-model="item.a2" class="form-control"></td>
-											<td><input type="text" v-model="item.a3" class="form-control"></td>
-											<td><input type="text" v-model="item.a4" class="form-control"></td>
-											<td><input type="text" v-model="item.a5" class="form-control"></td>
-										</template>
-										<td v-else colspan="5"></td>
 										<td>
-											<div v-if="item.type == 1">
-												<label v-if="item.result == 1"><input type="radio" v-model="item.result" value="1">合格</label>
-												<label v-if="item.result == 0"><input type="radio" v-model="item.result" value="0">不合格</label>
-											</div>
-											<div v-if="item.type == 2">
-												<label>
-													<input type="radio" :name="item.id" v-model="item.result" value="1" @click="formatData2(item,1)">
-													合格
-												</label>
-												<label>
-													<input type="radio" :name="item.id" v-model="item.result" value="0" @click="formatData2(item,0)">
-													不合格
-												</label>
-											</div>
+											<select v-model="item.a2" class="form-control" @change="autoResult(item)">
+												<option value="">请选择</option>
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
 										</td>
-									</tr>
+										<td>
+											<select v-model="item.a3" class="form-control" @change="autoResult(item)">
+												<option value="">请选择</option>
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+										<td>
+											<select v-model="item.a4" class="form-control" @change="autoResult(item)">
+												<option value="">请选择</option>
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+										<td>
+											<select v-model="item.a5" class="form-control" @change="autoResult(item)">
+												<option value="">请选择</option>
+												<option value="合格">合格</option>
+												<option value="不合格">不合格</option>
+											</select>
+										</td>
+									</template>
+									<template v-else-if="hasMeasureRange(item)">
+										<td><input type="text" v-model="item.a1" class="form-control"></td>
+										<td><input type="text" v-model="item.a2" class="form-control"></td>
+										<td><input type="text" v-model="item.a3" class="form-control"></td>
+										<td><input type="text" v-model="item.a4" class="form-control"></td>
+										<td><input type="text" v-model="item.a5" class="form-control"></td>
+									</template>
+									<td v-else colspan="5"></td>
+									<td>
+										<div v-if="item.type == 1">
+											<label v-if="item.result == 1"><input type="radio" v-model="item.result" value="1">合格</label>
+											<label v-if="item.result == 0"><input type="radio" v-model="item.result" value="0">不合格</label>
+										</div>
+										<div v-if="item.type == 2">
+											<label>
+												<input type="radio" :name="item.id" v-model="item.result" value="1" @click="formatData2(item,1)">
+												合格
+											</label>
+											<label>
+												<input type="radio" :name="item.id" v-model="item.result" value="0" @click="formatData2(item,0)">
+												不合格
+											</label>
+										</div>
+									</td>
+								</tr>
 								</table>
 							</div>
 						</div>
@@ -241,6 +280,21 @@ var vm = new Vue({
 			console.log('ret11',val,JSON.stringify(this.options));
 			this.formatData();
 		},
+		// 测量类型为下拉框时,根据5个实测值自动判定结果
+		autoResult(item){
+			if(item.measureType != '2'){
+				return;
+			}
+			var allOk = true;
+			var arr = [item.a1, item.a2, item.a3, item.a4, item.a5];
+			for (let i=0;i<arr.length;i++){
+				if(arr[i] != '合格'){
+					allOk = false;
+					break;
+				}
+			}
+			item.result = allOk ? '1' : '0';
+		},
 		checkResult(fminval,fmaxval,fcontent){
 			let result = "NG";
 			if(fcontent !== null){
@@ -349,4 +403,4 @@ var vm = new Vue({
 		}
 	}
 })
-</script>
+</script>

+ 59 - 12
src/main/resources/views/modules/mes/mesMaterialCheckRecordFormEdit.html

@@ -99,7 +99,9 @@
                                 <tr>
                                     <th>项目</th>
                                     <th>检查内容</th>
-                                    <th>图片</th>
+                                    <th>结论内容</th>
+                                    <th>检查工具</th>
+                                    <th>检查频率</th>
                                     <th>实测值1</th>
                                     <th>实测值2</th>
                                     <th>实测值3</th>
@@ -110,16 +112,46 @@
                                 <tr v-for="item in options" :key="item.id">
                                     <td>{{item.orgName}}</td>
                                     <td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.materialCheckTitle}}</td>
+									<td style="word-wrap: break-word;overflow-wrap: break-word;">
+										<textarea v-model="item.conclusionContent" class="form-control" rows="2"></textarea>
+									</td>
+									<td>{{item.checkTool}}</td>
+									<td>{{item.checkFrequency}}</td>
                                     <td>
-											<span v-for="(item1,index1) in item.img" :key="index1" style="padding-left: 5px">
-												<img style="width: 60px" onclick="open_img(this)" :src="item1.url" alt="">
-											</span>
-                                    </td>
-                                    <td><input type="text" v-model="item.a1" class="form-control"></td>
-                                    <td><input type="text" v-model="item.a2" class="form-control"></td>
-                                    <td><input type="text" v-model="item.a3" class="form-control"></td>
-                                    <td><input type="text" v-model="item.a4" class="form-control"></td>
-                                    <td><input type="text" v-model="item.a5" class="form-control"></td>
+										<input v-if="item.measureType != '2'" type="text" v-model="item.a1" class="form-control">
+										<select v-else v-model="item.a1" class="form-control" @change="autoResult(item)">
+											<option value="合格">合格</option>
+											<option value="不合格">不合格</option>
+										</select>
+									</td>
+                                    <td>
+										<input v-if="item.measureType != '2'" type="text" v-model="item.a2" class="form-control">
+										<select v-else v-model="item.a2" class="form-control" @change="autoResult(item)">
+											<option value="合格">合格</option>
+											<option value="不合格">不合格</option>
+										</select>
+									</td>
+                                    <td>
+										<input v-if="item.measureType != '2'" type="text" v-model="item.a3" class="form-control">
+										<select v-else v-model="item.a3" class="form-control" @change="autoResult(item)">
+											<option value="合格">合格</option>
+											<option value="不合格">不合格</option>
+										</select>
+									</td>
+                                    <td>
+										<input v-if="item.measureType != '2'" type="text" v-model="item.a4" class="form-control">
+										<select v-else v-model="item.a4" class="form-control" @change="autoResult(item)">
+											<option value="合格">合格</option>
+											<option value="不合格">不合格</option>
+										</select>
+									</td>
+                                    <td>
+										<input v-if="item.measureType != '2'" type="text" v-model="item.a5" class="form-control">
+										<select v-else v-model="item.a5" class="form-control" @change="autoResult(item)">
+											<option value="合格">合格</option>
+											<option value="不合格">不合格</option>
+										</select>
+									</td>
                                     <td>
                                             <label>
                                                 <input type="radio"  v-model="item.result" value="1">
@@ -210,7 +242,22 @@
                     }
                 )
                 js.closeCurrentTabPage()
-            }
+            },
+			// 测量类型为下拉框时,根据5个实测值自动判定结果
+			autoResult(item){
+				if(item.measureType != '2'){
+					return;
+				}
+				var allOk = true;
+				var arr = [item.a1, item.a2, item.a3, item.a4, item.a5];
+				for(var i=0;i<arr.length;i++){
+					if(arr[i] != '合格'){
+						allOk = false;
+						break;
+					}
+				}
+				item.result = allOk ? '1' : '0';
+			}
         }
     })
-</script>
+</script>

+ 22 - 9
src/main/resources/views/modules/mes/mesMaterialCheckRecordInfo.html

@@ -50,7 +50,9 @@
 							<tr>
 								<th>项目</th>
 								<th>检查内容</th>
-								<th>图片</th>
+								<th>结论内容</th>
+								<th>检查工具</th>
+								<th>检查频率</th>
 								<th>实测值1</th>
 								<th>实测值2</th>
 								<th>实测值3</th>
@@ -62,13 +64,9 @@
 							<tr>
 								<td>${item.orgName}</td>
 								<td>${item.materialCheckTitle}</td>
-								<td>
-									<% for(var items in item.img){ %>
-									<span style="padding-left: 5px">
-										<img src="${items.url}" style="width: 60px" onclick="open_img(this)" alt="">
-									</span>
-									<% } %>
-								</td>
+								<td>${item.conclusionContent}</td>
+								<td>${item.checkTool}</td>
+								<td>${item.checkFrequency}</td>
 								<td>${item.a1}</td>
 								<td>${item.a2}</td>
 								<td>${item.a3}</td>
@@ -88,6 +86,21 @@
 				</tr>
 			</table>
 
+			<div class="form-unit">${text('检查图片')}</div>
+			<div class="row">
+				<div class="col-xs-12">
+					<div class="form-group">
+						<label class="control-label col-sm-2" title="">
+							${text('图片')}:<i class="fa icon-question hide"></i>
+						</label>
+						<div class="col-sm-10">
+							<#form:fileupload id="uploadImage" bizKey="${mesMaterialCheckRecord.id}" bizType="mesMaterialCheckRecord_image"
+								uploadType="image" class="" readonly="true" preview="true"/>
+						</div>
+					</div>
+				</div>
+			</div>
+
 		</div>
 		<div class="box-footer">
 			<div class="row">
@@ -98,4 +111,4 @@
 		</div>
 	</div>
 </div>
-<% } %>
+<% } %>

+ 2 - 2
src/main/resources/views/modules/mes/mesMaterialCheckRecordList.html

@@ -65,7 +65,7 @@ $('#dataGrid').dataGrid({
 		{header:'${text("物料")}', name:'materialTitle', index:'b.title', width:200, align:"center"},
 		// {header:'${text("发货日期")}', name:'faDate', index:'a.fa_date', width:120, align:"center"},
 		// {header:'${text("发货数量")}', name:'faNums', index:'a.fa_nums', width:100, align:"center"},
-		{header:'${text("实际数量")}', name:'nums', index:'a.nums', width:100, align:"center"},
+		{header:'${text("实际确认数量")}', name:'nums', index:'a.nums', width:100, align:"center"},
 		{header:'${text("结果")}', name:'state', index:'a.state', width:100, align:"center", formatter: function(val, obj, row, act){
 				return js.getDictLabel(${@DictUtils.getDictListJson('mes_material_check_record_state')}, val, '${text("未知")}', true);
 			}},
@@ -78,7 +78,7 @@ $('#dataGrid').dataGrid({
 			//	actions.push('<a href="${ctx}/mes/mesMaterialCheckRecord/delete?id='+row.id+'" class="btnList" title="${text("删除来料检查记录表")}" data-confirm="${text("确认要删除该来料检查记录表吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
 			//<% } %>
 				actions.push('<a href="${ctx}/mes/mesMaterialCheckRecord/info?id='+row.id+'" class="btnList" title="${text("详情")}"><i class="fa fa-fw fa-eye"></i></a>&nbsp;');
-				actions.push('<a href="${ctx}/mes/mesMaterialCheckRecord/edit?id='+row.id+'" class="btnList" title="${text("编辑")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+			// actions.push('<a href="${ctx}/mes/mesMaterialCheckRecord/edit?id='+row.id+'" class="btnList" title="${text("编辑")}"><i class="fa fa-pencil"></i></a>&nbsp;');
 				return actions.join('');
 		}}
 	],

+ 10 - 3
src/main/resources/views/modules/mes/mesMaterialReportList.html

@@ -75,12 +75,19 @@ $('#dataGrid').dataGrid({
 	searchForm: $("#searchForm"),
 	columnModel: [
 		{header:'${text("来料码")}', name:'sn', index:'a.sn', width:250, align:"center",frozen:true,},
-		{header:'${text("发货日期")}', name:'faDate', index:'a.fa_date', width:120, align:"center"},
-		{header:'${text("发货数量")}', name:'faNums', index:'a.fa_nums', width:100, align:"center"},
-		{header:'${text("实际数量")}', name:'nums', index:'a.nums', width:100, align:"center"},
+		{header:'${text("产品名称")}', name:'productName', index:'d.title', width:150, align:"center"},
+		{header:'${text("到货日期")}', name:'faDate', index:'a.fa_date', width:120, align:"center"},
+		{header:'${text("到货数量")}', name:'faNums', index:'a.fa_nums', width:100, align:"center"},
+		{header:'${text("实际确认数量")}', name:'nums', index:'a.nums', width:100, align:"center"},
 		{header:'${text("状态")}', name:'state', index:'a.state', width:100, align:"center", formatter: function(val, obj, row, act){
 			return js.getDictLabel(${@DictUtils.getDictListJson('material_report_state')}, val, '${text("未知")}', true);
 		}},
+		{header:'${text("检查结果")}', name:'checkResult', index:'c.state', width:100, align:"center", formatter: function(val, obj, row, act){
+			if(val == null || val == ''){
+				return '';
+			}
+			return js.getDictLabel(${@DictUtils.getDictListJson('mes_material_check_record_state')}, val, '', true);
+		}},
 		{header:'${text("备注")}', name:'remark', index:'a.remark', width:150, align:"center"},
 		{header:'${text("报检人")}', name:'createBy', index:'a.create_by', width:120, align:"center"},
 		{header:'${text("报检时间")}', name:'createDate', index:'a.create_date', width:150, align:"center"},

+ 6 - 8
src/main/resources/views/modules/mes/mesMaterialThRecordInfo.html

@@ -44,7 +44,9 @@
 								<tr>
 									<th>项目</th>
 									<th>检查内容</th>
-									<th>图片</th>
+									<th>结论内容</th>
+									<th>检查工具</th>
+									<th>检查频率</th>
 									<th>实测值1</th>
 									<th>实测值2</th>
 									<th>实测值3</th>
@@ -55,13 +57,9 @@
 								<tr>
 									<td>${item.orgName}</td>
 									<td>${item.materialCheckTitle}</td>
-									<td>
-										<% for(var items in item.img){ %>
-										<span style="padding-left: 5px">
-										         <img src="${items.url}" style="width: 60px" onclick="open_img(this)" alt="">
-								        	</span>
-										<% } %>
-									</td>
+									<td>${item.conclusionContent}</td>
+									<td>${item.checkTool}</td>
+									<td>${item.checkFrequency}</td>
 									<td>${item.a1}</td>
 									<td>${item.a2}</td>
 									<td>${item.a3}</td>