Просмотр исходного кода

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

sunxianglong 2 месяцев назад
Родитель
Сommit
560445c9bb

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesOrderSnZpDao.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.MesOrderSnZp;
+
+/**
+ * 装配订单工件绑定DAO接口
+ * @author sxl
+ * @version 2026-09-01
+ */
+@MyBatisDao
+public interface MesOrderSnZpDao extends CrudDao<MesOrderSnZp> {
+
+}

+ 1 - 6
src/main/java/com/jeesite/modules/mes/entity/MesMaterialReport.java

@@ -41,13 +41,8 @@ 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)",
+				on="d.erp_sn = SUBSTRING_INDEX(SUBSTRING_INDEX(a.sn, ',', 4), ',', -1)",
 				columns={
 						@Column(name="title", attrName="productName", label="产品名称"),
 				}),

+ 56 - 0
src/main/java/com/jeesite/modules/mes/entity/MesOrderSnZp.java

@@ -0,0 +1,56 @@
+package com.jeesite.modules.mes.entity;
+
+import javax.validation.constraints.Size;
+
+import com.jeesite.common.entity.DataEntity;
+import com.jeesite.common.mybatis.annotation.Column;
+import com.jeesite.common.mybatis.annotation.Table;
+
+/**
+ * 装配订单工件绑定Entity
+ * @author sxl
+ * @version 2026-09-01
+ */
+@Table(name="mes_order_sn_zp", alias="a", label="装配订单工件绑定信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="order_zp", attrName="orderZp", label="装配订单号"),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="更新人", isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="更新时间", isQuery=false, isUpdateForce=true),
+	}, orderBy="a.update_date DESC"
+)
+public class MesOrderSnZp extends DataEntity<MesOrderSnZp> {
+
+	private static final long serialVersionUID = 1L;
+	private String orderZp;		// 装配订单号
+	private String sn;		// 工件码
+
+	public MesOrderSnZp() {
+		this(null);
+	}
+
+	public MesOrderSnZp(String id){
+		super(id);
+	}
+
+	@Size(min=0, max=64, message="装配订单号长度不能超过 64 个字符")
+	public String getOrderZp() {
+		return orderZp;
+	}
+
+	public void setOrderZp(String orderZp) {
+		this.orderZp = orderZp;
+	}
+
+	@Size(min=0, max=64, message="工件码长度不能超过 64 个字符")
+	public String getSn() {
+		return sn;
+	}
+
+	public void setSn(String sn) {
+		this.sn = sn;
+	}
+
+}

+ 37 - 2
src/main/java/com/jeesite/modules/mes/service/MesMaterialReportService.java

@@ -1,13 +1,18 @@
 package com.jeesite.modules.mes.service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.jeesite.common.entity.Page;
+import com.jeesite.common.lang.ObjectUtils;
+import com.jeesite.common.lang.StringUtils;
 import com.jeesite.common.service.CrudService;
+import com.jeesite.modules.mes.entity.MesMaterialCheckRecord;
 import com.jeesite.modules.mes.entity.MesMaterialReport;
 import com.jeesite.modules.mes.dao.MesMaterialReportDao;
 import com.jeesite.common.service.ServiceException;
@@ -28,6 +33,8 @@ public class MesMaterialReportService extends CrudService<MesMaterialReportDao,
 
 	@Autowired
 	private MesMaterialReportDao mesMaterialReportDao;
+	@Autowired
+	private MesMaterialCheckRecordService mesMaterialCheckRecordService;
 	/**
 	 * 获取单条数据
 	 * @param mesMaterialReport
@@ -50,7 +57,9 @@ public class MesMaterialReportService extends CrudService<MesMaterialReportDao,
 	 */
 	@Override
 	public Page<MesMaterialReport> findPage(MesMaterialReport mesMaterialReport) {
-		return super.findPage(mesMaterialReport);
+		Page<MesMaterialReport> page = super.findPage(mesMaterialReport);
+		fillCheckResult(page.getList());
+		return page;
 	}
 	
 	/**
@@ -60,7 +69,33 @@ public class MesMaterialReportService extends CrudService<MesMaterialReportDao,
 	 */
 	@Override
 	public List<MesMaterialReport> findList(MesMaterialReport mesMaterialReport) {
-		return super.findList(mesMaterialReport);
+		List<MesMaterialReport> list = super.findList(mesMaterialReport);
+		fillCheckResult(list);
+		return list;
+	}
+
+	/**
+	 * 按报检状态补全检查结果,避免 JOIN 检查表导致 N×M 行数放大。
+	 */
+	private void fillCheckResult(List<MesMaterialReport> list) {
+		if (list == null || list.isEmpty()) {
+			return;
+		}
+		Map<String, String> latestCheckStateBySn = new HashMap<>();
+		for (MesMaterialReport report : list) {
+			if (!"1".equals(report.getState()) || StringUtils.isBlank(report.getSn())) {
+				report.setCheckResult(null);
+				continue;
+			}
+			String sn = report.getSn().trim();
+			if (!latestCheckStateBySn.containsKey(sn)) {
+				MesMaterialCheckRecord query = new MesMaterialCheckRecord();
+				query.setSn(sn);
+				MesMaterialCheckRecord latest = mesMaterialCheckRecordService.findInfo(query);
+				latestCheckStateBySn.put(sn, ObjectUtils.isEmpty(latest) ? null : latest.getState());
+			}
+			report.setCheckResult(latestCheckStateBySn.get(sn));
+		}
 	}
 	
 	/**

+ 53 - 0
src/main/java/com/jeesite/modules/mes/service/MesOrderSnZpService.java

@@ -0,0 +1,53 @@
+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.MesOrderSnZp;
+import com.jeesite.modules.mes.dao.MesOrderSnZpDao;
+
+/**
+ * 装配订单工件绑定Service
+ * @author sxl
+ * @version 2026-09-01
+ */
+@Service
+public class MesOrderSnZpService extends CrudService<MesOrderSnZpDao, MesOrderSnZp> {
+
+	@Override
+	public MesOrderSnZp get(MesOrderSnZp mesOrderSnZp) {
+		return super.get(mesOrderSnZp);
+	}
+
+	@Override
+	public Page<MesOrderSnZp> findPage(MesOrderSnZp mesOrderSnZp) {
+		return super.findPage(mesOrderSnZp);
+	}
+
+	@Override
+	public List<MesOrderSnZp> findList(MesOrderSnZp mesOrderSnZp) {
+		return super.findList(mesOrderSnZp);
+	}
+
+	@Override
+	@Transactional
+	public void save(MesOrderSnZp mesOrderSnZp) {
+		super.save(mesOrderSnZp);
+	}
+
+	@Override
+	@Transactional
+	public void updateStatus(MesOrderSnZp mesOrderSnZp) {
+		super.updateStatus(mesOrderSnZp);
+	}
+
+	@Override
+	@Transactional
+	public void delete(MesOrderSnZp mesOrderSnZp) {
+		super.delete(mesOrderSnZp);
+	}
+
+}

+ 23 - 0
src/main/java/com/jeesite/modules/mes/util/CommonUitl.java

@@ -82,6 +82,29 @@ public class CommonUitl {
     }
 
     /**
+     * 同一父工位:OP250 / OP250A / OP250B 视为相同
+     */
+    public static boolean sameStation(String a, String b) {
+        if (StringUtils.isEmpty(a) || StringUtils.isEmpty(b)) {
+            return false;
+        }
+        return formatOprno(a).equals(formatOprno(b));
+    }
+
+    /**
+     * 跳过工位配置串是否包含该工位(兼容父工位与子工位写法)
+     */
+    public static boolean inPassOprnos(String passoprnos, String recordOprno) {
+        if (StringUtils.isEmpty(passoprnos) || StringUtils.isEmpty(recordOprno)) {
+            return false;
+        }
+        if (passoprnos.contains(recordOprno)) {
+            return true;
+        }
+        return passoprnos.contains(formatOprno(recordOprno));
+    }
+
+    /**
      * 获取几天前的时间
      * @param days
      * @return

+ 21 - 15
src/main/java/com/jeesite/modules/mes/web/MesMaterialCheckRecordController.java

@@ -106,8 +106,9 @@ public class MesMaterialCheckRecordController extends BaseController {
 	 */
 	@RequiresPermissions("mes:mesMaterialCheckRecord:view")
 	@RequestMapping(value = "form")
-	public String form(MesMaterialCheckRecord mesMaterialCheckRecord, Model model) {
+	public String form(MesMaterialCheckRecord mesMaterialCheckRecord, Model model, HttpServletRequest req) {
 		model.addAttribute("mesMaterialCheckRecord", mesMaterialCheckRecord);
+		model.addAttribute("reportId", StringUtils.defaultString(req.getParameter("reportId")));
 		return "modules/mes/mesMaterialCheckRecordForm";
 	}
 
@@ -149,22 +150,27 @@ public class MesMaterialCheckRecordController extends BaseController {
 		if (StringUtils.isBlank(mesMaterialCheckRecord.getNums()) && StringUtils.isNotBlank(mesMaterialCheckRecord.getFaNums())) {
 			mesMaterialCheckRecord.setNums(mesMaterialCheckRecord.getFaNums());
 		}
-		mesMaterialCheckRecordService.save(mesMaterialCheckRecord);
 
-		// 更新报检编号相同的都更新
-		MesMaterialReport mesMaterialReport = new MesMaterialReport();
-		mesMaterialReport.setSn(mesMaterialCheckRecord.getSn().trim());
-		List<MesMaterialReport> reports = mesMaterialReportService.findList(mesMaterialReport);
-		logger.info("reports:"+JSON.toJSONString(reports));
-		if(!ListUtils.isEmpty(reports)){
-			for(MesMaterialReport mesMaterialReport1:reports){
-				mesMaterialReport1.setHgQty(mesMaterialCheckRecord.getHgQty());
-				mesMaterialReport1.setBhgQty(mesMaterialCheckRecord.getBhgQty());
-				if("0".equals(mesMaterialReport1.getState())){
-					mesMaterialReport1.setState("1");
-				}
-				mesMaterialReportService.update(mesMaterialReport1);
+		// 按报检唯一 id 防重,并只回写该条报检
+		String reportId = req.getParameter("reportId");
+		MesMaterialReport targetReport = null;
+		if (StringUtils.isNotBlank(reportId)) {
+			targetReport = mesMaterialReportService.get(new MesMaterialReport(reportId));
+			if (ObjectUtils.isEmpty(targetReport)) {
+				return renderResult(Global.FALSE, text("报检记录不存在!"));
 			}
+			if ("1".equals(targetReport.getState())) {
+				return renderResult(Global.FALSE, text("该报检记录已检查,请勿重复保存!"));
+			}
+		}
+
+		mesMaterialCheckRecordService.save(mesMaterialCheckRecord);
+
+		if (!ObjectUtils.isEmpty(targetReport)) {
+			targetReport.setHgQty(mesMaterialCheckRecord.getHgQty());
+			targetReport.setBhgQty(mesMaterialCheckRecord.getBhgQty());
+			targetReport.setState("1");
+			mesMaterialReportService.update(targetReport);
 		}
 
 		for (int i=0;i<mecheck.size();i=i+1){

+ 199 - 0
src/main/java/com/jeesite/modules/mes/web/MesOrderSnZpController.java

@@ -0,0 +1,199 @@
+package com.jeesite.modules.mes.web;
+
+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 com.jeesite.common.lang.ObjectUtils;
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
+import com.jeesite.modules.erp.entity.MesProductOrder;
+import com.jeesite.modules.erp.service.MesProductOrderService;
+import com.jeesite.modules.mes.entity.MesLine;
+import com.jeesite.modules.mes.entity.MesProduct;
+import com.jeesite.modules.mes.resp.CommonResp;
+import com.jeesite.modules.mes.service.MesLineService;
+import com.jeesite.modules.mes.service.MesProductService;
+import com.jeesite.modules.sys.entity.User;
+import com.jeesite.modules.sys.utils.UserUtils;
+import com.jeesite.modules.utils.ErrorMsg;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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.MesOrderSnZp;
+import com.jeesite.modules.mes.service.MesOrderSnZpService;
+
+/**
+ * 装配订单工件绑定Controller
+ * @author sxl
+ * @version 2026-09-01
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesOrderSnZp")
+public class MesOrderSnZpController extends BaseController {
+
+	@Autowired
+	private MesOrderSnZpService mesOrderSnZpService;
+	@Autowired
+	private MesProductOrderService mesProductOrderService;
+	@Autowired
+	private MesProductService mesProductService;
+	@Autowired
+	private MesLineService mesLineService;
+	@Lazy
+	@Autowired
+	private MesProductRecordController mesProductRecordController;
+
+	@ModelAttribute
+	public MesOrderSnZp get(String id, boolean isNewRecord) {
+		return mesOrderSnZpService.get(id, isNewRecord);
+	}
+
+	@RequiresPermissions("mes:mesOrderSnZp:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesOrderSnZp mesOrderSnZp, Model model) {
+		model.addAttribute("mesOrderSnZp", mesOrderSnZp);
+		return "modules/mes/mesOrderSnZpList";
+	}
+
+	@RequiresPermissions("mes:mesOrderSnZp:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesOrderSnZp> listData(MesOrderSnZp mesOrderSnZp, HttpServletRequest request, HttpServletResponse response) {
+		mesOrderSnZp.setPage(new Page<>(request, response));
+		return mesOrderSnZpService.findPage(mesOrderSnZp);
+	}
+
+	@RequiresPermissions("mes:mesOrderSnZp:view")
+	@RequestMapping(value = "form")
+	public String form(MesOrderSnZp mesOrderSnZp, Model model) {
+		model.addAttribute("mesOrderSnZp", mesOrderSnZp);
+		return "modules/mes/mesOrderSnZpForm";
+	}
+
+	@RequiresPermissions("mes:mesOrderSnZp:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesOrderSnZp mesOrderSnZp) {
+		mesOrderSnZpService.save(mesOrderSnZp);
+		return renderResult(Global.TRUE, text("保存装配订单工件绑定成功!"));
+	}
+
+	@RequiresPermissions("mes:mesOrderSnZp:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesOrderSnZp mesOrderSnZp) {
+		mesOrderSnZpService.delete(mesOrderSnZp);
+		return renderResult(Global.TRUE, text("删除装配订单工件绑定成功!"));
+	}
+
+	/**
+	 * 装配订单绑定工件码(OP400 工位质量校验通过后方可绑定)
+	 */
+	@RequestMapping(value = "bandSn")
+	@ResponseBody
+	public String bandSn(MesOrderSnZp mesOrderSnZp) {
+		if (mesOrderSnZp == null || StringUtils.isBlank(mesOrderSnZp.getOrderZp())) {
+			return renderResult(Global.FALSE, text("订单编码不能为空!"));
+		}
+		if (StringUtils.isBlank(mesOrderSnZp.getSn())) {
+			return renderResult(Global.FALSE, text("工件码不能为空!"));
+		}
+		String sn = mesOrderSnZp.getSn();
+
+		MesProduct mesProductQuery = new MesProduct();
+		mesProductQuery.setSn(sn);
+		List<MesProduct> productList = mesProductService.findList(mesProductQuery);
+		if (productList == null || productList.isEmpty() || ObjectUtils.isEmpty(productList.get(0))) {
+			return renderResult(Global.FALSE, text("工件不存在!"));
+		}
+		MesProduct mesProduct = productList.get(0);
+		MesLine mesLine = new MesLine();
+		mesLine.setProductCate(mesProduct.getCate());
+		mesLine.setStatus("0");
+		MesLine lineInfo = mesLineService.findInfo(mesLine);
+		if (ObjectUtils.isEmpty(lineInfo) || StringUtils.isEmpty(lineInfo.getSn())) {
+			return renderResult(Global.FALSE, text("产线信息不存在!"));
+		}
+		String lineSn = lineInfo.getSn();
+
+		String userCode = "";
+		User user = UserUtils.getUser();
+		if (user != null && StringUtils.isNotEmpty(user.getUserCode())) {
+			userCode = user.getUserCode();
+		}
+		String ret = mesProductRecordController.checkQualityCommon("OP400", sn, lineSn, userCode);
+		String checkret = ret.substring(3, 5);
+		if (!"UD".equals(checkret) && !"OK".equalsIgnoreCase(checkret) && !"NG".equalsIgnoreCase(checkret)) {
+			String lx = ret.substring(0, 3);
+			return renderResult(Global.FALSE, text(ErrorMsg.getErrorMsg(checkret, lx)));
+		}
+
+		MesOrderSnZp query = new MesOrderSnZp();
+		query.setSn(sn);
+		List<MesOrderSnZp> list = mesOrderSnZpService.findList(query);
+		if (!list.isEmpty()) {
+			return renderResult(Global.FALSE, text("该工件已和装配订单绑定!"));
+		}
+
+		MesProductOrder orderQuery = new MesProductOrder();
+		orderQuery.setSn(mesOrderSnZp.getOrderZp());
+		List<MesProductOrder> orderList = mesProductOrderService.findList(orderQuery);
+		if (orderList == null || orderList.isEmpty() || ObjectUtils.isEmpty(orderList.get(0))) {
+			return renderResult(Global.FALSE, text("生产订单不存在!"));
+		}
+		Integer orderNums = orderList.get(0).getNums();
+		if (orderNums == null) {
+			return renderResult(Global.FALSE, text("生产订单数量未配置!"));
+		}
+		MesOrderSnZp boundQuery = new MesOrderSnZp();
+		boundQuery.setOrderZp(mesOrderSnZp.getOrderZp());
+		long boundCount = mesOrderSnZpService.findCount(boundQuery);
+		if (boundCount >= orderNums) {
+			return renderResult(Global.FALSE, text("该订单已绑定数量已达生产数量,不允许再绑定!"));
+		}
+
+		mesOrderSnZpService.save(mesOrderSnZp);
+		return renderResult(Global.TRUE, text("保存成功!"));
+	}
+
+	/**
+	 * 装配生产订单列表(产线编号以 N0101 开头)
+	 */
+	@RequestMapping(value = "orderList")
+	@ResponseBody
+	public CommonResp<List<Map<String, Object>>> orderList(MesProductOrder mesProductOrder) {
+		CommonResp<List<Map<String, Object>>> resp = new CommonResp<>();
+		mesProductOrder.setState("1");
+		mesProductOrder.getSqlMap().getWhere().and("a.line_sn", QueryType.RIGHT_LIKE, "N0101");
+		List<MesProductOrder> list = mesProductOrderService.findList(mesProductOrder);
+		List<Map<String, Object>> data = new ArrayList<>();
+		for (MesProductOrder order : list) {
+			Map<String, Object> item = new HashMap<>();
+			item.put("orderId", order.getSn());
+			MesOrderSnZp query = new MesOrderSnZp();
+			query.setOrderZp(order.getSn());
+			item.put("qty", mesOrderSnZpService.findCount(query));
+			data.add(item);
+		}
+		resp.setData(data);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
+	}
+
+}

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

@@ -1792,9 +1792,9 @@ public class MesProductRecordController extends BaseController {
 			}
 		}
 
-		// 6.检查本工位情况
+		// 6.检查本工位情况(兼容 OP250 / OP250A 等父、子工位写法)
 		for(MesProductRecord mpr : lists){
-			if(mpr.getOprno().contains(oprno)){
+			if(CommonUitl.sameStation(mpr.getOprno(), oprno)){
 				if(mpr.getContent().equals("NG")){
 					lxres = "NG";
 				}else if(mpr.getContent().equals("OK")){
@@ -1819,7 +1819,7 @@ public class MesProductRecordController extends BaseController {
 					break;
 				}
 
-				if(!StringUtils.isEmpty(passoprnos) && passoprnos.contains(mpr.getOprno())){
+				if(CommonUitl.inPassOprnos(passoprnos, mpr.getOprno())){
 					// 跳过的工位
 				}else{
 					if(mpr.getContent().equals("NG")){

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

+ 1 - 0
src/main/resources/views/modules/mes/mesMaterialCheckRecordForm.html

@@ -12,6 +12,7 @@
 		<#form:form id="inputForm" model="${mesMaterialCheckRecord}" action="${ctx}/mes/mesMaterialCheckRecord/save" method="post" class="form-horizontal">
 			<div class="box-body" id="app">
 				<#form:hidden path="id"/>
+				<input type="hidden" name="reportId" value="${reportId!}">
 				<div class="row">
 						<div class="col-xs-12">
 							<div class="form-group">

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

@@ -84,8 +84,8 @@ $('#dataGrid').dataGrid({
 		{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 == ''){
+		{header:'${text("检查结果")}', name:'checkResult', width:100, align:"center", formatter: function(val, obj, row, act){
+			if(row.state != '1' || val == null || val == ''){
 				return '';
 			}
 			return js.getDictLabel(${@DictUtils.getDictListJson('mes_material_check_record_state')}, val, '', true);
@@ -101,7 +101,7 @@ $('#dataGrid').dataGrid({
 				actions.push('<a href="${ctx}/mes/mesMaterialReport/delete?id='+row.id+'" class="btnList" title="${text("删除来料报检")}" data-confirm="${text("确认要删除该来料报检吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
 			//<% } %>
 			//<% if(hasPermi('mes:mesMaterialCheckRecord:view')){ %>
-				actions.push('<a href="${ctx}/mes/mesMaterialCheckRecord/form?sn='+encodeURIComponent(row.sn||'')+'" class="btnList" title="${text("来料检查")}"><i class="fa fa-check-square-o"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesMaterialCheckRecord/form?sn='+encodeURIComponent(row.sn||'')+'&reportId='+encodeURIComponent(row.id||'')+'" class="btnList" title="${text("来料检查")}"><i class="fa fa-check-square-o"></i></a>&nbsp;');
 			//<% } %>
 			return actions.join('');
 		}}

+ 64 - 0
src/main/resources/views/modules/mes/mesOrderSnZpForm.html

@@ -0,0 +1,64 @@
+<% layout('/layouts/default.html', {title: '装配订单工件绑定管理', libs: ['validate']}){ %>
+<div class="main-content">
+	<div class="box box-main">
+		<div class="box-header with-border">
+			<div class="box-title">
+				<i class="fa icon-note"></i> ${text(mesOrderSnZp.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="${mesOrderSnZp}" action="${ctx}/mes/mesOrderSnZp/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="orderZp" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('工件码')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="sn" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="box-footer">
+				<div class="row">
+					<div class="col-sm-offset-2 col-sm-10">
+						<% if (hasPermi('mes:mesOrderSnZp: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>

+ 63 - 0
src/main/resources/views/modules/mes/mesOrderSnZpList.html

@@ -0,0 +1,63 @@
+<% 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:mesOrderSnZp:edit')){ %>
+					<a href="${ctx}/mes/mesOrderSnZp/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="${mesOrderSnZp}" action="${ctx}/mes/mesOrderSnZp/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="orderZp" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工件码')}:</label>
+					<div class="control-inline">
+						<#form:input path="sn" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<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({
+	searchForm: $("#searchForm"),
+	columnModel: [
+		{header:'${text("装配订单号")}', name:'orderZp', index:'a.order_zp', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesOrderSnZp/form?id='+row.id+'" class="btnList" data-title="${text("编辑装配订单工件绑定")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"left"},
+		{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesOrderSnZp:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesOrderSnZp/form?id='+row.id+'" class="btnList" title="${text("编辑装配订单工件绑定")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesOrderSnZp/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>