From b0d80cc56a883a6fac242623e778a3ae20c71b79 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 19 十二月 2025 14:59:08 +0800
Subject: [PATCH] #库存预留

---
 src/main/java/com/zy/asrs/controller/OrderPakoutController.java           |    7 +
 src/main/java/com/zy/asrs/task/handler/InventoryReserveExpireHandler.java |   85 +++++++++++++--------
 src/main/java/com/zy/asrs/entity/InventoryReserve.java                    |   42 ++++++++++
 src/main/webapp/static/js/inventoryReserveLog/inventoryReserveLog.js      |    3 
 src/main/java/com/zy/asrs/entity/InventoryReserveLog.java                 |   45 +++++++++++
 5 files changed, 149 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
index 5fc8cc9..0165712 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
@@ -492,6 +492,13 @@
             reserve.setCreateBy(userId);
             reserve.setUpdateTime(now);
             reserve.setUpdateBy(userId);
+            reserve.setBrand(detl.getBrand());
+            reserve.setStandby1(detl.getStandby1());
+            reserve.setStandby2(detl.getStandby2());
+            reserve.setStandby3(detl.getStandby3());
+            reserve.setBoxType1(detl.getBoxType1());
+            reserve.setBoxType2(detl.getBoxType2());
+            reserve.setBoxType3(detl.getBoxType3());
             inventoryReserveService.insert(reserve);
         }
         return R.ok("棰勭暀鎴愬姛锛屽叡鍒涘缓 " + orderDetls.size() + " 鏉¢鐣欒褰�");
diff --git a/src/main/java/com/zy/asrs/entity/InventoryReserve.java b/src/main/java/com/zy/asrs/entity/InventoryReserve.java
index 0a252a0..120ea02 100644
--- a/src/main/java/com/zy/asrs/entity/InventoryReserve.java
+++ b/src/main/java/com/zy/asrs/entity/InventoryReserve.java
@@ -111,6 +111,48 @@
     @TableField("update_by")
     private Long updateBy;
 
+    @ApiModelProperty(value = "鍝佺墝")
+    private String brand;
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value = "澶囩敤1")
+    private String standby1 = "";
+
+    /**
+     * 澶囩敤2
+     */
+    @ApiModelProperty(value = "澶囩敤2")
+    private String standby2 = "";
+
+    /**
+     * 澶囩敤3
+     */
+    @ApiModelProperty(value = "澶囩敤3")
+    private String standby3 = "";
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value = "澶囩敤1")
+    @TableField("box_type1")
+    private String boxType1 = "1";
+
+    /**
+     * 澶囩敤2
+     */
+    @ApiModelProperty(value = "澶囩敤2")
+    @TableField("box_type2")
+    private String boxType2 = "1";
+
+    /**
+     * 澶囩敤3
+     */
+    @ApiModelProperty(value = "澶囩敤3")
+    @TableField("box_type3")
+    private String boxType3 = "1";
+
     public InventoryReserve() {}
 
     public InventoryReserve(String matnr,String maktx,String orderNo,String batch,BigDecimal quantity,Date expiceTime,Long deptId,Date createTime,Long createBy,Date updateTime,Long updateBy) {
diff --git a/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java b/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java
index abe39e4..bbfe958 100644
--- a/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java
+++ b/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java
@@ -111,6 +111,51 @@
     @TableField("update_by")
     private Long updateBy;
 
+    @ApiModelProperty(value = "鍝佺墝")
+    private String brand;
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value = "澶囩敤1")
+    private String standby1 = "";
+
+    /**
+     * 澶囩敤2
+     */
+    @ApiModelProperty(value = "澶囩敤2")
+    private String standby2 = "";
+
+    /**
+     * 澶囩敤3
+     */
+    @ApiModelProperty(value = "澶囩敤3")
+    private String standby3 = "";
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value = "澶囩敤1")
+    @TableField("box_type1")
+    private String boxType1 = "1";
+
+    /**
+     * 澶囩敤2
+     */
+    @ApiModelProperty(value = "澶囩敤2")
+    @TableField("box_type2")
+    private String boxType2 = "1";
+
+    /**
+     * 澶囩敤3
+     */
+    @ApiModelProperty(value = "澶囩敤3")
+    @TableField("box_type3")
+    private String boxType3 = "1";
+
+    @ApiModelProperty(value = "澶囨敞")
+    private String memo;
+
     public InventoryReserveLog() {}
 
     public InventoryReserveLog(String matnr,String maktx,String orderNo,String batch,BigDecimal quantity,Date expiceTime,Long deptId,Date createTime,Long createBy,Date updateTime,Long updateBy) {
diff --git a/src/main/java/com/zy/asrs/task/handler/InventoryReserveExpireHandler.java b/src/main/java/com/zy/asrs/task/handler/InventoryReserveExpireHandler.java
index 701d3d0..6fc75c0 100644
--- a/src/main/java/com/zy/asrs/task/handler/InventoryReserveExpireHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/InventoryReserveExpireHandler.java
@@ -1,13 +1,17 @@
 package com.zy.asrs.task.handler;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
 import com.zy.asrs.entity.InventoryReserve;
 import com.zy.asrs.entity.InventoryReserveLog;
+import com.zy.asrs.entity.OrderPakout;
 import com.zy.asrs.service.InventoryReserveLogService;
 import com.zy.asrs.service.InventoryReserveService;
+import com.zy.asrs.service.OrderPakoutService;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -18,6 +22,9 @@
 /**
  * 棰勭暀搴撳瓨杩囨湡澶勭悊鍣�
  * 灏嗚繃鏈熺殑棰勭暀搴撳瓨杞Щ鍒版棩蹇楄〃
+ * 杞巻鍙叉潯浠讹細
+ * 1. 杩囨湡鏃堕棿涓嶄负绌轰笖宸茶繃鏈�
+ * 2. 璁㈠崟鍙蜂笉涓虹┖涓旇鍗曠姸鎬佷负浣滀笟涓�(1)鎴栧凡瀹屾垚(2)
  */
 @Slf4j
 @Service
@@ -29,55 +36,69 @@
     @Autowired
     private InventoryReserveLogService inventoryReserveLogService;
 
+    @Autowired
+    private OrderPakoutService orderPakoutService;
+
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> start() {
-        // 鏌ヨ杩囨湡鐨勯鐣欏簱瀛橈紙杩囨湡鏃堕棿涓嶄负绌轰笖灏忎簬褰撳墠鏃堕棿锛�
         Date now = new Date();
-        List<InventoryReserve> expiredList = inventoryReserveService.selectList(
-                new EntityWrapper<InventoryReserve>()
-                        .isNotNull("expire_time")
-                        .lt("expire_time", now));
 
-        if (expiredList.isEmpty()) {
+        // 鏌ヨ鎵�鏈夐鐣欏簱瀛樿褰�
+        List<InventoryReserve> allReserves = inventoryReserveService.selectList(new EntityWrapper<>());
+
+        if (allReserves.isEmpty()) {
             return SUCCESS;
         }
 
-        log.info("鍙戠幇 {} 鏉¤繃鏈熺殑棰勭暀搴撳瓨璁板綍", expiredList.size());
-
-        for (InventoryReserve reserve : expiredList) {
+        int processedCount = 0;
+        for (InventoryReserve reserve : allReserves) {
             try {
-                // 杞Щ鍒版棩蹇楄〃
-                InventoryReserveLog logRecord = getInventoryReserveLog(reserve);
+                boolean shouldArchive = false;
+                String archiveReason = null;
 
-                inventoryReserveLogService.insert(logRecord);
+                // 鏉′欢1锛氳繃鏈熸椂闂翠笉涓虹┖涓斿凡杩囨湡
+                if (reserve.getExpireTime() != null && reserve.getExpireTime().before(now)) {
+                    shouldArchive = true;
+                    archiveReason = "宸茶繃鏈�";
+                }
 
-                // 鍒犻櫎鍘熻褰�
-                inventoryReserveService.deleteById(reserve.getId());
+                // 鏉′欢2锛氳鍗曞彿涓嶄负绌轰笖璁㈠崟鐘舵�佷负浣滀笟涓垨宸插畬鎴�
+                if (!shouldArchive && !Cools.isEmpty(reserve.getOrderNo())) {
+                    OrderPakout order = orderPakoutService.selectOne(
+                            new EntityWrapper<OrderPakout>().eq("order_no", reserve.getOrderNo()));
+                    if (null != order) {
+                        if (order.getSettle() != 1) {
+                            shouldArchive = true;
+                            archiveReason =  "璁㈠崟涓嶄负寰呭鐞嗙姸鎬�";
+                        }
+                    }
+                }
 
-                log.info("棰勭暀搴撳瓨杩囨湡澶勭悊瀹屾垚: id={}, matnr={}, batch={}",
-                        reserve.getId(), reserve.getMatnr(), reserve.getBatch());
+                if (shouldArchive) {
+                    // 杞Щ鍒版棩蹇楄〃
+                    InventoryReserveLog logRecord = new InventoryReserveLog();
+                    BeanUtils.copyProperties(reserve, logRecord);
+                    logRecord.setMemo(archiveReason);
+                    inventoryReserveLogService.insert(logRecord);
+
+                    // 鍒犻櫎鍘熻褰�
+                    inventoryReserveService.deleteById(reserve.getId());
+
+                    log.info("棰勭暀搴撳瓨杞巻鍙插畬鎴�: id={}, matnr={}, batch={}, 鍘熷洜={}",
+                            reserve.getId(), reserve.getMatnr(), reserve.getBatch(), archiveReason);
+                    processedCount++;
+                }
 
             } catch (Exception e) {
-                log.error("棰勭暀搴撳瓨杩囨湡澶勭悊澶辫触: id={}, error={}", reserve.getId(), e.getMessage());
+                log.error("棰勭暀搴撳瓨杞巻鍙插け璐�: id={}, error={}", reserve.getId(), e.getMessage());
             }
         }
 
-        return SUCCESS;
-    }
+        if (processedCount > 0) {
+            log.info("鏈鍏卞鐞� {} 鏉¢鐣欏簱瀛樿浆鍘嗗彶璁板綍", processedCount);
+        }
 
-    private static InventoryReserveLog getInventoryReserveLog(InventoryReserve reserve) {
-        InventoryReserveLog logRecord = new InventoryReserveLog();
-        logRecord.setMatnr(reserve.getMatnr());
-        logRecord.setMaktx(reserve.getMaktx());
-        logRecord.setOrderNo(reserve.getOrderNo());
-        logRecord.setBatch(reserve.getBatch());
-        logRecord.setQuantity(reserve.getQuantity());
-        logRecord.setExpireTime(reserve.getExpireTime());
-        logRecord.setDeptId(reserve.getDeptId());
-        logRecord.setCreateTime(reserve.getCreateTime());
-        logRecord.setCreateBy(reserve.getCreateBy());
-        logRecord.setUpdateTime(new Date());
-        return logRecord;
+        return SUCCESS;
     }
 
 }
diff --git a/src/main/webapp/static/js/inventoryReserveLog/inventoryReserveLog.js b/src/main/webapp/static/js/inventoryReserveLog/inventoryReserveLog.js
index 041b05c..c3d896a 100644
--- a/src/main/webapp/static/js/inventoryReserveLog/inventoryReserveLog.js
+++ b/src/main/webapp/static/js/inventoryReserveLog/inventoryReserveLog.js
@@ -26,7 +26,8 @@
             { field: 'quantity', align: 'center', title: '鏁伴噺', width: 100 },
             { field: 'expiceTime$', align: 'center', title: '杩囨湡鏃堕棿', width: 180 },
             { field: 'createTime$', align: 'center', title: '鍘熷垱寤烘椂闂�', width: 180 },
-            { field: 'updateTime$', align: 'center', title: '杞Щ鏃堕棿', width: 180 }
+            { field: 'updateTime$', align: 'center', title: '杞Щ鏃堕棿', width: 180 },
+            { field: 'memo', align: 'center', title: '杩囨湡鍘熷洜', width: 180 }
         ]],
         request: {
             pageName: 'curr',

--
Gitblit v1.9.1