Kaynağa Gözat

销售合同

czh 2 yıl önce
ebeveyn
işleme
1bb562abcb
70 değiştirilmiş dosya ile 1789 ekleme ve 427 silme
  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. 35 0
      sckw-modules-api/sckw-contract-api/pom.xml
  5. 17 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java
  6. 45 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/dto/res/ContractCommonInfoResDto.java
  7. 1 0
      sckw-modules-api/sckw-contract-api/src/main/resources/application.properties
  8. 11 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  9. 157 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  10. 22 34
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java
  11. 0 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractLogisticsMapper.java
  12. 3 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractTradeMapper.java
  13. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/res/QueryListResDto.java
  14. 3 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogistics.java
  15. 6 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsGoods.java
  16. 3 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTrade.java
  17. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeTrack.java
  18. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeUnit.java
  19. 1 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractLogisticsReqVo.java
  20. 55 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractTradeReqVo.java
  21. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticsBaseInfoReqVo.java
  22. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticsGoodsInfoReqVo.java
  23. 6 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java
  24. 81 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/TradeBaseInfoReqVo.java
  25. 41 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/TradeGoodsInfoReqVo.java
  26. 45 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractTradeDetailResVo.java
  27. 34 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/FindListGroupResVo.java
  28. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsBaseInfoResVo.java
  29. 25 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsGoodsInfoResVo.java
  30. 22 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java
  31. 70 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeBaseInfoResVo.java
  32. 36 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeGoodsInfoResVo.java
  33. 10 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsGoodsService.java
  34. 125 47
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  35. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsUnitService.java
  36. 66 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeGoodsService.java
  37. 343 131
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  38. 35 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeTrackService.java
  39. 95 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeUnitService.java
  40. 1 1
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  41. 29 7
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml
  42. 2 2
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java
  43. 1 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java
  44. 0 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/dao/KwmCooperateMapper.java
  45. 10 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateManageQueryResDto.java
  46. 0 94
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmAddress.java
  47. 10 4
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperate.java
  48. 1 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressAddReqVo.java
  49. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/BindManagerReqVo.java
  50. 2 2
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/InitiateReqVo.java
  51. 28 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/QueryByEntReqVo.java
  52. 10 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/AddressQueryResVo.java
  53. 14 4
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/CooperateManageQueryResVo.java
  54. 10 6
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java
  55. 29 17
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  56. 18 15
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java
  57. 33 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java
  58. 2 0
      sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml
  59. 17 4
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  60. 3 4
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java
  61. 10 3
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java
  62. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEnterprise.java
  63. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindEntUserPojo.java
  64. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ApprovalReqVo.java
  65. 11 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/FindListReqVo.java
  66. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/IdReqVo.java
  67. 55 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/FindEntListResVo.java
  68. 41 6
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  69. 6 7
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  70. 7 3
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.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;
 

+ 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>

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

@@ -0,0 +1,17 @@
+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 {
+
+
+    Map<Long, ContractCommonInfoResDto> queryContractCommonInfo(List<Long> contractId);
+}

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

@@ -0,0 +1,45 @@
+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/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 String signingWay;
+
+    /**
+     * 签约方式code
+     */
+    private Integer signingWayCode;
+
+
+}

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

@@ -0,0 +1 @@
+

+ 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);
 }
 
 

+ 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 {
 

+ 25 - 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,10 @@ public class LogisticsGoodsInfoResVo implements Serializable {
      */
     private String lossUnit;
 
+    /**
+     * 合理损耗单位
+     */
+    private String lossUnitName;
+
 
 }

+ 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) {

+ 125 - 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,54 @@ 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();
+                KwpGoods kwpGoods = goodsMap.get(kwcContractLogisticsGoods.getId());
+                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 +248,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 +281,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 +338,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 +347,6 @@ public class KwcContractLogisticsService {
             }
         }
         kwcContractLogisticsGoodsService.saveContractLogisticsGoods(kwcContractLogistics.getId(), reqVo.getGoodsInfo());
-
     }
 
     /**
@@ -336,7 +368,6 @@ public class KwcContractLogisticsService {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }
         });
-
     }
 
 
@@ -355,7 +386,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 +407,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 +444,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 +459,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 +486,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 - 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,

+ 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})