aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
@@ -1,5 +1,9 @@
package com.aps.core.service.impl;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.aps.common.core.utils.DateUtils;
@@ -105,7 +109,8 @@
    /**
     * 获取物料库存信息
     * */
    private Optional<ApsMaterialStorageManagement> getItemStorage(String plant, String itemNumber) {
    @Override
    public Optional<ApsMaterialStorageManagement> getItemStorage(String plant, String itemNumber) {
        ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement();
        storageParam.setItemNumber(itemNumber);
        storageParam.setApplicableFactories(plant);
@@ -124,30 +129,23 @@
     * @return ApsMaterialStorageManagement 返回获取到的库存信息对象,如果没有找到,则返回null
     */
    @Override
    public ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode){
        ApsMaterialStorageManagement ams=null;
    public Optional<ApsMaterialStorageManagement> getRdsStorage(String plant, String itemCode){
        // 尝试从Redis中获取库存信息
        JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get("MaterialStorage:Material_"+plant+"_"+itemCode);
        String key = "MaterialStorage:Material_" + plant + "_" + itemCode;
        JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get(key);
        if(materialStorage!=null){
            // 如果Redis中有缓存,将其转换为ApsMaterialStorageManagement对象并返回
            ams = materialStorage.toJavaObject(ApsMaterialStorageManagement.class);
            return ams;
            ApsMaterialStorageManagement ams= materialStorage.toJavaObject(ApsMaterialStorageManagement.class);
            Optional<ApsMaterialStorageManagement>   optional =  Optional.ofNullable(ams);
            return optional  ;
        }else {
            // 如果Redis中没有缓存,创建查询参数对象
            ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement();
            storageParam.setItemNumber(itemCode);
            storageParam.setApplicableFactories(plant);
            // 从数据库中查询库存信息
            Optional<ApsMaterialStorageManagement> first = apsMaterialStorageManagementMapper.selectApsMaterialStorageManagementList(storageParam).stream()
                    .findFirst();
            if (first.isPresent()){
                // 如果查询到库存信息,将其缓存到Redis中
                ams = first.get();
                redisTemplate.opsForValue().set("MaterialStorage:Material_"+plant+"_"+itemCode,JSONObject.parseObject(JSON.toJSONString(ams)));
            }
            Optional<ApsMaterialStorageManagement> first = getItemStorage( plant, itemCode);
            first.ifPresent(apsMaterialStorageManagement ->
                    redisTemplate.opsForValue().set(key, JSONObject.parseObject(JSON.toJSONString(apsMaterialStorageManagement)))
            );
            return first;
        }
        // 返回库存信息对象
        return ams;
    }
    /**
@@ -183,4 +181,16 @@
//        }
        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);
    }
}