Эх сурвалжийг харах

手动或自动完结贸易订单时更新对应合同的履约量

yzc 2 жил өмнө
parent
commit
7292915c56

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

@@ -2,6 +2,7 @@ package com.sckw.order.dubbo;
 
 import com.alibaba.fastjson2.JSON;
 import com.google.common.collect.Lists;
+import com.sckw.contract.api.RemoteContractService;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.BeanUtils;
@@ -22,6 +23,7 @@ import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.model.SckwBusSum;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
@@ -53,6 +55,9 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     @Autowired
     private KwoTradeOrderUnitService tradeOrderUnitService;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteContractService remoteContractService;
+
 
     @Override
     public OrderDetailRes getOrderDetailById(Long tOrderId) {
@@ -170,11 +175,16 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             BigDecimal actualAmount = Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue()) ? actualLoadAmount : actualUnloadAmount;
             order.setActualAmount(actualAmount).setUpdateBy(param.getUpdateBy());
             if (param.getIsAllComplete() && actualAmount.compareTo(order.getAmount()) >= 0) {
+                //完结订单
                 order.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+                //记录状态
                 KwoTradeOrderTrack track = new KwoTradeOrderTrack();
                 track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus())
                         .setCreateBy(updateBy).setUpdateBy(updateBy);
                 kwoTradeOrderTrackService.insert(track);
+                //更新合同履约量
+                KwoTradeOrderContract contract = kwoTradeOrderContractService.getByOrderId(order.getId());
+                remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
             }
             kwoTradeOrderService.updateById(order);
             //更新mongodb

+ 22 - 7
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -266,6 +266,7 @@ public class KwoTradeOrderService {
             throw new BusinessException(updateResult.getMsg());
         }
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
+        //TODO:发送提醒消息
     }
 
     /**
@@ -387,6 +388,7 @@ public class KwoTradeOrderService {
             throw new BusinessException(updateResult.getMsg());
         }
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
+        //TODO:发送提醒消息
     }
 
 
@@ -610,6 +612,10 @@ public class KwoTradeOrderService {
         ValetOrderParam valetOrderParam = BeanUtils.copyProperties(param, ValetOrderParam.class);
 
         addOtherOrderInfo(order, valetOrderParam, true);
+        //TODO:发送提醒消息
+        if (Objects.equals(param.getOperateType(), 1)) {
+
+        }
     }
 
 
@@ -830,6 +836,7 @@ public class KwoTradeOrderService {
         updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(LoginUserHolder.getUserId())
                 .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
         saveMongoDb(3, updateParam);
+        //TODO:发送提醒消息
     }
 
     /**
@@ -860,7 +867,9 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public void completeOrder(CompleteOrderParam param) {
-        KwoTradeOrder order = getById(param.getId());
+        BigDecimal actualAmount = param.getActualAmount();
+        Long tOrderId = param.getId();
+        KwoTradeOrder order = getById(tOrderId);
         if (Objects.isNull(order)) {
             throw new BusinessException("Order not found");
         }
@@ -870,22 +879,22 @@ public class KwoTradeOrderService {
         if (kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), DictEnum.TORDER_UNIT_TYPE_2.getValue())) {
             throw new BusinessException("无订单操作权限!");
         }
-        if (transportDubboService.checkLogisticsOrderByTradeOrderId(param.getId())) {
+        if (transportDubboService.checkLogisticsOrderByTradeOrderId(tOrderId)) {
             throw new CustomPromptException(HttpStatus.COMPLETE_TORDER_FAIL_CODE, "订单存在未完成的物流托运,不可完结!");
         }
-        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, param.getId());
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, tOrderId);
         if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             throw new BusinessException("业务繁忙,请稍后再试!");
         }
         try {
-            order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+            order.setActualAmount(actualAmount).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
             kwoTradeOrderMapper.updateById(order);
             //订单状态记录
             KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-            track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
+            track.setTOrderId(tOrderId).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
             kwoTradeOrderTrackService.insert(track);
-            if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
-                KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
+            if (actualAmount.compareTo(order.getAmount()) != 0) {
+                KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(tOrderId);
                 if (Objects.isNull(goods)) {
                     throw new BusinessException("商品信息异常!");
                 }
@@ -896,6 +905,12 @@ public class KwoTradeOrderService {
                     throw new BusinessException(updateResult.getMsg());
                 }
             }
+            //更新合同履约量
+            KwoTradeOrderContract contract = kwoTradeOrderContractService.getByOrderId(tOrderId);
+            if (Objects.isNull(contract) || Objects.isNull(contract.getContractId())) {
+                throw new BusinessException("订单合同信息异常");
+            }
+            remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
             //mongodb更新订单状态
             SckwTradeOrder updateParam = new SckwTradeOrder();
             updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())