Răsfoiți Sursa

Merge branch 'dev' into dev_spt

sptkw 2 ani în urmă
părinte
comite
47c2510b80
100 a modificat fișierele cu 2042 adăugiri și 601 ștergeri
  1. 1 1
      pom.xml
  2. 2 2
      sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java
  3. 20 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/annotation/Log.java
  4. 79 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/LogAspect.java
  5. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  6. 8 15
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/exception/GlobalSystemExceptionHandler.java
  7. 3 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java
  8. 18 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java
  9. 6 6
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/SystemTypeEnum.java
  10. 43 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java
  11. 1 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  12. 2 1
      sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  13. 0 41
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translate.java
  14. 0 21
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translates.java
  15. 110 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java
  16. 6 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  17. 5 0
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java
  18. 4 0
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java
  19. 0 1
      sckw-modules-api/sckw-contract-api/src/main/resources/application.properties
  20. 33 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java
  21. 5 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/vo/RDriverVo.java
  22. 19 4
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java
  23. 60 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java
  24. 45 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CreateOrCancelLogisticsOrderParam.java
  25. 11 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java
  26. 8 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java
  27. 30 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/AreaTreeFrontResDto.java
  28. 27 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java
  29. 13 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/AddressResDTO.java
  30. 1 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  31. 1 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  32. 10 8
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java
  33. 6 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/req/QueryListReqDto.java
  34. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java
  35. 5 5
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  36. 9 9
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  37. 3 0
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  38. 3 0
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml
  39. 1 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java
  40. 2 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java
  41. 52 8
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  42. 13 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckReportController.java
  43. 57 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java
  44. 5 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfDriver.java
  45. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTruck.java
  46. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfDriverVo.java
  47. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckReportVo.java
  48. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java
  49. 1 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java
  50. 12 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java
  51. 4 1
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverMapper.xml
  52. 4 1
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfFleetMapper.xml
  53. 7 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckReportMapper.xml
  54. 31 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java
  55. 18 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/dao/KwmCooperateMapper.java
  56. 1 4
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/dubbo/RemoteManageServiceImpl.java
  57. 21 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateQueryDto.java
  58. 0 64
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperateType.java
  59. 2 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressAddReqVo.java
  60. 31 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/FindCooperateByEntReqVo.java
  61. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/InitiateReqVo.java
  62. 6 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/AddressQueryResVo.java
  63. 4 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/CooperateManageQueryResVo.java
  64. 90 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/FindCooperateByEntResVo.java
  65. 27 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/FindEntCooperateResVo.java
  66. 13 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java
  67. 4 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  68. 121 54
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java
  69. 171 42
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java
  70. 90 6
      sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml
  71. 7 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/MessageController.java
  72. 2 2
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/SmsController.java
  73. 0 80
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/TestMqController.java
  74. 1 0
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java
  75. 1 1
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java
  76. 4 0
      sckw-modules/sckw-message/src/main/resources/bootstrap-test.yml
  77. 26 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  78. 11 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTransportDemandController.java
  79. 11 3
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwpWantBuyController.java
  80. 115 58
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  81. 5 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoods.java
  82. 0 5
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java
  83. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/WantBuySelectParam.java
  84. 38 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/AddressDropListRes.java
  85. 10 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java
  86. 15 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderAddressService.java
  87. 67 25
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  88. 14 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderUnitService.java
  89. 1 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwpWantBuyService.java
  90. 2 2
      sckw-modules/sckw-order/src/main/resources/mapper/KwoWantBuyMapper.xml
  91. 50 23
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java
  92. 23 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java
  93. 0 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpSettlementTradeController.java
  94. 17 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerListReq.java
  95. 32 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java
  96. 17 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsOrderService.java
  97. 118 61
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  98. 16 10
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java
  99. 13 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsUnitService.java
  100. 25 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeOrderService.java

+ 1 - 1
pom.xml

@@ -36,7 +36,7 @@
         <snakeyaml.version>2.0</snakeyaml.version>
         <springdoc.version>2.1.0</springdoc.version>
         <redisson.version>3.21.3</redisson.version>
-        <fastjson.version>2.0.32</fastjson.version>
+        <fastjson.version>2.0.38</fastjson.version>
         <easyexcel.version>3.3.2</easyexcel.version>
         <cglib.version>3.3.0</cglib.version>
         <commons-io.version>2.11.0</commons-io.version>

+ 2 - 2
sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java

@@ -30,10 +30,10 @@ public class AuthController {
      */
     @PostMapping("/login")
     public HttpResult login(@Valid @RequestBody LoginReqVo reqVo,
-                            @RequestHeader(name = "Client-Type", required = true) String ClientType,
+                            @RequestHeader(name = "Client-Type", required = true) String clientType,
                             @RequestHeader(name = "System-Type", required = true) int systemType) throws SystemException {
         reqVo.setSystemType(systemType);
-        reqVo.setClientType(ClientType);
+        reqVo.setClientType(clientType);
         return HttpResult.ok(authService.login(reqVo));
     }
 

+ 20 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/annotation/Log.java

@@ -0,0 +1,20 @@
+package com.sckw.core.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @desc: 自定义日志注解
+ * @author: yzc
+ * @date: 2023-08-02 9:20
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface Log {
+
+    /**
+     * 日志描述
+     * @return
+     */
+    String description() default "";
+}

+ 79 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/LogAspect.java

@@ -0,0 +1,79 @@
+package com.sckw.core.aspect;
+
+import com.alibaba.fastjson.JSON;
+import com.sckw.core.annotation.Log;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * @desc: controller请求切面增强
+ * @author: yzc
+ * @date: 2023-08-02 9:21
+ */
+@Aspect
+@Component
+@Slf4j
+public class LogAspect {
+    private static final String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss:SSS";
+
+    @Pointcut("@annotation(l)")
+    public void loggerPointcut(Log l) {
+    }
+
+    @Around("loggerPointcut(l)")
+    public Object around(ProceedingJoinPoint p, Log l) throws Throwable {
+        Object result = null;
+        //开始时间
+        Date startTime = new Date();
+        String targetName = p.getTarget().getClass().getName();
+        String methodName = p.getSignature().getName();
+        Object[] args = p.getArgs();
+        Stream<?> stream = ArrayUtils.isEmpty(args) ? Stream.empty() : Arrays.stream(args);
+        List<Object> logArgs = stream
+                .filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse)))
+                .collect(Collectors.toList());
+        //过滤后序列化无异常
+        String param = JSON.toJSONString(logArgs);
+        String exception = "";
+        try {
+            //执行结果,返回参数
+            result = p.proceed();
+        } catch (Throwable e) {
+            exception = e.getMessage();
+            //异常抛出
+            throw e;
+        } finally {
+            Date endTime = new Date();
+            long time = endTime.getTime() - startTime.getTime();
+            Boolean slowRequest = (time > 1500L);
+            log.info("{}:{}.{}," +
+                            "param={}," +
+                            "result={}," +
+                            "exception={}," +
+                            "[{}->{}],slowRequest{}=[{}]", l.description(), targetName, methodName,
+                    param,
+                    JSON.toJSONString(result),
+                    exception,
+                    DateFormatUtils.format(startTime, TIME_PATTERN),
+                    DateFormatUtils.format(endTime, TIME_PATTERN),
+                    slowRequest,
+                    time);
+        }
+        return result;
+    }
+
+}

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -16,7 +16,7 @@ public enum DictTypeEnum {
     UNIT_TYPE("unit_type", "商品单位类型"),
     TAX_RATE("tax_rate", "商品税率"),
     PRICE_TYPE("price_type", "运价方式"),
-    TRADE_TYPE("trade_type", "交易方式"),
+    TRADE_TYPE("trade_type", "支付方式"),
     PICKUP_TYPE("pickup_type", "提货方式"),
     DELIVERY_TYPE("delivery_type", "交付类型"),
     TORDER_SOURCE("tOrder_source", "交易订单来源"),

+ 8 - 15
sckw-common/sckw-common-core/src/main/java/com/sckw/core/exception/GlobalSystemExceptionHandler.java

@@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
 import java.util.List;
-import java.util.Objects;
 import java.util.Set;
 
 @Slf4j
@@ -25,10 +24,16 @@ public class GlobalSystemExceptionHandler {
 
     @ExceptionHandler(value = SystemException.class)
     @ResponseBody
-    public HttpResult handlerRuntimeException(SystemException e) {
+    public HttpResult handlerSystemException(SystemException e) {
         return HttpResult.error(e.getCode(), e.getMessage());
     }
 
+    @ExceptionHandler(value = RuntimeException.class)
+    @ResponseBody
+    public HttpResult handlerRuntimeException(RuntimeException e) {
+        return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+    }
+
     /**
      * BusinessException处理
      *
@@ -117,19 +122,7 @@ public class GlobalSystemExceptionHandler {
     @ExceptionHandler(Exception.class)
     public HttpResult defaultExceptionHandler(Exception ex) {
         log.error("系统异常", ex);
-        Throwable cause = ex.getCause();
-        int i = 5;
-        do {
-            i--;
-            if (Objects.isNull(cause)) {
-                break;
-            }
-            cause = cause.getCause();
-            if (cause instanceof BusinessException be) {
-                return HttpResult.error(be.getMsg());
-            }
-        } while (cause != null || i > 0);
-        return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
+        return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, ex.toString());
     }
 
 }

+ 3 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java

@@ -36,7 +36,9 @@ public class Global {
     public static final int SHOW = 1;
     public static final int HIDE = 0;
     public static final int MINUS_ONE = -1;
-
+    /*正常/删除*/
+    public static final int DELETED = 1;
+    public static final int UN_DELETED = 0;
     /**是/否*/
     public static final int YES = 1;
     public static final int NO = 0;

+ 18 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -110,4 +110,22 @@ public enum CarWaybillEnum {
         }
         return null;
     }
+
+    /**
+     * @param code 状态码
+     * @desc 是否可以变更司机/车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public static boolean changeDriverAndTruck(int code) {
+        if (code == CarWaybillEnum.COMPLETION_UNLOADING.getCode()
+                || code == CarWaybillEnum.APPROVAL_PASS.getCode()
+                || code == CarWaybillEnum.REJECT_ORDER.getCode()
+                || code == CarWaybillEnum.REFUSE_TRAFFIC.getCode()
+                || code == CarWaybillEnum.REVOKED.getCode()
+                || code == CarWaybillEnum.APPROVAL_NO_PASS.getCode()) {
+            return false;
+        }
+        return true;
+    }
 }

+ 6 - 6
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/SystemTypeEnum.java

@@ -12,22 +12,22 @@ public enum SystemTypeEnum {
     //运营端
     MANAGE(1, "运营端"),
     //企业开户
-    COMPANY(2, "企业开户"),
+    COMPANY(2, "企业"),
     //司机
-    DRIVER(3, "司机");
+    DRIVER(3, "司机");
 
-    private final int code;
+    private final Integer code;
 
     private final String name;
 
-    SystemTypeEnum(int code, String name){
+    SystemTypeEnum(Integer code, String name){
         this.code = code;
         this.name = name;
     }
 
-    public static SystemTypeEnum getName(int code){
+    public static SystemTypeEnum getName(Integer code){
         for (SystemTypeEnum systemTypeEnum : values()) {
-            if (systemTypeEnum.getCode() == code) {
+            if (systemTypeEnum.getCode().equals(code)) {
                 return systemTypeEnum;
             }
         }

+ 43 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java

@@ -2,6 +2,7 @@ package com.sckw.core.model.page;
 
 import com.github.pagehelper.PageInfo;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -34,6 +35,15 @@ public class PageRes<T> {
     protected List<T> list;
 
     public PageRes() {
+        this.list = new ArrayList<>();
+    }
+
+    public PageRes(int page, int pageSize, long size, int pages, List<T> list) {
+        this.page = page;
+        this.pageSize = pageSize;
+        this.size = size;
+        this.pages = pages;
+        this.list = list;
     }
 
     public PageRes(PageInfo<T> pageInfo) {
@@ -44,6 +54,39 @@ public class PageRes<T> {
         this.list = pageInfo.getList();
     }
 
+    public PageRes(PageInfo<T> pageInfo, List<T> list) {
+        this.page = pageInfo.getPageNum();
+        this.pageSize = pageInfo.getPageSize();
+        this.size = pageInfo.getTotal();
+        this.pages = pageInfo.getPages();
+        this.list = list;
+    }
+
+    public PageRes(List<T> list) {
+        PageInfo<T> pageInfo = new PageInfo<>(list);
+        this.page = pageInfo.getPageNum();
+        this.pageSize = pageInfo.getPageSize();
+        this.size = pageInfo.getTotal();
+        this.pages = pageInfo.getPages();
+        this.list = pageInfo.getList();
+    }
+
+    /**
+     * 构建返回数据
+     * @param pagInfo pageHelper的分页对象
+     * @param list    实际返回的数据集
+     * @return
+     */
+    public static <T> PageRes<T> build(PageInfo<?> pagInfo, List<T> list) {
+        PageRes<T> tPageRes = new PageRes<>();
+        tPageRes.setPage(pagInfo.getPageNum());
+        tPageRes.setPageSize(pagInfo.getPageSize());
+        tPageRes.setSize(pagInfo.getTotal());
+        tPageRes.setPages(pagInfo.getPages());
+        tPageRes.setList(list);
+        return tPageRes;
+    }
+
     public void setPage(int page) {
         this.page = page;
     }

+ 1 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -135,6 +135,7 @@ public class HttpStatus {
     public static final String PARENT_UNIT_NOT_EXISTS = "未查询到父级单位信息";
     public static final String COOPERATE_ATTRIBUTE_NOT_EXISTS = "未查询到已有的合作属性";
     public static final String COOPERATE_NOT_EXISTS = "未查询到合作记录或已失效";
+    public static final String COOPERATE_CANCEL_EXISTS = "未查询到可撤销的记录";
     public static final String ADDRESS_NOT_EXISTS = "未查询到地址记录或已失效";
     public static final String CONTRACT_NOT_EXISTS = "未查询到合同或已失效";
 

+ 2 - 1
sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -4,4 +4,5 @@ com.sckw.core.web.config.CustomConfig
 com.sckw.core.filter.LoginFilter
 com.sckw.core.config.MybatisPlusConfig
 com.sckw.core.config.JacksonConfig
-com.sckw.core.filter.ExceptionFilterConfig
+com.sckw.core.filter.ExceptionFilterConfig
+com.sckw.core.aspect.LogAspect

+ 0 - 41
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translate.java

@@ -1,41 +0,0 @@
-package com.sckw.excel.annotation;
-
-
-import java.lang.annotation.*;
-
-
-/**
- * 对某个字段进行翻译
- * 可以标注在类和方法上
- * 1. 标注在类上:适用于对整个实体的指定字段进行翻译
- * 2. 标注在方法上:适用于对方法的返回值中的data数据实体进行翻译
- * 标注在类和方法上时,如果同时存在@Translates和@Translate,则@Translates会生效,@Translate不会生效
- *
- * @author lfdc
- * @version v1
- * @create 2020-11-28 15:37:35
- * @copyright
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE, ElementType.METHOD})
-@Repeatable(Translates.class)
-@Documented
-public @interface Translate {
-    /**
-     * 需要翻译的字段
-     */
-    String field();
-    /**
-     * 指定数据源
-     */
-
-    /**
-     * 字段值为字符串
-     */
-    boolean isString() default true;
-
-    /**
-     * 字段值为数组
-     */
-    boolean isArray() default false;
-}

+ 0 - 21
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translates.java

@@ -1,21 +0,0 @@
-package com.sckw.excel.annotation;
-
-import java.lang.annotation.*;
-
-/**
- *
- * 组合注解
- * 用于指定翻译多个字段
- *
- * @author lfdc
- * @version v1
- * @create 2020-11-28 15:37:35
- * @copyright
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE, ElementType.METHOD})
-@Documented
-public @interface Translates {
-
-    Translate[] value();
-}

+ 110 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -1,6 +1,7 @@
 package com.sckw.excel.utils;
 
 
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.StringUtils;
 
 import java.text.ParseException;
@@ -40,6 +41,12 @@ public class DateUtil {
         return LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
     }
 
+    /**
+     * 2023-07-14T09:43:40.511+00:00 -> 2023-07-14 09:13:40
+     *
+     * @param date
+     * @return
+     */
     public static String getDateTime(Date date) {
         Instant instant = date.toInstant();
         ZoneId zoneId = ZoneId.systemDefault();
@@ -47,6 +54,19 @@ public class DateUtil {
         return localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     }
 
+    /**
+     * data
+     *
+     * @param date Date 时间
+     * @return
+     * @throws ParseException
+     */
+    public static String dateTimeFormatter(Date date) {
+        String format = new SimpleDateFormat(DEFAULT_DATE_PATTERN).format(date);
+        return format;
+    }
+
+
     public static String dateToStr(LocalDate date) {
         return dateToStr(date, "yyyy-MM-dd");
     }
@@ -103,6 +123,80 @@ public class DateUtil {
         return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyyMMdd"));
     }
 
+
+    /**
+     * @param time yyyy-MM-dd
+     * @return String yyyy-MM-dd HH:mm:ss
+     * @throws RuntimeException
+     */
+    public static String fillStart(String time) {
+        formatCheck(time);
+        return time + " 00:00:00";
+    }
+
+    @SuppressWarnings("all")
+    private static void formatCheck(String time) {
+        try {
+            LocalDate.parse(time, YYYY_MM_DD);
+        } catch (Exception e) {
+            throw new BusinessException("时间格式化错误!");
+        }
+    }
+
+    /**
+     * yyyy-MM-dd 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date stringToDateTime(String str) {
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date date = null;
+        try {
+            date = simpleDateFormat1.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return date;
+    }
+
+    /**
+     * yyyy-MM-dd 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date stringPatchingStartToDateTime(String str) {
+        str = str + " 00:00:00";
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date date = null;
+        try {
+            date = simpleDateFormat1.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return date;
+    }
+
+    /**
+     * yyyy-MM-dd 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date stringPatchingEndToDateTime(String str) {
+        str = str + " 23:59:59";
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date date = null;
+        try {
+            date = simpleDateFormat1.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return date;
+    }
+
+
     /**
      * 日期字符串转换为LocalDateTime方法
      *
@@ -249,6 +343,14 @@ public class DateUtil {
         return Duration.between(startDateLocalDateTime, endDateLocalDateTime);
     }
 
+    /**
+     * 自定义 字符串转date
+     *
+     * @param dateStr
+     * @param pattern
+     * @return
+     * @throws ParseException
+     */
     public static Date strToDate(String dateStr, String pattern) throws ParseException {
         SimpleDateFormat dateFormat = new SimpleDateFormat();
         if (pattern != null && !pattern.isEmpty()) {
@@ -259,6 +361,14 @@ public class DateUtil {
         return date;
     }
 
+    public static void main(String[] args) {
+        String s = "2023-12-12";
+        Date date = DateUtil.stringPatchingStartToDateTime(s);
+        Date date1 = DateUtil.stringPatchingEndToDateTime(s);
+        System.out.println(date);
+        System.out.println(date1);
+    }
+
     public static int getCurrentMonthDays() {
         Calendar calendar = Calendar.getInstance();
         calendar.set(5, 1);

+ 6 - 1
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java

@@ -1,12 +1,13 @@
 package com.sckw.mongo.model;
 
-import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -397,6 +398,8 @@ public class SckwLogisticsOrder {
     /**
      * 创建时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
     /**
@@ -412,6 +415,8 @@ public class SckwLogisticsOrder {
     /**
      * 更新时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**

+ 5 - 0
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java

@@ -203,6 +203,11 @@ public class SckwWaybillOrder{
      */
     private BigDecimal deficitAmount;
 
+    /**
+     * 亏吨扣款(自己承运总亏吨扣款)
+     */
+    private BigDecimal deficitPrice;
+
     /**
      * 合理损耗
      */

+ 4 - 0
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java

@@ -33,6 +33,10 @@ public class RedisConstant {
      * 更新贸易订单委托量、已履约量锁key
      */
     public static final String TORDER_UPDATE_AMOUNT_KEY = "sckw:trade:order:update:amount:%s";
+    /**
+     * 合同签约完成更新贸易订单状态锁key
+     */
+    public static final String TORDER_CONTRACT_UPDATE_KEY = "sckw:trade:order:contract:update:%s";
 
     /**
      * 消费请求有效时间(秒)

+ 0 - 1
sckw-modules-api/sckw-contract-api/src/main/resources/application.properties

@@ -1 +0,0 @@
-

+ 33 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java

@@ -21,6 +21,22 @@ public interface RemoteFleetService {
      **/
     Map<Long, RDriverVo> findDriver(List<Long> driverIds);
 
+    /**
+     * @param driverId 司机档案主键id
+     * @desc 查询司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    RDriverVo findDriver(Long driverId);
+
+    /**
+     * @param params 司机档案信息
+     * @desc 更新司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    int updateById(RDriverVo params);
+
     /**
      * @param truckNos 车牌号,多个已逗号隔开
      * @desc 查询车辆信息
@@ -28,4 +44,21 @@ public interface RemoteFleetService {
      * @date 2023/7/18
      **/
     Map<String, RTruckVo> findTruck(List<String> truckNos);
+
+    /**
+     * @param truckId 车辆档案主键id
+     * @desc 查询车辆信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    RTruckVo findTruck(Long truckId);
+
+    /**
+     * @param params 车辆档案信息
+     * @desc 更新车辆档案
+     * @author zk
+     * @date 2023/8/3
+     **/
+    int updateById(RTruckVo params);
+
 }

+ 5 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/vo/RDriverVo.java

@@ -46,4 +46,9 @@ public class RDriverVo implements Serializable {
      * 总运量(净重)
      */
     private BigDecimal totalWeight;
+
+    /**
+     * 车辆业务状态
+     */
+    private Integer businessStatus;
 }

+ 19 - 4
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -1,10 +1,7 @@
 package com.sckw.order.api.dubbo;
 
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.order.api.model.ContractSignCompletedParam;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderAmountParam;
-import com.sckw.order.api.model.UpdateOrderStatusParam;
+import com.sckw.order.api.model.*;
 
 /**
  * @desc: 贸易订单信息相关dubbo
@@ -32,6 +29,7 @@ public interface TradeOrderInfoService {
     HttpResult updateOrderStatus(UpdateOrderStatusParam param);
 
     /**
+     * @desc: 已废弃,请用orderAmountUpdate
      * @desc: 更新订单委托量、已履约量
      * @author: yzc
      * @date: 2023-07-18 18:34
@@ -40,6 +38,23 @@ public interface TradeOrderInfoService {
      */
     HttpResult updateOrderAmount(UpdateOrderAmountParam param);
 
+    /**
+     * @desc: 生成或撤销物流订单
+     * @author: yzc
+     * @date: 2023-08-03 10:57
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param);
+    /**
+     * @desc: 完结物流订单
+     * @author: yzc
+     * @date: 2023-08-03 11:11
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param);
+
     /**
      * @desc: 合同签约完成
      * @author: yzc

+ 60 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java

@@ -0,0 +1,60 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @desc: 更新订单委托量、已履约量
+ * @author: yzc
+ * @date: 2023-08-03 10:52
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class CompleteLogisticsOrderParam implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 8425395587373735142L;
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 任务量  传负数
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 实装量 传正数
+     */
+    private BigDecimal actualLoadAmount;
+
+    /**
+     * 实卸量  传正数
+     */
+    private BigDecimal actualUnloadAmount;
+
+    /**
+     * 物流订单是否已全部完结
+     */
+    private Boolean isAllComplete;
+
+    /**
+     * 更新用户id 需传,订单状态变化记录需要
+     */
+    private Long updateBy;
+
+    /**
+     * 更新者姓名 需传,订单状态变化记录需要
+     */
+    private String updateByName;
+
+}

+ 45 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CreateOrCancelLogisticsOrderParam.java

@@ -0,0 +1,45 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @desc: 更新订单委托量、已履约量
+ * @author: yzc
+ * @date: 2023-08-03 10:52
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class CreateOrCancelLogisticsOrderParam implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 8425395587373735142L;
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 任务量  生成物流订单传正数,撤销物流订单传负数
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 更新用户id 需传,订单状态变化记录需要
+     */
+    private Long updateBy;
+
+    /**
+     * 更新者姓名 需传,订单状态变化记录需要
+     */
+    private String updateByName;
+
+}

+ 11 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java

@@ -108,7 +108,7 @@ public class OrderDetailRes implements Serializable {
     private BigDecimal actualAmount;
 
     /**
-     * 订单创建来源类型(采购下单/销售代客下单)
+     * 订单创建来源类型(1采购下单/2销售代客下单)
      */
     private String source;
 
@@ -132,6 +132,16 @@ public class OrderDetailRes implements Serializable {
      */
     private String statusLabel;
 
+    /**
+     * 创建人id
+     */
+    private Long createBy;
+
+    /**
+     * 创建人姓名
+     */
+    private String createByName;
+
     /**
      * 商品信息
      */

+ 8 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java

@@ -165,6 +165,14 @@ public interface RemoteSystemService {
      */
     SysAreaCacheResDto queryAreaCacheById(Integer code);
 
+    /**
+     * @param list 地址code集合
+     * @return AreaTreeFrontResDto
+     * @desc: 向上查找区域树
+     * @author: czh
+     * @date: 2023/8/2
+     */
+    List<AreaTreeFrontResDto> queryAreaTreeFrontByCodeList(List<Integer> list);
     /**
      * @param entId 企业id
      * @return UserCacheResDto

+ 30 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/AreaTreeFrontResDto.java

@@ -0,0 +1,30 @@
+package com.sckw.system.api.model.dto.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author czh
+ * @desc 区域向上查找返参
+ * @date 2023/8/2
+ */
+@Data
+public class AreaTreeFrontResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8939067497366959341L;
+
+    private Integer code;
+
+    private String name;
+
+    private Integer level;
+
+    private Integer pcode;
+
+    private List<AreaTreeFrontResDto> child;
+
+}

+ 27 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java

@@ -1,9 +1,11 @@
 package com.sckw.transport.api.dubbo;
 
+import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
 import com.sckw.transport.api.model.dto.vo.LogisticsOrderVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author lfdc
@@ -17,6 +19,7 @@ public interface TransportDubboService {
 
     /**
      * 根据id 获取主表详情
+     *
      * @param ids
      * @return
      */
@@ -24,8 +27,32 @@ public interface TransportDubboService {
 
     /**
      * 根据id 对账页面需要的数据
+     *
      * @param ids
      * @return
      */
     List<LogisticsOrderVO> getAcceptCarriageOrderList(List<String> ids);
+
+    /**
+     * 获取物流订单中地址信息
+     *
+     * @return
+     */
+    List<Integer> getLogisticsOrderAddressList();
+
+    /**
+     * 根据企业id获取物流订单地址信息
+     *
+     * @param entId 企业id
+     * @return
+     */
+    List<AddressResDTO> getLogisticsOrderAddressListByEntId(Long entId);
+
+    /**
+     * 根据企业id获取物流订单地址信息
+     *
+     * @param entIds 企业id
+     * @return
+     */
+    Map<Long,List<AddressResDTO>> getLogisticsOrderAddressListByEntId(List<Long> entIds);
 }

+ 13 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/AddressResDTO.java

@@ -0,0 +1,13 @@
+package com.sckw.transport.api.model.dto;
+
+import lombok.Data;
+
+/**
+ * @author lfdc
+ * @description 地址信息
+ * @date 2023-08-02 14:08:52
+ */
+@Data
+public class AddressResDTO {
+
+}

+ 1 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java

@@ -84,8 +84,7 @@ public class KwcCheckedController {
      */
     @PostMapping("submit")
     public HttpResult submit(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
-        kwcContractLogisticsService.submit(reqVo);
-        return HttpResult.ok();
+        return HttpResult.ok(kwcContractLogisticsService.submit(reqVo));
     }
 
     /**

+ 1 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java

@@ -86,8 +86,7 @@ public class KwcContractSaleController {
      */
     @PostMapping("submit")
     public HttpResult submit(@Valid @RequestBody ContractTradeReqVo reqVo) throws SystemException {
-        kwcContractTradeService.submit(reqVo);
-        return HttpResult.ok();
+        return HttpResult.ok(kwcContractTradeService.submit(reqVo));
     }
 
     /**

+ 10 - 8
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java

@@ -15,12 +15,14 @@ import com.sckw.core.model.enums.SigningWayEnum;
 import com.sckw.core.utils.CollectionUtils;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import java.util.*;
 
+/**
+ * @author czh
+ * @desc 合同远程接口实现
+ * @date 2023/7/31
+ */
 @DubboService(group = "design", version = "2.0.0")
-@Service
 public class RemoteContractServiceImpl implements RemoteContractService {
 
     @Autowired
@@ -34,7 +36,7 @@ public class RemoteContractServiceImpl implements RemoteContractService {
 
     @Override
     public Map<Long, ContractCommonInfoResDto> queryContractBaseInfo(List<Long> contractIds) {
-        HashMap<Long, ContractCommonInfoResDto> map = new HashMap<>();
+        HashMap<Long, ContractCommonInfoResDto> map = new HashMap<>(4);
         for (Long contractId : contractIds) {
             KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(contractId);
             if (Objects.nonNull(kwcContractLogistics)) {
@@ -67,10 +69,10 @@ public class RemoteContractServiceImpl implements RemoteContractService {
         contractCommonInfoResDto.setContactName(kwcContractLogistics.getName());
         contractCommonInfoResDto.setContractCode(kwcContractLogistics.getContractNo());
         contractCommonInfoResDto.setSigningWay(kwcContractLogistics.getSigningWay());
-        contractCommonInfoResDto.setSigningWayName(SigningWayEnum.getName(kwcContractLogistics.getSigningWay()).getName());
+        contractCommonInfoResDto.setSigningWayName(Objects.requireNonNull(SigningWayEnum.getName(kwcContractLogistics.getSigningWay())).getName());
         contractCommonInfoResDto.setEntInfoList(entList);
         contractCommonInfoResDto.setStatus(kwcContractLogistics.getStatus());
-        contractCommonInfoResDto.setStatusName(ContractStatusEnum.getName(kwcContractLogistics.getStatus()).getName());
+        contractCommonInfoResDto.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(kwcContractLogistics.getStatus())).getName());
         List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
         if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnits)) {
             for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnits) {
@@ -91,10 +93,10 @@ public class RemoteContractServiceImpl implements RemoteContractService {
         contractCommonInfoResDto.setContactName(kwcContractTrade.getName());
         contractCommonInfoResDto.setContractCode(kwcContractTrade.getContractNo());
         contractCommonInfoResDto.setSigningWay(kwcContractTrade.getSigningWay());
-        contractCommonInfoResDto.setSigningWayName(SigningWayEnum.getName(kwcContractTrade.getSigningWay()).getName());
+        contractCommonInfoResDto.setSigningWayName(Objects.requireNonNull(SigningWayEnum.getName(kwcContractTrade.getSigningWay())).getName());
         contractCommonInfoResDto.setEntInfoList(entList);
         contractCommonInfoResDto.setStatus(kwcContractTrade.getStatus());
-        contractCommonInfoResDto.setStatusName(ContractStatusEnum.getName(kwcContractTrade.getStatus()).getName());
+        contractCommonInfoResDto.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(kwcContractTrade.getStatus())).getName());
         List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractTrade.getId());
         if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnits)) {
             for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnits) {

+ 6 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/req/QueryListReqDto.java

@@ -62,4 +62,10 @@ public class QueryListReqDto {
      * 交易方式
      */
     private Integer trading;
+
+    /**
+     * 对方企业id
+     */
+    private Long targetEntId;
+
 }

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java

@@ -63,4 +63,9 @@ public class QueryListReqVo extends PageRequest implements Serializable {
      */
     private Integer trading;
 
+    /**
+     * 对方企业id
+     */
+    private Long targetEntId;
+
 }

+ 5 - 5
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java

@@ -17,7 +17,6 @@ import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
 import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
-import com.sckw.contract.model.entity.KwcContractTrade;
 import com.sckw.contract.model.vo.req.*;
 import com.sckw.contract.model.vo.res.*;
 import com.sckw.core.common.enums.enums.DictEnum;
@@ -181,7 +180,7 @@ public class KwcContractLogisticsService {
         contractLogisticsDetailResVo.setId(kwcContractLogistics.getId());
         contractLogisticsDetailResVo.setRemark(kwcContractLogistics.getRemark());
         contractLogisticsDetailResVo.setStatus(kwcContractLogistics.getStatus());
-        contractLogisticsDetailResVo.setStatusName(ContractStatusEnum.getName(kwcContractLogistics.getStatus()).getName());
+        contractLogisticsDetailResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(kwcContractLogistics.getStatus())).getName());
         //基础信息
         List<KwcContractLogisticsUnit> kwcContractLogisticsUnitList = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
         if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnitList)) {
@@ -307,16 +306,17 @@ public class KwcContractLogisticsService {
      * @date 2023/7/17
      */
     @Transactional(rollbackFor = {})
-    public void submit(ContractLogisticsReqVo reqVo) {
+    public Long submit(ContractLogisticsReqVo reqVo) {
         Long id = reqVo.getId();
         //直接签约先存草稿再修改状态
         if (Objects.isNull(id)) {
             id = addCheckedContract(reqVo);
             changeToSubmit(id);
-            return;
+            return id;
         }
         update(reqVo);
         changeToSubmit(id);
+        return id;
     }
 
     /**
@@ -490,7 +490,7 @@ public class KwcContractLogisticsService {
                 queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
             }
             queryListResVo.setChargingName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), String.valueOf(queryListResDto.getCharging())));
-            queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
+            queryListResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(queryListResDto.getStatus())).getName());
             queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
             queryListResVo.setPerformedAmount(queryListResDto.getPerformedAmount());
             queryListResVo.setAmount(queryListResDto.getAmount());

+ 9 - 9
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -98,7 +98,7 @@ public class KwcContractTradeService {
      * @date: 2023/7/18
      */
     private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
-        Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
+        Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>(8);
         List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
         if (CollectionUtils.isNotEmpty(initiateByList)) {
             longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(initiateByList);
@@ -121,7 +121,7 @@ public class KwcContractTradeService {
                 queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
             }
             queryListResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(queryListResDto.getTrading())));
-            queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
+            queryListResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(queryListResDto.getStatus())).getName());
             queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
             queryListResVo.setAmount(queryListResDto.getAmount());
             queryListResVo.setPerformedAmount(new BigDecimal("0"));
@@ -254,7 +254,7 @@ public class KwcContractTradeService {
 
         ContractTradeDetailResVo contractTradeDetailResVo = new ContractTradeDetailResVo();
         contractTradeDetailResVo.setStatus(kwcContractTrade.getStatus());
-        contractTradeDetailResVo.setStatusName(ContractStatusEnum.getName(kwcContractTrade.getStatus()).getName());
+        contractTradeDetailResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(kwcContractTrade.getStatus())).getName());
         contractTradeDetailResVo.setRemark(kwcContractTrade.getRemark());
 
 
@@ -281,18 +281,17 @@ public class KwcContractTradeService {
 
         //标的信息
         List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(id);
-        List<Long> goodsIdList = kwcContractTradeGoodsList.stream().map(KwcContractTradeGoods::getGoodsId).toList();
-        Map<Long, KwpGoods> goodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
+        Map<Long, KwpGoods> goodsMap = new HashMap<>(8);
         if (CollectionUtils.isNotEmpty(kwcContractTradeGoodsList)) {
             List<TradeGoodsInfoResVo> tradeGoodsInfoResVoList = new ArrayList<>();
-
+            List<Long> goodsIdList = kwcContractTradeGoodsList.stream().map(KwcContractTradeGoods::getGoodsId).toList();
+            goodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
             StringBuilder keys = new StringBuilder();
             for (KwcContractTradeGoods item : kwcContractTradeGoodsList) {
                 keys.append(DictTypeEnum.UNIT_TYPE.getType()).append(Global.POUND).append(item.getUnit()).append(Global.COMMA);
             }
             Map<String, SysDictResDto> stringSysDictResDtoMap = remoteSystemService.queryDictMapByTypeValues(keys.toString());
 
-
             for (KwcContractTradeGoods kwcContractTradeGoods : kwcContractTradeGoodsList) {
                 TradeGoodsInfoResVo tradeGoodsInfoResVo = new TradeGoodsInfoResVo();
                 tradeGoodsInfoResVo.setAmount(kwcContractTradeGoods.getAmount());
@@ -351,16 +350,17 @@ public class KwcContractTradeService {
      * @date 2023/7/16
      */
     @Transactional(rollbackFor = {})
-    public void submit(ContractTradeReqVo reqVo) {
+    public Long submit(ContractTradeReqVo reqVo) {
         Long id = reqVo.getId();
         if (Objects.isNull(id)) {
             //创建合同
             id = addTradeContract(reqVo);
             changeToSubmit(id);
-            return;
+            return id;
         }
         update(reqVo);
         changeToSubmit(id);
+        return id;
     }
 
 

+ 3 - 0
sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml

@@ -91,6 +91,9 @@
                 #{item}
             </foreach>
           </if>
+          <if test="targetEntId != null">
+              and e.ent_id = #{targetEntId}
+          </if>
     </select>
 
 </mapper>

+ 3 - 0
sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml

@@ -98,5 +98,8 @@
         <if test="charging != null">
             and a.charging = #{charging}
         </if>
+        <if test="targetEntId != null">
+            and e.ent_id = #{targetEntId}
+        </if>
     </select>
 </mapper>

+ 1 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java

@@ -156,6 +156,7 @@ public class KwfDriverController {
      **/
     @PostMapping("/findList")
     public HttpResult findList(@RequestBody HashMap params) throws SystemException {
+        params.put("entId", LoginUserHolder.getEntId());
         return HttpResult.ok(driverService.findList(params));
     }
 

+ 2 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
@@ -66,6 +67,7 @@ public class KwfFleetController {
      **/
     @PostMapping("/findList")
     public HttpResult findList(@RequestBody HashMap params) throws SystemException {
+        params.put("entId", LoginUserHolder.getEntId());
         return HttpResult.ok(fleetService.findList(params));
     }
 

+ 52 - 8
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -160,6 +160,7 @@ public class KwfTruckController {
      **/
     @PostMapping("/findList")
     public HttpResult findList(@RequestBody HashMap params) throws SystemException {
+        params.put("entId", LoginUserHolder.getEntId());
         return HttpResult.ok(truckService.findList(params));
     }
 
@@ -262,10 +263,25 @@ public class KwfTruckController {
 
         List data = new ArrayList();
         for (KwfTruckVo truck:trucks) {
+            int bbb = new Random().nextInt(10) / 4;
             data.add(new HashMap(){{put("truckNo", truck.getTruckNo());
-                put("entId", truck.getEntId()); put("firmName",
-                        truck.getFirmName()); put("businessStatus", truck.getStatusName());
-                        put("runStatus", 0);}});
+                put("entId", truck.getEntId());
+                put("firmName", truck.getFirmName());
+                put("businessStatus", truck.getTruckNo().contains("1") ? 0 : 1);
+                put("runStatus", bbb == 0 ? 0 : bbb == 1 ? 1 : 2);}});
+        }
+
+        for (int i=0; i<5; i++) {
+            int index1 = i;
+            for (int j=0; j<10; j++) {
+                int aaa = new Random().nextInt(10) / 3;
+                int bbb = new Random().nextInt(10) / 4;
+                data.add(new HashMap(){{put("truckNo", "川A"+new Random().nextInt(100000));
+                    put("entId", "1000000" + index1);
+                    put("firmName", "物流企业"+ index1);
+                    put("businessStatus", aaa == 0 ? 0 : 1);
+                    put("runStatus", bbb == 0 ? 0 : bbb == 1 ? 1 : 2);}});
+            }
         }
 
         return HttpResult.ok(data);
@@ -285,11 +301,15 @@ public class KwfTruckController {
 
         List data = new ArrayList();
         for (String truckNo:truckNos) {
+            int aaa = new Random().nextInt(10) / 3;
+            int bbb = new Random().nextInt(10) / 4;
             data.add(new HashMap(){{
                 put("truckNo", truckNo);
                 put("speed", new Random().nextInt(100));
-                put("lng", "30."+new Random().nextInt(1000000));
-                put("lat", "103."+new Random().nextInt(1000000));
+                put("lat", "30.58"+new Random().nextInt(10000));
+                put("lng", "104.06"+new Random().nextInt(10000));
+                put("businessStatus", aaa == 0 ? 0 : 1);
+                put("runStatus", bbb == 0 ? 0 : bbb == 1 ? 1 : 2);
                 put("gpsTime", DateUtils.getCurrentTime());}});
         }
         return HttpResult.ok(data);
@@ -309,17 +329,41 @@ public class KwfTruckController {
             put("lng", "30.60513"); put("lat", "104.05079");
             put("gpsTime", DateUtils.format(params.getStartTime(), DateUtils.DATE_TIME_PATTERN));}});
         for (long i=0; i<hours; i++) {
+            int aaa = new Random().nextInt(10) / 3;
+            int bbb = new Random().nextInt(10) / 4;
             data.add(new HashMap(){{
                 put("truckNo", params.getTruckNo());
                 put("speed", new Random().nextInt(100));
-                put("lng", "30."+new Random().nextInt(1000000));
-                put("lat", "103."+new Random().nextInt(1000000));
+                put("lat", "30.58"+new Random().nextInt(10000));
+                put("lng", "104.06"+new Random().nextInt(10000));
+                put("businessStatus", aaa == 0 ? 0 : 1);
+                put("runStatus", bbb == 0 ? 0 : bbb == 1 ? 1 : 2);
                 put("gpsTime", DateUtils.getCurrentTime());}});
         }
         data.add(new HashMap(){{put("truckNo", params.getTruckNo()); put("speed", 95.0);
-            put("lng", "29.524931"); put("lat", "103.734587");
+            put("lat", "29.524931"); put("lng", "103.734587");
             put("gpsTime", DateUtils.format(params.getEndTime(), DateUtils.DATE_TIME_PATTERN));}});
         return HttpResult.ok(data);
     }
 
+    /**
+     * @param truckNo 车牌号
+     * @description 车牌号查询车辆关联数据
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @GetMapping("/findDetailByTruckNo")
+    public HttpResult findDetailByTruckNo(String truckNo) {
+        Map detail = new HashMap();
+        detail.put("truckNo", truckNo);
+        detail.put("driverName", "赵先生");
+        detail.put("driverPhone", "17358629955");
+        detail.put("firmName", "东旭物流有限公司");
+        detail.put("detailAddress", "四川省成都市xxx路10号");
+        detail.put("lat", "30.58"+new Random().nextInt(10000));
+        detail.put("lng", "104.06"+new Random().nextInt(10000));
+        detail.put("speed", new Random().nextInt(100));
+        detail.put("gpsTime", DateUtils.getCurrentTime());
+        return HttpResult.ok(detail);
+    }
 }

+ 13 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckReportController.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
@@ -83,6 +84,18 @@ public class KwfTruckReportController {
         return HttpResult.error("无数据!");
     }
 
+    /**
+     * @param params {。。。}
+     * @desc 查询
+     * @author zk
+     * @date 2023/7/6
+     **/
+    @PostMapping("/findList")
+    public HttpResult findList(@RequestBody HashMap params) throws SystemException {
+        params.put("entId", LoginUserHolder.getEntId());
+        return HttpResult.ok(reportService.findList(params));
+    }
+
     /**
      * @param file 导入文件
      * @description 导入

+ 57 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java

@@ -1,11 +1,14 @@
 package com.sckw.fleet.dubbo;
 
+import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.fleet.dao.KwfDriverMapper;
 import com.sckw.fleet.dao.KwfTruckMapper;
+import com.sckw.fleet.model.KwfDriver;
+import com.sckw.fleet.model.KwfTruck;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -59,6 +62,33 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
         return driverMap;
     }
 
+    /**
+     * @param driverId 司机档案主键id
+     * @desc 查询司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public RDriverVo findDriver(Long driverId) {
+        RDriverVo driverVo = new RDriverVo();
+        KwfDriver driver = driverDao.selectById(driverId);
+        BeanUtils.copyProperties(driver, driverVo);
+        return driverVo;
+    }
+
+    /**
+     * @param params 司机档案信息
+     * @desc 更新司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public int updateById(RDriverVo params) {
+        KwfDriver driver = new KwfDriver();
+        BeanUtils.copyProperties(params, driver);
+        return driverDao.updateById(driver);
+    }
+
     /**
      * @param truckNos 车牌号,多个已逗号隔开
      * @desc 查询车辆信息
@@ -90,4 +120,31 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
 
         return truckMap;
     }
+
+    /**
+     * @param truckId 车辆档案主键id
+     * @desc 查询车辆信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public RTruckVo findTruck(Long truckId) {
+        RTruckVo truckVo = new RTruckVo();
+        KwfTruck truck = truckDao.selectById(truckId);
+        BeanUtils.copyProperties(truck, truckVo);
+        return truckVo;
+    }
+
+    /**
+     * @param params 车辆档案信息
+     * @desc 更新车辆档案
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public int updateById(RTruckVo params) {
+        KwfTruck truck = new KwfTruck();
+        BeanUtils.copyProperties(params, truck);
+        return truckDao.updateById(truck);
+    }
 }

+ 5 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfDriver.java

@@ -61,4 +61,9 @@ public class KwfDriver extends BaseModel {
      */
     private BigDecimal totalWeight;
 
+    /**
+     * 车辆业务状态(0空闲、1任务)
+     */
+    private Integer businessStatus;
+
 }

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTruck.java

@@ -92,7 +92,7 @@ public class KwfTruck extends BaseModel {
     private BigDecimal totalWeight;
 
     /**
-     * 车辆业务状态
+     * 车辆业务状态(0空闲、1任务)
      */
     private Integer businessStatus;
 

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfDriverVo.java

@@ -147,7 +147,7 @@ public class KwfDriverVo {
     private String remark;
 
     /**
-     * 状态
+     * 状态(1正常、2零时、3异常)
      */
     @ExcelIgnore
     private int status;

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckReportVo.java

@@ -34,7 +34,7 @@ public class KwfTruckReportVo {
     private String truckNo;
 
     /**
-     * 状态
+     * 状态(1正常、2零时、3异常)
      */
     @ExcelIgnore
     private int status;

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java

@@ -23,7 +23,7 @@ public class KwfTruckVo {
     private String id;
 
     /**
-     * 状态
+     * 状态(1正常、2零时、3异常)
      */
     @ExcelIgnore
     private int status;

+ 1 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java

@@ -81,7 +81,6 @@ public class KwfFleetService {
      * @date 2023/7/6
      **/
     public List<Map<String, Object>> findList(Map<String, Object> params) {
-        params.put("entId", LoginUserHolder.getEntId());
         return fleetDao.findList(params);
     }
 
@@ -94,7 +93,7 @@ public class KwfFleetService {
     public HttpResult add(KwfFleetDto params) {
         /**唯一性交易**/
         List<Map<String, Object>> fleets = fleetDao.findList(new HashMap(){{
-            put("name", params.getName()); put("entId", LoginUserHolder.getEntId());}});
+            put("wholeName", params.getName()); put("entId", LoginUserHolder.getEntId());}});
         if (!CollectionUtils.isEmpty(fleets)) {
             return HttpResult.error("车队班组已存在!");
         }

+ 12 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java

@@ -29,6 +29,8 @@ import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
@@ -164,6 +166,16 @@ public class KwfTruckReportService {
         return trucks;
     }
 
+    /**
+     * @param params {。。。}
+     * @desc 查询
+     * @author zk
+     * @date 2023/7/6
+     **/
+    public HttpResult findList(HashMap params) throws SystemException {
+        return HttpResult.ok(truckReportDao.findList(params));
+    }
+
     /**
      * @param {}
      * @description 导出

+ 4 - 1
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverMapper.xml

@@ -125,7 +125,10 @@
             and dre.ent_id = #{entId, jdbcType=VARCHAR}
         </if>
         <if test="name != null and name != ''">
-            and dr.name = #{name, jdbcType=VARCHAR}
+            and dr.name like concat('%',#{name},'%')
+        </if>
+        <if test="wholeName != null and wholeName != ''">
+            and fl.name =  #{wholeName, jdbcType=VARCHAR}
         </if>
         <if test="idcard != null and idcard != ''">
             and dr.idcard = #{idcard, jdbcType=VARCHAR}

+ 4 - 1
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfFleetMapper.xml

@@ -45,7 +45,10 @@
             and fl.ent_id = #{entId, jdbcType=VARCHAR}
         </if>
         <if test="name != null and name != ''">
-            and fl.name = #{name, jdbcType=VARCHAR}
+            and fl.name like concat('%',#{name},'%')
+        </if>
+        <if test="wholeName != null and wholeName != ''">
+            and fl.name = #{wholeName, jdbcType=VARCHAR}
         </if>
         <if test="contacts != null and contacts != ''">
             and fl.contacts = #{contacts, jdbcType=VARCHAR}

+ 7 - 2
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckReportMapper.xml

@@ -102,8 +102,10 @@
 
     <select id="findList" resultType="java.util.Map" parameterType="java.util.Map" >
         SELECT
-            trr.id, trr.ent_id entId, truck_id truckId, driver_id driverId, trr.remark, trr.status,
-            tr.truck_no, tr.actual_weight, tr.business_status, dr.`name`, dr.phone, dr.idcard
+            trr.id, trr.ent_id entId, trr.status, dr.id driverId, dr.name driverName, dr.phone driverPhone, dr.idcard driverIdcard,
+            tr.id truckId, tr.truck_no truckNo, tr.type truckType, tr.energy_type truckEnergyType,
+            tr.use_type truckUseType, tr.color truckColor, tr.trailer_no truckTrailerNo,
+            tr.business_status businessStatus, tr.actual_weight actualWeight
         from kwf_truck_report trr
         left join kwf_truck tr on tr.id = trr.truck_id
         left join kwf_driver dr on dr.id = trr.driver_id
@@ -123,6 +125,9 @@
         <if test="truckNo != null and truckNo != ''">
             and tr.truck_no = #{truckNo, jdbcType=VARCHAR}
         </if>
+        <if test="businessStatus != null and businessStatus != ''">
+            and tr.business_status = #{businessStatus, jdbcType=VARCHAR}
+        </if>
         <if test="status != null and status != ''">
             and trr.status = #{status, jdbcType=VARCHAR}
         </if>

+ 31 - 3
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java

@@ -1,6 +1,7 @@
 package com.sckw.manage.controller;
 
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.enums.CooperateStatusEnum;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.manage.model.vo.req.*;
@@ -64,20 +65,34 @@ public class KwmCooperateManageController {
     /**
      * @param reqVo ids
      * @return HttpResult
-     * @desc: 解除合
+     * @desc: 解除合
      * @author: czh
      * @date: 2023/7/11
      */
     @PostMapping("dissolve")
     public HttpResult dissolve(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
-        kwmCooperateManageService.dissolve(reqVo.getIds());
+        kwmCooperateManageService.dissolve(reqVo.getIds(), CooperateStatusEnum.PASS.getCode());
         return HttpResult.ok(HttpStatus.MSG_023);
     }
 
     /**
      * @param reqVo ids
      * @return HttpResult
-     * @desc: 删除合同
+     * @desc: 恢复合作
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    @PostMapping("restore")
+    public HttpResult restore(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+        kwmCooperateManageService.restore(reqVo.getIds(), CooperateStatusEnum.OK.getCode());
+        return HttpResult.ok(HttpStatus.MSG_005);
+    }
+
+
+    /**
+     * @param reqVo ids
+     * @return HttpResult
+     * @desc: 删除合作
      * @author: czh
      * @date: 2023/7/11
      */
@@ -122,4 +137,17 @@ public class KwmCooperateManageController {
         return HttpResult.ok(kwmCooperateManageService.findEntCooperate(reqVo));
     }
 
+
+    /**
+     * @param reqVo 企业id
+     * @return HttpResult
+     * @desc: 根据企业查合作信息
+     * @author: czh
+     * @date: 2023/8/1
+     */
+    @PostMapping("findCooperateByEnt")
+    public HttpResult findCooperateByEnt(@RequestBody FindCooperateByEntReqVo reqVo) throws SystemException {
+        return HttpResult.ok(kwmCooperateManageService.findCooperateByEnt(reqVo));
+    }
+
 }

+ 18 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/dao/KwmCooperateMapper.java

@@ -4,6 +4,7 @@ import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
 import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
 import com.sckw.manage.model.entity.KwmCooperate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.manage.model.vo.req.FindCooperateByEntReqVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -27,6 +28,23 @@ public interface KwmCooperateMapper extends BaseMapper<KwmCooperate> {
      */
     List<CooperateManageQueryResDto> findList(@Param(value = "reqDto") CooperateManageQueryReqDto reqDto);
 
+    /**
+     * @param reqVo 企业id
+     * @return KwmCooperate
+     * @desc: 根据企业查合作信息
+     * @author: czh
+     * @date: 2023/8/1
+     */
+    List<KwmCooperate> findCooperateByEnt(FindCooperateByEntReqVo reqVo);
+
+    /**
+     * @param reqDto 查全量入参
+     * @return CooperateManageQueryResVo
+     * @desc: 查全量
+     * @author: czh
+     * @date: 2023/7/10
+     */
+    List<CooperateManageQueryResDto> findManageList(@Param(value = "reqDto") CooperateManageQueryReqDto reqDto);
 }
 
 

+ 1 - 4
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/dubbo/RemoteManageServiceImpl.java

@@ -10,8 +10,6 @@ import com.sckw.manage.dao.KwmAddressMapper;
 import com.sckw.manage.model.entity.KwmAddress;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -23,7 +21,6 @@ import java.util.stream.Collectors;
  * @date 2023/7/31
  */
 @DubboService(group = "design", version = "2.0.0")
-@Service
 public class RemoteManageServiceImpl implements RemoteManageService {
 
     @Autowired
@@ -38,7 +35,7 @@ public class RemoteManageServiceImpl implements RemoteManageService {
      */
     @Override
     public Map<Long, List<EntAddressResDto>> queryEntAddressByEntIdList(List<Long> idList) {
-        Map<Long, List<EntAddressResDto>> map = new HashMap<>();
+        Map<Long, List<EntAddressResDto>> map = new HashMap<>(4);
         LambdaQueryWrapper<KwmAddress> kwmAddressLambdaQueryWrapper = new LambdaQueryWrapper<>();
         kwmAddressLambdaQueryWrapper.in(KwmAddress::getEntId, idList).
                                      eq(KwmAddress::getDelFlag, Global.NO);

+ 21 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateQueryDto.java

@@ -0,0 +1,21 @@
+package com.sckw.manage.model.dto.res;
+
+import com.sckw.manage.model.entity.KwmCooperate;
+import com.sckw.manage.model.entity.KwmCooperateType;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author czh
+ * @desc 合作单位
+ * @date 2023/8/1
+ */
+@Data
+public class CooperateQueryDto {
+
+    private KwmCooperate kwmCooperate;
+
+    private List<KwmCooperateType> kwmCooperateTypeList;
+
+}

+ 0 - 64
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperateType.java

@@ -65,68 +65,4 @@ public class KwmCooperateType implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public boolean equals(Object that) {
-        if (this == that) {
-            return true;
-        }
-        if (that == null) {
-            return false;
-        }
-        if (getClass() != that.getClass()) {
-            return false;
-        }
-        KwmCooperateType other = (KwmCooperateType) that;
-        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
-            && (this.getCooperateId() == null ? other.getCooperateId() == null : this.getCooperateId().equals(other.getCooperateId()))
-            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
-            && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
-            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
-            && (this.getCreateBy() == null ? other.getCreateBy() == null : this.getCreateBy().equals(other.getCreateBy()))
-            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
-            && (this.getUpdateBy() == null ? other.getUpdateBy() == null : this.getUpdateBy().equals(other.getUpdateBy()))
-            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
-            && (this.getDelFlag() == null ? other.getDelFlag() == null : this.getDelFlag().equals(other.getDelFlag()));
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
-        result = prime * result + ((getCooperateId() == null) ? 0 : getCooperateId().hashCode());
-        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
-        result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
-        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
-        result = prime * result + ((getCreateBy() == null) ? 0 : getCreateBy().hashCode());
-        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
-        result = prime * result + ((getUpdateBy() == null) ? 0 : getUpdateBy().hashCode());
-        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
-        result = prime * result + ((getDelFlag() == null) ? 0 : getDelFlag().hashCode());
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", id=").append(id);
-        sb.append(", cooperateId=").append(cooperateId);
-        sb.append(", type=").append(type);
-        sb.append(", remark=").append(remark);
-        sb.append(", status=").append(status);
-        sb.append(", createBy=").append(createBy);
-        sb.append(", createTime=").append(createTime);
-        sb.append(", updateBy=").append(updateBy);
-        sb.append(", updateTime=").append(updateTime);
-        sb.append(", delFlag=").append(delFlag);
-        sb.append(", serialVersionUID=").append(serialVersionUID);
-        sb.append("]");
-        return sb.toString();
-    }
 }

+ 2 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressAddReqVo.java

@@ -36,6 +36,7 @@ public class AddressAddReqVo implements Serializable {
      * 联系人
      */
     @Pattern(regexp = RegularUtils.NAME, message = "联系人格式不正确")
+    @NotBlank(message = "联系人不能为空")
     private String contacts;
 
     /**
@@ -67,6 +68,7 @@ public class AddressAddReqVo implements Serializable {
      * 联系人电话
      */
     @Pattern(regexp = RegularUtils.PHONE_REG, message = "手机号格式不正确")
+    @NotBlank(message = "手机号不能为空")
     private String phone;
 
     /**

+ 31 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/FindCooperateByEntReqVo.java

@@ -0,0 +1,31 @@
+package com.sckw.manage.model.vo.req;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 通过企业查合作信息
+ * @date 2023/8/1
+ */
+@Data
+public class FindCooperateByEntReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8336489430768187668L;
+
+    /**
+     * 当前企业
+     */
+    @NotNull(message = "当前企业不能为空")
+    private Long entId;
+
+    /**
+     * 对方企业
+     */
+    private Long targetEntId;
+
+}

+ 5 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/InitiateReqVo.java

@@ -19,6 +19,11 @@ public class InitiateReqVo implements Serializable {
     @Serial
     private static final long serialVersionUID = 8349164938027233004L;
 
+    /**
+     * 合作id
+     */
+    private Long id;
+
     /**
      * 选择的合作单位类型,多个用","隔开
      */

+ 6 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/AddressQueryResVo.java

@@ -1,8 +1,10 @@
 package com.sckw.manage.model.vo.res;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.sckw.core.utils.LongToStringUtils;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -48,6 +50,8 @@ public class AddressQueryResVo implements Serializable {
     /**
      * 创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /**
@@ -98,6 +102,8 @@ public class AddressQueryResVo implements Serializable {
     /**
      * 修改时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /**

+ 4 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/CooperateManageQueryResVo.java

@@ -1,8 +1,10 @@
 package com.sckw.manage.model.vo.res;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.sckw.core.utils.LongToStringUtils;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -38,6 +40,8 @@ public class CooperateManageQueryResVo implements Serializable {
     /**
      * 创建日期(时间戳)
      */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /**

+ 90 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/FindCooperateByEntResVo.java

@@ -0,0 +1,90 @@
+package com.sckw.manage.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 通过企业查合作信息
+ * @date 2023/8/1
+ */
+@Data
+public class FindCooperateByEntResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6831940531630253367L;
+
+    /**
+     * 合作id
+     */
+    private Long id;
+
+    /**
+     * 合作类型
+     */
+    private String cooperateTypes;
+
+    /**
+     * 我方企业id
+     */
+    private Long entId;
+
+    /**
+     * 我方企业名
+     */
+    private String entName;
+
+    /**
+     * 对方企业id
+     */
+    private Long targetEntId;
+
+    /**
+     * 对方企业名
+     */
+    private String targetEntName;
+
+    /**
+     * 发起方企业id
+     */
+    private Long initiateEntId;
+
+    /**
+     * 发起方企业名
+     */
+    private String initiateEntName;
+
+    /**
+     * 我方联系人id
+     */
+    private Long contactsId;
+
+    /**
+     * 我方联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 我方联系电话
+     */
+    private String phone;
+
+    /**
+     * 对方联系人id
+     */
+    private Long targetContactsId;
+
+    /**
+     * 对方联系人姓名
+     */
+    private String targetContacts;
+
+    /**
+     * 对方联系电话
+     */
+    private String targetPhone;
+
+}
+

+ 27 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/FindEntCooperateResVo.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author czh
@@ -16,8 +17,34 @@ public class FindEntCooperateResVo implements Serializable {
     @Serial
     private static final long serialVersionUID = -3663266782855234702L;
 
+    /**
+     * 企业id
+     */
     private Long entId;
 
+    /**
+     * 企业名
+     */
     private String entName;
 
+    /**
+     * 联系人id
+     */
+    private Long contactsId;
+
+    /**
+     * 联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 对方企业
+     */
+    List<FindEntCooperateResVo> target;
+
 }

+ 13 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java

@@ -21,6 +21,7 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -148,7 +149,19 @@ public class CommonBusinessService {
             return Collections.emptyList();
         }
 
+        return getCooperateManageQueryResVos(reqDto, list);
+    }
+
+    /**
+     * @param reqDto 入参  list数据
+     * @return CooperateManageQueryResVo
+     * @desc: 组装返参
+     * @author: czh
+     * @date: 2023/8/2
+     */
+    public List<CooperateManageQueryResVo> getCooperateManageQueryResVos(CooperateManageQueryReqDto reqDto, List<CooperateManageQueryResDto> list) {
         //dubbo接口查用户和企业
+        Long entId = LoginUserHolder.getEntId();
         List<Long> userIds = list.stream().map(CooperateManageQueryResDto::getCreateBy).distinct().toList();
         List<Long> targetEntIds = list.stream().map(CooperateManageQueryResDto::getTargetEntId).distinct().toList();
         List<UserCacheResDto> userCacheResDtos = remoteSystemService.queryUserCacheByIds(userIds);

+ 4 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java

@@ -252,7 +252,11 @@ public class KwmAddressService {
      * @author: czh
      * @date: 2023/7/12
      */
+    @Transactional(rollbackFor = {})
     public void add(AddressAddReqVo reqVo) {
+        Integer cityCode = reqVo.getCityCode();
+
+
         LambdaQueryWrapper<KwmAddress> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(KwmAddress::getName, reqVo.getName()).
                 eq(KwmAddress::getDelFlag, Global.NO).

+ 121 - 54
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java

@@ -21,6 +21,7 @@ import com.sckw.excel.utils.EasyExcelUtil;
 import com.sckw.manage.dao.KwmCooperateMapper;
 import com.sckw.manage.dao.KwmCooperateTypeMapper;
 import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
+import com.sckw.manage.model.dto.res.CooperateQueryDto;
 import com.sckw.manage.model.entity.KwmCooperate;
 import com.sckw.manage.model.entity.KwmCooperateType;
 import com.sckw.manage.model.vo.req.CooperateApplyQueryReqVo;
@@ -38,6 +39,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author czh
@@ -126,17 +128,42 @@ public class KwmCooperateApplyService {
         List<Integer> chooseCooperateTypes = Arrays.stream(reqVo.getChooseCooperateTypes().split(Global.COMMA)).map(Integer::parseInt).toList();
 
         //查是否有在合作中、审核中的记录
-        List<KwmCooperate> kwmCooperates = queryValidCooperate(reqVo.getEntId(), currentEntId);
-        if (!CollectionUtils.isEmpty(kwmCooperates)) {
+        List<CooperateQueryDto> cooperateQueryDtoList = queryValidCooperate(reqVo.getEntId(), currentEntId);
+        if (!CollectionUtils.isEmpty(cooperateQueryDtoList)) {
             //有待审核的记录不允许新增申请
-            if (kwmCooperates.stream().anyMatch(item -> item.getStatus() == CooperateStatusEnum.PROCESS.getCode())) {
-                throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.MSG_015);
+            for (CooperateQueryDto cooperateQueryDto : cooperateQueryDtoList) {
+                List<KwmCooperateType> kwmCooperateTypeList = cooperateQueryDto.getKwmCooperateTypeList();
+                if (CollectionUtils.isEmpty(kwmCooperateTypeList)) {
+                    throw new SystemException(HttpStatus.CODE_10301, HttpStatus.COOPERATE_ATTRIBUTE_NOT_EXISTS);
+                }
+
+                for (KwmCooperateType kwmCooperateType : kwmCooperateTypeList) {
+                    if (cooperateQueryDto.getKwmCooperate().getEntId().equals(currentEntId) && kwmCooperateType.getStatus() == CooperateStatusEnum.PROCESS.getCode()) {
+                        throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.MSG_015);
+                    }
+                }
+
+                //已合作的可以新增,但不能重复新增
+                List<Integer> typeList = kwmCooperateTypeList.stream().map(KwmCooperateType::getType).toList();
+                if (cooperateQueryDto.getKwmCooperate().getInviterEntId().equals(currentEntId)) {
+                    chooseCooperateTypes.forEach(item -> {
+                        if (typeList.contains(item)) {
+                            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_016);
+                        }
+                    });
+                }
+
+                //对方发起了与之相对的申请,也不能再申请
+                if (cooperateQueryDto.getKwmCooperate().getInviteeEntId().equals(currentEntId)) {
+                    chooseCooperateTypes.forEach(item -> {
+                        Integer relative = commonBusinessService.changeAttribute(item);
+                        if (typeList.contains(relative)) {
+                            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_016);
+                        }
+                    });
+                }
             }
-
-            //已合作的可以新增,但不能重复新增
-            checkTypeRepeat(currentEntId, chooseCooperateTypes, kwmCooperates);
         }
-
         //保存发起申请
         saveInitiate(reqVo, currentEntId, chooseCooperateTypes);
     }
@@ -148,49 +175,51 @@ public class KwmCooperateApplyService {
      * @author: czh
      * @date: 2023/7/11
      */
-    public void saveInitiate(InitiateReqVo reqVo, Long currentEntId, List<Integer> chooseCooperateTypes) {
+    public void saveInitiate(InitiateReqVo reqVo, Long currentEntId, List<Integer> chooseCooperateTypes) throws SystemException {
         Date date = new Date();
-        KwmCooperate kwmCooperate = new KwmCooperate();
-        long id = new IdWorker(1L).nextId();
-        kwmCooperate.setEntId(currentEntId);
-        kwmCooperate.setInviterEntId(currentEntId);
-        kwmCooperate.setInviteeEntId(reqVo.getEntId());
-
-        //我方联系人
-        UserCacheResDto contactDto = remoteSystemService.queryUserCacheById(reqVo.getUserId());
-        if (Objects.nonNull(contactDto)) {
-            kwmCooperate.setInviterContactsId(contactDto.getId());
-            kwmCooperate.setInviterContacts(contactDto.getName());
-            kwmCooperate.setInviterPhone(contactDto.getPhone());
-        }
+        Long id = reqVo.getId();
+        if (Objects.isNull(reqVo.getId())) {
+            KwmCooperate kwmCooperate = new KwmCooperate();
+            id = new IdWorker(1L).nextId();
+            kwmCooperate.setEntId(currentEntId);
+            kwmCooperate.setInviterEntId(currentEntId);
+            kwmCooperate.setInviteeEntId(reqVo.getEntId());
+
+            //我方联系人
+            UserCacheResDto contactDto = remoteSystemService.queryUserCacheById(reqVo.getUserId());
+            if (Objects.nonNull(contactDto)) {
+                kwmCooperate.setInviterContactsId(contactDto.getId());
+                kwmCooperate.setInviterContacts(contactDto.getName());
+                kwmCooperate.setInviterPhone(contactDto.getPhone());
+            }
 
-        //对方联系人
-        UserCacheResDto userCacheResDto = remoteSystemService.queryManagerInfoByEntId(reqVo.getEntId());
-        if (Objects.nonNull(userCacheResDto)) {
-            kwmCooperate.setInviteeContactsId(userCacheResDto.getId());
-            kwmCooperate.setInviteeContacts(contactDto.getName());
-            kwmCooperate.setInviteePhone(contactDto.getPhone());
-        }
+            //对方联系人
+            UserCacheResDto userCacheResDto = remoteSystemService.queryManagerInfoByEntId(reqVo.getEntId());
+            if (Objects.nonNull(userCacheResDto)) {
+                kwmCooperate.setInviteeContactsId(userCacheResDto.getId());
+                kwmCooperate.setInviteeContacts(contactDto.getName());
+                kwmCooperate.setInviteePhone(contactDto.getPhone());
+            }
 
-        kwmCooperate.setId(id);
-        kwmCooperate.setRemark(reqVo.getRemark());
-        kwmCooperate.setStatus(CooperateStatusEnum.PROCESS.getCode());
-        kwmCooperate.setCreateBy(LoginUserHolder.getUserId());
-        kwmCooperate.setCreateTime(date);
-        kwmCooperate.setUpdateBy(LoginUserHolder.getUserId());
-        kwmCooperate.setUpdateTime(date);
-        kwmCooperate.setDelFlag(Global.NO);
-        if (kwmCooperateMapper.insert(kwmCooperate) <= 0) {
-            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            kwmCooperate.setId(id);
+            kwmCooperate.setRemark(reqVo.getRemark());
+            kwmCooperate.setStatus(CooperateStatusEnum.PROCESS.getCode());
+            kwmCooperate.setCreateBy(LoginUserHolder.getUserId());
+            kwmCooperate.setCreateTime(date);
+            kwmCooperate.setUpdateBy(LoginUserHolder.getUserId());
+            kwmCooperate.setUpdateTime(date);
+            kwmCooperate.setDelFlag(Global.NO);
+            if (kwmCooperateMapper.insert(kwmCooperate) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            }
         }
 
-
-        chooseCooperateTypes.forEach(item -> {
+        for (Integer item : chooseCooperateTypes) {
             KwmCooperateType kwmCooperateType = new KwmCooperateType();
             kwmCooperateType.setId(new IdWorker(1L).nextId());
             kwmCooperateType.setCooperateId(id);
             kwmCooperateType.setType(item);
-            kwmCooperateType.setStatus(Global.NO);
+            kwmCooperateType.setStatus(CooperateStatusEnum.PROCESS.getCode());
             kwmCooperateType.setCreateBy(LoginUserHolder.getUserId());
             kwmCooperateType.setCreateTime(date);
             kwmCooperateType.setUpdateBy(LoginUserHolder.getUserId());
@@ -199,7 +228,8 @@ public class KwmCooperateApplyService {
             if (kwmCooperateTypeMapper.insert(kwmCooperateType) <= 0) {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
             }
-        });
+        }
+
     }
 
     /**
@@ -244,12 +274,12 @@ public class KwmCooperateApplyService {
 
     /**
      * @param entId 对方企业id  currentEntId 我方企业id
-     * @return KwmCooperate
+     * @return CooperateQueryDto
      * @desc: 查是否有在合作中、审核中的记录
      * @author: czh
      * @date: 2023/7/11
      */
-    private List<KwmCooperate> queryValidCooperate(Long entId, Long currentEntId) {
+    private List<CooperateQueryDto> queryValidCooperate(Long entId, Long currentEntId) {
         LambdaQueryWrapper<KwmCooperate> wrapper = new LambdaQueryWrapper<>();
         List<Integer> statusList = new ArrayList<>();
         statusList.add(CooperateStatusEnum.OK.getCode());
@@ -261,11 +291,31 @@ public class KwmCooperateApplyService {
                         or().
                         eq(KwmCooperate::getInviteeEntId, currentEntId).
                         eq(KwmCooperate::getInviterEntId, entId));
-        return kwmCooperateMapper.selectList(wrapper);
-    }
+        List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectList(wrapper);
+        if (CollectionUtils.isEmpty(kwmCooperates)) {
+            return Collections.emptyList();
+        }
 
+        LambdaQueryWrapper<KwmCooperateType> wrapper2 = new LambdaQueryWrapper<>();
+        wrapper2.eq(KwmCooperateType::getDelFlag, Global.NO).
+                in(KwmCooperateType::getStatus, statusList).
+                in(KwmCooperateType::getCooperateId, kwmCooperates.stream().map(KwmCooperate::getId).toList());
+        List<KwmCooperateType> kwmCooperateTypes = kwmCooperateTypeMapper.selectList(wrapper2);
+        Map<Long, List<KwmCooperateType>> map = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(kwmCooperateTypes)) {
+            map = kwmCooperateTypes.stream().collect(Collectors.groupingBy(KwmCooperateType::getCooperateId));
+        }
 
+        List<CooperateQueryDto> list = new ArrayList<>();
+        for (KwmCooperate kwmCooperate : kwmCooperates) {
+            CooperateQueryDto cooperateQueryDto = new CooperateQueryDto();
+            cooperateQueryDto.setKwmCooperate(kwmCooperate);
+            cooperateQueryDto.setKwmCooperateTypeList(map.get(kwmCooperate.getId()));
+            list.add(cooperateQueryDto);
+        }
 
+        return list;
+    }
 
 
     /**
@@ -298,19 +348,38 @@ public class KwmCooperateApplyService {
 
         Long userId = LoginUserHolder.getUserId();
         Date date = new Date();
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(CooperateStatusEnum.PROCESS.getCode());
+        statusList.add(CooperateStatusEnum.OK.getCode());
         kwmCooperates.forEach(item -> {
-            if (item.getStatus() != CooperateStatusEnum.PROCESS.getCode()) {
-                throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_019);
+            List<KwmCooperateType> kwmCooperateTypes = kwmCooperateTypeMapper.selectList(new LambdaQueryWrapper<KwmCooperateType>().
+                    eq(KwmCooperateType::getCooperateId, item.getId()).
+                    in(KwmCooperateType::getStatus, statusList).
+                    eq(KwmCooperateType::getDelFlag, Global.NO));
+            List<KwmCooperateType> updateKwmCooperateTypes = kwmCooperateTypes.stream().filter(x -> x.getStatus().equals(CooperateStatusEnum.PROCESS.getCode())).toList();
+            if (CollectionUtils.isEmpty(updateKwmCooperateTypes)) {
+                throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.COOPERATE_CANCEL_EXISTS);
             }
-            item.setStatus(type);
+
+            //目前只有一条
+            for (KwmCooperateType kwmCooperateType : updateKwmCooperateTypes) {
+                kwmCooperateType.setStatus(type);
+                kwmCooperateType.setUpdateBy(userId);
+                kwmCooperateType.setUpdateTime(date);
+                if (kwmCooperateTypeMapper.updateById(kwmCooperateType) <= 0) {
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+                }
+            }
+
             item.setUpdateBy(userId);
             item.setUpdateTime(date);
             item.setApprovalRemark(remark);
+            if (kwmCooperateTypes.stream().noneMatch(x -> x.getStatus().equals(CooperateStatusEnum.OK.getCode()))) {
+                item.setStatus(type);
+            }
             if (kwmCooperateMapper.updateById(item) <= 0) {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }
-
-
         });
     }
 
@@ -372,6 +441,4 @@ public class KwmCooperateApplyService {
     }
 
 
-
-
 }

+ 171 - 42
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java

@@ -21,15 +21,14 @@ import com.sckw.excel.utils.EasyExcelUtil;
 import com.sckw.manage.dao.KwmCooperateMapper;
 import com.sckw.manage.dao.KwmCooperateTypeMapper;
 import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
+import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
 import com.sckw.manage.model.entity.KwmCooperate;
 import com.sckw.manage.model.entity.KwmCooperateType;
 import com.sckw.manage.model.vo.req.BindManagerReqVo;
 import com.sckw.manage.model.vo.req.CooperateManageQueryReqVo;
+import com.sckw.manage.model.vo.req.FindCooperateByEntReqVo;
 import com.sckw.manage.model.vo.req.FindEntCooperateReqVo;
-import com.sckw.manage.model.vo.res.CooperateManageQueryResVo;
-import com.sckw.manage.model.vo.res.FindEntCooperateResVo;
-import com.sckw.manage.model.vo.res.FindListGroupResVo;
-import com.sckw.manage.model.vo.res.QueryDetailResVo;
+import com.sckw.manage.model.vo.res.*;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import lombok.extern.slf4j.Slf4j;
@@ -39,6 +38,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author czh
@@ -71,11 +71,22 @@ public class KwmCooperateManageService {
      */
     public PageResult queryByPage(CooperateManageQueryReqVo reqVo) {
         PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
-        List<CooperateManageQueryResVo> list = commonBusinessService.findList(buildQueryParam(reqVo));
+        List<CooperateManageQueryResVo> list = findList(buildQueryParam(reqVo));
         return PageHelperUtil.getPageResult(new PageInfo<>(list));
     }
 
 
+    private List<CooperateManageQueryResVo> findList(CooperateManageQueryReqDto reqDto) {
+        Long entId = LoginUserHolder.getEntId();
+        reqDto.setCurrentEntId(entId);
+        List<CooperateManageQueryResDto> list = kwmCooperateMapper.findManageList(reqDto);
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+
+        return commonBusinessService.getCooperateManageQueryResVos(reqDto, list);
+    }
+
     /**
      * @param reqVo 查询入参
      * @return CooperateManageQueryReqDto
@@ -95,14 +106,10 @@ public class KwmCooperateManageService {
         //只允许查出申请中、已拒绝、已撤销的记录
         List<Integer> status = new ArrayList<>();
         if (Objects.isNull(reqVo.getStatus())) {
-            status.add(CooperateStatusEnum.PROCESS.getCode());
             status.add(CooperateStatusEnum.OK.getCode());
             status.add(CooperateStatusEnum.PASS.getCode());
         }
 
-        if (Objects.nonNull(reqVo.getStatus()) && reqVo.getStatus().equals(CooperateStatusEnum.PROCESS.getCode())) {
-            status.add(CooperateStatusEnum.PROCESS.getCode());
-        }
         if (Objects.nonNull(reqVo.getStatus()) && reqVo.getStatus().equals(CooperateStatusEnum.OK.getCode())) {
             status.add(CooperateStatusEnum.OK.getCode());
         }
@@ -144,7 +151,7 @@ public class KwmCooperateManageService {
      * @date: 2023/7/10
      */
     public void bindManager(BindManagerReqVo reqVo) throws SystemException {
-       commonBusinessService.bingManager(reqVo.getUserId(), reqVo.getId());
+        commonBusinessService.bingManager(reqVo.getUserId(), reqVo.getId());
     }
 
     /**
@@ -154,7 +161,7 @@ public class KwmCooperateManageService {
      * @date: 2023/7/11
      */
     @Transactional(rollbackFor = {})
-    public void dissolve(String ids) {
+    public void dissolve(String ids, Integer type) {
         //todo 判断是否可以解除(若和所选企业有未完结的业务单据(销售订单/采购订单、托运订单/承运订单、对账单、结算单),不支持解除合作)
         //提示:您与所选企业存在未完结业务,当前无法删除!
         List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectBatchIds(Arrays.asList(ids.split(Global.COMMA)));
@@ -165,11 +172,17 @@ public class KwmCooperateManageService {
         Date date = new Date();
         kwmCooperates.forEach(item -> {
             //运营端可以操作任意状态,企业端只能操作合作中的数据
-            if (checkUserPermission(item.getStatus())) {
-                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
+            if (SystemTypeEnum.MANAGE.getCode().equals(LoginUserHolder.getSystemType())) {
+                if (!item.getStatus().equals(CooperateStatusEnum.OK.getCode()) && type.equals(CooperateStatusEnum.PASS.getCode())) {
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
+                }
+
+                if (!item.getStatus().equals(CooperateStatusEnum.PASS.getCode()) && type.equals(CooperateStatusEnum.OK.getCode())) {
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
+                }
             }
 
-            item.setStatus(CooperateStatusEnum.PASS.getCode());
+            item.setStatus(type);
             item.setUpdateBy(userId);
             item.setUpdateTime(date);
             if (kwmCooperateMapper.updateById(item) <= 0) {
@@ -260,18 +273,18 @@ public class KwmCooperateManageService {
      * @author: czh
      * @date: 2023/7/22
      */
-    public List<FindEntCooperateResVo> findEntCooperate(FindEntCooperateReqVo reqVo) {
+    public FindEntCooperateResVo findEntCooperate(FindEntCooperateReqVo reqVo) {
         Long id = reqVo.getId();
         Integer cooperateType = reqVo.getCooperateType();
         LambdaQueryWrapper<KwmCooperate> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(KwmCooperate::getInviterEntId, id).or().
                 eq(KwmCooperate::getInviteeEntId, id).and(
                         wp -> wp.eq(KwmCooperate::getDelFlag, Global.NO).
-                                 eq(KwmCooperate::getStatus, CooperateStatusEnum.OK.getCode())
+                                eq(KwmCooperate::getStatus, CooperateStatusEnum.OK.getCode())
                 );
         List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectList(wrapper);
         if (CollectionUtils.isEmpty(kwmCooperates)) {
-            return Collections.emptyList();
+            return null;
         }
 
         LambdaQueryWrapper<KwmCooperateType> kwmCooperateTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -280,48 +293,164 @@ public class KwmCooperateManageService {
         kwmCooperateTypeLambdaQueryWrapper.eq(KwmCooperateType::getType, cooperateType);
         List<KwmCooperateType> kwmCooperateTypes = kwmCooperateTypeMapper.selectList(kwmCooperateTypeLambdaQueryWrapper);
         if (CollectionUtils.isEmpty(kwmCooperateTypes)) {
-            return Collections.emptyList();
+            return null;
         }
 
         //装对方企业的id
         List<Long> kwmCooperateIdList = kwmCooperateTypes.stream().map(KwmCooperateType::getCooperateId).toList();
+        kwmCooperates = kwmCooperates.stream().filter(item -> kwmCooperateIdList.contains(item.getId())).toList();
+        if (CollectionUtils.isEmpty(kwmCooperates)) {
+            return null;
+        }
+
         List<Long> targetEntIdList = new ArrayList<>();
         kwmCooperates.forEach(item -> {
-            if (kwmCooperateIdList.contains(item.getId())) {
-                targetEntIdList.add(item.getInviterEntId().equals(id) ? item.getInviteeEntId() : item.getInviterEntId());
-            }
+            targetEntIdList.add(item.getInviterEntId().equals(id) ? item.getInviteeEntId() : item.getInviterEntId());
         });
 
-        List<EntCacheResDto> entCacheResDtos = remoteSystemService.queryEntCacheByIds(targetEntIdList);
-        if (CollectionUtils.isEmpty(entCacheResDtos)) {
-            return Collections.emptyList();
+        Map<Long, EntCacheResDto> entCacheResDtoMap = remoteSystemService.queryEntCacheMapByIds(targetEntIdList);
+        if (Objects.isNull(entCacheResDtoMap)) {
+            return null;
         }
 
         //装对方企业信息
-        List<FindEntCooperateResVo> list = new ArrayList<>();
-        entCacheResDtos.forEach(item -> {
+        List<FindEntCooperateResVo> targetEntList = new ArrayList<>();
+        kwmCooperates.forEach(item -> {
             FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
-            findEntCooperateResVo.setEntId(item.getId());
-            findEntCooperateResVo.setEntName(item.getFirmName());
-            list.add(findEntCooperateResVo);
+            Long entId = item.getInviterEntId().equals(id) ? item.getInviteeEntId() : item.getInviterEntId();
+            EntCacheResDto entCacheResDto = entCacheResDtoMap.get(entId);
+            if (Objects.isNull(entCacheResDto)) {
+                return;
+            }
+            findEntCooperateResVo.setEntId(entId);
+            findEntCooperateResVo.setEntName(entCacheResDto.getFirmName());
+            findEntCooperateResVo.setContactsId(item.getInviterEntId().equals(id) ? item.getInviteeContactsId() : item.getInviterContactsId());
+            findEntCooperateResVo.setContacts(item.getInviterEntId().equals(id) ? item.getInviteeContacts() : item.getInviterContacts());
+            findEntCooperateResVo.setPhone(item.getInviterEntId().equals(id) ? item.getInviteePhone() : item.getInviterPhone());
+            targetEntList.add(findEntCooperateResVo);
         });
 
         //装对方企业的主体单位
-        Map<Long, List<EntCacheResDto>> longListMap = remoteSystemService.queryEntDeptCacheByIds(targetEntIdList);
-        List<Long> longs = list.stream().map(FindEntCooperateResVo::getEntId).toList();
-        longs.forEach(item -> {
-            List<EntCacheResDto> entCacheResDtos1 = longListMap.get(item);
-            if (CollectionUtils.isEmpty(entCacheResDtos1)) {
-                return;
-            }
-            entCacheResDtos1.forEach(x -> {
-                FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
-                findEntCooperateResVo.setEntId(x.getId());
-                findEntCooperateResVo.setEntName(x.getFirmName());
-                list.add(findEntCooperateResVo);
-            });
+//        Map<Long, List<EntCacheResDto>> longListMap = remoteSystemService.queryEntDeptCacheByIds(targetEntIdList);
+//        List<Long> longs = targetEntList.stream().map(FindEntCooperateResVo::getEntId).toList();
+//        longs.forEach(item -> {
+//            List<EntCacheResDto> entCacheResDtos1 = longListMap.get(item);
+//            if (CollectionUtils.isEmpty(entCacheResDtos1)) {
+//                return;
+//            }
+//            entCacheResDtos1.forEach(x -> {
+//                FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
+//                findEntCooperateResVo.setEntId(x.getId());
+//                findEntCooperateResVo.setEntName(x.getFirmName());
+//                targetEntList.add(findEntCooperateResVo);
+//            });
+//        });
+
+        FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(id);
+        KwmCooperate kwmCooperate = kwmCooperates.get(0);
+        findEntCooperateResVo.setEntId(id);
+        findEntCooperateResVo.setEntName(entCacheResDto.getFirmName());
+        findEntCooperateResVo.setContactsId(kwmCooperate.getInviterEntId().equals(id) ? kwmCooperate.getInviterContactsId() : kwmCooperate.getInviteeContactsId());
+        findEntCooperateResVo.setContacts(kwmCooperate.getInviterEntId().equals(id) ? kwmCooperate.getInviterContacts() : kwmCooperate.getInviteeContacts());
+        findEntCooperateResVo.setPhone(kwmCooperate.getInviterEntId().equals(id) ? kwmCooperate.getInviterPhone() : kwmCooperate.getInviteePhone());
+        findEntCooperateResVo.setTarget(targetEntList);
+        return findEntCooperateResVo;
+    }
+
+
+    /**
+     * @param reqVo 企业id
+     * @return FindCooperateByEntResVo
+     * @desc: 根据企业查合作信息
+     * @author: czh
+     * @date: 2023/8/1
+     */
+    public List<FindCooperateByEntResVo> findCooperateByEnt(FindCooperateByEntReqVo reqVo) {
+        List<KwmCooperate> kwmCooperates = kwmCooperateMapper.findCooperateByEnt(reqVo);
+        if (CollectionUtils.isEmpty(kwmCooperates)) {
+            return Collections.emptyList();
+        }
+
+        //获取合作属性
+        List<Long> cooperateIdList = kwmCooperates.stream().map(KwmCooperate::getId).toList();
+        LambdaQueryWrapper<KwmCooperateType> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(KwmCooperateType::getCooperateId, cooperateIdList);
+        wrapper.eq(KwmCooperateType::getDelFlag, Global.NO);
+        List<KwmCooperateType> kwmCooperateTypes = kwmCooperateTypeMapper.selectList(wrapper);
+        Map<Long, List<KwmCooperateType>> collect = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(kwmCooperateTypes)) {
+            collect = kwmCooperateTypes.stream().collect(Collectors.groupingBy(KwmCooperateType::getCooperateId));
+        }
+
+        //获取所有企业信息
+        List<Long> allEntIdList = new ArrayList<>();
+        kwmCooperates.forEach(item -> {
+            allEntIdList.add(item.getEntId());
+            allEntIdList.add(item.getInviterEntId());
+            allEntIdList.add(item.getInviteeEntId());
         });
+        List<EntCacheResDto> entCacheResDtos = remoteSystemService.queryEntCacheByIds(allEntIdList);
+        Map<Long, EntCacheResDto> entMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(entCacheResDtos)) {
+            entMap = entCacheResDtos.stream().collect(Collectors.toMap(EntCacheResDto::getId, e -> e, (n, o) -> n));
+        }
+
+        List<FindCooperateByEntResVo> list = new ArrayList<>();
+        Long currentEntId = LoginUserHolder.getEntId();
+        for (KwmCooperate kwmCooperate : kwmCooperates) {
+            FindCooperateByEntResVo findCooperateByEntResVo = new FindCooperateByEntResVo();
+            findCooperateByEntResVo.setId(kwmCooperate.getId());
+
+
+            //设置合作属性
+            List<KwmCooperateType> kwmCooperateTypes1 = collect.get(kwmCooperate.getId());
+            if (CollectionUtils.isNotEmpty(kwmCooperateTypes1)) {
+                findCooperateByEntResVo.setCooperateTypes(String.join(Global.COMMA, kwmCooperateTypes1.stream().map(KwmCooperateType::getType).map(String::valueOf).toList()));
+            }
+
+            //设置发起企业
+            EntCacheResDto entCacheResDto = entMap.get(kwmCooperate.getEntId());
+            findCooperateByEntResVo.setInitiateEntId(kwmCooperate.getEntId());
+            if (Objects.nonNull(entCacheResDto)) {
+                findCooperateByEntResVo.setInitiateEntName(entCacheResDto.getFirmName());
+            }
+
+            EntCacheResDto inviterEntCacheResDto = entMap.get(kwmCooperate.getInviterEntId());
+            EntCacheResDto inviteeEntCacheResDto = entMap.get(kwmCooperate.getInviteeEntId());
+            String inviterEntName = Objects.isNull(inviterEntCacheResDto) ? null : inviterEntCacheResDto.getFirmName();
+            String inviteeEntName = Objects.isNull(inviteeEntCacheResDto) ? null : inviteeEntCacheResDto.getFirmName();
+
+            //设置我方和对方企业信息、联系人
+            if (currentEntId.equals(kwmCooperate.getEntId())) {
+                findCooperateByEntResVo.setEntId(kwmCooperate.getInviterEntId());
+                findCooperateByEntResVo.setEntName(inviterEntName);
+                findCooperateByEntResVo.setContactsId(kwmCooperate.getInviterContactsId());
+                findCooperateByEntResVo.setContacts(kwmCooperate.getInviterContacts());
+                findCooperateByEntResVo.setPhone(kwmCooperate.getInviterPhone());
+                findCooperateByEntResVo.setTargetEntId(kwmCooperate.getInviteeEntId());
+                findCooperateByEntResVo.setTargetEntName(inviteeEntName);
+                findCooperateByEntResVo.setTargetContactsId(kwmCooperate.getInviteeContactsId());
+                findCooperateByEntResVo.setTargetContacts(kwmCooperate.getInviteeContacts());
+                findCooperateByEntResVo.setTargetPhone(kwmCooperate.getInviteePhone());
+            } else {
+                findCooperateByEntResVo.setEntId(kwmCooperate.getInviteeEntId());
+                findCooperateByEntResVo.setEntName(inviteeEntName);
+                findCooperateByEntResVo.setContactsId(kwmCooperate.getInviteeContactsId());
+                findCooperateByEntResVo.setContacts(kwmCooperate.getInviteeContacts());
+                findCooperateByEntResVo.setPhone(kwmCooperate.getInviteePhone());
+                findCooperateByEntResVo.setTargetEntId(kwmCooperate.getInviterEntId());
+                findCooperateByEntResVo.setTargetEntName(inviterEntName);
+                findCooperateByEntResVo.setTargetContactsId(kwmCooperate.getInviterContactsId());
+                findCooperateByEntResVo.setTargetContacts(kwmCooperate.getInviterContacts());
+                findCooperateByEntResVo.setTargetPhone(kwmCooperate.getInviterPhone());
+            }
+            list.add(findCooperateByEntResVo);
+        }
         return list;
     }
 
+    public void restore(String ids, Integer type) {
+        dissolve(ids, type);
+    }
 }

+ 90 - 6
sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml

@@ -33,6 +33,7 @@
     <select id="findList" parameterType="com.sckw.manage.model.dto.req.CooperateManageQueryReqDto"
             resultType="com.sckw.manage.model.dto.res.CooperateManageQueryResDto">
         SELECT a.id,
+               b.status,
                group_concat(b.type) types,
                min(a.ent_id) entId,
                min(a.invitee_ent_id) inviteeEntId,
@@ -43,10 +44,9 @@
                min(a.inviter_contacts_id) inviterContactsId,
                min(a.invitee_phone) inviteePhone,
                min(a.inviter_phone) inviterPhone,
-               min(a.create_time) createTime,
-               min(a.create_by) createBy,
+               min(b.create_time) createTime,
+               min(b.create_by) createBy,
                min(a.remark) remark,
-               min(a.status) status,
                min(a.approval_remark) approvalRemark,
                case when min(a.ent_id) = min(a.invitee_ent_id) then min(a.inviter_ent_id) else min(a.invitee_ent_id) end targetEntId,
                case when min(a.ent_id) = #{reqDto.currentEntId} then 1 else 2 end applyTypeCode
@@ -55,10 +55,10 @@
          WHERE a.del_flag = 0
            and (a.invitee_ent_id = #{reqDto.currentEntId} OR a.inviter_ent_id = #{reqDto.currentEntId})
            <if test="reqDto.startTime != null">
-               and a.create_time >= #{reqDto.startTime}
+               and b.create_time >= #{reqDto.startTime}
            </if>
            <if test="reqDto.endTime != null">
-               and a.create_time &lt; date_add(#{reqDto.endTime}, INTERVAL 1 DAY)
+               and b.create_time &lt; date_add(#{reqDto.endTime}, INTERVAL 1 DAY)
            </if>
            <if test="reqDto.applyTypeCode != null and reqDto.applyTypeCode == 1">
                and a.ent_id = #{reqDto.currentEntId}
@@ -70,6 +70,8 @@
                and exists (select 1
                              from kwm_cooperate_type c
                             where c.cooperate_id = a.id
+                               and c.statu = 1
+                               and c.del_flag = 0
                               and c.type in
                             <foreach collection="reqDto.cooperateTypes" item="item" open="(" close=")" separator=",">
                                #{item}
@@ -77,7 +79,7 @@
                           )
            </if>
          <if test="reqDto.status != null and reqDto.status.size() > 0">
-             and a.status in
+             and b.status in
              <foreach collection="reqDto.status" item="item" open="(" close=")" separator=",">
                  #{item}
              </foreach>
@@ -88,7 +90,89 @@
                  #{item}
              </foreach>
          </if>
+        group by a.id, b.status
+        order by a.create_time desc
+    </select>
+
+    <select id="findCooperateByEnt" resultType="com.sckw.manage.model.entity.KwmCooperate">
+        select a.*
+          from kwm_cooperate a
+         where a.del_flag = 0
+           and a.status = 1
+           and ((a.inviter_ent_id = #{entId}
+                <if test="targetEntId != null">
+                    and a.invitee_ent_id = #{targetEntId}
+                </if>
+                )
+                or
+                (a.invitee_ent_id = #{entId}
+                <if test="targetEntId != null">
+                    and a.inviter_ent_id = #{targetEntId}
+                </if>
+                ))
+    </select>
+
+    <select id="findManageList" resultType="com.sckw.manage.model.dto.res.CooperateManageQueryResDto">
+        SELECT a.id,
+                min(a.status) status,
+                group_concat(b.type) types,
+                min(a.ent_id) entId,
+                min(a.invitee_ent_id) inviteeEntId,
+                min(a.inviter_ent_id) inviterEntId,
+                min(a.invitee_contacts) inviteeContacts,
+                min(a.inviter_contacts) inviterContacts,
+                min(a.invitee_contacts_id) inviteeContactsId,
+                min(a.inviter_contacts_id) inviterContactsId,
+                min(a.invitee_phone) inviteePhone,
+                min(a.inviter_phone) inviterPhone,
+                min(b.create_time) createTime,
+                min(b.create_by) createBy,
+                min(a.remark) remark,
+                min(a.approval_remark) approvalRemark,
+                case when min(a.ent_id) = min(a.invitee_ent_id) then min(a.inviter_ent_id) else min(a.invitee_ent_id) end targetEntId,
+                case when min(a.ent_id) = #{reqDto.currentEntId} then 1 else 2 end applyTypeCode
+        FROM kwm_cooperate a
+        LEFT JOIN kwm_cooperate_type b ON a.id = b.cooperate_id and b.status = 1 and b.del_flag = 0
+        WHERE a.del_flag = 0
+        and (a.invitee_ent_id = #{reqDto.currentEntId} OR a.inviter_ent_id = #{reqDto.currentEntId})
+        <if test="reqDto.startTime != null">
+            and b.create_time >= #{reqDto.startTime}
+        </if>
+        <if test="reqDto.endTime != null">
+            and b.create_time &lt; date_add(#{reqDto.endTime}, INTERVAL 1 DAY)
+        </if>
+        <if test="reqDto.applyTypeCode != null and reqDto.applyTypeCode == 1">
+            and a.ent_id = #{reqDto.currentEntId}
+        </if>
+        <if test="reqDto.applyTypeCode != null and reqDto.applyTypeCode == 2">
+            and a.ent_id != #{reqDto.currentEntId}
+        </if>
+        <if test="reqDto.cooperateTypes != null and reqDto.cooperateTypes.size() > 0">
+            and exists (select 1
+                            from kwm_cooperate_type c
+                            where c.cooperate_id = a.id
+                              and c.statu = 1
+                                and c.del_flag = 0
+                            and c.type in
+                        <foreach collection="reqDto.cooperateTypes" item="item" open="(" close=")" separator=",">
+                            #{item}
+                        </foreach>
+                        )
+        </if>
+        <if test="reqDto.status != null and reqDto.status.size() > 0">
+            and b.status in
+            <foreach collection="reqDto.status" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="reqDto.ids != null and reqDto.ids.size() > 0">
+            and a.id in
+            <foreach collection="reqDto.ids" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         group by a.id
         order by a.create_time desc
     </select>
+
 </mapper>

+ 7 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/MessageController.java

@@ -2,6 +2,7 @@ package com.sckw.message.controller;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.annotation.Log;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.response.HttpResult;
@@ -38,6 +39,7 @@ public class MessageController {
      * @date: 2023-06-13 16:17
      */
     @GetMapping("/detail")
+    @Log(description = "获取消息详情")
     public HttpResult detail(@RequestParam Long id) {
         KwmMessage message = messageService.detail(id);
         return HttpResult.ok(message);
@@ -51,6 +53,7 @@ public class MessageController {
      * @date: 2023-06-09 15:12
      */
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "分页查询消息列表")
     public HttpResult select(@RequestBody @Valid SelectMessagesReqVO params) {
         PageHelper.startPage(params.getPage(), params.getPageSize());
         List<KwmMessage> list = messageService.select(params);
@@ -66,6 +69,7 @@ public class MessageController {
      * @date: 2023-06-09 14:21
      */
     @PostMapping(value = "/read", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "消息已读")
     public HttpResult read(@RequestBody ReadMessagesReqVO readMessagesReqVO) {
         messageService.read(readMessagesReqVO);
         return HttpResult.ok();
@@ -79,6 +83,7 @@ public class MessageController {
      * @date: 2023-06-09 14:21
      */
     @PostMapping(value = "/delete", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "删除消息")
     public HttpResult delete(@RequestBody DeleteMessagesReqVO deleteMessagesReqVO) {
         messageService.delete(deleteMessagesReqVO);
         return HttpResult.ok();
@@ -92,6 +97,7 @@ public class MessageController {
      * @return com.sckw.core.web.response.HttpResult
      */
     @GetMapping(value = "/statistics")
+    @Log(description = "消息统计查询")
     public HttpResult statistics(@RequestParam(required = false) String category) {
         List<MessagesStatisticsResVO> result = messageService.statistics(category);
         return HttpResult.ok(result);
@@ -105,6 +111,7 @@ public class MessageController {
      * @date: 2023-06-09 15:12
      */
     @PostMapping(value = "/findList", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "查找消息列表")
     public HttpResult findList(@RequestBody FindMessagesReqVO findMessagesReqVO) {
         return HttpResult.ok(messageService.selectMessages(findMessagesReqVO));
     }

+ 2 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/SmsController.java

@@ -1,6 +1,6 @@
 package com.sckw.message.controller;
 
-import com.alibaba.fastjson.JSON;
+import com.sckw.core.annotation.Log;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.message.model.vo.req.SendSmsVerifyCoderReqVO;
 import com.sckw.message.service.SmsService;
@@ -35,8 +35,8 @@ public class SmsController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/sendVerifyCode", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "发送短信验证码")
     public HttpResult sendVerifyCode(@Valid @RequestBody SendSmsVerifyCoderReqVO param) {
-        log.info("发送验证码参数:{}", JSON.toJSONString(param));
         smsService.sendVerifyCode(param);
         return HttpResult.ok();
     }

+ 0 - 80
sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/TestMqController.java

@@ -1,80 +0,0 @@
-package com.sckw.message.controller;
-
-import cn.hutool.core.lang.UUID;
-import com.alibaba.fastjson2.JSON;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.sckw.core.web.response.HttpResult;
-import com.sckw.stream.enums.SmsCodeEnum;
-import com.sckw.stream.model.Person;
-import com.sckw.message.producer.DelayProducer;
-import com.sckw.stream.enums.MessageEnum;
-import com.sckw.stream.model.SckwMessage;
-import com.sckw.stream.model.SckwSms;
-import jakarta.annotation.Resource;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.stream.function.StreamBridge;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Date;
-import java.util.HashMap;
-
-/**
- * 测试mq
- */
-@Slf4j
-@RestController
-@AllArgsConstructor
-@RequestMapping("/test-mq")
-public class TestMqController {
-
-    private final DelayProducer delayProducer;
-
-    @GetMapping("/index")
-    public HttpResult index() {
-        return HttpResult.ok(System.currentTimeMillis());
-    }
-
-
-    /**
-     * 发送消息Rabbitmq
-     * @param msg 消息内容
-     * @param delay 延时时间
-     */
-    @GetMapping("/sendRabbitmq")
-    public HttpResult sendRabbitmq(String msg, Long delay) {
-        delayProducer.sendMsg(msg, delay);
-        return HttpResult.ok();
-    }
-
-    @Resource
-    private StreamBridge streamBridge;
-    @Autowired
-    private ObjectMapper objectMapper;
-
-    @GetMapping("/sendTest")
-    public HttpResult sendRabbitMq(String name) {
-        String uuid = UUID.fastUUID().toString();
-        SckwSms sckwSms = new SckwSms();
-        sckwSms.setPhone("17358629955");
-        sckwSms.setSignName("矿拉拉");
-        sckwSms.setTemplateCode(SmsCodeEnum.VERIFICATION_CODE);
-        sckwSms.setParams(new HashMap(){{put("code", "123456");}});
-        streamBridge.send("sckw-sms", JSON.toJSONString(sckwSms));
-
-
-        SckwMessage message = new SckwMessage();
-        //person.setName(String.valueOf(System.currentTimeMillis()));
-        message.setMsgUrl("---");
-        message.setPushType("====");
-        message.setClientId("111111111111111");
-        streamBridge.send("sckw-message", JSON.toJSONString(message));
-        return HttpResult.ok(uuid);
-
-    }
-
-
-}

+ 1 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java

@@ -40,6 +40,7 @@ public class SckwMessageHandlerService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void handler(SckwMessage sckwMessage) {
+        log.info("SckwMessageHandler:{}", JSON.toJSONString(sckwMessage));
         if (Boolean.FALSE.equals(RedissonUtils.tryLock(getKey(sckwMessage.getRequestId()), 10L, RedisConstant.CONSUMER_REQUEST_VALID_TIME))) {
             log.info("重复message消息:{},不处理", sckwMessage.getRequestId());
             return;

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java

@@ -35,7 +35,7 @@ public class SckwSmsHandlerService {
         String type = sckwSms.getType();
         String phone = sckwSms.getPhone();
         String requestKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY, type, phone);
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(requestKey, 10L, 30L))) {
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(requestKey, 5L, 10L))) {
             log.info("获取发送短信锁失败,不处理");
             return;
         }

+ 4 - 0
sckw-modules/sckw-message/src/main/resources/bootstrap-test.yml

@@ -17,6 +17,10 @@ spring:
         group: sckw-service-platform
         # 配置文件格式
         file-extension: yaml
+        shared-configs:
+          - data-id: sckw-common.yml
+            group: sckw-common
+            refresh: true
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-service-platform

+ 26 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -1,5 +1,6 @@
 package com.sckw.order.controller;
 
+import com.sckw.core.annotation.Log;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.order.model.vo.req.*;
 import com.sckw.order.serivce.KwoTradeOrderService;
@@ -30,6 +31,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addPurchaseOrderDraft", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "采购下单草稿")
     public HttpResult addPurchaseOrderDraft(@RequestBody @Validated PurchaseOrderDraftParam param) {
         kwoTradeOrderService.addPurchaseOrderDraft(param);
         return HttpResult.ok("采购下单草稿保存成功");
@@ -44,6 +46,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addPurchaseOrderSubmit", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "采购下单提交")
     public HttpResult addPurchaseOrderSubmit(@RequestBody @Validated PurchaseOrderParam purchaseOrderParam) {
         kwoTradeOrderService.addPurchaseOrderSubmit(purchaseOrderParam);
         return HttpResult.ok("采购下单提交成功");
@@ -58,6 +61,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addValetOrderDraft", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "代客下单草稿")
     public HttpResult addValetOrderDraft(@RequestBody @Validated ValetOrderDraftParam param) {
         kwoTradeOrderService.addValetOrderDraft(param);
         return HttpResult.ok("代客下单草稿保存成功");
@@ -73,6 +77,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addValetOrderSubmit", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "代客下单提交")
     public HttpResult addValetOrderSubmit(@RequestBody @Validated ValetOrderParam valetOrderParam) {
         kwoTradeOrderService.addValetOrderSubmit(valetOrderParam);
         return HttpResult.ok("代客下单提交成功");
@@ -86,8 +91,9 @@ public class KwoTradeOrderController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/detail")
+    @Log(description = "贸易订单详情")
     public HttpResult detail(@RequestParam Long id) {
-        return HttpResult.ok(kwoTradeOrderService.detail(id));
+        return HttpResult.ok("贸易订单详情查询成功",kwoTradeOrderService.detail(id));
     }
 
     /**
@@ -99,6 +105,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "贸易订单修改")
     public HttpResult update(@RequestBody @Validated UpdateOrderParam updateOrderParam) {
         kwoTradeOrderService.update(updateOrderParam);
         return HttpResult.ok("订单修改成功");
@@ -113,6 +120,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/acceptanceOrder", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "贸易订单受理")
     public HttpResult acceptanceOrder(@RequestBody @Validated AcceptanceOrderParam acceptanceOrderParam) {
         kwoTradeOrderService.acceptanceOrder(acceptanceOrderParam);
         return HttpResult.ok("订单受理成功");
@@ -127,6 +135,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/rejectOrder", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "贸易订单驳回")
     public HttpResult rejectOrder(@RequestBody @Validated RejectOrderParam rejectOrderParam) {
         kwoTradeOrderService.rejectOrder(rejectOrderParam);
         return HttpResult.ok("订单驳回成功");
@@ -140,6 +149,7 @@ public class KwoTradeOrderController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/rejectReason")
+    @Log(description = "贸易订单驳回原因查询")
     public HttpResult rejectReason(@RequestParam Long id) {
         return HttpResult.ok("驳回订单原因查询成功", kwoTradeOrderService.rejectReason(id));
     }
@@ -153,6 +163,7 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/completeOrder", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "完结贸易订单")
     public HttpResult completeOrder(@RequestBody @Validated CompleteOrderParam completeOrderParam) {
         kwoTradeOrderService.completeOrder(completeOrderParam);
         return HttpResult.ok("订单完结成功");
@@ -168,9 +179,23 @@ public class KwoTradeOrderController {
      */
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/batchDelete", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "批量删除贸易订单")
     public HttpResult batchDelete(@RequestBody @Validated BatchDeleteParam param) {
         kwoTradeOrderService.batchDelete(param);
         return HttpResult.ok("订单批量删除成功");
     }
 
+    /**
+     * @desc: 获取贸易订单地址下拉列表
+     * @author: yzc
+     * @date: 2023-08-02 17:26
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @GetMapping("/getAddressDropList")
+    @Log(description = "获取贸易订单地址下拉列表")
+    public HttpResult getAddressDropList() {
+        return HttpResult.ok("获取贸易订单地址下拉列表成功",kwoTradeOrderService.getAddressDropList());
+    }
+
 }

+ 11 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTransportDemandController.java

@@ -1,5 +1,6 @@
 package com.sckw.order.controller;
 
+import com.sckw.core.annotation.Log;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
@@ -36,6 +37,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/addDraft", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "新增运需草稿")
     public HttpResult addDraft(@RequestBody @Validated AddTransportDemandDraftParam param) {
         kwoTransportDemandService.addDraft(param);
         return HttpResult.ok("新增运需草稿成功");
@@ -50,6 +52,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/addShelves", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "新增运需上架")
     public HttpResult addShelves(@RequestBody @Validated AddTransportDemandParam param) {
         kwoTransportDemandService.addShelves(param);
         return HttpResult.ok("新增运需上架成功");
@@ -64,6 +67,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/detail")
+    @Log(description = "获取运需详情")
     public HttpResult detail(@RequestParam Long id) {
         return HttpResult.ok(kwoTransportDemandService.detail(id));
     }
@@ -76,6 +80,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "运需修改")
     public HttpResult update(@RequestBody @Validated UpdateTransportDemandParam param) {
         kwoTransportDemandService.update(param);
         return HttpResult.ok("运需修改成功!");
@@ -89,6 +94,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "运需分页查询")
     public HttpResult select(@RequestBody @Validated SelectTransportDemandParam param) {
         return HttpResult.ok(kwoTransportDemandService.select(param));
     }
@@ -101,6 +107,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/statistic", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "运需统计")
     public HttpResult statistic(@RequestBody StatisticTransportDemandParam param) {
         return HttpResult.ok(kwoTransportDemandService.statistic(param));
     }
@@ -130,6 +137,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/putOnShelves")
+    @Log(description = "运需上架")
     public HttpResult putOnShelves(@RequestParam Long id) {
         kwoTransportDemandService.putOnShelves(id);
         return HttpResult.ok("上架成功");
@@ -143,6 +151,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchTakeOffShelves")
+    @Log(description = "运需批量下架")
     public HttpResult batchTakeOffShelves(@RequestParam String ids) {
         List<Long> list = StringUtils.splitStrToList(ids, ",", Long.class);
         kwoTransportDemandService.batchTakeOffShelves(list);
@@ -157,6 +166,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchDelete")
+    @Log(description = "运需批量删除")
     public HttpResult batchDelete(@RequestParam String ids) {
         List<Long> list = StringUtils.splitStrToList(ids, ",", Long.class);
         kwoTransportDemandService.batchDelete(list);
@@ -171,6 +181,7 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/demandSquaresList", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "运需广场列表")
     public HttpResult demandSquaresList(@RequestBody @Validated TransportDemandSquaresParam param) {
         return HttpResult.ok(kwoTransportDemandService.demandSquaresList(param));
     }

+ 11 - 3
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwpWantBuyController.java

@@ -1,5 +1,6 @@
 package com.sckw.order.controller;
 
+import com.sckw.core.annotation.Log;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.order.model.vo.req.AddWantBuyParam;
 import com.sckw.order.model.vo.req.UpdateWantBuyParam;
@@ -11,9 +12,6 @@ import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
-import java.util.List;
-
 /**
  * @desc: 求购controller
  * @author: yzc
@@ -32,6 +30,7 @@ public class KwpWantBuyController {
      * @Date 15:34 2023/7/26 0026
     **/
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购分页查询")
     public HttpResult select(@RequestBody WantBuySelectParam wantBuySelectParam) {
         return HttpResult.ok(kwpWantBuyService.select(wantBuySelectParam));
     }
@@ -42,6 +41,7 @@ public class KwpWantBuyController {
      * @Date 15:34 2023/7/26 0026
     **/
     @PostMapping(value = "/buyHallList", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购大厅")
     public HttpResult buyHallList(@RequestBody WantBuySelectParam wantBuySelectParam) {
         return HttpResult.ok(kwpWantBuyService.buyHallList(wantBuySelectParam));
     }
@@ -54,6 +54,7 @@ public class KwpWantBuyController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/addDraft", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "新增求购草稿")
     public HttpResult addDraft(@RequestBody AddWantBuyParam addWantBuyParam) {
         kwpWantBuyService.addDraft(addWantBuyParam);
         return HttpResult.ok("新增求购草稿成功");
@@ -67,6 +68,7 @@ public class KwpWantBuyController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/addShelves", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "新增求购上架")
     public HttpResult addShelves(@RequestBody @Validated AddWantBuyParam addWantBuyParam) {
         kwpWantBuyService.addShelves(addWantBuyParam);
         return HttpResult.ok("新增求购上架成功");
@@ -78,6 +80,7 @@ public class KwpWantBuyController {
      * @Date: 13:39 2023/7/25 0025
     **/
     @GetMapping(value = "/putOnShelves", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购上架")
     public HttpResult putOnShelves(@RequestParam Long id) {
         kwpWantBuyService.putOnShelves(id);
         return HttpResult.ok("求购上架成功");
@@ -89,6 +92,7 @@ public class KwpWantBuyController {
      * @Date: 13:39 2023/7/25 0025
     **/
     @PostMapping(value = "/batchTakeOffShelves", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购批量下架")
     public HttpResult batchTakeOffShelves(@RequestBody WantBuyDels ids) {
         kwpWantBuyService.batchTakeOffShelves(ids);
         return HttpResult.ok("批量下架成功");
@@ -100,6 +104,7 @@ public class KwpWantBuyController {
      * @Date: 13:39 2023/7/25 0025
     **/
     @DeleteMapping(value = "/dels", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购批量删除")
     public HttpResult dels(@RequestBody WantBuyDels ids) {
         kwpWantBuyService.dels(ids);
         return HttpResult.ok("批量删除成功");
@@ -113,6 +118,7 @@ public class KwpWantBuyController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/detail")
+    @Log(description = "求购详情")
     public HttpResult detail(@RequestParam Long id) {
         return HttpResult.ok(kwpWantBuyService.detail(id));
     }
@@ -123,6 +129,7 @@ public class KwpWantBuyController {
      * @Date 15:22 2023/7/26 0026
     **/
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购编辑")
     public HttpResult update(@RequestBody @Validated UpdateWantBuyParam updateWantBuyParam) {
         kwpWantBuyService.update(updateWantBuyParam);
         return HttpResult.ok("求购修改成功!");
@@ -134,6 +141,7 @@ public class KwpWantBuyController {
      * @Date 15:23 2023/7/26 0026
     **/
     @PostMapping(value = "/statistic", produces = MediaType.APPLICATION_JSON_VALUE)
+    @Log(description = "求购统计")
     public HttpResult statistic(@RequestBody WantBuySelectParam params)
     {
         return HttpResult.ok(kwpWantBuyService.statistic(params));

+ 115 - 58
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -10,10 +10,7 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
-import com.sckw.order.api.model.ContractSignCompletedParam;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderAmountParam;
-import com.sckw.order.api.model.UpdateOrderStatusParam;
+import com.sckw.order.api.model.*;
 import com.sckw.order.model.KwoTradeOrder;
 import com.sckw.order.model.KwoTradeOrderContract;
 import com.sckw.order.model.KwoTradeOrderTrack;
@@ -61,6 +58,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrderStatus(UpdateOrderStatusParam param) {
+        log.info("更新订单状态入参:{}", JSON.toJSONString(param));
         if (Objects.isNull(param.getUpdateBy()) || StringUtils.isBlank(param.getUpdateByName())) {
             return HttpResult.error("操作人信息不能为空!");
         }
@@ -92,20 +90,80 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         SckwTradeOrder updateParam = new SckwTradeOrder();
         updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(param.getUpdateBy())
                 .setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
-        saveMongoDb(3, updateParam);
+        saveMongoDb(updateParam);
         return HttpResult.ok();
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrderAmount(UpdateOrderAmountParam param) {
-        if (Objects.isNull(param.getUpdateBy()) || StringUtils.isBlank(param.getUpdateByName())) {
+        return HttpResult.ok();
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param) {
+        log.info("生成或撤销物流订单入参:{}", JSON.toJSONString(param));
+        Long id = param.getTOrderId();
+        BigDecimal entrustAmount = param.getEntrustAmount();
+        Long updateBy = param.getUpdateBy();
+        String updateByName = param.getUpdateByName();
+        if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
             return HttpResult.error("操作人信息不能为空!");
         }
+        if (Objects.isNull(entrustAmount)) {
+            return HttpResult.error("任务量不能为空!");
+        }
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
+            return HttpResult.error("业务繁忙,请稍后再试!");
+        }
+        try {
+            KwoTradeOrder order = kwoTradeOrderService.getById(id);
+            if (Objects.isNull(order)) {
+                return HttpResult.error("订单不存在!");
+            }
+            if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
+                return HttpResult.error("执行中的订单才可物流托运!");
+            }
+            BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ? entrustAmount : entrustAmount.add(order.getEntrustAmount());
+            if (order.getAmount().compareTo(totalEntrustAmount) < 0) {
+                return HttpResult.error("物流已委托总量不可大于订单总量!");
+            }
+            order.setEntrustAmount(totalEntrustAmount).setUpdateBy(param.getUpdateBy());
+            kwoTradeOrderService.updateById(order);
+            //更新mongodb
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount)
+                    .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
+            saveMongoDb(updateParam);
+        } finally {
+            RedissonUtils.unlock(lockKey);
+        }
+        return HttpResult.ok();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param) {
+        log.info("物流订单完结入参:{}", JSON.toJSONString(param));
         Long id = param.getTOrderId();
+        BigDecimal entrustAmount = param.getEntrustAmount();
+        BigDecimal actualLoadAmount = param.getActualLoadAmount();
+        BigDecimal actualUnloadAmount = param.getActualUnloadAmount();
         Long updateBy = param.getUpdateBy();
-        String lockKey = String.format(RedisConstant.GOODS_UPDATE_AMOUNT_KEY, id);
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+        String updateByName = param.getUpdateByName();
+        if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
+            return HttpResult.error("操作人信息不能为空!");
+        }
+        if (Objects.isNull(entrustAmount) || Objects.isNull(actualLoadAmount) || Objects.isNull(actualUnloadAmount)) {
+            return HttpResult.error("任务量或装卸量不能为空!");
+        }
+        if (Objects.isNull(param.getIsAllComplete())) {
+            return HttpResult.error("物流订单是否已全部完结不能为空!");
+        }
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             return HttpResult.error("业务繁忙,请稍后再试!");
         }
         try {
@@ -116,24 +174,15 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
                 return HttpResult.error("执行中的订单才可物流托运!");
             }
-            BigDecimal amount = order.getAmount();
-            BigDecimal addEntrustAmount = order.getEntrustAmount();
-            if (Objects.nonNull(param.getEntrustAmount())) {
-                addEntrustAmount = addEntrustAmount.add(param.getActualAmount());
-                if (amount.compareTo(addEntrustAmount) < 0) {
-                    return HttpResult.error("物流已委托总量不可大于订单总量!");
-                }
-            }
-            BigDecimal addActualAmount = order.getActualAmount();
-            if (Objects.nonNull(param.getActualAmount())) {
-                addActualAmount = addActualAmount.add(param.getActualAmount());
-                if (amount.compareTo(addActualAmount) < 0) {
-                    return HttpResult.error("物流实际交付总量不可大于订单总量!");
-                }
+            BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ? entrustAmount : order.getEntrustAmount().add(entrustAmount);
+            BigDecimal totalActualAmount;
+            if (Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue())) {
+                totalActualAmount = Objects.isNull(order.getActualAmount()) ? actualLoadAmount : order.getActualAmount().add(actualLoadAmount);
+            } else {
+                totalActualAmount = Objects.isNull(order.getActualAmount()) ? actualUnloadAmount : order.getActualAmount().add(actualUnloadAmount);
             }
-            order.setEntrustAmount(addEntrustAmount).setActualAmount(addActualAmount).setUpdateBy(param.getUpdateBy());
-            //已履约量等于订单总量自动完结订单
-            if (amount.compareTo(addActualAmount) == 0) {
+            order.setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount).setUpdateBy(param.getUpdateBy());
+            if (param.getIsAllComplete() && totalActualAmount.compareTo(order.getAmount()) >= 0) {
                 order.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
                 KwoTradeOrderTrack track = new KwoTradeOrderTrack();
                 track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus())
@@ -143,9 +192,9 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setEntrustAmount(addEntrustAmount).setActualAmount(addActualAmount)
+            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount)
                     .setStatus(order.getStatus()).setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
-            saveMongoDb(3, updateParam);
+            saveMongoDb(updateParam);
         } finally {
             RedissonUtils.unlock(lockKey);
         }
@@ -155,54 +204,62 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void contractSignCompleted(ContractSignCompletedParam param) {
+        log.info("合同签约完成入参:{}", JSON.toJSONString(param));
         if (Objects.isNull(param.getUpdateBy()) || StringUtils.isBlank(param.getUpdateByName())) {
             throw new BusinessException("操作人信息不能为空!");
         }
         Long contractId = param.getContractId();
         Long updateBy = param.getUpdateBy();
-        List<KwoTradeOrderContract> contracts = kwoTradeOrderContractService.getByContractId(contractId);
-        if (CollectionUtils.isEmpty(contracts)) {
-            log.info("合同:{}无相关联待签约的贸易订单", contractId);
-            return;
+
+        String lockKey = String.format(RedisConstant.TORDER_CONTRACT_UPDATE_KEY, param.getContractId());
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
+            throw new BusinessException("业务繁忙,请稍后再试!");
         }
-        List<Long> tOrderIds = contracts.stream().map(KwoTradeOrderContract::getTOrderId).toList();
-        List<KwoTradeOrder> orders = kwoTradeOrderService.getWaitSignByIds(tOrderIds);
-        if (CollectionUtils.isEmpty(orders)) {
-            log.info("合同:{}无相关联待签约的贸易订单", contractId);
-            return;
+        try {
+            List<KwoTradeOrderContract> contracts = kwoTradeOrderContractService.getByContractId(contractId);
+            if (CollectionUtils.isEmpty(contracts)) {
+                log.info("合同:{}无相关联待签约的贸易订单", contractId);
+                return;
+            }
+            List<Long> tOrderIds = contracts.stream().map(KwoTradeOrderContract::getTOrderId).toList();
+            List<KwoTradeOrder> orders = kwoTradeOrderService.getWaitSignByIds(tOrderIds);
+            if (CollectionUtils.isEmpty(orders)) {
+                log.info("合同:{}无相关联待签约的贸易订单", contractId);
+                return;
+            }
+            List<KwoTradeOrderTrack> tracks = Lists.newArrayList();
+            List<SckwTradeOrder> tradeOrders = Lists.newArrayList();
+            List<Long> ids = orders.stream().map(KwoTradeOrder::getId).toList();
+
+            kwoTradeOrderService.contractCompletedUpdate(ids, updateBy);
+            orders.forEach(e -> {
+                KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+                track.setTOrderId(e.getId()).setTOrderNo(e.getTOrderNo()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
+                        .setCreateBy(updateBy).setUpdateBy(updateBy);
+                tracks.add(track);
+                SckwTradeOrder updateParam = new SckwTradeOrder();
+                updateParam.setTOrderId(e.getId()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
+                        .setUpdateBy(updateBy).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
+                tradeOrders.add(updateParam);
+            });
+            kwoTradeOrderTrackService.insertBatch(tracks);
+            tradeOrders.forEach(this::saveMongoDb);
+        } finally {
+            RedissonUtils.unlock(lockKey);
         }
-        List<KwoTradeOrderTrack> tracks = Lists.newArrayList();
-        List<SckwTradeOrder> tradeOrders = Lists.newArrayList();
-        List<Long> ids = orders.stream().map(KwoTradeOrder::getId).toList();
-        kwoTradeOrderService.contractCompletedUpdate(ids, updateBy);
-        orders.forEach(e -> {
-            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-            track.setTOrderId(e.getId()).setTOrderNo(e.getTOrderNo()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
-                    .setCreateBy(updateBy).setUpdateBy(updateBy);
-            tracks.add(track);
-            SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(e.getId()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
-                    .setUpdateBy(updateBy).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
-            tradeOrders.add(updateParam);
-        });
-        kwoTradeOrderTrackService.insertBatch(tracks);
-        tradeOrders.forEach(e -> {
-            saveMongoDb(3, e);
-        });
     }
 
     /**
      * @desc: mq保存mongodb
      * @author: yzc
      * @date: 2023-07-17 8:43
-     * @Param method:
      * @Param order:
      * @return: void
      */
-    private void saveMongoDb(Integer method, Object order) {
+    private void saveMongoDb(Object order) {
         SckwBusSum busSum = new SckwBusSum();
         busSum.setBusSumType("tradeOrder");
-        busSum.setMethod(method);
+        busSum.setMethod(3);
         busSum.setObject(order);
         streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
     }

+ 5 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoods.java

@@ -40,6 +40,11 @@ public class KwoTradeOrderGoods extends BaseModel implements Serializable {
      */
     private Long goodsId;
 
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
     /**
      * sku
      */

+ 0 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java

@@ -26,11 +26,6 @@ public class CompleteOrderParam {
     @DecimalMin(value = "0.00",message = "实际交付量最小为零")
     private BigDecimal actualAmount;
 
-    /**
-     * 已委托量
-     */
-    private BigDecimal entrustAmount;
-
     @Length(max = 200, message = "备注最多200字")
     private String remark;
 

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/WantBuySelectParam.java

@@ -45,7 +45,7 @@ public class WantBuySelectParam extends PageRequest {
     /**
      * 地区编码
      */
-    private String areaCode;
+    private String cityCode;
 
     /**
      * 地区级别

+ 38 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/AddressDropListRes.java

@@ -0,0 +1,38 @@
+package com.sckw.order.model.vo.res;
+
+import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @desc: 贸易订单地址下拉列表响应
+ * @author: yzc
+ * @date: 2023-08-02 14:49
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class AddressDropListRes implements Serializable {
+
+
+    @Serial
+    private static final long serialVersionUID = -1892537474089018495L;
+
+    /**
+     * 装货地址树
+     */
+    private List<AreaTreeFrontResDto> loadAddressList;
+
+    /**
+     * 卸货地址树
+     */
+    private List<AreaTreeFrontResDto> unloadAddressList;
+
+}

+ 10 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java

@@ -133,6 +133,16 @@ public class OrderDetailRes implements Serializable {
      */
     private String statusLabel;
 
+    /**
+     * 创建人id
+     */
+    private Long createBy;
+
+    /**
+     * 创建人姓名
+     */
+    private String createByName;
+
     /**
      * 商品信息
      */

+ 15 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderAddressService.java

@@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -76,4 +77,18 @@ public class KwoTradeOrderAddressService {
                 .set(KwoTradeOrderAddress::getDelFlag, Global.YES);
         kwoTradeOrderAddressMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据orderIds查询
+     * @author: yzc
+     * @date: 2023-08-02 18:11
+     * @Param tOrderIds:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrderAddress>
+     */
+    public List<KwoTradeOrderAddress> getByOrderIds(Collection<Long> tOrderIds) {
+        LambdaQueryWrapper<KwoTradeOrderAddress> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(KwoTradeOrderAddress::getTOrderId, tOrderIds).eq(KwoTradeOrderAddress::getDelFlag, Global.NO);
+        List<KwoTradeOrderAddress> list = kwoTradeOrderAddressMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
 }

+ 67 - 25
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -21,19 +21,20 @@ import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.model.*;
 import com.sckw.order.model.dto.OrderCheckDTO;
 import com.sckw.order.model.vo.req.*;
-import com.sckw.order.model.vo.res.AddressInfoDetailRes;
-import com.sckw.order.model.vo.res.GoodsInfoDetailRes;
-import com.sckw.order.model.vo.res.OrderDetailRes;
-import com.sckw.order.model.vo.res.UnitInfoDetailRes;
+import com.sckw.order.model.vo.res.*;
 import com.sckw.payment.api.dubbo.PayCenterDubboService;
 import com.sckw.payment.api.model.constant.ChannelEnum;
 import com.sckw.payment.api.model.dto.WalletDto;
 import com.sckw.payment.api.model.dto.common.R;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
+import com.sckw.redis.constant.RedisConstant;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -43,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @desc: 交易订单(采购订单/销售订单)service
@@ -365,8 +367,10 @@ public class KwoTradeOrderService {
         }
         //订单基本信息
         OrderDetailRes detail = BeanUtils.copyProperties(order, OrderDetailRes.class);
+        UserCacheResDto createUser = remoteSystemService.queryUserCacheById(detail.getCreateBy());
         EntCacheResDto ent = remoteSystemService.queryEntCacheById(detail.getEntId());
         detail.setFirmName(Objects.isNull(ent) ? null : ent.getFirmName())
+                .setCreateByName(Objects.isNull(createUser) ? null : createUser.getName())
                 .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), detail.getTrading()))
                 .setPickupTypeLabel(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), detail.getPickupType()))
                 .setDeliveryTypeLabel(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), detail.getDeliveryType()))
@@ -774,29 +778,37 @@ public class KwoTradeOrderService {
         if (kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), DictEnum.TORDER_UNIT_TYPE_2.getValue())) {
             throw new BusinessException("无订单操作权限!");
         }
-        order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
-        kwoTradeOrderMapper.updateById(order);
-        //订单状态记录
-        KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
-        kwoTradeOrderTrackService.insert(track);
-        if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
-            KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
-            if (Objects.isNull(goods)) {
-                throw new BusinessException("商品信息异常!");
-            }
-            //更新库存
-            BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
-            HttpResult updateResult = goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
-            if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
-                throw new BusinessException(updateResult.getMsg());
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, param.getId());
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
+            throw new BusinessException("业务繁忙,请稍后再试!");
+        }
+        try {
+            order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+            kwoTradeOrderMapper.updateById(order);
+            //订单状态记录
+            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+            track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
+            kwoTradeOrderTrackService.insert(track);
+            if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
+                KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
+                if (Objects.isNull(goods)) {
+                    throw new BusinessException("商品信息异常!");
+                }
+                //更新库存
+                BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
+                HttpResult updateResult = goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
+                if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
+                    throw new BusinessException(updateResult.getMsg());
+                }
             }
+            //mongodb更新订单状态
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
+                    .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+            saveMongoDb(3, updateParam);
+        } finally {
+            RedissonUtils.unlock(lockKey);
         }
-        //mongodb更新订单状态
-        SckwTradeOrder updateParam = new SckwTradeOrder();
-        updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
-                .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
-        saveMongoDb(3, updateParam);
 
     }
 
@@ -892,4 +904,34 @@ public class KwoTradeOrderService {
         kwoTradeOrderMapper.update(null, wrapper);
     }
 
+    /**
+     * @desc: 获取贸易订单地址下拉列表
+     * @author: yzc
+     * @date: 2023-08-02 17:28
+     * @return: com.sckw.order.model.vo.res.AddressDropListRes
+     */
+    public AddressDropListRes getAddressDropList() {
+        AddressDropListRes res = new AddressDropListRes();
+        Long entId = LoginUserHolder.getEntId();
+        //一级企业匹配筛选订单id
+        List<KwoTradeOrderUnit> unitInfo = kwoTradeOrderUnitService.getByTopEntId(entId);
+        if (CollectionUtils.isEmpty(unitInfo)) {
+            return res;
+        }
+        Set<Long> tOrderIds = unitInfo.stream().map(KwoTradeOrderUnit::getTOrderId).collect(Collectors.toSet());
+        //订单ids获取地址信息
+        List<KwoTradeOrderAddress> addressList = kwoTradeOrderAddressService.getByOrderIds(tOrderIds);
+        if (CollectionUtils.isEmpty(addressList)) {
+            return res;
+        }
+        //装卸货地址类型分组获取装卸货cityCodes
+        Map<String, List<Integer>> map = addressList.stream().collect(Collectors.
+                groupingBy(KwoTradeOrderAddress::getAddressType, Collectors.mapping(KwoTradeOrderAddress::getCityCode, Collectors.toList())));
+        //装货地址下拉列表树
+        List<AreaTreeFrontResDto> loadTree = remoteSystemService.queryAreaTreeFrontByCodeList(map.get(DictEnum.TORDER_ADDRESS_TYPE_1.getValue()));
+        //卸货地址下拉列表树
+        List<AreaTreeFrontResDto> unloadTree = remoteSystemService.queryAreaTreeFrontByCodeList(map.get(DictEnum.TORDER_ADDRESS_TYPE_2.getValue()));
+        res.setLoadAddressList(loadTree).setUnloadAddressList(unloadTree);
+        return res;
+    }
 }

+ 14 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderUnitService.java

@@ -112,4 +112,18 @@ public class KwoTradeOrderUnitService {
                 .set(KwoTradeOrderUnit::getDelFlag, Global.YES);
         kwoTradeOrderUnitMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据一级企业匹配
+     * @author: yzc
+     * @date: 2023-08-02 18:06
+     * @Param entId:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrderUnit>
+     */
+    public List<KwoTradeOrderUnit> getByTopEntId(Long entId) {
+        LambdaQueryWrapper<KwoTradeOrderUnit> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderUnit::getTopEntId, entId).eq(KwoTradeOrderUnit::getDelFlag, Global.NO);
+        List<KwoTradeOrderUnit> list = kwoTradeOrderUnitMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
 }

+ 1 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwpWantBuyService.java

@@ -122,7 +122,6 @@ public class KwpWantBuyService {
         }
         PageHelper.startPage(wantBuySelectParam.getPage(), wantBuySelectParam.getPageSize());
         List<WantBuySelectRes> wantBuyDto = kwpWantBuyMapper.pageSelect(wantBuySelectParam);
-        System.out.println(wantBuyDto);
         if (CollectionUtils.isEmpty(wantBuyDto)) {
             return new PageRes<>();
         }
@@ -316,7 +315,7 @@ public class KwpWantBuyService {
     **/
     @Transactional(rollbackFor = Exception.class)
     public void dels(WantBuyDels param) {
-        List<String> ids = List.of(param.getIds().split(","));
+        List<String> ids = List.of(param.getIds().split(Global.COMMA));
         LambdaUpdateWrapper<KwoWantBuy> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.in(KwoWantBuy::getId, ids).eq(KwoWantBuy::getDelFlag, Global.NO)
                 .set(KwoWantBuy::getDelFlag, Global.YES)

+ 2 - 2
sckw-modules/sckw-order/src/main/resources/mapper/KwoWantBuyMapper.xml

@@ -61,8 +61,8 @@
                 #{item}
             </foreach>
         </if>
-        <if test="wantBuyReq.areaCode != null and wantBuyReq.areaCode != ''">
-            and kba.city_code = #{wantBuyReq.areaCode}
+        <if test="wantBuyReq.cityCode != null and wantBuyReq.cityCode != ''">
+            and kba.city_code = #{wantBuyReq.cityCode}
         </if>
     </sql>
 

+ 50 - 23
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java

@@ -11,8 +11,10 @@ import com.sckw.payment.service.KwpLedgerLogisticsService;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import org.springframework.beans.BeanUtils;
 import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -23,6 +25,7 @@ import java.util.stream.Collectors;
  *
  * @author xucaiqin
  */
+@Validated
 @RestController
 @RequestMapping("/kwpLedgerLogistics")
 public class KwpLedgerLogisticsController {
@@ -32,7 +35,7 @@ public class KwpLedgerLogisticsController {
     /**
      * 物流对账单-发起对账(保存草稿)(承运方)
      *
-     * @param logisticsReq
+     * @param logisticsReq 保存物流对账单参数
      * @return
      */
     @PostMapping("sendDraft")
@@ -43,7 +46,7 @@ public class KwpLedgerLogisticsController {
     /**
      * 物流对账单-发起对账(承运方)
      *
-     * @param logisticsReq
+     * @param logisticsReq 保存物流对账单参数
      * @return
      */
     @PostMapping("send")
@@ -54,7 +57,7 @@ public class KwpLedgerLogisticsController {
     /**
      * 托运方物流对账单列表查询
      *
-     * @param logisticsReq
+     * @param logisticsReq 物流订单查询参数
      * @return
      */
     @PostMapping("shipperList")
@@ -62,10 +65,21 @@ public class KwpLedgerLogisticsController {
         return HttpResult.ok(kwpLedgerLogisticsService.shipperList(logisticsReq));
     }
 
+    /**
+     * 托运方对账单关联订单
+     *
+     * @param ledgerListReq 对账单id
+     * @return
+     */
+    @GetMapping("shipperOrderList")
+    public HttpResult shipperOrderList(@Valid LedgerListReq ledgerListReq) {
+        return HttpResult.ok(kwpLedgerLogisticsService.orderList(ledgerListReq));
+    }
+
     /**
      * 承运方物流对账单列表查询(物流公司、收钱方)
      *
-     * @param logisticsReq
+     * @param logisticsReq 物流订单查询参数
      * @return
      */
     @PostMapping("carrierList")
@@ -74,42 +88,54 @@ public class KwpLedgerLogisticsController {
     }
 
     /**
-     * 承运方-查询物流对账单详情
+     * 承运方对账单关联订单
      *
-     * @param id
+     * @param ledgerListReq 对账单id
      * @return
      */
+    @GetMapping("carrierOrderList")
+    public HttpResult carrierOrderList(@Valid LedgerListReq ledgerListReq) {
+        return HttpResult.ok(kwpLedgerLogisticsService.orderList(ledgerListReq));
+    }
+
+    /**
+     * 承运方-查询物流对账单详情
+     *
+     * @param id 物流对账单id
+     * @return 物流对账单详情
+     */
     @GetMapping("queryCarrierDetail")
-    public HttpResult queryCarrierDetail(@RequestParam("id") String id) {
+    public HttpResult queryCarrierDetail(@RequestParam("id") @NotBlank(message = "物流对账单id不能为空") String id) {
         return HttpResult.ok(kwpLedgerLogisticsService.queryDetail(Long.valueOf(id), LogisticsUnitType.SHIPPER));
     }
 
     /**
      * 托运方-查询物流对账单详情
      *
-     * @param id
-     * @return
+     * @param id 物流对账单id
+     * @return 物流对账单详情
      */
     @GetMapping("queryShipperDetail")
-    public HttpResult queryDetail(@RequestParam("id") String id) {
+    public HttpResult queryDetail(@RequestParam("id") @NotBlank(message = "物流对账单id不能为空") String id) {
         return HttpResult.ok(kwpLedgerLogisticsService.queryDetail(Long.valueOf(id), LogisticsUnitType.CARRIER));
     }
 
     /**
      * 修改物流对账单详情(修改物流对账单接口使用) 仅发起对账方支持修改
      *
-     * @param id
-     * @return
+     * @param id 物流对账单id
+     * @return 物流对账单详情
      */
     @GetMapping("queryUpdate")
-    public HttpResult queryUpdate(@RequestParam("id") String id) {
+    public HttpResult queryUpdate(@RequestParam("id") @NotBlank(message = "物流对账单id不能为空") String id) {
         return HttpResult.ok(kwpLedgerLogisticsService.queryUpdate(Long.valueOf(id)));
     }
 
     /**
      * 托运方
      *
-     * @return
+     * @param logisticsReq 物流订单查询参数
+     * @return 物流对账单统计数据
      */
     @PostMapping("shipperCount")
     public HttpResult shipperCount(@RequestBody @Valid LogisticsReq logisticsReq) {
@@ -119,7 +145,8 @@ public class KwpLedgerLogisticsController {
     /**
      * 承运方
      *
-     * @return
+     * @param logisticsReq 物流订单查询参数
+     * @return 物流对账单统计数据
      */
     @PostMapping("carrierCount")
     public HttpResult carrierCount(@RequestBody @Valid LogisticsReq logisticsReq) {
@@ -130,22 +157,22 @@ public class KwpLedgerLogisticsController {
      * 删除对账单
      * 释放关联的订单(只有删除操作才释放订单)
      *
-     * @param id
+     * @param id 物流对账单id
      * @return
      */
     @DeleteMapping("delete")
-    public HttpResult delete(@RequestParam("id") String id) {
+    public HttpResult delete(@RequestParam("id") @NotBlank(message = "物流对账单id不能为空") String id) {
         return HttpResult.ok(kwpLedgerLogisticsService.remove(Long.valueOf(id)));
     }
 
     /**
      * 物流对账单-撤回对账
      *
-     * @param id
+     * @param id 物流对账单id
      * @return
      */
     @PostMapping("back")
-    public HttpResult back(@RequestParam("id") String id) {
+    public HttpResult back(@RequestParam("id") @NotBlank(message = "物流对账单id不能为空") String id) {
         return HttpResult.ok(kwpLedgerLogisticsService.backOrder(Long.valueOf(id)));
     }
 
@@ -163,18 +190,18 @@ public class KwpLedgerLogisticsController {
     /**
      * 物流对账单-驳回查询
      *
-     * @param id
+     * @param id 物流对账单id
      * @return
      */
     @GetMapping("queryBack")
-    public HttpResult queryBack(@RequestParam("id") String id) {
+    public HttpResult queryBack(@RequestParam("id") @NotBlank(message = "物流对账单id不能为空") String id) {
         return HttpResult.ok(kwpLedgerLogisticsService.queryBack(Long.valueOf(id)));
     }
 
     /**
      * 物流对账单-驳回
      *
-     * @param ledgerReq
+     * @param ledgerReq 驳回参数
      * @return
      */
     @PostMapping("doBack")
@@ -188,7 +215,7 @@ public class KwpLedgerLogisticsController {
      * 生成结算单
      * </p>
      *
-     * @param ledgerReq
+     * @param ledgerReq 对账完成参数
      * @return
      */
     @PostMapping("success")

+ 23 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java

@@ -66,6 +66,17 @@ public class KwpLedgerTradeController {
         return HttpResult.ok(kwpLedgerTradeService.sellList(tradeReq));
     }
 
+    /**
+     * 销售方对账单关联订单
+     *
+     * @param ledgerListReq 对账单id
+     * @return
+     */
+    @GetMapping("sellOrderList")
+    public HttpResult sellOrderList(@Valid LedgerListReq ledgerListReq) {
+        return HttpResult.ok(kwpLedgerTradeService.orderList(ledgerListReq));
+    }
+
     /**
      * 贸易对账单列表查询 采购方
      *
@@ -77,10 +88,21 @@ public class KwpLedgerTradeController {
         return HttpResult.ok(kwpLedgerTradeService.purchaseList(tradeReq));
     }
 
+    /**
+     * 对账单关联订单
+     *
+     * @param ledgerListReq 对账单id
+     * @return
+     */
+    @GetMapping("purchaseOrderList")
+    public HttpResult purchaseOrderList(@Valid LedgerListReq ledgerListReq) {
+        return HttpResult.ok(kwpLedgerTradeService.orderList(ledgerListReq));
+    }
+
     /**
      * 销售-查询贸易对账单详情
      *
-     * @param id
+     * @param id 对账单id
      * @return
      */
     @GetMapping("querySellDetail")

+ 0 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpSettlementTradeController.java

@@ -85,10 +85,6 @@ public class KwpSettlementTradeController {
         return this.export(response, list);
     }
 
-    @GetMapping(name = "收款-销售结算订单详情", path = "detailCollection")
-    public HttpResult detailCollection(@RequestParam("id") Long id) {
-        return HttpResult.ok(kwpSettlementTradeService.detailCollection(id));
-    }
 
 
     //   ========= 付款 采购 =========

+ 17 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerListReq.java

@@ -0,0 +1,17 @@
+package com.sckw.payment.model.vo.req;
+
+import com.sckw.core.model.vo.BasePara;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author xucaiqin
+ * @date 2023-08-03 18:07:59
+ */
+@Getter
+@Setter
+public class LedgerListReq extends BasePara {
+    @NotBlank(message = "对账单id不能为空")
+    private String id;
+}

+ 32 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java

@@ -12,18 +12,33 @@ import java.util.Objects;
  * @date 2023-07-13 15:40:37
  */
 public abstract class AbsLedger {
+    /**
+     * 订单校验
+     *
+     * @param order 订单数据
+     */
     public void orderCheck(Object order) {
         if (Objects.isNull(order)) {
             throw new BusinessException("对账单不存在!");
         }
     }
 
+    /**
+     * 驳回查询校验
+     *
+     * @param status 订单状态
+     */
     public void backQueryCheck(Integer status) {
         if (Objects.nonNull(status) && LedgerEnum.BACK.getStatus() != status) {
             throw new BusinessException("只有【已退回】的单据才支持驳回查询!");
         }
     }
 
+    /**
+     * 更新对账单校验
+     *
+     * @param status 订单状态
+     */
     public void updateCheck(Integer status) {
         List<Integer> objects = Lists.newArrayList(LedgerEnum.SAVE.getStatus(), LedgerEnum.BACK.getStatus(), LedgerEnum.REVOCATION.getStatus());
         if (Objects.nonNull(status) && !objects.contains(status)) {
@@ -31,18 +46,33 @@ public abstract class AbsLedger {
         }
     }
 
+    /**
+     * 驳回对账单校验
+     *
+     * @param status 订单状态
+     */
     public void backCheck(Integer status) {
         if (Objects.nonNull(status) && LedgerEnum.TO_LEDGER.getStatus() != status) {
             throw new BusinessException("只有【待对账】的单据才支持对账驳回!");
         }
     }
 
+    /**
+     * 对账确认校验
+     *
+     * @param status 订单状态
+     */
     public void confirmCheck(Integer status) {
         if (Objects.nonNull(status) && LedgerEnum.TO_LEDGER.getStatus() != status) {
             throw new BusinessException("只有【待对账】的单据才支持对账确认!");
         }
     }
 
+    /**
+     * 对账删除校验
+     *
+     * @param status 订单状态
+     */
     public void deleteCheck(Integer status) {
         List<Integer> objects = Lists.newArrayList(LedgerEnum.BACK.getStatus(), LedgerEnum.REVOCATION.getStatus());
         if (Objects.nonNull(status) && !objects.contains(status)) {
@@ -53,7 +83,7 @@ public abstract class AbsLedger {
     /**
      * 撤回订单校验
      *
-     * @param status
+     * @param status 订单状态
      */
     public void revokeCheck(Integer status) {
         if (Objects.nonNull(status) && LedgerEnum.TO_LEDGER.getStatus() != status) {
@@ -64,7 +94,7 @@ public abstract class AbsLedger {
     /**
      * 完结订单校验
      *
-     * @param status
+     * @param status 订单状态
      */
     public void successCheck(Integer status) {
         if (Objects.nonNull(status) && LedgerEnum.LEDGERED.getStatus() != status) {

+ 17 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsOrderService.java

@@ -22,6 +22,11 @@ import java.util.List;
 public class KwpLedgerLogisticsOrderService {
     private final KwpLedgerLogisticsOrderMapper logisticsOrderMapper;
 
+    /**
+     * 根据物流订单id删除物流订单
+     *
+     * @param lLedgerId 物流订单id
+     */
     public void remove(Long lLedgerId) {
         KwpLedgerLogisticsOrder logisticsOrder = new KwpLedgerLogisticsOrder();
         logisticsOrder.setDelFlag(1);
@@ -32,12 +37,23 @@ public class KwpLedgerLogisticsOrderService {
         logisticsOrderMapper.update(logisticsOrder, wrapper);
     }
 
+    /**
+     * 保存物流订单
+     *
+     * @param list 物流对账单关联物流订单
+     */
     public void saveList(List<KwpLedgerLogisticsOrder> list) {
         for (KwpLedgerLogisticsOrder logisticsOrder : list) {
             logisticsOrderMapper.insert(logisticsOrder);
         }
     }
 
+    /**
+     * 根据id查询
+     *
+     * @param id
+     * @return
+     */
     public List<KwpLedgerLogisticsOrder> queryList(Long id) {
         List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = logisticsOrderMapper.selectList(new LambdaQueryWrapper<KwpLedgerLogisticsOrder>().eq(KwpLedgerLogisticsOrder::getLLedgerId, id).eq(KwpLedgerLogisticsOrder::getDelFlag, 0));
         if (CollectionUtils.isEmpty(kwpLedgerLogisticsOrders)) {
@@ -49,7 +65,7 @@ public class KwpLedgerLogisticsOrderService {
     /**
      * 校验当前物流订单是否已关联其它草稿单
      *
-     * @param ids
+     * @param ids 物流订单id列表
      */
     public void check(List<Long> ids) {
         List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = logisticsOrderMapper.selectList(new LambdaQueryWrapper<KwpLedgerLogisticsOrder>()

+ 118 - 61
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -2,8 +2,10 @@ package com.sckw.payment.service;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+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.constant.Global;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.utils.CollectionUtils;
@@ -16,7 +18,11 @@ import com.sckw.payment.model.*;
 import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LedgerTrackEnum;
 import com.sckw.payment.model.constant.LogisticsUnitType;
-import com.sckw.payment.model.dto.*;
+import com.sckw.payment.model.constant.SettlementEnum;
+import com.sckw.payment.model.dto.ILedger;
+import com.sckw.payment.model.dto.LedgerCarrierDto;
+import com.sckw.payment.model.dto.LedgerLogisticsDto;
+import com.sckw.payment.model.dto.LedgerShipperDto;
 import com.sckw.payment.model.vo.req.*;
 import com.sckw.payment.model.vo.res.LedgerLogisticsDetailVo;
 import com.sckw.system.api.RemoteSystemService;
@@ -29,7 +35,6 @@ import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -98,27 +103,27 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         logisticsReq.setUnitType(LogisticsUnitType.CARRIER);
         PageHelper.startPage(logisticsReq.getPage(), logisticsReq.getPageSize());
         List<LedgerShipperDto> kwpLedgerLogisticsList = logisticsMapper.shipperSelect(logisticsReq);
+        PageInfo<ILedger> ledgerShipperDtoPageInfo = new PageInfo<>(kwpLedgerLogisticsList);
         //字典转换
         if (!CollectionUtils.isEmpty(kwpLedgerLogisticsList)) {
-            List<ILedger> ledgerShipperDto = new ArrayList<>(kwpLedgerLogisticsList);
-            changeDict(ledgerShipperDto);
-            return new PageRes<>(new PageInfo<>(ledgerShipperDto));
+            changeDict(ledgerShipperDtoPageInfo.getList());
+            return new PageRes<>(ledgerShipperDtoPageInfo);
         }
-        return new PageRes<>(new PageInfo<>());
+        return new PageRes<>();
     }
 
     public PageRes<ILedger> carrierList(LogisticsReq logisticsReq) {
         fillPara(logisticsReq);
-        PageHelper.startPage(logisticsReq.getPage(), logisticsReq.getPageSize());
         logisticsReq.setUnitType(LogisticsUnitType.SHIPPER);
+        PageHelper.startPage(logisticsReq.getPage(), logisticsReq.getPageSize());
         List<LedgerCarrierDto> kwpLedgerLogisticsList = logisticsMapper.carrierSelect(logisticsReq);
+        PageInfo<ILedger> ledgerShipperDtoPageInfo = new PageInfo<>(kwpLedgerLogisticsList);
         //字典转换
         if (!CollectionUtils.isEmpty(kwpLedgerLogisticsList)) {
-            List<ILedger> ledgerShipperDto = new ArrayList<>(kwpLedgerLogisticsList);
-            changeDict(ledgerShipperDto);
-            return new PageRes<>(new PageInfo<>(ledgerShipperDto));
+            changeDict(ledgerShipperDtoPageInfo.getList());
+            return new PageRes<>(ledgerShipperDtoPageInfo);
         }
-        return new PageRes<>(new PageInfo<>(kwpLedgerLogisticsList));
+        return new PageRes<>();
     }
 
     /**
@@ -135,18 +140,23 @@ public class KwpLedgerLogisticsService extends AbsLedger {
             logisticsReq.setGenerateTime(LocalDateTime.now());
             logisticsReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(logisticsReq);
-            logisticsTrackService.saveTrack(aLong, "", LedgerTrackEnum.TO_LEDGER);
+            logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.TO_LEDGER);
         } else {
             removeDraft(Long.parseLong(id));
             logisticsReq.setGenerateTime(LocalDateTime.now());
             logisticsReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(logisticsReq);
-            logisticsTrackService.saveTrack(aLong, "", LedgerTrackEnum.TO_LEDGER);
+            logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.TO_LEDGER);
 
         }
         return "保存对账单成功";
     }
 
+    /**
+     * 删除物流对账单相关联的其它数据
+     *
+     * @param id 物流对账单id
+     */
     private void removeDraft(Long id) {
         //删除 kwp_ledger_logistics_order
         logisticsOrderService.remove(id);
@@ -156,6 +166,12 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         logisticsUnitService.remove(id);
     }
 
+    /**
+     * 物流对账单保存草稿
+     *
+     * @param logisticsSendReq 物流对账单新增参数
+     * @return
+     */
     private Long saveDraft(LogisticsSendReq logisticsSendReq) {
         KwpLedgerLogistics kwpLedgerLogistics = new KwpLedgerLogistics();
         kwpLedgerLogistics.setId(Objects.isNull(logisticsSendReq.getIdLong()) ? new IdWorker(1).nextId() : logisticsSendReq.getIdLong());
@@ -173,15 +189,16 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setExTaxPrice(logisticsSendReq.getTotalPrice());//todo-xcq 不含税金额计算方式:订单含税金额总和/1.13(税率)
         kwpLedgerLogistics.setSettlePrice(logisticsSendReq.getSettlePrice());
         kwpLedgerLogistics.setActualPrice(new BigDecimal("0.0"));
-        kwpLedgerLogistics.setAuditUser("");
-        kwpLedgerLogistics.setAuditPhone("");
+        kwpLedgerLogistics.setAuditUser(Global.EMPTY_STRING);
+        kwpLedgerLogistics.setAuditPhone(Global.EMPTY_STRING);
         kwpLedgerLogistics.setReceiptTime(null);
         kwpLedgerLogistics.setOrderCount(logisticsSendReq.getIdList().size());
-        kwpLedgerLogistics.setUrl("");
+        kwpLedgerLogistics.setUrl(Global.EMPTY_STRING);
         kwpLedgerLogistics.setGenerateTime(logisticsSendReq.getGenerateTime());
-        kwpLedgerLogistics.setRemark("");
+        kwpLedgerLogistics.setRemark(Global.EMPTY_STRING);
         kwpLedgerLogistics.setStatus(logisticsSendReq.getStatus());
-        kwpLedgerLogistics.setDelFlag(0);
+        kwpLedgerLogistics.setDelFlag(Global.UN_DELETED);
+        //id为空,新增对账单
         if (Objects.isNull(logisticsSendReq.getId())) {
             kwpLedgerLogistics.setCreateBy(LoginUserHolder.getUserId());
             kwpLedgerLogistics.setCreateTime(LocalDateTime.now());
@@ -190,16 +207,18 @@ public class KwpLedgerLogisticsService extends AbsLedger {
             kwpLedgerLogistics.setLLedgerNo(OrderGenerateUtils.generateOrderNo("LL"));
             logisticsMapper.insert(kwpLedgerLogistics);
         } else {
+            //校验是否可以修改对账单
             KwpLedgerLogistics ledgerLogistics = logisticsMapper.selectById(logisticsSendReq.getIdLong());
             orderCheck(ledgerLogistics);
             updateCheck(ledgerLogistics.getStatus());
+            //修改对账单
             kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
             kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
             logisticsMapper.updateById(kwpLedgerLogistics);
         }
         /*保存物流订单关联数据*/
         List<Long> ids = logisticsSendReq.getIdList();
-        //todo-xcq 校验当前订单是否已存在绑定的对账单
+        //验当前订单是否已存在绑定的对账单
         logisticsOrderService.check(ids);
         List<KwtLogisticsOrderVO> acceptCarriageOrderDetail = transportDubboService.getAcceptCarriageOrderDetail(logisticsSendReq.getIdsList());
         if (CollectionUtils.isEmpty(acceptCarriageOrderDetail) || acceptCarriageOrderDetail.size() < ids.size()) {
@@ -207,17 +226,17 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         }
         List<KwpLedgerLogisticsOrder> collect = acceptCarriageOrderDetail.stream().map(a -> {
             KwpLedgerLogisticsOrder logisticsOrder = new KwpLedgerLogisticsOrder();
-            logisticsOrder.setId(new IdWorker(1).nextId());
+            logisticsOrder.setId(new IdWorker(NumberConstant.ONE).nextId());
             logisticsOrder.setLLedgerId(kwpLedgerLogistics.getId());
             logisticsOrder.setLOrderId(a.getId());
             logisticsOrder.setLOrderNo(a.getLOrderNo());
-            logisticsOrder.setRemark("");
-            logisticsOrder.setStatus(0);
+            logisticsOrder.setRemark(Global.EMPTY_STRING);
+            logisticsOrder.setStatus(NumberConstant.ZERO);
             logisticsOrder.setCreateBy(LoginUserHolder.getUserId());
             logisticsOrder.setCreateTime(LocalDateTime.now());
             logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
             logisticsOrder.setUpdateTime(LocalDateTime.now());
-            logisticsOrder.setDelFlag(0);
+            logisticsOrder.setDelFlag(Global.UN_DELETED);
             return logisticsOrder;
         }).collect(Collectors.toList());
 
@@ -233,7 +252,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
 
         List<KwpLedgerLogisticsUnit> logisticsUnits = new ArrayList<>();
         KwpLedgerLogisticsUnit kwpLedgerLogisticsUnit = new KwpLedgerLogisticsUnit();
-        kwpLedgerLogisticsUnit.setId(new IdWorker(1).nextId());
+        kwpLedgerLogisticsUnit.setId(new IdWorker(NumberConstant.ONE).nextId());
         kwpLedgerLogisticsUnit.setLLedgerId(kwpLedgerLogistics.getId());
         kwpLedgerLogisticsUnit.setLLedgerNo(kwpLedgerLogistics.getLLedgerNo());
         kwpLedgerLogisticsUnit.setUnitType(LogisticsUnitType.SHIPPER);
@@ -242,13 +261,13 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogisticsUnit.setFirmName(entCacheResDto.getFirmName());
         kwpLedgerLogisticsUnit.setContacts(entCacheResDto.getContacts());
         kwpLedgerLogisticsUnit.setPhone(entCacheResDto.getPhone());
-        kwpLedgerLogisticsUnit.setRemark("");
-        kwpLedgerLogisticsUnit.setStatus(0);
+        kwpLedgerLogisticsUnit.setRemark(Global.EMPTY_STRING);
+        kwpLedgerLogisticsUnit.setStatus(NumberConstant.ZERO);
         kwpLedgerLogisticsUnit.setCreateBy(LoginUserHolder.getUserId());
         kwpLedgerLogisticsUnit.setCreateTime(LocalDateTime.now());
         kwpLedgerLogisticsUnit.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogisticsUnit.setUpdateTime(LocalDateTime.now());
-        kwpLedgerLogisticsUnit.setDelFlag(0);
+        kwpLedgerLogisticsUnit.setDelFlag(Global.UN_DELETED);
 
         logisticsUnits.add(kwpLedgerLogisticsUnit);
         Long entId = LoginUserHolder.getEntId();
@@ -258,7 +277,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
             entCacheResDto1 = new EntCacheResDto();
         }
         KwpLedgerLogisticsUnit carrierUnit = new KwpLedgerLogisticsUnit();
-        carrierUnit.setId(new IdWorker(1).nextId());
+        carrierUnit.setId(new IdWorker(NumberConstant.ONE).nextId());
         carrierUnit.setLLedgerId(kwpLedgerLogistics.getId());
         carrierUnit.setLLedgerNo(kwpLedgerLogistics.getLLedgerNo());
         carrierUnit.setUnitType(LogisticsUnitType.CARRIER);
@@ -267,13 +286,13 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         carrierUnit.setFirmName(entCacheResDto1.getFirmName());
         carrierUnit.setContacts(entCacheResDto1.getContacts());
         carrierUnit.setPhone(entCacheResDto1.getPhone());
-        carrierUnit.setRemark("");
-        carrierUnit.setStatus(0);
+        carrierUnit.setRemark(Global.EMPTY_STRING);
+        carrierUnit.setStatus(NumberConstant.ZERO);
         carrierUnit.setCreateBy(LoginUserHolder.getUserId());
         carrierUnit.setCreateTime(LocalDateTime.now());
         carrierUnit.setUpdateBy(LoginUserHolder.getUserId());
         carrierUnit.setUpdateTime(LocalDateTime.now());
-        carrierUnit.setDelFlag(0);
+        carrierUnit.setDelFlag(Global.UN_DELETED);
 
         logisticsUnits.add(carrierUnit);
         logisticsUnitService.saveList(logisticsUnits);
@@ -283,7 +302,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
     /**
      * 保存物流对账单草稿
      *
-     * @param logisticsReq
+     * @param logisticsReq 物流对账单保存的参数
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
@@ -291,7 +310,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         logisticsReq.setGenerateTime(null);
         logisticsReq.setStatus(LedgerEnum.SAVE.getStatus());
         Long aLong = saveDraft(logisticsReq);
-        logisticsTrackService.saveTrack(aLong, "", LedgerTrackEnum.SAVE);
+        logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.SAVE);
         return "草稿保存成功";
     }
 
@@ -301,15 +320,16 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      * @param id 物流对账单id
      * @return
      */
-    public Integer remove(Long id) {
+    public String remove(Long id) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(id);
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
         deleteCheck(kwpLedgerLogistics.getStatus());
-        kwpLedgerLogistics.setDelFlag(1);
+        kwpLedgerLogistics.setDelFlag(Global.DELETED);
         logisticsMapper.updateById(kwpLedgerLogistics);
-        return logisticsTrackService.saveTrack(id, "", LedgerTrackEnum.DELETE);
+        logisticsTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerTrackEnum.DELETE);
+        return "删除成功";
     }
 
     /**
@@ -318,7 +338,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      * @param id 物流对账单id
      * @return
      */
-    public Integer backOrder(Long id) {
+    public String backOrder(Long id) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(id);
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
@@ -329,7 +349,8 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         logisticsMapper.updateById(kwpLedgerLogistics);
-        return logisticsTrackService.saveTrack(id, "", LedgerTrackEnum.REVOKE);
+        logisticsTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerTrackEnum.REVOKE);
+        return "撤回成功";
     }
 
     /**
@@ -338,11 +359,11 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      * @param id 物流对账单id
      * @return 物流对账单驳回记录
      */
-    public List<KwpLedgerLogisticsTrack> queryBack(Long id) {
+    public KwpLedgerLogisticsTrack queryBack(Long id) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(id);
         orderCheck(kwpLedgerLogistics);
         backQueryCheck(kwpLedgerLogistics.getStatus());
-        return logisticsTrackService.selectList(id, LedgerTrackEnum.REJECT);
+        return logisticsTrackService.selectOne(id, LedgerTrackEnum.REJECT);
     }
 
     /**
@@ -351,7 +372,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      * @param ledgerReq 驳回参数
      * @return
      */
-    public Integer doBack(LedgerReq ledgerReq) {
+    public String doBack(LedgerReq ledgerReq) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(ledgerReq.getIdLong());
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
@@ -361,18 +382,19 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         logisticsMapper.updateById(kwpLedgerLogistics);
-        return logisticsTrackService.saveTrack(ledgerReq.getIdLong(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
+        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
+        return "驳回成功";
     }
 
     /**
      * 对账确认
      * 订单变更为已对账
      *
-     * @param confirmReq
+     * @param confirmReq 对账确认请求参数
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public Integer confirmOrder(LedgerConfirmReq confirmReq) {
+    public String confirmOrder(LedgerConfirmReq confirmReq) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(confirmReq.getIdLong());
         orderCheck(kwpLedgerLogistics);
         confirmCheck(kwpLedgerLogistics.getStatus());
@@ -383,13 +405,14 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         logisticsMapper.updateById(kwpLedgerLogistics);
-        return logisticsTrackService.saveTrack(confirmReq.getIdLong(), "", LedgerTrackEnum.CONFIRM);
+        logisticsTrackService.saveTrack(confirmReq.getIdLong(), Global.EMPTY_STRING, LedgerTrackEnum.CONFIRM);
+        return "对账确认成功";
     }
 
     /**
      * 对账完成
      *
-     * @param ledgerReq
+     * @param ledgerReq 对账完成参数
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
@@ -398,7 +421,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         orderCheck(kwpLedgerLogistics);
 
         successCheck(kwpLedgerLogistics.getStatus());
-
+        //更新对账单状态
         kwpLedgerLogistics.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
         kwpLedgerLogistics.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
@@ -406,40 +429,43 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         logisticsMapper.updateById(kwpLedgerLogistics);
         //生成结算单
         KwpSettlementLogistics kwpSettlementLogistics = new KwpSettlementLogistics();
-        kwpSettlementLogistics.setId(new IdWorker(1).nextId());
+        kwpSettlementLogistics.setId(new IdWorker(NumberConstant.ONE).nextId());
         kwpSettlementLogistics.setEntId(LoginUserHolder.getEntId());
         kwpSettlementLogistics.setLLedgerId(kwpLedgerLogistics.getId());
         kwpSettlementLogistics.setSlOrderNo(OrderGenerateUtils.generateOrderNo("SL"));
         kwpSettlementLogistics.setName(kwpLedgerLogistics.getName());//取物流对账单名称
         kwpSettlementLogistics.setTotalPrice(kwpLedgerLogistics.getTotalPrice());
         kwpSettlementLogistics.setActualPrice(kwpLedgerLogistics.getActualPrice());
-        kwpSettlementLogistics.setRemark("");
+        kwpSettlementLogistics.setRemark(Global.EMPTY_STRING);
         kwpSettlementLogistics.setAuditUser(kwpLedgerLogistics.getAuditUser());
         kwpSettlementLogistics.setAuditPhone(kwpLedgerLogistics.getAuditPhone());
         kwpSettlementLogistics.setSuccessUser(ledgerReq.getSuccessUser());
         kwpSettlementLogistics.setSuccessPhone(ledgerReq.getSuccessPhone());
         kwpSettlementLogistics.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
-        kwpSettlementLogistics.setStatus(1);//1-待结算
+        kwpSettlementLogistics.setStatus(SettlementEnum.WAITING_PAYMENT.getStatus());//1-待结算
         kwpSettlementLogistics.setCreateBy(LoginUserHolder.getUserId());
         kwpSettlementLogistics.setCreateTime(LocalDateTime.now());
         kwpSettlementLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpSettlementLogistics.setUpdateTime(LocalDateTime.now());
-        kwpSettlementLogistics.setDelFlag(0);
+        kwpSettlementLogistics.setDelFlag(Global.UN_DELETED);
 
         settlementLogisticsService.save(kwpSettlementLogistics);
 
-        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), "", LedgerTrackEnum.SUCCESS);
+        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), Global.EMPTY_STRING, LedgerTrackEnum.SUCCESS);
         return "对账完成";
     }
 
     /**
+     * 按类型统计表头的数据
+     *
      * @param unitType 1-托运方 2-承运方
-     * @return
+     * @return 统计数据
      */
     public List<TableTop> orderCount(LogisticsReq logisticsReq, Integer unitType) {
         logisticsReq.setEntId(LoginUserHolder.getEntId());
         Map<String, Long> map = logisticsMapper.countOrder(logisticsReq, unitType);
         TableTop ledgerCountVo;
+        /*统计数据转换*/
         List<TableTop> res = new ArrayList<>();
         for (LedgerEnum value : LedgerEnum.values()) {
             ledgerCountVo = new TableTop();
@@ -452,10 +478,10 @@ public class KwpLedgerLogisticsService extends AbsLedger {
     }
 
     /**
-     * 托运方
+     * 托运方 查询物流对账单
      *
-     * @param ids
-     * @return
+     * @param ids 对账单id列表
+     * @return 物流对账单列表
      */
     public List<ILedger> selectShipperList(List<Long> ids) {
         List<LedgerShipperDto> ledgerLogisticsDto = logisticsMapper.selectShipperIds(ids);
@@ -465,10 +491,10 @@ public class KwpLedgerLogisticsService extends AbsLedger {
     }
 
     /**
-     * 承运方
+     * 承运方 查询物流对账单
      *
-     * @param ids
-     * @return
+     * @param ids 对账单id列表
+     * @return 物流对账单列表
      */
     public List<ILedger> selectCarrierList(List<Long> ids) {
         List<LedgerCarrierDto> ledgerLogisticsDto = logisticsMapper.selectCarrierIds(ids);
@@ -477,6 +503,12 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         return ledgerLogistics;
     }
 
+    /**
+     * 根据物流订单id查询对账单详情
+     *
+     * @param id 物流对账单id
+     * @return
+     */
     public LedgerLogisticsDetailVo queryUpdate(Long id) {
         LedgerLogisticsDto ledgerLogisticsDto = logisticsMapper.selectId(id, LogisticsUnitType.SHIPPER);
         orderCheck(ledgerLogisticsDto);
@@ -484,14 +516,27 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         return getLedgerLogisticsDetailVo(ledgerLogisticsDto);
     }
 
+    /**
+     * 查询物流对账单详情
+     *
+     * @param id       物流对账单id
+     * @param unitType 企业单位类型
+     * @return
+     */
     public LedgerLogisticsDetailVo queryDetail(Long id, Integer unitType) {
         LedgerLogisticsDto ledgerLogisticsDto = logisticsMapper.selectId(id, unitType);
         orderCheck(ledgerLogisticsDto);
         return getLedgerLogisticsDetailVo(ledgerLogisticsDto);
     }
 
-    @NotNull
+    /**
+     * 转换物流对账单详情数据
+     *
+     * @param ledgerLogisticsDto
+     * @return
+     */
     private LedgerLogisticsDetailVo getLedgerLogisticsDetailVo(LedgerLogisticsDto ledgerLogisticsDto) {
+        /*获取物流对账单关联的物流订单*/
         List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = logisticsOrderService.queryList(ledgerLogisticsDto.getId());
         LedgerLogisticsDetailVo ledgerLogisticsDetailVo = new LedgerLogisticsDetailVo();
         ledgerLogisticsDetailVo.setId(ledgerLogisticsDto.getId());
@@ -505,9 +550,21 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         ledgerLogisticsDetailVo.setStartTime(ledgerLogisticsDto.getStartTime());
         ledgerLogisticsDetailVo.setEndTime(ledgerLogisticsDto.getEndTime());
         ledgerLogisticsDetailVo.setRemark(ledgerLogisticsDto.getRemark());
-
+        /*查询物流订单详情*/
         List<LogisticsOrderVO> acceptCarriageOrderList = transportDubboService.getAcceptCarriageOrderList(kwpLedgerLogisticsOrders.stream().map(a -> Long.toString(a.getLOrderId())).collect(Collectors.toList()));
         ledgerLogisticsDetailVo.setOrderList(acceptCarriageOrderList);
         return ledgerLogisticsDetailVo;
     }
+
+    public PageRes<LogisticsOrderVO> orderList(LedgerListReq ledgerListReq) {
+        PageHelper.startPage(ledgerListReq.getPage(), ledgerListReq.getPageSize());
+        List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = logisticsOrderService.queryList(ledgerListReq.getIdLong());
+        if (CollectionUtils.isEmpty(kwpLedgerLogisticsOrders)) {
+            return new PageRes<>();
+        }
+        PageInfo<KwpLedgerLogisticsOrder> pageInfo = new PageInfo<>(kwpLedgerLogisticsOrders);
+        List<LogisticsOrderVO> acceptCarriageOrderList = transportDubboService.getAcceptCarriageOrderList(kwpLedgerLogisticsOrders.stream().map(a -> String.valueOf(a.getLOrderId())).toList());
+        return PageRes.build(pageInfo, acceptCarriageOrderList);
+    }
+
 }

+ 16 - 10
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java

@@ -1,6 +1,8 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpLedgerLogisticsTrackMapper;
 import com.sckw.payment.model.KwpLedgerLogisticsTrack;
@@ -10,7 +12,6 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
-import java.util.List;
 import java.util.Objects;
 
 /**
@@ -29,13 +30,13 @@ public class KwpLedgerLogisticsTrackService {
      * @param remark      备注
      * @param status      状态值
      */
-    public Integer saveTrack(Long l_ledger_id, String remark, LedgerTrackEnum status) {
+    public void saveTrack(Long l_ledger_id, String remark, LedgerTrackEnum status) {
         KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = new KwpLedgerLogisticsTrack();
-        kwpLedgerLogisticsTrack.setId(new IdWorker(1).nextId());
+        kwpLedgerLogisticsTrack.setId(new IdWorker(NumberConstant.ONE).nextId());
         kwpLedgerLogisticsTrack.setLLedgerId(l_ledger_id);
         kwpLedgerLogisticsTrack.setRemark(remark);
         kwpLedgerLogisticsTrack.setStatus(status.getStatus());
-        return logisticsTrackMapper.insert(kwpLedgerLogisticsTrack);
+        logisticsTrackMapper.insert(kwpLedgerLogisticsTrack);
     }
 
     /**
@@ -45,22 +46,27 @@ public class KwpLedgerLogisticsTrackService {
      * @param status 流程状态
      * @return
      */
-    public List<KwpLedgerLogisticsTrack> selectList(@NotNull Long id, LedgerTrackEnum status) {
+    public KwpLedgerLogisticsTrack selectOne(@NotNull Long id, LedgerTrackEnum status) {
         LambdaQueryWrapper<KwpLedgerLogisticsTrack> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(KwpLedgerLogisticsTrack::getLLedgerId, id);
         wrapper.eq(Objects.nonNull(status), KwpLedgerLogisticsTrack::getStatus, status.getStatus());
-        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, 0);
-        return logisticsTrackMapper.selectList(wrapper);
+        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, Global.UN_DELETED);
+        wrapper.orderByDesc(KwpLedgerLogisticsTrack::getCreateTime);
+        wrapper.last("limit 1");
+        return logisticsTrackMapper.selectOne(wrapper);
     }
 
-
+    /**
+     * 删除物流对账记录表
+     * @param lLedgerId 物流对账单id
+     */
     public void remove(Long lLedgerId) {
         LambdaQueryWrapper<KwpLedgerLogisticsTrack> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(KwpLedgerLogisticsTrack::getLLedgerId, lLedgerId);
-        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, 0);
+        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, Global.UN_DELETED);
         KwpLedgerLogisticsTrack logisticsTrack = new KwpLedgerLogisticsTrack();
         logisticsTrack.setUpdateTime(LocalDateTime.now());
-        logisticsTrack.setDelFlag(1);
+        logisticsTrack.setDelFlag(Global.DELETED);
         logisticsTrackMapper.update(logisticsTrack, wrapper);
     }
 }

+ 13 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsUnitService.java

@@ -1,9 +1,9 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.core.model.constant.Global;
 import com.sckw.payment.dao.KwpLedgerLogisticsUnitMapper;
 import com.sckw.payment.model.KwpLedgerLogisticsUnit;
-import com.sckw.payment.model.KwpLedgerTradeUnit;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -20,6 +20,11 @@ import java.util.List;
 public class KwpLedgerLogisticsUnitService {
     private final KwpLedgerLogisticsUnitMapper logisticsUnitMapper;
 
+    /**
+     * 批量保存对账单关联企业信息
+     *
+     * @param logisticsUnits 企业信息
+     */
     public void saveList(List<KwpLedgerLogisticsUnit> logisticsUnits) {
         if (!CollectionUtils.isEmpty(logisticsUnits)) {
             for (KwpLedgerLogisticsUnit logisticsUnit : logisticsUnits) {
@@ -28,13 +33,18 @@ public class KwpLedgerLogisticsUnitService {
         }
     }
 
+    /**
+     * 删除对账单关联的企业信息
+     *
+     * @param lLedgerId
+     */
     public void remove(Long lLedgerId) {
         KwpLedgerLogisticsUnit logisticsUnit = new KwpLedgerLogisticsUnit();
-        logisticsUnit.setDelFlag(1);
+        logisticsUnit.setDelFlag(Global.DELETED);
         logisticsUnit.setUpdateTime(LocalDateTime.now());
         LambdaUpdateWrapper<KwpLedgerLogisticsUnit> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(KwpLedgerLogisticsUnit::getLLedgerId, lLedgerId);
-        wrapper.eq(KwpLedgerLogisticsUnit::getDelFlag, 0);
+        wrapper.eq(KwpLedgerLogisticsUnit::getDelFlag, Global.UN_DELETED);
         logisticsUnitMapper.update(logisticsUnit, wrapper);
     }
 }

+ 25 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeOrderService.java

@@ -3,6 +3,7 @@ package com.sckw.payment.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.payment.dao.KwpLedgerTradeOrderMapper;
 import com.sckw.payment.model.KwpLedgerTradeOrder;
@@ -22,16 +23,26 @@ import java.util.List;
 public class KwpLedgerTradeOrderService {
     private final KwpLedgerTradeOrderMapper tradeOrderMapper;
 
+    /**
+     * 删除贸易结算单关联的贸易订单
+     *
+     * @param tLedgerId 结算单id
+     */
     public void remove(Long tLedgerId) {
         KwpLedgerTradeOrder kwpLedgerTradeOrder = new KwpLedgerTradeOrder();
-        kwpLedgerTradeOrder.setDelFlag(1);
+        kwpLedgerTradeOrder.setDelFlag(Global.DELETED);
         kwpLedgerTradeOrder.setUpdateTime(LocalDateTime.now());
         LambdaUpdateWrapper<KwpLedgerTradeOrder> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(KwpLedgerTradeOrder::getTLedgerId, tLedgerId);
-        wrapper.eq(KwpLedgerTradeOrder::getDelFlag, 0);
+        wrapper.eq(KwpLedgerTradeOrder::getDelFlag, Global.UN_DELETED);
         tradeOrderMapper.update(kwpLedgerTradeOrder, wrapper);
     }
 
+    /**
+     * 批量保存贸易结算单关联的贸易订单
+     *
+     * @param list 订单关联数据
+     */
     public void saveList(List<KwpLedgerTradeOrder> list) {
         if (!CollectionUtils.isEmpty(list)) {
             for (KwpLedgerTradeOrder kwpLedgerTradeOrder : list) {
@@ -40,6 +51,12 @@ public class KwpLedgerTradeOrderService {
         }
     }
 
+    /**
+     * 查询关联的订单数据
+     *
+     * @param id 对账单id
+     * @return
+     */
     public List<KwpLedgerTradeOrder> queryList(Long id) {
         List<KwpLedgerTradeOrder> kwpLedgerLogisticsOrders = tradeOrderMapper.selectList(new LambdaQueryWrapper<KwpLedgerTradeOrder>().eq(KwpLedgerTradeOrder::getTLedgerId, id).eq(KwpLedgerTradeOrder::getDelFlag, 0));
 
@@ -49,10 +66,15 @@ public class KwpLedgerTradeOrderService {
         return kwpLedgerLogisticsOrders;
     }
 
+    /**
+     * 校验订单是否绑定其它订单
+     *
+     * @param ids
+     */
     public void check(List<Long> ids) {
         List<KwpLedgerTradeOrder> kwpLedgerLogisticsOrders = tradeOrderMapper.selectList(new LambdaQueryWrapper<KwpLedgerTradeOrder>()
                 .in(KwpLedgerTradeOrder::getTOrderId, ids)
-                .eq(KwpLedgerTradeOrder::getDelFlag, 0)
+                .eq(KwpLedgerTradeOrder::getDelFlag, Global.UN_DELETED)
                 .select(KwpLedgerTradeOrder::getTLedgerId, KwpLedgerTradeOrder::getTOrderId, KwpLedgerTradeOrder::getTOrderNo));
         if (CollectionUtils.isNotEmpty(kwpLedgerLogisticsOrders)) {
             for (KwpLedgerTradeOrder kwpLedgerTradeOrder : kwpLedgerLogisticsOrders) {

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff