diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java index 0df769b1d..183108a20 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java @@ -282,10 +282,31 @@ public class BusinessDocumentOrderDomainService { } //生成货源单号 - if (businessDocumentOrderDO.getGoodsNumber() == null) { - tmsOrder.setGoodsNumber(OrderSequence.getOrderCode()); + String orderCode = null; + int maxRetryCount = 100; + int retryCount = 0; + + while (retryCount < maxRetryCount) { + orderCode = getOrderCodeByDate(tmsOrder.getDocumentDate()); + retryCount++; + + List checkOrderCodes = businessDocumentOrderMapper.selectList( + new QueryWrapper().eq("goods_number", orderCode) + ); + + if (CollectionUtils.isEmpty(checkOrderCodes)) { + break; + } + + if (retryCount >= maxRetryCount) { + throw new ServiceException("生成唯一订单编号失败,已达到最大重试次数:" + maxRetryCount); + } } + + //生成货源单号 + tmsOrder.setGoodsNumber(orderCode); + ReservationStockOutOrder reservationStockOutOrder = reservationStockOutOrderMapper.selectOne(new LambdaQueryWrapper() .eq(ReservationStockOutOrder::getOutOrderNumber, tmsOrder.getInOrderNumber()) .eq(ReservationStockOutOrder::getDelFlag, 1));