From 5c5bc65b0edb80a4c990015a43bda0f800b25202 Mon Sep 17 00:00:00 2001 From: zhanghl <253316343@qq.com> Date: 星期五, 09 五月 2025 10:21:11 +0800 Subject: [PATCH] 钣金需求匹配-程序完善 --- aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml | 14 ++++--- aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireBomStockDetailService.java | 2 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java | 46 ++++++++++++++--------- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java | 3 - aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java | 5 ++ aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java | 6 +- aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsBom.java | 7 +-- 7 files changed, 49 insertions(+), 34 deletions(-) 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 1419343..f59dde3 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 @@ -3,9 +3,7 @@ import com.aps.common.core.annotation.Excel; import com.aps.common.core.web.domain.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.*; import java.math.BigDecimal; import java.util.Date; @@ -18,7 +16,8 @@ */ @EqualsAndHashCode(callSuper = true) @Data - +@NoArgsConstructor +@AllArgsConstructor public class ApsBom extends BaseEntity { private static final long serialVersionUID = 1L; 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 7f1f9e0..7e16116 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,5 @@ */ public int deleteApsPlateStandardRequireBomStockDetailById(Long id); - void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, ApsBom bomLine, 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); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java index 8d85a6e..03f6973 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java @@ -115,8 +115,7 @@ ApsBom build = new ApsBom(); build.setBomHeaderId(apsBomHeader.getBomHeaderId()); build.setOrgCode(apsBomHeader.getOrgCode()); - List<ApsBom> apsBoms = apsBomMapper.selectApsBomList(build); - return apsBoms; + bomLineList = apsBomMapper.selectApsBomList(build); } return bomLineList; } 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 0fc83c9..bd6637b 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 @@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil; import com.aps.common.core.utils.DateUtils; +import com.aps.common.security.utils.SecurityUtils; import com.aps.core.domain.ApsPlatePlan; import com.aps.core.domain.ApsPlateStandardRequire; import com.aps.core.mapper.ApsPlatePlanMapper; @@ -117,7 +118,11 @@ .deductionAmount(netRequirement) .afterProdAmount(subtract) .batchNumber(require.getBatchNumber()) + .orgCode(require.getOrgCode()) + .delFlag("0") .build(); + bomOrderDetail.setCreateTime(DateUtils.getNowDate()); + bomOrderDetail.setCreateBy(SecurityUtils.getUsername()); 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 4ecc74d..3bb35b8 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 @@ -109,7 +109,7 @@ * 璁$畻鐗╂枡鍓╀綑搴撳瓨 骞朵繚瀛樼墿鏂欏墿浣欏簱瀛樻槑缁嗐�� * */ @Override - public void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, ApsBom bomLine, 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){ /*鏇存柊鐗╂枡鍓╀綑搴撳瓨*/ itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion()); /*璁板綍鎵e噺鏄庣粏*/ @@ -117,8 +117,8 @@ .id(IdUtil.getSnowflakeNextId()) .requireId(requireId) .requireTrackId(plan.getRequireId()) - .bomLineId(bomLine.getBomLineId()) - .bomLineCode(bomLine.getItemCode()) + .bomLineId(bomLineId) + .bomLineCode(itemCode) .beforeStockAmount(itemStorage.getRemainderStock()) .deductionAmount(deductionAmount) .afterStockAmount(afterStockAmount) 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 4722333..8466aaa 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 @@ -175,13 +175,11 @@ String itemNumber = mainPlan.getItemNumber(); /*鏍规嵁鏂欏彿 鑾峰彇BOM Header */ /*褰撳墠Bom鑺傜偣澶勭悊瀹屾垚鍚庯紝澶勭悊涓嬬骇BOM*/ - List<ApsBom> bomLineList = bomLineService.selectApsBomLineList(plantCode, itemNumber); + List<ApsPlateStandardRequire> requiresList=new ArrayList<>(); - if(!bomLineList.isEmpty()){ - bomLineList.forEach(line -> { - getBomRequires(plantCode, line, batchNum, null, mainPlan, requiresList, 0L); - }); - } + + getBomRequires(plantCode, "0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L); + // 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘 if (!requiresList.isEmpty()) { int batchSize = 1000; @@ -196,10 +194,18 @@ /** * 鏋勫缓闇�姹備俊鎭� - * */ - private void getBomRequires(String plant, ApsBom bomLine, String batchNum, Date upLevelStartDate, ApsPlatePlan plan, List<ApsPlateStandardRequire> allRequires, Long level) { - - String itemNumber = bomLine.getItemCode(); + * + * @param plant 宸ュ巶浠g爜 + * @param bomLineId BOM琛孖D + * @param itemCode 鐗╂枡浠g爜 + * @param itemNum 鐗╂枡鏁伴噺 + * @param batchNum 鎵规鍙� + * @param upLevelStartDate 涓婄骇宸ュ簭鐨勫紑濮嬫棩鏈� + * @param plan 璁″垝瀵硅薄 + * @param allRequires 鎵�鏈夐渶姹傜殑鍒楄〃 + * @param level 灞傜骇 + */ + private void getBomRequires(String plant, String bomLineId,String itemCode,BigDecimal itemNum, String batchNum, Date upLevelStartDate, ApsPlatePlan plan, List<ApsPlateStandardRequire> allRequires, Long level) { /*鏋勫缓闇�姹備俊鎭�*/ ApsPlateStandardRequire require = new ApsPlateStandardRequire(); require.setId(IdUtil.getSnowflakeNextId()); @@ -207,24 +213,27 @@ require.setBatchNumber(batchNum); require.setDocNum(plan.getDocumentNumber()); require.setOrgCode(plant); - require.setBomLineCode(itemNumber); + require.setBomLineId(bomLineId); + require.setBomLineCode(itemCode); require.setBomLineLevel(level); - require.setBomUseAmount(bomLine.getNum()); + require.setBomUseAmount(itemNum); require.setCreateTime(DateUtils.getNowDate()); require.setCreateBy(SecurityUtils.getUsername()); + require.setDelFlag("0"); + require.setProductionBase(plan.getProductionBase()); /*璁$畻闇�姹傛暟閲�*/ if (level == 0) { require.setBomUseAmount(BigDecimal.ONE); require.setCompleteDate(plan.getPlanEndDay()); require.setDemandDate(plan.getPlanEndDay()); } else { - require.setBomUseAmount(bomLine.getNum().multiply(plan.getProductionQuantity())); + require.setBomUseAmount(itemNum.multiply(plan.getProductionQuantity())); } /*鏌ユ壘搴撳瓨锛岃绠楀噣闇�姹傦紝淇濆瓨鍓╀綑搴撳瓨锛屼繚瀛樺簱瀛樻墸鍑忔槑缁�*/ BigDecimal remainderStock = BigDecimal.ZERO; /*榛樿鍑�闇�姹備负BOM鐢ㄩ噺*/ require.setNetRequirement(require.getBomUseAmount()); - Optional<ApsMaterialStorageManagement> itemStorage = getItemStorage(plant, itemNumber); + Optional<ApsMaterialStorageManagement> itemStorage = getItemStorage(plant, itemCode); if (itemStorage.isPresent()) { ApsMaterialStorageManagement storage = itemStorage.get(); /*鍓╀綑搴撳瓨*/ @@ -246,10 +255,10 @@ afterStockAmount = remainderStock.subtract(deductionAmount); require.setNetRequirement(BigDecimal.ZERO); } - bomStockDetailService.saveStorageAndDetail(storage, plan, bomLine, batchNum, deductionAmount, afterStockAmount,require.getId()); + /*璁板綍搴撳瓨鍓╀綑鏁伴噺锛岃褰曞簱瀛樹娇鐢ㄨ褰�*/ + bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount, afterStockAmount,require.getId()); } } - /*宸ヨ壓璺嚎鎬婚渶姹�*/ ApsStandardProcessRouteLine routeHeader = routeLineService.getRouteLineTotalTime(require); String routeId = routeHeader.getRouteId(); @@ -297,10 +306,11 @@ allRequires.add(require); if (require.getNetRequirement().compareTo(BigDecimal.ZERO) > 0) { /*褰撳墠Bom鑺傜偣澶勭悊瀹屾垚鍚庯紝澶勭悊涓嬬骇BOM*/ - List<ApsBom> bomLineList = bomLineService.selectApsBomLineList(plant, itemNumber); + long nextLevel=level+1; + List<ApsBom> bomLineList = bomLineService.selectApsBomLineList(plant, itemCode); if (!bomLineList.isEmpty()) { bomLineList.forEach(line -> { - getBomRequires(plant, line, batchNum, require.getStartDate(), plan, allRequires, level + 1); + getBomRequires(plant, line.getBomLineId(),line.getItemCode() ,line.getNum() , batchNum, require.getStartDate(), plan, allRequires, nextLevel); }); } } diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml index 9e4b7ce..8a96cd8 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml @@ -48,6 +48,7 @@ <result property="orderCreateTime" column="order_create_time" /> <result property="professionalAffiliation" column="professional_affiliation" /> <result property="requireId" column="require_id" /> + <result property="version" column="version" /> </resultMap> <sql id="selectApsPlatePlanVo"> @@ -57,8 +58,8 @@ work_center, department, plan_start_day, plan_end_day, standby_number, standby_name, standby_stock, 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 ,unmatched_quantity,professional_affiliation - , production_base, order_create_time + has_turnback, has_risk, std_op, op_status, next_op_name ,unmatched_quantity,professional_affiliation, + require_id, version,production_base, order_create_time from aps_plate_plan </sql> @@ -269,8 +270,9 @@ </update> <select id="selectPlatePlanByPlantMajor" parameterType="ApsPlatePlan" resultMap="ApsPlatePlanResult"> - select id,document_number,plan_end_day, main_part_number,item_number,plant,professional_affiliation,production_quantity,require_id - from aps_plate_plan + select id,document_number,main_part_number,item_number,plant,professional_affiliation,production_quantity,require_id, + unmatched_quantity,version, production_base + (case when custom_time is null then plan_end_day else custom_time end ) as plan_end_day <where> <if test="plant != null "> and plant = #{plant}</if> <if test="professionalAffiliation != null "> and professional_affiliation = #{professionalAffiliation}</if> @@ -281,7 +283,7 @@ <select id="selectUnMatchPlateSubPlan" parameterType="ApsPlatePlan" resultMap="ApsPlatePlanResult"> select id,document_number,main_part_number,item_number,plant,professional_affiliation,production_quantity, - unmatched_quantity + unmatched_quantity,version from aps_plate_plan where del_flag='0' and professional_affiliation !='0' and unmatched_quantity > 0 <if test="plant != null and plan !='' "> and plant = #{plant}</if> @@ -308,7 +310,7 @@ <update id="initUnMatchQty" > update aps_plate_plan - set unmatched_quantity=production_quantity, version=0 + set unmatched_quantity=production_quantity, version=0,require_id=id where del_flag='0' and professional_affiliation !='0' </update> </mapper> \ No newline at end of file -- Gitblit v1.9.3