From c664c49f8e211b7b791a5ff1e63cda53c1b1264e Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期日, 05 四月 2026 01:04:47 +0800
Subject: [PATCH] # 明细历史优化+打印
---
src/main/java/com/zy/asrs/entity/WrkDetlLog.java | 54 ++++++++++
src/main/java/com/zy/asrs/service/WrkArchiveToLogService.java | 12 ++
src/main/java/com/zy/asrs/service/impl/WrkArchiveToLogServiceImpl.java | 94 ++++++++++++++++++
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java | 38 ++++++
src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java | 2
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 67 +++++++++----
6 files changed, 241 insertions(+), 26 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
index 3f8c1f9..afc2232 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -281,6 +281,59 @@
@ApiModelProperty(value= "鍒版湡鏃ユ湡")
@TableField("deadline")
private Date deadline;
+
+ public WrkDetlLog() {
+
+ }
+ /** 浠庣幇妗f槑缁嗘嫹璐濆埌鍘嗗彶妗� */
+ public WrkDetlLog(WrkDetl wrkDetl) {
+ if (wrkDetl == null) {
+ return;
+ }
+ this.wrkNo = wrkDetl.getWrkNo();
+ this.ioTime = wrkDetl.getIoTime();
+ this.anfme = wrkDetl.getAnfme();
+ this.stock = wrkDetl.getStock();
+ this.zpallet = wrkDetl.getZpallet();
+ this.matnr = wrkDetl.getMatnr();
+ this.maktx = wrkDetl.getMaktx();
+ this.batch = wrkDetl.getBatch();
+ this.orderNo = wrkDetl.getOrderNo();
+ this.specs = wrkDetl.getSpecs();
+ this.model = wrkDetl.getModel();
+ this.color = wrkDetl.getColor();
+ this.brand = wrkDetl.getBrand();
+ this.unit = wrkDetl.getUnit();
+ this.price = wrkDetl.getPrice();
+ this.sku = wrkDetl.getSku();
+ this.units = wrkDetl.getUnits();
+ this.barcode = wrkDetl.getBarcode();
+ this.origin = wrkDetl.getOrigin();
+ this.manu = wrkDetl.getManu();
+ this.manuDate = wrkDetl.getManuDate();
+ this.itemNum = wrkDetl.getItemNum();
+ this.safeQty = wrkDetl.getSafeQty();
+ this.weight = wrkDetl.getWeight();
+ this.length = wrkDetl.getLength();
+ this.volume = wrkDetl.getVolume();
+ this.threeCode = wrkDetl.getThreeCode();
+ this.supp = wrkDetl.getSupp();
+ this.suppCode = wrkDetl.getSuppCode();
+ this.beBatch = wrkDetl.getBeBatch();
+ this.deadTime = wrkDetl.getDeadTime();
+ this.deadWarn = wrkDetl.getDeadWarn();
+ this.source = wrkDetl.getSource();
+ this.inspect = wrkDetl.getInspect();
+ this.danger = wrkDetl.getDanger();
+ this.modiUser = wrkDetl.getModiUser();
+ this.modiTime = wrkDetl.getModiTime();
+ this.appeUser = wrkDetl.getAppeUser();
+ this.appeTime = wrkDetl.getAppeTime();
+ this.memo = wrkDetl.getMemo();
+ this.proddate = wrkDetl.getProddate();
+ this.deadline = wrkDetl.getDeadline();
+ }
+
public String getProddate$(){
if (Cools.isEmpty(this.proddate)){
return "";
@@ -382,6 +435,5 @@
}
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
}
-
}
diff --git a/src/main/java/com/zy/asrs/service/WrkArchiveToLogService.java b/src/main/java/com/zy/asrs/service/WrkArchiveToLogService.java
new file mode 100644
index 0000000..04bda4a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/WrkArchiveToLogService.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.WrkMast;
+
+/**
+ * 宸ヤ綔涓绘。銆佹槑缁嗚浆鍘嗗彶妗e苟鍒犵幇妗�
+ */
+public interface WrkArchiveToLogService {
+
+ void archiveMastAndDetlToLogThenDeleteCurrent(WrkMast wrkMast);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkArchiveToLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkArchiveToLogServiceImpl.java
new file mode 100644
index 0000000..f7911cd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/WrkArchiveToLogServiceImpl.java
@@ -0,0 +1,94 @@
+package com.zy.asrs.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.WrkDetl;
+import com.zy.asrs.entity.WrkDetlLog;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastLog;
+import com.zy.asrs.mapper.WrkDetlLogMapper;
+import com.zy.asrs.mapper.WrkDetlMapper;
+import com.zy.asrs.mapper.WrkMastLogMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.service.WrkArchiveToLogService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.MessageFormat;
+import java.util.List;
+
+@Slf4j
+@Service("wrkArchiveToLog")
+public class WrkArchiveToLogServiceImpl implements WrkArchiveToLogService {
+
+ @Autowired
+ private WrkMastLogMapper wrkMastLogMapper;
+ @Autowired
+ private WrkDetlLogMapper wrkDetlLogMapper;
+ @Autowired
+ private WrkMastMapper wrkMastMapper;
+ @Autowired
+ private WrkDetlMapper wrkDetlMapper;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void archiveMastAndDetlToLogThenDeleteCurrent(WrkMast wrkMast) {
+ boolean printLog = !Cools.isEmpty(wrkMast)
+ && Long.valueOf(30L).equals(wrkMast.getWrkSts())
+ && "Y".equalsIgnoreCase(wrkMast.getFullPlt());
+
+ Integer wrkNo = wrkMast.getWrkNo();
+ boolean wrkMastLogSaved = wrkMastLogMapper.save(wrkNo) > 0;
+ if (!wrkMastLogSaved) {
+ log.error(MessageFormat.format("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkNo));
+ }
+ int num = 0;
+ List<WrkDetl> detls = wrkDetlMapper.selectByWrkNo(wrkNo);
+
+ for (WrkDetl d : detls) {
+ WrkDetlLog detlLog = new WrkDetlLog(d);
+ num += wrkDetlLogMapper.insert(detlLog);
+ }
+ boolean wrkDetlLogSaved = num > 0;
+// boolean wrkDetlLogSaved = wrkDetlLogMapper.save(wrkNo) > 0;
+ if (!wrkDetlLogSaved) {
+ log.error(MessageFormat.format("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkNo));
+ }
+
+ EntityWrapper<WrkMastLog> mastLogW = new EntityWrapper<>();
+ mastLogW.eq("wrk_no", wrkNo);
+ mastLogW.eq("io_time", wrkMast.getIoTime());
+ int mastCount = wrkMastLogMapper.selectCount(mastLogW);
+ EntityWrapper<WrkDetlLog> detlLogW = new EntityWrapper<>();
+ detlLogW.eq("wrk_no", wrkNo);
+ detlLogW.eq("io_time", wrkMast.getIoTime());
+ int detlCount = wrkDetlLogMapper.selectCount(detlLogW);
+ boolean wrkMastDeleted =false;
+ boolean wrkDetlDeleted =false;
+ if (mastCount > 0 && detlCount > 0) {
+ wrkMastDeleted = wrkMastMapper.deleteById(wrkNo) > 0;
+ if (!wrkMastDeleted) {
+ log.error(MessageFormat.format("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkNo));
+ }
+ wrkDetlDeleted = wrkDetlMapper.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)) > 0;
+ if (!wrkDetlDeleted) {
+ log.error(MessageFormat.format("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", wrkNo));
+ }
+ }
+ if (printLog) {
+ JSONObject detlJson = new JSONObject(true);
+ detlJson.put("service", "WrkArchiveToLogService");
+ detlJson.put("wrkNo", wrkNo);
+ detlJson.put("wrkDetls", JSON.toJSON(detls));
+ detlJson.put("wrkMast", (JSONObject) JSON.toJSON(wrkMast));
+ detlJson.put("wrkMastDeleted", wrkMastDeleted);
+ detlJson.put("wrkDetlDeleted", wrkDetlDeleted);
+ log.info(detlJson.toJSONString());
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
index dbf91b6..2610aee 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
@@ -1,16 +1,46 @@
package com.zy.asrs.service.impl;
-import com.zy.asrs.mapper.WrkDetlLogMapper;
-import com.zy.asrs.entity.WrkDetlLog;
-import com.zy.asrs.service.WrkDetlLogService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.zy.asrs.entity.WrkDetl;
+import com.zy.asrs.entity.WrkDetlLog;
+import com.zy.asrs.mapper.WrkDetlLogMapper;
+import com.zy.asrs.service.WrkDetlLogService;
+import com.zy.asrs.service.WrkDetlService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
@Service("wrkDetlLogService")
public class WrkDetlLogServiceImpl extends ServiceImpl<WrkDetlLogMapper, WrkDetlLog> implements WrkDetlLogService {
+ @Resource
+ private WrkDetlLogMapper wrkDetlLogMapper;
+ @Resource
+ private WrkDetlService wrkDetlService;
@Override
+ @Transactional
public boolean save(Integer workNo) {
- return this.baseMapper.save(workNo)>0;
+ List<WrkDetl> detls = wrkDetlService.selectByWrkNo(workNo);
+ if (Cools.isEmpty(detls)) {
+ return false;
+ }
+ Integer num = 0;
+ try {
+ for (WrkDetl d : detls) {
+ WrkDetlLog detlLog = new WrkDetlLog(d);
+ num += wrkDetlLogMapper.insert(detlLog);
+ }
+ return num > 0;
+ } catch (Exception e) {
+ System.out.println("杞槑缁嗗け璐�");
+ e.printStackTrace();
+ return false;
+ }
+
+// return wrkDetlLogMapper.save(workNo) > 0;
}
}
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
index 971c519..06b6a5d 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
@@ -291,7 +291,7 @@
WrkDetl wrkDetl = new WrkDetl();
BeanUtils.copyProperties(locDetl,wrkDetl);
wrkDetl.setZpallet(wrkMast.getBarcode());
- wrkDetl.setIoTime(now);
+ wrkDetl.setIoTime(wrkMast.getIoTime());
wrkDetl.setWrkNo(wrkMast.getWrkNo());
//wrkDetl.setBatch(locDetl.getBatch());
wrkDetl.setOrderNo(orderNo);
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 15b1c83..d560a7a 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -29,13 +29,15 @@
public class WorkLogHandler extends AbstractHandler<String> {
@Autowired
- private WrkMastService wrkMastService;
- @Autowired
- private WrkMastLogService wrkMastLogService;
+ private WrkArchiveToLogService wrkArchiveToLogService;
+// @Autowired
+// private WrkMastService wrkMastService;
@Autowired
private WrkDetlService wrkDetlService;
- @Autowired
- private WrkDetlLogService wrkDetlLogService;
+// @Autowired
+// private WrkMastLogService wrkMastLogService;
+// @Autowired
+// private WrkDetlLogService wrkDetlLogService;
@Autowired
private WaitPakinService waitPakinService;
@Autowired
@@ -100,23 +102,48 @@
}
}
}
-
- // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
- if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
- exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
- }
- // 鍒犻櫎宸ヤ綔涓绘。
- if (!wrkMastService.deleteById(wrkMast)) {
- exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
- }
- // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
- if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+ wrkArchiveToLogService.archiveMastAndDetlToLogThenDeleteCurrent(wrkMast);
+// boolean printFullPltOutLog = !Cools.isEmpty(wrkMast)
+// && Long.valueOf(30L).equals(wrkMast.getWrkSts())
+// && "Y".equalsIgnoreCase(wrkMast.getFullPlt());
+// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+// boolean wrkMastLogSaved = wrkMastLogService.save(wrkMast.getWrkNo());
+// if (printFullPltOutLog) {
+// System.out.println("[WorkLogHandler] save wrkMastLog, wrkNo=" + wrkMast.getWrkNo()
+// + ", result=" + wrkMastLogSaved);
+// }
+// if (!wrkMastLogSaved) {
+// exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+// }
+//
+// // 淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗�
+// boolean wrkDetlLogSaved = wrkDetlLogService.save(wrkMast.getWrkNo());
+// if (printFullPltOutLog) {
+// System.out.println("[WorkLogHandler] save wrkDetlLog, wrkNo=" + wrkMast.getWrkNo()
+// + ", result=" + wrkDetlLogSaved);
+// }
+// if (!wrkDetlLogSaved) {
// exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
- }
- // 鍒犻櫎宸ヤ綔鏄庣粏妗�
- if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
+// }
+// // 鍒犻櫎宸ヤ綔涓绘。
+// boolean wrkMastDeleted = wrkMastService.deleteById(wrkMast);
+// if (printFullPltOutLog) {
+// System.out.println("[WorkLogHandler] delete wrkMast, wrkNo=" + wrkMast.getWrkNo()
+// + ", result=" + wrkMastDeleted);
+// }
+// if (!wrkMastDeleted) {
+// exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
+// }
+//
+// // 鍒犻櫎宸ヤ綔鏄庣粏妗�
+// boolean wrkDetlDeleted = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+// if (printFullPltOutLog) {
+// System.out.println("[WorkLogHandler] delete wrkDetl, wrkNo=" + wrkMast.getWrkNo()
+// + ", result=" + wrkDetlDeleted);
+// }
+// if (!wrkDetlDeleted) {
// exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", wrkMast.getWrkNo());
- }
+// }
// 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
for (WrkDetl wrkDetl : wrkDetlsKeyOrder) {
if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
--
Gitblit v1.9.1