From f003459b33063abdcca11bb6aea1ed550ca5cc7d Mon Sep 17 00:00:00 2001 From: huangjiayang <5265313@qq.com> Date: 星期一, 12 五月 2025 13:34:12 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java | 49 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 39 insertions(+), 10 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java index 10d1fd8..fe53f85 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java @@ -72,6 +72,8 @@ @Resource IApsPlateStandardRequireBatchService requireBatchService; + @Autowired + private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper; /** * 鏌ヨ閽i噾宸ュ崟鏍囧噯闇�姹� @@ -177,8 +179,9 @@ /*褰撳墠Bom鑺傜偣澶勭悊瀹屾垚鍚庯紝澶勭悊涓嬬骇BOM*/ List<ApsPlateStandardRequire> requiresList=new ArrayList<>(); - - getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L); + List<ApsPlateStandardRequireBomStockDetail> stockDetailsList=new ArrayList<>(); + List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList=new ArrayList<>(); + getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L,stockDetailsList,orderDetailsList); // 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘 if (!requiresList.isEmpty()) { @@ -187,6 +190,24 @@ int end = Math.min(i + batchSize, requiresList.size()); List<ApsPlateStandardRequire> batch = requiresList.subList(i, end); apsPlateStandardRequireMapper.batchInsert(batch); + } + } + + if(!stockDetailsList.isEmpty()){ + int batchSize = 1000; + for (int i = 0; i < stockDetailsList.size(); i += batchSize) { + int end = Math.min(i + batchSize, stockDetailsList.size()); + List<ApsPlateStandardRequireBomStockDetail> batch = stockDetailsList.subList(i, end); + plateBomStockDetailMapper.batchInsert(batch); + } + } + + if(!orderDetailsList.isEmpty()){ + int batchSize = 1000; + for (int i = 0; i < orderDetailsList.size(); i += batchSize) { + int end = Math.min(i + batchSize, orderDetailsList.size()); + List<ApsPlateStandardRequireBomOrderDetail> batch = orderDetailsList.subList(i, end); + plateBomOrderDetailMapper.batchInsert(batch); } } } @@ -206,7 +227,12 @@ * @param allRequires 鎵�鏈夐渶姹傜殑鍒楄〃 * @param level 灞傜骇 */ - private void getBomRequires(String plant, String bomHeaderCode, String bomLineId,String itemCode,BigDecimal itemNum, String batchNum, Date upLevelStartDate, ApsPlatePlan plan, List<ApsPlateStandardRequire> allRequires, Long level) { + private void getBomRequires(String plant, String bomHeaderCode, String bomLineId,String itemCode,BigDecimal itemNum, + String batchNum, Date upLevelStartDate, ApsPlatePlan plan, + List<ApsPlateStandardRequire> allRequires, + Long level,List<ApsPlateStandardRequireBomStockDetail> stockDetailsList + ,List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList + ) { /*鏋勫缓闇�姹備俊鎭�*/ ApsPlateStandardRequire require = new ApsPlateStandardRequire(); require.setId(IdUtil.getSnowflakeNextId()); @@ -258,7 +284,7 @@ require.setNetRequirement(BigDecimal.ZERO); } /*璁板綍搴撳瓨鍓╀綑鏁伴噺锛岃褰曞簱瀛樹娇鐢ㄨ褰�*/ - bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount, afterStockAmount,require.getId()); + bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount, afterStockAmount,require.getId(),stockDetailsList); } } /*鏈尮閰嶆暟閲忥紝榛樿涓哄噣闇�姹�*/ @@ -311,7 +337,7 @@ require.setMatchState("寰呭尮閰�"); require.setMatchMode("宸ュ崟鍖归厤"); /*浣跨敤瀛愪欢宸ュ崟杩涜闇�姹傚尮閰�*/ - matchRequireAndSubPlan(require); + matchRequireAndSubPlan(require,orderDetailsList); } allRequires.add(require); if (require.getNetRequirement().compareTo(BigDecimal.ZERO) > 0) { @@ -320,7 +346,10 @@ List<ApsBom> bomLineList = bomLineService.selectRdsBomLineList(plant, itemCode); if (!bomLineList.isEmpty()) { bomLineList.forEach(line -> { - getBomRequires(plant, itemCode, line.getBomLineId(),line.getItemCode() ,line.getNum() , batchNum, require.getStartDate(), plan, allRequires, nextLevel); + getBomRequires(plant, itemCode, line.getBomLineId(),line.getItemCode() ,line.getNum() , batchNum + , require.getStartDate(), plan, allRequires, nextLevel,stockDetailsList + ,orderDetailsList + ); }); } } @@ -352,7 +381,7 @@ * 浣跨敤瀛愪欢宸ュ崟鍖归厤闇�姹備腑鐨勫噣闇�姹� * */ - private void matchRequireAndSubPlan(ApsPlateStandardRequire require) { + private void matchRequireAndSubPlan(ApsPlateStandardRequire require, List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList) { BigDecimal netRequirement = require.getNetRequirement(); require.setMatchMode("宸ュ崟鍖归厤"); if (netRequirement.compareTo(BigDecimal.ZERO) > 0) { @@ -364,7 +393,7 @@ /* 搴撳瓨鏁伴噺 澶т簬 鍑�闇�姹傛暟閲�*/ /* 鍑�闇�姹傛暟閲�=0 锛屽瓙浠跺伐鍗曟湭鍖归厤鏁伴噺= 搴撳瓨-鍑�闇�姹�*/ BigDecimal subtract = stock.subtract(netRequirement); - bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement); + bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement,orderDetailsList); netRequirement = BigDecimal.ZERO; require.setMatchState("宸插尮閰�"); require.setUnmatchedDemandAmount(BigDecimal.ZERO); @@ -374,7 +403,7 @@ /*鍑�闇�姹傛暟閲� == 搴撳瓨鏁伴噺*/ BigDecimal subtract = BigDecimal.ZERO; - bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement); + bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement,orderDetailsList); netRequirement = BigDecimal.ZERO; require.setMatchState("宸插尮閰�"); require.setUnmatchedDemandAmount(BigDecimal.ZERO); @@ -386,7 +415,7 @@ BigDecimal rest = netRequirement.subtract(stock); require.setMatchState("鍖归厤涓�"); /*宸ュ崟 鏈尮閰嶆暟閲忎负0 鍏ㄩ儴鐢ㄤ簬鍖归厤闇�姹�*/ - bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, BigDecimal.ZERO, stock, netRequirement); + bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, BigDecimal.ZERO, stock, netRequirement,orderDetailsList); /*鍑�闇�姹傛湭琚弧瓒筹紝闇�瑕佺户缁尮閰�*/ platePlan = apsPlatePlanMapper.selectUnMatchPlateSubPlan(require.getOrgCode(), require.getBomLineCode()); /*鍓╀綑鍑�闇�姹�*/ -- Gitblit v1.9.3