zhanghl
2025-05-09 b9f174c82a6b2c0b566497e15c56a71e6482b471
钣金需求匹配-需求信息增加上级物料编码
已修改4个文件
23 ■■■■■ 文件已修改
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java
@@ -31,7 +31,8 @@
    private String requireTrackId;
    /**单号*/
    private String docNum;
    /**上级物料编码*/
    private String bomHeaderCode;
    /** bom_line_id */
//    @Excel(name = "bom_line_id")
    private String bomLineId;
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
@@ -178,7 +178,7 @@
            List<ApsPlateStandardRequire> requiresList=new ArrayList<>();
            getBomRequires(plantCode, "0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L);
            getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L);
            // 批量插入以提高性能
            if (!requiresList.isEmpty()) {
@@ -196,6 +196,7 @@
     * 构建需求信息
     *
     * @param plant 工厂代码
     * @param bomHeaderCode BOM上级物料编码
     * @param bomLineId BOM行ID
     * @param itemCode 物料代码
     * @param itemNum 物料数量
@@ -205,7 +206,7 @@
     * @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) {
    private void getBomRequires(String plant, String bomHeaderCode, 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());
@@ -213,6 +214,7 @@
        require.setBatchNumber(batchNum);
        require.setDocNum(plan.getDocumentNumber());
        require.setOrgCode(plant);
        require.setBomHeaderCode(bomHeaderCode);
        require.setBomLineId(bomLineId);
        require.setBomLineCode(itemCode);
        require.setBomLineLevel(level);
@@ -259,6 +261,8 @@
                bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount, afterStockAmount,require.getId());
            }
        }
        /*未匹配数量,默认为净需求*/
        require.setUnmatchedDemandAmount(require.getNetRequirement());
        /*工艺路线总需求*/
        ApsStandardProcessRouteLine routeHeader = routeLineService.getRouteLineTotalTime(require);
        String routeId = routeHeader.getRouteId();
@@ -310,7 +314,7 @@
            List<ApsBom> bomLineList = bomLineService.selectApsBomLineList(plant, itemCode);
            if (!bomLineList.isEmpty()) {
                bomLineList.forEach(line -> {
                    getBomRequires(plant, 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);
                });
            }
        }
@@ -352,18 +356,18 @@
                if (netRequirement.compareTo(stock) < 0) {
                    /* 库存数量 大于 净需求数量*/
                    /* 净需求数量=0 ,子件工单未匹配数量= 库存-净需求*/
                    netRequirement = BigDecimal.ZERO;
                    require.setNetRequirement(netRequirement);
                    BigDecimal subtract = stock.subtract(netRequirement);
                    bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement);
                    netRequirement = BigDecimal.ZERO;
                    /*净需求已经被满足,不需要继续匹配*/
                } else if (netRequirement.compareTo(stock) == 0) {
                    /*净需求数量 == 库存数量*/
                    netRequirement = BigDecimal.ZERO;
                    require.setNetRequirement(netRequirement);
                    BigDecimal subtract = BigDecimal.ZERO;
                    bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement);
                    netRequirement = BigDecimal.ZERO;
                    /*净需求已经被满足,不需要继续匹配*/
                }
                if (netRequirement.compareTo(stock) > 0) {
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml
@@ -271,8 +271,9 @@
    <select id="selectPlatePlanByPlantMajor" parameterType="ApsPlatePlan" resultMap="ApsPlatePlanResult">
        select  id,document_number,main_part_number,item_number,plant,professional_affiliation,production_quantity,require_id,
        unmatched_quantity,version, production_base
        unmatched_quantity,version, production_base,
        (case   when custom_time is null then plan_end_day else custom_time end ) as plan_end_day
        from aps_plate_plan
        <where>
            <if test="plant != null "> and plant = #{plant}</if>
            <if test="professionalAffiliation != null "> and professional_affiliation = #{professionalAffiliation}</if>
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateStandardRequireMapper.xml
@@ -187,7 +187,7 @@
    <insert id="batchInsert" parameterType="java.util.List">
        insert into aps_plate_standard_require
        (id, require_track_id,doc_num,batch_number, org_code, bom_line_id, bom_line_code, bom_line_level, bom_use_amount, process_route_id,
        (id, require_track_id,doc_num,batch_number, org_code, bom_header_code,bom_line_id, bom_line_code, bom_line_level, bom_use_amount, process_route_id,
         process_route_hours, require_amount, net_requirement, start_date, complete_date, demand_date,
         production_base, match_state, match_mode, unmatched_demand_amount, suggested_completion_date,
         has_delay_risk, del_flag, create_time, create_by)
@@ -199,6 +199,7 @@
            #{item.docNum},
            #{item.batchNumber},
            #{item.orgCode},
            #{item.bomHeaderCode},
            #{item.bomLineId},
            #{item.bomLineCode},
            #{item.bomLineLevel},