| | |
| | | productionProductMain.setStatus(0); |
| | | productionProductMainMapper.insert(productionProductMain); |
| | | /*新增报工投入表*/ |
| | | List<ProductStructureDto> allProcess = productStructureMapper.listBybomId(productProcessRoute.getBomId()); |
| | | List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId()); |
| | | |
| | | List<Long> lastProcessIds = new ArrayList<>(); |
| | | |
| | | if (!allProcess.isEmpty()) { |
| | | String lastProcessName = allProcess.get(allProcess.size() - 1).getProcessName(); |
| | | |
| | | for (int i = allProcess.size() - 1; i >= 0; i--) { |
| | | ProductStructureDto d = allProcess.get(i); |
| | | |
| | | if (lastProcessName.equals(d.getProcessName())) { |
| | | lastProcessIds.add(d.getId()); |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (productStructureDtos.size() == 0) { |
| | | //如果该工序没有产品结构的投入品,那这个投入品和产出品是同一个 |
| | | ProductStructureDto productStructureDto = new ProductStructureDto(); |
| | |
| | | for (ProductStructureDto productStructureDto : productStructureDtos) { |
| | | ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId()); |
| | | Product product = productMapper.selectById(productModel1.getProductId()); |
| | | |
| | | // 判断是否为最后一道工序 |
| | | BigDecimal needQuantity = dto.getQuantity().divide(productStructureDto.getUnitQuantity(), 2, BigDecimal.ROUND_HALF_UP); |
| | | if (lastProcessIds.contains(productStructureDto.getId())) { |
| | | needQuantity = dto.getQuantity().multiply(productStructureDto.getUnitQuantity()); |
| | | } |
| | | |
| | | |
| | | // 查询产品库存 |
| | | BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity"); |
| | | if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) { |
| | | throw new RuntimeException(product.getProductName()+"产品的"+productModel1.getModel() + "的规格库存为0"); |
| | | } |
| | | if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) { |
| | | if (stockQuantity.compareTo(needQuantity) < 0) { |
| | | throw new RuntimeException(product.getProductName()+"产品的"+productModel1.getModel() + "的规格库存不足"); |
| | | } |
| | | // 查询采购产品 |
| | |
| | | |
| | | ProductionProductInput productionProductInput = new ProductionProductInput(); |
| | | productionProductInput.setProductModelId(productStructureDto.getProductModelId()); |
| | | productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())); |
| | | productionProductInput.setQuantity(needQuantity); |
| | | productionProductInput.setProductMainId(productionProductMain.getId()); |
| | | productionProductInputMapper.insert(productionProductInput); |
| | | //对应的库存出库 |