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/IApsPlateStandardRequireBomOrderDetailService.java | 4 + aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomStockDetailService.java | 5 ++ aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java | 49 +++++++++++++++++++----- aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomOrderDetailMapper.java | 2 + aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomOrderDetailMapper.xml | 13 ++++++ aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomStockDetailMapper.java | 4 ++ aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java | 7 ++- aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomStockDetailMapper.xml | 13 ++++++ aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java | 9 +++- aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml | 1 10 files changed, 89 insertions(+), 18 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomOrderDetailMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomOrderDetailMapper.java index 9960819..53c9204 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomOrderDetailMapper.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomOrderDetailMapper.java @@ -63,4 +63,6 @@ public int deleteApsPlateStandardRequireBomOrderDetailByIds(Long[] ids); int deleteLastPatch(String batchNumber); + + int batchInsert(List<ApsPlateStandardRequireBomOrderDetail> list); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomStockDetailMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomStockDetailMapper.java index 9dcb767..fb5fd9e 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomStockDetailMapper.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireBomStockDetailMapper.java @@ -1,6 +1,8 @@ package com.aps.core.mapper; import java.util.List; + +import com.aps.core.domain.ApsPlateStandardRequireBomOrderDetail; import com.aps.core.domain.ApsPlateStandardRequireBomStockDetail; import org.apache.ibatis.annotations.Mapper; @@ -62,4 +64,6 @@ public int deleteApsPlateStandardRequireBomStockDetailByIds(Long[] ids); int deleteLastPatch(String batchNumber); + + int batchInsert(List<ApsPlateStandardRequireBomStockDetail> list); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomOrderDetailService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomOrderDetailService.java index 6bee8d5..480f095 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomOrderDetailService.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomOrderDetailService.java @@ -63,5 +63,7 @@ */ public int deleteApsPlateStandardRequireBomOrderDetailById(Long id); - void savePlastPlanAndBomOrderDetail(ApsPlateStandardRequire require, ApsPlatePlan platePlan, BigDecimal subtract, BigDecimal stock, BigDecimal netRequirement); + void savePlastPlanAndBomOrderDetail(ApsPlateStandardRequire require, ApsPlatePlan platePlan, BigDecimal subtract + , BigDecimal stock, BigDecimal netRequirement, List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList + ); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomStockDetailService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomStockDetailService.java index 7e16116..b32fffd 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomStockDetailService.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomStockDetailService.java @@ -64,5 +64,8 @@ */ public int deleteApsPlateStandardRequireBomStockDetailById(Long id); - void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId,String itemCode, String batchNum, BigDecimal deductionAmount, BigDecimal afterStockAmount,Long requireId); + void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId + ,String itemCode, String batchNum, BigDecimal deductionAmount, BigDecimal afterStockAmount,Long requireId + , List<ApsPlateStandardRequireBomStockDetail> stockDetailsList + ); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java index 0f54f59..4feac70 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java @@ -104,7 +104,8 @@ } @Transactional @Override - public void savePlastPlanAndBomOrderDetail(ApsPlateStandardRequire require, ApsPlatePlan platePlan, BigDecimal subtract, BigDecimal stock, BigDecimal netRequirement) { + public void savePlastPlanAndBomOrderDetail(ApsPlateStandardRequire require, ApsPlatePlan platePlan, BigDecimal subtract + , BigDecimal stock, BigDecimal netRequirement, List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList) { platePlan.setUnmatchedQuantity(subtract); apsPlatePlanMapper.updatePlanUnMatchQtyByVersion(platePlan); /* 璁板綍宸ュ崟涓庡噣闇�姹傜殑鍖归厤鍏崇郴*/ @@ -124,6 +125,8 @@ .build(); bomOrderDetail.setCreateTime(DateUtils.getNowDate()); bomOrderDetail.setCreateBy(SecurityUtils.getUsername()); - apsPlateStandardRequireBomOrderDetailMapper.insertApsPlateStandardRequireBomOrderDetail(bomOrderDetail); + + orderDetailsList.add(bomOrderDetail); + // apsPlateStandardRequireBomOrderDetailMapper.insertApsPlateStandardRequireBomOrderDetail(bomOrderDetail); } } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java index a3637e7..34616a5 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java @@ -111,7 +111,10 @@ * */ @Transactional @Override - public void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId,String itemCode, String batchNum, BigDecimal deductionAmount, BigDecimal afterStockAmount,Long requireId){ + public void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId, + String itemCode, String batchNum, BigDecimal deductionAmount, + BigDecimal afterStockAmount,Long requireId + ,List<ApsPlateStandardRequireBomStockDetail> stockDetailsList){ /*鏇存柊鐗╂枡鍓╀綑搴撳瓨*/ itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion()); /*璁板綍鎵e噺鏄庣粏*/ @@ -131,8 +134,8 @@ bomStockDetail.setCreateBy(SecurityUtils.getUsername()); bomStockDetail.setCreateTime(DateUtils.getNowDate()); - plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail); + stockDetailsList.add(bomStockDetail); + //plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail); } - } 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()); /*鍓╀綑鍑�闇�姹�*/ 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 d66f9e7..4d3f0d1 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 @@ -112,7 +112,6 @@ 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} - and a.item_code='A6501-001080' </if> ORDER BY mainItemCode </select> diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomOrderDetailMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomOrderDetailMapper.xml index 5d6ac40..650ec9a 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomOrderDetailMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomOrderDetailMapper.xml @@ -129,4 +129,17 @@ <update id="deleteLastPatch" parameterType="String"> update aps_plate_standard_require_bom_order_detail set del_flag = '1' where batch_number = #{batchNumber} </update> + + <insert id="batchInsert" parameterType="ApsPlateStandardRequireBomOrderDetail"> + insert into aps_plate_standard_require_bom_order_detail + (id, require_id,require_track_id, bom_line_id, bom_line_code, doc_no, + before_prod_amount, deduction_amount, after_prod_amount, + org_code, batch_number, del_flag, create_time, create_by,) + values + <foreach collection="list" item="item" index="index" separator=","> + (#{item.id}, #{item.requireId},#{item.requireTrackId}, #{item.bomLineId}, #{item.bomLineCode}, #{item.docNo}, + #{item.beforeProdAmount}, #{item.deductionAmount}, #{item.afterProdAmount}, + #{item.orgCode}, #{item.batchNumber}, #{item.delFlag}, #{item.createTime}, #{item.createBy},) + </foreach> + </insert> </mapper> \ No newline at end of file diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomStockDetailMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomStockDetailMapper.xml index 552802d..8574f88 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomStockDetailMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireBomStockDetailMapper.xml @@ -122,4 +122,17 @@ <update id="deleteLastPatch" parameterType="String"> update aps_plate_standard_require_bom_stock_detail set del_flag = '1' where batch_number = #{batchNumber} </update> + + <insert id="batchInsert" parameterType="ApsPlateStandardRequireBomStockDetail"> + insert into aps_plate_standard_require_bom_stock_detail + (id,require_id, require_track_id, bom_line_id, bom_line_code, before_stock_amount, deduction_amount + , after_stock_amount, org_code, batch_number, del_flag, create_time, create_by) + values + <foreach item="item" index="index" collection="list" separator=","> + ( #{id}, #{item.requireId}, #{item.requireTrackId}, #{item.bomLineId}, #{item.bomLineCode} + , #{item.beforeStockAmount} , #{item.deductionAmount}, #{item.afterStockAmount}, #{item.orgCode} + , #{item.batchNumber} , #{item.delFlag}, #{item.createTime}, #{item.createBy} + ) + </foreach> + </insert> </mapper> \ No newline at end of file -- Gitblit v1.9.3