| | |
| | | @Resource |
| | | IApsPlateStandardRequireBatchService requireBatchService; |
| | | @Autowired |
| | | private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper; |
| | | private IApsMaterialStorageManagementService storageManagementService; |
| | | |
| | | /** |
| | | * 查询钣金工单标准需求 |
| | |
| | | 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); |
| | | |
| | | // 批量插入以提高性能 |
| | |
| | | * @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, |
| | |
| | | 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(); |
| | | /*剩余库存*/ |
| | |
| | | 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 |
| | | ); |
| | | } |
| | | } |
| | | /*未匹配数量,默认为净需求*/ |
| | |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 获取物料库存信息 |
| | | * */ |
| | | private Optional<ApsMaterialStorageManagement> getItemStorage(String plant, String itemNumber) { |
| | | ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement(); |
| | | storageParam.setItemNumber(itemNumber); |
| | | storageParam.setApplicableFactories(plant); |
| | | return itemStorageMapper.selectApsMaterialStorageManagementList(storageParam).stream() |
| | | .findFirst(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取钣金计划 预留天数 |