| | |
| | | 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; |
| | |
| | | return apsMaterialStorageManagementMapper.deleteApsMaterialStorageManagementById(id); |
| | | } |
| | | |
| | | public ApsMaterialStorageManagement getRdsStorage(String plant,String itemCode){ |
| | | |
| | | /** |
| | | * 从Redis中获取库存信息 |
| | | * |
| | | * 此方法首先尝试从Redis中获取指定工厂和物料代码的库存信息如果Redis中不存在相关数据, |
| | | * 则从数据库中查询,并将结果缓存到Redis中以提高下次查询的效率 |
| | | * |
| | | * @param plant 工厂代码,用于指定库存信息所属的工厂 |
| | | * @param itemCode 物料代码,用于指定需要查询的物料 |
| | | * @return ApsMaterialStorageManagement 返回获取到的库存信息对象,如果没有找到,则返回null |
| | | */ |
| | | @Override |
| | | public ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode){ |
| | | ApsMaterialStorageManagement ams=null; |
| | | // 尝试从Redis中获取库存信息 |
| | | 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()){ |
| | | // 如果查询到库存信息,将其缓存到Redis中 |
| | | ams = first.get(); |
| | | redisTemplate.opsForValue().set("MaterialStorage:Material_"+plant+"_"+itemCode,JSONObject.parseObject(JSON.toJSONString(ams))); |
| | | } |
| | | } |
| | | |
| | | // 返回库存信息对象 |
| | | return ams; |
| | | } |
| | | } |