Преглед на файлове

单据编号生成工具类
贸易订单-生成物流托运单据号修改
承运订单/托运订单-生成单据号

lengfaqiang преди 2 години
родител
ревизия
3e4c6c85a8

+ 10 - 0
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/RedissonUtils.java

@@ -290,6 +290,16 @@ public class RedissonUtils {
         return number;
     }
 
+    public static Long decrementAndGet(String name, Long expired) {
+        RAtomicLong atomicLong = redissonUtils.redissonClient.getAtomicLong(name);
+        long number = atomicLong.decrementAndGet();
+        atomicLong.expire(expired <= 0 ? Duration.ofSeconds(DEFAULT_EXPIRED) : Duration.ofSeconds(expired));
+        return number;
+    }
+
+
+
+
     public static void main(String[] args) {
         List<String> set = new ArrayList<>();
         set.add("asdsad");

+ 25 - 0
sckw-modules/sckw-contract/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,25 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true
+

+ 24 - 0
sckw-modules/sckw-fleet/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,24 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true

+ 24 - 0
sckw-modules/sckw-order/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,24 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true

+ 24 - 0
sckw-modules/sckw-product/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,24 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true

+ 24 - 0
sckw-modules/sckw-system/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,24 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -1,8 +1,11 @@
 package com.sckw.transport.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.sckw.core.model.enums.OrderRuleEnum;
+import com.sckw.core.model.enums.RedisOrderGenerateEnum;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.vo.BaseList;
+import com.sckw.core.utils.OrderGenerateSeqNoUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
@@ -152,6 +155,7 @@ public class AcceptCarriageOrderController {
         try {
             return acceptCarriageOrderService.subcontractConsignment(query);
         } catch (Exception e) {
+//            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER);
             log.error("分包托运 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
@@ -339,6 +343,7 @@ public class AcceptCarriageOrderController {
         try {
             return acceptCarriageOrderService.addOrder(addOrderDTO);
         } catch (Exception e) {
+            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER);
             log.error("承运订单-新建订单 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java

@@ -1,8 +1,11 @@
 package com.sckw.transport.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.sckw.core.model.enums.OrderRuleEnum;
+import com.sckw.core.model.enums.RedisOrderGenerateEnum;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.vo.BaseList;
+import com.sckw.core.utils.OrderGenerateSeqNoUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.model.dto.AddOrderDTO;
@@ -267,6 +270,7 @@ public class ConsignOrderController {
         try {
             return consignOrderService.addOrder(addOrderDTO);
         } catch (Exception e) {
+            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER);
             log.error("托运订单-新建订单 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java

@@ -2,8 +2,11 @@ package com.sckw.transport.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.enums.OrderRuleEnum;
+import com.sckw.core.model.enums.RedisOrderGenerateEnum;
 import com.sckw.core.model.vo.BaseList;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.OrderGenerateSeqNoUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
@@ -55,6 +58,7 @@ public class LogisticsConsignmentController {
         try {
             return logisticsConsignmentService.purchaseLogisticsConsignment(logisticsConsignmentParam);
         } catch (Exception e) {
+            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER);
             log.error("采购订单-物流托运生成托运订单 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }

+ 22 - 12
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -13,15 +13,11 @@ import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
-import com.sckw.core.model.enums.CarWaybillEnum;
-import com.sckw.core.model.enums.CooperateTypeEnum;
-import com.sckw.core.model.enums.LogisticsOrderEnum;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.*;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.page.PageResult;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.RegularUtils;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
@@ -66,8 +62,6 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static com.sckw.transport.utils.StringUtils.getLOrderNo;
-
 /**
  * @author lfdc
  * @description 承运订单service
@@ -188,7 +182,12 @@ public class AcceptCarriageOrderService {
         if (ignoreAmount.compareTo(new BigDecimal("0.00")) == 0) {
             throw new RuntimeException("剩余可分配量为0,不可进行分包操作!");
         }
-        String lOrderNo = getLOrderNo();
+        int level = logisticsLevel(logisticsOrder);
+        long number = logisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                        .eq(KwtLogisticsOrder::getDelFlag, NumberConstant.ZERO)
+                        .apply(logisticsOrder.getId() != null, "FIND_IN_SET ('" + bo.getLOrderId() + "', pids)").ne(KwtLogisticsOrder::getId, bo.getLOrderId()))
+                .stream().count();
+        String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, logisticsOrder.getType(), String.valueOf(level), String.valueOf(number));
         Long orderId = new IdWorker(NumberConstant.ONE).nextId();
         /**分包托运需要判断处于哪一级分包托运
          * 需要记录当前分包数据-分包上游数据
@@ -1593,8 +1592,7 @@ public class AcceptCarriageOrderService {
         /**保存新建数据*/
         Long lOrderId = new IdWorker(NumberConstant.ONE).nextId();
         /**生成订单编号*/
-        String lOrderNo = getLOrderNo();
-//        getLogisticsLOrderNo("T","0","0","1");
+        String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "2", "0", "1");
         /**根据合同计算当前单据状态*/
         /**判断生成物流订单应生成哪一种单据状态*/
         List<Long> contractList = new ArrayList<>();
@@ -2133,4 +2131,16 @@ public class AcceptCarriageOrderService {
         HttpResult httpResult = statisticsAcceptCarriage(query, type);
         return httpResult;
     }
+
+    /**
+     * @param logisticsOrder 承运订单
+     * @description 当前承运订单所属分包层级
+     * @author zk
+     * @date 2023/7/24
+     **/
+    public int logisticsLevel(KwtLogisticsOrder logisticsOrder) {
+        String pids = logisticsOrder.getPids();
+        String[] idArrays = StringUtils.isBlank(pids) ? new String[0] : pids.split(Global.COMMA);
+        return idArrays.length <= 1 ? Global.NUMERICAL_ONE : (idArrays.length - Global.NUMERICAL_ONE);
+    }
 }

+ 3 - 8
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -11,16 +11,11 @@ import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
-import com.sckw.core.model.enums.CarWaybillEnum;
-import com.sckw.core.model.enums.CooperateTypeEnum;
-import com.sckw.core.model.enums.LogisticsOrderEnum;
+import com.sckw.core.model.enums.*;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.model.vo.BaseList;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.RegularUtils;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
@@ -1110,7 +1105,7 @@ public class ConsignOrderService {
         /**保存新建数据*/
         Long lOrderId = new IdWorker(NumberConstant.ONE).nextId();
         /**生成订单编号*/
-        String lOrderNo = com.sckw.transport.utils.StringUtils.getLOrderNo();
+        String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "2", "0", "1");
         /**根据合同计算当前单据状态*/
         /**判断生成物流订单应生成哪一种单据状态*/
         List<Long> contractList = new ArrayList<>();

+ 2 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -177,7 +177,8 @@ public class LogisticsConsignmentService {
             order.setAmount(new BigDecimal("0.00"));
             order.setSubcontractAmount(new BigDecimal("0.00"));
         }
-        String lOrderNo = com.sckw.transport.utils.StringUtils.getLOrderNo();
+        Long count = kwtLogisticsOrderMapper.selectCount(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getTOrderId, bo.getTOrderId()));
+        String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "1", "0", String.valueOf(count + 1));
         Long orderId = new IdWorker(NumberConstant.ONE).nextId();
         Integer orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
         insertLogisticsGoods(bo, lOrderNo, orderId);