15928045575 преди 2 години
родител
ревизия
2c1f0da85d

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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