Răsfoiți Sursa

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

xucaiqin 2 ani în urmă
părinte
comite
43d6d417af
100 a modificat fișierele cu 2528 adăugiri și 641 ștergeri
  1. 5 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  2. 4 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  3. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/ContractStatusEnum.java
  4. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java
  5. 50 69
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java
  6. 35 0
      sckw-modules-api/sckw-contract-api/pom.xml
  7. 23 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java
  8. 50 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/dto/res/ContractCommonInfoResDto.java
  9. 28 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/dto/res/EntInfo.java
  10. 1 0
      sckw-modules-api/sckw-contract-api/src/main/resources/application.properties
  11. 10 1
      sckw-modules/sckw-contract/pom.xml
  12. 11 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  13. 157 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  14. 22 34
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java
  15. 0 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractLogisticsMapper.java
  16. 3 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractTradeMapper.java
  17. 95 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java
  18. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/res/QueryListResDto.java
  19. 3 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogistics.java
  20. 6 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsGoods.java
  21. 3 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTrade.java
  22. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeTrack.java
  23. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeUnit.java
  24. 1 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractLogisticsReqVo.java
  25. 55 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractTradeReqVo.java
  26. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticsBaseInfoReqVo.java
  27. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticsGoodsInfoReqVo.java
  28. 6 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java
  29. 81 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/TradeBaseInfoReqVo.java
  30. 41 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/TradeGoodsInfoReqVo.java
  31. 45 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractTradeDetailResVo.java
  32. 34 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/FindListGroupResVo.java
  33. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsBaseInfoResVo.java
  34. 34 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsGoodsInfoResVo.java
  35. 22 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java
  36. 70 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeBaseInfoResVo.java
  37. 36 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeGoodsInfoResVo.java
  38. 10 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsGoodsService.java
  39. 127 47
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  40. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsUnitService.java
  41. 66 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeGoodsService.java
  42. 343 131
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  43. 35 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeTrackService.java
  44. 95 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeUnitService.java
  45. 1 1
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  46. 29 7
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml
  47. 2 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckDto.java
  48. 53 3
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java
  49. 2 2
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java
  50. 1 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java
  51. 0 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/dao/KwmCooperateMapper.java
  52. 10 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateManageQueryResDto.java
  53. 0 94
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmAddress.java
  54. 10 4
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperate.java
  55. 1 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressAddReqVo.java
  56. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/BindManagerReqVo.java
  57. 2 2
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/InitiateReqVo.java
  58. 28 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/QueryByEntReqVo.java
  59. 10 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/AddressQueryResVo.java
  60. 14 4
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/CooperateManageQueryResVo.java
  61. 10 6
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java
  62. 29 17
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  63. 18 15
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java
  64. 33 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java
  65. 2 0
      sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml
  66. 8 1
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/SmsController.java
  67. 2 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AddressInfo.java
  68. 2 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/GoodsInfo.java
  69. 3 4
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderParam.java
  70. 2 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UnitInfo.java
  71. 4 4
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UpdateOrderParam.java
  72. 8 8
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  73. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  74. 2 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java
  75. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddressInfo.java
  76. 2 2
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsAttributes.java
  77. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateGoodsParam.java
  78. 15 15
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  79. 13 4
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java
  80. 17 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java
  81. 105 50
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  82. 101 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  83. 2 13
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListStatisticParam.java
  84. 64 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderStatementList.java
  85. 61 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/WaybillOrderQuery.java
  86. 54 29
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/CarWaybillVo.java
  87. 4 2
      sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml
  88. 17 4
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  89. 3 4
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java
  90. 10 3
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java
  91. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEnterprise.java
  92. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindEntUserPojo.java
  93. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ApprovalReqVo.java
  94. 11 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/FindListReqVo.java
  95. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/IdReqVo.java
  96. 55 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/FindEntListResVo.java
  97. 41 6
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  98. 6 7
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  99. 7 3
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml
  100. 5 0
      sckw-modules/sckw-transport/pom.xml

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

@@ -17,6 +17,8 @@ import java.util.List;
 public enum DictEnum {
     PRICE_TYPE_0("price_type", "0", "元/吨"),
     PRICE_TYPE_1("price_type", "1", "元/车"),
+    WEIGHT_CAR_0("weight_car", "0", "吨/车"),
+    WEIGHT_CAR_1("weight_car", "1", "公斤/车"),
     UNIT_TYPE_0("unit_type","0", "吨"),
     UNIT_TYPE_1("unit_type","1", "方"),
     UNIT_TYPE_2("unit_type","2", "箱"),
@@ -59,7 +61,9 @@ public enum DictEnum {
     GOODS_STATUS_2("goods_status", "2", "已下架"),
     CHARGING_TYPE_1("charging_type", "1", "按装货量") ,
     CHARGING_TYPE_2("charging_type", "2", "按卸货量") ,
-    CHARGING_TYPE_3("charging_type", "3", "按车次");
+    CHARGING_TYPE_3("charging_type", "3", "按车次"),
+    SIGNING_WAY_1("signing_way", "1", "线上签约"),
+    SIGNING_WAY_2("signing_way", "2", "线下签约");
 
     private final String type;
     private final String value;

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

@@ -33,7 +33,10 @@ public enum DictTypeEnum {
     COLOR_TYPE("color_type", "车辆颜色"),
     ENERGY_TYPE("energy_type", "能源类型"),
     TRUCK_TYPE("truck_type", "车辆类型"),
-    USE_TYPE("use_type", "使用性质");
+    USE_TYPE("use_type", "使用性质"),
+    SIGNING_WAY("signing_way", "签约方式"),
+    WEIGHT_CAR("weight_car", "以车的限重"),
+    ;
 
     private final String type;
     private final String name;

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

@@ -16,7 +16,7 @@ public enum ContractStatusEnum {
     //已保存
     SAVE(3, "已保存"),
     //签约中
-    SUBMIT(1, "签约");
+    SUBMIT(1, "签约");
 
     private final int code;
 

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java

@@ -122,8 +122,8 @@ public class PasswordUtils {
 
     public static void main(String[] args) {
 
-        String password = PasswordUtils.entryptPassword(PasswordUtils.md5("17358629958"));
-        String md5 = PasswordUtils.md5("123456");
+        String password = PasswordUtils.entryptPassword(PasswordUtils.md5("13868885042"));
+        String md5 = PasswordUtils.md5("13868885042");
         System.out.println(password);
         System.out.println(md5);
         System.out.println(validatePassword(md5, password));

+ 50 - 69
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java

@@ -68,10 +68,11 @@ public class SckwWaybillOrder{
      */
     private String firmName;
 
+
     /**
      * 车辆id
      */
-    private String truckId;
+    private Long truckId;
 
     /**
      * 车牌号
@@ -81,32 +82,28 @@ public class SckwWaybillOrder{
     /**
      * 车辆类型(牵引车、自卸、高栏、平板、厢式、集装箱车、罐车、封闭式、专项作业车、其他)
      */
-    private Integer truckType;
+    private String truckType;
 
     /**
      * 车能源类型(柴油、汽油、电动、氢能、天然气、液化石油气、甲醇、油电混动、油气混动、其他)
      */
-    private Integer truckEnergyType;
+    private String truckEnergyType;
 
     /**
      * 车使用性质(营运车、租赁车辆、货运车、危化品运输车、非营运车、其他)
      */
-    private Integer truckUseType;
+    private String truckUseType;
 
     /**
      * 车辆颜色
      */
-    private Integer truckColor;
+    private String truckColor;
 
     /**
      * 车挂车号
      */
     private String truckTrailerNo;
 
-    /**
-     * 车队班组
-     */
-    private String truckFleetName;
 
     /**
      * 司机主键ID
@@ -139,6 +136,21 @@ public class SckwWaybillOrder{
      */
     private Date unloadTime;
 
+    /**
+     * 循环/趟次
+     */
+    private Integer type;
+
+    /**
+     * 启送时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
     /**
      * 已委托量
      */
@@ -189,10 +201,31 @@ public class SckwWaybillOrder{
      */
     private BigDecimal deficitAmount;
 
+    /**
+     * 合理损耗
+     */
+    private BigDecimal loss;
+
+    /**
+     * 合理损耗-单位
+     */
+    private String lossUnit;
+
+    /**
+     * 扣亏损值(合理损耗-(实装-实卸))
+     */
+    private BigDecimal goodsPrice;
+
+    /**
+     * 扣亏损值(合理损耗-(实装-实卸))-单位
+     */
+    private String goodsPriceUnit;
+
+
     /**
      * 商品主键
      */
-    private Integer goodsId;
+    private Long goodsId;
 
     /**
      * 商品编号
@@ -219,6 +252,7 @@ public class SckwWaybillOrder{
      */
     private String goodsSpec;
 
+
     /**
      * 托运企业主键ID
      */
@@ -259,6 +293,7 @@ public class SckwWaybillOrder{
      */
     private String carrierPhone;
 
+
     /**
      * 装货地址类型
      */
@@ -339,6 +374,11 @@ public class SckwWaybillOrder{
      */
     private String unloadLng;
 
+
+    /**
+     * 单据状态
+     */
+    private Integer status;
     /**
      * 创建人主键id
      */
@@ -374,63 +414,4 @@ public class SckwWaybillOrder{
      */
     private Integer delFlag;
 
-    /**
-     * 单据状态
-     */
-    private String status;
-
-    /**
-     * 循环/趟次
-     */
-    private String type;
-
-    /**
-     * 车队id
-     */
-    private String fleetId;
-    /**
-     * 车队姓名
-     */
-    private String fleetName;
-
-    /**
-     * 派车时间-创建时间
-     */
-    private Date sendCarTime;
-    /**
-     * 启送时间
-     */
-    private Date startTime;
-    /**
-     * 结束时间
-     */
-    private Date endTime;
-
-    /**
-     * 装货区域
-     */
-    private String loadingCity;
-    /**
-     * 装货详细地址
-     */
-    private String loadingAddress;
-
-    /**
-     * 卸货区域
-     */
-    private String unloadingCity;
-    /**
-     * 卸货详细地址
-     */
-    private String unloadingAddress;
-    /**
-     * 合理损耗
-     */
-    private BigDecimal loss;
-    /**
-     * 扣亏损值(合理损耗-(实装-实卸))
-     */
-    private BigDecimal goodsPrice;
-
-
 }

+ 35 - 0
sckw-modules-api/sckw-contract-api/pom.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>sckw-modules-api</artifactId>
+        <groupId>com.sckw</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>sckw-contract-api</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-openfeign-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-core</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 23 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java

@@ -0,0 +1,23 @@
+package com.sckw.contract.api;
+
+import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author czh
+ * @desc 合同远程接口
+ * @date 2023/7/19
+ */
+public interface RemoteContractService {
+
+    /**
+     * @param contractId 合同id集合
+     * @return Map<Long, ContractCommonInfoResDto>
+     * @desc: 查合同基本信息
+     * @author: czh
+     * @date: 2023/7/20
+     */
+    Map<Long, ContractCommonInfoResDto> queryContractBaseInfo(List<Long> contractId);
+}

+ 50 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/dto/res/ContractCommonInfoResDto.java

@@ -0,0 +1,50 @@
+package com.sckw.contract.api.model.dto.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author czh
+ * @desc 合同公共信息
+ * @date 2023/7/19
+ */
+@Data
+public class ContractCommonInfoResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2656035411576510101L;
+
+    /**
+     * 合同id
+     */
+    private Long id;
+
+    /**
+     * 合同名
+     */
+    private String contactName;
+
+    /**
+     * 合同号
+     */
+    private String contractCode;
+
+    /**
+     * 签约方式
+     */
+    private Integer signingWay;
+
+    /**
+     * 签约方式名
+     */
+    private String signingWayName;
+
+    /**
+     * 企业id
+     */
+    private List<EntInfo> entInfoList;
+
+}

+ 28 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/dto/res/EntInfo.java

@@ -0,0 +1,28 @@
+package com.sckw.contract.api.model.dto.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 企业信息
+ * @date 2023/7/20
+ */
+@Data
+public class EntInfo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3726894338861128957L;
+
+    /**
+     * 企业名
+     */
+    private String entName;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+}

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

@@ -0,0 +1 @@
+

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

@@ -28,7 +28,10 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-datasource</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-remote</artifactId>
@@ -53,6 +56,12 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-excel</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-product-api</artifactId>
+            <version>1.0.0</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
     <build>

+ 11 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java

@@ -157,6 +157,17 @@ public class KwcCheckedController {
         return HttpResult.ok(kwcContractLogisticsService.queryCurrentEntCheckedContractList());
     }
 
+    /**
+     * @return HttpResult
+     * @desc: 分组查询
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    @PostMapping("findListGroup")
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+        reqVo.setEntType(EntTypeEnum.LOGISTICS3.getCode());
+        return HttpResult.ok(kwcContractLogisticsService.findListGroup(reqVo));
+    }
 
 
 }

+ 157 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java

@@ -0,0 +1,157 @@
+package com.sckw.contract.controller;
+
+import com.sckw.contract.model.vo.req.*;
+import com.sckw.contract.service.KwcContractTradeService;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.enums.EntTypeEnum;
+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("kwcSale")
+public class KwcContractSaleController {
+
+    @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 {
+        reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
+        return HttpResult.ok(kwcContractTradeService.queryListByPage(reqVo));
+    }
+
+    /**
+     * @param reqVo 新增入参
+     * @return HttpResult
+     * @desc: 新增贸易合同
+     * @author: sky
+     * @date: 2023/7/18
+     */
+    @RequestMapping("add")
+    public HttpResult addTradeContract(@Valid @RequestBody ContractTradeReqVo 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 ContractTradeReqVo 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()));
+    }
+
+
+    /**
+     * @desc: 发起签约
+     * @param reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @PostMapping("submit")
+    public HttpResult submit(@Valid @RequestBody ContractTradeReqVo reqVo) throws SystemException {
+        kwcContractTradeService.submit(reqVo);
+        return HttpResult.ok();
+    }
+
+    /**
+     * @desc: 修改草稿
+     * @param reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @PostMapping("update")
+    public HttpResult update(@Valid @RequestBody ContractTradeReqVo reqVo) throws SystemException {
+        kwcContractTradeService.update(reqVo);
+        return HttpResult.ok();
+    }
+
+
+    /**
+     * @desc: 手动完结
+     * @param reqVo ids
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @PostMapping("complete")
+    public HttpResult complete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+        kwcContractTradeService.complete(reqVo.getIds());
+        return HttpResult.ok();
+    }
+
+
+    /**
+     * @desc: 删除
+     * @param reqVo ids
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @PostMapping("delete")
+    public HttpResult delete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+        kwcContractTradeService.delete(reqVo.getIds());
+        return HttpResult.ok();
+    }
+
+
+    /**
+     * @desc: 导出
+     * @param reqVo 查询入参
+     * @author: czh
+     * @date 2023/7/17
+     */
+    @PostMapping("export")
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+        reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
+        kwcContractTradeService.export(reqVo);
+    }
+
+    /**
+     * @return HttpResult
+     * @desc: 查询当前企业的销售合同
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    @PostMapping("queryCurrentEntSaleContractList")
+    public HttpResult queryCurrentEntSaleContractList() throws SystemException {
+        return HttpResult.ok(kwcContractTradeService.queryCurrentEntSaleContractList());
+    }
+}

+ 22 - 34
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractTradeController.java → sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java

@@ -1,11 +1,10 @@
 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.model.enums.EntTypeEnum;
 import com.sckw.core.web.response.HttpResult;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,18 +13,17 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-
 /**
  * @author czh
- * @desc 销售合同
+ * @desc 采购合同
  * @date 2023/7/13
  */
 @RestController
-@RequestMapping("kwcSale")
-public class KwcContractTradeController {
+@RequestMapping("kwcPurchase")
+public class KwcPurchaseController {
 
     @Autowired
-    private KwcContractTradeService KwcContractTradeService;
+    private KwcContractTradeService kwcContractTradeService;
 
     /**
      * @desc: 分页查询
@@ -36,43 +34,33 @@ public class KwcContractTradeController {
      */
     @RequestMapping("queryListByPage")
     public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
-        return HttpResult.ok(KwcContractTradeService.queryListByPage(reqVo));
+        reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
+        return HttpResult.ok(kwcContractTradeService.queryListByPage(reqVo));
     }
 
     /**
-     * @param reqVo 新增入参
+     * @desc: 合同详情
+     * @param reqVo id
+     * @author: czh
+     * @date 2023/7/16
      * @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);
+    @PostMapping("detail")
+    public HttpResult detail(@Valid @RequestBody IdReqVo reqVo) throws SystemException {
+        return HttpResult.ok(kwcContractTradeService.detail(reqVo.getId()));
     }
 
+
     /**
-     * @param reqVo 补充入参
-     * @desc: 补充合同
+     * @desc: 导出
+     * @param reqVo 查询入参
      * @author: czh
-     * @date: 2023/7/14
+     * @date 2023/7/17
      */
-    @PostMapping("supplement")
-    public HttpResult supplement(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
-        KwcContractTradeService.supplement(reqVo);
-        return HttpResult.ok(HttpStatus.MSG_003);
+    @PostMapping("export")
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+        reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
+        kwcContractTradeService.export(reqVo);
     }
 
-    /**
-     * @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()));
-    }*/
 }

+ 0 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractLogisticsMapper.java

@@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.contract.model.dto.req.QueryListReqDto;
 import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
-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;

+ 3 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractTradeMapper.java

@@ -1,9 +1,10 @@
 package com.sckw.contract.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.contract.model.dto.req.QueryListReqDto;
+import com.sckw.contract.model.dto.res.QueryListResDto;
 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;
@@ -25,7 +26,7 @@ public interface KwcContractTradeMapper extends BaseMapper<KwcContractTrade> {
      * @date 2023/7/17
      * @return QueryListResVo
      */
-    List<QueryListResVo> queryList(QueryListReqVo reqVo);
+    List<QueryListResDto> queryList(QueryListReqDto reqVo);
 }
 
 

+ 95 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java

@@ -0,0 +1,95 @@
+package com.sckw.contract.dubbo;
+import com.google.common.collect.Lists;
+
+import com.sckw.contract.api.RemoteContractService;
+import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
+import com.sckw.contract.api.model.dto.res.EntInfo;
+import com.sckw.contract.dao.KwcContractLogisticsMapper;
+import com.sckw.contract.dao.KwcContractLogisticsUnitMapper;
+import com.sckw.contract.dao.KwcContractTradeMapper;
+import com.sckw.contract.model.entity.KwcContractLogistics;
+import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
+import com.sckw.contract.model.entity.KwcContractTrade;
+import com.sckw.contract.service.KwcContractLogisticsUnitService;
+import com.sckw.core.model.enums.SigningWayEnum;
+import com.sckw.core.utils.CollectionUtils;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@DubboService(group = "design", version = "2.0.0")
+@Service
+public class RemoteContractServiceImpl implements RemoteContractService {
+
+    @Autowired
+    private KwcContractLogisticsMapper kwcContractLogisticsMapper;
+
+    @Autowired
+    private KwcContractLogisticsUnitService kwcContractLogisticsUnitService;
+
+    @Autowired
+    private KwcContractTradeMapper kwcContractTradeMapper;
+
+    @Override
+    public Map<Long, ContractCommonInfoResDto> queryContractBaseInfo(List<Long> contractIds) {
+        HashMap<Long, ContractCommonInfoResDto> map = new HashMap<>();
+        for (Long contractId : contractIds) {
+            KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(contractId);
+            if (Objects.nonNull(kwcContractLogistics)) {
+                map.put(contractId, fillContractLogistics(kwcContractLogistics));
+                continue;
+            }
+
+            KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(contractId);
+            if (Objects.nonNull(kwcContractTrade)) {
+                map.put(contractId, fillContractTrade(kwcContractTrade));
+            }
+        }
+        return map;
+    }
+
+    private ContractCommonInfoResDto fillContractLogistics(KwcContractLogistics kwcContractLogistics) {
+        ContractCommonInfoResDto contractCommonInfoResDto = new ContractCommonInfoResDto();
+        List<EntInfo> entList = new ArrayList<>();
+        contractCommonInfoResDto.setId(kwcContractLogistics.getId());
+        contractCommonInfoResDto.setContactName(kwcContractLogistics.getName());
+        contractCommonInfoResDto.setContractCode(kwcContractLogistics.getContractNo());
+        contractCommonInfoResDto.setSigningWay(kwcContractLogistics.getSigningWay());
+        contractCommonInfoResDto.setSigningWayName(SigningWayEnum.getName(kwcContractLogistics.getSigningWay()).getName());
+        contractCommonInfoResDto.setEntInfoList(entList);
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnits)) {
+            for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnits) {
+                EntInfo entInfo = new EntInfo();
+                entInfo.setEntId(kwcContractLogisticsUnit.getEntId());
+                entInfo.setEntName(kwcContractLogisticsUnit.getFirmName());
+                entList.add(entInfo);
+            }
+        }
+        return contractCommonInfoResDto;
+    }
+
+
+    private ContractCommonInfoResDto fillContractTrade(KwcContractTrade kwcContractTrade) {
+        List<EntInfo> entList = new ArrayList<>();
+        ContractCommonInfoResDto contractCommonInfoResDto = new ContractCommonInfoResDto();
+        contractCommonInfoResDto.setId(kwcContractTrade.getId());
+        contractCommonInfoResDto.setContactName(kwcContractTrade.getName());
+        contractCommonInfoResDto.setContractCode(kwcContractTrade.getContractNo());
+        contractCommonInfoResDto.setSigningWay(kwcContractTrade.getSigningWay());
+        contractCommonInfoResDto.setSigningWayName(SigningWayEnum.getName(kwcContractTrade.getSigningWay()).getName());
+        contractCommonInfoResDto.setEntInfoList(entList);
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractTrade.getId());
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnits)) {
+            for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnits) {
+                EntInfo entInfo = new EntInfo();
+                entInfo.setEntId(kwcContractLogisticsUnit.getEntId());
+                entInfo.setEntName(kwcContractLogisticsUnit.getFirmName());
+                entList.add(entInfo);
+            }
+        }
+        return contractCommonInfoResDto;
+    }
+}

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/res/QueryListResDto.java

@@ -23,6 +23,11 @@ public class QueryListResDto {
      */
     private Integer charging;
 
+    /**
+     * 计费方式(按装货量、按卸货量、按车次)
+     */
+    private Integer trading;
+
     /**
      * 合同名
      */

+ 3 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogistics.java

@@ -38,17 +38,17 @@ public class KwcContractLogistics implements Serializable {
     /**
      * 签约方式
      */
-    private String signingWay;
+    private Integer signingWay;
 
     /**
      * 计费方式(1按装货量、2按卸货量、3按车次)
      */
-    private Long charging;
+    private Integer charging;
 
     /**
      * 交易方式(1预付款、2货到付款)
      */
-    private Long trading;
+    private Integer trading;
 
     /**
      * 开始日期

+ 6 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsGoods.java

@@ -46,10 +46,15 @@ public class KwcContractLogisticsGoods implements Serializable {
     private String unit;
 
     /**
-     * 
+     * 运价
      */
     private BigDecimal price;
 
+    /**
+     * 运价单位
+     */
+    private String priceUnit;
+
     /**
      * 履行量
      */

+ 3 - 3
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 int entId;
+    private Long entId;
 
     /**
      * 合同编号
@@ -38,12 +38,12 @@ public class KwcContractTrade implements Serializable {
     /**
      * 签约方式(1线上签约、2线下签约)
      */
-    private String signingWay;
+    private Integer signingWay;
 
     /**
      * 交易方式(1预付款、2货到付款)
      */
-    private Long trading;
+    private Integer trading;
 
     /**
      * 开始日期

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeTrack.java

@@ -25,6 +25,11 @@ public class KwcContractTradeTrack implements Serializable {
      */
     private Long contractId;
 
+    /**
+     * 状态类型(1审批状态、2签约状态、3履约状态)
+     */
+    private Integer type;
+
     /**
      * 备注
      */

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeUnit.java

@@ -89,4 +89,9 @@ public class KwcContractTradeUnit implements Serializable {
      */
     private Integer delFlag;
 
+    /**
+     * 签约电话
+     */
+    private String signPhone;
+
 }

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

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

+ 55 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractTradeReqVo.java

@@ -0,0 +1,55 @@
+package com.sckw.contract.model.vo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author czh
+ * @desc 贸易合同
+ * @date 2023/7/19
+ */
+@Data
+public class ContractTradeReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3838851258036291498L;
+
+    /**
+     * 合同id 修改时必传
+     */
+    private Long id;
+
+    /**
+     * 父合同ID 补充合同
+     */
+    private Long pId;
+
+    /**
+     * 基础信息
+     */
+    @NotNull(message = "基础信息不能为空")
+    private TradeBaseInfoReqVo baseInfo;
+
+    /**
+     * 合同文件
+     */
+
+    @NotBlank(message = "合同文件不能为空")
+    private String contractFile;
+
+    /**
+     * 标的信息
+     */
+    @NotNull(message = "标的信息不能为空")
+    private List<TradeGoodsInfoReqVo> goodsInfo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

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

@@ -35,7 +35,7 @@ public class LogisticsBaseInfoReqVo implements Serializable {
      * 计费方式(1按装货量、2按卸货量、3按车次)
      */
     @NotNull(message = "计费方式不能为空")
-    private String charging;
+    private Integer charging;
 
     /**
      * 托运单位id

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

@@ -39,6 +39,11 @@ public class LogisticsGoodsInfoReqVo implements Serializable {
      */
     private BigDecimal price;
 
+    /**
+     * 运价单位字典value
+     */
+    private String priceUnit;
+
     /**
      * 合理损耗
      */

+ 6 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java

@@ -7,6 +7,11 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
 
+/**
+ * @author czh
+ * @desc 查询入参
+ * @date 2023/7/13
+ */
 @Data
 public class QueryListReqVo extends PageRequest implements Serializable {
 
@@ -39,7 +44,7 @@ public class QueryListReqVo extends PageRequest implements Serializable {
     private Integer status;
 
     /**
-     * 合同单位类型 3托运  4承运
+     * 合同单位类型 1供应 2采购 3托运 4承运
      */
     private Integer entType;
 

+ 81 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/TradeBaseInfoReqVo.java

@@ -0,0 +1,81 @@
+package com.sckw.contract.model.vo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author czh
+ * @desc 贸易合同基础信息
+ * @date 2023/7/19
+ */
+@Data
+public class TradeBaseInfoReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5828478625710244673L;
+
+    /**
+     * 采购单位id
+     */
+    @NotNull(message = "采购单位不能为空")
+    private Long purchaseEntId;
+
+    /**
+     * 采购单位联系电话
+     */
+    @NotBlank(message = "采购单位联系电话不能为空")
+    private String purchasePhone;
+
+    /**
+     * 付款方式 1预付款、2货到付款
+     */
+    @NotNull(message = "付款方式不能为空")
+    private Integer trading;
+
+    /**
+     * 供应单位id
+     */
+    @NotNull(message = "供应单位不能为空")
+    private Long provideEntId;
+
+    /**
+     * 供应单位联系电话
+     */
+    @NotBlank(message = "供应单位联系电话不能为空")
+    private String providePhone;
+
+    /**
+     * 合同编号
+     */
+    @NotBlank(message = "合同编号不能为空")
+    private String contractCode;
+
+    /**
+     * 合同名称
+     */
+    @NotBlank(message = "合同名称不能为空")
+    private String contractName;
+
+    /**
+     * 终止时间
+     */
+    private Date endTime;
+
+    /**
+     * 签约方式(1线上签约、2线下签约)
+     */
+    @NotNull(message = "签约方式不能为空")
+    private Integer signingWay;
+
+    /**
+     * 生效时间
+     */
+    @NotNull(message = "生效时间不能为空")
+    private Date startTime;
+
+}

+ 41 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/TradeGoodsInfoReqVo.java

@@ -0,0 +1,41 @@
+package com.sckw.contract.model.vo.req;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author czh
+ * @desc 贸易标的信息
+ * @date 2023/7/19
+ */
+@Data
+public class TradeGoodsInfoReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -7003603561892852639L;
+
+    /**
+     * 商品id
+     */
+    @NotNull(message = "商品不能为空")
+    private Long goodsId;
+
+    /**
+     * 采购数量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+
+    /**
+     * 单位
+     */
+    private String unit;
+}

+ 45 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractTradeDetailResVo.java

@@ -0,0 +1,45 @@
+package com.sckw.contract.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author czh
+ * @desc 贸易合同详情返参
+ * @date 2023/7/13
+ */
+@Data
+public class ContractTradeDetailResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6017739590774002010L;
+
+    /**
+     * 基础信息
+     */
+    private TradeBaseInfoResVo baseInfo;
+
+    /**
+     * 合同文件
+     */
+    private List<String> contractFile;
+
+    /**
+     * 标的信息
+     */
+    private List<TradeGoodsInfoResVo> goodsInfo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 补充合同
+     */
+    private List<ContractTradeDetailResVo> child;
+
+}

+ 34 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/FindListGroupResVo.java

@@ -0,0 +1,34 @@
+package com.sckw.contract.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 分组查询返参
+ * @date 2023/7/17
+ */
+@Data
+public class FindListGroupResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7143305943655450894L;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 状态名
+     */
+    private String statusName;
+
+    /**
+     * 数量
+     */
+    private Integer count;
+
+}

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsBaseInfoResVo.java

@@ -6,6 +6,11 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
 
+/**
+ * @author czh
+ * @desc 物流合同基础信息
+ * @date 2023/7/13
+ */
 @Data
 public class LogisticsBaseInfoResVo implements Serializable {
 

+ 34 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsGoodsInfoResVo.java

@@ -6,6 +6,11 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 
+/**
+ * @author czh
+ * @desc 物流合同标的信息
+ * @date 2023/7/13
+ */
 @Data
 public class LogisticsGoodsInfoResVo implements Serializable {
 
@@ -22,6 +27,11 @@ public class LogisticsGoodsInfoResVo implements Serializable {
      */
     private String unit;
 
+    /**
+     * 单位(运量为 X ,运价为 元/X)
+     */
+    private String unitName;
+
     /**
      * 运价
      */
@@ -32,6 +42,11 @@ public class LogisticsGoodsInfoResVo implements Serializable {
      */
     private String priceUnit;
 
+    /**
+     * 运价单位
+     */
+    private String priceUnitName;
+
     /**
      * 亏吨扣款
      */
@@ -42,6 +57,11 @@ public class LogisticsGoodsInfoResVo implements Serializable {
      */
     private String deficitUnit;
 
+    /**
+     * 亏吨扣款单位
+     */
+    private String deficitUnitName;
+
     /**
      * 商品
      */
@@ -57,5 +77,19 @@ public class LogisticsGoodsInfoResVo implements Serializable {
      */
     private String lossUnit;
 
+    /**
+     * 合理损耗单位
+     */
+    private String lossUnitName;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
 
 }

+ 22 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java

@@ -9,7 +9,11 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
-
+/**
+ * @author czh
+ * @desc 合同查询返参
+ * @date 2023/7/13
+ */
 @Data
 public class QueryListResVo implements Serializable {
 
@@ -26,15 +30,30 @@ public class QueryListResVo implements Serializable {
      */
     private String carrierEntName;
 
+    /**
+     * 托运单位名
+     */
+    private String checkedEntName;
+
+    /**
+     * 采购单位名
+     */
+    private String purchaseEntName;
+
+    /**
+     * 供应单位名
+     */
+    private String provideEntName;
+
     /**
      * 计费方式中文名
      */
     private String chargingName;
 
     /**
-     * 托运单位名
+     * 付款方式中文
      */
-    private String checkedEntName;
+    private String tradingName;
 
     /**
      * 合同名称

+ 70 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeBaseInfoResVo.java

@@ -0,0 +1,70 @@
+package com.sckw.contract.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author czh
+ * @desc 贸易合同基本信息
+ * @date 2023/7/20
+ */
+@Data
+public class TradeBaseInfoResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3038691487691609131L;
+
+    /**
+     * 合同编号
+     */
+    private String contractCode;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+    /**
+     * 终止时间
+     */
+    private Date endTime;
+
+    /**
+     * 供应单位
+     */
+    private String provideEntName;
+
+    /**
+     * 供应单位联系电话
+     */
+    private String providePhone;
+
+    /**
+     * 采购单位
+     */
+    private String purchaseEntName;
+
+    /**
+     * 采购单位联系电话
+     */
+    private String purchasePhone;
+
+    /**
+     * 签约方式
+     */
+    private String signingWayName;
+
+    /**
+     * 生效时间
+     */
+    private Date startTime;
+
+    /**
+     * 付款方式
+     */
+    private String tradingName;
+
+}

+ 36 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeGoodsInfoResVo.java

@@ -0,0 +1,36 @@
+package com.sckw.contract.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author czh
+ * @desc 贸易合同标的信息
+ * @date 2023/7/20
+ */
+@Data
+public class TradeGoodsInfoResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6864786253115975328L;
+
+    /**
+     * 采购数量
+     */
+    private BigDecimal amount;
+    /**
+     * 商品
+     */
+    private String goodsName;
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+    /**
+     * 单位
+     */
+    private String unit;
+}

+ 10 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsGoodsService.java

@@ -2,9 +2,7 @@ package com.sckw.contract.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.contract.dao.KwcContractLogisticsGoodsMapper;
-import com.sckw.contract.dao.KwcContractTradeGoodsMapper;
 import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
-import com.sckw.contract.model.entity.KwcContractTradeGoods;
 import com.sckw.contract.model.vo.req.LogisticsGoodsInfoReqVo;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
@@ -12,12 +10,17 @@ import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.product.api.dubbo.GoodsInfoService;
+import com.sckw.product.api.model.KwpGoods;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @author PC
@@ -31,6 +34,9 @@ public class KwcContractLogisticsGoodsService {
     @Autowired
     private KwcContractLogisticsGoodsMapper kwcContractLogisticsGoodsMapper;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private GoodsInfoService goodsInfoService;
+
 
     /**
      * @param contractId 合同id, goodsInfoList标的信息
@@ -40,8 +46,8 @@ public class KwcContractLogisticsGoodsService {
      */
     public void saveContractLogisticsGoods(Long contractId, List<LogisticsGoodsInfoReqVo> goodsInfoList) throws SystemException {
         //todo 调dubbo接口返回商品详情 填充sku
-        List<Long> goodsIdList = goodsInfoList.stream().map(LogisticsGoodsInfoReqVo::getGoodsId).toList();
-
+//        List<Long> goodsIdList = goodsInfoList.stream().map(LogisticsGoodsInfoReqVo::getGoodsId).toList();
+//        Map<Long, KwpGoods> goodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
         Long userId = LoginUserHolder.getUserId();
         Date date = new Date();
         for (LogisticsGoodsInfoReqVo logisticsGoodsInfoReqVo : goodsInfoList) {

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

@@ -5,6 +5,7 @@ import java.util.Date;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
@@ -18,10 +19,7 @@ import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
 import com.sckw.contract.model.vo.req.ContractLogisticsReqVo;
 import com.sckw.contract.model.vo.req.LogisticsBaseInfoReqVo;
 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.contract.model.vo.res.*;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.SystemException;
@@ -29,7 +27,6 @@ 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.EntTypeEnum;
-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.BeanUtils;
@@ -39,6 +36,8 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.excel.utils.EasyExcelUtil;
+import com.sckw.product.api.dubbo.GoodsInfoService;
+import com.sckw.product.api.model.KwpGoods;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
@@ -73,6 +72,9 @@ public class KwcContractLogisticsService {
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private GoodsInfoService goodsInfoService;
+
     /**
      * @param reqVo 新增入参
      * @desc: 新增托运合同
@@ -108,21 +110,12 @@ public class KwcContractLogisticsService {
         kwcContractLogistics.setEntId(LoginUserHolder.getEntId());
         kwcContractLogistics.setContractNo(baseInfo.getContractCode());
         kwcContractLogistics.setName(baseInfo.getContractName());
-        kwcContractLogistics.setSigningWay(SigningWayEnum.getName(baseInfo.getSigningWay()).getName());
-        SysDictResDto sysDictResDto = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.CHARGING_TYPE.getType(), baseInfo.getCharging());
-        if (Objects.nonNull(sysDictResDto)) {
-            kwcContractLogistics.setCharging(sysDictResDto.getId());
-        }
-
-//        remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE, baseInfo.getT)
-//        kwcContractLogistics.setTrading(pid);
+        kwcContractLogistics.setSigningWay(baseInfo.getSigningWay());
+        kwcContractLogistics.setCharging(baseInfo.getCharging());
         kwcContractLogistics.setStartTime(baseInfo.getStartTime());
         kwcContractLogistics.setEndTime(baseInfo.getEndTime());
         kwcContractLogistics.setAmount(new BigDecimal("0"));
         kwcContractLogistics.setPerformedAmount(new BigDecimal("0"));
-        kwcContractLogistics.setSigningUrl("");
-        kwcContractLogistics.setSignedUrl("");
-        kwcContractLogistics.setSigningNo("");
         kwcContractLogistics.setContractPid(pid);
         kwcContractLogistics.setRemark(remark);
         kwcContractLogistics.setCreateBy(LoginUserHolder.getUserId());
@@ -185,11 +178,11 @@ public class KwcContractLogisticsService {
                 }
             }
 
-            //logisticsBaseInfoResVo.setChargingName();
+            logisticsBaseInfoResVo.setChargingName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), String.valueOf(kwcContractLogistics.getCharging())));
             logisticsBaseInfoResVo.setContractCode(kwcContractLogistics.getContractNo());
             logisticsBaseInfoResVo.setContractName(kwcContractLogistics.getName());
             logisticsBaseInfoResVo.setEndTime(kwcContractLogistics.getEndTime());
-            logisticsBaseInfoResVo.setSigningWayName(kwcContractLogistics.getSigningWay());
+            logisticsBaseInfoResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractLogistics.getSigningWay())));
             logisticsBaseInfoResVo.setStartTime(kwcContractLogistics.getStartTime());
             contractLogisticsDetailResVo.setBaseInfo(logisticsBaseInfoResVo);
         }
@@ -198,18 +191,56 @@ public class KwcContractLogisticsService {
         List<KwcContractLogisticsGoods> kwcContractLogisticsGoodsList = kwcContractLogisticsGoodsService.queryGoodsInfoByContractId(kwcContractLogistics.getId());
         if (CollectionUtils.isNotEmpty(kwcContractLogisticsGoodsList)) {
             List<Long> goodsIdList = kwcContractLogisticsGoodsList.stream().map(KwcContractLogisticsGoods::getGoodsId).toList();
+            Map<Long, KwpGoods> goodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
+
+            String keys = "";
+           for (KwcContractLogisticsGoods item :kwcContractLogisticsGoodsList){
+                keys += DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + item.getUnit() + Global.COMMA;
+                keys += DictTypeEnum.PRICE_TYPE.getType() + Global.POUND + item.getPriceUnit() + Global.COMMA;
+                keys += DictTypeEnum.WEIGHT_CAR.getType() + Global.POUND + item.getLossUnit() + Global.COMMA;
+                keys += DictTypeEnum.WEIGHT_CAR.getType() + Global.POUND + item.getDeficitUnit() + Global.COMMA;
+            };
+
+            Map<String, SysDictResDto> stringSysDictResDtoMap = remoteSystemService.queryDictMapByTypeValues(keys);
+
             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.setPriceUnit(kwcContractLogisticsGoods.getPriceUnit());
                 logisticsGoodsInfoResVo.setDeficitPrice(kwcContractLogisticsGoods.getDeficitPrice());
                 logisticsGoodsInfoResVo.setDeficitUnit(kwcContractLogisticsGoods.getDeficitUnit());
-                //logisticsGoodsInfoResVo.setGoodsName();
+                logisticsGoodsInfoResVo.setGoodsId(kwcContractLogisticsGoods.getGoodsId());
+                logisticsGoodsInfoResVo.setId(kwcContractLogisticsGoods.getId());
+                KwpGoods kwpGoods = goodsMap.get(kwcContractLogisticsGoods.getGoodsId());
+                if (Objects.nonNull(kwpGoods)) {
+                    logisticsGoodsInfoResVo.setGoodsName(kwpGoods.getName());
+                }
                 logisticsGoodsInfoResVo.setLoss(kwcContractLogisticsGoods.getLoss());
                 logisticsGoodsInfoResVo.setLossUnit(kwcContractLogisticsGoods.getLossUnit());
+
+                SysDictResDto unitType = stringSysDictResDtoMap.get(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + kwcContractLogisticsGoods.getUnit());
+                if (Objects.nonNull(unitType)) {
+                    logisticsGoodsInfoResVo.setUnitName(unitType.getValue());
+                }
+
+                SysDictResDto priceType = stringSysDictResDtoMap.get(DictTypeEnum.PRICE_TYPE.getType() + Global.POUND + kwcContractLogisticsGoods.getPriceUnit());
+                if (Objects.nonNull(priceType)) {
+                    logisticsGoodsInfoResVo.setPriceUnitName(priceType.getValue());
+                }
+
+                SysDictResDto weightCar1 = stringSysDictResDtoMap.get(DictTypeEnum.WEIGHT_CAR.getType() + Global.POUND + kwcContractLogisticsGoods.getLossUnit());
+                if (Objects.nonNull(weightCar1)) {
+                    logisticsGoodsInfoResVo.setLossUnitName(weightCar1.getValue());
+                }
+
+                SysDictResDto weightCar2 = stringSysDictResDtoMap.get(DictTypeEnum.WEIGHT_CAR.getType() + Global.POUND + kwcContractLogisticsGoods.getDeficitUnit());
+                if (Objects.nonNull(weightCar2)) {
+                    logisticsGoodsInfoResVo.setDeficitUnitName(weightCar2.getValue());
+                }
+
                 goodsInfo.add(logisticsGoodsInfoResVo);
             }
             contractLogisticsDetailResVo.setGoodsInfo(goodsInfo);
@@ -219,7 +250,7 @@ public class KwcContractLogisticsService {
         List<String> fileList = new ArrayList<>();
         fileList.add(kwcContractLogistics.getSignedUrl());
         fileList.add(kwcContractLogistics.getSigningUrl());
-        contractLogisticsDetailResVo.setContractFile(fileList);
+        contractLogisticsDetailResVo.setContractFile(fileList.stream().filter(StringUtils::isNotBlank).toList());
 
         //补充合同
         List<KwcContractLogistics> supplementList = getSupplementList(kwcContractLogistics);
@@ -252,24 +283,28 @@ public class KwcContractLogisticsService {
     @Transactional(rollbackFor = {})
     public void submit(ContractLogisticsReqVo reqVo) {
         Long id = reqVo.getId();
+        //直接签约先存草稿再修改状态
         if (Objects.isNull(id)) {
-            //创建合同
-            KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
-            id = new IdWorker(1L).nextId();
-            kwcContractLogistics.setId(id);
-            kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
-            kwcContractLogistics.setSigningUrl(reqVo.getContractFile());
-            if (kwcContractLogisticsMapper.insert(kwcContractLogistics) <= 0) {
-                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
-            }
-
-            //存审批记录
-            kwcContractLogisticsTrackService.saveContractLogisticsTrack(id);
+            id = addCheckedContract(reqVo);
+            changeToSubmit(id);
             return;
         }
+        update(reqVo);
+        changeToSubmit(id);
+    }
 
-        id = addCheckedContract(reqVo);
-        //存审批记录
+    /**
+     * @param id 合同id
+     * @desc: 更新合同为发起
+     * @author: czh
+     * @date: 2023/7/20
+     */
+    private void changeToSubmit(Long id) {
+        KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(id);
+        kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
+        if (kwcContractLogisticsMapper.updateById(kwcContractLogistics) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
         kwcContractLogisticsTrackService.saveContractLogisticsTrack(id);
     }
 
@@ -305,8 +340,8 @@ public class KwcContractLogisticsService {
             Date date = new Date();
             kwcContractLogisticsGoodsList.forEach(item -> {
                 item.setDelFlag(Global.YES);
-                item.setCreateBy(LoginUserHolder.getUserId());
-                item.setCreateTime(date);
+                item.setUpdateBy(LoginUserHolder.getUserId());
+                item.setUpdateTime(date);
             });
 
             if (kwcContractLogisticsGoodsService.updateBatch(kwcContractLogisticsGoodsList) != kwcContractLogisticsGoodsList.size()) {
@@ -314,7 +349,6 @@ public class KwcContractLogisticsService {
             }
         }
         kwcContractLogisticsGoodsService.saveContractLogisticsGoods(kwcContractLogistics.getId(), reqVo.getGoodsInfo());
-
     }
 
     /**
@@ -336,7 +370,6 @@ public class KwcContractLogisticsService {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }
         });
-
     }
 
 
@@ -355,7 +388,7 @@ public class KwcContractLogisticsService {
             if (item.getStatus() != ContractStatusEnum.SAVE.getCode()) {
                 throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_022);
             }
-            item.setStatus(ContractStatusEnum.COMPLETE.getCode());
+            item.setDelFlag(Global.YES);
             item.setUpdateBy(LoginUserHolder.getUserId());
             item.setUpdateTime(date);
             if (kwcContractLogisticsMapper.updateById(item) <= 0) {
@@ -376,20 +409,23 @@ public class KwcContractLogisticsService {
         QueryListReqDto queryListReqDto = new QueryListReqDto();
         BeanUtils.copyProperties(reqVo, queryListReqDto);
         queryListReqDto.setEntId(LoginUserHolder.getEntId());
-        List<QueryListResVo> list = getQueryListResVos(queryListReqDto);
+        List<QueryListResDto> queryListResDtos = kwcContractLogisticsMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isEmpty(queryListResDtos)) {
+            return PageHelperUtil.getPageResult(new PageInfo<>());
+        }
+        List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
         return PageHelperUtil.getPageResult(new PageInfo<>(list));
     }
 
 
     /**
-     * @param queryListReqDto 入参
+     * @param queryListResDtos 入参
      * @return QueryListResVo
      * @desc: 抽取公共部分
      * @author: czh
      * @date: 2023/7/18
      */
-    private List<QueryListResVo> getQueryListResVos(QueryListReqDto queryListReqDto) {
-        List<QueryListResDto> queryListResDtos = kwcContractLogisticsMapper.queryList(queryListReqDto);
+    private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
         Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
         List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
         if (CollectionUtils.isNotEmpty(initiateByList)) {
@@ -410,7 +446,6 @@ public class KwcContractLogisticsService {
             queryListResVo.setChargingName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), String.valueOf(queryListResDto.getCharging())));
             queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
 
-            // todo
             queryListResVo.setPerformedAmount(new BigDecimal("0"));
             list.add(queryListResVo);
         }
@@ -426,7 +461,12 @@ public class KwcContractLogisticsService {
             queryListReqDto.setIdList(idList);
         }
 
-        List<QueryListResVo> queryListResVos = getQueryListResVos(queryListReqDto);
+        List<QueryListResVo> queryListResVos = new ArrayList<>();
+        List<QueryListResDto> queryListResDtos = kwcContractLogisticsMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isNotEmpty(queryListResDtos)) {
+            queryListResVos = getQueryListResVos(queryListResDtos);
+        }
+
         try {
             EasyExcelUtil.writeSingleExcel("物流合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
         } catch (IOException e) {
@@ -448,7 +488,47 @@ public class KwcContractLogisticsService {
         queryListReqDto.setEntId(entId);
         queryListReqDto.setStatus(ContractStatusEnum.SIGNED.getCode());
         queryListReqDto.setEntType(EntTypeEnum.LOGISTICS3.getCode());
-        return getQueryListResVos(queryListReqDto);
+        List<QueryListResDto> queryListResDtos = kwcContractLogisticsMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isEmpty(queryListResDtos)) {
+            return Collections.emptyList();
+        }
+        return getQueryListResVos(queryListResDtos);
     }
 
+
+    /**
+     * @return HttpResult
+     * @desc: 分组查询
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    public List<FindListGroupResVo> findListGroup(QueryListReqVo reqVo) {
+        ContractStatusEnum[] values = ContractStatusEnum.values();
+        List<FindListGroupResVo> list = new ArrayList<>();
+        FindListGroupResVo total = new FindListGroupResVo();
+        total.setCount(0);
+        list.add(total);
+        for (ContractStatusEnum contractStatusEnum : values) {
+            FindListGroupResVo findListGroupResVo = new FindListGroupResVo();
+            findListGroupResVo.setStatus(contractStatusEnum.getCode());
+            findListGroupResVo.setStatusName(contractStatusEnum.getName());
+            findListGroupResVo.setCount(0);
+            list.add(findListGroupResVo);
+        }
+
+        QueryListReqDto queryListReqDto = new QueryListReqDto();
+        BeanUtils.copyProperties(reqVo, queryListReqDto);
+        queryListReqDto.setEntId(LoginUserHolder.getEntId());
+        List<QueryListResDto> queryListResDtoList = kwcContractLogisticsMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isNotEmpty(queryListResDtoList)) {
+            Map<Integer, List<QueryListResDto>> collect = queryListResDtoList.stream().collect(Collectors.groupingBy(QueryListResDto::getStatus));
+            for (FindListGroupResVo findListGroupResVo : list) {
+                List<QueryListResDto> queryListResDtos = collect.get(findListGroupResVo.getStatus());
+                findListGroupResVo.setCount(CollectionUtils.isEmpty(queryListResDtos) ? Global.NUMERICAL_ZERO : queryListResDtos.size());
+            }
+            //给汇总项求和
+            list.get(0).setCount(queryListResDtoList.size());
+        }
+        return list;
+    }
 }

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

@@ -74,7 +74,7 @@ public class KwcContractLogisticsUnitService {
         //存承运运企业
         kwcContractLogisticsUnit.setId(new IdWorker(1L).nextId());
         kwcContractLogisticsUnit.setUnitType(CooperateTypeEnum.CARRIAGE.getCode());
-        kwcContractLogisticsUnit.setEntId(logisticsBaseInfoReqVo.getCheckedEntId());
+        kwcContractLogisticsUnit.setEntId(logisticsBaseInfoReqVo.getCarrierEntId());
         saveEnt(entCacheResDtoMap, kwcContractLogisticsUnit);
         kwcContractLogisticsUnit.setSignPhone(logisticsBaseInfoReqVo.getCarrierPhone());
         if (kwcContractLogisticsUnitMapper.insert(kwcContractLogisticsUnit) <= 0) {

+ 66 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeGoodsService.java

@@ -1,7 +1,22 @@
 package com.sckw.contract.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.contract.dao.KwcContractTradeGoodsMapper;
+import com.sckw.contract.model.entity.KwcContractTradeGoods;
+import com.sckw.contract.model.vo.req.TradeGoodsInfoReqVo;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.context.LoginUserHolder;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
 
 /**
 * @author PC
@@ -11,6 +26,57 @@ import org.springframework.stereotype.Service;
 @Service
 public class KwcContractTradeGoodsService {
 
+    @Autowired
+    private KwcContractTradeGoodsMapper kwcContractLogisticsGoodsMapper;
+
+
+    public void saveContractTradeGoods(long contractId, List<TradeGoodsInfoReqVo> goodsInfoList) {
+        //todo 调dubbo接口返回商品详情 填充sku
+        //List<Long> goodsIdList = goodsInfoList.stream().map(TradeGoodsInfoReqVo::getGoodsId).toList();
+
+        Long userId = LoginUserHolder.getUserId();
+        Date date = new Date();
+        for (TradeGoodsInfoReqVo tradeGoodsInfoReqVo : goodsInfoList) {
+            KwcContractTradeGoods kwcContractTradeGoods = new KwcContractTradeGoods();
+            BeanUtils.copyProperties(tradeGoodsInfoReqVo, kwcContractTradeGoods);
+            kwcContractTradeGoods.setId(new IdWorker(1L).nextId());
+            kwcContractTradeGoods.setContractId(contractId);
+            kwcContractTradeGoods.setSkuId(0L);
+            kwcContractTradeGoods.setPerformedAmount(new BigDecimal("0"));
+            kwcContractTradeGoods.setStatus(Global.NO);
+            kwcContractTradeGoods.setCreateBy(userId);
+            kwcContractTradeGoods.setCreateTime(date);
+            kwcContractTradeGoods.setUpdateBy(userId);
+            kwcContractTradeGoods.setUpdateTime(date);
+            kwcContractTradeGoods.setDelFlag(Global.NO);
+            if (kwcContractLogisticsGoodsMapper.insert(kwcContractTradeGoods) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            }
+        }
+    }
+
+    /**
+     * @param contractId 合同id
+     * @return KwcContractTradeGoods
+     * @desc: 根据合同id查标的信息
+     * @author: czh
+     * @date: 2023/7/20
+     */
+    public List<KwcContractTradeGoods> queryGoodsInfoByContractId(Long contractId) {
+        LambdaQueryWrapper<KwcContractTradeGoods> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractTradeGoods::getContractId, contractId);
+        wrapper.eq(KwcContractTradeGoods::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractTradeGoods::getStatus, Global.NO);
+        return kwcContractLogisticsGoodsMapper.selectList(wrapper);
+    }
+
+    public int updateBatch(List<KwcContractTradeGoods> list) {
+        int count = 0;
+        for (KwcContractTradeGoods kwcContractTradeGoods : list) {
+            count += kwcContractLogisticsGoodsMapper.updateById(kwcContractTradeGoods);
+        }
+        return count;
+    }
 }
 
 

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

@@ -1,44 +1,41 @@
 package com.sckw.contract.service;
+import java.io.IOException;
+import java.util.Date;
 
 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.contract.model.dto.req.QueryListReqDto;
+import com.sckw.contract.model.dto.res.QueryListResDto;
+import com.sckw.contract.model.entity.*;
+import com.sckw.contract.model.vo.req.*;
+
+import com.sckw.contract.model.vo.res.*;
+import com.sckw.core.common.enums.enums.DictEnum;
 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.enums.EntTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
-import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.excel.utils.EasyExcelUtil;
+import com.sckw.product.api.dubbo.GoodsInfoService;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import lombok.extern.slf4j.Slf4j;
 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 java.util.*;
 
 import com.sckw.contract.dao.KwcContractTradeMapper;
 
@@ -48,15 +45,28 @@ import com.sckw.contract.dao.KwcContractTradeMapper;
 * @createDate 2023-07-13 13:36:19
 */
 @Service
+@Slf4j
 public class KwcContractTradeService {
 
 
     @Autowired
-    private KwcContractTradeMapper KwcContractTradeMapper;
+    private KwcContractTradeMapper kwcContractTradeMapper;
+
+    @Autowired
+    private KwcContractTradeGoodsService kwcContractTradeGoodsService;
+
+    @Autowired
+    private KwcContractTradeTrackService kwcContractTradeTrackService;
+
+    @Autowired
+    private KwcContractTradeUnitService kwcContractTradeUnitService;
 
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private GoodsInfoService goodsInfoService;
+
     /**
      * @desc: 分页查询
      * @param:  reqVo
@@ -66,62 +76,102 @@ public class KwcContractTradeService {
      */
     public PageResult queryListByPage(QueryListReqVo reqVo) {
         PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
-        List<QueryListResVo> list = KwcContractTradeMapper.queryList(reqVo);
-        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+        QueryListReqDto queryListReqDto = new QueryListReqDto();
+        BeanUtils.copyProperties(reqVo, queryListReqDto);
+        queryListReqDto.setEntId(LoginUserHolder.getEntId());
+        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isEmpty(queryListResDtos)) {
+            return PageHelperUtil.getPageResult(new PageInfo<>());
+        }
+        List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
+        return PageHelperUtil.getPageResult(new PageInfo<>(list), queryListResDtos, reqVo.getPageSize());
+    }
+
+
+    /**
+     * @param queryListResDtos 入参
+     * @return QueryListResVo
+     * @desc: 抽取公共部分
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
+        Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
+        List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
+        if (CollectionUtils.isNotEmpty(initiateByList)) {
+            longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(initiateByList);
+        }
+
+        List<QueryListResVo> list = new ArrayList<>();
+        for (QueryListResDto queryListResDto : queryListResDtos) {
+            QueryListResVo queryListResVo = new QueryListResVo();
+            queryListResVo.setProvideEntName(queryListResDto.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0 ? queryListResDto.getEntName() : queryListResDto.getTargetEntName());
+            queryListResVo.setPurchaseEntName(queryListResDto.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0 ? queryListResDto.getTargetEntName() : queryListResDto.getEntName());
+
+            UserCacheResDto userCacheResDto = longUserCacheResDtoMap.get(queryListResDto.getInitiateBy());
+            if (Objects.nonNull(userCacheResDto)) {
+                queryListResVo.setInitiateName(userCacheResDto.getName());
+                queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
+            }
+            queryListResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(queryListResDto.getTrading())));
+            queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
+
+            // todo
+            queryListResVo.setPerformedAmount(new BigDecimal("0"));
+            list.add(queryListResVo);
+        }
+        return list;
     }
 
     @Transactional(rollbackFor = {})
-    public Long addTradeContract(ContractLogisticsReqVo reqVo) {
-        LogisticsBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
-        String contractFileList = reqVo.getContractFile();
-        List<LogisticsGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
+    public Long addTradeContract(ContractTradeReqVo reqVo) {
+        TradeBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
+        List<TradeGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
 
         //创建合同
-        KwcContractTrade KwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
-        Date date = new Date();
+        KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
         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) {
+        kwcContractTrade.setId(contactId);
+        kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
+        kwcContractTrade.setSigningUrl(reqVo.getContractFile());
+        if (kwcContractTradeMapper.insert(kwcContractTrade) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
+
         //保存交易合同商品信息
-        //kwcContractLogisticsGoodsService.saveContractLogisticsGoods(KwcContractTrade.getId(), goodsInfoList);
+        kwcContractTradeGoodsService.saveContractTradeGoods(contactId, goodsInfoList);
+
         //存单位信息
-        //kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), baseInfo);
+        kwcContractTradeUnitService.saveContractTradeUnit(contactId, 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 baseInfo 贸易基本信息 remark备注  pid父id
+     * @return KwcContractTrade
+     * @desc: 抽取公共
+     * @author: czh
+     * @date: 2023/7/20
+     */
+    public KwcContractTrade getKwcContractTrade(TradeBaseInfoReqVo baseInfo, String remark, Long pid) {
+        Date date = new Date();
+        KwcContractTrade kwcContractTrade = new KwcContractTrade();
+        kwcContractTrade.setEntId(LoginUserHolder.getEntId());
+        kwcContractTrade.setContractNo(baseInfo.getContractCode());
+        kwcContractTrade.setName(baseInfo.getContractName());
+        kwcContractTrade.setSigningWay(baseInfo.getSigningWay());
+        kwcContractTrade.setTrading(baseInfo.getTrading());
+        kwcContractTrade.setStartTime(baseInfo.getStartTime());
+        kwcContractTrade.setEndTime(baseInfo.getEndTime());
+        kwcContractTrade.setPerformedAmount(new BigDecimal("0"));
+        kwcContractTrade.setContractPid(pid);
+        kwcContractTrade.setRemark(remark);
+        kwcContractTrade.setCreateBy(LoginUserHolder.getUserId());
+        kwcContractTrade.setCreateTime(date);
+        kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractTrade.setUpdateTime(date);
+        kwcContractTrade.setDelFlag(Global.NO);
+        return kwcContractTrade;
     }
 
     /**
@@ -130,108 +180,270 @@ public class KwcContractTradeService {
      * @author: czh
      * @date: 2023/7/14
      */
-    public void supplement(ContractLogisticsReqVo reqVo) {
+    public void supplement(ContractTradeReqVo reqVo) {
         Long id = reqVo.getPId();
-        KwcContractTrade KwcContractTrade = KwcContractTradeMapper.selectById(id);
+        KwcContractTrade KwcContractTrade = kwcContractTradeMapper.selectById(id);
         if (Objects.isNull(KwcContractTrade)) {
-
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
         }
 
         addTradeContract(reqVo);
     }
 
+
     /**
-     * @return ContractLogisticsDetailResVo
      * @desc: 合同详情
-     * @param: reqVo id
+     * @param  id 合同id
      * @author: czh
      * @date 2023/7/16
+     * @return ContractTradeDetailResVo
      */
-    /*public ContractLogisticsDetailResVo detail(Long id) {
-        KwcContractTrade KwcContractTrade = KwcContractTradeMapper.selectById(id);
-        if (Objects.isNull(KwcContractTrade)) {
+    public ContractTradeDetailResVo detail(Long id) {
+        //基础信息
+        KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
+        if (Objects.isNull(kwcContractTrade)) {
             return null;
         }
 
-        return buildContractLogisticsDetailResVo(KwcContractTrade);
+        return buildContractTradeDetailResVo(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());
+
+    /**
+     * @param kwcContractTrade 合同实体
+     * @return ContractTradeDetailResVo
+     * @desc: 构建返参
+     * @author: czh
+     * @date: 2023/7/20
+     */
+    private ContractTradeDetailResVo buildContractTradeDetailResVo(KwcContractTrade kwcContractTrade) {
+        Long id = kwcContractTrade.getId();
+        TradeBaseInfoResVo tradeBaseInfoResVo = new TradeBaseInfoResVo();
+        tradeBaseInfoResVo.setContractCode(kwcContractTrade.getContractNo());
+        tradeBaseInfoResVo.setContractName(kwcContractTrade.getName());
+        tradeBaseInfoResVo.setEndTime(kwcContractTrade.getEndTime());
+        tradeBaseInfoResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractTrade.getSigningWay())));
+        tradeBaseInfoResVo.setStartTime(kwcContractTrade.getStartTime());
+        tradeBaseInfoResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(kwcContractTrade.getTrading())));
+
+        ContractTradeDetailResVo contractTradeDetailResVo = new ContractTradeDetailResVo();
+        List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(id);
+        if (CollectionUtils.isNotEmpty(kwcContractTradeUnits)) {
+            for (KwcContractTradeUnit kwcContractTradeUnit : kwcContractTradeUnits) {
+                if (kwcContractTradeUnit.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0) {
+                    tradeBaseInfoResVo.setProvideEntName(kwcContractTradeUnit.getFirmName());
+                    tradeBaseInfoResVo.setProvidePhone(kwcContractTradeUnit.getSignPhone());
                 }
 
-                if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CARRIAGE.getCode())) {
-                    logisticsBaseInfoResVo.setCarrierEntName(kwcContractLogisticsUnit.getFirmName());
-                    logisticsBaseInfoResVo.setCarrierPhone(kwcContractLogisticsUnit.getSignPhone());
+                if (kwcContractTradeUnit.getUnitType().compareTo(EntTypeEnum.PURCHASER.getCode()) == 0) {
+                    tradeBaseInfoResVo.setPurchaseEntName(kwcContractTradeUnit.getFirmName());
+                    tradeBaseInfoResVo.setPurchasePhone(kwcContractTradeUnit.getPhone());
                 }
             }
-
-            //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);
         }
+        contractTradeDetailResVo.setBaseInfo(tradeBaseInfoResVo);
 
         //标的信息
-        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);
+        List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(id);
+        if (CollectionUtils.isNotEmpty(kwcContractTradeGoodsList)) {
+            //todo 通过商品id查商品信息,填充商品名
+            List<TradeGoodsInfoResVo> tradeGoodsInfoResVoList = new ArrayList<>();
+            for (KwcContractTradeGoods kwcContractTradeGoods : kwcContractTradeGoodsList) {
+                TradeGoodsInfoResVo tradeGoodsInfoResVo = new TradeGoodsInfoResVo();
+                tradeGoodsInfoResVo.setAmount(kwcContractTradeGoods.getAmount());
+//                tradeGoodsInfoResVo.setGoodsName();
+                tradeGoodsInfoResVo.setPrice(kwcContractTradeGoods.getPrice());
+//                tradeGoodsInfoResVo.setUnit(0);
+                tradeGoodsInfoResVoList.add(tradeGoodsInfoResVo);
             }
-            contractLogisticsDetailResVo.setGoodsInfo(goodsInfo);
+            contractTradeDetailResVo.setGoodsInfo(tradeGoodsInfoResVoList);
         }
 
-        //合同文件
         List<String> fileList = new ArrayList<>();
-        fileList.add(kwcContractLogistics.getSignedUrl());
-        fileList.add(kwcContractLogistics.getSigningUrl());
-        contractLogisticsDetailResVo.setContractFile(fileList);
+        fileList.add(kwcContractTrade.getSigningUrl());
+        fileList.add(kwcContractTrade.getSignedUrl());
+        contractTradeDetailResVo.setContractFile(fileList);
 
-        //补充合同
-        List<KwcContractLogistics> supplementList = getSupplementList(kwcContractLogistics);
+        List<KwcContractTrade> supplementList = getSupplementList(id);
         if (CollectionUtils.isNotEmpty(supplementList)) {
-            List<ContractLogisticsDetailResVo> child = new ArrayList<>();
-            for (KwcContractLogistics supplement : supplementList) {
-                child.add(buildContractLogisticsDetailResVo(supplement));
+            List<ContractTradeDetailResVo> child = new ArrayList<>();
+            for (KwcContractTrade supplement : supplementList) {
+                child.add(buildContractTradeDetailResVo(supplement));
             }
-            contractLogisticsDetailResVo.setChild(child);
+            contractTradeDetailResVo.setChild(child);
         }
-        return contractLogisticsDetailResVo;
+        return contractTradeDetailResVo;
     }
 
 
-    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;
-    }*/
+    private List<KwcContractTrade> getSupplementList(Long id) {
+        LambdaQueryWrapper<KwcContractTrade> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractTrade::getContractPid, id);
+        wrapper.eq(KwcContractTrade::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractTrade::getStatus, Global.NO);
+        return kwcContractTradeMapper.selectList(wrapper);
+    }
+
 
+    /**
+     * @desc: 发起签约
+     * @param reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     */
+    public void submit(ContractTradeReqVo reqVo) {
+        Long id = reqVo.getId();
+        if (Objects.isNull(id)) {
+            //创建合同
+            KwcContractTrade kwcContractLogistics = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
+            id = new IdWorker(1L).nextId();
+            kwcContractLogistics.setId(id);
+            kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
+            kwcContractLogistics.setSigningUrl(reqVo.getContractFile());
+            if (kwcContractTradeMapper.insert(kwcContractLogistics) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            }
+
+            //存审批记录
+            kwcContractTradeTrackService.saveContractTradeTrack(id);
+            return;
+        }
+
+        id = addTradeContract(reqVo);
+        //存审批记录
+        kwcContractTradeTrackService.saveContractTradeTrack(id);
+    }
+
+
+    /**
+     * @desc: 修改草稿
+     * @param: reqVo 入参
+     * @author: czh
+     * @date 2023/7/16
+     */
+    @Transactional(rollbackFor = {})
+    public void update(ContractTradeReqVo reqVo) {
+        Long contractId = reqVo.getId();
+        KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(contractId);
+        if (Objects.isNull(kwcContractTrade)) {
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
+        }
+
+        KwcContractTrade param = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
+        param.setId(contractId);
+        param.setSigningUrl(reqVo.getContractFile());
+        param.setStatus(ContractStatusEnum.SAVE.getCode());
+        param.setUpdateBy(LoginUserHolder.getUserId());
+        param.setUpdateTime(new Date());
+        if (kwcContractTradeMapper.updateById(param) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
+
+
+        //保存交易合同商品信息-先把以前的删除
+        List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(contractId);
+        if (CollectionUtils.isNotEmpty(kwcContractTradeGoodsList)) {
+            Date date = new Date();
+            kwcContractTradeGoodsList.forEach(item -> {
+                item.setDelFlag(Global.YES);
+                item.setUpdateBy(LoginUserHolder.getUserId());
+                item.setUpdateTime(date);
+            });
+
+            if (kwcContractTradeGoodsService.updateBatch(kwcContractTradeGoodsList) != kwcContractTradeGoodsList.size()) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        }
+        kwcContractTradeGoodsService.saveContractTradeGoods(kwcContractTrade.getId(), reqVo.getGoodsInfo());
+    }
+
+
+    /**
+     * @desc: 手动完结
+     * @param: reqVo ids
+     * @author: czh
+     * @date 2023/7/16
+     */
+    @Transactional(rollbackFor = {})
+    public void complete(String ids) {
+        List<Long> contractIdList = Arrays.stream(ids.split(Global.COMMA)).map(Long::parseLong).toList();
+        List<KwcContractTrade> kwcContractTradeList = kwcContractTradeMapper.selectBatchIds(contractIdList);
+        Date date = new Date();
+        kwcContractTradeList.forEach(item -> {
+            item.setStatus(ContractStatusEnum.COMPLETE.getCode());
+            item.setUpdateBy(LoginUserHolder.getUserId());
+            item.setUpdateTime(date);
+            if (kwcContractTradeMapper.updateById(item) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        });
+    }
+
+
+    /**
+     * @desc: 手动完结
+     * @param: reqVo ids
+     * @author: czh
+     * @date 2023/7/16
+     */
+    @Transactional(rollbackFor = {})
+    public void delete(String ids) {
+        List<Long> contractIdList = Arrays.stream(ids.split(Global.COMMA)).map(Long::parseLong).toList();
+        List<KwcContractTrade> kwcContractTradeList = kwcContractTradeMapper.selectBatchIds(contractIdList);
+        Date date = new Date();
+        kwcContractTradeList.forEach(item -> {
+            if (item.getStatus() != ContractStatusEnum.SAVE.getCode()) {
+                throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_022);
+            }
+            item.setStatus(ContractStatusEnum.COMPLETE.getCode());
+            item.setUpdateBy(LoginUserHolder.getUserId());
+            item.setUpdateTime(date);
+            if (kwcContractTradeMapper.updateById(item) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        });
+    }
+
+    public void export(QueryListReqVo reqVo) {
+        QueryListReqDto queryListReqDto = new QueryListReqDto();
+        BeanUtils.copyProperties(reqVo, queryListReqDto);
+        queryListReqDto.setEntId(LoginUserHolder.getEntId());
+        if (StringUtils.isNotBlank(reqVo.getIds())) {
+            List<Long> idList = Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList();
+            queryListReqDto.setIdList(idList);
+        }
+
+        List<QueryListResVo> queryListResVos = new ArrayList<>();
+        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isNotEmpty(queryListResDtos)) {
+            queryListResVos = getQueryListResVos(queryListResDtos);
+        }
+        try {
+            EasyExcelUtil.writeSingleExcel("贸易合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
+        } catch (IOException e) {
+            log.error("导出失败:", e);
+            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
+        }
+    }
+
+    /**
+     * @return HttpResult
+     * @desc: 查询当前企业的销售合同
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    public List<QueryListResVo> queryCurrentEntSaleContractList() {
+        Long entId = LoginUserHolder.getEntId();
+        QueryListReqDto queryListReqDto = new QueryListReqDto();
+        queryListReqDto.setEntId(entId);
+        queryListReqDto.setStatus(ContractStatusEnum.SIGNED.getCode());
+        queryListReqDto.setEntType(EntTypeEnum.SUPPLIER.getCode());
+        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isEmpty(queryListResDtos)) {
+            return Collections.emptyList();
+        }
+        return getQueryListResVos(queryListResDtos);
+    }
 }
 
 

+ 35 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeTrackService.java

@@ -1,7 +1,21 @@
 package com.sckw.contract.service;
 
+import com.sckw.contract.dao.KwcContractLogisticsTrackMapper;
+import com.sckw.contract.dao.KwcContractTradeMapper;
+import com.sckw.contract.dao.KwcContractTradeTrackMapper;
+import com.sckw.contract.model.entity.KwcContractLogisticsTrack;
+import com.sckw.contract.model.entity.KwcContractTradeTrack;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.ContractTrackEnum;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.context.LoginUserHolder;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 /**
 * @author PC
 * @description 针对表【kwc_contract_trade_track(交易合同(采购合同/销售合同)-交易订单(采购订单/销售订单))】的数据库操作Service实现
@@ -10,6 +24,27 @@ import org.springframework.stereotype.Service;
 @Service
 public class KwcContractTradeTrackService {
 
+    @Autowired
+    private KwcContractTradeTrackMapper kwcContractTradeTrackMapper;
+
+
+    public void saveContractTradeTrack(Long contractId) {
+        Date date = new Date();
+        KwcContractTradeTrack kwcContractTradeTrack = new KwcContractTradeTrack();
+        kwcContractTradeTrack.setId(new IdWorker(1L).nextId());
+        kwcContractTradeTrack.setContractId(contractId);
+        kwcContractTradeTrack.setType(ContractTrackEnum.SIGNING.getCode());
+        kwcContractTradeTrack.setRemark("");
+        kwcContractTradeTrack.setStatus(Global.NO);
+        kwcContractTradeTrack.setCreateBy(LoginUserHolder.getUserId());
+        kwcContractTradeTrack.setCreateTime(date);
+        kwcContractTradeTrack.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractTradeTrack.setUpdateTime(date);
+        kwcContractTradeTrack.setDelFlag(Global.NO);
+        if (kwcContractTradeTrackMapper.insert(kwcContractTradeTrack) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+    }
 }
 
 

+ 95 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeUnitService.java

@@ -1,7 +1,22 @@
 package com.sckw.contract.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.contract.dao.KwcContractTradeUnitMapper;
+import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
+import com.sckw.contract.model.entity.KwcContractTradeUnit;
+import com.sckw.contract.model.vo.req.TradeBaseInfoReqVo;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.CooperateTypeEnum;
+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.EntCacheResDto;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+
 /**
 * @author PC
 * @description 针对表【kwc_contract_trade_unit(交易合同采购/销售企业信息)】的数据库操作Service实现
@@ -10,6 +25,86 @@ import org.springframework.stereotype.Service;
 @Service
 public class KwcContractTradeUnitService {
 
+    @Autowired
+    private KwcContractTradeUnitMapper kwcContractTradeUnitMapper;
+
+    @Autowired
+    private CommonBusinessService commonBusinessService;
+
+    /**
+     * @desc: 保存合同单位
+     * @param: contractId 合同id, baseInfo基础信息
+     * @author: czh
+     * @date 2023/7/16
+     */
+    public void saveContractTradeUnit(long contractId, TradeBaseInfoReqVo baseInfo) {
+        List<Long> entIdList = new ArrayList<>();
+        entIdList.add(baseInfo.getProvideEntId());
+        entIdList.add(baseInfo.getPurchaseEntId());
+        Map<Long, EntCacheResDto> entCacheResDtoMap = commonBusinessService.queryEntCacheMapByIds(entIdList);
+
+        Date date = new Date();
+        saveProvideAndPurchase(contractId, entCacheResDtoMap, date, baseInfo);
+    }
+
+    private void saveProvideAndPurchase(long contractId, Map<Long, EntCacheResDto> entCacheResDtoMap, Date date, TradeBaseInfoReqVo baseInfo) {
+        //存供应商
+        KwcContractTradeUnit kwcContractTradeUnit = new KwcContractTradeUnit();
+        kwcContractTradeUnit.setId(new IdWorker(1L).nextId());
+        kwcContractTradeUnit.setContractId(contractId);
+        kwcContractTradeUnit.setUnitType(CooperateTypeEnum.SUPPLIER.getCode());
+        kwcContractTradeUnit.setEntId(baseInfo.getProvideEntId());
+        saveEnt(entCacheResDtoMap, kwcContractTradeUnit);
+        kwcContractTradeUnit.setSignPhone(baseInfo.getProvidePhone());
+        kwcContractTradeUnit.setStatus(Global.NO);
+        kwcContractTradeUnit.setCreateBy(LoginUserHolder.getUserId());
+        kwcContractTradeUnit.setCreateTime(date);
+        kwcContractTradeUnit.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractTradeUnit.setUpdateTime(date);
+        kwcContractTradeUnit.setDelFlag(Global.NO);
+        if (kwcContractTradeUnitMapper.insert(kwcContractTradeUnit) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+
+        //存采购商
+        kwcContractTradeUnit.setId(new IdWorker(1L).nextId());
+        kwcContractTradeUnit.setUnitType(CooperateTypeEnum.PURCHASER.getCode());
+        kwcContractTradeUnit.setEntId(baseInfo.getPurchaseEntId());
+        saveEnt(entCacheResDtoMap, kwcContractTradeUnit);
+        kwcContractTradeUnit.setSignPhone(baseInfo.getPurchasePhone());
+        if (kwcContractTradeUnitMapper.insert(kwcContractTradeUnit) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+    }
+
+    /**
+     * @desc: 保存合同企业
+     * @author: czh
+     * @date 2023/7/16
+     */
+    private void saveEnt(Map<Long, EntCacheResDto> entCacheResDtoMap, KwcContractTradeUnit kwcContractTradeUnit) {
+        EntCacheResDto entCacheResDto = entCacheResDtoMap.get(kwcContractTradeUnit.getEntId());
+        if (Objects.nonNull(entCacheResDto)) {
+            kwcContractTradeUnit.setFirmName(entCacheResDto.getFirmName());
+        }
+        kwcContractTradeUnit.setContacts(entCacheResDto.getContacts());
+        kwcContractTradeUnit.setPhone(entCacheResDto.getPhone());
+    }
+
+    /**
+     * @param id 合同id
+     * @return KwcContractTradeUnit
+     * @desc: 根据合同id查企业记录
+     * @author: czh
+     * @date: 2023/7/20
+     */
+    public List<KwcContractTradeUnit> queryByContractId(Long id) {
+        LambdaQueryWrapper<KwcContractTradeUnit> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractTradeUnit::getContractId, id);
+        wrapper.eq(KwcContractTradeUnit::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractTradeUnit::getStatus, Global.NO);
+        return kwcContractTradeUnitMapper.selectList(wrapper);
+    }
 }
 
 

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

@@ -41,7 +41,7 @@
     </sql>
 
     <select id="queryList" resultType="com.sckw.contract.model.dto.res.QueryListResDto">
-        select a.amount,
+         select a.amount,
                 a.charging,
                 a.name contactName,
                 a.contract_no,

+ 29 - 7
sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml

@@ -39,11 +39,34 @@
     </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
+    <select id="queryList" resultType="com.sckw.contract.model.dto.res.QueryListResDto">
+        select a.amount,
+               a.trading,
+               a.name contactName,
+               a.contract_no,
+               c.create_by initiateBy,
+               c.create_time initiateTime,
+               a.create_time,
+               a.start_time,
+               a.end_time,
+               a.id,
+               a.remark,
+               a.signing_way,
+               d.create_time signTime,
+               a.status,
+               b.unit_type,
+               b.ent_id,
+               b.firm_name entName,
+               e.ent_id targetEntId,
+               e.firm_name targetEntName
+          from kwc_contract_trade a
+          left join kwc_contract_trade_unit b on a.id = b.contract_id and b.unit_type = #{entType}
+          left join kwc_contract_trade_track c on a.id = c.contract_id and c.del_flag = 0 and c.type = 1
+          left join kwc_contract_trade_track d on a.id = d.contract_id and d.del_flag = 0 and d.type = 0
+          left join kwc_contract_trade_unit e on a.id = b.contract_id and b.unit_type != #{entType}
+         where a.del_flag = 0
+           and b.del_flag = 0
+           and b.ent_id = #{entId}
         <if test="startTime != null">
             and a.create_time >= #{startTime}
         </if>
@@ -54,7 +77,7 @@
             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, '%'))
+            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
@@ -62,6 +85,5 @@
                 #{item}
             </foreach>
         </if>
-
     </select>
 </mapper>

+ 2 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckDto.java

@@ -22,7 +22,7 @@ public class KwfTruckDto {
      * 车牌号
      */
     @NotBlank(message = "车牌号不能为空!")
-    @Size(max=7, message = "车牌号长度不能大于7个字符!")
+    @Size(max=8, message = "车牌号长度不能大于8个字符!")
     private String truckNo;
 
     /**
@@ -53,6 +53,7 @@ public class KwfTruckDto {
      * 标准荷载(净重)
      */
     //@Pattern(regexp = "^1[3456789]\\d{9}$", message = "标准荷载格式不正确!")
+    @NotNull(message = "标准荷载不能为空!")
     private Double actualWeight;
 
     /**

+ 53 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java

@@ -79,18 +79,41 @@ public class KwfDriverService {
         }
 
         /**全部数据-处理**/
+        List<KwfTableTopCount> countList = new ArrayList();
         KwfTableTopCount allCount = new KwfTableTopCount();
         allCount.setValue(String.valueOf(Global.NUMERICAL_ZERO));
         allCount.setTotal(tatol);
-        counts.add(allCount);
+        allCount.setName("全部");
+        countList.add(allCount);
+
+        /**数据处理**/
+        Map<String, Integer> statusMap = new HashMap(){{put("正常", 1); put("临时", 2); put("异常", 3);}};
+        for(Map.Entry<String, Integer> entry:statusMap.entrySet()){
+            System.out.println(entry.getKey()+"--->"+entry.getValue());
+            KwfTableTopCount count = new KwfTableTopCount();
+            for (KwfTableTopCount topCount:counts) {
+                if (Integer.parseInt(topCount.getValue()) == entry.getValue()) {
+                    BeanUtils.copyProperties(topCount, count);
+                }
+            }
+            count.setName(entry.getKey());
+            count.setValue(String.valueOf(entry.getValue()));
+            countList.add(count);
+        }
 
         /**数据组装**/
         Map tableCount = new HashMap();
-        tableCount.put("tableTop", counts);
+        tableCount.put("tableTop", countList);
         tableCount.put("tableBottom", tatol);
         return tableCount;
     }
 
+    class KwfTableTopStatus {
+        Map<String, Object> statusMap = new HashMap(){{put("1","正常"); put("2","临时"); put("3","异常");}};
+
+
+    }
+
     /**
      * @param params 分页参数
      * @desc 分页查询
@@ -280,7 +303,7 @@ public class KwfDriverService {
                     throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.DELETE_FAIL);
                 }
             } else {
-                HttpResult.error("选择删除的数据已不存在!");
+                return HttpResult.error("选择删除的数据已不存在!");
             }
         }
         return HttpResult.ok("删除成功!");
@@ -331,6 +354,15 @@ public class KwfDriverService {
      * @date 2023/7/7
      **/
     public HttpResult driverCardEdit(KwfDriverCardDto params) {
+        /**数据校验**/
+        if (StringUtils.isBlank(params.getDriverId())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_PATTERN_ERROR_CODE,"司机信息ID不能为空!");
+        }
+        KwfDriver driver = driverDao.selectById(params.getDriverId());
+        if (driver == null) {
+            return HttpResult.error("司机信息不存在!");
+        }
+
         /**数据copy**/
         KwfDriverCard driverCard = new KwfDriverCard();
         BeanUtils.copyProperties(params, driverCard);
@@ -367,6 +399,15 @@ public class KwfDriverService {
      * @date 2023/7/7
      **/
     public HttpResult driverLicenseEdit(KwfDriverLicenseDto params) {
+        /**数据校验**/
+        if (StringUtils.isBlank(params.getDriverId())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_PATTERN_ERROR_CODE,"司机信息ID不能为空!");
+        }
+        KwfDriver driver = driverDao.selectById(params.getDriverId());
+        if (driver == null) {
+            return HttpResult.error("司机信息不存在!");
+        }
+
         /**数据copy**/
         KwfDriverLicense driverLicense = new KwfDriverLicense();
         BeanUtils.copyProperties(params, driverLicense);
@@ -404,6 +445,15 @@ public class KwfDriverService {
      * @date 2023/7/7
      **/
     public HttpResult driverQualificationEdit(KwfDriverQualificationDto params) {
+        /**数据校验**/
+        if (StringUtils.isBlank(params.getDriverId())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_PATTERN_ERROR_CODE,"司机信息ID不能为空!");
+        }
+        KwfDriver driver = driverDao.selectById(params.getDriverId());
+        if (driver == null) {
+            return HttpResult.error("司机信息不存在!");
+        }
+
         /**数据copy**/
         KwfDriverQualification driverQual = new KwfDriverQualification();
         BeanUtils.copyProperties(params, driverQual);

+ 2 - 2
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java

@@ -109,8 +109,8 @@ public class KwmAddressController {
      * @return HttpResult
      */
     @PostMapping("queryByEnt")
-    public HttpResult queryByEnt(@RequestBody IdsReqVo reqVo) throws SystemException {
-        return HttpResult.ok(kwmAddressService.queryByEnt(reqVo.getId()));
+    public HttpResult queryByEnt(@RequestBody QueryByEntReqVo reqVo) throws SystemException {
+        return HttpResult.ok(kwmAddressService.queryByEnt(reqVo));
     }
 
 }

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

@@ -57,7 +57,7 @@ public class KwmCooperateManageController {
      */
     @PostMapping("bindManager")
     public HttpResult bindManager(@Valid @RequestBody BindManagerReqVo reqVo) throws SystemException {
-        kwmCooperateManageService.bindManager(reqVo.getUserId());
+        kwmCooperateManageService.bindManager(reqVo);
         return HttpResult.ok(HttpStatus.MSG_010);
     }
 

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

@@ -4,7 +4,6 @@ import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
 import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
 import com.sckw.manage.model.entity.KwmCooperate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.sckw.manage.model.vo.res.CooperateManageQueryResVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 

+ 10 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateManageQueryResDto.java

@@ -42,6 +42,11 @@ public class CooperateManageQueryResDto {
      */
     private String inviterContacts;
 
+    /**
+     * 邀请方联系人id
+     */
+    private Long inviterContactsId;
+
     /**
      * 邀请方联系电话
      */
@@ -52,6 +57,11 @@ public class CooperateManageQueryResDto {
      */
     private String inviteeContacts;
 
+    /**
+     * 受邀方联系人id
+     */
+    private Long inviteeContactsId;
+
     /**
      * 受邀方联系电话
      */

+ 0 - 94
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmAddress.java

@@ -115,98 +115,4 @@ public class KwmAddress implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public boolean equals(Object that) {
-        if (this == that) {
-            return true;
-        }
-        if (that == null) {
-            return false;
-        }
-        if (getClass() != that.getClass()) {
-            return false;
-        }
-        KwmAddress other = (KwmAddress) that;
-        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
-            && (this.getEntId() == null ? other.getEntId() == null : this.getEntId().equals(other.getEntId()))
-            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
-            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
-            && (this.getDefaultType() == null ? other.getDefaultType() == null : this.getDefaultType().equals(other.getDefaultType()))
-            && (this.getContacts() == null ? other.getContacts() == null : this.getContacts().equals(other.getContacts()))
-            && (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone()))
-            && (this.getCityCode() == null ? other.getCityCode() == null : this.getCityCode().equals(other.getCityCode()))
-            && (this.getCityName() == null ? other.getCityName() == null : this.getCityName().equals(other.getCityName()))
-            && (this.getDetailAddress() == null ? other.getDetailAddress() == null : this.getDetailAddress().equals(other.getDetailAddress()))
-            && (this.getLat() == null ? other.getLat() == null : this.getLat().equals(other.getLat()))
-            && (this.getLng() == null ? other.getLng() == null : this.getLng().equals(other.getLng()))
-            && (this.getFence() == null ? other.getFence() == null : this.getFence().equals(other.getFence()))
-            && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
-            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
-            && (this.getCreateBy() == null ? other.getCreateBy() == null : this.getCreateBy().equals(other.getCreateBy()))
-            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
-            && (this.getUpdateBy() == null ? other.getUpdateBy() == null : this.getUpdateBy().equals(other.getUpdateBy()))
-            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
-            && (this.getDelFlag() == null ? other.getDelFlag() == null : this.getDelFlag().equals(other.getDelFlag()));
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
-        result = prime * result + ((getEntId() == null) ? 0 : getEntId().hashCode());
-        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
-        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
-        result = prime * result + ((getDefaultType() == null) ? 0 : getDefaultType().hashCode());
-        result = prime * result + ((getContacts() == null) ? 0 : getContacts().hashCode());
-        result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode());
-        result = prime * result + ((getCityCode() == null) ? 0 : getCityCode().hashCode());
-        result = prime * result + ((getCityName() == null) ? 0 : getCityName().hashCode());
-        result = prime * result + ((getDetailAddress() == null) ? 0 : getDetailAddress().hashCode());
-        result = prime * result + ((getLat() == null) ? 0 : getLat().hashCode());
-        result = prime * result + ((getLng() == null) ? 0 : getLng().hashCode());
-        result = prime * result + ((getFence() == null) ? 0 : getFence().hashCode());
-        result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
-        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
-        result = prime * result + ((getCreateBy() == null) ? 0 : getCreateBy().hashCode());
-        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
-        result = prime * result + ((getUpdateBy() == null) ? 0 : getUpdateBy().hashCode());
-        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
-        result = prime * result + ((getDelFlag() == null) ? 0 : getDelFlag().hashCode());
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", id=").append(id);
-        sb.append(", entId=").append(entId);
-        sb.append(", name=").append(name);
-        sb.append(", type=").append(type);
-        sb.append(", defaultType=").append(defaultType);
-        sb.append(", contacts=").append(contacts);
-        sb.append(", phone=").append(phone);
-        sb.append(", cityCode=").append(cityCode);
-        sb.append(", cityName=").append(cityName);
-        sb.append(", detailAddress=").append(detailAddress);
-        sb.append(", lat=").append(lat);
-        sb.append(", lng=").append(lng);
-        sb.append(", fence=").append(fence);
-        sb.append(", remark=").append(remark);
-        sb.append(", status=").append(status);
-        sb.append(", createBy=").append(createBy);
-        sb.append(", createTime=").append(createTime);
-        sb.append(", updateBy=").append(updateBy);
-        sb.append(", updateTime=").append(updateTime);
-        sb.append(", delFlag=").append(delFlag);
-        sb.append(", serialVersionUID=").append(serialVersionUID);
-        sb.append("]");
-        return sb.toString();
-    }
 }

+ 10 - 4
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperate.java

@@ -1,10 +1,6 @@
 package com.sckw.manage.model.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
 
 import com.sckw.core.model.base.BaseModel;
 import lombok.Data;
@@ -32,6 +28,11 @@ public class KwmCooperate extends BaseModel {
      */
     private Long inviteeEntId;
 
+    /**
+     * 邀请方联系人id
+     */
+    private Long inviterContactsId;
+
     /**
      * 邀请方联系人姓名
      */
@@ -42,6 +43,11 @@ public class KwmCooperate extends BaseModel {
      */
     private String inviterPhone;
 
+    /**
+     * 受邀方联系人id
+     */
+    private Long inviteeContactsId;
+
     /**
      * 受邀方联系人姓名
      */

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

@@ -14,7 +14,7 @@ import java.io.Serializable;
 public class AddressAddReqVo implements Serializable {
 
     @Serial
-    private static final long serialVersionUID = -3086647554449155374L;
+    private static final long serialVersionUID = 6226758060220116207L;
 
     /**
      * 区域code

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

@@ -21,4 +21,9 @@ public class BindManagerReqVo implements Serializable {
      */
     private Long userId;
 
+    /**
+     * 合同id
+     */
+    private Long id;
+
 }

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

@@ -36,9 +36,9 @@ public class InitiateReqVo implements Serializable {
     private String remark;
 
     /**
-     * 业务联系人id
+     * 我方业务联系人id
      */
-    @NotNull(message = "业务联系人不能为空")
+    @NotNull(message = "我方业务联系人不能为空")
     private Long userId;
 
 

+ 28 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/QueryByEntReqVo.java

@@ -0,0 +1,28 @@
+package com.sckw.manage.model.vo.req;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 根据企业查地址
+ * @date 2023/7/19
+ */
+@Data
+public class QueryByEntReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5445012243242005520L;
+
+    /**
+     * 企业id
+     */
+    private Long id;
+
+    /**
+     * 地址名
+     */
+    private String cityName;
+}

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

@@ -25,6 +25,11 @@ public class AddressQueryResVo implements Serializable {
     @JsonSerialize(using = LongToStringUtils.class)
     private Long id;
 
+    /**
+     * 区域code
+     */
+    private Integer cityCode;
+
     /**
      * 省市区
      */
@@ -55,6 +60,11 @@ public class AddressQueryResVo implements Serializable {
      */
     private Integer fenceStatus;
 
+    /**
+     * 电子围栏
+     */
+    private String fence;
+
     /**
      * 纬度
      */

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

@@ -52,22 +52,32 @@ public class CooperateManageQueryResVo implements Serializable {
     private String entName;
 
     /**
-     * 客户经理
+     * 我方客户经理
      */
     private String manager;
 
     /**
-     * 联系人
+     * 我方客户经理id
+     */
+    private Long managerId;
+
+    /**
+     * 对方联系人
      */
     private String contacts;
 
     /**
-     * 客户经理联系电话
+     * 对方联系人id
+     */
+    private Long contactsId;
+
+    /**
+     * 我方客户经理联系电话
      */
     private String managerPhone;
 
     /**
-     * 联系电话
+     * 对方联系电话
      */
     private String phone;
 

+ 10 - 6
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java

@@ -181,16 +181,20 @@ public class CommonBusinessService {
             cooperateManageQueryResVo.setEntId(targetEntId);
 
             //我方是发起方
-            if (entId.compareTo(cooperateManageQueryResDto.getInviteeEntId()) == 0) {
+            if (entId.compareTo(cooperateManageQueryResDto.getInviterEntId()) == 0) {
                 cooperateManageQueryResVo.setContacts(cooperateManageQueryResDto.getInviteeContacts());
-                cooperateManageQueryResVo.setManager(cooperateManageQueryResDto.getInviterContacts());
                 cooperateManageQueryResVo.setPhone(cooperateManageQueryResDto.getInviteePhone());
+                cooperateManageQueryResVo.setContactsId(cooperateManageQueryResDto.getInviteeContactsId());
+                cooperateManageQueryResVo.setManager(cooperateManageQueryResDto.getInviterContacts());
                 cooperateManageQueryResVo.setManagerPhone(cooperateManageQueryResDto.getInviterPhone());
+                cooperateManageQueryResVo.setManagerId(cooperateManageQueryResDto.getInviterContactsId());
             } else {
                 cooperateManageQueryResVo.setContacts(cooperateManageQueryResDto.getInviterContacts());
-                cooperateManageQueryResVo.setManager(cooperateManageQueryResDto.getInviteeContacts());
                 cooperateManageQueryResVo.setPhone(cooperateManageQueryResDto.getInviterPhone());
+                cooperateManageQueryResVo.setContactsId(cooperateManageQueryResDto.getInviterContactsId());
+                cooperateManageQueryResVo.setManager(cooperateManageQueryResDto.getInviteeContacts());
                 cooperateManageQueryResVo.setManagerPhone(cooperateManageQueryResDto.getInviteePhone());
+                cooperateManageQueryResVo.setManagerId(cooperateManageQueryResDto.getInviteeContactsId());
             }
 
             result.add(cooperateManageQueryResVo);
@@ -212,10 +216,10 @@ public class CommonBusinessService {
         total.setCount(0);
         result.add(total);
 
-        for (int i = 0; i < values.length; i++) {
+        for (CooperateStatusEnum value : values) {
             FindListGroupResVo findListGroupResVo = new FindListGroupResVo();
-            findListGroupResVo.setStatus(values[i].getCode());
-            findListGroupResVo.setStatusName(values[i].getName());
+            findListGroupResVo.setStatus(value.getCode());
+            findListGroupResVo.setStatusName(value.getName());
             findListGroupResVo.setCount(0);
             result.add(findListGroupResVo);
         }

+ 29 - 17
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java

@@ -53,33 +53,35 @@ public class KwmAddressService {
      */
     public PageResult queryByPage(AddressQueryReqVo reqVo) {
         PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
-        List<AddressQueryResVo> list = findList(reqVo);
-        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+        List<KwmAddress> kwmAddressList = findList(reqVo);
+        if (CollectionUtils.isEmpty(kwmAddressList)) {
+            return PageHelperUtil.getPageResult(new PageInfo<>());
+        }
+        List<AddressQueryResVo> list = getAddressQueryResVo(kwmAddressList);
+        return PageHelperUtil.getPageResult(new PageInfo<>(list), kwmAddressList, reqVo.getPageSize());
     }
 
     /**
      * @param reqVo 分页入参
-     * @return AddressQueryResVo
+     * @return KwmAddress
      * @desc: 全量查询
      * @author: czh
      * @date: 2023/7/12
      */
-    private List<AddressQueryResVo> findList(AddressQueryReqVo reqVo) {
+    private List<KwmAddress> findList(AddressQueryReqVo reqVo) {
         LambdaQueryWrapper<KwmAddress> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Objects.nonNull(reqVo.getCityCode()), KwmAddress::getCityCode, reqVo.getCityCode()).
                 eq(Objects.nonNull(reqVo.getType()), KwmAddress::getType, reqVo.getType()).
-                in(StringUtils.isNotBlank(reqVo.getIds()), KwmAddress::getId, Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList()).
                 eq(KwmAddress::getDelFlag, Global.NO).
-                between(KwmAddress::getCreateTime, reqVo.getStartTime(), reqVo.getEndTime()).
-                and(wq -> wq.like(StringUtils.isNotBlank(reqVo.getKeywords()), KwmAddress::getDetailAddress, reqVo.getKeywords()).or().
-                        like(StringUtils.isNotBlank(reqVo.getKeywords()), KwmAddress::getCityName, reqVo.getKeywords()));
-        List<KwmAddress> kwmAddresses = kwmAddressMapper.selectList(wrapper);
-        if (CollectionUtils.isEmpty(kwmAddresses)) {
-            return Collections.emptyList();
+                ge(Objects.nonNull(reqVo.getStartTime()), KwmAddress::getCreateTime, reqVo.getStartTime()).
+                le(Objects.nonNull(reqVo.getEndTime()), KwmAddress::getCreateTime, reqVo.getEndTime()).
+                and(StringUtils.isNotBlank(reqVo.getKeywords()),
+                        wq -> wq.like(KwmAddress::getDetailAddress, reqVo.getKeywords()).or().
+                                like(KwmAddress::getCityName, reqVo.getKeywords()));
+        if (StringUtils.isNotBlank(reqVo.getIds())) {
+            wrapper.in(KwmAddress::getId, Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList());
         }
-
-        List<AddressQueryResVo> list = getAddressQueryResVo(kwmAddresses);
-        return list;
+        return kwmAddressMapper.selectList(wrapper);
     }
 
 
@@ -211,7 +213,12 @@ public class KwmAddressService {
      * @date: 2023/7/12
      */
     public void export(AddressQueryReqVo reqVo) {
-        List<AddressQueryResVo> list = findList(reqVo);
+        List<KwmAddress> kwmAddressList = findList(reqVo);
+        List<AddressQueryResVo> list = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(kwmAddressList)) {
+            list = getAddressQueryResVo(kwmAddressList);
+        }
+
         try {
             EasyExcelUtil.writeSingleExcel("地址管理.xlsx", "sheet1", list, AddressQueryResVo.class);
         } catch (IOException e) {
@@ -227,10 +234,15 @@ public class KwmAddressService {
      * @date 2023/7/18
      * @return AddressQueryResVo
      */
-    public List<AddressQueryResVo> queryByEnt(Long id) {
+    public List<AddressQueryResVo> queryByEnt(QueryByEntReqVo reqVo) {
         LambdaQueryWrapper<KwmAddress> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(KwmAddress::getEntId, id);
+        wrapper.eq(KwmAddress::getEntId, reqVo.getId());
         wrapper.eq(KwmAddress::getDelFlag, Global.NO);
+
+        if (StringUtils.isNotBlank(reqVo.getCityName())) {
+            wrapper.and(wp -> wp.like(KwmAddress::getCityName, reqVo.getCityName()).or().
+                                 like(KwmAddress::getDetailAddress, reqVo.getCityName()));
+        }
         List<KwmAddress> kwmAddresses = kwmAddressMapper.selectList(wrapper);
         if (CollectionUtils.isEmpty(kwmAddresses)) {
             return Collections.emptyList();

+ 18 - 15
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java

@@ -32,13 +32,11 @@ import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @author czh
@@ -149,31 +147,36 @@ public class KwmCooperateApplyService {
      * @author: czh
      * @date: 2023/7/11
      */
-    private void saveInitiate(InitiateReqVo reqVo, Long currentEntId, List<Integer> chooseCooperateTypes) {
-        Long userId = LoginUserHolder.getUserId();
+    public void saveInitiate(InitiateReqVo reqVo, Long currentEntId, List<Integer> chooseCooperateTypes) {
         Date date = new Date();
-        UserCacheResDto userCacheResDto = remoteSystemService.queryManagerInfoByEntId(currentEntId);
         KwmCooperate kwmCooperate = new KwmCooperate();
         long id = new IdWorker(1L).nextId();
         kwmCooperate.setEntId(currentEntId);
         kwmCooperate.setInviterEntId(currentEntId);
         kwmCooperate.setInviteeEntId(reqVo.getEntId());
-        if (Objects.nonNull(userCacheResDto)) {
-            kwmCooperate.setInviterContacts(userCacheResDto.getName());
-            kwmCooperate.setInviterPhone(userCacheResDto.getPhone());
-        }
-        Long contactId = reqVo.getUserId();
-        UserCacheResDto contactDto = remoteSystemService.queryUserCacheById(contactId);
+
+        //我方联系人
+        UserCacheResDto contactDto = remoteSystemService.queryUserCacheById(reqVo.getUserId());
         if (Objects.nonNull(contactDto)) {
+            kwmCooperate.setInviterContactsId(contactDto.getId());
+            kwmCooperate.setInviterContacts(contactDto.getName());
+            kwmCooperate.setInviterPhone(contactDto.getPhone());
+        }
+
+        //对方联系人
+        UserCacheResDto userCacheResDto = remoteSystemService.queryManagerInfoByEntId(reqVo.getEntId());
+        if (Objects.nonNull(userCacheResDto)) {
+            kwmCooperate.setInviteeContactsId(userCacheResDto.getId());
             kwmCooperate.setInviteeContacts(contactDto.getName());
             kwmCooperate.setInviteePhone(contactDto.getPhone());
         }
+
         kwmCooperate.setId(id);
         kwmCooperate.setRemark(reqVo.getRemark());
         kwmCooperate.setStatus(CooperateStatusEnum.PROCESS.getCode());
-        kwmCooperate.setCreateBy(userId);
+        kwmCooperate.setCreateBy(LoginUserHolder.getUserId());
         kwmCooperate.setCreateTime(date);
-        kwmCooperate.setUpdateBy(userId);
+        kwmCooperate.setUpdateBy(LoginUserHolder.getUserId());
         kwmCooperate.setUpdateTime(date);
         kwmCooperate.setDelFlag(Global.NO);
         if (kwmCooperateMapper.insert(kwmCooperate) <= 0) {
@@ -187,9 +190,9 @@ public class KwmCooperateApplyService {
             kwmCooperateType.setCooperateId(id);
             kwmCooperateType.setType(item);
             kwmCooperateType.setStatus(Global.NO);
-            kwmCooperateType.setCreateBy(userId);
+            kwmCooperateType.setCreateBy(LoginUserHolder.getUserId());
             kwmCooperateType.setCreateTime(date);
-            kwmCooperateType.setUpdateBy(userId);
+            kwmCooperateType.setUpdateBy(LoginUserHolder.getUserId());
             kwmCooperateType.setUpdateTime(date);
             kwmCooperateType.setDelFlag(Global.NO);
             if (kwmCooperateTypeMapper.insert(kwmCooperateType) <= 0) {

+ 33 - 3
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java

@@ -20,6 +20,7 @@ import com.sckw.excel.utils.EasyExcelUtil;
 import com.sckw.manage.dao.KwmCooperateMapper;
 import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
 import com.sckw.manage.model.entity.KwmCooperate;
+import com.sckw.manage.model.vo.req.BindManagerReqVo;
 import com.sckw.manage.model.vo.req.CooperateManageQueryReqVo;
 import com.sckw.manage.model.vo.res.CooperateManageQueryResVo;
 import com.sckw.manage.model.vo.res.FindListGroupResVo;
@@ -27,6 +28,7 @@ import com.sckw.manage.model.vo.res.QueryDetailResVo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.RemoteUserService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -133,13 +135,41 @@ public class KwmCooperateManageService {
     }
 
     /**
-     * @param userId 用户id
+     * @param reqVo 用户id
      * @desc: 设置客户经理
      * @author: czh
      * @date: 2023/7/10
      */
-    public void bindManager(Long userId) {
-        remoteUserService.bindManager(LoginUserHolder.getEntId(), userId);
+    public void bindManager(BindManagerReqVo reqVo) throws SystemException {
+        Long contractId = reqVo.getId();
+        KwmCooperate kwmCooperate = kwmCooperateMapper.selectById(contractId);
+        if (Objects.isNull(kwmCooperate)) {
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.COOPERATE_NOT_EXISTS);
+        }
+
+        Long userId = reqVo.getUserId();
+        UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(userId);
+        if (Objects.isNull(userCacheResDto)) {
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ACCOUNT_NOT_EXISTS);
+        }
+
+        Long entId = kwmCooperate.getEntId();
+        Long currentEntId = LoginUserHolder.getEntId();
+        //不相等则不是该合作的创建人,应该修改受邀请人信息
+        if (entId.compareTo(currentEntId) != 0) {
+            kwmCooperate.setInviteeContactsId(userCacheResDto.getId());
+            kwmCooperate.setInviteeContacts(userCacheResDto.getName());
+            kwmCooperate.setInviteePhone(userCacheResDto.getPhone());
+        } else {
+            kwmCooperate.setInviterContactsId(userCacheResDto.getId());
+            kwmCooperate.setInviterContacts(userCacheResDto.getName());
+            kwmCooperate.setInviterPhone(userCacheResDto.getPhone());
+        }
+        kwmCooperate.setUpdateTime(new Date());
+        kwmCooperate.setUpdateBy(LoginUserHolder.getUserId());
+        if (kwmCooperateMapper.updateById(kwmCooperate) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
     }
 
     /**

+ 2 - 0
sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml

@@ -39,6 +39,8 @@
                min(a.inviter_ent_id) inviterEntId,
                min(a.invitee_contacts) inviteeContacts,
                min(a.inviter_contacts) inviterContacts,
+               min(a.invitee_contacts_id) inviteeContactsId,
+               min(a.inviter_contacts_id) inviterContactsId,
                min(a.invitee_phone) inviteePhone,
                min(a.inviter_phone) inviterPhone,
                min(a.create_time) createTime,

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

@@ -1,12 +1,17 @@
 package com.sckw.message.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.message.model.vo.req.SendSmsVerifyCoderReqVO;
 import com.sckw.message.service.SmsService;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
+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: yzc
@@ -17,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping(value = "/kwmSms")
 @RequiredArgsConstructor
+@Slf4j
 public class SmsController {
 
     private final SmsService smsService;
@@ -30,6 +36,7 @@ public class SmsController {
      */
     @PostMapping(value = "/sendVerifyCode", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult sendVerifyCode(@Valid @RequestBody SendSmsVerifyCoderReqVO param) {
+        log.info("发送验证码参数:{}", JSON.toJSONString(param));
         smsService.sendVerifyCode(param);
         return HttpResult.ok();
     }

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AddressInfo.java

@@ -2,6 +2,7 @@ package com.sckw.order.model.vo.req;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -44,6 +45,7 @@ public class AddressInfo {
      * 联系电话
      */
     @NotBlank(message = "联系电话不能为空")
+    @Pattern(regexp = "^1[3456789]\\d{9}$", message = "非法手机号格式")
     private String phone;
 
     /**

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/GoodsInfo.java

@@ -1,5 +1,6 @@
 package com.sckw.order.model.vo.req;
 
+import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
@@ -70,6 +71,7 @@ public class GoodsInfo {
      * 订单成交单价
      */
     @NotNull(message = "订单成交单价不能为空")
+    @DecimalMin(value = "0.00",message = "订单成交单价最小为零")
     private BigDecimal unitPrice;
 
     /**

+ 3 - 4
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderParam.java

@@ -2,10 +2,7 @@ package com.sckw.order.model.vo.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
+import jakarta.validation.constraints.*;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -36,11 +33,13 @@ public class PurchaseOrderParam {
      * 订单总量
      */
     @NotNull(message = "订单总量不能为空")
+    @DecimalMin(value = "0.00",message = "订单总量最小为零")
     private BigDecimal amount;
     /**
      * 订单金额
      */
     @NotNull(message = "订单金额不能为空")
+    @DecimalMin(value = "0.00",message = "订单金额最小为零")
     private BigDecimal price;
 
     /**

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UnitInfo.java

@@ -2,6 +2,7 @@ package com.sckw.order.model.vo.req;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -44,5 +45,6 @@ public class UnitInfo {
      * 联系电话
      */
     @NotBlank(message = "联系电话不能为空")
+    @Pattern(regexp = "^1[3456789]\\d{9}$", message = "非法手机号格式")
     private String phone;
 }

+ 4 - 4
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UpdateOrderParam.java

@@ -1,10 +1,7 @@
 package com.sckw.order.model.vo.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import jakarta.validation.constraints.Max;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
+import jakarta.validation.constraints.*;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -43,10 +40,13 @@ public class UpdateOrderParam {
     /**
      * 订单总量
      */
+    @DecimalMin(value = "0.00",message = "订单总量最小为零")
     private BigDecimal amount;
+
     /**
      * 订单金额
      */
+    @DecimalMin(value = "0.00",message = "订单金额最小为零")
     private BigDecimal price;
 
     /**

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

@@ -410,11 +410,11 @@ public class KwoTradeOrderService {
 
 
     private void checkParams(UpdateOrderParam param, String source) {
-        if (Objects.isNull(param.getAmount())) {
-            throw new BusinessException("订单总量不能为空!");
+        if (Objects.isNull(param.getAmount()) || param.getAmount().compareTo(BigDecimal.ZERO) < 0) {
+            throw new BusinessException("订单总量不能为空且不能为负数!");
         }
-        if (Objects.isNull(param.getPrice())) {
-            throw new BusinessException("订单金额不能为空!");
+        if (Objects.isNull(param.getPrice()) || param.getPrice().compareTo(BigDecimal.ZERO) < 0) {
+            throw new BusinessException("订单金额不能为空且不能为负数!");
         }
         if (StringUtils.isBlank(param.getTrading())) {
             throw new BusinessException("交易方式不能为空!");
@@ -465,8 +465,8 @@ public class KwoTradeOrderService {
         if (StringUtils.isBlank(goodsInfo.getGoodsType())) {
             throw new BusinessException("商品类型不能为空!");
         }
-        if (Objects.isNull(goodsInfo.getGoodsTaxRate())) {
-            throw new BusinessException("商品发票税率不能为空!");
+        if (Objects.isNull(goodsInfo.getGoodsTaxRate()) || goodsInfo.getGoodsTaxRate().compareTo(BigDecimal.ZERO) < 0) {
+            throw new BusinessException("商品发票税率不能为空且不能为负数!");
         }
         if (StringUtils.isBlank(goodsInfo.getGoodsSpec())) {
             throw new BusinessException("商品尺寸大小不能为空!");
@@ -477,8 +477,8 @@ public class KwoTradeOrderService {
         if (Objects.isNull(goodsInfo.getPriceRangeId())) {
             throw new BusinessException("价格段id不能为空!");
         }
-        if (Objects.isNull(goodsInfo.getUnitPrice())) {
-            throw new BusinessException("订单成交单价不能为空!");
+        if (Objects.isNull(goodsInfo.getUnitPrice()) || goodsInfo.getUnitPrice().compareTo(BigDecimal.ZERO) < 0) {
+            throw new BusinessException("订单成交单价不能为空且不能为负数!");
         }
         if (Objects.isNull(goodsInfo.getCollectionUnitId())) {
             throw new BusinessException("收款单位id不能为空!");

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -88,7 +88,7 @@ public class KwpGoodsController {
      */
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult select(@RequestBody SelectGoodsListParam params) {
-        return HttpResult.ok(kwpGoodsService.select(params, true));
+        return HttpResult.ok(kwpGoodsService.select(params));
     }
 
     /**

+ 2 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java

@@ -24,7 +24,7 @@ public class AddGoodsParam {
      * 商品名称
      */
     @NotBlank(message = "商品名称不能为空")
-    @Length(max = 100, message = "商品名称最多支持100字")
+    @Length(max = 50, message = "商品名称最多支持50字")
     private String name;
 
     /**
@@ -43,6 +43,7 @@ public class AddGoodsParam {
      * 规格尺寸
      */
     @NotBlank(message = "规格尺寸不能为空")
+    @Length(max = 20, message = "规格尺寸最多支持20字")
     private String spec;
 
     /**

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddressInfo.java

@@ -22,7 +22,7 @@ public class AddressInfo {
      * 地址名称
      */
     @NotBlank(message = "地址名称不能为空")
-    @Length(max = 60,message = "地址名称最长60字符")
+    @Length(max = 50,message = "地址名称最长50字符")
     private String name;
 
     /**

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsAttributes.java

@@ -18,12 +18,12 @@ public class GoodsAttributes {
     /**
      * 参数名称
      */
-    @Length(max = 40,message = "参数名称最长40字符")
+    @Length(max = 10,message = "参数名称最长10字符")
     private String name;
 
     /**
      * 参数值
      */
-    @Length(max = 40,message = "参数值最长40字符")
+    @Length(max = 20,message = "参数值最长20字符")
     private String val;
 }

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateGoodsParam.java

@@ -30,7 +30,7 @@ public class UpdateGoodsParam {
     /**
      * 商品名称
      */
-    @Length(max = 100, message = "商品名称最多支持100字")
+    @Length(max = 50, message = "商品名称最多支持50字")
     private String name;
 
     /**

+ 15 - 15
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -294,8 +294,8 @@ public class KwpGoodsService {
      * @return: void
      */
     private void judgeParameters(@NotNull UpdateGoodsParam param) {
-        if (StringUtils.isBlank(param.getName()) || param.getName().length() > 100) {
-            throw new BusinessException("商品名称不能为空且最长100字符!");
+        if (StringUtils.isBlank(param.getName()) || param.getName().length() > 50) {
+            throw new BusinessException("商品名称不能为空且最长50字符!");
         }
         if (StringUtils.isBlank(param.getGoodsType())) {
             throw new BusinessException("商品类型不能为空!");
@@ -303,14 +303,14 @@ public class KwpGoodsService {
         if (StringUtils.isBlank(param.getUnit())) {
             throw new BusinessException("计量单位不能为空!");
         }
-        if (StringUtils.isBlank(param.getSpec())) {
+        if (StringUtils.isBlank(param.getSpec()) || param.getSpec().length() > 20) {
             throw new BusinessException("规格尺寸不能为空!");
         }
         if (Objects.isNull(param.getAmount()) || param.getAmount().compareTo(BigDecimal.ZERO) < 0) {
             throw new BusinessException("库存数量不能为空且最小为零!");
         }
-        if (Objects.isNull(param.getTaxRate())) {
-            throw new BusinessException("发票税率不能为空!");
+        if (Objects.isNull(param.getTaxRate())|| param.getTaxRate().compareTo(BigDecimal.ZERO) < 0) {
+            throw new BusinessException("发票税率不能为空最小为零!");
         }
         if (StringUtils.isBlank(param.getTrading())) {
             throw new BusinessException("交易方式不能为空!");
@@ -322,11 +322,11 @@ public class KwpGoodsService {
         List<GoodsAttributes> attributes = param.getAttributes();
         if (CollectionUtils.isNotEmpty(attributes)) {
             attributes.forEach(e -> {
-                if (StringUtils.isBlank(e.getName()) || e.getName().length() > 40) {
-                    throw new BusinessException("参数名称不能为空且最长40字符!");
+                if (StringUtils.isBlank(e.getName()) || e.getName().length() > 10) {
+                    throw new BusinessException("参数名称不能为空且最长10字符!");
                 }
-                if (StringUtils.isBlank(e.getVal()) || e.getVal().length() > 40) {
-                    throw new BusinessException("参数值不能为空且最长40字符!");
+                if (StringUtils.isBlank(e.getVal()) || e.getVal().length() > 20) {
+                    throw new BusinessException("参数值不能为空且最长20字符!");
                 }
             });
         }
@@ -363,8 +363,8 @@ public class KwpGoodsService {
         if (Objects.isNull(address)) {
             throw new BusinessException("地址信息不能为空!");
         }
-        if (StringUtils.isBlank(address.getName()) || address.getName().length() > 60) {
-            throw new BusinessException("参数名称不能为空且最长60字符!");
+        if (StringUtils.isBlank(address.getName()) || address.getName().length() > 50) {
+            throw new BusinessException("地址名称不能为空且最长50字符!");
         }
         if (StringUtils.isBlank(address.getType())) {
             throw new BusinessException("地址类型不能为空!");
@@ -405,8 +405,8 @@ public class KwpGoodsService {
      * @Param params:
      * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
      */
-    public PageResult select(SelectGoodsListParam params, Boolean isPage) {
-        IPage<KwpGoods> goodsIpage = getGoodsLists(params, isPage);
+    public PageResult select(SelectGoodsListParam params) {
+        IPage<KwpGoods> goodsIpage = getGoodsLists(params, true);
         List<KwpGoods> goodsLists = goodsIpage.getRecords();
         if (CollectionUtils.isEmpty(goodsLists)) {
             return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), Collections.emptyList());
@@ -472,7 +472,7 @@ public class KwpGoodsService {
                     .le(Objects.nonNull(params.getEndCreateTime()), KwpGoods::getCreateTime, params.getEndCreateTime())
                     .eq(StringUtils.isNotBlank(params.getTrading()), KwpGoods::getTrading, params.getTrading())
                     .eq(StringUtils.isNotBlank(params.getGoodsType()), KwpGoods::getGoodsType, params.getGoodsType())
-                    .eq(Objects.nonNull(params.getStatus()), KwpGoods::getStatus, params.getStatus());
+                    .eq(Objects.nonNull(params.getStatus()) && isPage, KwpGoods::getStatus, params.getStatus());
             if (StringUtils.isNotBlank(params.getKeywords())) {
                 List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByName(params.getKeywords());
                 List<Long> entIds = entList.stream().map(EntCacheResDto::getId).toList();
@@ -529,7 +529,7 @@ public class KwpGoodsService {
      * @return: void
      */
     public List<GoodsListExport> export(ExportGoodsListParam params) {
-        PageResult pageResult = select(BeanUtils.copyProperties(params, SelectGoodsListParam.class), false);
+        PageResult pageResult = select(BeanUtils.copyProperties(params, SelectGoodsListParam.class));
         List<GoodsList> goodsLists = pageResult.getList();
         if (CollectionUtils.isEmpty(goodsLists)) {
             return Collections.emptyList();

+ 13 - 4
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java

@@ -5,10 +5,7 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.report.service.KwOrderService;
-import com.sckw.report.service.param.TradeOrderListExport;
-import com.sckw.report.service.param.TradeOrderListExportParam;
-import com.sckw.report.service.param.TradeOrderListSelectParam;
-import com.sckw.report.service.param.TradeOrderListStatisticParam;
+import com.sckw.report.service.param.*;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
 import org.springframework.http.MediaType;
@@ -83,4 +80,16 @@ public class KwOrderController {
         return HttpResult.error("没有可导出的数据");
     }
 
+    /**
+     * @desc: 贸易订单对账单分页列表查询
+     * @author: yzc
+     * @date: 2023-07-20 15:03
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/tradeOrderStatementList", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult select(@RequestBody @Validated TradeOrderStatementList params) {
+        return HttpResult.ok(orderService.tradeOrderStatementList(params));
+    }
+
 }

+ 17 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java

@@ -6,6 +6,7 @@ import com.sckw.excel.config.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.report.service.KwTransportService;
 import com.sckw.report.service.param.ConsignOrderQuery;
+import com.sckw.report.service.param.WaybillOrderQuery;
 import com.sckw.report.service.vo.ConsignOrderVo;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
@@ -96,6 +97,20 @@ public class KwTransportController {
         }
     }
 
-
-
+    /**
+     * 运单管理-运单列表
+     * @param query
+     * @return
+     */
+    @RequestMapping(value = "/getWaybillOrders", method = RequestMethod.POST)
+    public HttpResult getWayBillOrders(@Validated @RequestBody WaybillOrderQuery query){
+        HttpResult httpResult = new HttpResult();
+        try {
+            httpResult = transportService.getWaybillOrders(query);
+        } catch (Exception e) {
+            log.error("[WAYBILL]运单管理-运单列表失败:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+        return httpResult;
+    }
 }

+ 105 - 50
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -55,7 +55,6 @@ public class KwOrderService {
         criteria.andOperator(Criteria.where("_id").is(id).and("delFlag").is(0));
         criteria.orOperator(Criteria.where("procureTopEntId").is(entId), Criteria.where("supplyTopEntId").is(entId));
         query.addCriteria(criteria);
-        SckwTradeOrder tradeOrder = mongoTemplate.findOne(query, SckwTradeOrder.class);
         return mongoTemplate.findOne(query, SckwTradeOrder.class);
     }
 
@@ -67,10 +66,23 @@ public class KwOrderService {
      * @return: com.sckw.core.model.page.PageResult
      */
     public PageResult tradeOrderSelect(TradeOrderListSelectParam params) {
-        Query query = getQuery(params);
+        Query query = getQuery(params, false);
+        return getResult(query, params.getPage(), params.getPageSize());
+    }
+
+    /**
+     * @desc: 获取分页结果
+     * @author: yzc
+     * @date: 2023-07-20 15:02
+     * @Param query:
+     * @Param page:
+     * @Param pageSize:
+     * @return: com.sckw.core.model.page.PageResult
+     */
+    private PageResult getResult(Query query, int page, int pageSize) {
         long count = mongoTemplate.count(query, SckwTradeOrder.class);
         Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
-        SpringDataPageAble pageAble = new SpringDataPageAble(params.getPage(), params.getPageSize(), sort);
+        SpringDataPageAble pageAble = new SpringDataPageAble(page, pageSize, sort);
         query.with(pageAble);
         List<SckwTradeOrder> list = mongoTemplate.find(query, SckwTradeOrder.class);
         List<OrderListRes> result = new ArrayList<>();
@@ -80,11 +92,11 @@ public class KwOrderService {
                     .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
                     .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
                     .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
-                    .setConsignmentStatus(Objects.isNull(e.getEntrustAmount()) || e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
+                    .setConsignmentStatus(e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
                     .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
             result.add(order);
         });
-        return PageResult.build(params.getPage(), params.getPageSize(), count, result);
+        return PageResult.build(page, pageSize, count, result);
     }
 
     /**
@@ -92,28 +104,45 @@ public class KwOrderService {
      * @author: yzc
      * @date: 2023-07-17 18:08
      * @Param params:
+     * @Param isStatistic:
      * @return: org.springframework.data.mongodb.core.query.Query
      */
-    private Query getQuery(TradeOrderListStatisticParam params) {
+    private Query getQuery(TradeOrderListStatisticParam params, Boolean isStatistic) {
         Long entId = LoginUserHolder.getEntId();
         Query query = new Query();
         Criteria criteria = new Criteria();
         criteria.and("delFlag").is(0);
-        //销售订单
-        if (Objects.equals(params.getOrderType(), 2)) {
-            criteria.and("supplyTopEntId").is(entId);
-        } else {
+        if (Objects.equals(params.getOrderType(), 1)) {
             //采购订单
             criteria.and("procureTopEntId").is(entId);
+        } else {
+            //销售订单
+            criteria.and("supplyTopEntId").is(entId);
         }
-        //交易方式
-        if (StringUtils.isNotBlank(params.getTrading())) {
-            criteria.and("trading").is(params.getTrading());
+        //日期范围
+        if (Objects.nonNull(params.getStartCreateTime())) {
+            criteria.and("createTime").gte(params.getStartCreateTime());
+        }
+        if (Objects.nonNull(params.getEndCreateTime())) {
+            criteria.and("createTime").lte(params.getEndCreateTime());
+        }
+        //装卸货地址
+        if (StringUtils.isNotBlank(params.getShippingAddressCode())) {
+            Pattern pattern = Pattern.compile("^" + params.getShippingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
+            criteria.and("loadCityCode").regex(pattern);
+        }
+        if (StringUtils.isNotBlank(params.getUnloadingAddressCode())) {
+            Pattern pattern = Pattern.compile("^" + params.getUnloadingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
+            criteria.and("unloadCityCode").regex(pattern);
         }
         //提货方式
         if (StringUtils.isNotBlank(params.getPickupType())) {
             criteria.and("pickupType").is(params.getPickupType());
         }
+        //交易方式
+        if (StringUtils.isNotBlank(params.getTrading())) {
+            criteria.and("trading").is(params.getTrading());
+        }
         //交付类型
         if (StringUtils.isNotBlank(params.getDeliveryType())) {
             criteria.and("deliveryType").is(params.getDeliveryType());
@@ -122,28 +151,19 @@ public class KwOrderService {
         if (StringUtils.isNotBlank(params.getSource())) {
             criteria.and("source").is(params.getSource());
         }
-        //采购企业
-        if (Objects.nonNull(params.getProcureEntId())) {
-            criteria.and("procureEntId").is(params.getProcureEntId());
-        }
-        //商品税率
-        if (Objects.nonNull(params.getGoodsTaxRate())) {
-            criteria.and("goodsTaxRate").is(params.getGoodsTaxRate());
-        }
-        //日期范围
-        if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(params.getStartCreateTime()), Criteria.where("createTime")
-                    .lte(params.getEndCreateTime()));
-        } else if (Objects.nonNull(params.getStartCreateTime())) {
-            criteria.and("createTime").gte(params.getStartCreateTime());
-        } else if (Objects.nonNull(params.getEndCreateTime())) {
-            criteria.and("createTime").lte(params.getEndCreateTime());
-        }
         List<Criteria> orCriteriaList = new ArrayList<>();
-        //商品名称
-        if (StringUtils.isNotBlank(params.getGoodsName())) {
-            Pattern pattern = Pattern.compile("^.*" + params.getGoodsName() + ".*$", Pattern.CASE_INSENSITIVE);
-            orCriteriaList.add(Criteria.where("goodsName").regex(pattern));
+        //订单状态
+        if (Objects.nonNull(params.getStatus()) && !isStatistic) {
+            criteria.and("status").is(params.getStatus());
+            if (Objects.equals(params.getStatus(), Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()))) {
+                //草稿状态只能创建订单的企业能看
+                criteria.and("entId").is(entId);
+            }
+        } else {
+            //非草稿状态
+            criteria.and("status").ne(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
+            //or草稿状态且是当前企业
+            orCriteriaList.add(Criteria.where("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue())).and("entId").is(entId));
         }
         //关键字模糊匹配
         if (StringUtils.isNotBlank(params.getKeywords())) {
@@ -153,15 +173,6 @@ public class KwOrderService {
             orCriteriaList.add(Criteria.where("supplyFirmName").regex(pattern));
             orCriteriaList.add(Criteria.where("goodsName").regex(pattern));
         }
-        //装卸货地址
-        if (StringUtils.isNotBlank(params.getShippingAddressCode())) {
-            Pattern pattern = Pattern.compile("^" + params.getShippingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
-            orCriteriaList.add(Criteria.where("loadCityCode").regex(pattern));
-        }
-        if (StringUtils.isNotBlank(params.getUnloadingAddressCode())) {
-            Pattern pattern = Pattern.compile("^" + params.getUnloadingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
-            orCriteriaList.add(Criteria.where("unloadCityCode").regex(pattern));
-        }
         if (CollectionUtils.isNotEmpty(orCriteriaList)) {
             criteria.orOperator(orCriteriaList);
         }
@@ -177,7 +188,7 @@ public class KwOrderService {
      */
     public TableStatisticRes tradeOrderStatistic(TradeOrderListStatisticParam params) {
         TableStatisticRes res = new TableStatisticRes();
-        Query query = getQuery(params);
+        Query query = getQuery(params, true);
         List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
         Map<Integer, List<SckwTradeOrder>> map = orders.stream().collect(Collectors.groupingBy(SckwTradeOrder::getStatus));
         List<TableTop> tableTops = new ArrayList<>();
@@ -210,16 +221,16 @@ public class KwOrderService {
             Long entId = LoginUserHolder.getEntId();
             Criteria criteria = new Criteria();
             criteria.and("tOrderId").in(params.getIds()).and("delFlag").is(0);
-            query.addCriteria(criteria);
-            //销售订单
-            if (Objects.equals(params.getOrderType(), 2)) {
-                criteria.and("supplyTopEntId").is(entId);
-            } else {
+            if (Objects.equals(params.getOrderType(), 1)) {
                 //采购订单
                 criteria.and("procureTopEntId").is(entId);
+            } else {
+                //销售订单
+                criteria.and("supplyTopEntId").is(entId);
             }
+            query.addCriteria(criteria);
         } else {
-            query = getQuery(params);
+            query = getQuery(params,false);
         }
         List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
         if (CollectionUtils.isEmpty(orders)) {
@@ -242,4 +253,48 @@ public class KwOrderService {
         });
         return list;
     }
+
+    /**
+     * @desc: 贸易订单对账单分页列表查询
+     * @author: yzc
+     * @date: 2023-07-20 15:03
+     * @Param params:
+     * @return: com.sckw.core.model.page.PageResult
+     */
+    public PageResult tradeOrderStatementList(TradeOrderStatementList params) {
+        Query query = new Query();
+        Long entId = LoginUserHolder.getEntId();
+        Criteria criteria = new Criteria();
+        criteria.and("status").is(DictEnum.TORDER_STATUS_5.getValue()).and("delFlag").is(0);
+        if (Objects.equals(params.getOrderType(), 1)) {
+            //采购订单
+            criteria.and("procureTopEntId").is(entId);
+        } else {
+            //销售订单
+            criteria.and("supplyTopEntId").is(entId);
+        }
+        //采购企业
+        if (Objects.nonNull(params.getProcureEntId())) {
+            criteria.and("procureEntId").is(params.getProcureEntId());
+        }
+        //计划开始时间
+        if (Objects.nonNull(params.getStartTime())) {
+            criteria.and("startTime").gte(params.getStartTime());
+        }
+        //计划结束时间
+        if (Objects.nonNull(params.getEndTime())) {
+            criteria.and("endTime").lte(params.getEndTime());
+        }
+        //商品税率
+        if (Objects.nonNull(params.getGoodsTaxRate())) {
+            criteria.and("goodsTaxRate").is(params.getGoodsTaxRate());
+        }
+        //商品名称
+        if (StringUtils.isNotBlank(params.getGoodsName())) {
+            Pattern pattern = Pattern.compile("^.*" + params.getGoodsName() + ".*$", Pattern.CASE_INSENSITIVE);
+            criteria.and("goodsName").regex(pattern);
+        }
+        query.addCriteria(criteria);
+        return getResult(query, params.getPage(), params.getPageSize());
+    }
 }

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

@@ -14,6 +14,8 @@ import com.sckw.mongo.model.TobleTop;
 import com.sckw.report.dao.SckwLogisticsOrderRepository;
 import com.sckw.report.enums.CarWaybillEnum;
 import com.sckw.report.service.param.ConsignOrderQuery;
+import com.sckw.report.service.param.WaybillOrderQuery;
+import com.sckw.report.service.vo.CarWaybillVo;
 import com.sckw.report.service.vo.ConsignOrderVo;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
@@ -323,4 +325,103 @@ public class KwTransportService {
         List<KwtLogisticsOrderVO> acceptCarriageOrderDetail = transportDubboService.getAcceptCarriageOrderDetail(ids);
         return acceptCarriageOrderDetail;
     }
+
+    /**
+     * 获取运单列表
+     * @param query
+     * @return
+     * @throws ParseException
+     */
+    public HttpResult getWaybillOrders(WaybillOrderQuery query) throws ParseException {
+        // 模糊匹配
+        // 根据条件查询所有并排序,且分页
+        // 设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        criteria.and("entId").is(LoginUserHolder.getEntId());
+        // 装载时间
+        if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
+            criteria.andOperator(Criteria.where("loadTime").gte(query.getStartLoadTime()), Criteria.where("loadTime")
+                    .lte(query.getEndLoadTime()));
+        }
+        // 派车时间
+        if (StringUtils.isNotBlank(query.getStartSendCarTime()) && StringUtils.isNotEmpty(query.getEndSendCarTime())) {
+            criteria.andOperator(Criteria.where("sendCarTime").gte(query.getStartSendCarTime()), Criteria.where("sendCarTime")
+                    .lte(query.getEndSendCarTime()));
+        }
+        // 卸货时间
+        if (StringUtils.isNotBlank(query.getStartUnloadTime()) && StringUtils.isNotEmpty(query.getEndUnloadTime())) {
+            criteria.andOperator(Criteria.where("unloadTime").gte(query.getStartUnloadTime()), Criteria.where("unloadTime")
+                    .lte(query.getEndUnloadTime()));
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        // 多条件模糊查询
+        Criteria c1 = new Criteria();
+        Criteria c2 = new Criteria();
+        Criteria c3 = new Criteria();
+        Criteria c4 = new Criteria();
+        Criteria c5 = new Criteria();
+        Criteria c6 = new Criteria();
+        if (StringUtils.isNotBlank(query.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            c1 = Criteria.where("wOrderNo").regex(pattern);
+            c2 = Criteria.where("truckNo").regex(pattern);
+            c3 = Criteria.where("driverName").regex(pattern);
+            c4 = Criteria.where("firmName").regex(pattern);
+            c5 = Criteria.where("loadAddress").regex(pattern);
+            c6 = Criteria.where("unloadAddress").regex(pattern);
+            criteria.orOperator(c1, c2, c3, c4, c5, c6);
+        }
+        Query queryFormat = new Query(criteria);
+        // in查询
+        if (CollectionUtils.isNotEmpty(query.getIds())) {
+            queryFormat.addCriteria(Criteria.where("wOrderId").in(query.getIds()));
+        }
+        // 总记录数
+        long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
+        queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
+                Sort.by(Sort.Order.desc("createTime"))));
+        // 执行查询
+        List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
+        List<CarWaybillVo> returnList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            packageWayBillReturnList(list, returnList);
+        }
+        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
+        return HttpResult.ok(build);
+    }
+
+    /**
+     * 处理运单查询结果
+     * @param list
+     * @param returnList
+     */
+    private void packageWayBillReturnList(List<SckwWaybillOrder> list, List<CarWaybillVo> returnList) {
+        for (SckwWaybillOrder waybillOrder : list) {
+            CarWaybillVo vo = new CarWaybillVo();
+            vo.setWOrderNo(waybillOrder.getWOrderNo() == null ?
+                    null : String.valueOf(waybillOrder.getWOrderNo()));
+            vo.setFirmName(waybillOrder.getFirmName() == null ?
+                    null : String.valueOf(waybillOrder.getFirmName()));
+            vo.setTruckNo(waybillOrder.getTruckNo());
+            vo.setDriverName(waybillOrder.getDriverName() == null ?
+                    null : String.valueOf(waybillOrder.getDriverName()));
+            vo.setType(waybillOrder.getType());
+            vo.setSendCarTime(String.valueOf(waybillOrder.getSendCarTime()));
+            vo.setStartTime(String.valueOf(waybillOrder.getStartTime()));
+            vo.setEndTime(String.valueOf(waybillOrder.getEndTime()));
+            vo.setEntrustAmount(String.valueOf(waybillOrder.getEntrustAmount()));
+            vo.setLoadingAddress(waybillOrder.getLoadingAddress());
+            vo.setUnloadingAddress(waybillOrder.getUnloadingAddress());
+            vo.setLoadAmount(waybillOrder.getLoadAmount() == null ?
+                    null : String.valueOf(waybillOrder.getLoadAmount()));
+            vo.setUnloadAmount(waybillOrder.getUnloadAmount() == null ?
+                    null : String.valueOf(waybillOrder.getUnloadAmount()));
+            vo.setLoadTime(waybillOrder.getLoadTime() == null ?
+                    null : String.valueOf(waybillOrder.getLoadTime()));
+            vo.setUnloadTime(waybillOrder.getUnloadTime() == null ?
+                    null :String.valueOf(waybillOrder.getUnloadTime()));
+            returnList.add(vo);
+        }
+    }
 }

+ 2 - 13
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListStatisticParam.java

@@ -8,7 +8,6 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -75,18 +74,8 @@ public class TradeOrderListStatisticParam {
     private String source;
 
     /**
-     * 采购单位id
+     * 订单状态
      */
-    private Long procureEntId;
-
-    /**
-     * 商品税率
-     */
-    private BigDecimal goodsTaxRate;
-
-    /**
-     * 商品名称
-     */
-    private String goodsName;
+    private Integer status;
 
 }

+ 64 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderStatementList.java

@@ -0,0 +1,64 @@
+package com.sckw.report.service.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sckw.core.model.page.PageRequest;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @desc: 贸易订单对账单列表请求参数
+ * @author: yzc
+ * @date: 2023-07-20 14:43
+ */
+@Getter
+@Setter
+@ToString
+public class TradeOrderStatementList extends PageRequest {
+
+    /**
+     * 订单类型(1采购订单2销售订单)
+     */
+    @Min(value = 1, message = "非法订单类型")
+    @Max(value = 2, message = "非法订单类型")
+    @NotNull(message = "订单类型不能为空")
+    private Integer orderType;
+
+    /**
+     * 采购单位id
+     */
+    private Long procureEntId;
+
+    /**
+     * 计划开始时间(yyyy-MM-dd)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate startTime;
+
+    /**
+     * 计划结束时间(yyyy-MM-dd)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate endTime;
+
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 商品税率
+     */
+    private BigDecimal goodsTaxRate;
+
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+}

+ 61 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/WaybillOrderQuery.java

@@ -0,0 +1,61 @@
+package com.sckw.report.service.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sckw.core.model.page.PageRequest;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author JC
+ * @version 1.0
+ * @desc TODO
+ * @date 2023/{07}/19 10:20:44
+ **/
+@Data
+@Accessors(chain = true)
+public class WaybillOrderQuery extends PageRequest implements Serializable {
+    private List<Long> ids;
+    /**
+     * 派车开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startSendCarTime;
+
+    /**
+     * 派车结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endSendCarTime;
+
+    /**
+     * 装载开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startLoadTime;
+
+    /**
+     * 装载结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endLoadTime;
+
+    /**
+     * 卸载开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startUnloadTime;
+
+    /**
+     * 卸载结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endUnloadTime;
+
+    /**
+     * 关键字搜索
+     */
+    private String keywords;
+}

+ 54 - 29
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/CarWaybillVo.java

@@ -1,8 +1,11 @@
 package com.sckw.report.service.vo;
 
+import com.sckw.core.model.page.PageResult;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+
 /**
  * @author lfdc
  * @description 车辆运单
@@ -10,67 +13,89 @@ import lombok.experimental.Accessors;
  */
 @Data
 @Accessors(chain = true)
-public class CarWaybillVo {
+public class CarWaybillVo extends PageResult implements Serializable {
 
     /**
-     * 运单编号
+     * 物流订单id
      */
-    private String waybillNumber;
+    private String wOrderId;
+
     /**
-     * 车牌
+     * 物流订单
      */
-    private String truckNo;
+    private String wOrderNo;
+
     /**
-     * 状态
+     * 承运车队
      */
-    private String status;
+    private String firmName;
+
     /**
-     * 运单类型
+     * 车辆牌照
      */
-    private String waybillType;
+    private String truckNo;
+
     /**
      * 司机
      */
     private String driverName;
+
     /**
-     * 承运车队
+     * 运单类型
      */
-    private String consignMotorcade;
+    private String type;
+
     /**
-     * 派车量/吨
+     * 派车时间
      */
-    private String sendCarWeigh;
+    private String sendCarTime;
+
     /**
-     * 派车时间
+     * 计划开始时间
      */
-    private String sendCarDate;
+    private String startTime;
+
     /**
-     * 实装量/吨
+     * 计划结束时间
      */
-    private String stowageWeigh;
+    private String endTime;
+
     /**
-     * 装货时间
+     * 派单量/吨
      */
-    private String stowageDate;
+    private String entrustAmount;
+
     /**
-     * 实卸量/吨
+     * 装货地点
      */
-    private String unloadWeigh;
+    private String loadingAddress;
+
     /**
-     * 卸货时间
+     * 卸货地点
      */
-    private String unloadDate;
+    private String unloadingAddress;
+
     /**
-     * 亏吨量/吨
+     * 实装量/吨
      */
-    private String defectiveWeigh;
+    private String loadAmount;
+
     /**
-     * 扣亏量/吨
+     * 实卸量/吨
+     */
+    private String unloadAmount;
+
+    /**
+     * 装货时间
      */
-    private String deduct;
+    private String loadTime;
+
     /**
-     * 派车人
+     * 卸货时间
      */
-    private String appointor;
+    private String unloadTime;
+
+    private String createTime;
+    private String updateTime;
 
 }

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

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

+ 17 - 4
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -5,7 +5,7 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.KwsEnterprise;
 import com.sckw.system.model.vo.req.*;
-import com.sckw.system.model.vo.res.IdResVo;
+import com.sckw.system.model.vo.req.FindListReqVo;
 import com.sckw.system.service.KwsEnterpriseService;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -139,7 +139,7 @@ public class KwsEnterpriseController {
 
 
     /**
-     * @param ids {ids:主键ID(多个以逗号隔开)}
+     * @param reqVo {ids:主键ID(多个以逗号隔开)}
      * @return HttpResult
      * @description 删除
      * @author zk
@@ -210,7 +210,20 @@ public class KwsEnterpriseController {
      * @return HttpResult
      */
     @PostMapping("findEntUser")
-    public HttpResult findEntUser(@RequestBody IdReqVo reqVo) {
-        return HttpResult.ok(kwsEntService.findEntUser(reqVo.getId()));
+    public HttpResult findEntUser(@RequestBody FindListReqVo reqVo) {
+        return HttpResult.ok(kwsEntService.findEntUser(reqVo));
     }
+
+    /**
+     * @desc: 查所有企业
+     * @param: reqVo 企业id
+     * @author: czh
+     * @date 2023/7/18
+     * @return HttpResult
+     */
+    @PostMapping("findList")
+    public HttpResult findList(@RequestBody FindListReqVo reqVo) {
+        return HttpResult.ok(kwsEntService.findList(reqVo));
+    }
+
 }

+ 3 - 4
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java

@@ -1,13 +1,12 @@
 package com.sckw.system.dao;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.system.model.KwsEnterprise;
 import com.sckw.system.model.pojo.FindEntListPojo;
 import com.sckw.system.model.pojo.FindEntUserPojo;
 import com.sckw.system.model.pojo.FindManagePojo;
 import com.sckw.system.model.pojo.FindPojoParam;
-import com.sckw.system.model.vo.req.EntFindPageReqVo;
-import com.sckw.system.model.vo.res.FindListReqVo;
+import com.sckw.system.model.vo.req.FindListReqVo;
+import com.sckw.system.model.vo.res.FindEntListResVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -64,7 +63,7 @@ public interface KwsEnterpriseDao {
      * @param params
      * @return
      */
-    List<KwsEnterprise> findList(FindListReqVo params);
+    List<FindEntListResVo> findList(FindListReqVo params);
 
     /**
      * 查询

+ 10 - 3
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -57,9 +57,11 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
         Map<String, SysDictResDto> map = new HashMap<>();
         String[] typeValueArr = keys.split(Global.COMMA);
         for (String typeValue : typeValueArr) {
-            String[] split = typeValue.split(Global.POUND);
-            SysDictResDto sysDictResDto = queryDictByTypeAndValue(split[0], split[1]);
-            map.put(typeValue, sysDictResDto);
+            if (StringUtils.isNotBlank(typeValue)) {
+                String[] split = typeValue.split(Global.POUND);
+                SysDictResDto sysDictResDto = queryDictByTypeAndValue(split[0], split[1]);
+                map.put(typeValue, sysDictResDto);
+            }
         }
 
         return map;
@@ -397,6 +399,11 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
         if (Objects.isNull(kwsEnterpriseResDto) || Objects.isNull(kwsEnterpriseResDto.getManager())) {
             return null;
         }
+
+        if (Objects.isNull(kwsEnterpriseResDto.getManager())) {
+            return null;
+        }
+
         return queryUserCacheById(kwsEnterpriseResDto.getManager());
     }
 

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEnterprise.java

@@ -120,5 +120,5 @@ public class KwsEnterprise extends BaseModel {
     /**
      * 专属客户经理(用户ID)
      */
-    private long manager;
+    private Long manager;
 }

+ 1 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindEntUserPojo.java

@@ -1,5 +1,6 @@
 package com.sckw.system.model.pojo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import lombok.Data;
 
 import java.io.Serial;

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ApprovalReqVo.java

@@ -18,7 +18,7 @@ public class ApprovalReqVo implements Serializable {
     private static final long serialVersionUID = -4901625560885540709L;
 
     /**
-     * 资质id
+     *企业id
      */
     private Long entId;
 

+ 11 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/FindListReqVo.java → sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/FindListReqVo.java

@@ -1,4 +1,4 @@
-package com.sckw.system.model.vo.res;
+package com.sckw.system.model.vo.req;
 
 import lombok.Data;
 
@@ -11,6 +11,16 @@ public class FindListReqVo implements Serializable {
     @Serial
     private static final long serialVersionUID = 8883696139247219895L;
 
+    /**
+     * 企业id
+     */
+    private Long id;
+
+    /**
+     * 员工名
+     */
+    private String name;
+
     /**
      * 企业类型
      */

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/IdReqVo.java

@@ -16,7 +16,7 @@ public class IdReqVo implements Serializable {
     @Serial
     private static final long serialVersionUID = -2933173508474392533L;
 
-    private long id;
+    private Long id;
 
     private String ids;
 

+ 55 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/FindEntListResVo.java

@@ -0,0 +1,55 @@
+package com.sckw.system.model.vo.res;
+
+import com.sckw.system.model.KwsEnterprise;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 查企业
+ * @date 2023/7/19
+ */
+@Data
+public class FindEntListResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -6739183766071619033L;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 用户账号
+     */
+    private String account;
+
+    /**
+     * 用户姓名
+     */
+    private String name;
+
+    /**
+     * 企业编号
+     */
+    private String code;
+
+    /**
+     * 企业名称
+     */
+    private String firmName;
+
+    /**
+     * 企业id
+     */
+    private Long id;
+
+    /**
+     * 类型
+     */
+    private String entTypes;
+
+}

+ 41 - 6
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -14,7 +14,6 @@ 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.model.EntCertificateInfo;
-import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
 import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.*;
@@ -26,6 +25,7 @@ import com.sckw.system.model.pojo.FindManagePojo;
 import com.sckw.system.model.pojo.FindPojoParam;
 import com.sckw.system.model.vo.req.*;
 import com.sckw.system.model.vo.res.*;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -254,14 +254,30 @@ public class KwsEnterpriseService {
     }
 
     /**
-     * @param reqVo 企业实体类入参
+     * @param reqVo 查所有企业
      * @return List<KwsEnterprise>
      * @desc: 全量查询
      * @author: czh
      * @date: 2023/6/9
      */
-    public List<KwsEnterprise> findList(FindListReqVo reqVo) {
-        return kwsEnterpriseDao.findList(reqVo);
+    public List<FindEntListResVo> findList(FindListReqVo reqVo) {
+        List<FindEntListResVo> list = kwsEnterpriseDao.findList(reqVo);
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+
+        List<Long> idList = list.stream().map(FindEntListResVo::getId).toList();
+        List<KwsEntType> kwsEntTypeList = kwsEntTypeDao.findListByEntIds(idList);
+        if (CollectionUtils.isNotEmpty(kwsEntTypeList)) {
+            Map<Long, List<KwsEntType>> collect = kwsEntTypeList.stream().collect(Collectors.groupingBy(KwsEntType::getEntId));
+            for (FindEntListResVo findEntListResVo : list) {
+                List<KwsEntType> kwsEntTypes = collect.get(findEntListResVo.getId());
+                if (CollectionUtils.isNotEmpty(kwsEntTypes)) {
+                    findEntListResVo.setEntTypes(String.join(Global.COMMA, kwsEntTypes.stream().map(KwsEntType::getType).map(String::valueOf).distinct().toList()));
+                }
+            }
+        }
+        return list;
     }
 
     public List<FindEntListPojo> findPojo(EntFindPageReqVo reqVo) {
@@ -531,6 +547,16 @@ public class KwsEnterpriseService {
         BeanUtils.copyProperties(reqVo, entRegisterReqVo);
         entRegisterReqVo.setEntId(register.getEntId());
         register(entRegisterReqVo);
+
+
+        //运营端新增企业入驻,直接通过
+        if (Objects.isNull(reqVo.getEntPid())) {
+            ApprovalReqVo approvalReqVo = new ApprovalReqVo();
+            approvalReqVo.setEntId(entRegisterReqVo.getEntId());
+            approvalReqVo.setStatus(ApprovalEnum.OK.getCode());
+            approval(approvalReqVo);
+        }
+
     }
 
     public List<KwsEntCheckTrack> entCheck(Long entId) {
@@ -632,7 +658,16 @@ public class KwsEnterpriseService {
         return entDetailResVo;
     }
 
-    public List<FindEntUserPojo> findEntUser(long id) {
-        return kwsEnterpriseDao.findUserByEntIds(Collections.singletonList(id));
+    public List<FindEntUserPojo> findEntUser(FindListReqVo reqVo) {
+        List<FindEntUserPojo> list = kwsEnterpriseDao.findUserByEntIds(Collections.singletonList(reqVo.getId()));
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+
+        if (StringUtils.isNotBlank(reqVo.getName())) {
+            list = list.stream().filter(item -> item.getName().contains(reqVo.getName())).toList();
+        }
+
+        return list;
     }
 }

+ 6 - 7
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -13,12 +13,11 @@ import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.*;
 import com.sckw.system.dubbo.RemoteSystemServiceImpl;
 import com.sckw.system.model.*;
-import com.sckw.system.model.pojo.FindEntListPojo;
 import com.sckw.system.model.vo.req.*;
-import com.sckw.system.model.vo.res.FindListReqVo;
+import com.sckw.system.model.vo.req.FindListReqVo;
+import com.sckw.system.model.vo.res.FindEntListResVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import lombok.extern.slf4j.Slf4j;
-import org.checkerframework.checker.units.qual.K;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -108,7 +107,7 @@ public class KwsUserService {
     public RegisterResDto register(RegisterReqDto reqDto) throws SystemException {
         FindListReqVo findListReqVo = new FindListReqVo();
         findListReqVo.setEntName(reqDto.getEntName());
-        List<KwsEnterprise> list = kwsEnterpriseDao.findList(findListReqVo);
+        List<FindEntListResVo> list = kwsEnterpriseDao.findList(findListReqVo);
         if (!CollectionUtils.isEmpty(list)) {
             throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ENT_EXISTS);
         }
@@ -158,16 +157,16 @@ public class KwsUserService {
             /*1、新增管理员机构*/
             KwsDept kwsDept = new KwsDept();
             Integer systemType = SystemTypeEnum.COMPANY.getCode();
-            long deptId = new IdWorker(1L).nextId();
             kwsDept.setEntId(entId);
             kwsDept.setName(reqDto.getEntName());
             kwsDept.setSystemType(systemType);
             kwsDept.setCompany(Global.NO);
-            kwsDept.setId(deptId);
+            kwsDept.setUpdateBy(userId);
+            kwsDept.setCreateBy(userId);
             kwsDeptService.add(kwsDept);
 
             /*3、绑定用户机构关系*/
-            fillUserDept(userId, deptId);
+            fillUserDept(userId, kwsDept.getId());
 
             /*2、新增管理员角色*/
             EditRoleReqVo editRoleReqVo = new EditRoleReqVo();

+ 7 - 3
sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml

@@ -140,15 +140,19 @@
     order by tab.create_time desc
   </select>
 
-  <select id="findList" resultType="com.sckw.system.model.KwsEnterprise" parameterType="com.sckw.system.model.vo.req.EntFindPageReqVo">
-    select a.*
+  <select id="findList" resultType="com.sckw.system.model.vo.res.FindEntListResVo" parameterType="com.sckw.system.model.vo.req.FindListReqVo">
+    select a.*,
+           b.id userId,
+           b.account,
+           b.name
       from kws_enterprise a
+    left join kws_user b on a.phone = b.account and b.del_flag = 0
     where a.del_flag = 0
     <if test="approval != null">
       and a.approval = #{approval}
     </if>
       <if test="entName != null and entName != ''">
-        and a.firm_name = #{entName}
+        and a.firm_name like concat('%', #{entName}, '%')
       </if>
     <if test="entType != null">
       and exists (select 1 from kws_ent_type b where a.id = b.ent_id and b.type = #{entType})

+ 5 - 0
sckw-modules/sckw-transport/pom.xml

@@ -54,6 +54,11 @@
             <artifactId>sckw-system-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-fleet-api</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-product-api</artifactId>

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