From 70a46cd5e65b1ee16fb4bb4954a01129e6898b6d Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期一, 12 五月 2025 18:29:37 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-backend into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java |  100 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 84 insertions(+), 16 deletions(-)

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..47d6e6c 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,16 +1,20 @@
 package com.aps.core.service.impl;
 
-import java.util.List;
-
-import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.aps.common.core.utils.DateUtils;
+import com.aps.common.core.utils.StringUtils;
+import com.aps.core.domain.ApsMaterialStorageManagement;
+import com.aps.core.mapper.ApsMaterialStorageManagementMapper;
+import com.aps.core.service.IApsMaterialStorageManagementService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
-import com.aps.core.mapper.ApsMaterialStorageManagementMapper;
-import com.aps.core.domain.ApsMaterialStorageManagement;
-import com.aps.core.service.IApsMaterialStorageManagementService;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 
 /**
  * 鐗╂枡搴撳瓨绠$悊Service涓氬姟灞傚鐞�
@@ -98,21 +102,85 @@
     {
         return apsMaterialStorageManagementMapper.deleteApsMaterialStorageManagementById(id);
     }
+    /**
+     * 鑾峰彇鐗╂枡搴撳瓨淇℃伅
+     * */
+    private Optional<ApsMaterialStorageManagement> getItemStorage(String plant, String itemNumber) {
+        ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement();
+        storageParam.setItemNumber(itemNumber);
+        storageParam.setApplicableFactories(plant);
+        return apsMaterialStorageManagementMapper.selectApsMaterialStorageManagementList(storageParam).stream()
+                .findFirst();
+    }
 
-    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;
+    }
 
+    /**
+     * 璁剧疆搴撳瓨鏁版嵁鍒皉edis
+     * @param orgCode
+     * @return
+     */
+    @Override
+    public boolean setStorageDataToRedis(String orgCode) {
+        try {
+            ApsMaterialStorageManagement temp = new ApsMaterialStorageManagement();
+            if(!StringUtils.isEmpty(orgCode)){
+                temp.setApplicableFactories(orgCode);
+            }
+            List<ApsMaterialStorageManagement> list = apsMaterialStorageManagementMapper.selectApsMaterialStorageManagementList(temp);
+            Map<String, Object> bulkData = new HashMap<>();
+            list.forEach(apsMaterialStorageManagement -> {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("id", apsMaterialStorageManagement.getId());
+                jsonObject.put("itemNumber", apsMaterialStorageManagement.getItemNumber());
+                jsonObject.put("remainderStock", apsMaterialStorageManagement.getRemainderStock());
+                jsonObject.put("applicableFactories", apsMaterialStorageManagement.getApplicableFactories());
+                bulkData.put("MaterialStorage:Material_"+apsMaterialStorageManagement.getApplicableFactories()+"_"+apsMaterialStorageManagement.getItemNumber(), jsonObject);
+            });
+            redisTemplate.opsForValue().multiSet(bulkData);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+//        Set<String> keys = redisTemplate.keys("MaterialStorage:Material_*");
+//        if (keys != null && !keys.isEmpty()) {
+//            redisTemplate.delete(keys);
+//        }
+        return true;
     }
 }

--
Gitblit v1.9.3