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