From 10d86aa74f50336a469385be2b2d14410438a234 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期二, 24 六月 2025 18:22:44 +0800
Subject: [PATCH] 更改

---
 src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java |   80 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 78 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
index 22fd36d..3b53c96 100644
--- a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
+++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
@@ -10,10 +10,15 @@
 import com.gs.xky.dto.XkyDetail;
 import com.gs.xky.entity.DeliveryNotice;
 import com.gs.xky.entity.DeliveryNoticeDetail;
+import com.gs.xky.entity.MesInvItemArn;
 import com.gs.xky.mapper.DeliveryNoticeMapper;
 import com.gs.xky.service.DeliveryNoticeDetailService;
 import com.gs.xky.service.DeliveryNoticeService;
+import com.gs.xky.service.MesInvItemArnService;
 import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -32,8 +37,9 @@
 public class DeliveryNoticeServiceImpl extends ServiceImpl<DeliveryNoticeMapper, DeliveryNotice>
         implements DeliveryNoticeService {
 
+    private static final Logger log = LoggerFactory.getLogger(DeliveryNoticeServiceImpl.class);
     private final DeliveryNoticeDetailService detailService;
-
+    private final MesInvItemArnService invItemArnService;
 
     @Override
     public boolean saveDeliveryNotice(XkyDetail xkyDetail) {
@@ -92,8 +98,78 @@
     public void callPdaReceiptBtn(String inStr, String result) {
         baseMapper.callPdaReceiptBtn(inStr, result);
     }
-}
+
+    @Override
+    public Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id) {
+        Integer poResult = 1;
+        String poText = "";
+
+        // 璋冪敤瀛樺偍杩囩▼
+        baseMapper.callPrcMesInvItemArnStatus22(factory, company, userCode, id, poResult, poText);
+
+        // 杩斿洖缁撴灉
+        return poResult;
+    }
+
+    //
 
 
+    @Override
+    public void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus) {
+        if (itemArnMinus == null || itemArnMinus.isEmpty()) {
+            return;
+        }
 
+        // 璁板綍寮�濮嬪鐞嗙殑鏃ュ織
+        log.info("銆恜rocessMesInvItemArnStatusAsync銆戝紑濮嬪鐞唟}鏉℃暟鎹�", itemArnMinus.size());
 
+        // 鍒嗘壒澶勭悊锛屾瘡鎵规渶澶氬鐞�20鏉℃暟鎹�
+        int batchSize = 20;
+        int totalSize = itemArnMinus.size();
+        int batchCount = (totalSize + batchSize - 1) / batchSize;
+
+        for (int i = 0; i < batchCount; i++) {
+            int fromIndex = i * batchSize;
+            int toIndex = Math.min((i + 1) * batchSize, totalSize);
+            List<MesInvItemArn> batchItems = itemArnMinus.subList(fromIndex, toIndex);
+
+            log.info("銆恜rocessMesInvItemArnStatusAsync銆戝鐞嗙{}鎵规暟鎹紝鑼冨洿锛歿}-{}", i + 1, fromIndex, toIndex);
+
+            // 寮傛澶勭悊姣忔壒鏁版嵁
+            processAsyncBatch(batchItems);
+        }
+
+        log.info("銆恜rocessMesInvItemArnStatusAsync銆戝叏閮ㄦ暟鎹鐞嗘彁浜ゅ畬鎴�");
+    }
+
+    /**
+     * 寮傛澶勭悊涓�鎵筂esInvItemArn鏁版嵁
+     *
+     * @param batchItems 褰撳墠鎵规鐨勬暟鎹�
+     */
+    @Async("taskExecutor")
+    public void processAsyncBatch(List<MesInvItemArn> batchItems) {
+        log.info("銆恜rocessAsyncBatch銆戝紓姝ュ鐞唟}鏉℃暟鎹紑濮�", batchItems.size());
+        processBatch(batchItems);
+        log.info("銆恜rocessAsyncBatch銆戝紓姝ュ鐞唟}鏉℃暟鎹畬鎴�", batchItems.size());
+    }
+
+    /**
+     * 鎵归噺澶勭悊MesInvItemArn鏁版嵁
+     *
+     * @param batchItems 褰撳墠鎵规鐨勬暟鎹�
+     */
+    private void processBatch(List<MesInvItemArn> batchItems) {
+        // 閬嶅巻姣忎釜 itemArn
+        batchItems.forEach(itemArn -> {
+            try {
+                // 澶勭悊姣忎釜 itemArn
+                Integer result = processMesInvItemArnStatus("1000", "1000", "PL017", itemArn.getId());
+                log.info("銆恜rocessBatch銆戝鐞唅temArn: {}, 缁撴灉: {}", itemArn.getId(), result);
+            } catch (Exception e) {
+                // 澶勭悊寮傚父锛岃褰曡缁嗘棩蹇�
+                log.error("銆恜rocessBatch銆戝鐞唅temArn: {} 寮傚父: {}", itemArn.getId(), e.getMessage(), e);
+            }
+        });
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3