Bladeren bron

滚筒线接口,FSW接口优化,订单绑定优化

sunxianglong 2 maanden geleden
bovenliggende
commit
88b566ca31
24 gewijzigde bestanden met toevoegingen van 1091 en 149 verwijderingen
  1. 2 2
      src/main/java/com/jeesite/modules/mes/dao/MesProductFswDao.java
  2. 1 1
      src/main/java/com/jeesite/modules/mes/dao/MesScrewDao.java
  3. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesScrewInfoDao.java
  4. 46 19
      src/main/java/com/jeesite/modules/mes/entity/MesProductFsw.java
  5. 120 9
      src/main/java/com/jeesite/modules/mes/entity/MesScrew.java
  6. 86 0
      src/main/java/com/jeesite/modules/mes/entity/MesScrewInfo.java
  7. 2 2
      src/main/java/com/jeesite/modules/mes/service/MesProductFswService.java
  8. 81 0
      src/main/java/com/jeesite/modules/mes/service/MesScrewInfoService.java
  9. 1 1
      src/main/java/com/jeesite/modules/mes/service/MesScrewService.java
  10. 9 9
      src/main/java/com/jeesite/modules/mes/web/MesMaterialReportController.java
  11. 3 1
      src/main/java/com/jeesite/modules/mes/web/MesOrderSnController.java
  12. 39 2
      src/main/java/com/jeesite/modules/mes/web/MesOrderSnJjController.java
  13. 9 38
      src/main/java/com/jeesite/modules/mes/web/MesProductFswController.java
  14. 106 5
      src/main/java/com/jeesite/modules/mes/web/MesScrewController.java
  15. 97 0
      src/main/java/com/jeesite/modules/mes/web/MesScrewInfoController.java
  16. 46 28
      src/main/java/com/jeesite/modules/scheduling/FswModbusScheduling.java
  17. 1 0
      src/main/resources/config/application.yml
  18. 15 0
      src/main/resources/mappings/modules/mes/MesScrewInfoDao.xml
  19. 31 4
      src/main/resources/views/modules/mes/mesProductFswForm.html
  20. 55 23
      src/main/resources/views/modules/mes/mesProductFswList.html
  21. 90 2
      src/main/resources/views/modules/mes/mesScrewForm.html
  22. 91 0
      src/main/resources/views/modules/mes/mesScrewInfoForm.html
  23. 86 0
      src/main/resources/views/modules/mes/mesScrewInfoList.html
  24. 59 3
      src/main/resources/views/modules/mes/mesScrewList.html

+ 2 - 2
src/main/java/com/jeesite/modules/mes/dao/MesProductFswDao.java

@@ -6,8 +6,8 @@ import com.jeesite.modules.mes.entity.MesProductFsw;
 
 /**
  * FSW过程参数DAO接口
- * @author hzd
- * @version 2024-03-02
+ * @author sxl
+ * @version 2026-08-17
  */
 @MyBatisDao
 public interface MesProductFswDao extends CrudDao<MesProductFsw> {

+ 1 - 1
src/main/java/com/jeesite/modules/mes/dao/MesScrewDao.java

@@ -7,7 +7,7 @@ import com.jeesite.modules.mes.entity.MesScrew;
 /**
  * mes_screwDAO接口
  * @author sxl
- * @version 2026-08-14
+ * @version 2026-08-17
  */
 @MyBatisDao
 public interface MesScrewDao extends CrudDao<MesScrew> {

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesScrewInfoDao.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.MesScrewInfo;
+
+/**
+ * 锁付数据详情表DAO接口
+ * @author sxl
+ * @version 2026-08-17
+ */
+@MyBatisDao
+public interface MesScrewInfoDao extends CrudDao<MesScrewInfo> {
+	
+}

+ 46 - 19
src/main/java/com/jeesite/modules/mes/entity/MesProductFsw.java

@@ -7,23 +7,25 @@ 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.Date;
-
 /**
  * FSW过程参数Entity
- * @author hzd
- * @version 2024-03-02
+ * @author sxl
+ * @version 2026-08-17
  */
 @Table(name="mes_product_fsw", alias="a", label="FSW过程参数信息", columns={
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="sn", attrName="sn", label="工件码"),
 		@Column(name="line_sn", attrName="lineSn", label="产线编号"),
 		@Column(name="oprno", attrName="oprno", label="工位号"),
-		@Column(name="spindle_speed", attrName="spindleSpeed", label="主轴转速"),
-		@Column(name="feed_rate", attrName="feedRate", label="进给速度"),
+		@Column(name="spindle_speed", attrName="spindleSpeed", label="主轴转速", comment="主轴转速(转速/程序运行时间)"),
+		@Column(name="spindle_rate", attrName="spindleRate", label="主轴倍率"),
+		@Column(name="feed_rate", attrName="feedRate", label="进给倍率", comment="进给倍率(进给/程序运行时间)"),
+		@Column(name="feed_speed", attrName="feedSpeed", label="进给速度"),
 		@Column(name="pressure", attrName="pressure", label="焊接压力"),
-		@Column(name="create_by", attrName="createBy", label="操作人员", isUpdate=false),
-		@Column(name="create_date", attrName="createDate", label="日期", isUpdate=false, isUpdateForce=true),
+		@Column(name="pyl", attrName="pyl", label="偏移量"),
+		@Column(name="jd", attrName="jd", label="B轴角度"),
+		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false, isQuery=false),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
 	}, orderBy="a.id DESC"
 )
 public class MesProductFsw extends DataEntity<MesProductFsw> {
@@ -32,9 +34,13 @@ public class MesProductFsw extends DataEntity<MesProductFsw> {
 	private String sn;		// 工件码
 	private String lineSn;		// 产线编号
 	private String oprno;		// 工位号
-	private String spindleSpeed;		// 主轴转速
-	private String feedRate;		// 进给速度
+	private String spindleSpeed;		// 主轴转速(转速/程序运行时间)
+	private String spindleRate;		// 主轴倍率
+	private String feedRate;		// 进给倍率(进给/程序运行时间)
+	private String feedSpeed;		// 进给速度
 	private String pressure;		// 焊接压力
+	private String pyl;		// 偏移量
+	private String jd;		// B轴角度
 
 	public MesProductFsw() {
 		this(null);
@@ -80,7 +86,16 @@ public class MesProductFsw extends DataEntity<MesProductFsw> {
 		this.spindleSpeed = spindleSpeed;
 	}
 	
-	@Size(min=0, max=1000, message="进给速度长度不能超过 1000 个字符")
+	@Size(min=0, max=1000, message="主轴倍率长度不能超过 1000 个字符")
+	public String getSpindleRate() {
+		return spindleRate;
+	}
+
+	public void setSpindleRate(String spindleRate) {
+		this.spindleRate = spindleRate;
+	}
+	
+	@Size(min=0, max=1000, message="进给倍率长度不能超过 1000 个字符")
 	public String getFeedRate() {
 		return feedRate;
 	}
@@ -89,6 +104,16 @@ public class MesProductFsw extends DataEntity<MesProductFsw> {
 		this.feedRate = feedRate;
 	}
 	
+	@Size(min=0, max=255, message="进给速度长度不能超过 255 个字符")
+	public String getFeedSpeed() {
+		return feedSpeed;
+	}
+
+	public void setFeedSpeed(String feedSpeed) {
+		this.feedSpeed = feedSpeed;
+	}
+	
+	@Size(min=0, max=255, message="焊接压力长度不能超过 255 个字符")
 	public String getPressure() {
 		return pressure;
 	}
@@ -97,20 +122,22 @@ public class MesProductFsw extends DataEntity<MesProductFsw> {
 		this.pressure = pressure;
 	}
 	
-	public Date getCreateDate_gte() {
-		return sqlMap.getWhere().getValue("create_date", QueryType.GTE);
+	@Size(min=0, max=255, message="偏移量长度不能超过 255 个字符")
+	public String getPyl() {
+		return pyl;
 	}
 
-	public void setCreateDate_gte(Date createDate) {
-		sqlMap.getWhere().and("create_date", QueryType.GTE, createDate);
+	public void setPyl(String pyl) {
+		this.pyl = pyl;
 	}
 	
-	public Date getCreateDate_lte() {
-		return sqlMap.getWhere().getValue("create_date", QueryType.LTE);
+	@Size(min=0, max=255, message="B轴角度长度不能超过 255 个字符")
+	public String getJd() {
+		return jd;
 	}
 
-	public void setCreateDate_lte(Date createDate) {
-		sqlMap.getWhere().and("create_date", QueryType.LTE, createDate);
+	public void setJd(String jd) {
+		this.jd = jd;
 	}
 	
 }

+ 120 - 9
src/main/java/com/jeesite/modules/mes/entity/MesScrew.java

@@ -5,22 +5,44 @@ 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;
+
+import java.util.List;
 
 /**
  * mes_screwEntity
  * @author sxl
- * @version 2026-08-14
+ * @version 2026-08-17
  */
 @Table(name="mes_screw", alias="a", label="mes_screw信息", columns={
 		@Column(name="id", attrName="id", label="id", isPK=true),
-		@Column(name="ww", attrName="ww", label="add"),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="oprno", attrName="oprno", label="工位号"),
+		@Column(name="screw_no", attrName="screwNo", label="螺丝序号"),
+		@Column(name="screw_task", attrName="screwTask", label="锁付任务号"),
+		@Column(name="screw_toquer", attrName="screwToquer", label="锁付扭力"),
+		@Column(name="screw_ring", attrName="screwRing", label="锁付圈数"),
+		@Column(name="screw_time", attrName="screwTime", label="锁付时长"),
+		@Column(name="result", attrName="result", label="结果"),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="batch_id", attrName="batchId", label="批次ID"),
 	}, orderBy="a.id DESC"
 )
 public class MesScrew extends DataEntity<MesScrew> {
 	
 	private static final long serialVersionUID = 1L;
-	private String ww;		// add
+	private String sn;		// 工件码
+	private String oprno;		// 工位号
+	private String screwNo;		// 螺丝序号
+	private String screwTask;		// 锁付任务号
+	private String screwToquer;		// 锁付扭力
+	private String screwRing;		// 锁付圈数
+	private String screwTime;		// 锁付时长
+	private String result;		// 结果
+	private String batchId;		// 批次ID
+	/** 产线编号(批量上传请求用,不落 mes_screw 表) */
+	private String lineSn;
+	/** 明细列表(批量上传请求用) */
+	private List<MesScrew> data;
 
 	public MesScrew() {
 		this(null);
@@ -30,13 +52,102 @@ public class MesScrew extends DataEntity<MesScrew> {
 		super(id);
 	}
 	
-	@Size(min=0, max=255, message="add长度不能超过 255 个字符")
-	public String getWw() {
-		return ww;
+	@Size(min=0, max=255, message="工件码长度不能超过 255 个字符")
+	public String getSn() {
+		return sn;
+	}
+
+	public void setSn(String sn) {
+		this.sn = sn;
+	}
+	
+	@Size(min=0, max=64, message="工位号长度不能超过 64 个字符")
+	public String getOprno() {
+		return oprno;
+	}
+
+	public void setOprno(String oprno) {
+		this.oprno = oprno;
+	}
+	
+	@Size(min=0, max=255, message="螺丝序号长度不能超过 255 个字符")
+	public String getScrewNo() {
+		return screwNo;
+	}
+
+	public void setScrewNo(String screwNo) {
+		this.screwNo = screwNo;
+	}
+	
+	@Size(min=0, max=255, message="锁付任务号长度不能超过 255 个字符")
+	public String getScrewTask() {
+		return screwTask;
+	}
+
+	public void setScrewTask(String screwTask) {
+		this.screwTask = screwTask;
+	}
+	
+	@Size(min=0, max=255, message="锁付扭力长度不能超过 255 个字符")
+	public String getScrewToquer() {
+		return screwToquer;
+	}
+
+	public void setScrewToquer(String screwToquer) {
+		this.screwToquer = screwToquer;
+	}
+	
+	@Size(min=0, max=255, message="锁付圈数长度不能超过 255 个字符")
+	public String getScrewRing() {
+		return screwRing;
+	}
+
+	public void setScrewRing(String screwRing) {
+		this.screwRing = screwRing;
+	}
+	
+	@Size(min=0, max=255, message="锁付时长长度不能超过 255 个字符")
+	public String getScrewTime() {
+		return screwTime;
+	}
+
+	public void setScrewTime(String screwTime) {
+		this.screwTime = screwTime;
+	}
+	
+	@Size(min=0, max=64, message="结果长度不能超过 64 个字符")
+	public String getResult() {
+		return result;
+	}
+
+	public void setResult(String result) {
+		this.result = result;
+	}
+	
+	@Size(min=0, max=255, message="批次ID长度不能超过 255 个字符")
+	public String getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(String batchId) {
+		this.batchId = batchId;
+	}
+
+	@Size(min=0, max=64, message="产线编号长度不能超过 64 个字符")
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
+
+	public List<MesScrew> getData() {
+		return data;
 	}
 
-	public void setWw(String ww) {
-		this.ww = ww;
+	public void setData(List<MesScrew> data) {
+		this.data = data;
 	}
 	
 }

+ 86 - 0
src/main/java/com/jeesite/modules/mes/entity/MesScrewInfo.java

@@ -0,0 +1,86 @@
+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-08-17
+ */
+@Table(name="mes_screw_info", alias="a", label="锁付数据详情表信息", columns={
+		@Column(name="id", attrName="id", label="id", isPK=true),
+		@Column(name="sn", attrName="sn", label="工件码"),
+		@Column(name="oprno", attrName="oprno", label="工位号"),
+		@Column(name="line_sn", attrName="lineSn", label="产线编号"),
+		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
+		@Column(name="batch", attrName="batch", label="批次"),
+		@Column(name="count", attrName="count", label="总数", isUpdateForce=true),
+	}, orderBy="a.id DESC"
+)
+public class MesScrewInfo extends DataEntity<MesScrewInfo> {
+	
+	private static final long serialVersionUID = 1L;
+	private String sn;		// 工件码
+	private String oprno;		// 工位号
+	private String lineSn;		// 产线编号
+	private String batch;		// 批次
+	private Integer count;		// 总数
+
+	public MesScrewInfo() {
+		this(null);
+	}
+	
+	public MesScrewInfo(String id){
+		super(id);
+	}
+	
+	@Size(min=0, max=64, message="工件码长度不能超过 64 个字符")
+	public String getSn() {
+		return sn;
+	}
+
+	public void setSn(String sn) {
+		this.sn = sn;
+	}
+	
+	@Size(min=0, max=64, message="工位号长度不能超过 64 个字符")
+	public String getOprno() {
+		return oprno;
+	}
+
+	public void setOprno(String oprno) {
+		this.oprno = oprno;
+	}
+	
+	@Size(min=0, max=64, message="产线编号长度不能超过 64 个字符")
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
+	
+	@Size(min=0, max=100, message="批次长度不能超过 100 个字符")
+	public String getBatch() {
+		return batch;
+	}
+
+	public void setBatch(String batch) {
+		this.batch = batch;
+	}
+	
+	public Integer getCount() {
+		return count;
+	}
+
+	public void setCount(Integer count) {
+		this.count = count;
+	}
+	
+}

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

@@ -11,8 +11,8 @@ import com.jeesite.modules.mes.dao.MesProductFswDao;
 
 /**
  * FSW过程参数Service
- * @author hzd
- * @version 2024-03-02
+ * @author sxl
+ * @version 2026-08-17
  */
 @Service
 public class MesProductFswService extends CrudService<MesProductFswDao, MesProductFsw> {

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

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

@@ -12,7 +12,7 @@ import com.jeesite.modules.mes.dao.MesScrewDao;
 /**
  * mes_screwService
  * @author sxl
- * @version 2026-08-14
+ * @version 2026-08-17
  */
 @Service
 public class MesScrewService extends CrudService<MesScrewDao, MesScrew> {

+ 9 - 9
src/main/java/com/jeesite/modules/mes/web/MesMaterialReportController.java

@@ -273,15 +273,15 @@ public class MesMaterialReportController extends BaseController {
 		}
 
 		//检查物料码是否已报检
-		MesMaterialReport mesMaterialReport = new MesMaterialReport();
-		mesMaterialReport.setSn(materialCode);
-		mesMaterialReport.setStatus("0");
-		MesMaterialReport mesMaterialReport12 = mesMaterialReportService.findInfo(mesMaterialReport);
-		if(!ObjectUtils.isEmpty(mesMaterialReport12)){
-			resp.setResult(Global.FALSE);
-			resp.setMessage("该批物料已报检,勿重复操作!");
-			return resp;
-		}
+//		MesMaterialReport mesMaterialReport = new MesMaterialReport();
+//		mesMaterialReport.setSn(materialCode);
+//		mesMaterialReport.setStatus("0");
+//		MesMaterialReport mesMaterialReport12 = mesMaterialReportService.findInfo(mesMaterialReport);
+//		if(!ObjectUtils.isEmpty(mesMaterialReport12)){
+//			resp.setResult(Global.FALSE);
+//			resp.setMessage("该批物料已报检,勿重复操作!");
+//			return resp;
+//		}
 
 		MesMaterialReport mesMaterialReport1 = new MesMaterialReport();
 		mesMaterialReport1.setSn(materialCode);

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

@@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.jeesite.common.config.Global;
 import com.jeesite.common.entity.Page;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
 import com.jeesite.common.web.BaseController;
 import com.jeesite.modules.mes.entity.MesOrderSn;
 import com.jeesite.modules.mes.service.MesOrderSnService;
@@ -225,8 +226,9 @@ public class MesOrderSnController extends BaseController {
 	@ResponseBody
 	public CommonResp<List<Map<String, Object>>> orderList(MesProductOrder mesProductOrder) {
 		CommonResp<List<Map<String, Object>>> resp = new CommonResp<>();
-		//展示所有未结束的订单
+		//展示所有未结束的订单(产线编号以 B0110 开头)
 		mesProductOrder.setState("1");//0=草稿 1=下发 2=完成
+		mesProductOrder.getSqlMap().getWhere().and("a.line_sn", QueryType.RIGHT_LIKE, "B0110");
 		List<MesProductOrder> list = mesProductOrderService.findList(mesProductOrder);
 		List<Map<String, Object>> data = new ArrayList<>();
 		for (MesProductOrder order : list) {

+ 39 - 2
src/main/java/com/jeesite/modules/mes/web/MesOrderSnJjController.java

@@ -1,13 +1,20 @@
 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;
@@ -42,6 +49,8 @@ public class MesOrderSnJjController extends BaseController {
 	@Autowired
 	private MesOrderSnJjService mesOrderSnJjService;
 	@Autowired
+	private MesProductOrderService mesProductOrderService;
+	@Autowired
 	private MesProductService mesProductService;
 	@Autowired
 	private MesLineService mesLineService;
@@ -150,9 +159,9 @@ public class MesOrderSnJjController extends BaseController {
 		if (user != null && StringUtils.isNotEmpty(user.getUserCode())) {
 			userCode = user.getUserCode();
 		}
-		String ret = mesProductRecordController.checkQualityCommon("OP180", sn, lineSn, userCode);
+		String ret = mesProductRecordController.checkQualityCommon("OP170", sn, lineSn, userCode);
 		String checkret = ret.substring(3, 5);
-		// OP180 允许本工位已加工(OK/NG)时仍可绑定订单
+		// OP170 允许本工位已加工(OK/NG)时仍可绑定订单
 		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)));
@@ -168,4 +177,32 @@ public class MesOrderSnJjController extends BaseController {
 		return renderResult(Global.TRUE, text("保存成功!"));
 	}
 
+	/**
+	 * 机加生产订单列表(产线编号以 B0106 开头)
+	 * @param mesProductOrder
+	 * @return
+	 */
+	@RequestMapping(value = "orderList")
+	@ResponseBody
+	public CommonResp<List<Map<String, Object>>> orderList(MesProductOrder mesProductOrder) {
+		CommonResp<List<Map<String, Object>>> resp = new CommonResp<>();
+		//展示所有未结束的订单(产线编号以 B0106 开头)
+		mesProductOrder.setState("1");//0=草稿 1=下发 2=完成
+		mesProductOrder.getSqlMap().getWhere().and("a.line_sn", QueryType.RIGHT_LIKE, "B0106");
+		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());
+			MesOrderSnJj query = new MesOrderSnJj();
+			query.setOrderJj(order.getSn());
+			item.put("qty", mesOrderSnJjService.findCount(query));
+			data.add(item);
+		}
+		resp.setData(data);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
+	}
+
 }

+ 9 - 38
src/main/java/com/jeesite/modules/mes/web/MesProductFswController.java

@@ -4,14 +4,9 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.jeesite.common.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.Model;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.ModelAttribute;
@@ -27,8 +22,8 @@ import com.jeesite.modules.mes.service.MesProductFswService;
 
 /**
  * FSW过程参数Controller
- * @author hzd
- * @version 2024-03-02
+ * @author sxl
+ * @version 2026-08-17
  */
 @Controller
 @RequestMapping(value = "${adminPath}/mes/mesProductFsw")
@@ -87,40 +82,16 @@ public class MesProductFswController extends BaseController {
 		mesProductFswService.save(mesProductFsw);
 		return renderResult(Global.TRUE, text("保存FSW过程参数成功!"));
 	}
-
+	
 	/**
-	 * 接口保存数据
+	 * 删除数据
 	 */
-	@PostMapping(value = "add")
+	@RequiresPermissions("mes:mesProductFsw:edit")
+	@RequestMapping(value = "delete")
 	@ResponseBody
-	@Transactional
-	public String add(HttpServletRequest request) {
-//		String params = request.getParameter("params");
-		String oprno = request.getParameter("oprno");
-		String lineSn = request.getParameter("lineSn");
-		String sn = request.getParameter("sn");
-		String ucode = request.getParameter("ucode");
-		String feedRate = request.getParameter("feedRate");
-		String pressure = request.getParameter("pressure");
-		String spindleSpeed = request.getParameter("spindleSpeed");
-
-		logger.info("");
-
-		if(StringUtils.isEmpty(feedRate) ||StringUtils.isEmpty(pressure) ||StringUtils.isEmpty(spindleSpeed) || StringUtils.isEmpty(oprno) || StringUtils.isEmpty(lineSn) || StringUtils.isEmpty(sn)){
-			return renderResult(Global.FALSE, text("参数错误!"));
-		}
-
-		MesProductFsw mesProductFsw = new MesProductFsw();
-		mesProductFsw.setSn(sn);
-		mesProductFsw.setOprno(oprno);
-		mesProductFsw.setLineSn(lineSn);
-		mesProductFsw.setCreateBy(ucode);
-		mesProductFsw.setFeedRate(feedRate);
-		mesProductFsw.setPressure(pressure);
-		mesProductFsw.setSpindleSpeed(spindleSpeed);
-		mesProductFswService.save(mesProductFsw);
-
-		return renderResult(Global.TRUE, text("操作成功!"));
+	public String delete(MesProductFsw mesProductFsw) {
+		mesProductFswService.delete(mesProductFsw);
+		return renderResult(Global.TRUE, text("删除FSW过程参数成功!"));
 	}
 	
 }

+ 106 - 5
src/main/java/com/jeesite/modules/mes/web/MesScrewController.java

@@ -1,29 +1,44 @@
 package com.jeesite.modules.mes.web;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.jeesite.common.collect.ListUtils;
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.modules.mes.entity.MesMaterialPrebind;
+import com.jeesite.modules.mes.entity.MesScrew;
+import com.jeesite.modules.mes.entity.MesScrewInfo;
+import com.jeesite.modules.mes.entity.MesToolLife;
+import com.jeesite.modules.mes.resp.BindMaterialResp;
+import com.jeesite.modules.mes.service.MesLineProcessMaterialService;
+import com.jeesite.modules.mes.service.MesMaterialPrebindService;
+import com.jeesite.modules.mes.service.MesScrewInfoService;
+import com.jeesite.modules.mes.service.MesScrewService;
+import com.jeesite.modules.mes.service.MesToolLifeService;
+import com.jeesite.modules.utils.DateLocalUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 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.RequestBody;
 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.MesScrew;
-import com.jeesite.modules.mes.service.MesScrewService;
 
 /**
  * mes_screwController
  * @author sxl
- * @version 2026-08-14
+ * @version 2026-08-17
  */
 @Controller
 @RequestMapping(value = "${adminPath}/mes/mesScrew")
@@ -31,8 +46,14 @@ public class MesScrewController extends BaseController {
 
 	@Autowired
 	private MesScrewService mesScrewService;
-
-
+	@Autowired
+	private MesScrewInfoService mesScrewInfoService;
+	@Autowired
+	private MesLineProcessMaterialService mesLineProcessMaterialService;
+	@Autowired
+	private MesMaterialPrebindService mesMaterialPrebindService;
+	@Autowired
+	private MesToolLifeService mesToolLifeService;
 
 	/**
 	 * 查询列表
@@ -88,4 +109,84 @@ public class MesScrewController extends BaseController {
 		return renderResult(Global.TRUE, text("删除mes_screw成功!"));
 	}
 
+	/**
+	 * 锁付参数批量上传(逻辑同 mesElectricTorque/batchSave)
+	 */
+	@RequestMapping(value = "batchSave")
+	@ResponseBody
+	@Transactional
+	public String batchSave(@RequestBody MesScrew mesScrew) {
+		if (mesScrew == null
+				|| ("").equals(mesScrew.getOprno())
+				|| ("").equals(mesScrew.getLineSn())) {
+			return renderResult(Global.FALSE, text("操作失败!缺少参数值!"));
+		}
+
+		Date createDate = DateLocalUtils.getCurrentTimeReturnDate();
+		List<MesScrew> list = mesScrew.getData();
+
+		// 一级表:锁付批次
+		MesScrewInfo mesScrewInfo = new MesScrewInfo();
+		mesScrewInfo.setSn(mesScrew.getSn());
+		mesScrewInfo.setOprno(mesScrew.getOprno());
+		mesScrewInfo.setLineSn(mesScrew.getLineSn());
+		mesScrewInfo.setCreateDate(createDate);
+		mesScrewInfo.setCount(list == null || list.isEmpty() ? 0 : list.size());
+		mesScrewInfo.setBatch(DateLocalUtils.generateBatch());
+		mesScrewInfoService.save(mesScrewInfo);
+
+		// 二级表:锁付明细
+		if (list != null && list.size() > 0) {
+			for (MesScrew dtl : list) {
+				MesScrew extend = new MesScrew();
+				extend.setSn(mesScrew.getSn());
+				extend.setOprno(mesScrew.getOprno());
+				extend.setScrewNo(dtl.getScrewNo());
+				extend.setScrewTask(dtl.getScrewTask());
+				extend.setScrewToquer(dtl.getScrewToquer());
+				extend.setScrewRing(dtl.getScrewRing());
+				extend.setScrewTime(dtl.getScrewTime());
+				extend.setResult(dtl.getResult());
+				extend.setCreateDate(createDate);
+				extend.setBatchId(mesScrewInfo.getId());
+				mesScrewService.save(extend);
+			}
+		}
+
+		if ("OP060".equals(mesScrew.getOprno())) {
+			List<String> crafts = new ArrayList<>();
+			crafts.add("400008");
+
+			List<BindMaterialResp> bmlists = mesLineProcessMaterialService.getBindMaterial(
+					mesScrew.getOprno(), mesScrew.getLineSn());
+			if (!ListUtils.isEmpty(bmlists)) {
+				for (BindMaterialResp bindMaterialResp : bmlists) {
+					if (!StringUtils.isEmpty(bindMaterialResp.getBatchSn())) {
+						Integer lastTimes = Integer.valueOf(bindMaterialResp.getLastTimes());
+						if (lastTimes >= 1) {
+							if (crafts.contains(bindMaterialResp.getCraft())) {
+								MesMaterialPrebind mesMaterialPrebind = bindMaterialResp.getMesMaterialPrebind();
+								mesMaterialPrebind.setLastTimes(lastTimes - 1);
+								mesMaterialPrebindService.update(mesMaterialPrebind);
+							}
+						}
+					}
+				}
+			}
+
+			List<MesToolLife> tools = mesToolLifeService.getToolLifeList(
+					mesScrew.getOprno(), mesScrew.getLineSn());
+			if (!ListUtils.isEmpty(tools)) {
+				for (MesToolLife mesToolLife : tools) {
+					Integer curLife = mesToolLife.getCurLife() - mesToolLife.getConsumeLife();
+					curLife = curLife > 0 ? curLife : 0;
+					mesToolLife.setCurLife(curLife);
+					mesToolLifeService.update(mesToolLife);
+				}
+			}
+		}
+
+		return renderResult(Global.TRUE, text("操作成功!"));
+	}
+
 }

+ 97 - 0
src/main/java/com/jeesite/modules/mes/web/MesScrewInfoController.java

@@ -0,0 +1,97 @@
+package com.jeesite.modules.mes.web;
+
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.jeesite.common.config.Global;
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.MesScrewInfo;
+import com.jeesite.modules.mes.service.MesScrewInfoService;
+
+/**
+ * 锁付数据详情表Controller
+ * @author sxl
+ * @version 2026-08-17
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/mes/mesScrewInfo")
+public class MesScrewInfoController extends BaseController {
+
+	@Autowired
+	private MesScrewInfoService mesScrewInfoService;
+	
+	/**
+	 * 获取数据
+	 */
+	@ModelAttribute
+	public MesScrewInfo get(String id, boolean isNewRecord) {
+		return mesScrewInfoService.get(id, isNewRecord);
+	}
+	
+	/**
+	 * 查询列表
+	 */
+	@RequiresPermissions("mes:mesScrewInfo:view")
+	@RequestMapping(value = {"list", ""})
+	public String list(MesScrewInfo mesScrewInfo, Model model) {
+		model.addAttribute("mesScrewInfo", mesScrewInfo);
+		return "modules/mes/mesScrewInfoList";
+	}
+	
+	/**
+	 * 查询列表数据
+	 */
+	@RequiresPermissions("mes:mesScrewInfo:view")
+	@RequestMapping(value = "listData")
+	@ResponseBody
+	public Page<MesScrewInfo> listData(MesScrewInfo mesScrewInfo, HttpServletRequest request, HttpServletResponse response) {
+		mesScrewInfo.setPage(new Page<>(request, response));
+		Page<MesScrewInfo> page = mesScrewInfoService.findPage(mesScrewInfo);
+		return page;
+	}
+
+	/**
+	 * 查看编辑表单
+	 */
+	@RequiresPermissions("mes:mesScrewInfo:view")
+	@RequestMapping(value = "form")
+	public String form(MesScrewInfo mesScrewInfo, Model model) {
+		model.addAttribute("mesScrewInfo", mesScrewInfo);
+		return "modules/mes/mesScrewInfoForm";
+	}
+
+	/**
+	 * 保存数据
+	 */
+	@RequiresPermissions("mes:mesScrewInfo:edit")
+	@PostMapping(value = "save")
+	@ResponseBody
+	public String save(@Validated MesScrewInfo mesScrewInfo) {
+		mesScrewInfoService.save(mesScrewInfo);
+		return renderResult(Global.TRUE, text("保存锁付数据详情表成功!"));
+	}
+	
+	/**
+	 * 删除数据
+	 */
+	@RequiresPermissions("mes:mesScrewInfo:edit")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public String delete(MesScrewInfo mesScrewInfo) {
+		mesScrewInfoService.delete(mesScrewInfo);
+		return renderResult(Global.TRUE, text("删除锁付数据详情表成功!"));
+	}
+	
+}

+ 46 - 28
src/main/java/com/jeesite/modules/scheduling/FswModbusScheduling.java

@@ -8,8 +8,11 @@ import com.jeesite.common.lang.StringUtils;
 import com.jeesite.modules.mes.entity.MesLine;
 import com.jeesite.modules.mes.entity.MesProduct;
 import com.jeesite.modules.mes.entity.MesProductFsw;
+import com.jeesite.modules.mes.resp.BindMaterialResp;
+import com.jeesite.modules.mes.resp.ParamsResp;
 import com.jeesite.modules.mes.service.MesLineService;
 import com.jeesite.modules.mes.service.MesProductFswService;
+import com.jeesite.modules.mes.service.MesProductRecordService;
 import com.jeesite.modules.mes.service.MesProductService;
 import com.jeesite.modules.mes.web.MesProductRecordController;
 import org.slf4j.Logger;
@@ -20,6 +23,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
@@ -30,12 +35,13 @@ import java.util.concurrent.atomic.AtomicBoolean;
  *   3600  数据采集触发(1=请求采集,MES读完后置0)
  *   3610  质量校验结果(1=合格,2=不合格)
  *   3620~3649  工件码(30个字,ASCII拼接)
- *   3740  进给速度
- *   3780  进给倍率
- *   3820  主轴转速
- *   3860  主轴倍率
- *   4040  指定焊接点压力
- *   4590  指定焊接点偏移量
+ *   3740  进给速度 → feedSpeed
+ *   3780  进给倍率 → feedRate
+ *   3820  主轴转速 → spindleSpeed
+ *   3860  主轴倍率 → spindleRate
+ *   4040  指定焊接点压力 → pressure
+ *   4590  指定焊接点偏移量 → pyl
+ *   4742  B轴角度 → jd
  *
  * 配置(application.yml):
  *   mes.fsw.modbus.enabled   是否启用(默认 false)
@@ -59,17 +65,22 @@ public class FswModbusScheduling {
 	private static final int ADDR_SN_START = 3620;
 	private static final int SN_REGISTER_COUNT = 60;
 
-	private static final int ADDR_FEED_RATE = 3740;
-	private static final int ADDR_FEED_OVERRIDE = 3780;
+	private static final int ADDR_FEED_SPEED = 3740;
+	private static final int ADDR_FEED_RATE = 3780;
 	private static final int ADDR_SPINDLE_SPEED = 3820;
-	private static final int ADDR_SPINDLE_OVERRIDE = 3860;
+	private static final int ADDR_SPINDLE_RATE = 3860;
 	private static final int ADDR_WELD_PRESSURE = 4040;
 	private static final int ADDR_WELD_OFFSET = 4590;
+	private static final int ADDR_B_AXIS_ANGLE = 4742;
 
 	private static final String DEFAULT_HOST = "10.0.20.141";
 	private static final int DEFAULT_PORT = 502;
 	private static final int DEFAULT_UNIT_ID = 1;
 
+	/** 过程参数落库固定产线 / 工位 */
+	private static final String FIXED_LINE_SN = "XT";
+	private static final String FIXED_OPRNO = "OP230B";
+
 	@Autowired
 	private MesProductRecordController mesProductRecordController;
 	@Autowired
@@ -78,6 +89,8 @@ public class FswModbusScheduling {
 	private MesLineService mesLineService;
 	@Autowired
 	private MesProductFswService mesProductFswService;
+	@Autowired
+	private MesProductRecordService mesProductRecordService;
 
 	private final AtomicBoolean running = new AtomicBoolean(false);
 	private volatile ModbusTcp modbusTcp;
@@ -150,17 +163,18 @@ public class FswModbusScheduling {
 		}
 
 		String sn = readWorkpieceCode(plc);
+		float feedSpeed = plc.readFloat32(ADDR_FEED_SPEED, EByteBuffFormat.BA_DC);
 		float feedRate = plc.readFloat32(ADDR_FEED_RATE, EByteBuffFormat.BA_DC);
-		float feedOverride = plc.readFloat32(ADDR_FEED_OVERRIDE, EByteBuffFormat.BA_DC);
 		float spindleSpeed = plc.readFloat32(ADDR_SPINDLE_SPEED, EByteBuffFormat.BA_DC);
-		float spindleOverride = plc.readFloat32(ADDR_SPINDLE_OVERRIDE, EByteBuffFormat.BA_DC);
+		float spindleRate = plc.readFloat32(ADDR_SPINDLE_RATE, EByteBuffFormat.BA_DC);
 		float weldPressure = plc.readFloat32(ADDR_WELD_PRESSURE, EByteBuffFormat.BA_DC);
 		float weldOffset = plc.readFloat32(ADDR_WELD_OFFSET, EByteBuffFormat.BA_DC);
+		float bAxisAngle = plc.readFloat32(ADDR_B_AXIS_ANGLE, EByteBuffFormat.BA_DC);
 
-		logger.info("FSW过程采集 sn={} 进给速度={} 进给倍率={} 主轴转速={} 主轴倍率={} 焊接压力={} 焊接偏移={}",
-				sn, feedRate, feedOverride, spindleSpeed, spindleOverride, weldPressure, weldOffset);
+		logger.info("FSW过程采集 sn={} 进给速度={} 进给倍率={} 主轴转速={} 主轴倍率={} 焊接压力={} 偏移量={} B轴角度={}",
+				sn, feedSpeed, feedRate, spindleSpeed, spindleRate, weldPressure, weldOffset, bAxisAngle);
 
-		saveProcessData(sn, feedRate, feedOverride, spindleSpeed, spindleOverride, weldPressure, weldOffset);
+		saveProcessData(sn, feedSpeed, feedRate, spindleSpeed, spindleRate, weldPressure, weldOffset, bAxisAngle);
 		plc.writeInt16(ADDR_COLLECT_FLAG, (short) 0);
 	}
 
@@ -211,27 +225,31 @@ public class FswModbusScheduling {
 		return line.getSn();
 	}
 
-	private void saveProcessData(String sn, float feedRate, float feedOverride,
-			float spindleSpeed, float spindleOverride, float weldPressure, float weldOffset) {
+	private void saveProcessData(String sn, float feedSpeed, float feedRate,
+			float spindleSpeed, float spindleRate, float weldPressure, float weldOffset, float bAxisAngle) {
 		if (StringUtils.isBlank(sn)) {
 			return;
 		}
 		try {
-			String oprno = Global.getConfig("mes.fsw.modbus.oprno");
-			String lineSn = Global.getConfig("mes.fsw.modbus.lineSn");
-			if (StringUtils.isBlank(lineSn)) {
-				lineSn = resolveLineSn(sn);
-			}
-
-			// 进给/主轴倍率、焊接偏移暂无附加字段落库,拼入对应字段便于追溯
 			MesProductFsw entity = new MesProductFsw();
 			entity.setSn(sn);
-			entity.setOprno(oprno);
-			entity.setLineSn(lineSn);
-			entity.setFeedRate(fmt(feedRate) + "/" + fmt(feedOverride));
-			entity.setSpindleSpeed(fmt(spindleSpeed) + "/" + fmt(spindleOverride));
-			entity.setPressure(fmt(weldPressure) + "/" + fmt(weldOffset));
+			entity.setOprno(FIXED_OPRNO);
+			entity.setLineSn(FIXED_LINE_SN);
+			entity.setFeedSpeed(fmt(feedSpeed));
+			entity.setFeedRate(fmt(feedRate));
+			entity.setSpindleSpeed(fmt(spindleSpeed));
+			entity.setSpindleRate(fmt(spindleRate));
+			entity.setPressure(fmt(weldPressure));
+			entity.setPyl(fmt(weldOffset));
+			entity.setJd(fmt(bAxisAngle));
 			mesProductFswService.save(entity);
+
+			// 保存完成后提交工位总结果为 OK
+			List<ParamsResp> params = new ArrayList<>();
+			List<BindMaterialResp> bmlists = new ArrayList<>();
+			mesProductRecordService.updateRecordResult(sn, FIXED_OPRNO, "100000", "", "OK",
+					"", params, FIXED_LINE_SN, true, bmlists, null);
+			logger.info("FSW过程参数已保存并更新工位结果 OK sn={} oprno={}", sn, FIXED_OPRNO);
 		} catch (Exception e) {
 			logger.error("FSW过程参数保存失败 sn={}:{}", sn, e.getMessage());
 		}

+ 1 - 0
src/main/resources/config/application.yml

@@ -671,6 +671,7 @@ shiro:
     ${adminPath}/mes/mesProductRecord/check = anon
     ${adminPath}/mes/mesProductRecord/getConfig = anon
     ${adminPath}/mes/mesElectricTorque/batchSave = anon
+    ${adminPath}/mes/mesScrew/batchSave = anon
     ${adminPath}/mes/mesProductYgsl/batchsave = anon
     ${adminPath}/mes/mesProductHb/upload = anon
     ${adminPath}/mes/mesProductCmt/batchsave = anon

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

+ 31 - 4
src/main/resources/views/modules/mes/mesProductFswForm.html

@@ -53,7 +53,16 @@
 					<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>
+								<span class="required hide">*</span> ${text('主轴倍率')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="spindleRate" maxlength="1000" 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="feedRate" maxlength="1000" class="form-control"/>
 							</div>
@@ -62,18 +71,36 @@
 					<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="feedSpeed" 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="pressure" class="form-control"/>
+								<#form:input path="pressure" 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="pyl" 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>
+								<span class="required hide">*</span> ${text('B轴角度')}:<i class="fa icon-question hide"></i></label>
 							<div class="col-sm-8">
-								<#form:input path="createBy" maxlength="64" class="form-control"/>
+								<#form:input path="jd" maxlength="255" class="form-control"/>
 							</div>
 						</div>
 					</div>

+ 55 - 23
src/main/resources/views/modules/mes/mesProductFswList.html

@@ -8,7 +8,7 @@
 			<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:mesProductFsw:edit')){ %>
-<!--					<a href="${ctx}/mes/mesProductFsw/form" class="btn btn-default btnTool" title="${text('新增FSW过程参数')}"><i class="fa fa-plus"></i> ${text('新增')}</a>-->
+					<a href="${ctx}/mes/mesProductFsw/form" class="btn btn-default btnTool" title="${text('新增FSW过程参数')}"><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>
@@ -35,17 +35,45 @@
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('操作人员')}:</label>
+					<label class="control-label">${text('主轴转速')}:</label>
 					<div class="control-inline">
-						<#form:input path="createBy" maxlength="64" class="form-control width-120"/>
+						<#form:input path="spindleSpeed" maxlength="1000" class="form-control width-120"/>
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('日期')}:</label>
+					<label class="control-label">${text('主轴倍率')}:</label>
 					<div class="control-inline">
-						<#form:input path="createDate_gte" class="form-control width-60"/>
-						&nbsp;-&nbsp;
-						<#form:input path="createDate_lte" class="form-control width-60"/>
+						<#form:input path="spindleRate" maxlength="1000" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('进给倍率')}:</label>
+					<div class="control-inline">
+						<#form:input path="feedRate" maxlength="1000" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('进给速度')}:</label>
+					<div class="control-inline">
+						<#form:input path="feedSpeed" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('焊接压力')}:</label>
+					<div class="control-inline">
+						<#form:input path="pressure" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('偏移量')}:</label>
+					<div class="control-inline">
+						<#form:input path="pyl" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('B轴角度')}:</label>
+					<div class="control-inline">
+						<#form:input path="jd" maxlength="255" class="form-control width-120"/>
 					</div>
 				</div>
 				<div class="form-group">
@@ -64,23 +92,27 @@
 $('#dataGrid').dataGrid({
 	searchForm: $("#searchForm"),
 	columnModel: [
-		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"center", frozen:true},
-		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:150, align:"center"},
-		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"center"},
-		{header:'${text("主轴转速")}', name:'spindleSpeed', index:'a.spindle_speed', width:150, align:"center"},
-		{header:'${text("进给速度")}', name:'feedRate', index:'a.feed_rate', width:150, align:"center"},
-		{header:'${text("焊接压力")}', name:'pressure', index:'a.pressure', width:150, align:"center"},
-		{header:'${text("操作人员")}', name:'createBy', index:'a.create_by', width:150, align:"center"},
-		{header:'${text("日期")}', name:'createDate', index:'a.create_date', width:150, align:"center"},
-		// {header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
-		// 	var actions = [];
-		// 	//<% if(hasPermi('mes:mesProductFsw:edit')){ %>
-		// 		actions.push('<a href="${ctx}/mes/mesProductFsw/form?id='+row.id+'" class="btnList" title="${text("编辑FSW过程参数")}"><i class="fa fa-pencil"></i></a>&nbsp;');
-		// 	//<% } %>
-		// 	return actions.join('');
-		// }}
+		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesProductFsw/form?id='+row.id+'" class="btnList" data-title="${text("编辑FSW过程参数")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:150, align:"left"},
+		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
+		{header:'${text("主轴转速")}', name:'spindleSpeed', index:'a.spindle_speed', width:150, align:"left"},
+		{header:'${text("主轴倍率")}', name:'spindleRate', index:'a.spindle_rate', width:150, align:"left"},
+		{header:'${text("进给倍率")}', name:'feedRate', index:'a.feed_rate', width:150, align:"left"},
+		{header:'${text("进给速度")}', name:'feedSpeed', index:'a.feed_speed', width:150, align:"left"},
+		{header:'${text("焊接压力")}', name:'pressure', index:'a.pressure', width:150, align:"left"},
+		{header:'${text("偏移量")}', name:'pyl', index:'a.pyl', width:150, align:"left"},
+		{header:'${text("B轴角度")}', name:'jd', index:'a.jd', width:150, align:"left"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesProductFsw:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesProductFsw/form?id='+row.id+'" class="btnList" title="${text("编辑FSW过程参数")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesProductFsw/delete?id='+row.id+'" class="btnList" title="${text("删除FSW过程参数")}" data-confirm="${text("确认要删除该FSW过程参数吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
+			//<% } %>
+			return actions.join('');
+		}}
 	],
-	frozenCols: true,
 	// 加载成功后执行事件
 	ajaxSuccess: function(data){
 		

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

@@ -17,9 +17,97 @@
 					<div class="col-xs-12">
 						<div class="form-group">
 							<label class="control-label col-sm-2" title="">
-								<span class="required hide">*</span> ${text('add')}:<i class="fa icon-question hide"></i></label>
+								<span class="required hide">*</span> ${text('工件码')}:<i class="fa icon-question hide"></i></label>
 							<div class="col-sm-4">
-								<#form:input path="ww" maxlength="255" class="form-control"/>
+								<#form:input path="sn" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('工位号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="oprno" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('螺丝序号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="screwNo" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('锁付任务号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="screwTask" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('锁付扭力')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="screwToquer" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('锁付圈数')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="screwRing" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('锁付时长')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="screwTime" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('结果')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="result" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div class="form-group">
+							<label class="control-label col-sm-2" title="">
+								<span class="required hide">*</span> ${text('批次ID')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-4">
+								<#form:input path="batchId" maxlength="255" class="form-control"/>
 							</div>
 						</div>
 					</div>

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

@@ -0,0 +1,91 @@
+<% 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(mesScrewInfo.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="${mesScrewInfo}" action="${ctx}/mes/mesScrewInfo/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="sn" maxlength="64" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('工位号')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="oprno" 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="lineSn" 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="batch" maxlength="100" 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="count" maxlength="8" class="form-control digits"/>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="box-footer">
+				<div class="row">
+					<div class="col-sm-offset-2 col-sm-10">
+						<% if (hasPermi('mes:mesScrewInfo: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>

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

@@ -0,0 +1,86 @@
+<% 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:mesScrewInfo:edit')){ %>
+					<a href="${ctx}/mes/mesScrewInfo/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="${mesScrewInfo}" action="${ctx}/mes/mesScrewInfo/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="sn" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工位号')}:</label>
+					<div class="control-inline">
+						<#form:input path="oprno" 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="lineSn" 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="batch" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('总数')}:</label>
+					<div class="control-inline">
+						<#form:input path="count" maxlength="8" 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:'sn', index:'a.sn', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/mes/mesScrewInfo/form?id='+row.id+'" class="btnList" data-title="${text("编辑锁付数据详情表")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
+		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:150, align:"left"},
+		{header:'${text("批次")}', name:'batch', index:'a.batch', width:150, align:"left"},
+		{header:'${text("总数")}', name:'count', index:'a.count', width:150, align:"center"},
+		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('mes:mesScrewInfo:edit')){ %>
+				actions.push('<a href="${ctx}/mes/mesScrewInfo/form?id='+row.id+'" class="btnList" title="${text("编辑锁付数据详情表")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				actions.push('<a href="${ctx}/mes/mesScrewInfo/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>

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

@@ -17,9 +17,57 @@
 			<#form:form id="searchForm" model="${mesScrew}" action="${ctx}/mes/mesScrew/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('add')}:</label>
+					<label class="control-label">${text('工件码')}:</label>
 					<div class="control-inline">
-						<#form:input path="ww" maxlength="255" class="form-control width-120"/>
+						<#form:input path="sn" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('工位号')}:</label>
+					<div class="control-inline">
+						<#form:input path="oprno" 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="screwNo" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('锁付任务号')}:</label>
+					<div class="control-inline">
+						<#form:input path="screwTask" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('锁付扭力')}:</label>
+					<div class="control-inline">
+						<#form:input path="screwToquer" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('锁付圈数')}:</label>
+					<div class="control-inline">
+						<#form:input path="screwRing" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('锁付时长')}:</label>
+					<div class="control-inline">
+						<#form:input path="screwTime" maxlength="255" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('结果')}:</label>
+					<div class="control-inline">
+						<#form:input path="result" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('批次ID')}:</label>
+					<div class="control-inline">
+						<#form:input path="batchId" maxlength="255" class="form-control width-120"/>
 					</div>
 				</div>
 				<div class="form-group">
@@ -38,9 +86,17 @@
 $('#dataGrid').dataGrid({
 	searchForm: $("#searchForm"),
 	columnModel: [
-		{header:'${text("add")}', name:'ww', index:'a.ww', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
+		{header:'${text("工件码")}', name:'sn', index:'a.sn', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
 			return '<a href="${ctx}/mes/mesScrew/form?id='+row.id+'" class="btnList" data-title="${text("编辑mes_screw")}">'+(val||row.id)+'</a>';
 		}},
+		{header:'${text("工位号")}', name:'oprno', index:'a.oprno', width:150, align:"left"},
+		{header:'${text("螺丝序号")}', name:'screwNo', index:'a.screw_no', width:150, align:"left"},
+		{header:'${text("锁付任务号")}', name:'screwTask', index:'a.screw_task', width:150, align:"left"},
+		{header:'${text("锁付扭力")}', name:'screwToquer', index:'a.screw_toquer', width:150, align:"left"},
+		{header:'${text("锁付圈数")}', name:'screwRing', index:'a.screw_ring', width:150, align:"left"},
+		{header:'${text("锁付时长")}', name:'screwTime', index:'a.screw_time', width:150, align:"left"},
+		{header:'${text("结果")}', name:'result', index:'a.result', width:150, align:"left"},
+		{header:'${text("批次ID")}', name:'batchId', index:'a.batch_id', width:150, align:"left"},
 		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
 			var actions = [];
 			//<% if(hasPermi('mes:mesScrew:edit')){ %>