From 25cc1b887f5421353d94c5e6be0fca56b3f2e668 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期三, 21 五月 2025 16:29:24 +0800
Subject: [PATCH] 优化Job
---
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 93 insertions(+), 17 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..20bdf34 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,18 @@
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.math.BigDecimal;
+import java.util.*;
/**
* 鐗╂枡搴撳瓨绠$悊Service涓氬姟灞傚鐞�
@@ -98,21 +100,95 @@
{
return apsMaterialStorageManagementMapper.deleteApsMaterialStorageManagementById(id);
}
+ /**
+ * 鑾峰彇鐗╂枡搴撳瓨淇℃伅
+ * */
+ @Override
+ public 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){
-
- JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get("MaterialStorage:Material_"+plant+"_"+itemCode);
+ /**
+ * 浠嶳edis涓幏鍙栧簱瀛樹俊鎭�
+ *
+ * 姝ゆ柟娉曢鍏堝皾璇曚粠Redis涓幏鍙栨寚瀹氬伐鍘傚拰鐗╂枡浠g爜鐨勫簱瀛樹俊鎭鏋淩edis涓笉瀛樺湪鐩稿叧鏁版嵁锛�
+ * 鍒欎粠鏁版嵁搴撲腑鏌ヨ锛屽苟灏嗙粨鏋滅紦瀛樺埌Redis涓互鎻愰珮涓嬫鏌ヨ鐨勬晥鐜�
+ *
+ * @param plant 宸ュ巶浠g爜锛岀敤浜庢寚瀹氬簱瀛樹俊鎭墍灞炵殑宸ュ巶
+ * @param itemCode 鐗╂枡浠g爜锛岀敤浜庢寚瀹氶渶瑕佹煡璇㈢殑鐗╂枡
+ * @return ApsMaterialStorageManagement 杩斿洖鑾峰彇鍒扮殑搴撳瓨淇℃伅瀵硅薄锛屽鏋滄病鏈夋壘鍒帮紝鍒欒繑鍥瀗ull
+ */
+ @Override
+ public Optional<ApsMaterialStorageManagement> getRdsStorage(String plant, String itemCode){
+ // 灏濊瘯浠嶳edis涓幏鍙栧簱瀛樹俊鎭�
+ String key = "MaterialStorage:Material_" + plant + "_" + itemCode;
+ JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get(key);
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瀵硅薄骞惰繑鍥�
+ ApsMaterialStorageManagement ams= materialStorage.toJavaObject(ApsMaterialStorageManagement.class);
+ Optional<ApsMaterialStorageManagement> optional = Optional.ofNullable(ams);
+ return optional ;
}else {
- return null;
+ // 浠庢暟鎹簱涓煡璇㈠簱瀛樹俊鎭�
+ Optional<ApsMaterialStorageManagement> first = getItemStorage( plant, itemCode);
+ first.ifPresent(apsMaterialStorageManagement ->
+ redisTemplate.opsForValue().set(key, JSONObject.parseObject(JSON.toJSONString(apsMaterialStorageManagement)))
+ );
+ return first;
}
+ }
+ /**
+ * 璁剧疆搴撳瓨鏁版嵁鍒皉edis
+ * @param orgCode
+ * @return
+ */
+ @Override
+ public boolean setStorageDataToRedis(String orgCode) {
+ try {
+ Set<String> keys = redisTemplate.keys("MaterialStorage:Material_*");
+ if (keys != null && !keys.isEmpty()) {
+ redisTemplate.delete(keys);
+ }
+ 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;
+ }
+
+ /**
+ * 鏇存柊搴撳瓨淇℃伅
+ * */
+ public int updateMaterialStorageByVersion(String id, BigDecimal remainderStock, Integer version) {
+ return apsMaterialStorageManagementMapper.updateMaterialStorageByVersion(id, remainderStock, version);
+ }
+
+ @Override
+ public int updateRemainderStock(String id, BigDecimal remainderStock, Integer version){
+ return apsMaterialStorageManagementMapper.updateRemainderStock(id, remainderStock, version);
}
}
--
Gitblit v1.9.3