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

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

xucaiqin 2 лет назад
Родитель
Сommit
f8a1f27c64

+ 10 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -1,6 +1,7 @@
 package com.sckw.order.api.dubbo;
 
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.order.api.model.ContractSignCompletedParam;
 import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.order.api.model.UpdateOrderAmountParam;
 import com.sckw.order.api.model.UpdateOrderStatusParam;
@@ -38,4 +39,13 @@ public interface TradeOrderInfoService {
      * @return: com.sckw.core.web.response.HttpResult
      */
     HttpResult updateOrderAmount(UpdateOrderAmountParam param);
+
+    /**
+     * @desc: 合同签约完成
+     * @author: yzc
+     * @date: 2023-07-20 11:42
+     * @Param param:
+     * @return: void
+     */
+    void contractSignCompleted(ContractSignCompletedParam param);
 }

+ 37 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/ContractSignCompletedParam.java

@@ -0,0 +1,37 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 合同完成签约请求参数
+ * @author: yzc
+ * @date: 2023-07-20 11:53
+ */
+@Getter
+@Setter
+@ToString
+public class ContractSignCompletedParam implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -5928367556124042097L;
+
+    /**
+     * 合同id
+     */
+    private Long contractId;
+
+
+    /**
+     * 更新用户id
+     */
+    private Long updateBy;
+
+    /**
+     * 更新者姓名
+     */
+    private String updateByName;
+}

+ 2 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderAddressMapper.java

@@ -3,6 +3,7 @@ package com.sckw.order.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.order.model.KwoTradeOrderAddress;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -21,5 +22,5 @@ public interface KwoTradeOrderAddressMapper extends BaseMapper<KwoTradeOrderAddr
      * @Param list:
      * @return: void
      */
-    void insertBatch(List<KwoTradeOrderAddress> list);
+    void insertBatch(@Param(value = "list") List<KwoTradeOrderAddress> list);
 }

+ 11 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderTrackMapper.java

@@ -3,6 +3,9 @@ package com.sckw.order.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.order.model.KwoTradeOrderTrack;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @desc: 交易订单状态记录信息mapper
@@ -12,4 +15,12 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KwoTradeOrderTrackMapper extends BaseMapper<KwoTradeOrderTrack> {
 
+    /**
+     * @desc: 批量插入
+     * @author: yzc
+     * @date: 2023-07-20 14:22
+     * @Param list:
+     * @return: void
+     */
+    void insertBatch(@Param(value = "list") List<KwoTradeOrderTrack> list);
 }

+ 2 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderUnitMapper.java

@@ -3,6 +3,7 @@ package com.sckw.order.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.order.model.KwoTradeOrderUnit;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -21,5 +22,5 @@ public interface KwoTradeOrderUnitMapper extends BaseMapper<KwoTradeOrderUnit> {
      * @Param list:
      * @return: void
      */
-    void insertBatch(List<KwoTradeOrderUnit> list);
+    void insertBatch(@Param(value = "list") List<KwoTradeOrderUnit> list);
 }

+ 47 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -1,16 +1,21 @@
 package com.sckw.order.dubbo;
 
 import com.alibaba.fastjson2.JSON;
+import com.google.common.collect.Lists;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.ContractSignCompletedParam;
 import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.order.api.model.UpdateOrderAmountParam;
 import com.sckw.order.api.model.UpdateOrderStatusParam;
 import com.sckw.order.model.KwoTradeOrder;
+import com.sckw.order.model.KwoTradeOrderContract;
 import com.sckw.order.model.KwoTradeOrderTrack;
+import com.sckw.order.serivce.KwoTradeOrderContractService;
 import com.sckw.order.serivce.KwoTradeOrderService;
 import com.sckw.order.serivce.KwoTradeOrderTrackService;
 import com.sckw.redis.constant.RedisConstant;
@@ -20,9 +25,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -40,6 +47,8 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     private StreamBridge streamBridge;
     @Autowired
     private KwoTradeOrderTrackService kwoTradeOrderTrackService;
+    @Autowired
+    private KwoTradeOrderContractService kwoTradeOrderContractService;
 
 
     @Override
@@ -48,6 +57,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrderStatus(UpdateOrderStatusParam param) {
         KwoTradeOrder order = kwoTradeOrderService.getById(param.getTOrderId());
         if (Objects.isNull(order)) {
@@ -82,6 +92,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrderAmount(UpdateOrderAmountParam param) {
         Long id = param.getTOrderId();
         Long updateBy = param.getUpdateBy();
@@ -129,6 +140,42 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         return HttpResult.ok();
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void contractSignCompleted(ContractSignCompletedParam param) {
+        Long contractId = param.getContractId();
+        Long updateBy = param.getUpdateBy();
+        List<KwoTradeOrderContract> contracts = kwoTradeOrderContractService.getByContractId(contractId);
+        if (CollectionUtils.isEmpty(contracts)) {
+            log.info("合同:{}无相关联待签约的贸易订单", contractId);
+            return;
+        }
+        List<Long> tOrderIds = contracts.stream().map(KwoTradeOrderContract::getTOrderId).toList();
+        List<KwoTradeOrder> orders = kwoTradeOrderService.getWaitSignByIds(tOrderIds);
+        if (CollectionUtils.isEmpty(orders)) {
+            log.info("合同:{}无相关联待签约的贸易订单", contractId);
+            return;
+        }
+        List<KwoTradeOrderTrack> tracks = Lists.newArrayList();
+        List<SckwTradeOrder> tradeOrders = Lists.newArrayList();
+        List<Long> ids = orders.stream().map(KwoTradeOrder::getId).toList();
+        kwoTradeOrderService.contractCompletedUpdate(ids, updateBy);
+        orders.forEach(e -> {
+            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+            track.setTOrderId(e.getId()).setTOrderNo(e.getTOrderNo()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
+                    .setCreateBy(updateBy).setUpdateBy(updateBy);
+            tracks.add(track);
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(e.getId()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
+                    .setUpdateBy(updateBy).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
+            tradeOrders.add(updateParam);
+        });
+        kwoTradeOrderTrackService.insertBatch(tracks);
+        tradeOrders.forEach(e -> {
+            saveMongoDb(3, e);
+        });
+    }
+
     /**
      * @desc: mq保存mongodb
      * @author: yzc

+ 15 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderContractService.java

@@ -3,6 +3,7 @@ package com.sckw.order.serivce;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.order.dao.KwoTradeOrderContractMapper;
 import com.sckw.order.model.KwoTradeOrderContract;
 import lombok.RequiredArgsConstructor;
@@ -74,4 +75,18 @@ public class KwoTradeOrderContractService {
                 .set(KwoTradeOrderContract::getDelFlag, Global.YES);
         kwoTradeOrderContractMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据合同id获取
+     * @author: yzc
+     * @date: 2023-07-20 11:47
+     * @Param contractId:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrderContract>
+     */
+    public List<KwoTradeOrderContract> getByContractId(Long contractId) {
+        LambdaQueryWrapper<KwoTradeOrderContract> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderContract::getContractId, contractId).eq(KwoTradeOrderContract::getDelFlag, Global.NO);
+        List<KwoTradeOrderContract> list = kwoTradeOrderContractMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
 }

+ 33 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -772,4 +772,37 @@ public class KwoTradeOrderService {
     public void updateById(KwoTradeOrder order) {
         kwoTradeOrderMapper.updateById(order);
     }
+
+
+    /**
+     * @desc: 根据订单ids获取待签约订单
+     * @author: yzc
+     * @date: 2023-07-20 14:10
+     * @Param tOrderIds:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrder>
+     */
+    public List<KwoTradeOrder> getWaitSignByIds(List<Long> tOrderIds) {
+        LambdaQueryWrapper<KwoTradeOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrder::getStatus, Integer.valueOf(DictEnum.TORDER_STATUS_3.getValue()))
+                .in(KwoTradeOrder::getId, tOrderIds).eq(KwoTradeOrder::getDelFlag, Global.NO);
+        List<KwoTradeOrder> list = kwoTradeOrderMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
+
+    /**
+     * @desc: 根据订单ids变更待签约订单为执行中
+     * @author: yzc
+     * @date: 2023-07-20 11:57
+     * @Param tOrderIds:
+     * @Param updateBy:
+     * @return: void
+     */
+    public void contractCompletedUpdate(List<Long> tOrderIds, Long updateBy) {
+        LambdaUpdateWrapper<KwoTradeOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(KwoTradeOrder::getId, tOrderIds).eq(KwoTradeOrder::getStatus, Integer.valueOf(DictEnum.TORDER_STATUS_3.getValue()))
+                .eq(KwoTradeOrder::getDelFlag, Global.NO).set(KwoTradeOrder::getUpdateBy, updateBy)
+                .set(KwoTradeOrder::getStatus, Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()));
+        kwoTradeOrderMapper.update(null, wrapper);
+    }
+
 }

+ 13 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderTrackService.java

@@ -8,6 +8,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @desc: 交易订单状态记录信息service
  * @author: yzc
@@ -45,4 +47,15 @@ public class KwoTradeOrderTrackService {
                 .eq(KwoTradeOrderTrack::getDelFlag, Global.NO).last("LIMIT 1");
         return kwoTradeOrderTrackMapper.selectOne(wrapper);
     }
+
+    /**
+     * @desc: 批量插入
+     * @author: yzc
+     * @date: 2023-07-20 14:21
+     * @Param tracks:
+     * @return: void
+     */
+    public void insertBatch(List<KwoTradeOrderTrack> tracks) {
+        kwoTradeOrderTrackMapper.insertBatch(tracks);
+    }
 }

+ 35 - 0
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderTrackMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sckw.order.dao.KwoTradeOrderTrackMapper">
+
+    <insert id="insertBatch">
+        insert into kwo_trade_order_track
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            id,
+            t_order_id,
+            t_order_no,
+            remark,
+            status,
+            create_by,
+            create_time,
+            update_by,
+            update_time,
+            del_flag
+        </trim>
+        values
+        <foreach collection="list" item="item" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                #{item.id,jdbcType=BIGINT},
+                #{item.tOrderId,jdbcType=BIGINT},
+                #{item.tOrderNo,jdbcType=VARCHAR},
+                #{item.remark,jdbcType=VARCHAR},
+                #{item.status,jdbcType=INTEGER},
+                #{item.createBy,jdbcType=BIGINT},
+                #{item.createTime,jdbcType=TIMESTAMP},
+                #{item.updateBy,jdbcType=BIGINT},
+                #{item.updateTime,jdbcType=TIMESTAMP},
+                #{item.delFlag,jdbcType=INTEGER}
+            </trim>
+        </foreach>
+    </insert>
+</mapper>