From 94b7e690bc6941b440720eb5702b924db1edf00c Mon Sep 17 00:00:00 2001 From: huangjiayang <5265313@qq.com> Date: 星期一, 12 五月 2025 17:27:08 +0800 Subject: [PATCH] 【UPDATE】1.新增库存信息存入到Redis中 2.修改为批量插入Redis 3.同步库存数据后将库存数据存入到Redis中 --- aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java | 6 + aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsMaterialStorageManagementController.java | 41 ++++++---- aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsBom.java | 2 aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml | 21 +++-- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java | 30 +++---- aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java | 4 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteHeaderServiceImpl.java | 6 + aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java | 5 + aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java | 16 +++ aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java | 9 ++ aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java | 49 ++++++++++- aps-modules/aps-core/src/main/resources/mapper/core/ApsPartPlanMapper.xml | 8 + aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java | 10 ++ 13 files changed, 146 insertions(+), 61 deletions(-) diff --git a/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java b/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java index a907d8b..150131b 100644 --- a/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java +++ b/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java @@ -33,4 +33,13 @@ @PostMapping("/ApsStandardProcessRouteHeader/setProcessRouteDataToRedis") R<Boolean> setProcessRouteDataToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 鍒锋柊鐗╂枡鏁版嵁鍒癛edis + * @param source + * @return + */ + @PostMapping("/materialStorageManagement/setStorageDataToRedis") + R<Boolean> setStorageDataToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java b/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java index 9e50240..ca6e0bd 100644 --- a/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java +++ b/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java @@ -34,6 +34,12 @@ { return R.fail("宸ヨ壓璺嚎鏁版嵁瀛樺偍鍒癛edis涓け璐�:" + throwable.getMessage()); } + + @Override + public R<Boolean> setStorageDataToRedis(String source) + { + return R.fail("搴撳瓨鏁版嵁瀛樺偍鍒癛edis涓け璐�:" + throwable.getMessage()); + } }; } } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsMaterialStorageManagementController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsMaterialStorageManagementController.java index f7bd132..f8377b4 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsMaterialStorageManagementController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsMaterialStorageManagementController.java @@ -1,26 +1,19 @@ package com.aps.core.controller.basicData; -import java.util.List; - -import com.aps.core.service.IApsMaterialStorageManagementService; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.aps.common.core.utils.poi.ExcelUtil; +import com.aps.common.core.web.controller.BaseController; +import com.aps.common.core.web.domain.AjaxResult; +import com.aps.common.core.web.page.TableDataInfo; import com.aps.common.log.annotation.Log; import com.aps.common.log.enums.BusinessType; import com.aps.common.security.annotation.RequiresPermissions; import com.aps.core.domain.ApsMaterialStorageManagement; -import com.aps.common.core.web.controller.BaseController; -import com.aps.common.core.web.domain.AjaxResult; -import com.aps.common.core.utils.poi.ExcelUtil; -import com.aps.common.core.web.page.TableDataInfo; +import com.aps.core.service.IApsMaterialStorageManagementService; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 鐗╂枡搴撳瓨绠$悊Controller @@ -102,4 +95,18 @@ { return toAjax(apsMaterialStorageManagementService.deleteApsMaterialStorageManagementByIds(ids)); } + + + @PostMapping("/setStorageDataToRedis") + public void setStorageDataToRedis() + { + apsMaterialStorageManagementService.setStorageDataToRedis("FORTUNA"); + } + + @PostMapping("/test") + public void test() + { + apsMaterialStorageManagementService.setStorageDataToRedis("FORTUNA"); +// apsMaterialStorageManagementService.getRdsStorage("FORTUNA", "A1501-001362"); + } } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsBom.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsBom.java index ee59f31..50a10ef 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsBom.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsBom.java @@ -90,8 +90,6 @@ private String delFlag; private String mainItemCode; - private BigDecimal mainStock; - private BigDecimal subStock; private String selfMade; } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java index a4708dd..f88f938 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsBomHeaderMapper.java @@ -1,6 +1,6 @@ package com.aps.core.mapper; -import com.alibaba.fastjson2.JSONObject; +import com.aps.core.domain.ApsBom; import com.aps.core.domain.ApsBomHeader; import org.apache.ibatis.annotations.Mapper; @@ -70,5 +70,5 @@ * @param orgCode BOM Header 鏁版嵁绠$悊 * @return BOM Header 鏁版嵁绠$悊闆嗗悎 */ - List<JSONObject> selectBomRedisData(String orgCode); + List<ApsBom> selectBomRedisData(String orgCode); } 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 b851267..807bac3 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 @@ -1,7 +1,8 @@ package com.aps.core.service; -import java.util.List; import com.aps.core.domain.ApsMaterialStorageManagement; + +import java.util.List; /** * 鐗╂枡搴撳瓨绠$悊Service鎺ュ彛 @@ -60,4 +61,11 @@ public int deleteApsMaterialStorageManagementById(String id); ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode); + + + /** + * 鍚屾搴撳瓨鏁版嵁鍒癛edis + * @return + */ + public boolean setStorageDataToRedis(String orgCode); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java index f1edfa2..7d6eee0 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java @@ -1,8 +1,8 @@ package com.aps.core.service.impl; import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import com.aps.common.core.utils.DateUtils; +import com.aps.core.domain.ApsBom; import com.aps.core.domain.ApsBomHeader; import com.aps.core.mapper.ApsBomHeaderMapper; import com.aps.core.service.IApsBomHeaderService; @@ -10,7 +10,10 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * BOM Header 鏁版嵁绠$悊Service涓氬姟灞傚鐞� @@ -108,24 +111,15 @@ @Override public boolean setBomDataToRedis(String orgCode) { try { - List<JSONObject> bomRedisData = apsBomHeaderMapper.selectBomRedisData(orgCode); - String nowMainItemCode = ""; - JSONArray bomLine = new JSONArray(); - for (int i=0,size=bomRedisData.size();i<size;i++) { - JSONObject jsonObject = bomRedisData.get(i); - if("".equals(nowMainItemCode)){ - nowMainItemCode = jsonObject.getString("mainitemcode"); - } - if(!nowMainItemCode.equals(jsonObject.getString("mainitemcode"))){ - redisTemplate.opsForValue().set("BOM:BOM_"+orgCode+"_"+nowMainItemCode, bomLine); - bomLine = new JSONArray(); - } - bomLine.add(jsonObject); - nowMainItemCode = jsonObject.getString("mainitemcode"); - if(i==size-1){ - redisTemplate.opsForValue().set("BOM:BOM_"+orgCode+"_"+nowMainItemCode, bomLine); - } + List<ApsBom> bomRedisData = apsBomHeaderMapper.selectBomRedisData(orgCode); + Map<String, List<ApsBom>> groupedByMainItemCode = bomRedisData.stream().collect(Collectors.groupingBy(ApsBom::getMainItemCode)); + Map<String, Object> bulkData = new HashMap<>(); + for (Map.Entry<String, List<ApsBom>> entry : groupedByMainItemCode.entrySet()) { + String mainItemCode = entry.getKey(); + JSONArray jsonArray = JSONArray.from(entry.getValue()); + bulkData.put("BOM:BOM_" + orgCode + "_" + mainItemCode, jsonArray); } + redisTemplate.opsForValue().multiSet(bulkData); } catch (Exception e) { e.printStackTrace(); return false; 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 623b13b..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,17 +1,20 @@ package com.aps.core.service.impl; -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; +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涓氬姟灞傚鐞� @@ -146,4 +149,38 @@ // 杩斿洖搴撳瓨淇℃伅瀵硅薄 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; + } } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteHeaderServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteHeaderServiceImpl.java index 2d6a712..e8a6acb 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteHeaderServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteHeaderServiceImpl.java @@ -9,7 +9,9 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 鏍囧噯宸ヨ壓璺嚎HeaderService涓氬姟灞傚鐞� @@ -104,9 +106,11 @@ public boolean setProcessRouteDataToRedis(String orgCode) { try { List<JSONObject> res = apsStandardProcessRouteHeaderMapper.selectProcessRouteStandardTimeData(orgCode); + Map<String, Object> bulkData = new HashMap<>(); for (JSONObject jsonObject : res) { - redisTemplate.opsForValue().set("ROUTE:ROUTE_"+jsonObject.getString("org_code")+"_"+jsonObject.getString("item_code"), jsonObject.getBigDecimal("standardtime")); + bulkData.put("ROUTE:ROUTE_"+jsonObject.getString("org_code")+"_"+jsonObject.getString("item_code"), jsonObject.getBigDecimal("standardtime")); } + redisTemplate.opsForValue().multiSet(bulkData); return true; } catch (Exception e) { e.printStackTrace(); diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml index 4d3f0d1..fe78db3 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml @@ -103,16 +103,19 @@ </foreach> </delete> - <select id="selectBomRedisData" parameterType="String" resultType="com.alibaba.fastjson2.JSONObject"> - SELECT a.item_code as mainItemCode,f.num as mainStock,b.bom_line_id as bomLineId, b.item_code as itemCode,b.num ,c.num as subStock,d.self_made as selfMade + <select id="selectBomRedisData" parameterType="String" resultType="com.aps.core.domain.ApsBom"> + SELECT a.item_code as mainItemCode,b.bom_line_id as bomLineId, b.item_code as itemCode,b.num FROM aps_bom_header a - LEFT JOIN aps_bom_line b on a.bom_header_id=b.bom_header_id - LEFT JOIN aps_material_storage_management c on b.item_code=c.item_number - LEFT JOIN aps_material_management d on b.item_code=d.item_number - LEFT JOIN aps_material_storage_management as f on a.item_code=f.item_number - <if test="orgCode != null and orgCode != ''"> - WHERE a.org_code=#{orgCode} and d.applicable_factories=#{orgCode} and c.applicable_factories=#{orgCode} - </if> + LEFT JOIN aps_bom_line b on a.bom_header_id=b.bom_header_id + LEFT JOIN aps_material_management d on b.item_code=d.item_number + LEFT JOIN aps_material_management c on a.item_code=c.item_number + <where> + <if test="orgCode != null and orgCode != ''"> + and a.org_code=#{orgCode} and d.applicable_factories=#{orgCode} + </if> + and d.material_type='鍒堕�犱欢' + and c.material_type='鍒堕�犱欢' + </where> ORDER BY mainItemCode </select> </mapper> \ No newline at end of file diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartPlanMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartPlanMapper.xml index 4db91eb..b3f5fa2 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartPlanMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartPlanMapper.xml @@ -46,8 +46,8 @@ <result property="plant" column="plant" /> <result property="unmatchedQuantity" column="unmatched_quantity" /> <result property="professionalAffiliation" column="professional_affiliation" /> - <result property="requireId" column="require_id" /> - <result property="version" column="version" /> +<!-- <result property="requireId" column="require_id" />--> +<!-- <result property="version" column="version" />--> </resultMap> @@ -59,7 +59,9 @@ next_process_deparment, is_suspended, is_outsourcing, account, advanced_materials, advanced_document_number, advanced_requirement_day, is_plan_complete, is_stock_complete, has_turnback, has_risk, std_op, op_status, next_op_name , - plant, unmatched_quantity, professional_affiliation, require_id, version, unmatchedQuantity + plant, unmatched_quantity, professional_affiliation, +-- require_id, version, + unmatched_quantity from aps_part_plan </sql> diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java b/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java index e443ee2..d508059 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java @@ -12,6 +12,7 @@ import com.aps.common.log.enums.BusinessType; import com.aps.common.security.utils.SecurityUtils; import com.aps.job.domain.SysJob; +import com.aps.job.param.ApsWorkOrderJobParam; import com.aps.job.service.*; import com.aps.job.util.CronUtils; import com.aps.job.util.ScheduleUtils; @@ -29,6 +30,7 @@ import java.time.ZoneId; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; +import java.util.Arrays; import java.util.List; /** @@ -230,8 +232,20 @@ public void test(@RequestBody SysJob job) throws Exception { System.out.println("start"); + //鍚屾宸ュ崟鏁版嵁 + boolean continueFlag = true; + Integer currentPage = 1; + ApsWorkOrderJobParam param=new ApsWorkOrderJobParam(); + param.setPageIndex(currentPage); + param.setDocState(Arrays.asList(0,1,2,4)); + param.setPageSize(500); + while (continueFlag){ + param.setPageIndex(currentPage); + continueFlag= apsWorkOrderJobService.batchSaveByPager(param); + currentPage++; + } //鍚屾鐗╂枡鏁版嵁 - apsMaterialManagementJobService.syncApsMaterialData(1, 1000, "FORTUNA", ""); +// apsMaterialManagementJobService.syncApsMaterialData(1, 1000, "FORTUNA", ""); //鍚屾宸ヨ壓璺嚎鏁版嵁 // apsStandardProcessRouteHeaderJobService.syncProcessRouteData(1, 1000, "", ""); //鑾峰彇Redis缂撳瓨涓殑BOM鏁版嵁 diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java b/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java index c73f228..3ba5dee 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java @@ -166,7 +166,10 @@ */ public void syncApsMaterialStorageDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList) { - apsMaterialStorageManagementJobService.syncApsMaterialStorageDataJob(pageIndex, pageSize, orgCode, itemCodeList); + boolean res = apsMaterialStorageManagementJobService.syncApsMaterialStorageDataJob(pageIndex, pageSize, orgCode, itemCodeList); + if(res){ + remoteCoreService.setStorageDataToRedis(SecurityConstants.INNER); + } } /** -- Gitblit v1.9.3