Sfoglia il codice sorgente

优化,订单工件绑定

sunxianglong 3 mesi fa
parent
commit
98a604851b

+ 1 - 0
src/main/java/com/jeesite/modules/mes/api/MesProductOrderControllerApi.java

@@ -32,6 +32,7 @@ public class MesProductOrderControllerApi {
     public CommonResp save(@Validated MesProductOrder mesProductOrder, HttpServletRequest request, HttpServletResponse response) {
         CommonResp<List<MesProductOrder> > resp = new CommonResp<>();
 //        String lineSn = request.getParameter("lineSn");
+        mesProductOrder.setLineSn("");
         //展示所有未结束的订单
         mesProductOrder.setState("1");//0=草稿 1=下发 2=完成
 //        mesProductOrder.setLineSn(lineSn);

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesOrderSnDao.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.MesOrderSn;
+
+/**
+ * 生产订单工件表DAO接口
+ * @author sxl
+ * @version 2026-07-18
+ */
+@MyBatisDao
+public interface MesOrderSnDao extends CrudDao<MesOrderSn> {
+	
+}

+ 57 - 0
src/main/java/com/jeesite/modules/mes/entity/MesOrderSn.java

@@ -0,0 +1,57 @@
+package com.jeesite.modules.mes.entity;
+
+import javax.validation.constraints.Size;
+
+import com.jeesite.common.entity.DataEntity;
+import com.jeesite.common.mybatis.annotation.Column;
+import com.jeesite.common.mybatis.annotation.Table;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
+
+/**
+ * 生产订单工件表Entity
+ * @author sxl
+ * @version 2026-07-18
+ */
+@Table(name="mes_order_sn", alias="a", label="生产订单工件表信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="order_id", attrName="orderId", label="订单编码"),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false, isQuery=false),
+		@Column(name="update_date", attrName="updateDate", label="更新时间", isQuery=false, isUpdateForce=true),
+		@Column(name="update_by", attrName="updateBy", label="更新人", isQuery=false),
+	}, orderBy="a.update_date DESC"
+)
+public class MesOrderSn extends DataEntity<MesOrderSn> {
+	
+	private static final long serialVersionUID = 1L;
+	private String orderId;		// 订单编码
+	private String sn;		// 工件码
+
+	public MesOrderSn() {
+		this(null);
+	}
+	
+	public MesOrderSn(String id){
+		super(id);
+	}
+	
+	@Size(min=0, max=64, message="订单编码长度不能超过 64 个字符")
+	public String getOrderId() {
+		return orderId;
+	}
+
+	public void setOrderId(String orderId) {
+		this.orderId = orderId;
+	}
+	
+	@Size(min=0, max=64, message="工件码长度不能超过 64 个字符")
+	public String getSn() {
+		return sn;
+	}
+
+	public void setSn(String sn) {
+		this.sn = sn;
+	}
+	
+}

+ 81 - 0
src/main/java/com/jeesite/modules/mes/service/MesOrderSnService.java

@@ -0,0 +1,81 @@
+package com.jeesite.modules.mes.service;
+
+import java.util.List;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.service.CrudService;
+import com.jeesite.modules.mes.entity.MesOrderSn;
+import com.jeesite.modules.mes.dao.MesOrderSnDao;
+
+/**
+ * 生产订单工件表Service
+ * @author sxl
+ * @version 2026-07-18
+ */
+@Service
+public class MesOrderSnService extends CrudService<MesOrderSnDao, MesOrderSn> {
+	
+	/**
+	 * 获取单条数据
+	 * @param mesOrderSn
+	 * @return
+	 */
+	@Override
+	public MesOrderSn get(MesOrderSn mesOrderSn) {
+		return super.get(mesOrderSn);
+	}
+	
+	/**
+	 * 查询分页数据
+	 * @param mesOrderSn 查询条件
+	 * @param mesOrderSn.page 分页对象
+	 * @return
+	 */
+	@Override
+	public Page<MesOrderSn> findPage(MesOrderSn mesOrderSn) {
+		return super.findPage(mesOrderSn);
+	}
+	
+	/**
+	 * 查询列表数据
+	 * @param mesOrderSn
+	 * @return
+	 */
+	@Override
+	public List<MesOrderSn> findList(MesOrderSn mesOrderSn) {
+		return super.findList(mesOrderSn);
+	}
+	
+	/**
+	 * 保存数据(插入或更新)
+	 * @param mesOrderSn
+	 */
+	@Override
+	@Transactional
+	public void save(MesOrderSn mesOrderSn) {
+		super.save(mesOrderSn);
+	}
+	
+	/**
+	 * 更新状态
+	 * @param mesOrderSn
+	 */
+	@Override
+	@Transactional
+	public void updateStatus(MesOrderSn mesOrderSn) {
+		super.updateStatus(mesOrderSn);
+	}
+	
+	/**
+	 * 删除数据
+	 * @param mesOrderSn
+	 */
+	@Override
+	@Transactional
+	public void delete(MesOrderSn mesOrderSn) {
+		super.delete(mesOrderSn);
+	}
+	
+}

+ 10 - 1
src/main/java/com/jeesite/modules/mes/web/MesMaterialRkController.java

@@ -205,7 +205,15 @@ public class MesMaterialRkController extends BaseController {
 //			resp.setMessage("物料不存在!");
 //			return resp;
 //		}
-
+		MesMaterial mesMaterial = new MesMaterial();
+		mesMaterial.setErpSn(erpSn);
+		List<MesMaterial> list = mesMaterialService.findList(mesMaterial);
+		if (list.isEmpty()){
+			resp.setResult(Global.FALSE);
+			resp.setMessage("没有此物料");
+			return resp;
+		}
+		String unit=list.get(0).getUnit();
 		HashMap<String, Object> data = new HashMap<>();
 //		data.put("materialCode", materialCode);       // 来料码
 		data.put("docTypeCode", docTypeCode);         // ERP代码/单据类型编码
@@ -216,6 +224,7 @@ public class MesMaterialRkController extends BaseController {
 		data.put("produceDate", produceDate);         // 生产日期
 		data.put("lotCode", lotCode);                 // 生产批次/批号
 		data.put("pcQty", pcQty);                         // 批次数量
+		data.put("unit", unit);                         // 单位
 
 		resp.setData(data);
 		resp.setResult(Global.TRUE);

+ 157 - 0
src/main/java/com/jeesite/modules/mes/web/MesOrderSnController.java

@@ -0,0 +1,157 @@
+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.StringUtils;
+import com.jeesite.modules.erp.entity.MesProductOrder;
+import com.jeesite.modules.erp.service.MesProductOrderService;
+import com.jeesite.modules.mes.resp.CommonResp;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.jeesite.common.config.Global;
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.MesOrderSn;
+import com.jeesite.modules.mes.service.MesOrderSnService;
+
+/**
+ * 生产订单工件表Controller
+ * @author sxl
+ * @version 2026-07-18
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesOrderSn")
+public class MesOrderSnController extends BaseController {
+
+	@Autowired
+	private MesOrderSnService mesOrderSnService;
+	@Autowired
+	private MesProductOrderService mesProductOrderService;
+
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesOrderSn get(String id, boolean isNewRecord) {
+		return mesOrderSnService.get(id, isNewRecord);
+	}
+
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesOrderSn:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesOrderSn mesOrderSn, Model model) {
+		model.addAttribute("mesOrderSn", mesOrderSn);
+		return "modules/mes/mesOrderSnList";
+	}
+
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesOrderSn:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesOrderSn> listData(MesOrderSn mesOrderSn, HttpServletRequest request, HttpServletResponse response) {
+		mesOrderSn.setPage(new Page<>(request, response));
+		Page<MesOrderSn> page = mesOrderSnService.findPage(mesOrderSn);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesOrderSn:view")
+	@RequestMapping(value = "form")
+	public String form(MesOrderSn mesOrderSn, Model model) {
+		model.addAttribute("mesOrderSn", mesOrderSn);
+		return "modules/mes/mesOrderSnForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesOrderSn:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesOrderSn mesOrderSn) {
+		mesOrderSnService.save(mesOrderSn);
+		return renderResult(Global.TRUE, text("保存生产订单工件表成功!"));
+	}
+
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesOrderSn:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesOrderSn mesOrderSn) {
+		mesOrderSnService.delete(mesOrderSn);
+		return renderResult(Global.TRUE, text("删除生产订单工件表成功!"));
+	}
+
+	/**
+	 * 生产订单绑定工件码
+	 * @param mesOrderSn
+	 * @return
+	 */
+	@RequestMapping(value = "bandSn")
+	@ResponseBody
+	public String bandSn(MesOrderSn mesOrderSn) {
+		if (mesOrderSn == null || StringUtils.isBlank(mesOrderSn.getOrderId())) {
+			return renderResult(Global.FALSE, text("订单编码不能为空!"));
+		}
+		if (StringUtils.isBlank(mesOrderSn.getSn())) {
+			return renderResult(Global.FALSE, text("工件码不能为空!"));
+		}
+		MesOrderSn query = new MesOrderSn();
+		query.setSn(mesOrderSn.getSn());
+		List<MesOrderSn> list = mesOrderSnService.findList(query);
+		if(!list.isEmpty()){
+			return renderResult(Global.FALSE, text("该工件已和生产订单绑定!"));
+		}
+		mesOrderSnService.save(mesOrderSn);
+		return renderResult(Global.TRUE, text("保存成功!"));
+	}
+
+	/**
+	 * 生产订单列表
+	 * @param mesProductOrder
+	 * @return
+	 */
+	@RequestMapping(value = "orderList")
+	@ResponseBody
+	public CommonResp<List<Map<String, Object>>> orderList(MesProductOrder mesProductOrder) {
+		CommonResp<List<Map<String, Object>>> resp = new CommonResp<>();
+		//展示所有未结束的订单
+		mesProductOrder.setState("1");//0=草稿 1=下发 2=完成
+		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());
+			MesOrderSn query = new MesOrderSn();
+			query.setOrderId(order.getSn());
+			item.put("qty", mesOrderSnService.findCount(query));
+			data.add(item);
+		}
+		resp.setData(data);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
+	}
+
+}

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

@@ -218,10 +218,14 @@ public class MesProductRecordController extends BaseController {
 	private MesProductOprnoService mesProductOprnoService;
     @Autowired
     private MesProductTimesService mesProductTimesService;
-    @Autowired
+	@Autowired
     private MesProductSampleService mesProductSampleService;
 	@Autowired
 	private MesProductSampleRecordService mesProductSampleRecordService;
+	@Autowired
+	private MesOrderSnService mesOrderSnService;
+	@Autowired
+	private MesMaterialLlService mesMaterialLlService;
 
 
 	/**
@@ -841,7 +845,23 @@ public class MesProductRecordController extends BaseController {
 	@RequiresPermissions("mes:mesProductRecord:view")
 	@RequestMapping(value = "info")
 	public String info(MesProductRecord mesProductRecord, Model model) {
+		String lotCode = "";
+		if (mesProductRecord != null && StringUtils.isNotBlank(mesProductRecord.getSn())) {
+			MesOrderSn orderSnQuery = new MesOrderSn();
+			orderSnQuery.setSn(mesProductRecord.getSn());
+			List<MesOrderSn> orderSnList = mesOrderSnService.findList(orderSnQuery);
+			if (orderSnList != null && !orderSnList.isEmpty()
+					&& StringUtils.isNotBlank(orderSnList.get(0).getOrderId())) {
+				MesMaterialLl llQuery = new MesMaterialLl();
+				llQuery.setMoDocNo(orderSnList.get(0).getOrderId());
+				List<MesMaterialLl> llList = mesMaterialLlService.findList(llQuery);
+				if (!llList.isEmpty()){
+					lotCode=llList.get(0).getLotCode();
+				}
+			}
+		}
 		model.addAttribute("mesProductRecord", mesProductRecord);
+		model.addAttribute("lotCode", lotCode);
 		return "modules/mes/mesProductRecordInfo";
 	}
 

+ 3 - 3
src/main/java/com/jeesite/modules/scheduling/SmeltingScheduling.java

@@ -85,7 +85,7 @@ public class SmeltingScheduling {
             mesSmelting.setAtmosphereTemperature(toStr(atmosphere));
             mesSmelting.setExhaustGasTemperature(toStr(exhaustGas));
             mesSmelting.setMeltingTemperature(toStr(melting));
-            mesSmelting.setHeatNumber("一号炉");
+            mesSmelting.setHeatNumber("二号炉");
 
             mesSmeltingService.save(mesSmelting);
 
@@ -114,7 +114,7 @@ public class SmeltingScheduling {
     /**
      * 每 30 秒采集一次 一号机
      */
-//    @Scheduled(fixedRate = 60000)
+    @Scheduled(fixedRate = 60000)
     public void collect2() {
         // 采集开关:未配置则默认启用
         String enabled = Global.getConfig("mes.smelting2.enabled");
@@ -141,7 +141,7 @@ public class SmeltingScheduling {
             mesSmelting.setAtmosphereTemperature(toStr(atmosphere));
             mesSmelting.setExhaustGasTemperature(toStr(exhaustGas));
             mesSmelting.setMeltingTemperature(toStr(melting));
-            mesSmelting.setHeatNumber("二号炉");
+            mesSmelting.setHeatNumber("一号炉");
 
             mesSmeltingService.save(mesSmelting);
 

+ 21 - 21
src/main/resources/config/application.yml

@@ -53,8 +53,8 @@ jdbc:
   # Mysql 数据库配置
   type: mysql
   driver: com.mysql.cj.jdbc.Driver
-  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-#  url: jdbc:mysql://10.0.20.10:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+#  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://10.0.20.10:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.22.99:3306/mes_cloud?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  username: mes_cloud
 #  password: YD57bSRabiyWBwkZ
@@ -65,25 +65,25 @@ jdbc:
 
 
 #     多数据源
-#  dataSourceNames : tianHong
-#  tianHong:
-#    type: mysql
-#    driver: com.mysql.cj.jdbc.Driver
-#    url: jdbc:mysql://127.0.0.1:3390/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-#    username: root
-#    password: 123456
-#    testSql: SELECT 1
-#    encrypt:
-#      username: false
-#      password: false      # 注意:主库 password 加密是 true,新库如果密码是明文要设为 false
-#    pool:
-#      init: 1
-#      minIdle: 3
-#      maxActive: 20
-#
-##   这边表示这个jeesite.modules.tianHong.dao路径映射到从库
-#  mybatisDaoAndDataSourceMappings: |
-#    com.jeesite.modules.tianHong.dao = tianHong
+  dataSourceNames : tianHong
+  tianHong:
+    type: mysql
+    driver: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://10.0.10.19:3306/bzh?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+    username: MES
+    password: jsth123123#
+    testSql: SELECT 1
+    encrypt:
+      username: false
+      password: false      # 注意:主库 password 加密是 true,新库如果密码是明文要设为 false
+    pool:
+      init: 1
+      minIdle: 3
+      maxActive: 20
+
+#   这边表示这个jeesite.modules.tianHong.dao路径映射到从库
+  mybatisDaoAndDataSourceMappings: |
+    com.jeesite.modules.tianHong.dao = tianHong
 
 #  # Oracle 数据库配置(若使用 12c,请修改 /modules/core/pom.xml 文件,打开 12c 依赖,去掉 11g 依赖)
 #  type: oracle

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

+ 9 - 0
src/main/resources/views/modules/mes/mesMaterialForm.html

@@ -44,6 +44,15 @@
 					<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="unit" 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="imgSn" maxlength="255" class="form-control"/>

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

@@ -91,6 +91,7 @@ $('#dataGrid').dataGrid({
 		{header:'${text("部件名称")}', name:'title', index:'a.title', width:200, align:"center", frozen:true},
 		{header:'${text("部件规格")}', name:'spec', index:'a.spec', width:200, align:"center"},
 		{header:'${text("ERP编码")}', name:'erpSn', index:'a.erp_sn', width:150, align:"center"},
+		{header:'${text("单位")}', name:'unit', index:'a.unit', width:100, align:"center"},
 		{header:'${text("内部图号")}', name:'imgSn', index:'a.img_sn', width:200, align:"center"},
 		{header:'${text("数量/套")}', name:'nums', index:'a.nums', width:100, align:"center"},
 		{header:'${text("加工属性")}', name:'attr', index:'a.attr', width:150, align:"center"},

+ 64 - 0
src/main/resources/views/modules/mes/mesOrderSnForm.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(mesOrderSn.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="${mesOrderSn}" action="${ctx}/mes/mesOrderSn/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="orderId" 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:mesOrderSn:edit')){ %>
+							<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
+						<% } %>
+						<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
+					</div>
+				</div>
+			</div>
+		</#form:form>
+	</div>
+</div>
+<% } %>
+<script>
+$("#inputForm").validate({
+	submitHandler: function(form){
+		js.ajaxSubmitForm($(form), function(data){
+			js.showMessage(data.message);
+			if(data.result == Global.TRUE){
+				js.closeCurrentTabPage(function(contentWindow){
+					contentWindow.page();
+				});
+			}
+		}, "json");
+    }
+});
+</script>

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

@@ -0,0 +1,66 @@
+<% layout('/layouts/default.html', {title: '生产订单工件表管理', libs: ['dataGrid']}){ %>
+<div class="main-content">
+	<div class="box box-main">
+		<div class="box-header">
+			<div class="box-title">
+				<i class="fa icon-notebook"></i> ${text('生产订单工件表管理')}
+			</div>
+			<div class="box-tools pull-right">
+				<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
+				<% if(hasPermi('mes:mesOrderSn:edit')){ %>
+					<a href="${ctx}/mes/mesOrderSn/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="${mesOrderSn}" action="${ctx}/mes/mesOrderSn/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="orderId" 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').dataGrid({
+	searchForm: $("#searchForm"),
+	columnModel: [
+		{header:'${text("订单编码")}', name:'orderId', index:'a.order_id', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesOrderSn/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:mesOrderSn:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesOrderSn/form?id='+row.id+'" class="btnList" title="${text("编辑生产订单工件表")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesOrderSn/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>

+ 4 - 0
src/main/resources/views/modules/mes/mesProductRecordInfo.html

@@ -17,6 +17,10 @@
 					<td>${mesProductRecord.sn}</td>
 				</tr>
 				<tr>
+					<th class="mpc-header">批号编码</th>
+					<td>${lotCode!}</td>
+				</tr>
+				<tr>
 					<th class="mpc-header">工位号</th>
 					<td>${mesProductRecord.oprno}</td>
 				</tr>