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/task/handler/InventoryReserveExpireHandler.java | 85 ++++++++++++++++++++++++++----------------
1 files changed, 53 insertions(+), 32 deletions(-)
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;
}
}
--
Gitblit v1.9.1