huangjiayang
2025-05-12 b95d82bc5aa78ebb195513f7f2612b2a807edbaa
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
@@ -73,7 +73,7 @@
    @Resource
    IApsPlateStandardRequireBatchService requireBatchService;
    @Autowired
    private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper;
    private IApsMaterialStorageManagementService storageManagementService;
    /**
     * 查询钣金工单标准需求
@@ -181,6 +181,8 @@
            List<ApsPlateStandardRequire> requiresList=new ArrayList<>();
            List<ApsPlateStandardRequireBomStockDetail> stockDetailsList=new ArrayList<>();
            List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList=new ArrayList<>();
            getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null, mainPlan, requiresList, 0L,stockDetailsList,orderDetailsList);
            // 批量插入以提高性能
@@ -226,6 +228,8 @@
     * @param plan 计划对象
     * @param allRequires 所有需求的列表
     * @param level 层级
     * @param stockDetailsList 库存匹配记录
     * @param orderDetailsList 子件工单匹配记录
     */
    private void getBomRequires(String plant, String bomHeaderCode, String bomLineId,String itemCode,BigDecimal itemNum,
                                String batchNum, Date upLevelStartDate, ApsPlatePlan plan,
@@ -259,9 +263,7 @@
        BigDecimal remainderStock = BigDecimal.ZERO;
        /*默认净需求为BOM用量*/
        require.setNetRequirement(require.getBomUseAmount());
        Optional<ApsMaterialStorageManagement> itemStorage = getItemStorage(plant, itemCode);
        Optional<ApsMaterialStorageManagement> itemStorage = Optional.of(storageManagementService.getRdsStorage( plant,  itemCode));
        if (itemStorage.isPresent()) {
            ApsMaterialStorageManagement storage = itemStorage.get();
            /*剩余库存*/
@@ -284,7 +286,9 @@
                    require.setNetRequirement(BigDecimal.ZERO);
                }
                /*记录库存剩余数量,记录库存使用记录*/
                bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount, afterStockAmount,require.getId(),stockDetailsList);
                bomStockDetailService.saveStorageAndDetail(storage, plan, bomLineId,itemCode, batchNum, deductionAmount
                        , afterStockAmount,require.getId(),stockDetailsList
                );
            }
        }
        /*未匹配数量,默认为净需求*/
@@ -354,16 +358,7 @@
            }
        }
    }
    /**
     * 获取物料库存信息
     * */
    private Optional<ApsMaterialStorageManagement> getItemStorage(String plant, String itemNumber) {
        ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement();
        storageParam.setItemNumber(itemNumber);
        storageParam.setApplicableFactories(plant);
        return itemStorageMapper.selectApsMaterialStorageManagementList(storageParam).stream()
                .findFirst();
    }
    /**
     * 获取钣金计划 预留天数