| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | // 新增入库 |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int add(StockInRecordDto stockInRecordDto) { |
| | | public Long add(StockInRecordDto stockInRecordDto) { |
| | | String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches"); |
| | | stockInRecordDto.setInboundBatches(no); |
| | | StockInRecord stockInRecord = new StockInRecord(); |
| | | BeanUtils.copyProperties(stockInRecordDto, stockInRecord); |
| | | return stockInRecordMapper.insert(stockInRecord); |
| | | stockInRecordMapper.insert(stockInRecord); |
| | | return stockInRecord.getId(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | for (Long id : ids) { |
| | | StockInRecord stockInRecord = stockInRecordMapper.selectById(id); |
| | | if (stockInRecord.getType().equals("0")) { |
| | | LambdaQueryWrapper<StockInventory> eq = new LambdaQueryWrapper<StockInventory>() |
| | | .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId()); |
| | | if (StringUtils.isEmpty(stockInRecord.getBatchNo())) { |
| | | eq.isNull(StockInventory::getBatchNo); |
| | | } else { |
| | | eq.eq(StockInventory::getBatchNo, stockInRecord.getBatchNo()); |
| | | } |
| | | LambdaQueryWrapper<StockInventory> eq = buildQualifiedInventoryQuery( |
| | | stockInRecord.getProductModelId(), |
| | | stockInRecord.getBatchNo(), |
| | | stockInRecord.getWarehouseInfoId() |
| | | ); |
| | | StockInventory stockInventory = stockInventoryMapper.selectOne(eq); |
| | | if (stockInventory == null) { |
| | | throw new BaseException("库存记录中没有对应的产品,无法删除!!!"); |
| | |
| | | StockInventoryDto stockInRecordDto = new StockInventoryDto(); |
| | | stockInRecordDto.setProductModelId(stockInventory.getProductModelId()); |
| | | stockInRecordDto.setBatchNo(stockInventory.getBatchNo()); |
| | | stockInRecordDto.setWarehouseInfoId(stockInventory.getWarehouseInfoId()); |
| | | stockInRecordDto.setQualitity(stockInRecord.getStockInNum()); |
| | | stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto); |
| | | } |
| | |
| | | public void exportStockInRecord(HttpServletResponse response, StockInRecordDto stockInRecordDto) { |
| | | List<StockInRecordExportData> list = stockInRecordMapper.listStockInRecordExportData(stockInRecordDto); |
| | | for (StockInRecordExportData stockInRecordExportData : list) { |
| | | if (stockInRecordExportData.getType().equals("0")) { |
| | | if (!stockInRecordExportData.getType().equals("0")) { |
| | | stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); |
| | | }else { |
| | | stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockInQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); |
| | |
| | | util.exportExcel(response,list, "入库记录信息"); |
| | | } |
| | | |
| | | private StockInventory getStockInventory(Long productModelId, String batchNo) { |
| | | LambdaQueryWrapper<StockInventory> eq = new LambdaQueryWrapper<>(); |
| | | eq.eq(StockInventory::getProductModelId, productModelId); |
| | | if (StringUtils.isEmpty(batchNo)) { |
| | | eq.isNull(StockInventory::getBatchNo); |
| | | } else { |
| | | eq.eq(StockInventory::getBatchNo, batchNo); |
| | | } |
| | | return stockInventoryMapper.selectOne(eq); |
| | | private StockInventory getStockInventory(Long productModelId, String batchNo, Long warehouseInfoId) { |
| | | return stockInventoryMapper.selectOne(buildQualifiedInventoryQuery(productModelId, batchNo, warehouseInfoId)); |
| | | } |
| | | |
| | | private StockUninventory getStockUninventory(Long productModelId, String batchNo) { |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int batchApprove(List<Long> ids, Integer approvalStatus) { |
| | | public int batchApprove(List<Long> ids, Integer approvalStatus,Long warehouseInfoId1) { |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | throw new BaseException("请选择至少一条数据"); |
| | | } |
| | |
| | | if (ReviewStatusEnum.APPROVED.getCode().equals(approvalStatus)) { |
| | | if ("0".equals(stockInRecord.getType())) { |
| | | // 合格入库 -> 先查库存,存在则更新,不存在则新增 |
| | | StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo()); |
| | | StockInventory stockInventory = getStockInventory( |
| | | stockInRecord.getProductModelId(), |
| | | stockInRecord.getBatchNo(), |
| | | stockInRecord.getWarehouseInfoId() |
| | | ); |
| | | if (!ObjectUtils.isEmpty(stockInventory)) { |
| | | if (stockInventory.getLocked().equals( true)&&!stockInRecord.getRecordType().equals(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_IN.getCode())) { |
| | | throw new BaseException("正在库存盘点,无法入库,入库批次:" + stockInRecord.getInboundBatches()); |
| | | } |
| | | } |
| | | StockInventoryDto stockInventoryDto = new StockInventoryDto(); |
| | | stockInventoryDto.setProductModelId(stockInRecord.getProductModelId()); |
| | | stockInventoryDto.setBatchNo(stockInRecord.getBatchNo()); |
| | | stockInventoryDto.setWarehouseInfoId(stockInRecord.getWarehouseInfoId()); |
| | | stockInventoryDto.setQualitity(stockInRecord.getStockInNum()); |
| | | stockInventoryDto.setRemark(stockInRecord.getRemark()); |
| | | if (stockInventory == null) { |
| | |
| | | setQualitity(stockInRecord.getStockInNum()); |
| | | setBatchNo(stockInRecord.getBatchNo()); |
| | | setRemark(stockInRecord.getRemark()); |
| | | setWarehouseInfoId(stockInRecord.getWarehouseInfoId()); |
| | | setVersion(1); |
| | | }}); |
| | | } else { |
| | |
| | | setQualitity(stockInRecord.getStockInNum()); |
| | | setBatchNo(stockInRecord.getBatchNo()); |
| | | setRemark(stockInRecord.getRemark()); |
| | | setWarehouseInfoId(stockInRecord.getWarehouseInfoId()); |
| | | setVersion(1); |
| | | }}); |
| | | } else { |
| | |
| | | } |
| | | return ids.size(); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<StockInventory> buildQualifiedInventoryQuery(Long productModelId, String batchNo, Long warehouseInfoId) { |
| | | LambdaQueryWrapper<StockInventory> wrapper = new LambdaQueryWrapper<StockInventory>() |
| | | .eq(StockInventory::getProductModelId, productModelId); |
| | | if (warehouseInfoId != null) { |
| | | wrapper.eq(StockInventory::getWarehouseInfoId, warehouseInfoId); |
| | | } |
| | | if (StringUtils.isEmpty(batchNo)) { |
| | | wrapper.isNull(StockInventory::getBatchNo); |
| | | } else { |
| | | wrapper.eq(StockInventory::getBatchNo, batchNo); |
| | | } |
| | | return wrapper; |
| | | } |
| | | } |