Просмотр исходного кода

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

lengfaqiang 2 лет назад
Родитель
Сommit
4b5140b87b
17 измененных файлов с 242 добавлено и 112 удалено
  1. 2 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/AddressDefaultTypeEnum.java
  2. 9 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java
  3. 3 6
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  4. 2 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  5. 3 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/entity/KwcContractLogistics.java
  6. 3 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticsBaseInfoReqVo.java
  7. 5 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticsGoodsInfoReqVo.java
  8. 22 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsBaseInfoResVo.java
  9. 11 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeBaseInfoResVo.java
  10. 26 36
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  11. 72 48
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  12. 16 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeUnitService.java
  13. 2 3
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  14. 2 3
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml
  15. 1 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/BindDefaultReqVo.java
  16. 58 11
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  17. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

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

@@ -10,6 +10,8 @@ import lombok.Getter;
 @Getter
 public enum AddressDefaultTypeEnum {
 
+    //普通
+    NO(0, "普通"),
     //装货地址
     SHIPMENT(1, "装货"),
     //收货地址

+ 9 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java

@@ -57,6 +57,15 @@ public interface RemoteSystemService {
      */
     List<SysDictGroupResDto> queryDictGroupByType(String type);
 
+    /**
+     * @param type 字典类型
+     * @return SysDictResDto
+     * @desc: 根据字典类型和key查最底层的数据
+     * @author: czh
+     * @date: 2023/7/7
+     */
+    List<SysDictResDto> queryDictBottom(String type, String value);
+
     /**
      * @param type 字典类型,value key
      * @return SysDictGroupResDto

+ 3 - 6
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java

@@ -1,9 +1,6 @@
 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.IdsReqVo;
-import com.sckw.contract.model.vo.req.QueryListReqVo;
+import com.sckw.contract.model.vo.req.*;
 import com.sckw.contract.service.*;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.enums.EntTypeEnum;
@@ -113,8 +110,8 @@ public class KwcCheckedController {
      * @return HttpResult
      */
     @PostMapping("complete")
-    public HttpResult complete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
-        kwcContractLogisticsService.complete(reqVo.getIds());
+    public HttpResult complete(@Valid @RequestBody CompleteReqVo reqVo) throws SystemException {
+        kwcContractLogisticsService.complete(reqVo);
         return HttpResult.ok();
     }
 

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

@@ -112,8 +112,8 @@ public class KwcContractSaleController {
      * @return HttpResult
      */
     @PostMapping("complete")
-    public HttpResult complete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
-        kwcContractTradeService.complete(reqVo.getIds());
+    public HttpResult complete(@Valid @RequestBody CompleteReqVo reqVo) throws SystemException {
+        kwcContractTradeService.complete(reqVo);
         return HttpResult.ok();
     }
 

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

@@ -1,5 +1,7 @@
 package com.sckw.contract.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
@@ -58,6 +60,7 @@ public class KwcContractLogistics implements Serializable {
     /**
      * 结束日期
      */
+    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     private Date endTime;
 
     /**

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

@@ -1,7 +1,9 @@
 package com.sckw.contract.model.vo.req;
 
+import com.sckw.core.utils.RegularUtils;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -30,6 +32,7 @@ public class LogisticsBaseInfoReqVo implements Serializable {
      * 承运单位联系电话
      */
     @NotBlank(message = "承运单位联系电话不能为空")
+    @Pattern(regexp = RegularUtils.PHONE_REG, message = "password只能是数字")
     private String carrierPhone;
 
     /**

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

@@ -1,6 +1,8 @@
 package com.sckw.contract.model.vo.req;
 
+import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
 import java.io.Serial;
@@ -27,11 +29,13 @@ public class LogisticsGoodsInfoReqVo implements Serializable {
     /**
      * 商品名
      */
+    @Size(max = 50, message = "商品名称超长")
     private String goodsName;
 
     /**
      * 运量
      */
+    @DecimalMin(value = "0", message = "运量不能小于0")
     private BigDecimal amount;
 
     /**
@@ -62,7 +66,7 @@ public class LogisticsGoodsInfoReqVo implements Serializable {
     /**
      * 扣亏货值
      */
-    private BigDecimal deficit;
+    private BigDecimal deficitPrice;
 
     /**
      * 字典id  扣亏货值

+ 22 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/LogisticsBaseInfoResVo.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -32,6 +33,11 @@ public class LogisticsBaseInfoResVo implements Serializable {
      */
     private String carrierPhone;
 
+    /**
+     * 计费方式
+     */
+    private String charging;
+
     /**
      * 计费方式
      */
@@ -65,7 +71,12 @@ public class LogisticsBaseInfoResVo implements Serializable {
     /**
      * 终止时间
      */
-    private Date endTime;
+    private String endTime;
+
+    /**
+     * 签约方式
+     */
+    private String signingWay;
 
     /**
      * 签约方式
@@ -77,4 +88,14 @@ public class LogisticsBaseInfoResVo implements Serializable {
      */
     private Date startTime;
 
+    /**
+     * 总量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 已履约量
+     */
+    private BigDecimal performedAmount;
+
 }

+ 11 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeBaseInfoResVo.java

@@ -30,7 +30,7 @@ public class TradeBaseInfoResVo implements Serializable {
     /**
      * 终止时间
      */
-    private Date endTime;
+    private String endTime;
 
     /**
      * 供应单位
@@ -67,6 +67,11 @@ public class TradeBaseInfoResVo implements Serializable {
      */
     private String signingWayName;
 
+    /**
+     * 签约方式
+     */
+    private String signingWay;
+
     /**
      * 生效时间
      */
@@ -77,4 +82,9 @@ public class TradeBaseInfoResVo implements Serializable {
      */
     private String tradingName;
 
+    /**
+     * 付款方式
+     */
+    private String trading;
+
 }

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

@@ -16,10 +16,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.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.req.*;
 import com.sckw.contract.model.vo.res.*;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
@@ -30,10 +27,7 @@ import com.sckw.core.model.enums.CooperateTypeEnum;
 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.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.excel.utils.EasyExcelUtil;
@@ -92,9 +86,9 @@ public class KwcContractLogisticsService {
         }
 
         LogisticsBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
-
+        List<LogisticsGoodsInfoReqVo> goodsInfo = reqVo.getGoodsInfo();
         //创建合同
-        KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
+        KwcContractLogistics kwcContractLogistics = getKwcContractLogistics(baseInfo, goodsInfo, reqVo.getRemark(), reqVo.getPId());
         long contactId = new IdWorker(1L).nextId();
         kwcContractLogistics.setId(contactId);
         kwcContractLogistics.setStatus(ContractStatusEnum.SAVE.getCode());
@@ -104,11 +98,10 @@ public class KwcContractLogisticsService {
         }
 
         //保存交易合同商品信息
-        kwcContractLogisticsGoodsService.saveContractLogisticsGoods(kwcContractLogistics.getId(), reqVo.getGoodsInfo());
+        kwcContractLogisticsGoodsService.saveContractLogisticsGoods(kwcContractLogistics.getId(), goodsInfo);
 
         //存单位信息
         kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), baseInfo);
-
         return contactId;
     }
 
@@ -198,11 +191,15 @@ public class KwcContractLogisticsService {
             }
 
             logisticsBaseInfoResVo.setChargingName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), String.valueOf(kwcContractLogistics.getCharging())));
+            logisticsBaseInfoResVo.setCharging(String.valueOf(kwcContractLogistics.getCharging()));
             logisticsBaseInfoResVo.setContractCode(kwcContractLogistics.getContractNo());
             logisticsBaseInfoResVo.setContractName(kwcContractLogistics.getName());
-            logisticsBaseInfoResVo.setEndTime(kwcContractLogistics.getEndTime());
+            logisticsBaseInfoResVo.setEndTime(Objects.isNull(kwcContractLogistics.getEndTime()) ? Global.EMPTY_STRING : DateUtils.format(kwcContractLogistics.getEndTime()));
             logisticsBaseInfoResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractLogistics.getSigningWay())));
+            logisticsBaseInfoResVo.setSigningWay(String.valueOf(kwcContractLogistics.getSigningWay()));
             logisticsBaseInfoResVo.setStartTime(kwcContractLogistics.getStartTime());
+            logisticsBaseInfoResVo.setAmount(kwcContractLogistics.getAmount());
+            logisticsBaseInfoResVo.setPerformedAmount(kwcContractLogistics.getPerformedAmount());
             contractLogisticsDetailResVo.setBaseInfo(logisticsBaseInfoResVo);
         }
 
@@ -274,6 +271,7 @@ public class KwcContractLogisticsService {
             }
             contractLogisticsDetailResVo.setChild(child);
         }
+        contractLogisticsDetailResVo.setRemark(kwcContractLogistics.getRemark());
         return contractLogisticsDetailResVo;
     }
 
@@ -376,31 +374,29 @@ public class KwcContractLogisticsService {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }
         }
-        kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), reqVo.getBaseInfo());
+        kwcContractLogisticsUnitService.saveContractLogisticsUnit(contractId, reqVo.getBaseInfo());
     }
 
     /**
      * @desc: 手动完结
-     * @param: reqVo ids
+     * @param: reqVo
      * @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<KwcContractLogistics> kwcContractLogistics = kwcContractLogisticsMapper.selectBatchIds(contractIdList);
-        Date date = new Date();
-        kwcContractLogistics.forEach(item -> {
-            if (!item.getStatus().equals(ContractStatusEnum.SIGNED.getCode())) {
-                throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_028);
-            }
-            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);
-            }
-        });
+    public void complete(CompleteReqVo reqVo) {
+        KwcContractLogistics kwcContractLogistic = kwcContractLogisticsMapper.selectById(reqVo.getId());
+        if (!kwcContractLogistic.getStatus().equals(ContractStatusEnum.SIGNED.getCode())) {
+            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_028);
+        }
+        kwcContractLogistic.setStatus(ContractStatusEnum.COMPLETE.getCode());
+        kwcContractLogistic.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractLogistic.setUpdateTime(new Date());
+        kwcContractLogistic.setPerformedAmount(reqVo.getPerformedAmount());
+        kwcContractLogistic.setRemark(reqVo.getRemark());
+        if (kwcContractLogisticsMapper.updateById(kwcContractLogistic) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
     }
 
 
@@ -459,13 +455,11 @@ public class KwcContractLogisticsService {
     private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
         Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
         List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
-        List<Long> idList = queryListResDtos.stream().map(QueryListResDto::getId).toList();
         if (CollectionUtils.isNotEmpty(initiateByList)) {
             longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(initiateByList);
         }
 
         List<QueryListResVo> list = new ArrayList<>();
-//        Map<Long, BigDecimal> amountByIdList = kwcContractLogisticsGoodsService.getAmountByIdList(idList);
         for (QueryListResDto queryListResDto : queryListResDtos) {
             QueryListResVo queryListResVo = new QueryListResVo();
             BeanUtils.copyProperties(queryListResDto, queryListResVo);
@@ -481,10 +475,6 @@ public class KwcContractLogisticsService {
             queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
             queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
             queryListResVo.setPerformedAmount(queryListResDto.getPerformedAmount());
-//            BigDecimal amount = amountByIdList.get(queryListResDto.getId());
-//            if (Objects.nonNull(amount)) {
-//                queryListResVo.setAmount(amount);
-//            }
             queryListResVo.setAmount(queryListResDto.getAmount());
             list.add(queryListResVo);
         }

+ 72 - 48
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -1,4 +1,5 @@
 package com.sckw.contract.service;
+
 import java.io.IOException;
 import java.util.Date;
 
@@ -20,10 +21,7 @@ import com.sckw.core.model.enums.ContractStatusEnum;
 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.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.excel.utils.EasyExcelUtil;
@@ -37,6 +35,7 @@ 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.*;
 import java.util.stream.Collectors;
@@ -44,10 +43,10 @@ import java.util.stream.Collectors;
 import com.sckw.contract.dao.KwcContractTradeMapper;
 
 /**
-* @author PC
-* @description 针对表【kwc_contract_trade(交易合同(采购合同/销售合同))】的数据库操作Service实现
-* @createDate 2023-07-13 13:36:19
-*/
+ * @author PC
+ * @description 针对表【kwc_contract_trade(交易合同(采购合同/销售合同))】的数据库操作Service实现
+ * @createDate 2023-07-13 13:36:19
+ */
 @Service
 @Slf4j
 public class KwcContractTradeService {
@@ -72,11 +71,11 @@ public class KwcContractTradeService {
     private GoodsInfoService goodsInfoService;
 
     /**
+     * @return PageResult
      * @desc: 分页查询
-     * @param:  reqVo
+     * @param: reqVo
      * @author: sky
      * @date 2023/7/17
-     * @return PageResult
      */
     public PageResult queryListByPage(QueryListReqVo reqVo) {
         PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
@@ -121,8 +120,8 @@ public class KwcContractTradeService {
             }
             queryListResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(queryListResDto.getTrading())));
             queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
-
-            // todo
+            queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
+            queryListResVo.setAmount(queryListResDto.getAmount());
             queryListResVo.setPerformedAmount(new BigDecimal("0"));
             list.add(queryListResVo);
         }
@@ -131,11 +130,17 @@ public class KwcContractTradeService {
 
     @Transactional(rollbackFor = {})
     public Long addTradeContract(ContractTradeReqVo reqVo) {
+        Long id = reqVo.getId();
+        //不为空时是修改
+        if (Objects.nonNull(id)) {
+            update(reqVo);
+            return id;
+        }
+
         TradeBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
         List<TradeGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
-        checkParams(reqVo,baseInfo);
         //创建合同
-        KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
+        KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
         long contactId = new IdWorker(1L).nextId();
         kwcContractTrade.setId(contactId);
         kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
@@ -159,7 +164,7 @@ public class KwcContractTradeService {
      * @author: czh
      * @date: 2023/7/20
      */
-    public KwcContractTrade getKwcContractTrade(TradeBaseInfoReqVo baseInfo, String remark, Long pid) {
+    public KwcContractTrade getKwcContractTrade(TradeBaseInfoReqVo baseInfo, List<TradeGoodsInfoReqVo> goodsInfo, String remark, Long pid) {
         Date date = new Date();
         KwcContractTrade kwcContractTrade = new KwcContractTrade();
         kwcContractTrade.setEntId(LoginUserHolder.getEntId());
@@ -177,6 +182,16 @@ public class KwcContractTradeService {
         kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
         kwcContractTrade.setUpdateTime(date);
         kwcContractTrade.setDelFlag(Global.NO);
+
+        BigDecimal amountTotal = new BigDecimal(Global.NUMERICAL_ZERO);
+        if (CollectionUtils.isNotEmpty(goodsInfo)) {
+            for (TradeGoodsInfoReqVo tradeGoodsInfoReqVo : goodsInfo) {
+                if (Objects.nonNull(tradeGoodsInfoReqVo.getAmount())) {
+                    amountTotal = amountTotal.add(tradeGoodsInfoReqVo.getAmount());
+                }
+            }
+        }
+        kwcContractTrade.setAmount(amountTotal);
         return kwcContractTrade;
     }
 
@@ -188,8 +203,8 @@ public class KwcContractTradeService {
      */
     public void supplement(ContractTradeReqVo reqVo) {
         Long id = reqVo.getPId();
-        KwcContractTrade KwcContractTrade = kwcContractTradeMapper.selectById(id);
-        if (Objects.isNull(KwcContractTrade)) {
+        KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
+        if (Objects.isNull(kwcContractTrade)) {
             throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
         }
 
@@ -198,11 +213,11 @@ public class KwcContractTradeService {
 
 
     /**
+     * @param id 合同id
+     * @return ContractTradeDetailResVo
      * @desc: 合同详情
-     * @param  id 合同id
      * @author: czh
      * @date 2023/7/16
-     * @return ContractTradeDetailResVo
      */
     public ContractTradeDetailResVo detail(Long id) {
         //基础信息
@@ -227,10 +242,12 @@ public class KwcContractTradeService {
         TradeBaseInfoResVo tradeBaseInfoResVo = new TradeBaseInfoResVo();
         tradeBaseInfoResVo.setContractCode(kwcContractTrade.getContractNo());
         tradeBaseInfoResVo.setContractName(kwcContractTrade.getName());
-        tradeBaseInfoResVo.setEndTime(kwcContractTrade.getEndTime());
+        tradeBaseInfoResVo.setEndTime(Objects.isNull(kwcContractTrade.getEndTime()) ? Global.EMPTY_STRING : DateUtils.format(kwcContractTrade.getEndTime()));
         tradeBaseInfoResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractTrade.getSigningWay())));
+        tradeBaseInfoResVo.setSigningWay(String.valueOf(kwcContractTrade.getSigningWay()));
         tradeBaseInfoResVo.setStartTime(kwcContractTrade.getStartTime());
         tradeBaseInfoResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(kwcContractTrade.getTrading())));
+        tradeBaseInfoResVo.setTrading(String.valueOf(kwcContractTrade.getTrading()));
 
         ContractTradeDetailResVo contractTradeDetailResVo = new ContractTradeDetailResVo();
         List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(id);
@@ -277,7 +294,7 @@ public class KwcContractTradeService {
                 }
 
                 SysDictResDto sysDictResDto = stringSysDictResDtoMap.get(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + kwcContractTradeGoods.getUnit());
-                if(Objects.nonNull(sysDictResDto)) {
+                if (Objects.nonNull(sysDictResDto)) {
                     tradeGoodsInfoResVo.setUnitName(sysDictResDto.getLabel());
                 }
 
@@ -313,8 +330,8 @@ public class KwcContractTradeService {
 
 
     /**
-     * @desc: 发起签约
      * @param reqVo id
+     * @desc: 发起签约
      * @author: czh
      * @date 2023/7/16
      */
@@ -322,7 +339,7 @@ public class KwcContractTradeService {
         Long id = reqVo.getId();
         if (Objects.isNull(id)) {
             //创建合同
-            KwcContractTrade kwcContractLogistics = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
+            KwcContractTrade kwcContractLogistics = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
             id = new IdWorker(1L).nextId();
             kwcContractLogistics.setId(id);
             kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
@@ -351,17 +368,17 @@ public class KwcContractTradeService {
     @Transactional(rollbackFor = {})
     public void update(ContractTradeReqVo reqVo) {
         Long contractId = reqVo.getId();
+        Date date = new Date();
         KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(contractId);
         if (Objects.isNull(kwcContractTrade)) {
             throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
         }
-        checkParams(reqVo,reqVo.getBaseInfo());
-        KwcContractTrade param = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
+        KwcContractTrade param = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
         param.setId(contractId);
         param.setSigningUrl(reqVo.getContractFile());
         param.setStatus(ContractStatusEnum.SAVE.getCode());
         param.setUpdateBy(LoginUserHolder.getUserId());
-        param.setUpdateTime(new Date());
+        param.setUpdateTime(date);
         if (kwcContractTradeMapper.updateById(param) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }
@@ -370,7 +387,6 @@ public class KwcContractTradeService {
         //保存交易合同商品信息-先把以前的删除
         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());
@@ -382,6 +398,21 @@ public class KwcContractTradeService {
             }
         }
         kwcContractTradeGoodsService.saveContractTradeGoods(kwcContractTrade.getId(), reqVo.getGoodsInfo());
+
+        //保存单位信息-先把以前的删除
+        List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(contractId);
+        if (CollectionUtils.isNotEmpty(kwcContractTradeUnits)) {
+            kwcContractTradeUnits.forEach(item -> {
+                item.setDelFlag(Global.YES);
+                item.setUpdateBy(LoginUserHolder.getUserId());
+                item.setUpdateTime(date);
+            });
+
+            if (kwcContractTradeUnitService.updateBatch(kwcContractTradeUnits) != kwcContractTradeUnits.size()) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        }
+        kwcContractTradeUnitService.saveContractTradeUnit(contractId, reqVo.getBaseInfo());
     }
 
 
@@ -392,18 +423,19 @@ public class KwcContractTradeService {
      * @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);
-            }
-        });
+    public void complete(CompleteReqVo reqVo) {
+        KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(reqVo.getId());
+        if (!kwcContractTrade.getStatus().equals(ContractStatusEnum.SIGNED.getCode())) {
+            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_028);
+        }
+        kwcContractTrade.setStatus(ContractStatusEnum.COMPLETE.getCode());
+        kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
+        kwcContractTrade.setUpdateTime(new Date());
+        kwcContractTrade.setPerformedAmount(reqVo.getPerformedAmount());
+        kwcContractTrade.setRemark(reqVo.getRemark());
+        if (kwcContractTradeMapper.updateById(kwcContractTrade) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
     }
 
 
@@ -432,8 +464,8 @@ public class KwcContractTradeService {
     }
 
     /**
-     * @desc: 导出
      * @param reqVo 查询入参
+     * @desc: 导出
      * @author: czh
      * @date 2023/7/17
      */
@@ -515,14 +547,6 @@ public class KwcContractTradeService {
         return list;
     }
 
-    private void checkParams(ContractTradeReqVo param,TradeBaseInfoReqVo baseInfo) {
-        if (Objects.isNull(baseInfo.getContractCode()) && baseInfo.getContractCode().length() > 20) {
-            throw new BusinessException("合同编号不能为空且最长20字符!");
-        }
-        if (Objects.isNull(baseInfo.getContractName()) && baseInfo.getContractName().length() > 20) {
-            throw new BusinessException("合同名称不能为空且最长20字符!");
-        }
-    }
 }
 
 

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

@@ -105,6 +105,22 @@ public class KwcContractTradeUnitService {
         wrapper.eq(KwcContractTradeUnit::getStatus, Global.NO);
         return kwcContractTradeUnitMapper.selectList(wrapper);
     }
+
+    /**
+     * @return 修改个数
+     * @desc: 修改
+     * @param: list 实体类
+     * @author: czh
+     * @date 2023/7/17
+     */
+    public int updateBatch(List<KwcContractTradeUnit> list) {
+        int count = 0;
+        for (KwcContractTradeUnit kwcContractTradeUnit : list) {
+            count += kwcContractTradeUnitMapper.updateById(kwcContractTradeUnit);
+        }
+        return count;
+    }
+
 }
 
 

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

@@ -62,12 +62,11 @@
                 e.firm_name targetEntName,
                 a.performed_amount performedAmount
           from kwc_contract_logistics a
-          left join kwc_contract_logistics_unit b on a.id = b.contract_id and b.unit_type = #{entType}
+          left join kwc_contract_logistics_unit b on a.id = b.contract_id and b.unit_type = #{entType} and b.del_flag = 0
           left join kwc_contract_logistics_track c on a.id = c.contract_id and c.del_flag = 0 and c.type = 1
           left join kwc_contract_logistics_track d on a.id = d.contract_id and d.del_flag = 0 and d.type = 0
-          left join kwc_contract_logistics_unit e on a.id = e.contract_id and e.unit_type != #{entType}
+          left join kwc_contract_logistics_unit e on a.id = e.contract_id and e.unit_type != #{entType} and e.del_flag = 0
         where a.del_flag = 0
-          and b.del_flag = 0
           and b.ent_id = #{entId}
           <if test="startTime != null">
               and a.create_time >= #{startTime}

+ 2 - 3
sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractTradeMapper.xml

@@ -60,12 +60,11 @@
                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_unit b on a.id = b.contract_id and b.unit_type = #{entType} and b.del_flag = 0
           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}
+          left join kwc_contract_trade_unit e on a.id = b.contract_id and b.unit_type != #{entType} and e.del_flag = 0
          where a.del_flag = 0
-           and b.del_flag = 0
            and b.ent_id = #{entId}
         <if test="startTime != null">
             and a.create_time >= #{startTime}

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

@@ -28,4 +28,5 @@ public class BindDefaultReqVo implements Serializable {
      */
     @NotNull(message = "地址id不能为空")
     private Long id;
+
 }

+ 58 - 11
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java

@@ -77,6 +77,7 @@ public class KwmAddressService {
         LambdaQueryWrapper<KwmAddress> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Objects.nonNull(reqVo.getCityCode()), KwmAddress::getCityCode, reqVo.getCityCode()).
                 eq(Objects.nonNull(reqVo.getType()), KwmAddress::getType, reqVo.getType()).
+                eq(KwmAddress::getEntId, LoginUserHolder.getEntId()).
                 eq(KwmAddress::getDelFlag, Global.NO).
                 and(StringUtils.isNotBlank(reqVo.getKeywords()),
                         wq -> wq.like(KwmAddress::getDetailAddress, reqVo.getKeywords()).or().
@@ -98,11 +99,11 @@ public class KwmAddressService {
 
 
     /**
+     * @return AddressQueryResVo
      * @desc: 转换成vo
      * @param: kwmAddresses 实体
      * @author: czh
      * @date 2023/7/18
-     * @return AddressQueryResVo
      */
     private List<AddressQueryResVo> getAddressQueryResVo(List<KwmAddress> kwmAddresses) {
         List<AddressQueryResVo> list = new ArrayList<>();
@@ -149,6 +150,7 @@ public class KwmAddressService {
      * @author: czh
      * @date: 2023/7/12
      */
+    @Transactional(rollbackFor = {})
     public void bindDefault(BindDefaultReqVo reqVo) {
         KwmAddress kwmAddress = kwmAddressMapper.selectById(reqVo.getId());
         if (Objects.isNull(kwmAddress)) {
@@ -156,21 +158,64 @@ public class KwmAddressService {
         }
 
         Long userId = LoginUserHolder.getUserId();
+        Long entId = kwmAddress.getEntId();
         Date date = new Date();
         Integer defaultType = kwmAddress.getDefaultType();
         Integer setDefaultType = reqVo.getDefaultType();
-        kwmAddress.setUpdateBy(userId);
-        kwmAddress.setUpdateTime(date);
-        if (Objects.isNull(defaultType)) {
-            kwmAddress.setDefaultType(setDefaultType);
-        } else {
-            //不能重复
+
+        //相等则取消
+        if (!defaultType.equals(AddressDefaultTypeEnum.NO.getCode())) {
             if (defaultType.equals(setDefaultType)) {
-                throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_021);
+                kwmAddress.setDefaultType(AddressDefaultTypeEnum.NO.getCode());
+            } else {
+                kwmAddress.setDefaultType(AddressDefaultTypeEnum.BOTH.getCode());
             }
-            kwmAddress.setDefaultType(AddressDefaultTypeEnum.BOTH.getCode());
+
         }
 
+        //当前是收货也是卸货
+        if (defaultType.equals(AddressDefaultTypeEnum.BOTH.getCode())) {
+            if (setDefaultType.equals(AddressDefaultTypeEnum.SHIPMENT.getCode())) {
+                kwmAddress.setDefaultType(AddressDefaultTypeEnum.TAKE.getCode());
+            }
+
+            if (setDefaultType.equals(AddressDefaultTypeEnum.TAKE.getCode())) {
+                kwmAddress.setDefaultType(AddressDefaultTypeEnum.SHIPMENT.getCode());
+            }
+        }
+
+        //当前是普通地址,需要把已设置的取消
+        if (defaultType.equals(AddressDefaultTypeEnum.NO.getCode())) {
+            LambdaQueryWrapper<KwmAddress> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.eq(KwmAddress::getEntId, entId).
+                               eq(KwmAddress::getDelFlag, Global.NO).
+                               and(wp -> wp.eq(KwmAddress::getDefaultType, setDefaultType).or().
+                                            eq(KwmAddress::getDefaultType, AddressDefaultTypeEnum.BOTH.getCode()));
+            List<KwmAddress> kwmAddressList = kwmAddressMapper.selectList(lambdaQueryWrapper);
+            if (CollectionUtils.isNotEmpty(kwmAddressList)) {
+                KwmAddress kwmAddress1 = kwmAddressList.get(0);
+                if (kwmAddress1.getDefaultType().equals(AddressDefaultTypeEnum.BOTH.getCode())) {
+                    if (setDefaultType.equals(AddressDefaultTypeEnum.SHIPMENT.getCode())) {
+                        kwmAddress1.setDefaultType(AddressDefaultTypeEnum.TAKE.getCode());
+                    }
+
+                    if (setDefaultType.equals(AddressDefaultTypeEnum.TAKE.getCode())) {
+                        kwmAddress1.setDefaultType(AddressDefaultTypeEnum.SHIPMENT.getCode());
+                    }
+                } else {
+                    kwmAddress1.setDefaultType(AddressDefaultTypeEnum.NO.getCode());
+                }
+                kwmAddress1.setUpdateBy(userId);
+                kwmAddress1.setUpdateTime(date);
+                if (kwmAddressMapper.updateById(kwmAddress1) <= 0) {
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+                }
+            }
+            kwmAddress.setDefaultType(setDefaultType);
+        }
+
+        kwmAddress.setUpdateBy(userId);
+        kwmAddress.setUpdateTime(date);
         if (kwmAddressMapper.updateById(kwmAddress) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }
@@ -210,11 +255,13 @@ public class KwmAddressService {
         Long userId = LoginUserHolder.getUserId();
         Date date = new Date();
         kwmAddress.setDelFlag(Global.NO);
+        kwmAddress.setEntId(LoginUserHolder.getEntId());
         kwmAddress.setStatus(Global.NO);
         kwmAddress.setCreateBy(userId);
         kwmAddress.setUpdateBy(userId);
         kwmAddress.setCreateTime(date);
         kwmAddress.setUpdateTime(date);
+        kwmAddress.setDefaultType(AddressDefaultTypeEnum.NO.getCode());
         kwmAddress.setId(new IdWorker(1L).nextId());
         if (kwmAddressMapper.insert(kwmAddress) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
@@ -272,11 +319,11 @@ public class KwmAddressService {
     }
 
     /**
+     * @return AddressQueryResVo
      * @desc: 查企业下的地址
      * @param: reqVo 企业id
      * @author: czh
      * @date 2023/7/18
-     * @return AddressQueryResVo
      */
     public List<AddressQueryResVo> queryByEnt(QueryByEntReqVo reqVo) {
         LambdaQueryWrapper<KwmAddress> wrapper = new LambdaQueryWrapper<>();
@@ -285,7 +332,7 @@ public class KwmAddressService {
 
         if (StringUtils.isNotBlank(reqVo.getCityName())) {
             wrapper.and(wp -> wp.like(KwmAddress::getCityName, reqVo.getCityName()).or().
-                                 like(KwmAddress::getDetailAddress, reqVo.getCityName()));
+                    like(KwmAddress::getDetailAddress, reqVo.getCityName()));
         }
         List<KwmAddress> kwmAddresses = kwmAddressMapper.selectList(wrapper);
         if (CollectionUtils.isEmpty(kwmAddresses)) {

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -162,6 +162,11 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
         return list;
     }
 
+    @Override
+    public List<SysDictResDto> queryDictBottom(String type, String value) {
+        return null;
+    }
+
     /**
      * @param type 字典类型,value key
      * @return SysDictGroupResDto