Przeglądaj źródła

新增合同流程

czh 2 lat temu
rodzic
commit
8a95282601

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

@@ -11,7 +11,7 @@ import lombok.Getter;
 public enum ContractTrackEnum {
 
     //签约中
-    SIGNING(1, "签约"),
+    SIGNING(1, "发起签约"),
     //已签约
     SIGNED(0, "已签约"),
     //已完结

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

@@ -57,4 +57,9 @@ public class ContractLogisticsDetailResVo implements Serializable {
      */
     private List<ContractLogisticsDetailResVo> child;
 
+    /**
+     * 审批记录
+     */
+    private List<ContractTrackResVo> trackInfo;
+
 }

+ 35 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractTrackResVo.java

@@ -0,0 +1,35 @@
+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/31
+ */
+@Data
+public class ContractTrackResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -6408999861802311165L;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 企业名
+     */
+    private String entName;
+
+    /**
+     * 操作
+     */
+    private String trackName;
+
+}

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

@@ -57,4 +57,9 @@ public class ContractTradeDetailResVo implements Serializable {
      */
     private List<ContractTradeDetailResVo> child;
 
+    /**
+     * 审批记录
+     */
+    private List<ContractTrackResVo> trackInfo;
+
 }

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

@@ -33,6 +33,11 @@ public class LogisticsBaseInfoResVo implements Serializable {
      */
     private String carrierPhone;
 
+    /**
+     * 承运单位联系人
+     */
+    private String carrierContacts;
+
     /**
      * 计费方式
      */
@@ -58,6 +63,11 @@ public class LogisticsBaseInfoResVo implements Serializable {
      */
     private String checkedPhone;
 
+    /**
+     * 托运单位联系人
+     */
+    private String checkedContacts;
+
     /**
      * 合同编号
      */

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

@@ -47,6 +47,11 @@ public class TradeBaseInfoResVo implements Serializable {
      */
     private String providePhone;
 
+    /**
+     * 供应单位联系人
+     */
+    private String provideContacts;
+
     /**
      * 采购单位
      */
@@ -62,6 +67,11 @@ public class TradeBaseInfoResVo implements Serializable {
      */
     private String purchasePhone;
 
+    /**
+     * 采购单位联系人
+     */
+    private String purchaseContacts;
+
     /**
      * 签约方式
      */

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

@@ -17,6 +17,7 @@ import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
 import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
+import com.sckw.contract.model.entity.KwcContractTrade;
 import com.sckw.contract.model.vo.req.*;
 import com.sckw.contract.model.vo.res.*;
 import com.sckw.core.common.enums.enums.DictEnum;
@@ -62,6 +63,7 @@ public class KwcContractLogisticsService {
 
     @Autowired
     private KwcContractLogisticsUnitService kwcContractLogisticsUnitService;
+
     @Autowired
     private RemoteContractServiceImpl remoteContractService;
 
@@ -188,12 +190,14 @@ public class KwcContractLogisticsService {
                 if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CONSIGN.getCode())) {
                     logisticsBaseInfoResVo.setCheckedEntName(kwcContractLogisticsUnit.getFirmName());
                     logisticsBaseInfoResVo.setCheckedPhone(kwcContractLogisticsUnit.getSignPhone());
+                    logisticsBaseInfoResVo.setCheckedContacts(kwcContractLogisticsUnit.getContacts());
                     logisticsBaseInfoResVo.setCheckedEntId(kwcContractLogisticsUnit.getEntId());
                 }
 
                 if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CARRIAGE.getCode())) {
                     logisticsBaseInfoResVo.setCarrierEntName(kwcContractLogisticsUnit.getFirmName());
                     logisticsBaseInfoResVo.setCarrierPhone(kwcContractLogisticsUnit.getSignPhone());
+                    logisticsBaseInfoResVo.setCarrierContacts(kwcContractLogisticsUnit.getContacts());
                     logisticsBaseInfoResVo.setCarrierEntId(kwcContractLogisticsUnit.getEntId());
                 }
             }
@@ -271,6 +275,9 @@ public class KwcContractLogisticsService {
         fileList.add(kwcContractLogistics.getSigningUrl());
         contractLogisticsDetailResVo.setContractFile(fileList.stream().filter(StringUtils::isNotBlank).toList());
 
+        //审批流程信息
+        contractLogisticsDetailResVo.setTrackInfo(kwcContractLogisticsTrackService.queryContractTrackByContractId(kwcContractLogistics.getId()));
+
         //补充合同
         List<KwcContractLogistics> supplementList = getSupplementList(kwcContractLogistics);
         if (CollectionUtils.isNotEmpty(supplementList)) {

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

@@ -1,15 +1,25 @@
 package com.sckw.contract.service;
 
-import java.util.Date;
+import java.util.*;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.contract.dao.KwcContractLogisticsMapper;
 import com.sckw.contract.dao.KwcContractLogisticsTrackMapper;
+import com.sckw.contract.dao.KwcContractLogisticsUnitMapper;
+import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.entity.KwcContractLogisticsTrack;
+import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
+import com.sckw.contract.model.vo.res.ContractTrackResVo;
 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.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -24,6 +34,15 @@ public class KwcContractLogisticsTrackService {
     @Autowired
     private KwcContractLogisticsTrackMapper kwcContractLogisticsTrackMapper;
 
+    @Autowired
+    private KwcContractLogisticsMapper kwcContractLogisticsMapper;
+
+    @Autowired
+    private KwcContractLogisticsUnitMapper kwcContractLogisticsUnitMapper;
+
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
     /**
      * @param contractId 合同id
      * @desc: 存审批记录
@@ -48,6 +67,65 @@ public class KwcContractLogisticsTrackService {
         }
     }
 
+    /**
+     * @param id 合同id
+     * @return List<ContractTrackResVo>
+     * @desc: 根据合同id查流程
+     * @author: czh
+     * @date: 2023/7/31
+     */
+    public List<ContractTrackResVo> queryContractTrackByContractId(Long id) {
+        LambdaQueryWrapper<KwcContractLogisticsTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractLogisticsTrack::getContractId, id).
+                eq(KwcContractLogisticsTrack::getDelFlag, Global.NO).
+                orderByDesc(KwcContractLogisticsTrack::getCreateTime);
+        List<KwcContractLogisticsTrack> kwcContractLogisticsTracks = kwcContractLogisticsTrackMapper.selectList(wrapper);
+        if (CollectionUtils.isEmpty(kwcContractLogisticsTracks)) {
+            return Collections.emptyList();
+        }
+
+        KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(id);
+        if (Objects.isNull(kwcContractLogistics)) {
+            return Collections.emptyList();
+        }
+
+        Long entId = kwcContractLogistics.getEntId();
+        LambdaQueryWrapper<KwcContractLogisticsUnit> wrapper2 = new LambdaQueryWrapper<>();
+        wrapper2.eq(KwcContractLogisticsUnit::getContractId, id).
+                 eq(KwcContractLogisticsUnit::getDelFlag, Global.NO);
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitMapper.selectList(wrapper2);
+        if (CollectionUtils.isEmpty(kwcContractLogisticsTracks)) {
+            return Collections.emptyList();
+        }
+
+        String initiateEntName = "";
+        String targetEntName  = "";
+        for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnits) {
+            if (kwcContractLogisticsUnit.getEntId().equals(entId)) {
+                initiateEntName = kwcContractLogisticsUnit.getFirmName();
+            } else {
+                targetEntName = kwcContractLogisticsUnit.getFirmName();
+            }
+        }
+
+        List<ContractTrackResVo> list = new ArrayList<>();
+        for (KwcContractLogisticsTrack item : kwcContractLogisticsTracks) {
+            ContractTrackResVo contractTrackResVo = new ContractTrackResVo();
+            contractTrackResVo.setCreateTime(item.getCreateTime());
+            contractTrackResVo.setTrackName(ContractTrackEnum.getName(item.getType()).getName());
+            if (ContractTrackEnum.SIGNING.getCode() == item.getType()) {
+                contractTrackResVo.setEntName(initiateEntName);
+            } else if (ContractTrackEnum.SIGNED.getCode() == item.getType()) {
+                contractTrackResVo.setEntName(targetEntName);
+            } else {
+                UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(item.getCreateBy());
+                contractTrackResVo.setEntName(userCacheResDto.getEntInfo().getFirmName());
+            }
+            list.add(contractTrackResVo);
+        }
+        return list;
+    }
+
 }
 
 

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

@@ -264,18 +264,21 @@ public class KwcContractTradeService {
                 if (kwcContractTradeUnit.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0) {
                     tradeBaseInfoResVo.setProvideEntName(kwcContractTradeUnit.getFirmName());
                     tradeBaseInfoResVo.setProvidePhone(kwcContractTradeUnit.getSignPhone());
+                    tradeBaseInfoResVo.setProvideContacts(kwcContractTradeUnit.getContacts());
                     tradeBaseInfoResVo.setProvideEntId(kwcContractTradeUnit.getEntId());
                 }
 
                 if (kwcContractTradeUnit.getUnitType().compareTo(EntTypeEnum.PURCHASER.getCode()) == 0) {
                     tradeBaseInfoResVo.setPurchaseEntName(kwcContractTradeUnit.getFirmName());
                     tradeBaseInfoResVo.setPurchasePhone(kwcContractTradeUnit.getSignPhone());
+                    tradeBaseInfoResVo.setPurchaseContacts(kwcContractTradeUnit.getContacts());
                     tradeBaseInfoResVo.setPurchaseEntId(kwcContractTradeUnit.getEntId());
                 }
             }
         }
         contractTradeDetailResVo.setBaseInfo(tradeBaseInfoResVo);
         contractTradeDetailResVo.setId(id);
+
         //标的信息
         List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(id);
         List<Long> goodsIdList = kwcContractTradeGoodsList.stream().map(KwcContractTradeGoods::getGoodsId).toList();
@@ -311,11 +314,15 @@ public class KwcContractTradeService {
             contractTradeDetailResVo.setGoodsInfo(tradeGoodsInfoResVoList);
         }
 
+        //合同文件
         List<String> fileList = new ArrayList<>();
         fileList.add(kwcContractTrade.getSigningUrl());
         fileList.add(kwcContractTrade.getSignedUrl());
         contractTradeDetailResVo.setContractFile(fileList.stream().filter(StringUtils::isNotBlank).toList());
 
+        //流程记录
+        contractTradeDetailResVo.setTrackInfo(kwcContractTradeTrackService.queryContractTrackByContractId(kwcContractTrade.getId()));
+
         List<KwcContractTrade> supplementList = getSupplementList(id);
         if (CollectionUtils.isNotEmpty(supplementList)) {
             List<ContractTradeDetailResVo> child = new ArrayList<>();

+ 76 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeTrackService.java

@@ -1,20 +1,26 @@
 package com.sckw.contract.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.contract.dao.KwcContractTradeUnitMapper;
+import com.sckw.contract.model.entity.*;
+import com.sckw.contract.model.vo.res.ContractTrackResVo;
 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.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
+import java.util.*;
 
 /**
 * @author PC
@@ -27,6 +33,14 @@ public class KwcContractTradeTrackService {
     @Autowired
     private KwcContractTradeTrackMapper kwcContractTradeTrackMapper;
 
+    @Autowired
+    private KwcContractTradeMapper kwcContractTradeMapper;
+
+    @Autowired
+    private KwcContractTradeUnitMapper kwcContractTradeUnitMapper;
+
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
 
     public void saveContractTradeTrack(Long contractId) {
         Date date = new Date();
@@ -45,6 +59,65 @@ public class KwcContractTradeTrackService {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
     }
+
+    /**
+     * @param id 合同id
+     * @return List<ContractTrackResVo>
+     * @desc: 根据合同id查流程
+     * @author: czh
+     * @date: 2023/7/31
+     */
+    public List<ContractTrackResVo> queryContractTrackByContractId(Long id) {
+        LambdaQueryWrapper<KwcContractTradeTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwcContractTradeTrack::getContractId, id).
+                eq(KwcContractTradeTrack::getDelFlag, Global.NO).
+                orderByDesc(KwcContractTradeTrack::getCreateTime);
+        List<KwcContractTradeTrack> kwcContractTradeTracks = kwcContractTradeTrackMapper.selectList(wrapper);
+        if (CollectionUtils.isEmpty(kwcContractTradeTracks)) {
+            return Collections.emptyList();
+        }
+
+        KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
+        if (Objects.isNull(kwcContractTrade)) {
+            return Collections.emptyList();
+        }
+
+        Long entId = kwcContractTrade.getEntId();
+        LambdaQueryWrapper<KwcContractTradeUnit> wrapper2 = new LambdaQueryWrapper<>();
+        wrapper2.eq(KwcContractTradeUnit::getContractId, id).
+                eq(KwcContractTradeUnit::getDelFlag, Global.NO);
+        List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitMapper.selectList(wrapper2);
+        if (CollectionUtils.isEmpty(kwcContractTradeUnits)) {
+            return Collections.emptyList();
+        }
+
+        String initiateEntName = "";
+        String targetEntName  = "";
+        for (KwcContractTradeUnit kwcContractTradeUnit : kwcContractTradeUnits) {
+            if (kwcContractTradeUnit.getEntId().equals(entId)) {
+                initiateEntName = kwcContractTradeUnit.getFirmName();
+            } else {
+                targetEntName = kwcContractTradeUnit.getFirmName();
+            }
+        }
+
+        List<ContractTrackResVo> list = new ArrayList<>();
+        for (KwcContractTradeTrack item : kwcContractTradeTracks) {
+            ContractTrackResVo contractTrackResVo = new ContractTrackResVo();
+            contractTrackResVo.setCreateTime(item.getCreateTime());
+            contractTrackResVo.setTrackName(ContractTrackEnum.getName(item.getType()).getName());
+            if (ContractTrackEnum.SIGNING.getCode() == item.getType()) {
+                contractTrackResVo.setEntName(initiateEntName);
+            } else if (ContractTrackEnum.SIGNED.getCode() == item.getType()) {
+                contractTrackResVo.setEntName(targetEntName);
+            } else {
+                UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(item.getCreateBy());
+                contractTrackResVo.setEntName(userCacheResDto.getEntInfo().getFirmName());
+            }
+            list.add(contractTrackResVo);
+        }
+        return list;
+    }
 }