czh 2 лет назад
Родитель
Сommit
c61ee2fa0e
29 измененных файлов с 1043 добавлено и 78 удалено
  1. 39 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/ContractStatusEnum.java
  2. 3 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  3. 4 0
      sckw-modules/sckw-contract/pom.xml
  4. 102 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  5. 1 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractTradeController.java
  6. 12 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractLogisticsMapper.java
  7. 1 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogistics.java
  8. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsGoods.java
  9. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsTrack.java
  10. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsUnit.java
  11. 0 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTemplate.java
  12. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTrade.java
  13. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeGoods.java
  14. 0 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeOrder.java
  15. 0 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeTrack.java
  16. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeUnit.java
  17. 6 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/ContractLogisticsReqVo.java
  18. 26 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/IdReqVo.java
  19. 26 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/IdsReqVo.java
  20. 48 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java
  21. 45 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractLogisticsDetailResVo.java
  22. 65 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsBaseInfoResVo.java
  23. 61 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsGoodsInfoResVo.java
  24. 114 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java
  25. 27 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/CommonBusinessService.java
  26. 35 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsGoodsService.java
  27. 300 31
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  28. 104 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsUnitService.java
  29. 24 0
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml

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

@@ -0,0 +1,39 @@
+package com.sckw.core.model.enums;
+
+import lombok.Getter;
+
+/**
+ * @author czh
+ * @desc 合同状态
+ * @date 2023/7/14
+ */
+@Getter
+public enum ContractStatusEnum {
+    //已签约
+    SIGNED(0, "已签约"),
+    //已完结
+    COMPLETE(1, "已完结"),
+    //已保存
+    SAVE(2, "已保存"),
+    //签约中
+    SUBMIT(3, "签约中");
+
+    private final int code;
+
+    private final String name;
+
+    ContractStatusEnum(int code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public static ContractStatusEnum getName(int code) {
+        for (ContractStatusEnum contractTrackEnum : values()) {
+            if (contractTrackEnum.getCode() == code) {
+                return contractTrackEnum;
+            }
+        }
+        return null;
+    }
+
+}

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

@@ -128,6 +128,7 @@ public class HttpStatus {
     public static final String COOPERATE_ATTRIBUTE_NOT_EXISTS = "未查询到已有的合作属性";
     public static final String COOPERATE_NOT_EXISTS = "未查询到合作记录或已失效";
     public static final String ADDRESS_NOT_EXISTS = "未查询到地址记录或已失效";
+    public static final String CONTRACT_NOT_EXISTS = "未查询到合同或已失效";
 
     /**自定义提示消息*/
     public static final String PASSWD_ERROR = "密码不正确";
@@ -154,4 +155,6 @@ public class HttpStatus {
     public static final String MSG_019 = "只能操作正在审核中的记录!";
     public static final String MSG_020 = "当前机构还存在员工数据,不能删除!";
     public static final String MSG_021 = "不能重复设置默认地址!";
+    public static final String MSG_022 = "只能对草稿进行删除!";
+
 }

+ 4 - 0
sckw-modules/sckw-contract/pom.xml

@@ -53,6 +53,10 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-system-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-excel</artifactId>
+        </dependency>
 
     </dependencies>
 

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

@@ -1,7 +1,10 @@
 package com.sckw.contract.controller;
 
 import com.sckw.contract.model.vo.req.ContractLogisticsReqVo;
-import com.sckw.contract.service.KwcContractLogisticsService;
+import com.sckw.contract.model.vo.req.IdReqVo;
+import com.sckw.contract.model.vo.req.IdsReqVo;
+import com.sckw.contract.model.vo.req.QueryListReqVo;
+import com.sckw.contract.service.*;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
@@ -24,6 +27,18 @@ public class KwcCheckedController {
     @Autowired
     private KwcContractLogisticsService kwcContractLogisticsService;
 
+    /**
+     * @desc: 分页查询
+     * @param: reqVo 分页入参
+     * @author: czh
+     * @date 2023/7/17
+     * @return HttpResult
+     */
+    @RequestMapping("queryListByPage")
+    public HttpResult queryListByPage(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+        return HttpResult.ok(kwcContractLogisticsService.queryListByPage(reqVo));
+    }
+
     /**
      * @param reqVo 新增入参
      * @return HttpResult
@@ -37,10 +52,95 @@ public class KwcCheckedController {
         return HttpResult.ok(HttpStatus.MSG_003);
     }
 
-
+    /**
+     * @param reqVo 补充入参
+     * @desc: 补充合同
+     * @author: czh
+     * @date: 2023/7/14
+     */
     @PostMapping("supplement")
     public HttpResult supplement(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
         kwcContractLogisticsService.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(kwcContractLogisticsService.detail(reqVo.getId()));
+    }
+
+    /**
+     * @desc: 发起签约
+     * @param: reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @PostMapping("submit")
+    public HttpResult submit(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+        kwcContractLogisticsService.submit(reqVo);
+        return HttpResult.ok();
+    }
+
+    /**
+     * @desc: 修改草稿
+     * @param: reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @PostMapping("update")
+    public HttpResult update(@Valid @RequestBody ContractLogisticsReqVo reqVo) throws SystemException {
+        kwcContractLogisticsService.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 {
+        kwcContractLogisticsService.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 {
+        kwcContractLogisticsService.delete(reqVo.getIds());
+        return HttpResult.ok();
+    }
+
+
+    /**
+     * @desc: 导出
+     * @param: @param null
+     * @author: czh
+     * @date 2023/7/17
+     */
+    @PostMapping("export")
+    public void export(@Valid @RequestBody QueryListReqVo reqVo) throws SystemException {
+        kwcContractLogisticsService.export(reqVo);
+    }
+
+
 }

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

@@ -9,6 +9,6 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2023/7/13
  */
 @RestController
-@RequestMapping("contractTrade")
+@RequestMapping("kwcContractTrade")
 public class KwcContractTradeController {
 }

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

@@ -2,8 +2,12 @@ package com.sckw.contract.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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;
+
 /**
 * @author PC
 * @description 针对表【kwc_contract_logistics(物流合同(承运合同/托运合同))】的数据库操作Mapper
@@ -13,6 +17,14 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KwcContractLogisticsMapper extends BaseMapper<KwcContractLogistics> {
 
+    /**
+     * @desc: 查询
+     * @param: reqVo
+     * @author: czh
+     * @date 2023/7/17
+     * @return QueryListResVo
+     */
+    List<QueryListResVo> queryList(QueryListReqVo reqVo);
 }
 
 

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

@@ -1,6 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -97,7 +96,7 @@ public class KwcContractLogistics implements Serializable {
     private String remark;
 
     /**
-     * 用户状态(0正常、1已锁)
+     * 用户状态  0已签约 1已完结 2已保存(草稿) 3签约中
      */
     private Integer status;
 

+ 0 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsGoods.java

@@ -1,7 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -112,6 +110,4 @@ public class KwcContractLogisticsGoods implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

+ 0 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsTrack.java

@@ -1,7 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -66,6 +64,4 @@ public class KwcContractLogisticsTrack implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

+ 0 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogisticsUnit.java

@@ -1,7 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -91,6 +89,4 @@ public class KwcContractLogisticsUnit implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

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

@@ -1,6 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -76,6 +75,4 @@ public class KwcContractTemplate implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

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

@@ -1,7 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -122,6 +120,4 @@ public class KwcContractTrade implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

+ 0 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractTradeGoods.java

@@ -1,7 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -92,6 +90,4 @@ public class KwcContractTradeGoods implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

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

@@ -1,6 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -71,6 +70,4 @@ public class KwcContractTradeOrder implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

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

@@ -1,6 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -61,6 +60,4 @@ public class KwcContractTradeTrack implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

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

@@ -1,7 +1,5 @@
 package com.sckw.contract.model.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -91,6 +89,4 @@ public class KwcContractTradeUnit implements Serializable {
      */
     private Integer delFlag;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
 }

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

@@ -19,10 +19,15 @@ public class ContractLogisticsReqVo implements Serializable {
     private static final long serialVersionUID = -3606037883613411620L;
 
     /**
-     * 合同ID 补充合同必传
+     * 合同id 修改时必传
      */
     private Long id;
 
+    /**
+     * 父合同ID 补充合同
+     */
+    private Long pId;
+
     /**
      * 基础信息
      */

+ 26 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/IdReqVo.java

@@ -0,0 +1,26 @@
+package com.sckw.contract.model.vo.req;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc id 入参
+ * @date 2023/7/13
+ */
+@Data
+public class IdReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3027498279284285824L;
+
+    /**
+     * 主键
+     */
+    @NotNull(message = "id不能为空")
+    private Long id;
+
+}

+ 26 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/IdsReqVo.java

@@ -0,0 +1,26 @@
+package com.sckw.contract.model.vo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc ids 入参
+ * @date 2023/7/13
+ */
+@Data
+public class IdsReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3027498279284285824L;
+
+    /**
+     * 主键
+     */
+    @NotBlank(message = "id不能为空")
+    private String ids;
+
+}

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

@@ -0,0 +1,48 @@
+package com.sckw.contract.model.vo.req;
+
+import com.sckw.core.model.page.PageRequest;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class QueryListReqVo extends PageRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5785283278707737826L;
+
+    /**
+     * 主键id
+     */
+    private String ids;
+
+    /**
+     * ID集合
+     */
+    private List<Long> idList;
+
+    /**
+     * 单位名称、联系人、联系电话
+     */
+    private String keywords;
+
+    /**
+     * 创建结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 创建开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 合同状态  0已签约 1已完结 2已保存(草稿) 3签约中
+     */
+    private Integer status;
+
+
+}

+ 45 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractLogisticsDetailResVo.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 ContractLogisticsDetailResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6152841290674824503L;
+
+    /**
+     * 基础信息
+     */
+    private LogisticsBaseInfoResVo baseInfo;
+
+    /**
+     * 合同文件
+     */
+    private List<String> contractFile;
+
+    /**
+     * 标的信息
+     */
+    private List<LogisticsGoodsInfoResVo> goodsInfo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 补充合同
+     */
+    private List<ContractLogisticsDetailResVo> child;
+
+}

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

@@ -0,0 +1,65 @@
+package com.sckw.contract.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class LogisticsBaseInfoResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2834018651817251590L;
+
+    /**
+     * 承运单位
+     */
+    private String carrierEntName;
+
+    /**
+     * 承运单位联系电话
+     */
+    private String carrierPhone;
+
+    /**
+     * 计费方式
+     */
+    private String chargingName;
+
+    /**
+     * 托运单位
+     */
+    private String checkedEntName;
+
+    /**
+     * 托运单位联系电话
+     */
+    private String checkedPhone;
+
+    /**
+     * 合同编号
+     */
+    private String contractCode;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+    /**
+     * 终止时间
+     */
+    private Date endTime;
+
+    /**
+     * 签约方式
+     */
+    private String signingWayName;
+
+    /**
+     * 生效时间
+     */
+    private Date startTime;
+
+}

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

@@ -0,0 +1,61 @@
+package com.sckw.contract.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class LogisticsGoodsInfoResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 5173885241592701709L;
+
+    /**
+     * 运量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 单位(运量为 X ,运价为 元/X)
+     */
+    private String unit;
+
+    /**
+     * 运价
+     */
+    private BigDecimal price;
+
+    /**
+     * 运价单位
+     */
+    private String priceUnit;
+
+    /**
+     * 亏吨扣款
+     */
+    private BigDecimal deficitPrice;
+
+    /**
+     * 亏吨扣款单位
+     */
+    private String deficitUnit;
+
+    /**
+     * 商品
+     */
+    private String goodsName;
+
+    /**
+     * 合理损耗
+     */
+    private BigDecimal loss;
+
+    /**
+     * 合理损耗单位
+     */
+    private String lossUnit;
+
+
+}

+ 114 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java

@@ -0,0 +1,114 @@
+package com.sckw.contract.model.vo.res;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.sckw.core.utils.LongToStringUtils;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class QueryListResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8699172452542787584L;
+
+    /**
+     * 合同总量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 承运单位名
+     */
+    private String carrierEntName;
+
+    /**
+     * 计费方式中文名
+     */
+    private String chargingName;
+
+    /**
+     * 托运单位名
+     */
+    private String checkedEntName;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 发起人
+     */
+    private String createByName;
+
+    /**
+     * 发起单位
+     */
+    private String createEntName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 终止日期
+     */
+    private Date endTime;
+
+    /**
+     * 主键id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private Double id;
+
+    /**
+     * 发起时间
+     */
+    private Date initiateTime;
+
+    /**
+     * 已履约量
+     */
+    private BigDecimal performedAmount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 签约方式中文名
+     */
+    private String signingWayName;
+
+    /**
+     * 签约时间
+     */
+    private Date signTime;
+
+    /**
+     * 起始日期
+     */
+    private Date startTime;
+
+    /**
+     * 合同状态
+     */
+    private Integer status;
+
+    /**
+     * 合同状态中文名
+     */
+    private String statusName;
+
+}

+ 27 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/CommonBusinessService.java

@@ -0,0 +1,27 @@
+package com.sckw.contract.service;
+
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class CommonBusinessService {
+
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
+    /**
+     * @return Map
+     * @desc: 查企业
+     * @param: entIdList 企业id集合
+     * @author: czh
+     * @date 2023/7/16
+     */
+    public Map<Long, EntCacheResDto> queryEntCacheMapByIds(List<Long> entIdList) {
+        return remoteSystemService.queryEntCacheMapByIds(entIdList);
+    }
+}

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

@@ -1,5 +1,6 @@
 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;
@@ -19,10 +20,10 @@ import java.util.Date;
 import java.util.List;
 
 /**
-* @author PC
-* @description 针对表【kwc_contract_logistics_goods(物流合同商品信息)】的数据库操作Service实现
-* @createDate 2023-07-13 13:36:19
-*/
+ * @author PC
+ * @description 针对表【kwc_contract_logistics_goods(物流合同商品信息)】的数据库操作Service实现
+ * @createDate 2023-07-13 13:36:19
+ */
 @Service
 public class KwcContractLogisticsGoodsService {
 
@@ -62,6 +63,36 @@ public class KwcContractLogisticsGoodsService {
         }
     }
 
+    /**
+     * @return KwcContractLogisticsGoods
+     * @desc: 根据合同id查标的信息
+     * @param: contractId 合同id
+     * @author: czh
+     * @date 2023/7/16
+     */
+    public List<KwcContractLogisticsGoods> queryGoodsInfoByContractId(Long contractId) {
+        LambdaQueryWrapper<KwcContractLogisticsGoods> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractLogisticsGoods::getContractId, contractId);
+        wrapper.eq(KwcContractLogisticsGoods::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractLogisticsGoods::getStatus, Global.NO);
+        return kwcContractLogisticsGoodsMapper.selectList(wrapper);
+    }
+
+    /**
+     * @return 修改个数
+     * @desc: 修改
+     * @param: list 实体类
+     * @author: czh
+     * @date 2023/7/17
+     */
+    public int updateBatch(List<KwcContractLogisticsGoods> list) {
+        int count = 0;
+        for (KwcContractLogisticsGoods kwcContractLogisticsGoods : list) {
+            count += kwcContractLogisticsGoodsMapper.updateById(kwcContractLogisticsGoods);
+        }
+        return count;
+    }
+
 }
 
 

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

@@ -1,39 +1,53 @@
 package com.sckw.contract.service;
+
+import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.Date;
+import java.util.*;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.sckw.contract.dao.KwcContractLogisticsMapper;
-import com.sckw.contract.dao.KwcContractLogisticsTrackMapper;
 import com.sckw.contract.model.entity.KwcContractLogistics;
+import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
+import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
 import com.sckw.contract.model.vo.req.ContractLogisticsReqVo;
 import com.sckw.contract.model.vo.req.LogisticsBaseInfoReqVo;
 import com.sckw.contract.model.vo.req.LogisticsGoodsInfoReqVo;
+import com.sckw.contract.model.vo.req.QueryListReqVo;
+import com.sckw.contract.model.vo.res.ContractLogisticsDetailResVo;
+import com.sckw.contract.model.vo.res.LogisticsBaseInfoResVo;
+import com.sckw.contract.model.vo.res.LogisticsGoodsInfoResVo;
+import com.sckw.contract.model.vo.res.QueryListResVo;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
-import com.sckw.core.model.enums.ChargingTypeEnum;
+import com.sckw.core.model.enums.ContractStatusEnum;
+import com.sckw.core.model.enums.CooperateTypeEnum;
 import com.sckw.core.model.enums.SigningWayEnum;
+import com.sckw.core.model.page.PageHelperUtil;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
+import com.sckw.core.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.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.bouncycastle.cms.PasswordRecipientId;
-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;
 
-import java.util.List;
-import java.util.Objects;
-
 /**
-* @author PC
-* @description 针对表【kwc_contract_logistics(物流合同(承运合同/托运合同))】的数据库操作Service实现
-* @createDate 2023-07-13 13:36:19
-*/
+ * @author PC
+ * @description 针对表【kwc_contract_logistics(物流合同(承运合同/托运合同))】的数据库操作Service实现
+ * @createDate 2023-07-13 13:36:19
+ */
 @Service
+@Slf4j
 public class KwcContractLogisticsService {
 
     @Autowired
@@ -45,6 +59,10 @@ public class KwcContractLogisticsService {
     @Autowired
     private KwcContractLogisticsTrackService kwcContractLogisticsTrackService;
 
+    @Autowired
+    private KwcContractLogisticsUnitService kwcContractLogisticsUnitService;
+
+
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
@@ -55,13 +73,22 @@ public class KwcContractLogisticsService {
      * @date: 2023/7/13
      */
     @Transactional(rollbackFor = {})
-    public void addCheckedContract(ContractLogisticsReqVo reqVo) {
+    public Long addCheckedContract(ContractLogisticsReqVo reqVo) {
         LogisticsBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
         List<String> contractFileList = reqVo.getContractFile();
         List<LogisticsGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
 
         //创建合同
-        KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(baseInfo, reqVo.getRemark(), reqVo.getId());
+        KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(baseInfo, reqVo.getRemark(), reqVo.getPId());
+        Date date = new Date();
+        long contactId = new IdWorker(1L).nextId();
+        kwcContractLogistics.setId(contactId);
+        kwcContractLogistics.setStatus(ContractStatusEnum.SAVE.getCode());
+        kwcContractLogistics.setCreateBy(LoginUserHolder.getUserId());
+        kwcContractLogistics.setCreateTime(date);
+        kwcContractLogistics.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractLogistics.setUpdateTime(date);
+        kwcContractLogistics.setDelFlag(Global.NO);
         if (kwcContractLogisticsMapper.insert(kwcContractLogistics) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
@@ -69,25 +96,25 @@ public class KwcContractLogisticsService {
         //保存交易合同商品信息
         kwcContractLogisticsGoodsService.saveContractLogisticsGoods(kwcContractLogistics.getId(), goodsInfoList);
 
-        //存审批记录
-        kwcContractLogisticsTrackService.saveContractLogisticsTrack(kwcContractLogistics.getId());
-    }
+        //存单位信息
+        kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), baseInfo);
 
-    private KwcContractLogistics getKwcContractLogistics(LogisticsBaseInfoReqVo baseInfo, String remark, Long pid) {
+        return contactId;
+    }
 
-        Date date = new Date();
+    public KwcContractLogistics getKwcContractLogistics(LogisticsBaseInfoReqVo baseInfo, String remark, Long pid) {
         KwcContractLogistics kwcContractLogistics = new KwcContractLogistics();
-        long contactId = new IdWorker(1L).nextId();
-        kwcContractLogistics.setId(contactId);
         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.isNull(sysDictResDto)) {
-        kwcContractLogistics.setCharging(sysDictResDto.getId());
+            kwcContractLogistics.setCharging(sysDictResDto.getId());
         }
-        kwcContractLogistics.setTrading(pid);
+
+//        remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE, baseInfo.getT)
+//        kwcContractLogistics.setTrading(pid);
         kwcContractLogistics.setStartTime(baseInfo.getStartTime());
         kwcContractLogistics.setEndTime(baseInfo.getEndTime());
         //单位不同怎么汇总?
@@ -96,14 +123,8 @@ public class KwcContractLogisticsService {
         kwcContractLogistics.setSigningUrl("");
         kwcContractLogistics.setSignedUrl("");
         kwcContractLogistics.setSigningNo("");
-        kwcContractLogistics.setContractPid(0L);
+        kwcContractLogistics.setContractPid(pid);
         kwcContractLogistics.setRemark(remark);
-        kwcContractLogistics.setStatus(Global.NO);
-        kwcContractLogistics.setCreateBy(LoginUserHolder.getUserId());
-        kwcContractLogistics.setCreateTime(date);
-        kwcContractLogistics.setUpdateBy(LoginUserHolder.getUserId());
-        kwcContractLogistics.setUpdateTime(date);
-        kwcContractLogistics.setDelFlag(Global.NO);
         return kwcContractLogistics;
     }
 
@@ -115,7 +136,7 @@ public class KwcContractLogisticsService {
      * @date: 2023/7/14
      */
     public void supplement(ContractLogisticsReqVo reqVo) {
-        Long id = reqVo.getId();
+        Long id = reqVo.getPId();
         KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(id);
         if (Objects.isNull(kwcContractLogistics)) {
 
@@ -123,6 +144,254 @@ public class KwcContractLogisticsService {
 
         addCheckedContract(reqVo);
     }
+
+    /**
+     * @return ContractLogisticsDetailResVo
+     * @desc: 合同详情
+     * @param: reqVo id
+     * @author: czh
+     * @date 2023/7/16
+     */
+    public ContractLogisticsDetailResVo detail(Long id) {
+        KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(id);
+        if (Objects.isNull(kwcContractLogistics)) {
+            return null;
+        }
+
+        return buildContractLogisticsDetailResVo(kwcContractLogistics);
+    }
+
+
+    private ContractLogisticsDetailResVo buildContractLogisticsDetailResVo(KwcContractLogistics kwcContractLogistics) {
+        ContractLogisticsDetailResVo contractLogisticsDetailResVo = new ContractLogisticsDetailResVo();
+        //基础信息
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnitList = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnitList)) {
+            LogisticsBaseInfoResVo logisticsBaseInfoResVo = new LogisticsBaseInfoResVo();
+            for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnitList) {
+                if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CONSIGN.getCode())) {
+                    logisticsBaseInfoResVo.setCheckedEntName(kwcContractLogisticsUnit.getFirmName());
+                    logisticsBaseInfoResVo.setCheckedPhone(kwcContractLogisticsUnit.getSignPhone());
+                }
+
+                if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CARRIAGE.getCode())) {
+                    logisticsBaseInfoResVo.setCarrierEntName(kwcContractLogisticsUnit.getFirmName());
+                    logisticsBaseInfoResVo.setCarrierPhone(kwcContractLogisticsUnit.getSignPhone());
+                }
+            }
+
+            //logisticsBaseInfoResVo.setChargingName();
+            logisticsBaseInfoResVo.setContractCode(kwcContractLogistics.getContractNo());
+            logisticsBaseInfoResVo.setContractName(kwcContractLogistics.getName());
+            logisticsBaseInfoResVo.setEndTime(kwcContractLogistics.getEndTime());
+            logisticsBaseInfoResVo.setSigningWayName(kwcContractLogistics.getSigningWay());
+            logisticsBaseInfoResVo.setStartTime(kwcContractLogistics.getStartTime());
+            contractLogisticsDetailResVo.setBaseInfo(logisticsBaseInfoResVo);
+        }
+
+        //标的信息
+        List<KwcContractLogisticsGoods> kwcContractLogisticsGoodsList = kwcContractLogisticsGoodsService.queryGoodsInfoByContractId(kwcContractLogistics.getId());
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsGoodsList)) {
+            List<Long> goodsIdList = kwcContractLogisticsGoodsList.stream().map(KwcContractLogisticsGoods::getGoodsId).toList();
+            List<LogisticsGoodsInfoResVo> goodsInfo = new ArrayList<>();
+            for (KwcContractLogisticsGoods kwcContractLogisticsGoods : kwcContractLogisticsGoodsList) {
+                LogisticsGoodsInfoResVo logisticsGoodsInfoResVo = new LogisticsGoodsInfoResVo();
+                logisticsGoodsInfoResVo.setAmount(kwcContractLogisticsGoods.getAmount());
+                logisticsGoodsInfoResVo.setUnit(kwcContractLogisticsGoods.getUnit());
+                logisticsGoodsInfoResVo.setPrice(kwcContractLogisticsGoods.getPrice());
+                //logisticsGoodsInfoResVo.setPriceUnit();
+                logisticsGoodsInfoResVo.setDeficitPrice(kwcContractLogisticsGoods.getDeficitPrice());
+                logisticsGoodsInfoResVo.setDeficitUnit(kwcContractLogisticsGoods.getDeficitUnit());
+                //logisticsGoodsInfoResVo.setGoodsName();
+                logisticsGoodsInfoResVo.setLoss(kwcContractLogisticsGoods.getLoss());
+                logisticsGoodsInfoResVo.setLossUnit(kwcContractLogisticsGoods.getLossUnit());
+                goodsInfo.add(logisticsGoodsInfoResVo);
+            }
+            contractLogisticsDetailResVo.setGoodsInfo(goodsInfo);
+        }
+
+        //合同文件
+        List<String> fileList = new ArrayList<>();
+        fileList.add(kwcContractLogistics.getSignedUrl());
+        fileList.add(kwcContractLogistics.getSigningUrl());
+        contractLogisticsDetailResVo.setContractFile(fileList);
+
+        //补充合同
+        List<KwcContractLogistics> supplementList = getSupplementList(kwcContractLogistics);
+        if (CollectionUtils.isNotEmpty(supplementList)) {
+            List<ContractLogisticsDetailResVo> child = new ArrayList<>();
+            for (KwcContractLogistics supplement : supplementList) {
+                child.add(buildContractLogisticsDetailResVo(supplement));
+            }
+            contractLogisticsDetailResVo.setChild(child);
+        }
+        return contractLogisticsDetailResVo;
+    }
+
+
+    private List<KwcContractLogistics> getSupplementList(KwcContractLogistics kwcContractLogistics) {
+        LambdaQueryWrapper<KwcContractLogistics> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractLogistics::getContractPid, kwcContractLogistics.getId());
+        wrapper.eq(KwcContractLogistics::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractLogistics::getStatus, Global.NO);
+        List<KwcContractLogistics> supplementList = kwcContractLogisticsMapper.selectList(wrapper);
+        return supplementList;
+    }
+
+
+    /**
+     * @desc: 发起签约
+     * @param: reqVo 入参
+     * @author: czh
+     * @date 2023/7/17
+     */
+    @Transactional(rollbackFor = {})
+    public void submit(ContractLogisticsReqVo reqVo) {
+        Long id = reqVo.getId();
+        if (Objects.isNull(id)) {
+            //创建合同
+            KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
+            Date date = new Date();
+            id = new IdWorker(1L).nextId();
+            kwcContractLogistics.setId(id);
+            kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
+            kwcContractLogistics.setCreateBy(LoginUserHolder.getUserId());
+            kwcContractLogistics.setCreateTime(date);
+            kwcContractLogistics.setUpdateBy(LoginUserHolder.getUserId());
+            kwcContractLogistics.setUpdateTime(date);
+            kwcContractLogistics.setDelFlag(Global.NO);
+            if (kwcContractLogisticsMapper.insert(kwcContractLogistics) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            }
+
+            //存审批记录
+            kwcContractLogisticsTrackService.saveContractLogisticsTrack(id);
+            return;
+        }
+
+        id = addCheckedContract(reqVo);
+        //存审批记录
+        kwcContractLogisticsTrackService.saveContractLogisticsTrack(id);
+    }
+
+
+    /**
+     * @desc: 修改草稿
+     * @param: reqVo 入参
+     * @author: czh
+     * @date 2023/7/16
+     */
+    @Transactional(rollbackFor = {})
+    public void update(ContractLogisticsReqVo reqVo) {
+        Long contractId = reqVo.getId();
+        KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(contractId);
+        if (Objects.isNull(kwcContractLogistics)) {
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
+        }
+
+        KwcContractLogistics param = getKwcContractLogistics(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
+        param.setId(contractId);
+        param.setStatus(ContractStatusEnum.SAVE.getCode());
+        param.setUpdateBy(LoginUserHolder.getUserId());
+        param.setUpdateTime(new Date());
+        if (kwcContractLogisticsMapper.updateById(param) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
+
+
+        //保存交易合同商品信息-先把以前的删除
+        List<KwcContractLogisticsGoods> kwcContractLogisticsGoodsList = kwcContractLogisticsGoodsService.queryGoodsInfoByContractId(contractId);
+        if (CollectionUtils.isNotEmpty(kwcContractLogisticsGoodsList)) {
+            Date date = new Date();
+            kwcContractLogisticsGoodsList.forEach(item -> {
+                item.setDelFlag(Global.YES);
+                item.setCreateBy(LoginUserHolder.getUserId());
+                item.setCreateTime(date);
+            });
+
+            if (kwcContractLogisticsGoodsService.updateBatch(kwcContractLogisticsGoodsList) != kwcContractLogisticsGoodsList.size()) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        }
+        kwcContractLogisticsGoodsService.saveContractLogisticsGoods(kwcContractLogistics.getId(), reqVo.getGoodsInfo());
+
+    }
+
+    /**
+     * @desc: 手动完结
+     * @param: reqVo ids
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @Transactional(rollbackFor = {})
+    public void complete(String ids) {
+        List<Long> contractIdList = Arrays.asList(ids.split(Global.COMMA)).stream().map(Long::parseLong).toList();
+        List<KwcContractLogistics> kwcContractLogistics = kwcContractLogisticsMapper.selectBatchIds(contractIdList);
+        Date date = new Date();
+        kwcContractLogistics.forEach(item -> {
+            item.setStatus(ContractStatusEnum.COMPLETE.getCode());
+            item.setUpdateBy(LoginUserHolder.getUserId());
+            item.setUpdateTime(date);
+            if (kwcContractLogisticsMapper.updateById(item) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        });
+
+    }
+
+
+    /**
+     * @desc: 手动完结
+     * @param: reqVo ids
+     * @author: czh
+     * @date 2023/7/16
+     * @return HttpResult
+     */
+    @Transactional(rollbackFor = {})
+    public void delete(String ids) {
+        List<Long> contractIdList = Arrays.asList(ids.split(Global.COMMA)).stream().map(Long::parseLong).toList();
+        List<KwcContractLogistics> kwcContractLogistics = kwcContractLogisticsMapper.selectBatchIds(contractIdList);
+        Date date = new Date();
+        kwcContractLogistics.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 (kwcContractLogisticsMapper.updateById(item) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        });
+    }
+
+    /**
+     * @desc: 分页查询
+     * @param:  reqVo
+     * @author: czh
+     * @date 2023/7/17
+     * @return PageResult
+     */
+    public PageResult queryListByPage(QueryListReqVo reqVo) {
+        PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
+        List<QueryListResVo> list = kwcContractLogisticsMapper.queryList(reqVo);
+        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+    }
+
+    public void export(QueryListReqVo reqVo) {
+        if (StringUtils.isNotBlank(reqVo.getIds())) {
+            List<Long> idList = Arrays.asList(reqVo.getIds().split(Global.COMMA)).stream().map(Long::parseLong).toList();
+            reqVo.setIdList(idList);
+        }
+        List<QueryListResVo> queryListResVos = kwcContractLogisticsMapper.queryList(reqVo);
+        try {
+            EasyExcelUtil.writeSingleExcel("物流合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
+        } catch (IOException e) {
+            log.error("导出失败:", e);
+            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
+        }
+    }
 }
 
 

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

@@ -1,15 +1,115 @@
 package com.sckw.contract.service;
 
+import java.util.*;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.contract.dao.KwcContractLogisticsUnitMapper;
+import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
+import com.sckw.contract.model.vo.req.LogisticsBaseInfoReqVo;
+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;
 
 /**
-* @author PC
-* @description 针对表【kwc_contract_logistics_unit(物流合同采购/销售企业信息)】的数据库操作Service实现
-* @createDate 2023-07-13 13:36:19
-*/
+ * @author PC
+ * @description 针对表【kwc_contract_logistics_unit(物流合同采购/销售企业信息)】的数据库操作Service实现
+ * @createDate 2023-07-13 13:36:19
+ */
 @Service
 public class KwcContractLogisticsUnitService {
 
+    @Autowired
+    private KwcContractLogisticsUnitMapper kwcContractLogisticsUnitMapper;
+
+    @Autowired
+    private CommonBusinessService commonBusinessService;
+
+    /**
+     * @desc: 保存合同单位
+     * @param: contractId 合同id, baseInfo基础信息
+     * @author: czh
+     * @date 2023/7/16
+     */
+    public void saveContractLogisticsUnit(Long contractId, LogisticsBaseInfoReqVo baseInfo) throws SystemException {
+        List<Long> entIdList = new ArrayList<>();
+        entIdList.add(baseInfo.getCheckedEntId());
+        entIdList.add(baseInfo.getCarrierEntId());
+        Map<Long, EntCacheResDto> entCacheResDtoMap = commonBusinessService.queryEntCacheMapByIds(entIdList);
+
+        Date date = new Date();
+        saveCheckAndCarrier(contractId, entCacheResDtoMap, date, baseInfo);
+    }
+
+    /**
+     * @desc: 存托运、承运企业
+     * @param: contractId 合同id, entCacheResDtoMap 企业信息 date时间  logisticsBaseInfoReqVo 入参
+     * @author: czh
+     * @date 2023/7/16
+     */
+    private void saveCheckAndCarrier(Long contractId, Map<Long, EntCacheResDto> entCacheResDtoMap, Date date, LogisticsBaseInfoReqVo logisticsBaseInfoReqVo) {
+        //存托运企业
+        KwcContractLogisticsUnit kwcContractLogisticsUnit = new KwcContractLogisticsUnit();
+        kwcContractLogisticsUnit.setId(new IdWorker(1L).nextId());
+        kwcContractLogisticsUnit.setContractId(contractId);
+        kwcContractLogisticsUnit.setUnitType(CooperateTypeEnum.CONSIGN.getCode());
+        kwcContractLogisticsUnit.setEntId(logisticsBaseInfoReqVo.getCheckedEntId());
+        saveEnt(entCacheResDtoMap, kwcContractLogisticsUnit);
+        kwcContractLogisticsUnit.setSignPhone(logisticsBaseInfoReqVo.getCheckedPhone());
+        kwcContractLogisticsUnit.setStatus(Global.NO);
+        kwcContractLogisticsUnit.setCreateBy(LoginUserHolder.getUserId());
+        kwcContractLogisticsUnit.setCreateTime(date);
+        kwcContractLogisticsUnit.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractLogisticsUnit.setUpdateTime(date);
+        kwcContractLogisticsUnit.setDelFlag(Global.NO);
+        if (kwcContractLogisticsUnitMapper.insert(kwcContractLogisticsUnit) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+
+        //存承运运企业
+        kwcContractLogisticsUnit.setId(new IdWorker(1L).nextId());
+        kwcContractLogisticsUnit.setUnitType(CooperateTypeEnum.CARRIAGE.getCode());
+        kwcContractLogisticsUnit.setEntId(logisticsBaseInfoReqVo.getCheckedEntId());
+        saveEnt(entCacheResDtoMap, kwcContractLogisticsUnit);
+        kwcContractLogisticsUnit.setSignPhone(logisticsBaseInfoReqVo.getCarrierPhone());
+        if (kwcContractLogisticsUnitMapper.insert(kwcContractLogisticsUnit) <= 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, KwcContractLogisticsUnit kwcContractLogisticsUnit) {
+        EntCacheResDto entCacheResDto = entCacheResDtoMap.get(kwcContractLogisticsUnit.getEntId());
+        if (Objects.nonNull(entCacheResDto)) {
+            kwcContractLogisticsUnit.setFirmName(entCacheResDto.getFirmName());
+        }
+        kwcContractLogisticsUnit.setContacts(entCacheResDto.getContacts());
+        kwcContractLogisticsUnit.setPhone(entCacheResDto.getPhone());
+    }
+
+    /**
+     * @desc: 根据合同id查企业
+     * @param: id 合同id
+     * @author: czh
+     * @date 2023/7/16
+     * @return KwcContractLogisticsUnit
+     */
+    public List<KwcContractLogisticsUnit> queryByContractId(Long id) {
+        LambdaQueryWrapper<KwcContractLogisticsUnit> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractLogisticsUnit::getContractId, id);
+        wrapper.eq(KwcContractLogisticsUnit::getDelFlag, Global.NO);
+        wrapper.eq(KwcContractLogisticsUnit::getStatus, Global.NO);
+        return kwcContractLogisticsUnitMapper.selectList(wrapper);
+    }
 }
 
 

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

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