| | |
| | | import com.ruoyi.stock.service.*; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R start(Long id) { |
| | | StockInventoryCheckPlan stockInventoryCheckPlan = this.getById(id); |
| | | StockInventoryCheckPlanDto stockInventoryCheckPlanDto = new StockInventoryCheckPlanDto(); |
| | |
| | | StockInventoryCheckItemDto stockInventoryCheckItemDto = new StockInventoryCheckItemDto(); |
| | | stockInventoryCheckItemDto.setProductModelId(stockInventory.getProductModelId()); |
| | | stockInventoryCheckItemDto.setBatchNo(stockInventory.getBatchNo()); |
| | | stockInventoryCheckItemDto.setWarehouseInfoId(stockInventory.getWarehouseInfoId()); |
| | | stockInventoryCheckItemDto.setSystemQuantity(stockInventory.getQualitity()); |
| | | stockInventoryCheckItemDto.setModel(stockInventory.getModel()); |
| | | stockInventoryCheckItemDto.setUnit(stockInventory.getUnit()); |
| | |
| | | |
| | | if (item.getDifferenceQuantity().compareTo(BigDecimal.ZERO) > 0) { |
| | | stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_IN.getCode()); |
| | | StockInRecordDto stockInRecordDto = stockUtils.addStockWithBatchNo(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs (), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo()); |
| | | StockInRecordDto stockInRecordDto = stockUtils.addStockWithBatchNo(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs (), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo(), resolveWarehouseInfoId(item.getProductModelId(), item.getBatchNo())); |
| | | //直接审核通过 |
| | | stockInRecordService.batchApprove(Collections.singletonList(stockInRecordDto.getId()), 1); |
| | | stockInRecordService.batchApprove(Collections.singletonList(stockInRecordDto.getId()), 1, resolveWarehouseInfoId(item.getProductModelId(), item.getBatchNo())); |
| | | }else { |
| | | stockInventoryDto.setRecordType(StockOutQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_OUT.getCode()); |
| | | StockOutRecordDto stock = stockUtils.substractStock(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo()); |
| | | StockOutRecordDto stock = stockUtils.substractStock(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo(), resolveWarehouseInfoId(item.getProductModelId(), item.getBatchNo())); |
| | | //直接审核通过 |
| | | stockOutRecordService.batchApprove(Collections.singletonList(stock.getId()), 1); |
| | | stockOutRecordService.batchApprove(Collections.singletonList(stock.getId()), 1,item.getWarehouseInfoId()); |
| | | } |
| | | } |
| | | stockInventoryCheckItemMapper.updateById(stockInventoryCheckPlanDto.getCheckItems()); |
| | |
| | | } |
| | | |
| | | |
| | | private Long resolveWarehouseInfoId(Long productModelId, String batchNo) { |
| | | List<StockInventory> inventories = stockInventoryService.list(new LambdaQueryWrapper<StockInventory>() |
| | | .eq(StockInventory::getProductModelId, productModelId) |
| | | .eq(batchNo != null, StockInventory::getBatchNo, batchNo) |
| | | .isNull(batchNo == null, StockInventory::getBatchNo)); |
| | | if (inventories.isEmpty() || inventories.get(0).getWarehouseInfoId() == null) { |
| | | return 1L; |
| | | } |
| | | return inventories.get(0).getWarehouseInfoId(); |
| | | } |
| | | } |