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 9274c8d70..0df769b1d 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 @@ -1,10 +1,14 @@ package com.mhd.oms.domain.businessDocumentOrder.service; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; import com.aliyun.oss.ServiceException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.common.core.domain.entity.TmsOrder; import com.mhd.common.core.domain.po.UserShipperPo; import com.mhd.common.core.utils.DateUtils; import com.mhd.common.core.utils.OrderSequence; @@ -47,6 +51,7 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -101,6 +106,25 @@ public class BusinessDocumentOrderDomainService { return businessDocumentOrderService.queryList(businessDocumentOrderDO); } + public static String getOrderCodeByDate(Date date){ + return new StringBuffer() + .append(getSecondPartByDate(date)) + .append(getThreePart()) + .toString(); + } + private static String getSecondPartByDate(Date date) { + if (date == null) { + date = new Date(); + } + String temp_current_time = DateUtil.format(date, datePattern()); + return temp_current_time.substring(2, temp_current_time.length()); + } + private static String datePattern() { + return "yyyyMMddHHmmss"; + } + private static String getThreePart() { + return RandomUtil.randomNumbers(4); + } /** * 新增【请填写功能名称】 @@ -262,12 +286,16 @@ public class BusinessDocumentOrderDomainService { tmsOrder.setGoodsNumber(OrderSequence.getOrderCode()); } - ReservationStockOutOrder reservationStockOutOrder = reservationStockOutOrderMapper.selectOne(new LambdaQueryWrapper().eq(ReservationStockOutOrder::getOutOrderNumber, tmsOrder.getInOrderNumber())); + ReservationStockOutOrder reservationStockOutOrder = reservationStockOutOrderMapper.selectOne(new LambdaQueryWrapper() + .eq(ReservationStockOutOrder::getOutOrderNumber, tmsOrder.getInOrderNumber()) + .eq(ReservationStockOutOrder::getDelFlag, 1)); if (reservationStockOutOrder != null){ reservationStockOutOrder.setBusinessNumber(tmsOrder.getGoodsNumber()); reservationStockOutOrderMapper.updateById(reservationStockOutOrder); } - ReservationStockInOrder reservationStockInOrder = reservationStockInOrderMapper.selectOne(new LambdaQueryWrapper().eq(ReservationStockInOrder::getInOrderNumber, tmsOrder.getInOrderNumber())); + ReservationStockInOrder reservationStockInOrder = reservationStockInOrderMapper.selectOne(new LambdaQueryWrapper() + .eq(ReservationStockInOrder::getInOrderNumber, tmsOrder.getInOrderNumber()) + .eq(ReservationStockInOrder::getDelFlag, 1)); if (reservationStockInOrder != null){ reservationStockInOrder.setBusinessNumber(tmsOrder.getGoodsNumber()); reservationStockInOrderMapper.updateById(reservationStockInOrder); @@ -475,6 +503,7 @@ public class BusinessDocumentOrderDomainService { throw new ServiceException("您非货主角色或账号已被删除!"); } BusinessDocumentOrder tmsOrder = businessDocumentOrderService.getById(businessDocumentOrderDO.getId()); + if (tmsOrder.getOrderStatus() == 1){ tmsOrder.setOrderStatus(0L); } @@ -681,6 +710,45 @@ public class BusinessDocumentOrderDomainService { } // boolean istrue=businessDocumentOrderService.update(businessDocumentOrderDO); + + 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)); + if (reservationStockOutOrder != null){ + reservationStockOutOrder.setBusinessNumber(tmsOrder.getGoodsNumber()); + reservationStockOutOrderMapper.updateById(reservationStockOutOrder); + } + ReservationStockInOrder reservationStockInOrder = reservationStockInOrderMapper.selectOne(new LambdaQueryWrapper() + .eq(ReservationStockInOrder::getInOrderNumber, tmsOrder.getInOrderNumber()) + .eq(ReservationStockInOrder::getDelFlag, 1)); + if (reservationStockInOrder != null){ + reservationStockInOrder.setBusinessNumber(tmsOrder.getGoodsNumber()); + reservationStockInOrderMapper.updateById(reservationStockInOrder); + } int i = businessDocumentOrderMapper.updateById(tmsOrder); if (deliveryFreight != null && deliveryFreight.compareTo(BigDecimal.ZERO) > 0){ List reservationOrderList = reservationOrderMapper.selectList(new LambdaQueryWrapper().eq(ReservationOrder::getGoodsNumber, businessDocumentOrderDO.getGoodsNumber()));