diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index d4ba915cb..4ef8c6cd0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.mhd.common.core.constant.SnowFlakeConstants; import com.mhd.common.core.exception.ServiceException; @@ -63,6 +64,8 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.lang.reflect.Field; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -508,6 +511,30 @@ public class StockInOrderDomainService { ? loginUser.getUserPo().getUserName() : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); String inOrderNumber = stockInOrderDO.getInOrderNumber(); + // 查询当天创建的入库单数量,用于生成batchNo + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String todayStr = dateFormat.format(new Date()); + String todayStart = todayStr + " 00:00:00"; + String todayEnd = todayStr + " 23:59:59"; + SimpleDateFormat fullDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + Date todayStartDate = null; + try { + todayStartDate = fullDateFormat.parse(todayStart); + } catch (ParseException e) { + throw new RuntimeException(e); + } + Date todayEndDate = null; + try { + todayEndDate = fullDateFormat.parse(todayEnd); + } catch (ParseException e) { + throw new RuntimeException(e); + } + long todayStockInOrderCount = stockInOrderService.count(new LambdaQueryWrapper() + .ge(StockInOrder::getCreateTime, todayStartDate) + .le(StockInOrder::getCreateTime, todayEndDate) + .eq(StockInOrder::getDelFlag, 1)); + String batchNo = "PC"+inOrderNumber+"-"+todayStockInOrderCount; List materialDetailList = stockInOrderDO.getMaterialDetailList(); List receiptMaterialDetailList = materialDetailList.stream() .filter(m -> m.getCollectQuantity() != null && m.getCollectQuantity().compareTo(BigDecimal.ZERO) != 0) @@ -532,6 +559,8 @@ public class StockInOrderDomainService { } receiptMaterialDetail.setReceiptQuantity(collectQuantity); receiptMaterialDetail.setAlreadyReceiptQuantity(collectQuantity); + + receiptMaterialDetail.setBatchNo(batchNo); BigDecimal quantity = receiptMaterialDetail.getQuantity(); if (quantity != null && quantity.compareTo(BigDecimal.ZERO) == 0) { receiptMaterialDetail.setReceiptStatus(3); @@ -544,6 +573,7 @@ public class StockInOrderDomainService { if (stockReceiptOrder != null) { stockReceiptOrder.setStatus(2); stockReceiptOrder.setReceiptQuantity(stockReceiptOrder.getReceiptQuantity().add(collectQuantity)); + stockReceiptOrder.setBatchNo(batchNo); stockReceiptOrderService.updateById(stockReceiptOrder); } @@ -563,6 +593,7 @@ public class StockInOrderDomainService { } else { BeanUtils.copyProperties(stockReceiptOrder, stockShelfOrder); stockShelfOrder.setShelfOrderNumber(OrderSequence.getOrderCode("SJ")); + stockShelfOrder.setBatchNo(batchNo); stockShelfOrderService.save(stockShelfOrder); } log.info("生成上架单成功,上架单编号:{}", stockShelfOrder.getShelfOrderNumber()); @@ -574,6 +605,7 @@ public class StockInOrderDomainService { .eq(ShelfMaterialDetail::getDelFlag, 1), false); if (one != null) { one.setQuantity(collectQuantity); + one.setBatchNo(batchNo); shelfMaterialDetailService.updateById(one); } else { BeanUtils.copyProperties(inMaterialDetailDO, shelfMaterialDetail); @@ -581,6 +613,7 @@ public class StockInOrderDomainService { shelfMaterialDetail.setQuantity(collectQuantity); shelfMaterialDetail.setInUniqueId(uniqueId); shelfMaterialDetail.setReceiptUniqueId(receiptMaterialDetail.getUniqueId()); + shelfMaterialDetail.setBatchNo(batchNo); shelfMaterialDetailService.save(shelfMaterialDetail); } @@ -654,6 +687,10 @@ public class StockInOrderDomainService { // continue; // } + StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaUpdateWrapper() + .eq(StockReceiptOrder::getInOrderNumber, inOrderNumber) + .eq(StockReceiptOrder::getDelFlag, 1), false); + // 如果 materialDetailId 为空,则创建上架单明细 List list = stockShelfOrderService.list(new QueryWrapper().lambda() .eq(StockShelfOrder::getInOrderNumber, inOrderNumber) @@ -713,6 +750,9 @@ public class StockInOrderDomainService { shelfMaterialDetail.setInUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); shelfMaterialDetail.setReceiptUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); shelfMaterialDetail.setShelvesStatus(3); + if (stockReceiptOrder!= null) { + shelfMaterialDetail.setBatchNo(stockReceiptOrder.getBatchNo()); + } shelfMaterialDetailService.save(shelfMaterialDetail); stringObjectMap.put("materialDetailId", shelfMaterialDetail.getMaterialDetailId()); stringObjectMap.put("level",2 );