From b0858cfb5addf0adfbb618c671334878e0d17780 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期三, 14 五月 2025 17:22:47 +0800
Subject: [PATCH] 钣金工单计划:从redis读取库存,在本地计算版本,批量更新库存数据

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java |   76 ++++++++++++++++---------------------
 1 files changed, 33 insertions(+), 43 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
index 2ab9146..84995db 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
@@ -175,7 +175,7 @@
         String batchNum= requireBatchService.getNewBatchNumber();
         /*鑾峰彇閽i噾涓诲崟淇℃伅*/
         List<ApsPlatePlan> mainPlans = platePlanMapper.selectPlatePlanByPlantMajor(plantCode,mainOrderType);
-        Hashtable<String, BigDecimal> usedStorage = new Hashtable<>();
+        Hashtable<String, ApsMaterialStorageManagement> usedStorage = new Hashtable<>();
         log.info("寮�濮嬬敓鎴愰渶姹傦細");
         for (ApsPlatePlan mainPlan : mainPlans) {
             String itemNumber = mainPlan.getItemNumber();
@@ -200,38 +200,31 @@
                     apsPlateStandardRequireMapper.batchInsert(batch);
                 }
             }
-            log.info("鐢熸垚瀹屾垚");
-//            if(!stockDetailsList.isEmpty()){
-//                int batchSize = 1000;
-//                stockDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
-//                for (int i = 0; i < stockDetailsList.size(); i += batchSize) {
-//                    int end = Math.min(i + batchSize, stockDetailsList.size());
-//                    List<ApsPlateStandardRequireBomStockDetail> batch = stockDetailsList.subList(i, end);
-//                    plateBomStockDetailMapper.batchInsert(batch);
-//                }
-//            }
-//
-//            if(!orderDetailsList.isEmpty()){
-//                int batchSize = 1000;
-//                orderDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
-//                for (int i = 0; i < orderDetailsList.size(); i += batchSize) {
-//                    int end = Math.min(i + batchSize, orderDetailsList.size());
-//                    List<ApsPlateStandardRequireBomOrderDetail> batch = orderDetailsList.subList(i, end);
-//                    plateBomOrderDetailMapper.batchInsert(batch);
-//                }
-//            }
-            /*闆嗕腑淇濆瓨搴撳瓨淇℃伅*/
-           /* if(!usedStorage.isEmpty()){
-                usedStorage.forEach((key, sm) -> {
-                    storageManagementService.updateRemainderStock(sm.getId(),sm.getRemainderStock(),sm.getVersion());
-                });
-            }*/
-
+            if(!stockDetailsList.isEmpty()){
+                int batchSize = 1000;
+                stockDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
+                for (int i = 0; i < stockDetailsList.size(); i += batchSize) {
+                    int end = Math.min(i + batchSize, stockDetailsList.size());
+                    List<ApsPlateStandardRequireBomStockDetail> batch = stockDetailsList.subList(i, end);
+                    plateBomStockDetailMapper.batchInsert(batch);
+                }
+            }
+            if(!orderDetailsList.isEmpty()){
+                int batchSize = 1000;
+                orderDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
+                for (int i = 0; i < orderDetailsList.size(); i += batchSize) {
+                    int end = Math.min(i + batchSize, orderDetailsList.size());
+                    List<ApsPlateStandardRequireBomOrderDetail> batch = orderDetailsList.subList(i, end);
+                    plateBomOrderDetailMapper.batchInsert(batch);
+                }
+            }
         }
-        usedStorage.forEach((key,value)->{
-            log.info("鏂欏彿锛�"+key+"锛屽簱瀛橈細"+value);
-        });
-
+        /*闆嗕腑淇濆瓨搴撳瓨淇℃伅*/
+        if(!usedStorage.isEmpty()){
+            usedStorage.forEach((key, sm) -> {
+                storageManagementService.updateRemainderStock(sm.getId(),sm.getRemainderStock(),sm.getVersion());
+            });
+        }
     }
 
     /**
@@ -255,7 +248,7 @@
                                 List<ApsPlateStandardRequire> allRequires,
                                 Long level,List<ApsPlateStandardRequireBomStockDetail> stockDetailsList,
                                 List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList,
-                                 Hashtable<String, BigDecimal> usedStorage
+                                Hashtable<String, ApsMaterialStorageManagement> usedStorage
     ) {
         /*鏋勫缓闇�姹備俊鎭�*/
         ApsPlateStandardRequire require = new ApsPlateStandardRequire();
@@ -285,17 +278,14 @@
         /*榛樿鍑�闇�姹備负BOM鐢ㄩ噺*/
         require.setNetRequirement(require.getRequireAmount());
 
+
         /*璇诲彇搴撳瓨淇℃伅鐨勪紭鍏堢骇-> 鍐呭瓨銆乺edis銆乨b*/
-       /* ApsMaterialStorageManagement storage = usedStorage.get(itemCode);
-        if(storage==null){
-            storage = storageManagementService.getRdsStorage(plant, itemCode);
-            if(storage!=null){
-                *//*鍓╀綑搴撳瓨*//*
-                remainderStock = storage.getRemainderStock();
-            }
-        }*/
-        Optional<ApsMaterialStorageManagement> itemStorageOpt = storageManagementService.getItemStorage(plant, itemCode);
+        Optional<ApsMaterialStorageManagement> itemStorageOpt = Optional.ofNullable(usedStorage.get(itemCode)) ;
+        if(itemStorageOpt.isEmpty()){
+            itemStorageOpt = storageManagementService.getRdsStorage(plant, itemCode);
+        }
         if (itemStorageOpt.isPresent()) {
+
             ApsMaterialStorageManagement     itemStorage=itemStorageOpt.get();
             BigDecimal remainderStock =itemStorage.getRemainderStock();
             /*璁$畻鍑�闇�姹� 榛樿=闇�姹傛暟閲�*/
@@ -320,7 +310,7 @@
                         , afterStockAmount, require.getId(), stockDetailsList
                 );
                 /*鏇存柊鍐呭瓨涓殑搴撳瓨浣跨敤淇℃伅*/
-               usedStorage.put(itemCode, afterStockAmount);
+               usedStorage.put(itemCode, itemStorage);
             }
         }
         /*鏈尮閰嶆暟閲忥紝榛樿涓哄噣闇�姹�*/

--
Gitblit v1.9.3