فهرست منبع

提供更新订单实际交付量dubbo接口

yzc 2 سال پیش
والد
کامیت
53ec0568bc
1فایلهای تغییر یافته به همراه40 افزوده شده و 1 حذف شده
  1. 40 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

+ 40 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -206,7 +206,46 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
 
     @Override
     public HttpResult updateActualAmount(UpdateActualAmountParam param) {
-        return null;
+        Long id = param.getTOrderId();
+        BigDecimal actualLoadAmount = param.getActualLoadAmount();
+        BigDecimal actualUnloadAmount = param.getActualUnloadAmount();
+        Long updateBy = param.getUpdateBy();
+        String updateByName = param.getUpdateByName();
+        if (Objects.isNull(actualLoadAmount) || Objects.isNull(actualUnloadAmount)) {
+            return HttpResult.error("装卸总量不能为空!");
+        }
+        if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
+            return HttpResult.error("操作人信息不能为空!");
+        }
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
+            return HttpResult.error("业务繁忙,请稍后再试!");
+        }
+        try {
+            KwoTradeOrder order = kwoTradeOrderService.getById(id);
+            if (Objects.isNull(order)) {
+                return HttpResult.error("订单不存在!");
+            }
+            if (!Objects.equals(order.getStatus(), OrderStatusEnum.EXECUTING.getCode())) {
+                return HttpResult.error("执行中的订单才可物流托运!");
+            }
+            BigDecimal addActualAmount = Objects.equals(order.getDeliveryType(), DeliveryTypeEnum.ISSUE.getType())
+                    ? actualLoadAmount : actualUnloadAmount;
+            order.setActualAmount(addActualAmount).setUpdateBy(param.getUpdateBy());
+            kwoTradeOrderService.updateById(order);
+            //更新mongodb
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(order.getId())
+                    .setActualAmount(addActualAmount.doubleValue())
+                    .setStatus(order.getStatus())
+                    .setUpdateBy(param.getUpdateBy())
+                    .setUpdateByName(param.getUpdateByName())
+                    .setUpdateTime(new Date());
+            saveMongoDb(updateParam);
+        } finally {
+            RedissonUtils.unlock(lockKey);
+        }
+        return HttpResult.ok();
     }
 
     @Override