From b8fed13b2db09ba79b21bb792ce5161bac62e29b Mon Sep 17 00:00:00 2001 From: sfd <sun.sunshine@163.com> Date: 星期五, 23 五月 2025 15:15:35 +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/controller/mainPlan/ApsPlate/ApsPlateProcessStatController.java | 2 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java | 15 +------ aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateProcessStatMapper.java | 2 + aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessShopStatController.java | 9 +++- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java | 82 +++++++++++++++++++++-------------------- aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateProcessStatService.java | 4 +- aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml | 4 + 7 files changed, 59 insertions(+), 59 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessShopStatController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessShopStatController.java index ab26b2a..931dbc8 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessShopStatController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessShopStatController.java @@ -52,8 +52,13 @@ @PostMapping("/update") public AjaxResult update() { - apsPlateProcessShopStatService.saveShopStat(); - return toAjax(true); + try { + apsPlateProcessShopStatService.saveShopStat(); + return toAjax(true); + } catch (Exception e) { + return AjaxResult.error("鏇存柊澶辫触锛�"+e.getMessage()); + } + } /** diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessStatController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessStatController.java index 2b8ae88..874a4bc 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessStatController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateProcessStatController.java @@ -89,7 +89,7 @@ @PostMapping("/update") public AjaxResult updateStat() { - apsPlateProcessStatService.savePlateProcessStat(); + apsPlateProcessStatService.computePlateProcessStat(); return toAjax(true); } /** diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateProcessStatMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateProcessStatMapper.java index 5f3df07..d844106 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateProcessStatMapper.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateProcessStatMapper.java @@ -73,4 +73,6 @@ * 鎵归噺鎻掑叆鏁版嵁 * */ int batchInsertPlateStat(List<ApsPlateProcessStat> list); + + int deleteAll(); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateProcessStatService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateProcessStatService.java index e8b73bb..aa0add2 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateProcessStatService.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateProcessStatService.java @@ -60,6 +60,6 @@ */ public int deleteApsPlateProcessStatById(String id); - @Transactional - void savePlateProcessStat(); + + List<ApsPlateProcessStat> computePlateProcessStat(); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java index 2436835..49350cd 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java @@ -5,6 +5,8 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson2.JSON; import com.alibaba.nacos.common.utils.JacksonUtils; @@ -136,38 +138,34 @@ /** * 淇濆瓨閽i噾杞﹂棿缁熻 */ - @Transactional + @Transactional( rollbackFor =Exception.class) @Override public void saveShopStat() { - try { - apsPlateProcessStatService.savePlateProcessStat(); + // 瀹氫箟璇ュ姛鑳戒娇鐢ㄦ暟鎹簮涓哄崡閫氱殑宸ュ巶 + final String plant = "FORTUNA"; + final String major="BJ"; + // 鏌ヨ鐩稿叧鏁版嵁 + ApsPlatePlan platePlan = new ApsPlatePlan(); + platePlan.setPlant(plant); + List<ApsPlatePlan> planList = apsPlatePlanMapper.selectApsPlatePlanList(platePlan); + + ApsShop apsShop = new ApsShop(); + apsShop.setPlantCode(plant); + List<ApsShop> shopList = shopMapper.selectApsShopList(apsShop); + + ApsStandardProcess process = new ApsStandardProcess(); + process.setPlant(plant); + process.setMajor(major); + + List<ApsStandardProcess> shopProcesses = standardProcessMapper.selectApsStandardProcessList(process); + + if (!planList.isEmpty() && !shopList.isEmpty() && !shopProcesses.isEmpty()) { // 寮�濮嬩箣鍓嶅厛鍒犻櫎鎵�鏈夊巻鍙叉暟鎹� + apsPlateProcessStatMapper.deleteAll(); apsPlateProcessShopStatMapper.deleteAll(); - - // 瀹氫箟璇ュ姛鑳戒娇鐢ㄦ暟鎹簮涓哄崡閫氱殑宸ュ巶 - final String plant = "FORTUNA"; - final String major="閽i噾"; - // 鏌ヨ鐩稿叧鏁版嵁 - ApsPlatePlan platePlan = new ApsPlatePlan(); - platePlan.setPlant(plant); - List<ApsPlatePlan> planList = apsPlatePlanMapper.selectApsPlatePlanList(platePlan); - - List<ApsPlateProcessStat> statList = apsPlateProcessStatMapper.selectApsPlateProcessStatList(new ApsPlateProcessStat()); - - ApsShop apsShop = new ApsShop(); - apsShop.setPlantCode(plant); - List<ApsShop> shopList = shopMapper.selectApsShopList(apsShop); - - ApsStandardProcess process = new ApsStandardProcess(); - process.setPlant(plant); - process.setMajor(major); - List<ApsStandardProcess> shopProcesses = standardProcessMapper.selectApsStandardProcessList(process); - if (planList.isEmpty() || shopList.isEmpty() || shopProcesses.isEmpty()) { - log.warn("璁″垝鍒楄〃銆佽溅闂村垪琛ㄦ垨宸ュ簭鍒楄〃涓虹┖锛屾棤娉曠敓鎴愮粺璁′俊鎭�"); - return; - } - // 鏋勫缓杞﹂棿鍚嶇О鍒板伐搴忓悕绉扮殑鏄犲皠 - Map<String, List<String>> shopToProcessNames = shopProcesses.stream() + List<ApsPlateProcessStat> statList =apsPlateProcessStatService.computePlateProcessStat(); + // 鏋勫缓杞﹂棿鍚嶇О鍒板伐搴忓悕绉扮殑鏄犲皠 + Map<String, List<String>> shopToProcessNames = shopProcesses.stream().filter(x -> null!=x.getWorkShop()) .collect(Collectors.groupingBy(ApsStandardProcess::getWorkShop, Collectors.mapping(ApsStandardProcess::getProcessName, Collectors.toList()) )); @@ -179,18 +177,22 @@ statsToInsert.add(stat); } } - // 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘 - if (!statsToInsert.isEmpty()) { - int batchSize = 1000; - for (int i = 0; i < statsToInsert.size(); i += batchSize) { - int end = Math.min(i + batchSize, statsToInsert.size()); - List<ApsPlateProcessShopStat> batch = statsToInsert.subList(i, end); - apsPlateProcessShopStatMapper.batchInsert(batch); - } + List<List<ApsPlateProcessStat>> processStatBatchList = ListUtil.split(statList, 1000); + processStatBatchList.forEach(batch -> apsPlateProcessStatMapper.batchInsertPlateStat(batch)); + + + List<List<ApsPlateProcessShopStat>> shopStatBatchList = ListUtil.split(statsToInsert, 1000); + shopStatBatchList.forEach(batch -> apsPlateProcessShopStatMapper.batchInsert(batch)); + }else { + if(shopProcesses.isEmpty()){ + throw new RuntimeException("鏈壘鍒版爣鍑嗗伐搴忔暟鎹紒"); } - } catch (Exception e) { - log.error("淇濆瓨閽i噾杞﹂棿缁熻鏃跺彂鐢熷紓甯�", e); - throw new RuntimeException("淇濆瓨閽i噾杞﹂棿缁熻澶辫触", e); + if(shopList.isEmpty()){ + throw new RuntimeException("鏈壘鍒拌溅闂存暟鎹紒"); + } + if(planList.isEmpty()){ + throw new RuntimeException("鏈壘鍒板伐鍗曟暟鎹紒"); + } } } @@ -210,7 +212,6 @@ stat.setWorkCenter(plan.getWorkCenter()); stat.setProcessNumber(plan.getProcessNumber()); try { - List<String> processNames = shopToProcessNames.getOrDefault(shopName, Collections.emptyList()); if (!processNames.isEmpty()) { @@ -253,6 +254,7 @@ } } catch (Exception e) { log.error("computer error:"+ JSONObject.toJSONString(stat)); + throw new RuntimeException("璁$畻杞﹂棿缁熻鏁版嵁寮傚父锛�"); } return stat; } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java index 410a1d6..55507be 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java @@ -107,12 +107,10 @@ /** * 淇濆瓨閽i噾缁熻鏁版嵁 */ - @Transactional @Override - public void savePlateProcessStat() { + public List<ApsPlateProcessStat> computePlateProcessStat() { String batchNum = IdUtils.fastSimpleUUID(); List<ApsPlateProcessStat> tempList = apsPlateProcessStatMapper.queryTempStat(); - ApsPlateProcessStat apsPlateProcessStat = tempList.stream().filter(x -> x.getWorkOrderNo().equals("MO-250409003498")).findFirst().get(); Map<String, List<ApsPlateProcessStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsPlateProcessStat::getWorkOrderNo)); Boolean hasBefore = false; LocalDateTime now = LocalDateTime.now(); @@ -186,16 +184,7 @@ } hasBefore=false; } - apsPlateProcessStatMapper.removeOtherStat(batchNum); - if(!totalList.isEmpty()){ - int batchSize = 1000; - totalList.forEach(x->x.setId(String.valueOf(IdUtil.getSnowflakeNextId()))); - for (int i = 0; i < totalList.size(); i += batchSize) { - int end = Math.min(i + batchSize, totalList.size()); - List<ApsPlateProcessStat> batch = totalList.subList(i, end); - apsPlateProcessStatMapper.batchInsertPlateStat(batch); - } - } + return totalList; } diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml index 2db812a..5eefeb2 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml @@ -160,7 +160,9 @@ <update id="removeOtherStat" parameterType="String"> delete from aps_plate_process_stat where batch_number != #{batchNumber} </update> - + <update id="deleteAll" parameterType="String"> + delete from aps_plate_process_stat + </update> <insert id="batchInsertPlateStat" parameterType="com.aps.core.domain.ApsPlate.ApsPlateProcessStat"> insert into aps_plate_process_stat ( -- Gitblit v1.9.3