From 7af9ce0cde405ff7a48012b03bedf2884c09ab15 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期一, 12 五月 2025 15:48:09 +0800
Subject: [PATCH] 钣金计划:从Redis中读取库存信息

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java      |   15 +++++--
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java |   45 ++++++++++++++++------
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java         |    2 +
 3 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java
index 8cb8ed1..b851267 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java
@@ -58,4 +58,6 @@
      * @return 缁撴灉
      */
     public int deleteApsMaterialStorageManagementById(String id);
+
+    ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
index 01eb4c1..ad1ceee 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
@@ -1,8 +1,9 @@
 package com.aps.core.service.impl;
 
 import java.util.List;
+import java.util.Optional;
 
-import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.aps.common.core.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -99,20 +100,40 @@
         return apsMaterialStorageManagementMapper.deleteApsMaterialStorageManagementById(id);
     }
 
-    public  ApsMaterialStorageManagement getRdsStorage(String plant,String itemCode){
-
+    /**
+     * 浠嶳edis涓幏鍙栧簱瀛樹俊鎭�
+     *
+     * 姝ゆ柟娉曢鍏堝皾璇曚粠Redis涓幏鍙栨寚瀹氬伐鍘傚拰鐗╂枡浠g爜鐨勫簱瀛樹俊鎭鏋淩edis涓笉瀛樺湪鐩稿叧鏁版嵁锛�
+     * 鍒欎粠鏁版嵁搴撲腑鏌ヨ锛屽苟灏嗙粨鏋滅紦瀛樺埌Redis涓互鎻愰珮涓嬫鏌ヨ鐨勬晥鐜�
+     *
+     * @param plant 宸ュ巶浠g爜锛岀敤浜庢寚瀹氬簱瀛樹俊鎭墍灞炵殑宸ュ巶
+     * @param itemCode 鐗╂枡浠g爜锛岀敤浜庢寚瀹氶渶瑕佹煡璇㈢殑鐗╂枡
+     * @return ApsMaterialStorageManagement 杩斿洖鑾峰彇鍒扮殑搴撳瓨淇℃伅瀵硅薄锛屽鏋滄病鏈夋壘鍒帮紝鍒欒繑鍥瀗ull
+     */
+    @Override
+    public ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode){
+        ApsMaterialStorageManagement ams=null;
+        // 灏濊瘯浠嶳edis涓幏鍙栧簱瀛樹俊鎭�
         JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get("MaterialStorage:Material_"+plant+"_"+itemCode);
         if(materialStorage!=null){
-            ApsMaterialStorageManagement apsMaterialStorageManagement = new ApsMaterialStorageManagement();
-            apsMaterialStorageManagement.setId(materialStorage.getString("id"));
-            apsMaterialStorageManagement.setItemNumber(materialStorage.getString("itemNumber"));
-            apsMaterialStorageManagement.setRemainderStock(materialStorage.getBigDecimal("remainderStock"));
-            apsMaterialStorageManagement.setVersion(materialStorage.getInteger("version"));
-
-            return apsMaterialStorageManagement;
+            // 濡傛灉Redis涓湁缂撳瓨锛屽皢鍏惰浆鎹负ApsMaterialStorageManagement瀵硅薄骞惰繑鍥�
+            ams = materialStorage.toJavaObject(ApsMaterialStorageManagement.class);
+            return ams;
         }else {
-            return null;
+            // 濡傛灉Redis涓病鏈夌紦瀛橈紝鍒涘缓鏌ヨ鍙傛暟瀵硅薄
+            ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement();
+            storageParam.setItemNumber(itemCode);
+            storageParam.setApplicableFactories(plant);
+            // 浠庢暟鎹簱涓煡璇㈠簱瀛樹俊鎭�
+            Optional<ApsMaterialStorageManagement> first = apsMaterialStorageManagementMapper.selectApsMaterialStorageManagementList(storageParam).stream()
+                    .findFirst();
+            if (first.isPresent()){
+                // 濡傛灉鏌ヨ鍒板簱瀛樹俊鎭紝灏嗗叾缂撳瓨鍒癛edis涓�
+                ams = first.get();
+                redisTemplate.opsForValue().set("MaterialStorage:Material_"+plant+"_"+itemCode,JSONObject.parseObject(JSON.toJSONString(ams)));
+            }
         }
-
+        // 杩斿洖搴撳瓨淇℃伅瀵硅薄
+        return ams;
     }
 }
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 fe53f85..fffc657 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
@@ -73,7 +73,7 @@
     @Resource
     IApsPlateStandardRequireBatchService requireBatchService;
     @Autowired
-    private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper;
+    private IApsMaterialStorageManagementService storageManagementService;
 
     /**
      * 鏌ヨ閽i噾宸ュ崟鏍囧噯闇�姹�
@@ -181,6 +181,8 @@
             List<ApsPlateStandardRequire> requiresList=new ArrayList<>();
             List<ApsPlateStandardRequireBomStockDetail> stockDetailsList=new ArrayList<>();
             List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList=new ArrayList<>();
+
+
             getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L,stockDetailsList,orderDetailsList);
 
             // 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘
@@ -226,6 +228,8 @@
      * @param plan 璁″垝瀵硅薄
      * @param allRequires 鎵�鏈夐渶姹傜殑鍒楄〃
      * @param level 灞傜骇
+     * @param stockDetailsList 搴撳瓨鍖归厤璁板綍
+     * @param orderDetailsList 瀛愪欢宸ュ崟鍖归厤璁板綍
      */
     private void getBomRequires(String plant, String bomHeaderCode, String bomLineId,String itemCode,BigDecimal itemNum,
                                 String batchNum, Date upLevelStartDate, ApsPlatePlan plan,
@@ -259,9 +263,7 @@
         BigDecimal remainderStock = BigDecimal.ZERO;
         /*榛樿鍑�闇�姹備负BOM鐢ㄩ噺*/
         require.setNetRequirement(require.getBomUseAmount());
-        Optional<ApsMaterialStorageManagement> itemStorage = getItemStorage(plant, itemCode);
-
-
+        Optional<ApsMaterialStorageManagement> itemStorage = Optional.of(storageManagementService.getRdsStorage( plant,  itemCode));
         if (itemStorage.isPresent()) {
             ApsMaterialStorageManagement storage = itemStorage.get();
             /*鍓╀綑搴撳瓨*/
@@ -284,7 +286,9 @@
                     require.setNetRequirement(BigDecimal.ZERO);
                 }
                 /*璁板綍搴撳瓨鍓╀綑鏁伴噺锛岃褰曞簱瀛樹娇鐢ㄨ褰�*/
-                bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount, afterStockAmount,require.getId(),stockDetailsList);
+                bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount
+                        , afterStockAmount,require.getId(),stockDetailsList
+                );
             }
         }
         /*鏈尮閰嶆暟閲忥紝榛樿涓哄噣闇�姹�*/
@@ -365,6 +369,7 @@
                 .findFirst();
     }
 
+
     /**
      * 鑾峰彇閽i噾璁″垝 棰勭暀澶╂暟
      * */

--
Gitblit v1.9.3