添加批次号;

This commit is contained in:
王奎兴
2026-07-16 22:53:45 +08:00
parent 165927bc3d
commit 5c591d3b57
@@ -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<StockInOrder>()
.ge(StockInOrder::getCreateTime, todayStartDate)
.le(StockInOrder::getCreateTime, todayEndDate)
.eq(StockInOrder::getDelFlag, 1));
String batchNo = "PC"+inOrderNumber+"-"+todayStockInOrderCount;
List<InMaterialDetailDO> materialDetailList = stockInOrderDO.getMaterialDetailList();
List<InMaterialDetailDO> 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<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
// 如果 materialDetailId 为空,则创建上架单明细
List<StockShelfOrder> list = stockShelfOrderService.list(new QueryWrapper<StockShelfOrder>().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 );