Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

zk 2 лет назад
Родитель
Сommit
2b5d2984b7
76 измененных файлов с 2070 добавлено и 1439 удалено
  1. 83 3
      pom.xml
  2. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/SigningWayEnum.java
  3. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translates.java
  4. 13 5
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java
  5. 0 154
      sckw-common/sckw-common-excel/src/main/resources/log4j2.xml
  6. 2 2
      sckw-gateway/src/main/resources/bootstrap-dev.yml
  7. 10 0
      sckw-modules-api/sckw-modules-bom/pom.xml
  8. 3 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/AddressInfoDetail.java
  9. 3 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/ContractInfo.java
  10. 2 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/GoodsInfoDetailRes.java
  11. 2 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java
  12. 3 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java
  13. 2 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UpdateOrderAmountParam.java
  14. 24 1
      sckw-modules/sckw-contract/pom.xml
  15. 65 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractTradeController.java
  16. 13 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractTradeMapper.java
  17. 2 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTrade.java
  18. 2 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractLogisticsReqVo.java
  19. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  20. 222 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  21. 1 1
      sckw-modules/sckw-contract/src/main/resources/log4j2.xml
  22. 0 199
      sckw-modules/sckw-contract/src/main/resources/logback-spring.xml
  23. 27 0
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml
  24. 1 1
      sckw-modules/sckw-fleet/src/main/resources/log4j2.xml
  25. 1 1
      sckw-modules/sckw-manage/src/main/resources/log4j2.xml
  26. 1 1
      sckw-modules/sckw-operation/src/main/resources/log4j2.xml
  27. 32 1
      sckw-modules/sckw-payment/pom.xml
  28. 15 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java
  29. 25 9
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java
  30. 8 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerLogisticsMapper.java
  31. 6 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerTradeMapper.java
  32. 23 26
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerLogistics.java
  33. 25 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerTrade.java
  34. 34 6
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpSettlementTrade.java
  35. 15 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerEnum.java
  36. 16 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LogisticsUnitType.java
  37. 21 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCountDto.java
  38. 28 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCountVo.java
  39. 29 43
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerLogisticsDto.java
  40. 29 56
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java
  41. 6 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerSuccessReq.java
  42. 7 9
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsSendReq.java
  43. 6 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeReq.java
  44. 1 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeSendReq.java
  45. 67 99
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsVo.java
  46. 64 92
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeVo.java
  47. 18 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java
  48. 25 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsOrderService.java
  49. 212 68
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  50. 10 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java
  51. 30 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsUnitService.java
  52. 10 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeOrderService.java
  53. 141 19
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  54. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java
  55. 1 1
      sckw-modules/sckw-payment/src/main/resources/log4j2.xml
  56. 0 199
      sckw-modules/sckw-payment/src/main/resources/logback-spring.xml
  57. 138 94
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml
  58. 152 78
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml
  59. 8 2
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml
  60. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java
  61. 4 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  62. 2 2
      sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml
  63. 1 1
      sckw-modules/sckw-report/src/main/resources/log4j2.xml
  64. 16 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  65. 3 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java
  66. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java
  67. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderCirculateMapper.java
  68. 9 16
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderCirculate.java
  69. 86 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java
  70. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderVO.java
  71. 62 14
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  72. 129 14
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/DriverService.java
  73. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  74. 3 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  75. 40 184
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderCirculateMapper.xml
  76. 2 1
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 83 - 3
pom.xml

@@ -37,7 +37,7 @@
         <springdoc.version>2.1.0</springdoc.version>
         <redisson.version>3.21.3</redisson.version>
         <fastjson.version>2.0.32</fastjson.version>
-        <easyexcel.version>3.0.5</easyexcel.version>
+        <easyexcel.version>3.3.2</easyexcel.version>
         <cglib.version>3.3.0</cglib.version>
         <commons-io.version>2.11.0</commons-io.version>
         <alicloud-sms.version>2.2.0.RELEASE</alicloud-sms.version>
@@ -53,6 +53,13 @@
         <junit.version>4.13.2</junit.version>
         <xxljob.version>2.4.0</xxljob.version>
         <project.version>1.0.0</project.version>
+        <!--maven插件版本声明-->
+        <maven-clean-plugin.version>3.2.0</maven-clean-plugin.version>
+        <maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
+        <maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
+        <maven-resources-plugin.version>3.3.0</maven-resources-plugin.version>
+        <maven-install-plugin.version>3.0.1</maven-install-plugin.version>
+        <maven-deploy-plugin.version>3.0.0</maven-deploy-plugin.version>
     </properties>
 
     <dependencyManagement>
@@ -109,7 +116,6 @@
             </dependency>
 
 
-
             <!-- apache dubbo -->
             <dependency>
                 <groupId>org.apache.dubbo</groupId>
@@ -334,17 +340,91 @@
     <build>
         <pluginManagement>
             <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>${maven-clean-plugin.version}</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>${maven-compiler-plugin.version}</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>${maven-deploy-plugin.version}</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>${maven-install-plugin.version}</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>${maven-jar-plugin.version}</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>${maven-resources-plugin.version}</version>
+                    <configuration>
+                        <propertiesEncoding>${project.build.sourceEncoding}</propertiesEncoding>
+                        <delimiters>
+                            <delimiter>@</delimiter>
+                        </delimiters>
+                        <useDefaultDelimiters>false</useDefaultDelimiters>
+                    </configuration>
+                </plugin>
                 <plugin>
                     <groupId>org.springframework.boot</groupId>
                     <artifactId>spring-boot-maven-plugin</artifactId>
-                    <version>3.1.0</version>
+                    <version>${spring-boot.version}</version>
                 </plugin>
             </plugins>
         </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-clean-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-install-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>17</source>
+                    <target>17</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
+                <!-- 关闭过滤 -->
+                <filtering>false</filtering>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
                 <filtering>true</filtering>
+                <!--资源-->
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.yml</include>
+                </includes>
             </resource>
         </resources>
     </build>

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/SigningWayEnum.java

@@ -11,9 +11,9 @@ import lombok.Getter;
 public enum SigningWayEnum {
 
     //线上签约
-    ONLINE(1, "线上签约"),
+    ONLINE(1, "1"),
     //线下签约
-    OFFLINE(2, "线下签约");
+    OFFLINE(2, "2");
 
     private final int code;
 

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

@@ -7,7 +7,7 @@ import java.lang.annotation.*;
  * 组合注解
  * 用于指定翻译多个字段
  *
- * @author liyue
+ * @author lfdc
  * @version v1
  * @create 2020-11-28 15:37:35
  * @copyright

+ 13 - 5
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java

@@ -10,10 +10,7 @@ import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.annotation.ExcelContext;
 import com.sckw.excel.annotation.ExcelSelected;
-import com.sckw.excel.config.easyexcel.ExcelSelectedResolve;
-import com.sckw.excel.config.easyexcel.LocalDateTimeConverter;
-import com.sckw.excel.config.easyexcel.RowWriteHandlerImpl;
-import com.sckw.excel.config.easyexcel.SelectedSheetWriteHandler;
+import com.sckw.excel.config.easyexcel.*;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.Assert;
@@ -30,7 +27,6 @@ import java.util.List;
 import java.util.Map;
 
 
-
 /**
  * 封装easyexcel
  *
@@ -42,6 +38,18 @@ import java.util.Map;
 @Slf4j
 public class ExcelUtil {
 
+    public static <T> void downData(HttpServletResponse response, Class<T> clazz, List<T> data) {
+        Assert.notNull(clazz, "clazz can't be null");
+        Assert.isTrue(data != null && !data.isEmpty(), "data can't be empty");
+        try {
+            ExcelContext excelContext = clazz.getAnnotation(ExcelContext.class);
+            buildResponse(response, excelContext.fileName());
+            EasyExcel.write(response.getOutputStream(), clazz).autoCloseStream(Boolean.FALSE).sheet(excelContext.sheetName()).doWrite(data);
+        } catch (Exception e) {
+            buildResponse(response, e);
+        }
+    }
+
     public static <T> void download(HttpServletResponse response, Class<T> clazz, List<T> data) {
 //        StaticComponentContainer.Modules.exportAllToAll();
         Assert.notNull(clazz, "clazz can't be null");

+ 0 - 154
sckw-common/sckw-common-excel/src/main/resources/log4j2.xml

@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration status="info" monitorInterval="30">
-    <properties>
-        <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符 -->
-        <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
-        <property name="LOG_PATTERN"
-                  value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
-        <property name="LOG_WITHOUT_COLOR_PATTERN"
-                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-gateway"/>
-    </properties>
-    <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
-    <!-- 先定义所有的appender(附加器)-->
-    <appenders>
-        <!-- 输出控制台的配置 -->
-        <Console name="Console" target="SYSTEM_OUT">
-            <!-- 输出日志的格式 -->
-            <PatternLayout pattern="${LOG_PATTERN}"/>
-        </Console>
-
-        <!--all级别日志-->
-        <RollingFile name="allFileAppender"
-                     fileName="${LOG_PATH}/all.log"
-                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log.gz">
-            <PatternLayout pattern="${LOG_WITHOUT_COLOR_PATTERN}"/>
-
-            <Policies>
-                <!-- 设置日志文件切分参数 -->
-                <!--<OnStartupTriggeringPolicy/>-->
-                <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新-->
-                <SizeBasedTriggeringPolicy size="100 MB"/>
-                <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置-->
-                <TimeBasedTriggeringPolicy/>
-            </Policies>
-            <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i-->
-            <DefaultRolloverStrategy max="100"/>
-        </RollingFile>
-
-        <!--debug级别日志-->
-        <RollingFile name="debugFileAppender"
-                     fileName="${LOG_PATH}/debug.log"
-                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">
-            <Filters>
-                <!--过滤掉info及更高级别日志-->
-                <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
-            </Filters>
-            <!--设置日志格式-->
-            <PatternLayout pattern="${LOG_WITHOUT_COLOR_PATTERN}"/>
-
-            <Policies>
-                <!-- 设置日志文件切分参数 -->
-                <!--<OnStartupTriggeringPolicy/>-->
-                <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新-->
-                <SizeBasedTriggeringPolicy size="100 MB"/>
-                <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置-->
-                <TimeBasedTriggeringPolicy/>
-            </Policies>
-            <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i-->
-            <DefaultRolloverStrategy max="100"/>
-        </RollingFile>
-
-        <!--info级别日志-->
-        <RollingFile name="infoFileAppender"
-                     fileName="${LOG_PATH}/info.log"
-                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
-            <Filters>
-                <!--过滤掉warn及更高级别日志-->
-                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
-            </Filters>
-            <!--设置日志格式-->
-            <PatternLayout pattern="${LOG_WITHOUT_COLOR_PATTERN}"/>
-
-            <Policies>
-                <!-- 设置日志文件切分参数 -->
-                <!--<OnStartupTriggeringPolicy/>-->
-                <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新-->
-                <SizeBasedTriggeringPolicy size="100 MB"/>
-                <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置-->
-                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
-            </Policies>
-            <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i-->
-            <!--<DefaultRolloverStrategy max="100"/>-->
-        </RollingFile>
-
-        <!--warn级别日志-->
-        <RollingFile name="warnFileAppender"
-                     fileName="${LOG_PATH}/warn.log"
-                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
-            <Filters>
-                <!--过滤掉error及更高级别日志-->
-                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
-            </Filters>
-            <!--设置日志格式-->
-            <PatternLayout pattern="${LOG_WITHOUT_COLOR_PATTERN}"/>
-
-            <Policies>
-                <!-- 设置日志文件切分参数 -->
-                <!--<OnStartupTriggeringPolicy/>-->
-                <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新-->
-                <SizeBasedTriggeringPolicy size="100 MB"/>
-                <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置-->
-                <TimeBasedTriggeringPolicy/>
-            </Policies>
-            <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i-->
-            <DefaultRolloverStrategy max="100"/>
-        </RollingFile>
-
-        <!--error及更高级别日志-->
-        <RollingFile name="errorFileAppender"
-                     fileName="${LOG_PATH}/error.log"
-                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
-            <!--设置日志格式-->
-            <PatternLayout pattern="${LOG_WITHOUT_COLOR_PATTERN}"/>
-            <Policies>
-                <!-- 设置日志文件切分参数 -->
-                <!--<OnStartupTriggeringPolicy/>-->
-                <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新-->
-                <SizeBasedTriggeringPolicy size="100 MB"/>
-                <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置-->
-                <TimeBasedTriggeringPolicy/>
-            </Policies>
-            <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i-->
-            <DefaultRolloverStrategy max="100"/>
-        </RollingFile>
-
-        <!--json格式error级别日志-->
-        <RollingFile name="errorJsonAppender"
-                     fileName="${LOG_PATH}/error-json.log"
-                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/error-json-%d{yyyy-MM-dd}-%i.log.gz">
-            <JSONLayout compact="true" eventEol="true" locationInfo="true"/>
-            <Policies>
-                <SizeBasedTriggeringPolicy size="100 MB"/>
-                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
-            </Policies>
-        </RollingFile>
-
-    </appenders>
-
-    <loggers>
-        <root level="debug">
-            <AppenderRef ref="allFileAppender" level="all"/>
-            <AppenderRef ref="debugFileAppender" level="debug"/>
-            <AppenderRef ref="infoFileAppender" level="info"/>
-            <AppenderRef ref="warnFileAppender" level="warn"/>
-            <AppenderRef ref="errorFileAppender" level="error"/>
-            <AppenderRef ref="errorJsonAppender" level="error"/>
-            <appender-ref ref="Console" level="info"/>
-        </root>
-        <Logger name="org.springframework" level="info"/>
-        <Logger name="com.alibaba" level="info"/>
-        <Logger name="com.baomidou" level="info"/>
-    </loggers>
-
-</configuration>

+ 2 - 2
sckw-gateway/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw_zk
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,7 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw_zk
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
 

+ 10 - 0
sckw-modules-api/sckw-modules-bom/pom.xml

@@ -40,6 +40,16 @@
                 <artifactId>sckw-fleet-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-transport-api</artifactId>
+                <version>1.0.0</version>
+            </dependency>
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-order-api</artifactId>
+                <version>1.0.0</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 </project>

+ 3 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/AddressInfoDetail.java

@@ -4,6 +4,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serializable;
+
 /**
  * @desc: 地址信息详情
  * @author: yzc
@@ -12,7 +14,7 @@ import lombok.ToString;
 @Getter
 @Setter
 @ToString
-public class AddressInfoDetail {
+public class AddressInfoDetail implements Serializable {
 
     /**
      * 地址类型label

+ 3 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/ContractInfo.java

@@ -4,6 +4,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serializable;
+
 /**
  * @desc: 合同信息
  * @author: yzc
@@ -12,7 +14,7 @@ import lombok.ToString;
 @Getter
 @Setter
 @ToString
-public class ContractInfo {
+public class ContractInfo implements Serializable {
 
     /**
      * 合同id

+ 2 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/GoodsInfoDetailRes.java

@@ -5,6 +5,7 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
@@ -16,7 +17,7 @@ import java.math.BigDecimal;
 @Setter
 @ToString
 @Accessors(chain = true)
-public class GoodsInfoDetailRes {
+public class GoodsInfoDetailRes implements Serializable {
 
     /**
      * 商品类型label

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

@@ -6,6 +6,7 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.List;
@@ -19,7 +20,7 @@ import java.util.List;
 @Setter
 @ToString
 @Accessors(chain = true)
-public class OrderDetailRes {
+public class OrderDetailRes implements Serializable {
 
     /**
      * 订单id

+ 3 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java

@@ -4,6 +4,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serializable;
+
 /**
  * @desc: 单位信息详情
  * @author: yzc
@@ -12,7 +14,7 @@ import lombok.ToString;
 @Getter
 @Setter
 @ToString
-public class UnitInfoDetailRes {
+public class UnitInfoDetailRes implements Serializable {
 
     /**
      * 单位类型label

+ 2 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UpdateOrderAmountParam.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
@@ -14,7 +15,7 @@ import java.math.BigDecimal;
 @Getter
 @Setter
 @ToString
-public class UpdateOrderAmountParam {
+public class UpdateOrderAmountParam implements Serializable {
 
     /**
      * 订单id

+ 24 - 1
sckw-modules/sckw-contract/pom.xml

@@ -55,5 +55,28 @@
         </dependency>
 
     </dependencies>
-
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                    <mainClass>com.sckw.contract.ContractApplication</mainClass>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 65 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractTradeController.java

@@ -1,15 +1,78 @@
 package com.sckw.contract.controller;
 
+import com.sckw.contract.model.vo.req.ContractLogisticsReqVo;
+import com.sckw.contract.model.vo.req.IdReqVo;
+import com.sckw.contract.model.vo.req.QueryListReqVo;
+import com.sckw.contract.service.KwcContractTradeService;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.response.HttpResult;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+
 /**
  * @author czh
  * @desc 销售合同
  * @date 2023/7/13
  */
 @RestController
-@RequestMapping("kwcContractTrade")
+@RequestMapping("kwcSale")
 public class KwcContractTradeController {
-    
+
+    @Autowired
+    private KwcContractTradeService KwcContractTradeService;
+
+    /**
+     * @desc: 分页查询
+     * @param: reqVo 分页入参
+     * @author: sky
+     * @date 2023/7/17
+     * @return HttpResult
+     */
+    @RequestMapping("queryListByPage")
+    public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+        return HttpResult.ok(KwcContractTradeService.queryListByPage(reqVo));
+    }
+
+    /**
+     * @param reqVo 新增入参
+     * @return HttpResult
+     * @desc: 新增托运合同
+     * @author: sky
+     * @date: 2023/7/18
+     */
+    @RequestMapping("add")
+    public HttpResult addTradeContract(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+        KwcContractTradeService.addTradeContract(reqVo);
+        return HttpResult.ok(HttpStatus.MSG_003);
+    }
+
+    /**
+     * @param reqVo 补充入参
+     * @desc: 补充合同
+     * @author: czh
+     * @date: 2023/7/14
+     */
+    @PostMapping("supplement")
+    public HttpResult supplement(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+        KwcContractTradeService.supplement(reqVo);
+        return HttpResult.ok(HttpStatus.MSG_003);
+    }
+
+    /**
+     * @desc: 合同详情
+     * @param: reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    /*@PostMapping("detail")
+    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) throws SystemException {
+        return HttpResult.ok(KwcContractTradeService.detail(reqVo.getId()));
+    }*/
 }

+ 13 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractTradeMapper.java

@@ -2,8 +2,12 @@ package com.sckw.contract.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.contract.model.entity.KwcContractTrade;
+import com.sckw.contract.model.vo.req.QueryListReqVo;
+import com.sckw.contract.model.vo.res.QueryListResVo;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
 * @author PC
 * @description 针对表【kwc_contract_trade(交易合同(采购合同/销售合同))】的数据库操作Mapper
@@ -13,6 +17,15 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KwcContractTradeMapper extends BaseMapper<KwcContractTrade> {
 
+
+    /**
+     * @desc: 查询
+     * @param: reqVo
+     * @author: sky
+     * @date 2023/7/17
+     * @return QueryListResVo
+     */
+    List<QueryListResVo> queryList(QueryListReqVo reqVo);
 }
 
 

+ 2 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTrade.java

@@ -23,7 +23,7 @@ public class KwcContractTrade implements Serializable {
     /**
      * 企业id
      */
-    private Long entId;
+    private int entId;
 
     /**
      * 合同编号
@@ -38,7 +38,7 @@ public class KwcContractTrade implements Serializable {
     /**
      * 签约方式(1线上签约、2线下签约)
      */
-    private Long signingWay;
+    private String signingWay;
 
     /**
      * 交易方式(1预付款、2货到付款)

+ 2 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractLogisticsReqVo.java

@@ -38,7 +38,8 @@ public class ContractLogisticsReqVo implements Serializable {
     /**
      * 合同文件
      */
-    @NotBlank(message = "合同文件不能为空")
+
+    @NotNull(message = "合同文件不能为空")
     private String contractFile;
 
     /**

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

@@ -82,7 +82,7 @@ public class KwcContractLogisticsService {
     @Transactional(rollbackFor = {})
     public Long addCheckedContract(ContractLogisticsReqVo reqVo) {
         LogisticsBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
-
+        
         //创建合同
         KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(baseInfo, reqVo.getRemark(), reqVo.getPId());
         long contactId = new IdWorker(1L).nextId();

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

@@ -1,6 +1,46 @@
 package com.sckw.contract.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+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.entity.KwcContractLogistics;
+import com.sckw.contract.model.vo.req.ContractLogisticsReqVo;
+import com.sckw.contract.model.vo.req.LogisticsBaseInfoReqVo;
+
+import com.sckw.contract.model.vo.req.LogisticsGoodsInfoReqVo;
+import com.sckw.contract.model.vo.req.QueryListReqVo;
+import com.sckw.contract.model.vo.res.ContractLogisticsDetailResVo;
+import com.sckw.contract.model.vo.res.LogisticsBaseInfoResVo;
+import com.sckw.contract.model.vo.res.LogisticsGoodsInfoResVo;
+import com.sckw.contract.model.vo.res.QueryListResVo;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.ContractStatusEnum;
+import com.sckw.core.model.enums.CooperateTypeEnum;
+import com.sckw.core.model.enums.SigningWayEnum;
+import com.sckw.core.model.page.PageHelperUtil;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.sckw.system.api.RemoteSystemService;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+import com.sckw.contract.dao.KwcContractTradeMapper;
 
 /**
 * @author PC
@@ -10,6 +50,188 @@ import org.springframework.stereotype.Service;
 @Service
 public class KwcContractTradeService {
 
+
+    @Autowired
+    private KwcContractTradeMapper KwcContractTradeMapper;
+
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
+    /**
+     * @desc: 分页查询
+     * @param:  reqVo
+     * @author: sky
+     * @date 2023/7/17
+     * @return PageResult
+     */
+    public PageResult queryListByPage(QueryListReqVo reqVo) {
+        PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
+        List<QueryListResVo> list = KwcContractTradeMapper.queryList(reqVo);
+        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+    }
+
+    @Transactional(rollbackFor = {})
+    public Long addTradeContract(ContractLogisticsReqVo reqVo) {
+        LogisticsBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
+        String contractFileList = reqVo.getContractFile();
+        List<LogisticsGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
+
+        //创建合同
+        KwcContractTrade KwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
+        Date date = new Date();
+        long contactId = new IdWorker(1L).nextId();
+        KwcContractTrade.setId(contactId);
+        KwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
+        KwcContractTrade.setCreateBy(LoginUserHolder.getUserId());
+        KwcContractTrade.setCreateTime(date);
+        KwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
+        KwcContractTrade.setUpdateTime(date);
+        KwcContractTrade.setDelFlag(Global.NO);
+        if (KwcContractTradeMapper.insert(KwcContractTrade) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+        //保存交易合同商品信息
+        //kwcContractLogisticsGoodsService.saveContractLogisticsGoods(KwcContractTrade.getId(), goodsInfoList);
+        //存单位信息
+        //kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), baseInfo);
+        return contactId;
+    }
+    //合同基本信息
+    public KwcContractTrade getKwcContractTrade(LogisticsBaseInfoReqVo baseInfo, String remark, Long pid) {
+        KwcContractTrade KwcContractTrade = new KwcContractTrade();
+        System.out.println(LoginUserHolder.getEntId());
+        KwcContractTrade.setEntId(1);
+        KwcContractTrade.setContractNo(baseInfo.getContractCode());
+        KwcContractTrade.setName(baseInfo.getContractName());
+        KwcContractTrade.setSigningWay(SigningWayEnum.getName(baseInfo.getSigningWay()).getName());
+        SysDictResDto sysDictResDto = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.CHARGING_TYPE.getType(), baseInfo.getCharging());
+        /*if (Objects.isNull(sysDictResDto)) {
+            KwcContractTrade.setCharging(sysDictResDto.getId());
+        }*/
+
+//        remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE, baseInfo.getT)
+//        kwcContractLogistics.setTrading(pid);
+        KwcContractTrade.setStartTime(baseInfo.getStartTime());
+        KwcContractTrade.setEndTime(baseInfo.getEndTime());
+        //单位不同怎么汇总?
+        KwcContractTrade.setAmount(new BigDecimal("0"));
+        KwcContractTrade.setPerformedAmount(new BigDecimal("0"));
+        KwcContractTrade.setSigningUrl("");
+        KwcContractTrade.setSignedUrl("");
+        KwcContractTrade.setSigningNo("");
+        KwcContractTrade.setContractPid(pid);
+        KwcContractTrade.setRemark(remark);
+        return KwcContractTrade;
+    }
+
+    /**
+     * @param reqVo 补充入参
+     * @desc: 补充合同
+     * @author: czh
+     * @date: 2023/7/14
+     */
+    public void supplement(ContractLogisticsReqVo reqVo) {
+        Long id = reqVo.getPId();
+        KwcContractTrade KwcContractTrade = KwcContractTradeMapper.selectById(id);
+        if (Objects.isNull(KwcContractTrade)) {
+
+        }
+
+        addTradeContract(reqVo);
+    }
+
+    /**
+     * @return ContractLogisticsDetailResVo
+     * @desc: 合同详情
+     * @param: reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     */
+    /*public ContractLogisticsDetailResVo detail(Long id) {
+        KwcContractTrade KwcContractTrade = KwcContractTradeMapper.selectById(id);
+        if (Objects.isNull(KwcContractTrade)) {
+            return null;
+        }
+
+        return buildContractLogisticsDetailResVo(KwcContractTrade);
+    }
+
+    private ContractLogisticsDetailResVo buildContractLogisticsDetailResVo(KwcContractTrade kwcContractLogistics) {
+        ContractLogisticsDetailResVo contractLogisticsDetailResVo = new ContractLogisticsDetailResVo();
+        //基础信息
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnitList = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnitList)) {
+            LogisticsBaseInfoResVo logisticsBaseInfoResVo = new LogisticsBaseInfoResVo();
+            for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnitList) {
+                if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CONSIGN.getCode())) {
+                    logisticsBaseInfoResVo.setCheckedEntName(kwcContractLogisticsUnit.getFirmName());
+                    logisticsBaseInfoResVo.setCheckedPhone(kwcContractLogisticsUnit.getSignPhone());
+                }
+
+                if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CARRIAGE.getCode())) {
+                    logisticsBaseInfoResVo.setCarrierEntName(kwcContractLogisticsUnit.getFirmName());
+                    logisticsBaseInfoResVo.setCarrierPhone(kwcContractLogisticsUnit.getSignPhone());
+                }
+            }
+
+            //logisticsBaseInfoResVo.setChargingName();
+            logisticsBaseInfoResVo.setContractCode(kwcContractLogistics.getContractNo());
+            logisticsBaseInfoResVo.setContractName(kwcContractLogistics.getName());
+            logisticsBaseInfoResVo.setEndTime(kwcContractLogistics.getEndTime());
+            logisticsBaseInfoResVo.setSigningWayName(kwcContractLogistics.getSigningWay());
+            logisticsBaseInfoResVo.setStartTime(kwcContractLogistics.getStartTime());
+            contractLogisticsDetailResVo.setBaseInfo(logisticsBaseInfoResVo);
+        }
+
+        //标的信息
+        List<KwcContractLogisticsGoods> kwcContractLogisticsGoodsList = kwcContractLogisticsGoodsService.queryGoodsInfoByContractId(kwcContractLogistics.getId());
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsGoodsList)) {
+            List<Long> goodsIdList = kwcContractLogisticsGoodsList.stream().map(KwcContractLogisticsGoods::getGoodsId).toList();
+            List<LogisticsGoodsInfoResVo> goodsInfo = new ArrayList<>();
+            for (KwcContractLogisticsGoods kwcContractLogisticsGoods : kwcContractLogisticsGoodsList) {
+                LogisticsGoodsInfoResVo logisticsGoodsInfoResVo = new LogisticsGoodsInfoResVo();
+                logisticsGoodsInfoResVo.setAmount(kwcContractLogisticsGoods.getAmount());
+                logisticsGoodsInfoResVo.setUnit(kwcContractLogisticsGoods.getUnit());
+                logisticsGoodsInfoResVo.setPrice(kwcContractLogisticsGoods.getPrice());
+                //logisticsGoodsInfoResVo.setPriceUnit();
+                logisticsGoodsInfoResVo.setDeficitPrice(kwcContractLogisticsGoods.getDeficitPrice());
+                logisticsGoodsInfoResVo.setDeficitUnit(kwcContractLogisticsGoods.getDeficitUnit());
+                //logisticsGoodsInfoResVo.setGoodsName();
+                logisticsGoodsInfoResVo.setLoss(kwcContractLogisticsGoods.getLoss());
+                logisticsGoodsInfoResVo.setLossUnit(kwcContractLogisticsGoods.getLossUnit());
+                goodsInfo.add(logisticsGoodsInfoResVo);
+            }
+            contractLogisticsDetailResVo.setGoodsInfo(goodsInfo);
+        }
+
+        //合同文件
+        List<String> fileList = new ArrayList<>();
+        fileList.add(kwcContractLogistics.getSignedUrl());
+        fileList.add(kwcContractLogistics.getSigningUrl());
+        contractLogisticsDetailResVo.setContractFile(fileList);
+
+        //补充合同
+        List<KwcContractLogistics> supplementList = getSupplementList(kwcContractLogistics);
+        if (CollectionUtils.isNotEmpty(supplementList)) {
+            List<ContractLogisticsDetailResVo> child = new ArrayList<>();
+            for (KwcContractLogistics supplement : supplementList) {
+                child.add(buildContractLogisticsDetailResVo(supplement));
+            }
+            contractLogisticsDetailResVo.setChild(child);
+        }
+        return contractLogisticsDetailResVo;
+    }
+
+
+    private List<KwcContractLogistics> getSupplementList(KwcContractLogistics kwcContractLogistics) {
+        LambdaQueryWrapper<KwcContractLogistics> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractLogistics::getContractPid, kwcContractLogistics.getId());
+        wrapper.eq(KwcContractLogistics::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractLogistics::getStatus, Global.NO);
+        List<KwcContractLogistics> supplementList = kwcContractLogisticsMapper.selectList(wrapper);
+        return supplementList;
+    }*/
+
 }
 
 

+ 1 - 1
sckw-modules/sckw-contract/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-system"/>
+        <property name="LOG_PATH" value="logs/sckw-contract"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

+ 0 - 199
sckw-modules/sckw-contract/src/main/resources/logback-spring.xml

@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
-<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
-<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
-                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
-<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
-<configuration  scan="true" scanPeriod="10 seconds">
-    <contextName>logback</contextName>
-    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
-
-    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/logs/${applicationName}" />
-
-    <!--0. 日志格式和颜色渲染 -->
-    <!-- 彩色日志依赖的渲染类 -->
-    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
-    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
-    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
-    <!-- 彩色日志格式 -->
-    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
-
-    <!--1. 输出到控制台-->
-    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>debug</level>
-        </filter>
-        <encoder>
-            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
-            <!-- 设置字符集 -->
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <!--2. 输出到文档-->
-    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
-    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_debug.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志归档 -->
-            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录debug级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>debug</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
-    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_info.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 每天日志归档路径以及格式 -->
-            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录info级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>info</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
-    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_warn.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录warn级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>warn</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
-    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_error.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录ERROR级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>ERROR</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!--
-        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
-        以及指定<appender>。<logger>仅有一个name属性,
-        一个可选的level和一个可选的addtivity属性。
-        name:用来指定受此logger约束的某一个包或者具体的某一个类。
-        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
-              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
-              如果未设置此属性,那么当前logger将会继承上级的级别。
-        addtivity:是否向上级logger传递打印信息。默认是true。
-        <logger name="org.springframework.web" level="info"/>
-        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
-    -->
-    <!-- hibernate logger -->
-    <logger name="com.atguigu" level="debug" />
-    <!-- Spring framework logger -->
-    <logger name="org.springframework" level="debug" additivity="false"></logger>
-
-
-    <!--
-        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
-        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
-        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
-        【logging.level.org.mybatis=debug logging.level.dao=debug】
-     -->
-
-    <!--
-        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
-        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
-        不能设置为INHERITED或者同义词NULL。默认是DEBUG
-        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
-    -->
-
-    <!-- 4. 最终的策略 -->
-    <!-- 4.1 开发环境:打印控制台-->
-    <springProfile name="dev">
-        <logger name="com.sdcm.pmp" level="debug"/>
-    </springProfile>
-
-    <root level="info">
-        <appender-ref ref="CONSOLE" />
-        <appender-ref ref="DEBUG_FILE" />
-        <appender-ref ref="INFO_FILE" />
-        <appender-ref ref="WARN_FILE" />
-        <appender-ref ref="ERROR_FILE" />
-    </root>
-
-    <!-- 4.2 生产环境:输出到文档-->
-    <springProfile name="pro">
-        <root level="info">
-            <appender-ref ref="CONSOLE" />
-            <appender-ref ref="DEBUG_FILE" />
-            <appender-ref ref="INFO_FILE" />
-            <appender-ref ref="ERROR_FILE" />
-            <appender-ref ref="WARN_FILE" />
-        </root>
-    </springProfile>
-
-</configuration>

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

@@ -37,4 +37,31 @@
         status,create_by,create_time,
         update_by,update_time,del_flag
     </sql>
+
+
+    <select id="queryList" resultType="com.sckw.contract.model.vo.res.QueryListResVo">
+        select distinct a.*
+        from kwc_contract_trade a
+        left join kwc_contract_trade_unit b on a.id = b.contract_id
+        where a.del_flag = 0
+        <if test="startTime != null">
+            and a.create_time >= #{startTime}
+        </if>
+        <if test="endTime != null">
+            and a.create_time &lt;= #{endTime}
+        </if>
+        <if test="status != null">
+            and a.status = #{status}
+        </if>
+        <if test="keywords != null and keywords != ''">
+            and (b.firm_name like concat('%', keywords, '%') or b.contacts like concat('%', keywords, '%') or b.phone like concat('%', keywords, '%'))
+        </if>
+        <if test="idList != null and idList.size() > 0">
+            and a.id in
+            <foreach collection="idList" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+
+    </select>
 </mapper>

+ 1 - 1
sckw-modules/sckw-fleet/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-system"/>
+        <property name="LOG_PATH" value="logs/sckw-fleet"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

+ 1 - 1
sckw-modules/sckw-manage/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-system"/>
+        <property name="LOG_PATH" value="logs/sckw-manage"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

+ 1 - 1
sckw-modules/sckw-operation/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-system"/>
+        <property name="LOG_PATH" value="logs/sckw-operation"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

+ 32 - 1
sckw-modules/sckw-payment/pom.xml

@@ -58,7 +58,38 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-excel</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-transport-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-order-api</artifactId>
+        </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                    <mainClass>com.sckw.payment.PaymentApplication</mainClass>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 
 </project>

+ 15 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java

@@ -61,6 +61,11 @@ public class KwpLedgerLogisticsController {
         return HttpResult.ok(kwpLedgerLogisticsService.pageList(logisticsReq));
     }
 
+    @GetMapping("count")
+    public HttpResult count() {
+        return HttpResult.ok(kwpLedgerLogisticsService.orderCount());
+    }
+
     /**
      * 删除对账单
      *
@@ -139,8 +144,15 @@ public class KwpLedgerLogisticsController {
      */
     @PostMapping("export")
     public HttpResult export(HttpServletResponse response, @RequestBody LogisticsReq logisticsReq) {
-        PageRes<LedgerLogisticsDto> pageResult = kwpLedgerLogisticsService.pageList(logisticsReq);
-        List<LedgerLogisticsDto> list = pageResult.getList();
+        List<Long> ids = logisticsReq.getIds();
+        List<LedgerLogisticsDto> list;
+        if (CollectionUtils.isEmpty(ids)) {
+            PageRes<LedgerLogisticsDto> pageResult = kwpLedgerLogisticsService.pageList(logisticsReq);
+            list = pageResult.getList();
+
+        } else {
+            list = kwpLedgerLogisticsService.selectList(ids);
+        }
         if (CollectionUtils.isEmpty(list)) {
             return HttpResult.error("没有可导出的数据");
         }
@@ -150,7 +162,7 @@ public class KwpLedgerLogisticsController {
             return ledgerLogisticsVo;
         }).collect(Collectors.toList());
 
-        ExcelUtil.download(response, LedgerLogisticsVo.class, collect);
+        ExcelUtil.downData(response, LedgerLogisticsVo.class, collect);
         return null;
     }
 }

+ 25 - 9
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java

@@ -5,7 +5,7 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.payment.model.dto.LedgerTradeDto;
 import com.sckw.payment.model.vo.req.*;
-import com.sckw.payment.model.vo.res.LedgerLogisticsVo;
+import com.sckw.payment.model.vo.res.LedgerTradeVo;
 import com.sckw.payment.service.KwpLedgerTradeService;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
@@ -61,6 +61,16 @@ public class KwpLedgerTradeController {
         return HttpResult.ok(kwpLedgerTradeService.pageList(tradeReq));
     }
 
+    /**
+     * 贸易订单数分类统计
+     *
+     * @return
+     */
+    @GetMapping("count")
+    public HttpResult count() {
+        return HttpResult.ok(kwpLedgerTradeService.orderCount());
+    }
+
     /**
      * 删除对账单
      *
@@ -138,18 +148,24 @@ public class KwpLedgerTradeController {
      * @return
      */
     @PostMapping("export")
-    public HttpResult export(HttpServletResponse response, @RequestBody TradeReq tradeReq) {
-        PageRes<LedgerTradeDto> pageResult = kwpLedgerTradeService.pageList(tradeReq);
-        List<LedgerTradeDto> list = pageResult.getList();
+    public HttpResult export(HttpServletResponse response, @RequestBody @Valid TradeReq tradeReq) {
+        List<LedgerTradeDto> list;
+        if (CollectionUtils.isEmpty(tradeReq.getIds())) {
+            PageRes<LedgerTradeDto> pageResult = kwpLedgerTradeService.pageList(tradeReq);
+            list = pageResult.getList();
+        } else {
+            list = kwpLedgerTradeService.selectList(tradeReq.getIds());
+        }
+
         if (CollectionUtils.isEmpty(list)) {
             return HttpResult.error("没有可导出的数据");
         }
-        List<LedgerLogisticsVo> collect = list.stream().map(a -> {
-            LedgerLogisticsVo ledgerLogisticsVo = new LedgerLogisticsVo();
-            BeanUtils.copyProperties(a, ledgerLogisticsVo);
-            return ledgerLogisticsVo;
+        List<LedgerTradeVo> collect = list.stream().map(a -> {
+            LedgerTradeVo ledgerTradeVo = new LedgerTradeVo();
+            BeanUtils.copyProperties(a, ledgerTradeVo);
+            return ledgerTradeVo;
         }).collect(Collectors.toList());
-        ExcelUtil.download(response, LedgerLogisticsVo.class, collect);
+        ExcelUtil.downData(response, LedgerTradeVo.class, collect);
         return null;
     }
 }

+ 8 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerLogisticsMapper.java

@@ -8,10 +8,11 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author xucaiqin
- * @date 2023-07-14 09:08:11
+ * @date 2023-07-17 15:34:39
  */
 
 @Mapper
@@ -22,4 +23,10 @@ public interface KwpLedgerLogisticsMapper extends BaseMapper<KwpLedgerLogistics>
      * @return
      */
     List<LedgerLogisticsDto> pageSelect(@Param("logisticsReq") LogisticsReq logisticsReq, @Param("ids") List<Long> ids);
+
+    Map<String, Long> countOrder();
+
+    List<LedgerLogisticsDto> selectIds(@Param("ids") List<Long> ids);
+
+
 }

+ 6 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerTradeMapper.java

@@ -8,13 +8,18 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author xucaiqin
- * @date 2023-07-14 10:12:40
+ * @date 2023-07-17 15:34:43
  */
 
 @Mapper
 public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
     List<LedgerTradeDto> pageSelect(@Param("tradeReq") TradeReq tradeReq);
+
+    Map<String, Long> countOrder();
+
+    List<LedgerTradeDto> selectIds(@Param("ids") List<Long> ids);
 }

+ 23 - 26
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerLogistics.java

@@ -12,9 +12,12 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
- * 对账-物流订单
  * @author xucaiqin
- * @date 2023-07-14 09:08:11
+ * @date 2023-07-17 15:34:39
+ */
+
+/**
+ * 对账-物流订单
  */
 @Getter
 @Setter
@@ -69,36 +72,18 @@ public class KwpLedgerLogistics {
     @TableField(value = "trading")
     private Integer trading;
 
-    /**
-     * 卸货量
-     */
-    @TableField(value = "unload_amount")
-    private BigDecimal unloadAmount;
-
-    /**
-     * 装货量
-     */
-    @TableField(value = "load_amount")
-    private BigDecimal loadAmount;
-
-    /**
-     * 亏损量
-     */
-    @TableField(value = "deficit_amount")
-    private BigDecimal deficitAmount;
-
-    /**
-     * 合理损耗量
-     */
-    @TableField(value = "lose_amount")
-    private BigDecimal loseAmount;
-
     /**
      * 总应收/元
      */
     @TableField(value = "total_price")
     private BigDecimal totalPrice;
 
+    /**
+     * 不含税金额
+     */
+    @TableField(value = "ex_tax_price")
+    private BigDecimal exTaxPrice;
+
     /**
      * 实际结算金额
      */
@@ -135,6 +120,18 @@ public class KwpLedgerLogistics {
     @TableField(value = "generate_time")
     private LocalDateTime generateTime;
 
+    /**
+     * 预计收款日期
+     */
+    @TableField(value = "receipt_time")
+    private LocalDateTime receiptTime;
+
+    /**
+     * 订单数量
+     */
+    @TableField(value = "order_count")
+    private Integer orderCount;
+
     /**
      * 备注
      */

+ 25 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerTrade.java

@@ -12,9 +12,12 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
- * 对账-交易订单
  * @author xucaiqin
- * @date 2023-07-14 10:12:40
+ * @date 2023-07-17 15:34:43
+ */
+
+/**
+ * 对账-交易订单
  */
 @Getter
 @Setter
@@ -67,7 +70,7 @@ public class KwpLedgerTrade {
      * 交易方式(预付款、货到付款)
      */
     @TableField(value = "trading")
-    private Long trading;
+    private Integer trading;
 
     /**
      * 总应收/元
@@ -75,6 +78,12 @@ public class KwpLedgerTrade {
     @TableField(value = "total_price")
     private BigDecimal totalPrice;
 
+    /**
+     * 不含税金额
+     */
+    @TableField(value = "ex_tax_price")
+    private BigDecimal exTaxPrice;
+
     /**
      * 实际计算金额
      */
@@ -105,12 +114,24 @@ public class KwpLedgerTrade {
     @TableField(value = "generate_time")
     private LocalDateTime generateTime;
 
+    /**
+     * 预计收款日期
+     */
+    @TableField(value = "receipt_time")
+    private LocalDateTime receiptTime;
+
     /**
      * 对账清单凭证
      */
     @TableField(value = "url")
     private String url;
 
+    /**
+     * 订单数量
+     */
+    @TableField(value = "order_count")
+    private Integer orderCount;
+
     /**
      * 备注
      */
@@ -118,7 +139,7 @@ public class KwpLedgerTrade {
     private String remark;
 
     /**
-     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     * 状态(1-已保存、2-待对账、3-已对账、4-已完成、5-已退回)
      */
     @TableField(value = "`status`")
     private Integer status;

+ 34 - 6
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpSettlementTrade.java

@@ -4,19 +4,17 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-/**
- * @author xucaiqin
- * @date 2023-07-10 16:42:19
- */
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 /**
  * 结算-交易订单
+ * @author xucaiqin
+ * @date 2023-07-18 14:51:38
  */
 @Getter
 @Setter
@@ -65,6 +63,36 @@ public class KwpSettlementTrade {
     @TableField(value = "actual_price")
     private BigDecimal actualPrice;
 
+    /**
+     * 预计收款日期
+     */
+    @TableField(value = "receipt_time")
+    private LocalDateTime receiptTime;
+
+    /**
+     * 对账审核人名称
+     */
+    @TableField(value = "audit_user")
+    private String auditUser;
+
+    /**
+     * 对账审核人电话
+     */
+    @TableField(value = "audit_phone")
+    private String auditPhone;
+
+    /**
+     * 对账完成人名称
+     */
+    @TableField(value = "success_user")
+    private String successUser;
+
+    /**
+     * 对账完成人电话
+     */
+    @TableField(value = "success_phone")
+    private String successPhone;
+
     /**
      * 备注
      */

+ 15 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerEnum.java

@@ -1,5 +1,7 @@
 package com.sckw.payment.model.constant;
 
+import java.util.Objects;
+
 /**
  * 物流、贸易
  * 对账单状态枚举
@@ -8,6 +10,7 @@ package com.sckw.payment.model.constant;
  * @date 2023-07-11 12:00:52
  */
 public enum LedgerEnum {
+    ALL(0, "全部"),
     SAVE(1, "已保存"),
     TO_LEDGER(2, "待对账"),
     LEDGERED(3, "已对账"),
@@ -21,6 +24,18 @@ public enum LedgerEnum {
         this.desc = desc;
     }
 
+    public static String getDesc(Integer status) {
+        if (Objects.isNull(status)) {
+            return "";
+        }
+        for (LedgerEnum value : values()) {
+            if (status == value.getStatus()) {
+                return value.getDesc();
+            }
+        }
+        return "";
+    }
+
     public int getStatus() {
         return status;
     }

+ 16 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LogisticsUnitType.java

@@ -0,0 +1,16 @@
+package com.sckw.payment.model.constant;
+
+/**
+ * @author xucaiqin
+ * @date 2023-07-14 09:26:16
+ */
+public interface LogisticsUnitType {
+    /**
+     * 托运方(客户单位)
+     */
+    Integer SHIPPER = 1;
+    /**
+     * 承运方
+     */
+    Integer CARRIER = 2;
+}

+ 21 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCountDto.java

@@ -0,0 +1,21 @@
+package com.sckw.payment.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 物流/贸易对账单统计
+ *
+ * @author xucaiqin
+ * @date 2023-07-10 18:11:24
+ */
+@Getter
+@Setter
+public class LedgerCountDto {
+    private Long saveCount;
+    private Long toLedgerCount;
+    private Long ledgeredCount;
+    private Long successCount;
+    private Long backCount;
+
+}

+ 28 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCountVo.java

@@ -0,0 +1,28 @@
+package com.sckw.payment.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 物流/贸易对账单统计
+ *
+ * @author xucaiqin
+ * @date 2023-07-10 18:11:24
+ */
+@Getter
+@Setter
+public class LedgerCountVo {
+    /**
+     * 主键
+     */
+    private Long count;
+    /**
+     * 对账单状态
+     */
+    private Integer status;
+    /**
+     * 对账单状态文本
+     */
+    private String label;
+
+}

+ 29 - 43
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerLogisticsDto.java

@@ -1,5 +1,6 @@
 package com.sckw.payment.model.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -48,52 +49,37 @@ public class LedgerLogisticsDto {
     /**
      * 开始日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime startTime;
 
     /**
      * 结束日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
 
-    /**
-     * 对账金额
-     */
-    private BigDecimal price;
 
     /**
      * 发票税率(%)
      */
-    private BigDecimal taxRate;
+    private String taxRateLabel;
+    private Integer taxRate;
 
     /**
      * 交易方式(预付款、货到付款)
      */
-    private String trading;
+    private Integer trading;
+    private String tradingLabel;
 
-    /**
-     * 卸货量
-     */
-    private BigDecimal unloadAmount;
-
-    /**
-     * 装货量
-     */
-    private BigDecimal loadAmount;
-
-    /**
-     * 亏损量
-     */
-    private BigDecimal deficitAmount;
-
-    /**
-     * 合理损耗量
-     */
-    private BigDecimal loseAmount;
 
     /**
      * 总应收/元
      */
     private BigDecimal totalPrice;
+    /**
+     * 不含税金额
+     */
+    private BigDecimal exTaxPrice;
 
     /**
      * 实际结算金额
@@ -106,19 +92,19 @@ public class LedgerLogisticsDto {
     private BigDecimal actualPrice;
 
     /**
-     * 对账审核人电话
+     * 对账清单凭证
      */
-    private String auditPhone;
-
+    private String url;
     /**
-     * 对账审核人名称
+     * 生成时间
      */
-    private String auditUser;
-
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime generateTime;
     /**
-     * 对账清单凭证
+     * 预计收款时间
      */
-    private String url;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime receiptTime;
 
     /**
      * 备注
@@ -126,23 +112,23 @@ public class LedgerLogisticsDto {
     private String remark;
 
     /**
-     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     * 状态状态(1-已保存、2-待对账、3-已对账、4-已完成、5-已退回)
      */
     private Integer status;
+    private String statusLabel;
 
-    private Long createBy;
-
-    private LocalDateTime createTime;
-
-    private Long updateBy;
-
     /**
-     * 更新时间
+     * 客户联系人
+     */
+    private String contacts;
+    /**
+     * 客户联系人电话
      */
-    private LocalDateTime updateTime;
+    private String phone;
+    private String firmName;
 
     /**
      * 订单数量
      */
-    private Long orderCount;
+    private Integer orderCount;
 }

+ 29 - 56
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java

@@ -1,5 +1,6 @@
 package com.sckw.payment.model.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -20,80 +21,49 @@ public class LedgerTradeDto {
      */
     private Long id;
     /**
-     * 物流对账单编号
+     * 贸易对账单编号
      */
-    private String lLedgerNo;
+    private String tLedgerNo;
 
     /**
      * 对账单名称
      */
     private String name;
 
-    /**
-     * 企业id
-     */
-    private Long entId;
-
-    /**
-     * 托运单位
-     */
-    private Long checkEntId;
-
-    /**
-     * 承运单位
-     */
-    private Long carrierEntId;
-
 
     /**
      * 开始日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime startTime;
 
     /**
      * 结束日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
 
-    /**
-     * 对账金额
-     */
-    private BigDecimal price;
-
     /**
      * 发票税率(%)
      */
-    private BigDecimal taxRate;
+    private Integer taxRate;
+    private String taxRateLabel;
 
     /**
      * 交易方式(预付款、货到付款)
      */
-    private String trading;
+    private Integer trading;
+    private String tradingLabel;
 
-    /**
-     * 卸货量
-     */
-    private BigDecimal unloadAmount;
-
-    /**
-     * 装货量
-     */
-    private BigDecimal loadAmount;
-
-    /**
-     * 亏损量
-     */
-    private BigDecimal deficitAmount;
-
-    /**
-     * 合理损耗量
-     */
-    private BigDecimal loseAmount;
 
     /**
      * 总应收/元
      */
     private BigDecimal totalPrice;
+    /**
+     * 不含税金额
+     */
+    private BigDecimal exTaxPrice;
 
     /**
      * 实际结算金额
@@ -119,6 +89,16 @@ public class LedgerTradeDto {
      * 对账清单凭证
      */
     private String url;
+    /**
+     * 生成时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime generateTime;
+    /**
+     * 预计收款日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime receiptTime;
 
     /**
      * 备注
@@ -126,23 +106,16 @@ public class LedgerTradeDto {
     private String remark;
 
     /**
-     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     * 状态(1-已保存、2-待对账、3-已对账、4-已完成、5-已退回)
      */
     private Integer status;
-
-    private Long createBy;
-
-    private LocalDateTime createTime;
-
-    private Long updateBy;
-
-    /**
-     * 更新时间
-     */
-    private LocalDateTime updateTime;
+    private String statusLabel;
+    private String contacts;
+    private String phone;
+    private String firmName;
 
     /**
      * 订单数量
      */
-    private Long orderCount;
+    private Integer orderCount;
 }

+ 6 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerSuccessReq.java

@@ -1,10 +1,13 @@
 package com.sckw.payment.model.vo.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.time.LocalDateTime;
+
 /**
  * 对账完成
  *
@@ -18,6 +21,9 @@ public class LedgerSuccessReq {
     private Long id;
     @NotBlank(message = "财务联系人不能为空")
     private String successUser;
+    @NotNull(message = "预计收款日期不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime receiptTime;
     @NotBlank(message = "财务联系电话不能为空")
     private String successPhone;
 

+ 7 - 9
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsSendReq.java

@@ -1,10 +1,7 @@
 package com.sckw.payment.model.vo.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.PositiveOrZero;
-import jakarta.validation.constraints.Size;
+import jakarta.validation.constraints.*;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -28,10 +25,6 @@ public class LogisticsSendReq {
     @NotNull(message = "客户单位不能为空")
     private Long checkEntId;
 
-    /**
-     * 承运单位
-     */
-    private Long carrierEntId;
     /**
      * 名称
      */
@@ -101,5 +94,10 @@ public class LogisticsSendReq {
     /**
      * 承运订单
      */
-    private List<Long> ids;
+    @NotEmpty(message = "承运订单不能为空")
+    private List<String> ids;
+    private LocalDateTime generateTime;
+    private Integer status;
+
+
 }

+ 6 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeReq.java

@@ -1,7 +1,9 @@
 package com.sckw.payment.model.vo.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.core.model.vo.BasePara;
 import com.sckw.payment.model.constant.LedgerEnum;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -18,7 +20,11 @@ import java.util.List;
 public class TradeReq extends BasePara {
     @Serial
     private static final long serialVersionUID = 5328731681168692784L;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @NotNull(message = "生成开始时间不能为空")
     private LocalDateTime startCreateTime;
+    @NotNull(message = "生成结束时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endCreateTime;
     private Integer trading;
     /**

+ 1 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeSendReq.java

@@ -80,4 +80,5 @@ public class TradeSendReq {
     private List<Long> ids;
 
     private LocalDateTime generateTime;
+    private Integer status;
 }

+ 67 - 99
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsVo.java

@@ -23,150 +23,118 @@ public class LedgerLogisticsVo {
     /**
      * 主键
      */
-    @ExcelProperty(value = "id")
+    @ExcelProperty(value = "序号")
     private Long id;
+    /**
+     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     */
+    @ExcelProperty(value = "状态")
+    private String statusLabel;
     /**
      * 物流对账单编号
      */
-    //@ExcelProperty(value = "物流对账单编号")
+    @ExcelProperty(value = "物流对账单编号")
     private String lLedgerNo;
 
     /**
      * 对账单名称
      */
-    //@ExcelProperty(value = "对账单名称")
+    @ExcelProperty(value = "对账单名称")
     private String name;
-
     /**
-     * 企业id
+     * 客户单位
      */
-    //@ExcelProperty(value = "企业id")
-    private Long entId;
+    @ExcelProperty(value = "客户单位")
+    private String firmName;
 
     /**
-     * 托运单位
-     */
-    //@ExcelProperty(value = "托运单位")
-    private Long checkEntId;
-
-    /**
-     * 承运单位
-     */
-    //@ExcelProperty(value = "承运单位")
-    private Long carrierEntId;
-
-
-    /**
-     * 开始日期
-     */
-    @ExcelProperty(value = "开始日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime startTime;
-
-    /**
-     * 结束日期
+     * 订单数量
      */
-    @ExcelProperty(value = "结束日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime endTime;
+    @ExcelProperty(value = "订单数量")
+    private Long orderCount;
+//    /**
+//     * 开始日期
+//     */
+//    @ExcelProperty(value = "开始日期")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    private LocalDateTime startTime;
+//
+//    /**
+//     * 结束日期
+//     */
+//    @ExcelProperty(value = "结束日期")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    private LocalDateTime endTime;
 
     /**
-     * 对账金额
+     * 付款方式(预付款、货到付款)
      */
-    //@ExcelProperty(value = "对账金额")
-    private BigDecimal price;
+    @ExcelProperty(value = "付款方式")
+    private String tradingLabel;
 
     /**
      * 发票税率(%)
      */
-    //@ExcelProperty(value = "发票税率(%)")
-    private BigDecimal taxRate;
-
-    /**
-     * 交易方式(预付款、货到付款)
-     */
-    //@ExcelProperty(value = "交易方式")
-    private String trading;
+    @ExcelProperty(value = "发票税率(%)")
+    private String taxRateLabel;
 
-    /**
-     * 卸货量
-     */
-    //@ExcelProperty(value = "卸货量")
-    private BigDecimal unloadAmount;
-
-    /**
-     * 装货量
-     */
-    //@ExcelProperty(value = "装货量")
-    private BigDecimal loadAmount;
-
-    /**
-     * 亏损量
-     */
-    //@ExcelProperty(value = "亏损量")
-    private BigDecimal deficitAmount;
-
-    /**
-     * 合理损耗量
-     */
-    //@ExcelProperty(value = "合理损耗量")
-    private BigDecimal loseAmount;
 
     /**
      * 总应收/元
      */
+    @ExcelProperty(value = "总应收/元")
     private BigDecimal totalPrice;
 
-    /**
-     * 实际结算金额
-     */
-    private BigDecimal settlePrice;
+//    /**
+//     * 实际结算金额
+//     */
+//    @ExcelProperty(value = "实际结算金额")
+//    private BigDecimal settlePrice;
 
     /**
      * 已收款/元
      */
+    @ExcelProperty(value = "已收款/元")
     private BigDecimal actualPrice;
 
     /**
-     * 对账审核人电话
-     */
-    private String auditPhone;
-
-    /**
-     * 对账审核人名称
-     */
-    private String auditUser;
-
-    /**
-     * 对账清单凭证
+     * 客户联系人
      */
-    private String url;
-
+    @ExcelProperty(value = "客户联系人")
+    private String contacts;
     /**
-     * 备注
+     * 联系方式
      */
-    private String remark;
+    @ExcelProperty(value = "联系方式")
+    private String phone;
 
-    /**
-     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
-     */
-    private Integer status;
-
-    private Long createBy;
 
-    private LocalDateTime createTime;
 
-    private Long updateBy;
+//    /**
+//     * 对账审核人电话
+//     */
+//    @ExcelProperty(value = "对账审核人电话")
+//    private String auditPhone;
 
     /**
-     * 更新时间
+     * 对账审核人名称
      */
-    private LocalDateTime updateTime;
-
+    @ExcelProperty(value = "提交人")
+    private String auditUser;
+//
+//    /**
+//     * 对账清单凭证
+//     */
+//    @ExcelProperty(value = "对账清单凭证")
+//    private String url;
     /**
-     * 订单数量
+     * 生成时间
      */
-    private Long orderCount;
+    @ExcelProperty(value = "生成时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime generateTime;
+
 }

+ 64 - 92
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeVo.java

@@ -1,6 +1,7 @@
 package com.sckw.payment.model.vo.res;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.excel.annotation.ExcelContext;
 import lombok.Getter;
 import lombok.Setter;
@@ -21,146 +22,117 @@ public class LedgerTradeVo {
     /**
      * 主键
      */
-    @ExcelProperty(value = "id")
+    @ExcelProperty(value = "序号")
     private Long id;
+    /**
+     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     */
+    @ExcelProperty(value = "状态")
+    private String statusLabel;
+
     /**
      * 贸易对账单编号
      */
-    //@ExcelProperty(value = "贸易对账单编号")
+    @ExcelProperty(value = "贸易对账单编号")
     private String tLedgerNo;
 
     /**
      * 对账单名称
      */
-    //@ExcelProperty(value = "对账单名称")
+    @ExcelProperty(value = "对账单名称")
     private String name;
 
     /**
-     * 企业id
+     * 客户单位
      */
-    //@ExcelProperty(value = "企业id")
-    private Long entId;
-
+    @ExcelProperty(value = "客户单位")
+    private String firmName;
     /**
-     * 托运单位
-     */
-    //@ExcelProperty(value = "托运单位")
-    private Long checkEntId;
-
-    /**
-     * 承运单位
-     */
-    //@ExcelProperty(value = "承运单位")
-    private Long carrierEntId;
-
-
-    /**
-     * 开始日期
+     * 订单数量
      */
-    //@ExcelProperty(value = "开始日期")
-    private LocalDateTime startTime;
+    @ExcelProperty(value = "订单数量")
+    private Long orderCount;
 
-    /**
-     * 结束日期
-     */
-    //@ExcelProperty(value = "结束日期")
-    private LocalDateTime endTime;
 
+//    /**
+//     * 开始日期
+//     */
+//    @ExcelProperty(value = "开始日期")
+//    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private LocalDateTime startTime;
+//
+//    /**
+//     * 结束日期
+//     */
+//    @ExcelProperty(value = "结束日期")
+//    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private LocalDateTime endTime;
     /**
-     * 对账金额
+     * 付款方式(预付款、货到付款)
      */
-    //@ExcelProperty(value = "对账金额")
-    private BigDecimal price;
+    @ExcelProperty(value = "付款方式")
+    private String tradingLabel;
 
     /**
      * 发票税率(%)
      */
-    //@ExcelProperty(value = "发票税率(%)")
-    private BigDecimal taxRate;
-
-    /**
-     * 交易方式(预付款、货到付款)
-     */
-    //@ExcelProperty(value = "交易方式")
-    private String trading;
-
-    /**
-     * 卸货量
-     */
-    //@ExcelProperty(value = "卸货量")
-    private BigDecimal unloadAmount;
-
-    /**
-     * 装货量
-     */
-    //@ExcelProperty(value = "装货量")
-    private BigDecimal loadAmount;
-
-    /**
-     * 亏损量
-     */
-    //@ExcelProperty(value = "亏损量")
-    private BigDecimal deficitAmount;
-
-    /**
-     * 合理损耗量
-     */
-    //@ExcelProperty(value = "合理损耗量")
-    private BigDecimal loseAmount;
+    @ExcelProperty(value = "发票税率(%)")
+    private String taxRateLabel;
 
     /**
      * 总应收/元
      */
+    @ExcelProperty(value = "总应收/元")
     private BigDecimal totalPrice;
 
-    /**
-     * 实际结算金额
-     */
-    private BigDecimal settlePrice;
+//    /**
+//     * 实际结算金额
+//     */
+//    @ExcelProperty(value = "实际结算金额")
+//    private BigDecimal settlePrice;
 
     /**
      * 已收款/元
      */
+    @ExcelProperty(value = "已收款/元")
     private BigDecimal actualPrice;
 
+//    /**
+//     * 对账审核人电话
+//     */
+//    @ExcelProperty(value = "对账审核人电话")
+//    private String auditPhone;
     /**
-     * 对账审核人电话
-     */
-    private String auditPhone;
-
-    /**
-     * 对账审核人名称
+     * 客户联系人
      */
-    private String auditUser;
-
+    @ExcelProperty(value = "客户联系人")
+    private String contacts;
     /**
-     * 对账清单凭证
+     * 联系方式
      */
-    private String url;
+    @ExcelProperty(value = "联系方式")
+    private String phone;
 
     /**
-     * 备注
+     * 预计收款日期
      */
-    private String remark;
-
+    @ExcelProperty(value = "预计收款日期")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime receiptTime;
     /**
-     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     * 对账审核人名称
      */
-    private Integer status;
-
-    private Long createBy;
+    @ExcelProperty(value = "提交人")
+    private String auditUser;
 
-    private LocalDateTime createTime;
 
-    private Long updateBy;
 
     /**
-     * 更新时间
+     * 生成时间
      */
-    private LocalDateTime updateTime;
+    @ExcelProperty(value = "生成时间")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime generateTime;
+
 
-    /**
-     * 订单数量
-     */
-    private Long orderCount;
 }

+ 18 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java

@@ -5,25 +5,39 @@ import com.sckw.core.exception.BusinessException;
 import com.sckw.payment.model.constant.LedgerEnum;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author xucaiqin
  * @date 2023-07-13 15:40:37
  */
 public abstract class AbsLedger {
-    public void deleteCheck(Integer status){
+    public void backCheck(Integer status) {
+        if (Objects.nonNull(status) && LedgerEnum.TO_LEDGER.getStatus() != status) {
+            throw new BusinessException("只有【待对账】的单据才支持对账驳回!");
+        }
+    }
+
+    public void confirmCheck(Integer status) {
+        if (Objects.nonNull(status) && LedgerEnum.TO_LEDGER.getStatus() != status) {
+            throw new BusinessException("只有【待对账】的单据才支持对账确认!");
+        }
+    }
+
+    public void deleteCheck(Integer status) {
         List<Integer> objects = Lists.newArrayList(LedgerEnum.BACK.getStatus(), LedgerEnum.SAVE.getStatus());
-        if (!objects.contains(status)) {
+        if (Objects.nonNull(status) && !objects.contains(status)) {
             throw new BusinessException("只有【已保存】和【已退回】的单据才支持删除!");
         }
     }
+
     /**
      * 撤回订单校验
      *
      * @param status
      */
     public void revokeCheck(Integer status) {
-        if (LedgerEnum.TO_LEDGER.getStatus() != status) {
+        if (Objects.nonNull(status) && LedgerEnum.TO_LEDGER.getStatus() != status) {
             throw new BusinessException("只有【待对账】的单据才支持撤销!");
         }
     }
@@ -34,7 +48,7 @@ public abstract class AbsLedger {
      * @param status
      */
     public void successCheck(Integer status) {
-        if (LedgerEnum.LEDGERED.getStatus() != status) {
+        if (Objects.nonNull(status) && LedgerEnum.LEDGERED.getStatus() != status) {
             throw new BusinessException("只有【已对账】的订单支持完成对账!");
         }
     }

+ 25 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsOrderService.java

@@ -1,11 +1,36 @@
 package com.sckw.payment.service;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.payment.dao.KwpLedgerLogisticsOrderMapper;
+import com.sckw.payment.model.KwpLedgerLogisticsOrder;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
 @Service
+@AllArgsConstructor
 public class KwpLedgerLogisticsOrderService {
+    private final KwpLedgerLogisticsOrderMapper logisticsOrderMapper;
+
+    public void remove(Long lLedgerId) {
+        KwpLedgerLogisticsOrder logisticsOrder = new KwpLedgerLogisticsOrder();
+        logisticsOrder.setDelFlag(1);
+        logisticsOrder.setUpdateTime(LocalDateTime.now());
+        LambdaUpdateWrapper<KwpLedgerLogisticsOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(KwpLedgerLogisticsOrder::getLLedgerId, lLedgerId);
+        wrapper.eq(KwpLedgerLogisticsOrder::getDelFlag, 0);
+        logisticsOrderMapper.update(logisticsOrder, wrapper);
+    }
 
+    public void saveList(List<KwpLedgerLogisticsOrder> list) {
+        for (KwpLedgerLogisticsOrder logisticsOrder : list) {
+            logisticsOrderMapper.insert(logisticsOrder);
+        }
+    }
 }

+ 212 - 68
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -2,40 +2,78 @@ package com.sckw.payment.service;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.page.PageRes;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
+import com.sckw.core.utils.OrderGenerateUtils;
 import com.sckw.payment.dao.KwpLedgerLogisticsMapper;
-import com.sckw.payment.dao.KwpLedgerLogisticsOrderMapper;
-import com.sckw.payment.model.KwpLedgerLogistics;
-import com.sckw.payment.model.KwpLedgerLogisticsOrder;
-import com.sckw.payment.model.KwpLedgerLogisticsTrack;
-import com.sckw.payment.model.KwpSettlementLogistics;
+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.LedgerCountVo;
 import com.sckw.payment.model.dto.LedgerLogisticsDto;
 import com.sckw.payment.model.vo.req.*;
-import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.transport.api.dubbo.TransportDubboService;
+import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
 @Service
-@AllArgsConstructor
+@Slf4j
 public class KwpLedgerLogisticsService extends AbsLedger {
-    private final KwpLedgerLogisticsTrackService logisticsTrackService;
-    private final KwpSettlementLogisticsService settlementLogisticsService;
-    private final KwpLedgerLogisticsMapper logisticsMapper;
-    private final KwpLedgerLogisticsOrderMapper logisticsOrderMapper;
+    @Resource
+    private KwpLedgerLogisticsTrackService logisticsTrackService;
+    @Resource
+    private KwpSettlementLogisticsService settlementLogisticsService;
+    @Resource
+    private KwpLedgerLogisticsUnitService logisticsUnitService;
+    @Resource
+    private KwpLedgerLogisticsOrderService logisticsOrderService;
+    @Resource
+    private KwpLedgerLogisticsMapper logisticsMapper;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private TransportDubboService transportDubboService;
+
+    private void changeDict(List<LedgerLogisticsDto> list) {
+        List<SysDictResDto> taxRateDict = remoteSystemService.queryDictByType(DictTypeEnum.TAX_RATE.getType());
+        Map<String, String> taxRateMap = new HashMap<>();
+        Map<String, String> tradingMap = new HashMap<>();
+
+        if (!CollectionUtils.isEmpty(taxRateDict)) {
+            taxRateMap = taxRateDict.stream().collect(Collectors.toMap(SysDictResDto::getValue, SysDictResDto::getLabel, (a, b) -> a));
+        }
+        List<SysDictResDto> tradingDict = remoteSystemService.queryDictByType(DictTypeEnum.TRADE_TYPE.getType());
+        if (!CollectionUtils.isEmpty(tradingDict)) {
+            tradingMap = tradingDict.stream().collect(Collectors.toMap(SysDictResDto::getValue, SysDictResDto::getLabel, (a, b) -> a));
+        }
+        for (LedgerLogisticsDto logisticsDto : list) {
+            Integer trading = logisticsDto.getTrading();
+            logisticsDto.setTradingLabel(tradingMap.get(String.valueOf(trading)));
+            Integer taxRate = logisticsDto.getTaxRate();
+            logisticsDto.setTaxRateLabel(taxRateMap.get(String.valueOf(taxRate)));
+
+            logisticsDto.setStatusLabel(LedgerEnum.getDesc(logisticsDto.getStatus()));
+        }
+    }
 
     /**
      * 分页查询物流对账单列表
@@ -44,15 +82,12 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      * @return
      */
     public PageRes<LedgerLogisticsDto> pageList(LogisticsReq logisticsReq) {
-        //todo 查询缓存,获取客户企业id
-        String keywords = logisticsReq.getKeywords();
-        if (StringUtils.isNotBlank(keywords)) {
-
-        }
         PageHelper.startPage(logisticsReq.getPage(), logisticsReq.getPageSize());
-
         List<LedgerLogisticsDto> kwpLedgerLogisticsList = logisticsMapper.pageSelect(logisticsReq, new ArrayList<>());
-
+        //字典转换
+        if (!CollectionUtils.isEmpty(kwpLedgerLogisticsList)) {
+            changeDict(kwpLedgerLogisticsList);
+        }
         return new PageRes<>(new PageInfo<>(kwpLedgerLogisticsList));
     }
 
@@ -67,10 +102,129 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         Long id = logisticsReq.getId();
         if (Objects.isNull(id)) {
             //新增
+            logisticsReq.setGenerateTime(LocalDateTime.now());
+            logisticsReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
+            Long aLong = saveDraft(logisticsReq);
+            logisticsTrackService.saveTrack(aLong, "", LedgerTrackEnum.TO_LEDGER);
+        } else {
+            removeDraft(id);
+            logisticsReq.setGenerateTime(LocalDateTime.now());
+            logisticsReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
+            Long aLong = saveDraft(logisticsReq);
+            logisticsTrackService.saveTrack(aLong, "", LedgerTrackEnum.TO_LEDGER);
+
+        }
+        return "保存对账单成功";
+    }
+
+    private void removeDraft(Long id) {
+        //删除 kwp_ledger_logistics_order
+        logisticsOrderService.remove(id);
+        //删除 kwp_ledger_logistics_track
+        logisticsTrackService.remove(id);
+        //删除 kwp_ledger_logistics_unit
+        logisticsUnitService.remove(id);
+    }
+
+    private Long saveDraft(LogisticsSendReq logisticsSendReq) {
+        KwpLedgerLogistics kwpLedgerLogistics = new KwpLedgerLogistics();
+        kwpLedgerLogistics.setId(Objects.isNull(logisticsSendReq.getId()) ? new IdWorker(1).nextId() : logisticsSendReq.getId());
+        kwpLedgerLogistics.setEntId(0L);
+        kwpLedgerLogistics.setName(logisticsSendReq.getName());
+        kwpLedgerLogistics.setStartTime(logisticsSendReq.getStartTime());
+        kwpLedgerLogistics.setEndTime(logisticsSendReq.getEndTime());
+        kwpLedgerLogistics.setTaxRate(logisticsSendReq.getTaxRate());
+        kwpLedgerLogistics.setTrading(logisticsSendReq.getTrading());
+        kwpLedgerLogistics.setTotalPrice(logisticsSendReq.getTotalPrice());
+        kwpLedgerLogistics.setExTaxPrice(logisticsSendReq.getTotalPrice());//todo 不含税金额计算方式:订单含税金额总和/1.13(税率)
+        kwpLedgerLogistics.setSettlePrice(logisticsSendReq.getSettlePrice());
+        kwpLedgerLogistics.setActualPrice(new BigDecimal("0.0"));
+        kwpLedgerLogistics.setAuditUser("");
+        kwpLedgerLogistics.setAuditPhone("");
+        kwpLedgerLogistics.setReceiptTime(null);
+        kwpLedgerLogistics.setOrderCount(logisticsSendReq.getIds().size());
+        kwpLedgerLogistics.setUrl("");
+        kwpLedgerLogistics.setGenerateTime(logisticsSendReq.getGenerateTime());
+        kwpLedgerLogistics.setRemark("");
+        kwpLedgerLogistics.setStatus(logisticsSendReq.getStatus());
+        kwpLedgerLogistics.setCreateBy(0L);
+        kwpLedgerLogistics.setCreateTime(LocalDateTime.now());
+        kwpLedgerLogistics.setUpdateBy(0L);
+        kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
+        kwpLedgerLogistics.setDelFlag(0);
+        if (Objects.isNull(logisticsSendReq.getId())) {
+            kwpLedgerLogistics.setLLedgerNo(OrderGenerateUtils.generateOrderNo("LL"));
+            logisticsMapper.insert(kwpLedgerLogistics);
         } else {
-            //修改
+            logisticsMapper.updateById(kwpLedgerLogistics);
+        }
+        /*保存物流订单关联数据*/
+        List<String> ids = logisticsSendReq.getIds();
+        List<KwtLogisticsOrderVO> acceptCarriageOrderDetail = transportDubboService.getAcceptCarriageOrderDetail(ids);
+        if (CollectionUtils.isEmpty(acceptCarriageOrderDetail)) {
+            throw new BusinessException("未找到物流订单!");
         }
-        return "新增对账单成功";
+        List<KwpLedgerLogisticsOrder> collect = acceptCarriageOrderDetail.stream().map(a -> {
+            KwpLedgerLogisticsOrder logisticsOrder = new KwpLedgerLogisticsOrder();
+            logisticsOrder.setId(new IdWorker(1).nextId());
+            logisticsOrder.setLLedgerId(kwpLedgerLogistics.getId());
+            logisticsOrder.setLOrderId(a.getId());
+            logisticsOrder.setRemark("");
+            logisticsOrder.setStatus(0);
+            logisticsOrder.setCreateBy(0L);
+            logisticsOrder.setCreateTime(LocalDateTime.now());
+            logisticsOrder.setUpdateBy(0L);
+            logisticsOrder.setUpdateTime(LocalDateTime.now());
+            logisticsOrder.setDelFlag(0);
+            return logisticsOrder;
+        }).collect(Collectors.toList());
+
+        logisticsOrderService.saveList(collect);
+        /*保存企业相关信息*/
+        Long checkEntId = logisticsSendReq.getCheckEntId();
+
+        List<KwpLedgerLogisticsUnit> logisticsUnits = new ArrayList<>();
+        KwpLedgerLogisticsUnit kwpLedgerLogisticsUnit = new KwpLedgerLogisticsUnit();
+        kwpLedgerLogisticsUnit.setId(new IdWorker(1).nextId());
+        kwpLedgerLogisticsUnit.setLLedgerId(kwpLedgerLogistics.getId());
+        kwpLedgerLogisticsUnit.setLLedgerNo(kwpLedgerLogistics.getLLedgerNo());
+        kwpLedgerLogisticsUnit.setUnitType(LogisticsUnitType.SHIPPER);
+        kwpLedgerLogisticsUnit.setEntId(checkEntId);
+        kwpLedgerLogisticsUnit.setTopEntId(checkEntId);//todo
+        kwpLedgerLogisticsUnit.setFirmName("");
+        kwpLedgerLogisticsUnit.setContacts("");
+        kwpLedgerLogisticsUnit.setPhone("");
+        kwpLedgerLogisticsUnit.setRemark("");
+        kwpLedgerLogisticsUnit.setStatus(0);
+        kwpLedgerLogisticsUnit.setCreateBy(0L);
+        kwpLedgerLogisticsUnit.setCreateTime(LocalDateTime.now());
+        kwpLedgerLogisticsUnit.setUpdateBy(0L);
+        kwpLedgerLogisticsUnit.setUpdateTime(LocalDateTime.now());
+        kwpLedgerLogisticsUnit.setDelFlag(0);
+
+        logisticsUnits.add(kwpLedgerLogisticsUnit);
+
+        KwpLedgerLogisticsUnit carrierUnit = new KwpLedgerLogisticsUnit();
+        carrierUnit.setId(new IdWorker(1).nextId());
+        carrierUnit.setLLedgerId(kwpLedgerLogistics.getId());
+        carrierUnit.setLLedgerNo(kwpLedgerLogistics.getLLedgerNo());
+        carrierUnit.setUnitType(LogisticsUnitType.CARRIER);
+        carrierUnit.setEntId(checkEntId);//todo
+        carrierUnit.setTopEntId(checkEntId);//todo
+        carrierUnit.setFirmName("");
+        carrierUnit.setContacts("");
+        carrierUnit.setPhone("");
+        carrierUnit.setRemark("");
+        carrierUnit.setStatus(0);
+        carrierUnit.setCreateBy(0L);
+        carrierUnit.setCreateTime(LocalDateTime.now());
+        carrierUnit.setUpdateBy(0L);
+        carrierUnit.setUpdateTime(LocalDateTime.now());
+        carrierUnit.setDelFlag(0);
+
+        logisticsUnits.add(carrierUnit);
+        logisticsUnitService.saveList(logisticsUnits);
+        return kwpLedgerLogistics.getId();
     }
 
     /**
@@ -81,48 +235,11 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String sendLedgerDraft(LogisticsSendReq logisticsReq) {
-        /*插入物流对账单*/
-        KwpLedgerLogistics kwpLedgerLogistics = new KwpLedgerLogistics();
-        kwpLedgerLogistics.setId(new IdWorker(1).nextId());
-        kwpLedgerLogistics.setEntId(0L);//todo
-        kwpLedgerLogistics.setLLedgerNo("");//todo
-        kwpLedgerLogistics.setName(logisticsReq.getName());
-        kwpLedgerLogistics.setStartTime(logisticsReq.getStartTime());
-        kwpLedgerLogistics.setEndTime(logisticsReq.getEndTime());
-        kwpLedgerLogistics.setTaxRate(logisticsReq.getTaxRate());//todo 发票税率数据库字段类型
-        kwpLedgerLogistics.setTrading(logisticsReq.getTrading());
-        kwpLedgerLogistics.setTotalPrice(logisticsReq.getTotalPrice());
-        kwpLedgerLogistics.setSettlePrice(logisticsReq.getSettlePrice());
-        //todo 查询运单
-
-        kwpLedgerLogistics.setUnloadAmount(new BigDecimal("0"));
-        kwpLedgerLogistics.setLoadAmount(new BigDecimal("0"));
-        kwpLedgerLogistics.setDeficitAmount(new BigDecimal("0"));
-        kwpLedgerLogistics.setLoseAmount(new BigDecimal("0"));
-        kwpLedgerLogistics.setActualPrice(new BigDecimal("0"));
-        kwpLedgerLogistics.setGenerateTime(null);
-        kwpLedgerLogistics.setUrl("");
-        kwpLedgerLogistics.setRemark(logisticsReq.getRemark());
-        kwpLedgerLogistics.setStatus(LedgerEnum.SAVE.getStatus());
-        kwpLedgerLogistics.setCreateBy(0L);//todo
-        kwpLedgerLogistics.setCreateTime(LocalDateTime.now());
-        kwpLedgerLogistics.setUpdateBy(0L);
-        kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
-        kwpLedgerLogistics.setDelFlag(0);
-        logisticsMapper.insert(kwpLedgerLogistics);
-        /*插入对账关联物流运单*/
-        List<Long> ids = logisticsReq.getIds();
-        for (Long id : ids) {
-            KwpLedgerLogisticsOrder kwpLedgerLogisticsOrder = new KwpLedgerLogisticsOrder();
-            kwpLedgerLogisticsOrder.setId(new IdWorker(1).nextId());
-            kwpLedgerLogisticsOrder.setLLedgerId(kwpLedgerLogistics.getId());
-            kwpLedgerLogisticsOrder.setLOrderId(id);
-            kwpLedgerLogisticsOrder.setRemark("");
-            kwpLedgerLogisticsOrder.setStatus(0);
-            logisticsOrderMapper.insert(kwpLedgerLogisticsOrder);
-        }
-        logisticsTrackService.saveTrack(kwpLedgerLogistics.getId(), "", LedgerTrackEnum.SAVE);
-        return "保存成功";
+        logisticsReq.setGenerateTime(null);
+        logisticsReq.setStatus(LedgerEnum.SAVE.getStatus());
+        Long aLong = saveDraft(logisticsReq);
+        logisticsTrackService.saveTrack(aLong, "", LedgerTrackEnum.SAVE);
+        return "草稿保存成功";
     }
 
     /**
@@ -181,6 +298,10 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
+        backCheck(kwpLedgerLogistics.getStatus());
+        kwpLedgerLogistics.setStatus(LedgerEnum.BACK.getStatus());
+        kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
+        logisticsMapper.updateById(kwpLedgerLogistics);
         return logisticsTrackService.saveTrack(ledgerReq.getId(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
     }
 
@@ -191,11 +312,13 @@ public class KwpLedgerLogisticsService extends AbsLedger {
      * @param confirmReq
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public Integer confirmOrder(LedgerConfirmReq confirmReq) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(confirmReq.getId());
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
+        confirmCheck(kwpLedgerLogistics.getStatus());
         kwpLedgerLogistics.setStatus(LedgerEnum.LEDGERED.getStatus());
         kwpLedgerLogistics.setAuditPhone(confirmReq.getAuditPhone());
         kwpLedgerLogistics.setAuditUser(confirmReq.getAuditUser());
@@ -219,6 +342,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         }
         successCheck(kwpLedgerLogistics.getStatus());
 
+        kwpLedgerLogistics.setReceiptTime(ledgerReq.getReceiptTime());
         kwpLedgerLogistics.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         logisticsMapper.updateById(kwpLedgerLogistics);
@@ -227,16 +351,16 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpSettlementLogistics.setId(new IdWorker(1).nextId());
         kwpSettlementLogistics.setEntId(0L);//todo
         kwpSettlementLogistics.setLLedgerId(kwpLedgerLogistics.getId());
-        kwpSettlementLogistics.setSlOrderNo(String.valueOf(new IdWorker(1).nextId()));//todo
+        kwpSettlementLogistics.setSlOrderNo(OrderGenerateUtils.generateOrderNo("SL"));
         kwpSettlementLogistics.setName(kwpLedgerLogistics.getName());//取物流对账单名称
         kwpSettlementLogistics.setTotalPrice(kwpLedgerLogistics.getTotalPrice());
         kwpSettlementLogistics.setActualPrice(kwpLedgerLogistics.getActualPrice());
-        kwpSettlementLogistics.setReceiptTime(LocalDateTime.now());
         kwpSettlementLogistics.setRemark("");
         kwpSettlementLogistics.setAuditUser(kwpLedgerLogistics.getAuditUser());
         kwpSettlementLogistics.setAuditPhone(kwpLedgerLogistics.getAuditPhone());
         kwpSettlementLogistics.setSuccessUser(ledgerReq.getSuccessUser());
         kwpSettlementLogistics.setSuccessPhone(ledgerReq.getSuccessPhone());
+        kwpSettlementLogistics.setReceiptTime(ledgerReq.getReceiptTime());
         kwpSettlementLogistics.setStatus(0);
         kwpSettlementLogistics.setCreateBy(0L);
         kwpSettlementLogistics.setCreateTime(LocalDateTime.now());
@@ -249,4 +373,24 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         logisticsTrackService.saveTrack(ledgerReq.getId(), "", LedgerTrackEnum.SUCCESS);
         return "对账完成";
     }
+
+    public List<LedgerCountVo> orderCount() {
+        Map<String, Long> map = logisticsMapper.countOrder();
+        LedgerCountVo ledgerCountVo;
+        List<LedgerCountVo> res = new ArrayList<>();
+        for (LedgerEnum value : LedgerEnum.values()) {
+            ledgerCountVo = new LedgerCountVo();
+            ledgerCountVo.setCount(map.get(String.valueOf(value.getStatus())));
+            ledgerCountVo.setLabel(value.getDesc());
+            ledgerCountVo.setStatus(value.getStatus());
+            res.add(ledgerCountVo);
+        }
+        return res;
+    }
+
+    public List<LedgerLogisticsDto> selectList(List<Long> ids) {
+        List<LedgerLogisticsDto> ledgerLogisticsDto = logisticsMapper.selectIds(ids);
+        changeDict(ledgerLogisticsDto);
+        return ledgerLogisticsDto;
+    }
 }

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

@@ -9,6 +9,7 @@ import jakarta.validation.constraints.NotNull;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Objects;
 
@@ -53,4 +54,13 @@ public class KwpLedgerLogisticsTrackService {
     }
 
 
+    public void remove(Long lLedgerId) {
+        LambdaQueryWrapper<KwpLedgerLogisticsTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpLedgerLogisticsTrack::getLLedgerId, lLedgerId);
+        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, 0);
+        KwpLedgerLogisticsTrack logisticsTrack = new KwpLedgerLogisticsTrack();
+        logisticsTrack.setUpdateTime(LocalDateTime.now());
+        logisticsTrack.setDelFlag(1);
+        logisticsTrackMapper.update(logisticsTrack, wrapper);
+    }
 }

+ 30 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsUnitService.java

@@ -1,11 +1,40 @@
 package com.sckw.payment.service;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+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;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * @author xucaiqin
  * @date 2023-07-13 17:32:34
  */
 @Service
-public class KwpLedgerLogisticsUnitService  {
+@AllArgsConstructor
+public class KwpLedgerLogisticsUnitService {
+    private final KwpLedgerLogisticsUnitMapper logisticsUnitMapper;
+
+    public void saveList(List<KwpLedgerLogisticsUnit> logisticsUnits) {
+        if (!CollectionUtils.isEmpty(logisticsUnits)) {
+            for (KwpLedgerLogisticsUnit logisticsUnit : logisticsUnits) {
+                logisticsUnitMapper.insert(logisticsUnit);
+            }
+        }
+    }
 
+    public void remove(Long lLedgerId) {
+        KwpLedgerLogisticsUnit logisticsUnit = new KwpLedgerLogisticsUnit();
+        logisticsUnit.setDelFlag(1);
+        logisticsUnit.setUpdateTime(LocalDateTime.now());
+        LambdaUpdateWrapper<KwpLedgerLogisticsUnit> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(KwpLedgerLogisticsUnit::getLLedgerId, lLedgerId);
+        wrapper.eq(KwpLedgerLogisticsUnit::getDelFlag, 0);
+        logisticsUnitMapper.update(logisticsUnit, wrapper);
+    }
 }

+ 10 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeOrderService.java

@@ -1,12 +1,14 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.payment.dao.KwpLedgerTradeOrderMapper;
 import com.sckw.payment.model.KwpLedgerTradeOrder;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author xucaiqin
@@ -26,4 +28,12 @@ public class KwpLedgerTradeOrderService {
         wrapper.eq(KwpLedgerTradeOrder::getDelFlag, 0);
         tradeOrderMapper.update(kwpLedgerTradeOrder, wrapper);
     }
+
+    public void saveList(List<KwpLedgerTradeOrder> list) {
+        if(!CollectionUtils.isEmpty(list)){
+            for (KwpLedgerTradeOrder kwpLedgerTradeOrder : list) {
+                tradeOrderMapper.insert(kwpLedgerTradeOrder);
+            }
+        }
+    }
 }

+ 141 - 19
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -3,29 +3,34 @@ package com.sckw.payment.service;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.page.PageRes;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
+import com.sckw.core.utils.OrderGenerateUtils;
+import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.payment.dao.KwpLedgerTradeMapper;
-import com.sckw.payment.model.KwpLedgerTrade;
-import com.sckw.payment.model.KwpLedgerTradeTrack;
-import com.sckw.payment.model.KwpLedgerTradeUnit;
-import com.sckw.payment.model.KwpSettlementTrade;
+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.TradeUnitType;
+import com.sckw.payment.model.dto.LedgerCountVo;
 import com.sckw.payment.model.dto.LedgerTradeDto;
 import com.sckw.payment.model.vo.req.*;
-import lombok.AllArgsConstructor;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author xucaiqin
@@ -33,14 +38,44 @@ import java.util.Objects;
  */
 
 @Service
-@AllArgsConstructor
 @Slf4j
 public class KwpLedgerTradeService extends AbsLedger {
-    private final KwpLedgerTradeMapper tradeMapper;
-    private final KwpLedgerTradeTrackService tradeTrackService;
-    private final KwpLedgerTradeOrderService tradeOrderService;
-    private final KwpSettlementTradeService settlementTradeService;
-    private final KwpLedgerTradeUnitService tradeUnitService;
+    @Resource
+    private KwpLedgerTradeMapper tradeMapper;
+    @Resource
+    private KwpLedgerTradeTrackService tradeTrackService;
+    @Resource
+    private KwpLedgerTradeOrderService tradeOrderService;
+    @Resource
+    private KwpSettlementTradeService settlementTradeService;
+    @Resource
+    private KwpLedgerTradeUnitService tradeUnitService;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private TradeOrderInfoService tradeOrderInfoService;
+
+    private void changeDict(List<LedgerTradeDto> list) {
+        List<SysDictResDto> taxRateDict = remoteSystemService.queryDictByType(DictTypeEnum.TAX_RATE.getType());
+        Map<String, String> taxRateMap = new HashMap<>();
+        Map<String, String> tradingMap = new HashMap<>();
+
+        if (!CollectionUtils.isEmpty(taxRateDict)) {
+            taxRateMap = taxRateDict.stream().collect(Collectors.toMap(SysDictResDto::getValue, SysDictResDto::getLabel, (a, b) -> a));
+        }
+        List<SysDictResDto> tradingDict = remoteSystemService.queryDictByType(DictTypeEnum.TRADE_TYPE.getType());
+        if (!CollectionUtils.isEmpty(tradingDict)) {
+            tradingMap = tradingDict.stream().collect(Collectors.toMap(SysDictResDto::getValue, SysDictResDto::getLabel, (a, b) -> a));
+        }
+        for (LedgerTradeDto tradeDto : list) {
+            Integer trading = tradeDto.getTrading();
+            tradeDto.setTradingLabel(tradingMap.get(String.valueOf(trading)));
+            Integer taxRate = tradeDto.getTaxRate();
+            tradeDto.setTaxRateLabel(taxRateMap.get(String.valueOf(taxRate)));
+
+            tradeDto.setStatusLabel(LedgerEnum.getDesc(tradeDto.getStatus()));
+        }
+    }
 
     /**
      * 分页查询对账单列表
@@ -51,6 +86,10 @@ public class KwpLedgerTradeService extends AbsLedger {
     public PageRes<LedgerTradeDto> pageList(TradeReq tradeReq) {
         PageHelper.startPage(tradeReq.getPage(), tradeReq.getPageSize());
         List<LedgerTradeDto> ledgerTradeDto = tradeMapper.pageSelect(tradeReq);
+        //字典转换
+        if (!CollectionUtils.isEmpty(ledgerTradeDto)) {
+            changeDict(ledgerTradeDto);
+        }
         return new PageRes<>(new PageInfo<>(ledgerTradeDto));
     }
 
@@ -67,27 +106,30 @@ public class KwpLedgerTradeService extends AbsLedger {
         KwpLedgerTrade kwpLedgerTrade = new KwpLedgerTrade();
         kwpLedgerTrade.setId(Objects.isNull(tradeSendReq.getId()) ? new IdWorker(1).nextId() : tradeSendReq.getId());
         kwpLedgerTrade.setEntId(0L);//todo
-        kwpLedgerTrade.setTLedgerNo("");
         kwpLedgerTrade.setName(tradeSendReq.getName());
         kwpLedgerTrade.setStartTime(tradeSendReq.getStartTime());
         kwpLedgerTrade.setEndTime(tradeSendReq.getEndTime());
         kwpLedgerTrade.setTaxRate(tradeSendReq.getTaxRate());
-        kwpLedgerTrade.setTrading(0L);
+        kwpLedgerTrade.setTrading(tradeSendReq.getTrading());
         kwpLedgerTrade.setTotalPrice(tradeSendReq.getTotalPrice());
+        kwpLedgerTrade.setExTaxPrice(tradeSendReq.getTotalPrice());//todo 不含税金额计算方式:订单含税金额总和/1.13(税率)
         kwpLedgerTrade.setSettlePrice(tradeSendReq.getSettlePrice());
         kwpLedgerTrade.setActualPrice(new BigDecimal("0.0"));
         kwpLedgerTrade.setAuditUser("");
         kwpLedgerTrade.setAuditPhone("");
         kwpLedgerTrade.setGenerateTime(tradeSendReq.getGenerateTime());
+        kwpLedgerTrade.setReceiptTime(null);
+        kwpLedgerTrade.setOrderCount(tradeSendReq.getIds().size());
         kwpLedgerTrade.setUrl("");
         kwpLedgerTrade.setRemark("");
-        kwpLedgerTrade.setStatus(LedgerEnum.SAVE.getStatus());
+        kwpLedgerTrade.setStatus(tradeSendReq.getStatus());
         kwpLedgerTrade.setCreateBy(0L);
         kwpLedgerTrade.setCreateTime(LocalDateTime.now());
         kwpLedgerTrade.setUpdateBy(0L);
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         kwpLedgerTrade.setDelFlag(0);
         if (Objects.isNull(tradeSendReq.getId())) {
+            kwpLedgerTrade.setTLedgerNo(OrderGenerateUtils.generateOrderNo("TL"));
             tradeMapper.insert(kwpLedgerTrade);
         } else {
             tradeMapper.updateById(kwpLedgerTrade);
@@ -96,6 +138,29 @@ public class KwpLedgerTradeService extends AbsLedger {
         /*保存贸易订单关联数据*/
         List<Long> ids = tradeSendReq.getIds();
         //todo dubbo拿取销售订单数据
+        List<OrderDetailRes> resList = new ArrayList<>();
+        for (Long id : ids) {
+            OrderDetailRes orderDetailById = tradeOrderInfoService.getOrderDetailById(id);
+            if (Objects.isNull(orderDetailById)) {
+                throw new BusinessException("订单未找到");
+            }
+            resList.add(orderDetailById);
+        }
+        List<KwpLedgerTradeOrder> collect = resList.stream().map(a -> {
+            KwpLedgerTradeOrder kwpLedgerTradeOrder = new KwpLedgerTradeOrder();
+            kwpLedgerTradeOrder.setId(new IdWorker(1).nextId());
+            kwpLedgerTradeOrder.setTLedgerId(kwpLedgerTrade.getId());
+            kwpLedgerTradeOrder.setTOrderId(a.getId());
+            kwpLedgerTradeOrder.setRemark("");
+            kwpLedgerTradeOrder.setStatus(0);
+            kwpLedgerTradeOrder.setCreateBy(0L);
+            kwpLedgerTradeOrder.setCreateTime(LocalDateTime.now());
+            kwpLedgerTradeOrder.setUpdateBy(0L);
+            kwpLedgerTradeOrder.setUpdateTime(LocalDateTime.now());
+            kwpLedgerTradeOrder.setDelFlag(0);
+            return kwpLedgerTradeOrder;
+        }).collect(Collectors.toList());
+        tradeOrderService.saveList(collect);
         /*保存企业单位相关信息*/
         //todo dubbo拿取采购客户单位的信息
         Long purchaseEntId = tradeSendReq.getPurchaseEntId();
@@ -119,6 +184,26 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpLedgerTradeUnit.setDelFlag(0);
 
         list.add(kwpLedgerTradeUnit);
+        //非客户企业方,通过登录用户获取顶级企业
+        KwpLedgerTradeUnit sellLedgerTradeUnit = new KwpLedgerTradeUnit();
+        sellLedgerTradeUnit.setId(new IdWorker(1).nextId());
+        sellLedgerTradeUnit.setTLedgerId(kwpLedgerTrade.getId());
+        sellLedgerTradeUnit.setTLedgerNo(kwpLedgerTrade.getTLedgerNo());
+        sellLedgerTradeUnit.setUnitType(TradeUnitType.SELL);
+        sellLedgerTradeUnit.setEntId(purchaseEntId);//todo
+        sellLedgerTradeUnit.setTopEntId(0L);
+        sellLedgerTradeUnit.setFirmName("");
+        sellLedgerTradeUnit.setContacts("");
+        sellLedgerTradeUnit.setPhone("");
+        sellLedgerTradeUnit.setRemark("");
+        sellLedgerTradeUnit.setStatus(0);
+        sellLedgerTradeUnit.setCreateBy(0L);
+        sellLedgerTradeUnit.setCreateTime(LocalDateTime.now());
+        sellLedgerTradeUnit.setUpdateBy(0L);
+        sellLedgerTradeUnit.setUpdateTime(LocalDateTime.now());
+        sellLedgerTradeUnit.setDelFlag(0);
+        list.add(sellLedgerTradeUnit);
+
         tradeUnitService.saveList(list);
         return kwpLedgerTrade.getId();
     }
@@ -131,10 +216,12 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String sendLedger(TradeSendReq tradeSendReq) {
+        log.info("保存对账单入参:{}", JSONObject.toJSONString(tradeSendReq));
         Long id = tradeSendReq.getId();
         if (Objects.isNull(id)) {
             //新增
             tradeSendReq.setGenerateTime(LocalDateTime.now());
+            tradeSendReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(tradeSendReq);
             tradeTrackService.saveTrack(aLong, "", LedgerTrackEnum.TO_LEDGER);
         } else {
@@ -142,6 +229,7 @@ public class KwpLedgerTradeService extends AbsLedger {
             removeDraft(id);
             //在新增
             tradeSendReq.setGenerateTime(LocalDateTime.now());
+            tradeSendReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(tradeSendReq);
             tradeTrackService.saveTrack(aLong, "", LedgerTrackEnum.TO_LEDGER);
 
@@ -159,6 +247,7 @@ public class KwpLedgerTradeService extends AbsLedger {
     public String sendLedgerDraft(TradeSendReq tradeSendReq) {
         log.info("贸易对账单保存草稿:{}", JSONObject.toJSONString(tradeSendReq));
         tradeSendReq.setGenerateTime(null);
+        tradeSendReq.setStatus(LedgerEnum.SAVE.getStatus());
         Long aLong = saveDraft(tradeSendReq);
         tradeTrackService.saveTrack(aLong, "", LedgerTrackEnum.SAVE);
         return "草稿保存成功";
@@ -172,6 +261,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         }
         deleteCheck(kwpLedgerTrade.getStatus());
         kwpLedgerTrade.setDelFlag(1);
+        kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
         tradeTrackService.saveTrack(kwpLedgerTrade.getId(), "", LedgerTrackEnum.DELETE);
         return "删除成功";
@@ -203,7 +293,6 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     public List<KwpLedgerTradeTrack> queryBack(Long id) {
         return tradeTrackService.selectList(id, LedgerTrackEnum.REJECT);
-
     }
 
     /**
@@ -217,6 +306,10 @@ public class KwpLedgerTradeService extends AbsLedger {
         if (Objects.isNull(kwpLedgerTrade)) {
             throw new BusinessException("对账单不存在!");
         }
+        backCheck(kwpLedgerTrade.getStatus());
+        kwpLedgerTrade.setStatus(LedgerEnum.BACK.getStatus());
+        kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
+        tradeMapper.updateById(kwpLedgerTrade);
         return tradeTrackService.saveTrack(ledgerReq.getId(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
     }
 
@@ -226,11 +319,13 @@ public class KwpLedgerTradeService extends AbsLedger {
      * @param confirmReq
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public Integer confirmOrder(LedgerConfirmReq confirmReq) {
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(confirmReq.getId());
         if (Objects.isNull(kwpLedgerTrade)) {
             throw new BusinessException("对账单不存在!");
         }
+        confirmCheck(kwpLedgerTrade.getStatus());
         kwpLedgerTrade.setStatus(LedgerEnum.LEDGERED.getStatus());
         kwpLedgerTrade.setAuditPhone(confirmReq.getAuditPhone());
         kwpLedgerTrade.setAuditUser(confirmReq.getAuditUser());
@@ -254,6 +349,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         }
         successCheck(kwpLedgerTrade.getStatus());
 
+        kwpLedgerTrade.setReceiptTime(ledgerReq.getReceiptTime());
         kwpLedgerTrade.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
@@ -262,11 +358,16 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpSettlementTrade.setId(new IdWorker(1).nextId());
         kwpSettlementTrade.setEntId(0L);//todo
         kwpSettlementTrade.setTLedgerId(kwpLedgerTrade.getId());
-        kwpSettlementTrade.setStOrderNo(String.valueOf(new IdWorker(1).nextId()));
+        kwpSettlementTrade.setStOrderNo(OrderGenerateUtils.generateOrderNo("ST"));
         kwpSettlementTrade.setName(kwpLedgerTrade.getName());
         kwpSettlementTrade.setTotalPrice(kwpLedgerTrade.getTotalPrice());
         kwpSettlementTrade.setActualPrice(kwpLedgerTrade.getActualPrice());
         kwpSettlementTrade.setRemark("");
+        kwpSettlementTrade.setAuditUser(kwpLedgerTrade.getAuditUser());
+        kwpSettlementTrade.setAuditPhone(kwpLedgerTrade.getAuditPhone());
+        kwpSettlementTrade.setSuccessUser(ledgerReq.getSuccessUser());
+        kwpSettlementTrade.setSuccessPhone(ledgerReq.getSuccessPhone());
+        kwpSettlementTrade.setReceiptTime(ledgerReq.getReceiptTime());
         kwpSettlementTrade.setStatus(0);
         kwpSettlementTrade.setCreateBy(0L);
         kwpSettlementTrade.setCreateTime(LocalDateTime.now());
@@ -278,4 +379,25 @@ public class KwpLedgerTradeService extends AbsLedger {
         tradeTrackService.saveTrack(ledgerReq.getId(), "", LedgerTrackEnum.SUCCESS);
         return "对账完成";
     }
+
+    public List<LedgerCountVo> orderCount() {
+        Map<String, Long> map = tradeMapper.countOrder();
+        LedgerCountVo ledgerCountVo;
+        List<LedgerCountVo> res = new ArrayList<>();
+        for (LedgerEnum value : LedgerEnum.values()) {
+            ledgerCountVo = new LedgerCountVo();
+            ledgerCountVo.setCount(map.get(String.valueOf(value.getStatus())));
+            ledgerCountVo.setLabel(value.getDesc());
+            ledgerCountVo.setStatus(value.getStatus());
+            res.add(ledgerCountVo);
+        }
+        return res;
+    }
+
+    public List<LedgerTradeDto> selectList(List<Long> ids) {
+        List<LedgerTradeDto> ledgerTradeDto = tradeMapper.selectIds(ids);
+        changeDict(ledgerTradeDto);
+        return ledgerTradeDto;
+    }
+
 }

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

@@ -48,7 +48,7 @@ public class KwpLedgerTradeTrackService {
      */
     public List<KwpLedgerTradeTrack> selectList(@NotNull Long id, LedgerTrackEnum status) {
         LambdaQueryWrapper<KwpLedgerTradeTrack> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(KwpLedgerTradeTrack::getId, id);
+        wrapper.eq(KwpLedgerTradeTrack::getTLedgerId, id);
         wrapper.eq(Objects.nonNull(status), KwpLedgerTradeTrack::getStatus, status.getStatus());
         wrapper.eq(KwpLedgerTradeTrack::getDelFlag, 0);
         return tradeTrackMapper.selectList(wrapper);

+ 1 - 1
sckw-modules/sckw-payment/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-system"/>
+        <property name="LOG_PATH" value="logs/sckw-payment"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

+ 0 - 199
sckw-modules/sckw-payment/src/main/resources/logback-spring.xml

@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
-<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
-<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
-                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
-<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
-<configuration  scan="true" scanPeriod="10 seconds">
-    <contextName>logback</contextName>
-    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
-
-    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/logs/${applicationName}" />
-
-    <!--0. 日志格式和颜色渲染 -->
-    <!-- 彩色日志依赖的渲染类 -->
-    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
-    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
-    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
-    <!-- 彩色日志格式 -->
-    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
-
-    <!--1. 输出到控制台-->
-    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>debug</level>
-        </filter>
-        <encoder>
-            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
-            <!-- 设置字符集 -->
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <!--2. 输出到文档-->
-    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
-    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_debug.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志归档 -->
-            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录debug级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>debug</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
-    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_info.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 每天日志归档路径以及格式 -->
-            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录info级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>info</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
-    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_warn.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录warn级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>warn</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
-    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${log.path}/web_error.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录ERROR级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>ERROR</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!--
-        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
-        以及指定<appender>。<logger>仅有一个name属性,
-        一个可选的level和一个可选的addtivity属性。
-        name:用来指定受此logger约束的某一个包或者具体的某一个类。
-        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
-              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
-              如果未设置此属性,那么当前logger将会继承上级的级别。
-        addtivity:是否向上级logger传递打印信息。默认是true。
-        <logger name="org.springframework.web" level="info"/>
-        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
-    -->
-    <!-- hibernate logger -->
-    <logger name="com.atguigu" level="debug" />
-    <!-- Spring framework logger -->
-    <logger name="org.springframework" level="debug" additivity="false"></logger>
-
-
-    <!--
-        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
-        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
-        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
-        【logging.level.org.mybatis=debug logging.level.dao=debug】
-     -->
-
-    <!--
-        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
-        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
-        不能设置为INHERITED或者同义词NULL。默认是DEBUG
-        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
-    -->
-
-    <!-- 4. 最终的策略 -->
-    <!-- 4.1 开发环境:打印控制台-->
-    <springProfile name="dev">
-        <logger name="com.sdcm.pmp" level="debug"/>
-    </springProfile>
-
-    <root level="info">
-        <appender-ref ref="CONSOLE" />
-        <appender-ref ref="DEBUG_FILE" />
-        <appender-ref ref="INFO_FILE" />
-        <appender-ref ref="WARN_FILE" />
-        <appender-ref ref="ERROR_FILE" />
-    </root>
-
-    <!-- 4.2 生产环境:输出到文档-->
-    <springProfile name="pro">
-        <root level="info">
-            <appender-ref ref="CONSOLE" />
-            <appender-ref ref="DEBUG_FILE" />
-            <appender-ref ref="INFO_FILE" />
-            <appender-ref ref="ERROR_FILE" />
-            <appender-ref ref="WARN_FILE" />
-        </root>
-    </springProfile>
-
-</configuration>

+ 138 - 94
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml

@@ -1,113 +1,157 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.payment.dao.KwpLedgerLogisticsMapper">
-  <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpLedgerLogistics">
-    <!--@mbg.generated-->
-    <!--@Table kwp_ledger_logistics-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="ent_id" jdbcType="BIGINT" property="entId" />
-    <result column="l_ledger_no" jdbcType="VARCHAR" property="lLedgerNo" />
-    <result column="name" jdbcType="VARCHAR" property="name" />
-    <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
-    <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
-    <result column="tax_rate" jdbcType="INTEGER" property="taxRate" />
-    <result column="trading" jdbcType="INTEGER" property="trading" />
-    <result column="unload_amount" jdbcType="DECIMAL" property="unloadAmount" />
-    <result column="load_amount" jdbcType="DECIMAL" property="loadAmount" />
-    <result column="deficit_amount" jdbcType="DECIMAL" property="deficitAmount" />
-    <result column="lose_amount" jdbcType="DECIMAL" property="loseAmount" />
-    <result column="total_price" jdbcType="DECIMAL" property="totalPrice" />
-    <result column="settle_price" jdbcType="DECIMAL" property="settlePrice" />
-    <result column="actual_price" jdbcType="DECIMAL" property="actualPrice" />
-    <result column="audit_user" jdbcType="VARCHAR" property="auditUser" />
-    <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone" />
-    <result column="url" jdbcType="VARCHAR" property="url" />
-    <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime" />
-    <result column="remark" jdbcType="VARCHAR" property="remark" />
-    <result column="status" jdbcType="INTEGER" property="status" />
-    <result column="create_by" jdbcType="BIGINT" property="createBy" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, ent_id, l_ledger_no, `name`, start_time, end_time, tax_rate, trading, unload_amount, 
-    load_amount, deficit_amount, lose_amount, total_price, settle_price, actual_price, 
-    audit_user, audit_phone, url, generate_time, remark, `status`, create_by, create_time, 
-    update_by, update_time, del_flag
-  </sql>
+    <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpLedgerLogistics">
+        <!--@mbg.generated-->
+        <!--@Table kwp_ledger_logistics-->
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="ent_id" jdbcType="BIGINT" property="entId"/>
+        <result column="l_ledger_no" jdbcType="VARCHAR" property="lLedgerNo"/>
+        <result column="name" jdbcType="VARCHAR" property="name"/>
+        <result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
+        <result column="end_time" jdbcType="TIMESTAMP" property="endTime"/>
+        <result column="tax_rate" jdbcType="INTEGER" property="taxRate"/>
+        <result column="trading" jdbcType="INTEGER" property="trading"/>
+        <result column="total_price" jdbcType="DECIMAL" property="totalPrice"/>
+        <result column="ex_tax_price" jdbcType="DECIMAL" property="exTaxPrice"/>
+        <result column="settle_price" jdbcType="DECIMAL" property="settlePrice"/>
+        <result column="actual_price" jdbcType="DECIMAL" property="actualPrice"/>
+        <result column="audit_user" jdbcType="VARCHAR" property="auditUser"/>
+        <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone"/>
+        <result column="url" jdbcType="VARCHAR" property="url"/>
+        <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime"/>
+        <result column="receipt_time" jdbcType="TIMESTAMP" property="receiptTime"/>
+        <result column="order_count" jdbcType="INTEGER" property="orderCount"/>
+        <result column="remark" jdbcType="VARCHAR" property="remark"/>
+        <result column="status" jdbcType="INTEGER" property="status"/>
+        <result column="create_by" jdbcType="BIGINT" property="createBy"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_by" jdbcType="BIGINT" property="updateBy"/>
+        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="del_flag" jdbcType="INTEGER" property="delFlag"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id,
+        ent_id,
+        l_ledger_no,
+        `name`,
+        start_time,
+        end_time,
+        tax_rate,
+        trading,
+        total_price,
+        ex_tax_price,
+        settle_price,
+        actual_price,
+        audit_user,
+        audit_phone,
+        url,
+        generate_time,
+        receipt_time,
+        order_count,
+        remark,
+        `status`,
+        create_by,
+        create_time,
+        update_by,
+        update_time,
+        del_flag
+    </sql>
 
     <select id="pageSelect" resultType="com.sckw.payment.model.dto.LedgerLogisticsDto">
         select kll.id,
-               kll.l_ledger_no    lLedgerNo,
+               kll.l_ledger_no   lLedgerNo,
                kll.name,
-               kll.start_time     startTime,
-               kll.end_time       endTime,
-               kll.tax_rate       taxRate,
+               kll.start_time    startTime,
+               kll.end_time      endTime,
+               kll.tax_rate      taxRate,
                kll.trading,
-               kll.unload_amount  unloadAmount,
-               kll.load_amount    loadAmount,
-               kll.deficit_amount deficitAmount,
-               kll.lose_amount    loseAmount,
-               kll.total_price    totalPrice,
-               kll.settle_price   settlePrice,
-               kll.actual_price   actualPrice,
+               kll.total_price   totalPrice,
+               kll.ex_tax_price  exTaxPrice,
+               kll.settle_price  settlePrice,
+               kll.actual_price  actualPrice,
+               kll.audit_phone   auditPhone,
+               kll.audit_user    auditUser,
                kll.url,
-               kll.generate_time  generateTime,
+               kll.generate_time generateTime,
+               kll.receipt_time  receiptTime,
                kll.remark,
                kll.status,
-               count(kllo.id)     orderCount
+               kllu.contacts,
+               kllu.phone,
+               kllu.firm_name    firmName,
+               kll.order_count   orderCount
         from kwp_ledger_logistics kll
-                 inner join kwp_ledger_logistics_order kllo on kll.id = kllo.l_ledger_id
+                 inner join kwp_ledger_logistics_unit kllu on kll.id = kllu.l_ledger_id and kllu.del_flag = 0
         <where>
-            <choose>
-                <when test="ids != null and ids.size() != 0">
-                    kll.id in
-                    <foreach close=")" collection="ids" item="id" open="" separator=",">
-                        #{id,jdbcType=BIGINT}
-                    </foreach>
-                </when>
-                <otherwise>
-
-                    kll.del_flag = 0
-                      and kllo.del_flag = 0
+            kll.del_flag = 0
+              and kllu.unit_type = 1
+            <if test="logisticsReq.status != null">
+                and kll.status = #{logisticsReq.status}
+            </if>
+            <if test="logisticsReq.trading != null">
+                and kll.trading = #{logisticsReq.trading,jdbcType=INTEGER}
+            </if>
+            <if test="logisticsReq.startCreateTime != null and logisticsReq.endCreateTime != null">
+                and kll.generate_time between #{logisticsReq.startCreateTime,jdbcType=TIMESTAMP}
+                    and #{logisticsReq.endCreateTime,jdbcType=TIMESTAMP}
+            </if>
+            <if test="logisticsReq.keywords != null and logisticsReq.keywords != ''">
+                and (
+                            kll.l_ledger_no like concat('%', #{logisticsReq.keywords,jdbcType=VARCHAR}, '%')
+                        or kllu.firm_name like concat('%', #{logisticsReq.keywords,jdbcType=VARCHAR}, '%')
+                        or kllu.contacts like concat('%', #{logisticsReq.keywords,jdbcType=VARCHAR}, '%')
+                    )
+            </if>
+        </where>
+        order by kll.generate_time desc
+    </select>
 
-                    <if test="logisticsReq.status != null">
+    <select id="countOrder" resultType="java.util.Map">
+        SELECT count(1)                         "0",
+               count(IF(`status` = 1, 1, NULL)) "1",
+               count(IF(`status` = 2, 1, NULL)) "2",
+               count(IF(`status` = 3, 1, NULL)) "3",
+               count(IF(`status` = 4, 1, NULL)) "4",
+               count(IF(`status` = 5, 1, NULL)) "5"
+        FROM `kwp_ledger_logistics`
+        WHERE del_flag = 0;
+    </select>
 
-                        and kll.status = #{logisticsReq.status}
-                    </if>
-                    <if test="logisticsReq.trading != null">
-                        and kll.trading = #{logisticsReq.trading,jdbcType=INTEGER}
-                    </if>
-                    <if test="logisticsReq.startCreateTime != null and logisticsReq.endCreateTime != null">
-                        and kll.generate_time between #{logisticsReq.startCreateTime,jdbcType=TIMESTAMP}
-                        and #{logisticsReq.endCreateTime,jdbcType=TIMESTAMP}
-                    </if>
-                    <if test="logisticsReq.keywords != null and logisticsReq.keywords != ''">
-                        and (
-                            kll.l_ledger_no like concat('%'
-                          , #{logisticsReq.keywords}
-                          , '%')
-                         or kll.check_user like concat('%'
-                          , #{logisticsReq.keywords}
-                          , '%')
-                        <if test="ids != null and ids.size() != 0">
-                            or kll.check_ent_id in
-                            <foreach close=")" collection="ids" item="item" open="(" separator=",">
-                                #{item,jdbcType=BIGINT}
-                            </foreach>
-                        </if>
-                        )
-                    </if>
-                </otherwise>
-            </choose>
+    <select id="selectIds" resultType="com.sckw.payment.model.dto.LedgerLogisticsDto">
+        select kll.id,
+        kll.l_ledger_no   lLedgerNo,
+        kll.name,
+        kll.start_time    startTime,
+        kll.end_time      endTime,
+        kll.tax_rate      taxRate,
+        kll.trading,
+        kll.total_price   totalPrice,
+        kll.ex_tax_price  exTaxPrice,
+        kll.settle_price  settlePrice,
+        kll.actual_price  actualPrice,
+        kll.audit_phone   auditPhone,
+        kll.audit_user    auditUser,
+        kll.url,
+        kll.generate_time generateTime,
+        kll.receipt_time  receiptTime,
+        kll.remark,
+        kll.status,
+        kllu.contacts,
+        kllu.phone,
+        kllu.firm_name    firmName,
+        kll.order_count   orderCount
+        from kwp_ledger_logistics kll
+        inner join kwp_ledger_logistics_unit kllu on kll.id = kllu.l_ledger_id and kllu.del_flag = 0
+        <where>
+            kll.del_flag = 0
+            and kllu.unit_type = 1
+            and kll.id in
+            <foreach collection="ids" item="id" close=")" open="(" separator=",">
+                #{id,jdbcType=BIGINT}
+            </foreach>
         </where>
-        group by kll.id, kll.check_ent_id, kll.carrier_ent_id, kll.l_ledger_no, kll.name, kll.start_time, kll.end_time,
-            kll.tax_rate, kll.trading, kll.unload_amount, kll.load_amount, kll.deficit_amount, kll.lose_amount,
-            kll.total_price, kll.settle_price, kll.actual_price, kll.check_phone, kll.check_user,
-            kll.carrier_phone, kll.carrier_user, kll.url, kll.generate_time, kll.remark, kll.status
         order by kll.generate_time desc
     </select>
 </mapper>

+ 152 - 78
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -1,83 +1,157 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.payment.dao.KwpLedgerTradeMapper">
-  <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpLedgerTrade">
-    <!--@mbg.generated-->
-    <!--@Table kwp_ledger_trade-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="ent_id" jdbcType="BIGINT" property="entId" />
-    <result column="t_ledger_no" jdbcType="VARCHAR" property="tLedgerNo" />
-    <result column="name" jdbcType="VARCHAR" property="name" />
-    <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
-    <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
-    <result column="tax_rate" jdbcType="INTEGER" property="taxRate" />
-    <result column="trading" jdbcType="BIGINT" property="trading" />
-    <result column="total_price" jdbcType="DECIMAL" property="totalPrice" />
-    <result column="settle_price" jdbcType="DECIMAL" property="settlePrice" />
-    <result column="actual_price" jdbcType="DECIMAL" property="actualPrice" />
-    <result column="audit_user" jdbcType="VARCHAR" property="auditUser" />
-    <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone" />
-    <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime" />
-    <result column="url" jdbcType="VARCHAR" property="url" />
-    <result column="remark" jdbcType="VARCHAR" property="remark" />
-    <result column="status" jdbcType="INTEGER" property="status" />
-    <result column="create_by" jdbcType="BIGINT" property="createBy" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, ent_id, t_ledger_no, `name`, start_time, end_time, tax_rate, trading, total_price, 
-    settle_price, actual_price, audit_user, audit_phone, generate_time, url, remark, 
-    `status`, create_by, create_time, update_by, update_time, del_flag
-  </sql>
+    <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpLedgerTrade">
+        <!--@mbg.generated-->
+        <!--@Table kwp_ledger_trade-->
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="ent_id" jdbcType="BIGINT" property="entId"/>
+        <result column="t_ledger_no" jdbcType="VARCHAR" property="tLedgerNo"/>
+        <result column="name" jdbcType="VARCHAR" property="name"/>
+        <result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
+        <result column="end_time" jdbcType="TIMESTAMP" property="endTime"/>
+        <result column="tax_rate" jdbcType="INTEGER" property="taxRate"/>
+        <result column="trading" jdbcType="INTEGER" property="trading"/>
+        <result column="total_price" jdbcType="DECIMAL" property="totalPrice"/>
+        <result column="ex_tax_price" jdbcType="DECIMAL" property="exTaxPrice"/>
+        <result column="settle_price" jdbcType="DECIMAL" property="settlePrice"/>
+        <result column="actual_price" jdbcType="DECIMAL" property="actualPrice"/>
+        <result column="audit_user" jdbcType="VARCHAR" property="auditUser"/>
+        <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone"/>
+        <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime"/>
+        <result column="receipt_time" jdbcType="TIMESTAMP" property="receiptTime"/>
+        <result column="url" jdbcType="VARCHAR" property="url"/>
+        <result column="order_count" jdbcType="INTEGER" property="orderCount"/>
+        <result column="remark" jdbcType="VARCHAR" property="remark"/>
+        <result column="status" jdbcType="INTEGER" property="status"/>
+        <result column="create_by" jdbcType="BIGINT" property="createBy"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_by" jdbcType="BIGINT" property="updateBy"/>
+        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="del_flag" jdbcType="INTEGER" property="delFlag"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id,
+        ent_id,
+        t_ledger_no,
+        `name`,
+        start_time,
+        end_time,
+        tax_rate,
+        trading,
+        total_price,
+        ex_tax_price,
+        settle_price,
+        actual_price,
+        audit_user,
+        audit_phone,
+        generate_time,
+        receipt_time,
+        url,
+        order_count,
+        remark,
+        `status`,
+        create_by,
+        create_time,
+        update_by,
+        update_time,
+        del_flag
+    </sql>
 
-  <select id="pageSelect" resultType="com.sckw.payment.model.dto.LedgerTradeDto">
-      select klt.id,
-             klt.t_ledger_no   tLedgerNo,
-             klt.name,
-             klt.start_time    startTime,
-             klt.end_time      endTime,
-             klt.tax_rate      taxRate,
-             klt.trading,
-             klt.total_price   totalPrice,
-             klt.settle_price  settlePrice,
-             klt.actual_price  actualPrice,
-             klt.url,
-             klt.generate_time generateTime,
-             klt.remark,
-             klt.status,
-             kltu.contacts,
-             kltu.phone,
-             kltu.firm_name    firmName,
-             count(klto.id)    orderCount
-      from kwp_ledger_trade klt
-               inner join kwp_ledger_trade_order klto on klt.id = klto.t_ledger_id and klto.del_flag = 0
-               inner join kwp_ledger_trade_unit kltu on klt.id = kltu.t_ledger_id and kltu.del_flag = 0
-      <where>
-          klt.del_flag = 0
-          <if test="tradeReq.status != null">
-              and klt.status = #{tradeReq.status}
-          </if>
-          <if test="tradeReq.trading != null">
-              and klt.trading = #{tradeReq.trading,jdbcType=INTEGER}
-          </if>
-          <if test="tradeReq.startCreateTime != null and tradeReq.endCreateTime != null">
-              and klt.generate_time between #{tradeReq.startCreateTime,jdbcType=TIMESTAMP} and #{tradeReq.endCreateTime,jdbcType=TIMESTAMP}
-          </if>
-          <if test="tradeReq.keywords != null and tradeReq.keywords != ''">
-              and (
-                          klt.t_ledger_no like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
-                      or kltu.firm_name like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
-                      or kltu.contacts like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
-                  )
-          </if>
-      </where>
-      group by klt.id, klt.t_ledger_no, klt.name, klt.start_time, klt.end_time, klt.tax_rate, klt.trading,
-               klt.total_price, klt.settle_price, klt.actual_price, klt.url, klt.generate_time, klt.remark, klt.status,
-               kltu.contacts, kltu.phone, kltu.firm_name
-      order by klt.generate_time desc
-  </select>
+    <select id="pageSelect" resultType="com.sckw.payment.model.dto.LedgerTradeDto">
+        select klt.id,
+               klt.t_ledger_no   tLedgerNo,
+               klt.name,
+               klt.start_time    startTime,
+               klt.end_time      endTime,
+               klt.tax_rate      taxRate,
+               klt.trading,
+               klt.total_price   totalPrice,
+               klt.ex_tax_price  exTaxPrice,
+               klt.settle_price  settlePrice,
+               klt.actual_price  actualPrice,
+               klt.audit_phone   auditPhone,
+               klt.audit_user    auditUser,
+               klt.url,
+               klt.generate_time generateTime,
+               klt.receipt_time  receiptTime,
+               klt.remark,
+               klt.status,
+               kltu.contacts,
+               kltu.phone,
+               kltu.firm_name    firmName,
+               klt.order_count   orderCount
+        from kwp_ledger_trade klt
+                 inner join kwp_ledger_trade_unit kltu on klt.id = kltu.t_ledger_id and kltu.del_flag = 0
+        <where>
+            klt.del_flag = 0
+              and kltu.unit_type = 1
+            <if test="tradeReq.status != null">
+                and klt.status = #{tradeReq.status}
+            </if>
+            <if test="tradeReq.trading != null">
+                and klt.trading = #{tradeReq.trading,jdbcType=INTEGER}
+            </if>
+            <if test="tradeReq.startCreateTime != null and tradeReq.endCreateTime != null">
+                and klt.generate_time between #{tradeReq.startCreateTime,jdbcType=TIMESTAMP} and
+                    #{tradeReq.endCreateTime,jdbcType=TIMESTAMP}
+            </if>
+            <if test="tradeReq.keywords != null and tradeReq.keywords != ''">
+                and (
+                            klt.t_ledger_no like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
+                        or kltu.firm_name like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
+                        or kltu.contacts like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
+                    )
+            </if>
+        </where>
+        order by klt.generate_time desc
+    </select>
+
+    <select id="countOrder" resultType="java.util.Map">
+        SELECT count(1)                         "0",
+               count(IF(`status` = 1, 1, NULL)) "1",
+               count(IF(`status` = 2, 1, NULL)) "2",
+               count(IF(`status` = 3, 1, NULL)) "3",
+               count(IF(`status` = 4, 1, NULL)) "4",
+               count(IF(`status` = 5, 1, NULL)) "5"
+        FROM `kwp_ledger_trade`
+        WHERE del_flag = 0;
+    </select>
+
+    <select id="selectIds" resultType="com.sckw.payment.model.dto.LedgerTradeDto">
+        select klt.id,
+               klt.t_ledger_no   tLedgerNo,
+               klt.name,
+               klt.start_time    startTime,
+               klt.end_time      endTime,
+               klt.tax_rate      taxRate,
+               klt.trading,
+               klt.total_price   totalPrice,
+               klt.ex_tax_price  exTaxPrice,
+               klt.settle_price  settlePrice,
+               klt.actual_price  actualPrice,
+               klt.audit_phone   auditPhone,
+               klt.audit_user    auditUser,
+               klt.url,
+               klt.generate_time generateTime,
+               klt.receipt_time  receiptTime,
+               klt.remark,
+               klt.status,
+               kltu.contacts,
+               kltu.phone,
+               kltu.firm_name    firmName,
+               klt.order_count   orderCount
+        from kwp_ledger_trade klt
+                 inner join kwp_ledger_trade_unit kltu on klt.id = kltu.t_ledger_id and kltu.del_flag = 0
+        <where>
+            klt.del_flag = 0
+              and kltu.unit_type = 1
+              and klt.id in
+            <foreach collection="ids" item="id" close=")" open="(" separator=",">
+                #{id,jdbcType=BIGINT}
+            </foreach>
+        </where>
+        order by klt.generate_time desc
+    </select>
 </mapper>

+ 8 - 2
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml

@@ -11,6 +11,11 @@
     <result column="name" jdbcType="VARCHAR" property="name" />
     <result column="total_price" jdbcType="DECIMAL" property="totalPrice" />
     <result column="actual_price" jdbcType="DECIMAL" property="actualPrice" />
+    <result column="receipt_time" jdbcType="TIMESTAMP" property="receiptTime" />
+    <result column="audit_user" jdbcType="VARCHAR" property="auditUser" />
+    <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone" />
+    <result column="success_user" jdbcType="VARCHAR" property="successUser" />
+    <result column="success_phone" jdbcType="VARCHAR" property="successPhone" />
     <result column="remark" jdbcType="VARCHAR" property="remark" />
     <result column="status" jdbcType="INTEGER" property="status" />
     <result column="create_by" jdbcType="BIGINT" property="createBy" />
@@ -21,7 +26,8 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, ent_id, t_ledger_id, st_order_no, `name`, total_price, actual_price, remark, 
-    `status`, create_by, create_time, update_by, update_time, del_flag
+    id, ent_id, t_ledger_id, st_order_no, `name`, total_price, actual_price, receipt_time, 
+    audit_user, audit_phone, success_user, success_phone, remark, `status`, create_by, 
+    create_time, update_by, update_time, del_flag
   </sql>
 </mapper>

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java

@@ -118,7 +118,7 @@ public class SckwBusSumConsumer {
         /**车辆运单**/
         if (busSum.getBusSumType().equals("waybillOrder")) {
             SckwWaybillOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwWaybillOrder.class);
-            order.set_id(order.getWOrderId());
+            order.set_id(order.getWOrderId() == null ? order.get_id() : order.getWOrderId());
             if (busSum.getMethod() == 1) {
                 /**新增**/
                 waybillOrderRepository.insert(order);

+ 4 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -5,6 +5,7 @@ import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.mongo.model.SckwLogisticsOrder;
@@ -57,6 +58,7 @@ public class KwTransportService {
         // 创建条件对象
         Criteria criteria = new Criteria();
         // 1. 全等于
+        criteria.and("entId").is(LoginUserHolder.getEntId());
         if (StringUtils.isNotBlank(query.getLoadAddress())) {
             criteria.and("loadDetailAddress").is(query.getLoadAddress());
         }
@@ -116,6 +118,7 @@ public class KwTransportService {
         // 创建条件对象
         Criteria criteria = new Criteria();
         // 1. 全等于
+        criteria.and("entId").is(LoginUserHolder.getEntId());
         if (StringUtils.isNotBlank(param.getLoadAddress())) {
             criteria.and("loadDetailAddress").is(param.getLoadAddress());
         }
@@ -167,6 +170,7 @@ public class KwTransportService {
         // 创建条件对象
         Criteria criteria = new Criteria();
         // 1. 全等于
+        criteria.and("entId").is(LoginUserHolder.getEntId());
         if (StringUtils.isNotBlank(query.getLoadAddress())) {
             criteria.and("loadDetailAddress").is(query.getLoadAddress());
         }

+ 2 - 2
sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw_zk
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,7 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw_zk
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
         #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组

+ 1 - 1
sckw-modules/sckw-report/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-system"/>
+        <property name="LOG_PATH" value="logs/sckw-report"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

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

@@ -14,6 +14,7 @@ import com.sckw.transport.service.AcceptCarriageOrderService;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -122,4 +123,19 @@ public class AcceptCarriageOrderController {
         }
     }
 
+    /**
+     * 承运订单-获取运单详情
+     * @param wOrderId 运单id
+     * @return
+     */
+    @RequestMapping(value = "/getWaybillData", method = RequestMethod.GET)
+    public HttpResult getWaybillData(@Param("wOrderId") String wOrderId) {
+        try {
+//            return acceptCarriageOrderService.getWaybillData(wOrderId);
+            return null;
+        } catch (Exception e) {
+            log.error("承运订单-获取运单详情 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
 }

+ 3 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java

@@ -27,7 +27,7 @@ public class ConsignOrderController {
     @Autowired
     ConsignOrderService consignOrderService;
     /**
-     * 托运订单获取车辆运单
+     * 托运订单/承运订单-获取车辆运单
      *
      * @param orderDto
      * @return
@@ -69,8 +69,9 @@ public class ConsignOrderController {
         try {
             return null;
         } catch (Exception e) {
-            log.error("托运订单-撤销托运运单失败:订单id {},error {} ", orderDto.getId(), e.getMessage(), e);
+            log.error("托运订单-完结订单失败:订单id {},error {} ", orderDto.getId(), e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+
 }

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

@@ -27,7 +27,7 @@ public class LogisticsConsignmentController {
     LogisticsConsignmentService logisticsConsignmentService;
 
     /**
-     * 采购订单-物流托运
+     * 采购订单-物流托运生成托运订单
      * @param logisticsConsignmentParam
      * @return
      */
@@ -78,7 +78,7 @@ public class LogisticsConsignmentController {
     }
 
     /**
-     * 销售订单-物流托运
+     * 销售订单-物流托运生成托运订单
      * @param logisticsConsignmentParam
      * @return
      */

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderCirculateMapper.java

@@ -3,6 +3,9 @@ package com.sckw.transport.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.transport.model.KwtLogisticsOrderCirculate;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @Mapper
 public interface KwtLogisticsOrderCirculateMapper extends BaseMapper<KwtLogisticsOrderCirculate> {
@@ -17,4 +20,11 @@ public interface KwtLogisticsOrderCirculateMapper extends BaseMapper<KwtLogistic
     int updateByPrimaryKeySelective(KwtLogisticsOrderCirculate record);
 
     int updateByPrimaryKey(KwtLogisticsOrderCirculate record);
+    /**
+     * 查询循环单-根据司机id单据状态-联查表
+     * @param id
+     * @param loopStatus
+     * @return
+     */
+    List<Long> selectDriverOrderByStatus(@Param("id") Long id, @Param("status") List<Long> loopStatus);
 }

+ 9 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderCirculate.java

@@ -31,11 +31,19 @@ public class KwtLogisticsOrderCirculate implements Serializable {
      * 物流订单id
      */
     private Long lOrderId;
+    /**
+     * 物流订单id
+     */
+    private Long wOrderId;
 
     /**
      * 车牌号
      */
     private String truckNo;
+    /**
+     * 0趟次1循环
+     */
+    private String type;
 
     /**
      * 司机id
@@ -54,28 +62,13 @@ public class KwtLogisticsOrderCirculate implements Serializable {
 
     private Date entrustDate;
 
-    /**
-     * 卸货量
-     */
-    private BigDecimal unloadAmount;
-
-    /**
-     * 装货量
-     */
-    private BigDecimal loadAmount;
-
-    /**
-     * 亏吨量(装货量-卸货量)
-     */
-    private BigDecimal deficitAmount;
-
     /**
      * 备注
      */
     private String remark;
 
     /**
-     * 用户状态(0正常、1已锁
+     * 用户状态(0正常、1失效)
      */
     private Integer status;
 

+ 86 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java

@@ -0,0 +1,86 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author lfdc
+ * @description 运单详情vo
+ * @date 2023-07-18 16:07:54
+ */
+@Data
+public class WaybillDetailVO {
+    /**
+     * 派车量
+     */
+    private BigDecimal sendCarWeigh;
+    /**
+     * 实装量
+     */
+    private BigDecimal loadAmount;
+    /**
+     * 实卸量
+     */
+    private BigDecimal unloadAmount;
+    /**
+     * 装货时间
+     */
+    private Date stowageDateTime;
+    /**
+     * 卸货时间
+     */
+    private Date unloadDateTime;
+    /**
+     * 运单类型
+     */
+    private String waybillType;
+    /**
+     * 亏吨量
+     */
+    private BigDecimal deficitAmount;
+    /**
+     * 亏吨量
+     */
+    private BigDecimal loss;
+    /**
+     * 扣亏损值
+     */
+    private BigDecimal goodsPrice;
+    /**
+     * 派车人
+     */
+    private String appointor;
+    /**
+     * 承运车队
+     */
+    private String fleetName;
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+    /**
+     * 司机姓名
+     */
+    private String driverName;
+    /**
+     * 计划开始时间
+     */
+    private Date startTime;
+    /**
+     * 计划结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 计划开始时间
+     */
+    private Date loadTime;
+    /**
+     * 计划结束时间
+     */
+    private Date unloadTime;
+
+}
+

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderVO.java

@@ -242,6 +242,16 @@ public class WaybillOrderVO {
      */
     private String fleetName;
 
+    /**
+     * 企业名称(指的是物流公司)
+     */
+    private String firmName;
+
+    /**
+     * 企业id
+     */
+    private String entId;
+
     /**
      * 计划结束时间
      */

+ 62 - 14
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -22,10 +22,7 @@ import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.common.enums.CarWaybillEnum;
 import com.sckw.transport.common.enums.LogisticsOrderEnum;
 import com.sckw.transport.dao.*;
-import com.sckw.transport.model.KwtLogisticsOrder;
-import com.sckw.transport.model.KwtLogisticsOrderTrack;
-import com.sckw.transport.model.KwtWaybillOrder;
-import com.sckw.transport.model.KwtWaybillOrderTrack;
+import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.CarListDTO;
 import com.sckw.transport.model.dto.OrderDTO;
 import com.sckw.transport.model.dto.OrderTakingDTO;
@@ -79,6 +76,9 @@ public class AcceptCarriageOrderService {
     @Autowired
     private KwtWaybillOrderTicketMapper waybillOrderTicketMapper;
 
+    @Autowired
+    private KwtLogisticsOrderCirculateMapper logisticsOrderCirculateMapper;
+
     public HttpResult list(AcceptCarriageOrderQuery query) {
         List<AcceptCarriageOrderVO> list = new ArrayList<>();
         AcceptCarriageOrderVO acceptCarriageOrderVo = new AcceptCarriageOrderVO();
@@ -172,7 +172,7 @@ public class AcceptCarriageOrderService {
             return result;
         }
         List<SckwWaybillOrder> list = new ArrayList<>();
-        if (String.valueOf(NumberConstant.ZERO).equals(sendCarDTO.getType())) {
+        if (String.valueOf(NumberConstant.ONE).equals(sendCarDTO.getType())) {
             for (CarListDTO car : sendCarDTO.getCarList()) {
                 if (ObjectUtils.isEmpty(car.getCount())) {
                     throw new RuntimeException("趟次派车时,趟次次数不能为空");
@@ -189,20 +189,28 @@ public class AcceptCarriageOrderService {
 //                    insertWaybillOrderTrack(wOrderId);
                 }
             }
-        } else if (String.valueOf(NumberConstant.ONE).equals(sendCarDTO.getType())) {
+        } else if (String.valueOf(NumberConstant.TWO).equals(sendCarDTO.getType())) {
             for (CarListDTO car : sendCarDTO.getCarList()) {
                 if (ObjectUtils.isEmpty(sendCarDTO.getWaitingVolume())) {
                     throw new RuntimeException("循环派车时,剩余可运量不能为空");
                 }
                 for (int i = 0; i < car.getCount(); i++) {
-                    Long wOrderId = new IdWorker(NumberConstant.ONE).nextId();
-                    String wOrderNo = com.sckw.transport.utils.StringUtils.getWaybillNoUtil() + i;
-                    KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
-                    String type = String.valueOf(NumberConstant.ONE);
-                    waybillOrder.setType(type);
-                    waybillOrder.setEntrustAmount(new BigDecimal(sendCarDTO.getWaitingVolume()));
-                    insertWaybillOrder(waybillOrder, wOrderId, wOrderNo, logisticsOrder, car, sendCarDTO, list, type);
-//                    insertWaybillOrderTrack(wOrderId);
+                    KwtLogisticsOrderCirculate circulate = new KwtLogisticsOrderCirculate();
+                    circulate.setId(new IdWorker(NumberConstant.ONE).nextId());
+                    circulate.setEntId(logisticsOrder.getEntId());
+                    circulate.setLOrderId(Long.parseLong(sendCarDTO.getLOrderId()));
+                    circulate.setTruckNo(car.getTruckNo());
+                    circulate.setDriverId(Long.parseLong(car.getDriverId()));
+                    circulate.setActualAmount(new BigDecimal(car.getLoadAmount()));
+                    circulate.setEntrustAmount(new BigDecimal(sendCarDTO.getWaitingVolume()));
+                    circulate.setEntrustDate(new Date());
+                    circulate.setCreateBy(LoginUserHolder.getUserId());
+                    circulate.setCreateTime(new Date());
+                    circulate.setUpdateBy(LoginUserHolder.getUserId());
+                    circulate.setUpdateTime(new Date());
+                    circulate.setType(String.valueOf(NumberConstant.ONE));
+                    logisticsOrderCirculateMapper.insert(circulate);
+                    sendMongoDbData(list, logisticsOrder, car, sendCarDTO, String.valueOf(NumberConstant.ONE));
                 }
             }
         } else {
@@ -225,6 +233,45 @@ public class AcceptCarriageOrderService {
         }
         return result;
     }
+    private void sendMongoDbData(List<SckwWaybillOrder> list, KwtLogisticsOrder logisticsOrder
+            , CarListDTO carListDTO, SendCarDTO sendCarDTO, String type) {
+        //放入mongodb实体
+        SckwWaybillOrder waybillCarDTO = new SckwWaybillOrder();
+        waybillCarDTO.set_id(new IdWorker(NumberConstant.ONE).nextId());
+        waybillCarDTO.setStatus(CarWaybillEnum.PENDING_ORDER.getCode().toString());
+        waybillCarDTO.setType(type);
+        waybillCarDTO.setLOrderId(StringUtils.isBlank(sendCarDTO.getLOrderId()) ? null : Long.parseLong(sendCarDTO.getLOrderId()));
+        waybillCarDTO.setLOrderNo(sendCarDTO.getLOrderNo());
+        waybillCarDTO.setTOrderId(logisticsOrder.getTOrderId());
+        waybillCarDTO.setTOrderNo(logisticsOrder.getTOrderNo());
+        waybillCarDTO.setEntId(logisticsOrder.getEntId());
+        waybillCarDTO.setFirmName(remoteSystemService.queryEntCacheById(logisticsOrder.getEntId()).getFirmName());
+        waybillCarDTO.setTruckNo(carListDTO.getTruckNo());
+        //todo 司机dubbo查询
+//        waybillCarDTO.setTruckType();
+//        waybillCarDTO.setTruckEnergyType();
+//        waybillCarDTO.setTruckColor()
+//        waybillCarDTO.setTruckTrailerNo();
+//        waybillCarDTO.setTruckFleetName();
+        waybillCarDTO.setDriverId(StringUtils.isBlank(carListDTO.getDriverId()) ? null : Long.parseLong(carListDTO.getDriverId()));
+//        waybillCarDTO.setDriverPhone();
+//        waybillCarDTO.setDriverIdcard();
+        waybillCarDTO.setDriverName(carListDTO.getDriverName());
+        waybillCarDTO.setStartTime(sendCarDTO.getLoadDateTime());
+        waybillCarDTO.setEndTime(sendCarDTO.getUnloadDateTime());
+        waybillCarDTO.setFleetId(carListDTO.getFleetId());
+        waybillCarDTO.setFleetName(carListDTO.getFleetName());
+        waybillCarDTO.setGoodsName(sendCarDTO.getGoodsName());
+        waybillCarDTO.setGoodsId(StringUtils.isBlank(sendCarDTO.getGoodsId()) ? null : Integer.valueOf(sendCarDTO.getGoodsId()));
+        waybillCarDTO.setLoadingCity(sendCarDTO.getLoadCity());
+        waybillCarDTO.setLoadTime(sendCarDTO.getLoadDateTime());
+        waybillCarDTO.setLoadingAddress(sendCarDTO.getLoadAddress());
+        waybillCarDTO.setUnloadingCity(sendCarDTO.getUnloadCity());
+        waybillCarDTO.setUnloadTime(sendCarDTO.getUnloadDateTime());
+        waybillCarDTO.setUnloadingAddress(sendCarDTO.getUnloadAddress());
+        waybillCarDTO.setDelFlag(Integer.valueOf(NumberConstant.ZERO));
+        list.add(waybillCarDTO);
+    }
 
     /**
      * 保存车辆运单状态信息
@@ -281,6 +328,7 @@ public class AcceptCarriageOrderService {
         waybillOrder.setCreateTime(createTime);
         waybillOrder.setUpdateTime(new Date());
         waybillOrder.setUpdateBy(LoginUserHolder.getUserId());
+        waybillOrder.setStatus(CarWaybillEnum.PENDING_ORDER.getCode());
         waybillOrderMapper.insert(waybillOrder);
 
         //状态表保存

+ 129 - 14
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/DriverService.java

@@ -6,13 +6,16 @@ import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.mongo.model.TobleTop;
+import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.common.enums.CarWaybillEnum;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.KwtLogisticsOrderAddress;
+import com.sckw.transport.model.KwtLogisticsOrderCirculate;
 import com.sckw.transport.model.KwtLogisticsOrderGoods;
 import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.vo.WaybillOrderVO;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +33,9 @@ import java.util.stream.Collectors;
 @Service
 public class DriverService {
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    RemoteSystemService remoteSystemService;
+
     @Autowired
     private KwtWaybillOrderMapper waybillOrderMapper;
 
@@ -51,6 +57,9 @@ public class DriverService {
     @Autowired
     private KwtLogisticsOrderGoodsMapper logisticsOrderGoodsMapper;
 
+    @Autowired
+    private KwtLogisticsOrderCirculateMapper logisticsOrderCirculateMapper;
+
 
     /**
      * @param id
@@ -98,8 +107,9 @@ public class DriverService {
 
     /**
      * 根据当前登录 id获取派给当前id的车辆运单
-     * @param id 司机id
-     * @param type  展示页签类型
+     *
+     * @param id   司机id
+     * @param type 展示页签类型
      * @return
      */
     public HttpResult getWaybillDriverDetail(Long id, String type) {
@@ -111,26 +121,131 @@ public class DriverService {
          * 完结: 对应[已卸货]、[已核单]
          * */
         HttpResult result = new HttpResult();
-        List<Long> status = new ArrayList<>();
+        List<Long> tripStatus = new ArrayList<>();
+        List<Long> loopStatus = new ArrayList<>();
         if (String.valueOf(NumberConstant.ONE).equals(type)) {
-            status.add(CarWaybillEnum.PENDING_ORDER.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.PENDING_ORDER.getCode().longValue());
         } else if (String.valueOf(NumberConstant.TWO).equals(type)) {
-            status.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
+            loopStatus.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
         } else if (String.valueOf(NumberConstant.THREE).equals(type)) {
-            status.add(CarWaybillEnum.EXIT_COMPLETED.getCode().longValue());
-            status.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
-            status.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
-            status.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.EXIT_COMPLETED.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
+
+            loopStatus.add(CarWaybillEnum.EXIT_COMPLETED.getCode().longValue());
+            loopStatus.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
+            loopStatus.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
+            loopStatus.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
         } else if (String.valueOf(NumberConstant.FOUR).equals(type)) {
-            status.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
-            status.add(CarWaybillEnum.APPROVAL_COMPLETED.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
+            tripStatus.add(CarWaybillEnum.APPROVAL_COMPLETED.getCode().longValue());
+
+            loopStatus.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
+            loopStatus.add(CarWaybillEnum.APPROVAL_COMPLETED.getCode().longValue());
         } else {
             result.setMsg("类型错误");
             result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
             return result;
         }
-        List<Long> list = waybillOrderMapper.selectDriverOrder(id, status);
         List<WaybillOrderVO> orderVOList = new ArrayList<>();
+        /**趟次*/
+        tripPackageData(id, tripStatus, orderVOList);
+        /**循环*/
+        loopPackageData(id,loopStatus,orderVOList);
+        orderVOList = orderVOList.stream().sorted(Comparator.comparing(WaybillOrderVO::getCreateTime)).collect(Collectors.toList());
+        return HttpResult.ok(orderVOList);
+    }
+    private void loopPackageData(Long id, List<Long> loopStatus, List<WaybillOrderVO> orderVOList) {
+        if(CollectionUtils.isEmpty(loopStatus)){
+            List<KwtLogisticsOrderCirculate> list = logisticsOrderCirculateMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrderCirculate>()
+                    .eq(KwtLogisticsOrderCirculate::getDriverId,id)
+                    .isNull(KwtLogisticsOrderCirculate::getWOrderId)
+                    .eq(KwtLogisticsOrderCirculate::getStatus,NumberConstant.ZERO));
+            if (CollectionUtils.isNotEmpty(list)){
+                for (KwtLogisticsOrderCirculate circulate : list) {
+                    KwtLogisticsOrderAddress loadAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                            .eq(KwtLogisticsOrderAddress::getLOrderId, circulate.getLOrderId()).eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.ONE));
+                    KwtLogisticsOrderAddress unloadAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                            .eq(KwtLogisticsOrderAddress::getLOrderId, circulate.getLOrderId()).eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.TWO));
+                    KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderGoods>()
+                            .eq(KwtLogisticsOrderGoods::getLOrderId, circulate.getLOrderId()));
+                    List<KwtWaybillOrder> waybillOrders = waybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
+                            .eq(KwtWaybillOrder::getLOrderId, circulate.getLOrderId()).eq(KwtWaybillOrder::getDriverId, id));
+                    for (KwtWaybillOrder waybill : waybillOrders) {
+                        WaybillOrderVO vo = new WaybillOrderVO();
+                        vo.setLOrderId(circulate.getLOrderId());
+                        vo.setLoadCityCode(loadAddress.getCityCode());
+                        vo.setLoadCityName(loadAddress.getCityName());
+                        vo.setLoadDetailAddress(loadAddress.getDetailAddress());
+                        vo.setUnloadCityName(unloadAddress.getCityName());
+                        vo.setUnloadCityCode(unloadAddress.getCityCode());
+                        vo.setEntId(String.valueOf(waybill.getEntId()));
+                        vo.setFirmName(remoteSystemService.queryEntCacheById(waybill.getEntId()).getFirmName());
+                        vo.setGoodsName(orderGoods == null ? null : (orderGoods.getGoodsName() == null ? null : orderGoods.getGoodsName()));
+                        vo.setGoodsCode(orderGoods == null ? null : (orderGoods.getSkuId() == null ? null : String.valueOf(orderGoods.getSkuId())));
+                        vo.setWOrderId(waybill.getId());
+                        vo.setWOrderNo(waybill.getWOrderNo());
+                        vo.setCreateTime(waybill.getCreateTime());
+                        vo.setStartTime(waybill.getStartTime());
+                        vo.setEndTime(waybill.getEndTime());
+                        //todo 查询车队服务dubbo
+//                    vo.setFleetName();
+//                    vo.setFleetId();
+//                    vo.setTruckFleetName();
+                        vo.setEntrustAmount(waybill.getEntrustAmount());
+                        vo.setType(waybill.getType());
+                        vo.setTruckNo(waybill.getTruckNo());
+                        orderVOList.add(vo);
+                    }
+                }
+            }
+        }else {
+            List<Long> list = logisticsOrderCirculateMapper.selectDriverOrderByStatus(id, loopStatus);
+            if (CollectionUtils.isNotEmpty(list)){
+                for (Long aLong : list) {
+                    KwtLogisticsOrderAddress loadAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                            .eq(KwtLogisticsOrderAddress::getLOrderId, aLong).eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.ONE));
+                    KwtLogisticsOrderAddress unloadAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                            .eq(KwtLogisticsOrderAddress::getLOrderId, aLong).eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.TWO));
+                    KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderGoods>()
+                            .eq(KwtLogisticsOrderGoods::getLOrderId, aLong));
+                    List<KwtWaybillOrder> waybillOrders = waybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
+                            .eq(KwtWaybillOrder::getLOrderId, aLong).eq(KwtWaybillOrder::getDriverId, id));
+                    for (KwtWaybillOrder waybill : waybillOrders) {
+                        WaybillOrderVO vo = new WaybillOrderVO();
+                        vo.setLOrderId(aLong);
+                        vo.setLoadCityCode(loadAddress.getCityCode());
+                        vo.setLoadCityName(loadAddress.getCityName());
+                        vo.setLoadDetailAddress(loadAddress.getDetailAddress());
+                        vo.setUnloadCityName(unloadAddress.getCityName());
+                        vo.setUnloadCityCode(unloadAddress.getCityCode());
+                        vo.setEntId(String.valueOf(waybill.getEntId()));
+                        vo.setFirmName(remoteSystemService.queryEntCacheById(waybill.getEntId()).getFirmName());
+                        vo.setGoodsName(orderGoods == null ? null : (orderGoods.getGoodsName() == null ? null : orderGoods.getGoodsName()));
+                        vo.setGoodsCode(orderGoods == null ? null : (orderGoods.getSkuId() == null ? null : String.valueOf(orderGoods.getSkuId())));
+                        vo.setWOrderId(waybill.getId());
+                        vo.setWOrderNo(waybill.getWOrderNo());
+                        vo.setCreateTime(waybill.getCreateTime());
+                        vo.setStartTime(waybill.getStartTime());
+                        vo.setEndTime(waybill.getEndTime());
+                        //todo 查询车队服务dubbo
+//                    vo.setFleetName();
+//                    vo.setFleetId();
+//                    vo.setTruckFleetName();
+                        vo.setEntrustAmount(waybill.getEntrustAmount());
+                        vo.setType(waybill.getType());
+                        vo.setTruckNo(waybill.getTruckNo());
+                        orderVOList.add(vo);
+                    }
+                }
+            }
+        }
+    }
+
+    private void tripPackageData(Long id, List<Long> tripStatus, List<WaybillOrderVO> orderVOList) {
+        List<Long> list = waybillOrderMapper.selectDriverOrder(id, tripStatus);
         if (CollectionUtils.isNotEmpty(list)) {
             for (Long aLong : list) {
                 KwtLogisticsOrderAddress loadAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
@@ -149,6 +264,8 @@ public class DriverService {
                     vo.setLoadDetailAddress(loadAddress.getDetailAddress());
                     vo.setUnloadCityName(unloadAddress.getCityName());
                     vo.setUnloadCityCode(unloadAddress.getCityCode());
+                    vo.setEntId(String.valueOf(waybill.getEntId()));
+                    vo.setFirmName(remoteSystemService.queryEntCacheById(waybill.getEntId()).getFirmName());
                     vo.setGoodsName(orderGoods == null ? null : (orderGoods.getGoodsName() == null ? null : orderGoods.getGoodsName()));
                     vo.setGoodsCode(orderGoods == null ? null : (orderGoods.getSkuId() == null ? null : String.valueOf(orderGoods.getSkuId())));
                     vo.setWOrderId(waybill.getId());
@@ -166,8 +283,6 @@ public class DriverService {
                     orderVOList.add(vo);
                 }
             }
-            orderVOList = orderVOList.stream().sorted(Comparator.comparing(WaybillOrderVO::getCreateTime)).collect(Collectors.toList());
         }
-        return HttpResult.ok(orderVOList);
     }
 }

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

@@ -342,6 +342,7 @@ public class LogisticsConsignmentService {
         order.setCreateTime(new Date());
         order.setUpdateBy(LoginUserHolder.getUserId());
         order.setUpdateTime(new Date());
+        order.setStatus(LogisticsOrderEnum.PENDING_ORDER.getCode());
         kwtLogisticsOrderMapper.insert(order);
     }
 

+ 3 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -242,6 +242,7 @@ public class TransportCommonService {
         } else {
             /**即代表存在分包,当次是属于被分包.需要将数据回归到上游数据。*/
             Long pid = logisticsOrder.getPid();
+            /**指的是上游单据进行回归*/
             KwtLogisticsOrder order = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                     .eq(KwtLogisticsOrder::getId, pid));
             //上游分配量
@@ -254,11 +255,11 @@ public class TransportCommonService {
             BigDecimal add = order.getSubcontractAmount().add(subtract);
             logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
                     .eq(KwtLogisticsOrder::getId, order.getId())
-                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ZERO)
                     .set(KwtLogisticsOrder::getSubcontractAmount, add)
                     .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
                     .set(KwtLogisticsOrder::getUpdateTime, new Date()));
-
+            /**下游订单进行删除*/
             logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
                     .eq(KwtLogisticsOrder::getId, logisticsOrder.getId())
                     .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)

+ 40 - 184
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderCirculateMapper.xml

@@ -1,188 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.transport.dao.KwtLogisticsOrderCirculateMapper">
-  <resultMap id="BaseResultMap" type="com.sckw.transport.model.KwtLogisticsOrderCirculate">
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="ent_id" jdbcType="BIGINT" property="entId" />
-    <result column="order_id" jdbcType="BIGINT" property="orderId" />
-    <result column="car_num" jdbcType="VARCHAR" property="carNum" />
-    <result column="driver_id" jdbcType="BIGINT" property="driverId" />
-    <result column="entrust_amount" jdbcType="DECIMAL" property="entrustAmount" />
-    <result column="remark" jdbcType="VARCHAR" property="remark" />
-    <result column="status" jdbcType="INTEGER" property="status" />
-    <result column="create_by" jdbcType="BIGINT" property="createBy" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    id, ent_id, order_id, car_num, driver_id, entrust_amount, remark, `status`, create_by, 
-    create_time, update_by, update_time, del_flag
-  </sql>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
-    select 
-    <include refid="Base_Column_List" />
-    from kwt_logistics_order_circulate
-    where id = #{id,jdbcType=BIGINT}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-    delete from kwt_logistics_order_circulate
-    where id = #{id,jdbcType=BIGINT}
-  </delete>
-  <insert id="insert" parameterType="com.sckw.transport.model.KwtLogisticsOrderCirculate">
-    insert into kwt_logistics_order_circulate (id, ent_id, order_id, 
-      car_num, driver_id, entrust_amount, 
-      remark, `status`, create_by, 
-      create_time, update_by, update_time, 
-      del_flag)
-    values (#{id,jdbcType=BIGINT}, #{entId,jdbcType=BIGINT}, #{orderId,jdbcType=BIGINT}, 
-      #{carNum,jdbcType=VARCHAR}, #{driverId,jdbcType=BIGINT}, #{entrustAmount,jdbcType=DECIMAL}, 
-      #{remark,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{createBy,jdbcType=BIGINT}, 
-      #{createTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP}, 
-      #{delFlag,jdbcType=INTEGER})
-  </insert>
-  <insert id="insertSelective" parameterType="com.sckw.transport.model.KwtLogisticsOrderCirculate">
-    insert into kwt_logistics_order_circulate
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        id,
-      </if>
-      <if test="entId != null">
-        ent_id,
-      </if>
-      <if test="orderId != null">
-        order_id,
-      </if>
-      <if test="carNum != null">
-        car_num,
-      </if>
-      <if test="driverId != null">
-        driver_id,
-      </if>
-      <if test="entrustAmount != null">
-        entrust_amount,
-      </if>
-      <if test="remark != null">
-        remark,
-      </if>
-      <if test="status != null">
-        `status`,
-      </if>
-      <if test="createBy != null">
-        create_by,
-      </if>
-      <if test="createTime != null">
-        create_time,
-      </if>
-      <if test="updateBy != null">
-        update_by,
-      </if>
-      <if test="updateTime != null">
-        update_time,
-      </if>
-      <if test="delFlag != null">
-        del_flag,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        #{id,jdbcType=BIGINT},
-      </if>
-      <if test="entId != null">
-        #{entId,jdbcType=BIGINT},
-      </if>
-      <if test="orderId != null">
-        #{orderId,jdbcType=BIGINT},
-      </if>
-      <if test="carNum != null">
-        #{carNum,jdbcType=VARCHAR},
-      </if>
-      <if test="driverId != null">
-        #{driverId,jdbcType=BIGINT},
-      </if>
-      <if test="entrustAmount != null">
-        #{entrustAmount,jdbcType=DECIMAL},
-      </if>
-      <if test="remark != null">
-        #{remark,jdbcType=VARCHAR},
-      </if>
-      <if test="status != null">
-        #{status,jdbcType=INTEGER},
-      </if>
-      <if test="createBy != null">
-        #{createBy,jdbcType=BIGINT},
-      </if>
-      <if test="createTime != null">
-        #{createTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="updateBy != null">
-        #{updateBy,jdbcType=BIGINT},
-      </if>
-      <if test="updateTime != null">
-        #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="delFlag != null">
-        #{delFlag,jdbcType=INTEGER},
-      </if>
-    </trim>
-  </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.sckw.transport.model.KwtLogisticsOrderCirculate">
-    update kwt_logistics_order_circulate
-    <set>
-      <if test="entId != null">
-        ent_id = #{entId,jdbcType=BIGINT},
-      </if>
-      <if test="orderId != null">
-        order_id = #{orderId,jdbcType=BIGINT},
-      </if>
-      <if test="carNum != null">
-        car_num = #{carNum,jdbcType=VARCHAR},
-      </if>
-      <if test="driverId != null">
-        driver_id = #{driverId,jdbcType=BIGINT},
-      </if>
-      <if test="entrustAmount != null">
-        entrust_amount = #{entrustAmount,jdbcType=DECIMAL},
-      </if>
-      <if test="remark != null">
-        remark = #{remark,jdbcType=VARCHAR},
-      </if>
-      <if test="status != null">
-        `status` = #{status,jdbcType=INTEGER},
-      </if>
-      <if test="createBy != null">
-        create_by = #{createBy,jdbcType=BIGINT},
-      </if>
-      <if test="createTime != null">
-        create_time = #{createTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="updateBy != null">
-        update_by = #{updateBy,jdbcType=BIGINT},
-      </if>
-      <if test="updateTime != null">
-        update_time = #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="delFlag != null">
-        del_flag = #{delFlag,jdbcType=INTEGER},
-      </if>
-    </set>
-    where id = #{id,jdbcType=BIGINT}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.sckw.transport.model.KwtLogisticsOrderCirculate">
-    update kwt_logistics_order_circulate
-    set ent_id = #{entId,jdbcType=BIGINT},
-      order_id = #{orderId,jdbcType=BIGINT},
-      car_num = #{carNum,jdbcType=VARCHAR},
-      driver_id = #{driverId,jdbcType=BIGINT},
-      entrust_amount = #{entrustAmount,jdbcType=DECIMAL},
-      remark = #{remark,jdbcType=VARCHAR},
-      `status` = #{status,jdbcType=INTEGER},
-      create_by = #{createBy,jdbcType=BIGINT},
-      create_time = #{createTime,jdbcType=TIMESTAMP},
-      update_by = #{updateBy,jdbcType=BIGINT},
-      update_time = #{updateTime,jdbcType=TIMESTAMP},
-      del_flag = #{delFlag,jdbcType=INTEGER}
-    where id = #{id,jdbcType=BIGINT}
-  </update>
+    <resultMap id="BaseResultMap" type="com.sckw.transport.model.KwtLogisticsOrderCirculate">
+        <id column="id" jdbcType="BIGINT" property="id" />
+        <result column="ent_id" jdbcType="BIGINT" property="entId" />
+        <result column="l_order_id" jdbcType="BIGINT" property="lOrderId" />
+        <result column="w_order_id" jdbcType="BIGINT" property="wOrderId" />
+        <result column="truck_no" jdbcType="VARCHAR" property="truckNo" />
+        <result column="driver_id" jdbcType="BIGINT" property="driverId" />
+        <result column="type" jdbcType="BIGINT" property="type" />
+        <result column="actual_amount" jdbcType="DECIMAL" property="actualAmount" />
+        <result column="entrust_amount" jdbcType="DECIMAL" property="entrustAmount" />
+        <result column="entrust_date" jdbcType="TIMESTAMP" property="entrustDate" />
+        <result column="remark" jdbcType="VARCHAR" property="remark" />
+        <result column="status" jdbcType="INTEGER" property="status" />
+        <result column="create_by" jdbcType="BIGINT" property="createBy" />
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+        <result column="update_by" jdbcType="BIGINT" property="updateBy" />
+        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+        <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    </resultMap>
+    <sql id="Base_Column_List">
+        id, ent_id, l_order_id, w_order_id, truck_no,type, driver_id, actual_amount, entrust_amount,
+    entrust_date, remark, `status`, create_by, create_time, update_by, update_time, del_flag
+    </sql>
+    <select id="selectDriverOrderByStatus" resultType="java.lang.Long">
+        SELECT b.w_order_id as wOrderId
+        FROM kwt_waybill_order a
+        LEFT JOIN `kwt_logistics_order_circulate` b ON a.id = b.w_order_id
+        WHERE a.del_flag = '0'
+        AND b.`status` = '0'
+        AND a.type = '1'
+        <if test="id != null and id !=''">
+           and  b.driver_id = #{id,jdbcType=BIGINT}
+        </if>
+        <if test="status != null and status.size() > 0">
+            AND a.`status` IN
+            <foreach collection="status" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 2 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -75,12 +75,13 @@
         LEFT JOIN kwt_waybill_order_track b ON a.id = b.w_order_id
         AND a.del_flag = '0'
         AND b.del_flag = '0'
+        AND a.type='0'
         <where>
             <if test="id != null and id !=''">
                 a.driver_id = #{id,jdbcType=BIGINT}
             </if>
             <if test="status != null and status.size() > 0">
-                AND b.`status` IN
+                AND a.`status` IN
                 <foreach collection="status" item="item" open="(" close=")" separator=",">
                     #{item}
                 </foreach>