فهرست منبع

订单号序号规则调整

lishiqiang 4 روز پیش
والد
کامیت
ea83290a4b

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java

@@ -188,6 +188,9 @@ public interface TradeDetailMapper extends BaseMapperX<TradeDetailDO> {
     @TenantIgnore
     int getMaxOrderNo(@Param("voyageId") Long voyageId);
 
+    @TenantIgnore
+    Integer getNewMaxOrderNo(@Param("voyageId") Long voyageId,@Param("code") String code);
+
     List<TradeOrderDetailCountRespVO> getOrderIdDetailCount(@Param("orderId") Long orderId);
     @TenantIgnore
     void updateDeleted(@Param("orderId") Long orderId, @Param("deleted")  int deleted);

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderService.java

@@ -69,7 +69,7 @@ public interface TradeOrderService {
 
     void bindChangeOrder(List<Long> originDetailIdList, Long orderId, Long originOrderId);
 
-    int getMaxOrderNo(Long voyageId);
+    int getMaxOrderNo(Long voyageId,String code);
 
 
     List<TradeOrderDO> getTradeOrderByExpire(String expiretime);

+ 3 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -1381,8 +1381,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-    public int getMaxOrderNo(Long voyageId) {
-        return tradeDetailMapper.getMaxOrderNo(voyageId);
+    public int getMaxOrderNo(Long voyageId,String code) {
+        Integer maxNo = tradeDetailMapper.getNewMaxOrderNo(voyageId,code);
+        return maxNo==null?0:maxNo;
     }
 
     @Override

+ 5 - 6
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/AppOtcTradeOrderServiceImpl.java

@@ -128,19 +128,18 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
         createVO.setIsYd(0);
         RouteRespDTO routeRespDTO = routeApi.queryRouteById(voyage.getRouteId());
         ShipRespDTO ship = shipApi.queryShip(createVO.getShipId());
-        int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId());
         String sname = ship.getName() + "-" + routeRespDTO.getName() + "-" + voyage.getName();
         String date = DateUtils.format(voyage.getBoardingTime(), "yyyyMMdd");
         String code = "YC";
         if (routeRespDTO != null && routeRespDTO.getDirection() == 2) {
             code = "CY";
         }
-        String orderNo;
-        if (ship.getCode() == null) {
-            orderNo = date + "-" + voyage.getCode() + "-" + (maxOrderNo + 1);
-        } else {
-            orderNo = ship.getCode() + "-" + date + "-" + code + "-" + (maxOrderNo + 1);
+        String ccode = date + "-" + voyage.getCode() + "-";
+        if(ship.getCode() != null){
+            ccode = ship.getCode() + "-" + date + "-" + code + "-";
         }
+        int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId(),ccode);
+        String orderNo = ccode+(maxOrderNo + 1);
 
         //现在给整个订单号的加锁
         String lockKey = String.format(ProductRedisKeyConstants.ORDER_REDIS_KEY_PREFIX, orderNo);

+ 7 - 6
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -1669,7 +1669,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
         RouteRespDTO routeRespDTO = routeApi.queryRouteById(voyage.getRouteId());
         ShipRespDTO ship = shipApi.queryShip(createVO.getShipId());
-        int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId());
+
         //String date = DateUtils.format(new Date(), "yyyyMMddmm");
         String date = DateUtils.format(voyage.getBoardingTime(), "yyyyMMdd");
         String code = "YC";
@@ -1678,12 +1678,13 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         }
         String sname = ship.getName()+"-"+routeRespDTO.getName()+"-"+voyage.getName();
 
-        String orderNo;
-        if (ship.getCode() == null) {
-            orderNo = date + "-" + voyage.getCode() + "-" + (maxOrderNo + 1);
-        } else {
-            orderNo = ship.getCode() + "-" + date + "-" + code + "-" + (maxOrderNo + 1);
+        String ccode = date + "-" + voyage.getCode() + "-";
+        if(ship.getCode() != null){
+            ccode = ship.getCode() + "-" + date + "-" + code + "-";
         }
+
+        int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId(),ccode);
+        String orderNo = ccode+(maxOrderNo + 1);
         //现在给整个订单号的加锁
         String lockKey = String.format(ProductRedisKeyConstants.ORDER_REDIS_KEY_PREFIX, orderNo);
         RLock lock = redissonClient.getLock(lockKey);

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailMapper.xml

@@ -1102,6 +1102,10 @@
         select count(1) from trade_order where voyage_id = #{voyageId}
     </select>
 
+    <select id="getNewMaxOrderNo" resultType="java.lang.Integer">
+        select max(CONVERT(REPLACE(order_no,#{code},''), SIGNED)) from trade_order where voyage_id =#{voyageId}
+    </select>
+
     <select id="getOrderDetail"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO">
         SELECT td.*,tv.detail_id,tv.name,tv.id visitorId,tv.gender,tv.credential_no,tv.credential_type,tv.mobile,tv.ota_detail_id,tv.is_insure