Răsfoiți Sursa

贸易订单结算问题

xucaiqin 1 lună în urmă
părinte
comite
fd3dfa2782

+ 56 - 58
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -691,14 +691,14 @@ public class KwoTradeOrderService {
                     process.setRoleName(String.join(",", roleNames));
                 }
             }
-            if (statusList.contains(process.getStatus())){
-                if (Objects.equals(process.getStatus(),TradeOrderStatusEnum.AUDIT.getCode())){
+            if (statusList.contains(process.getStatus())) {
+                if (Objects.equals(process.getStatus(), TradeOrderStatusEnum.AUDIT.getCode())) {
                     process.setStatusLabel("订单创建");
                 }
-                if (Objects.equals(process.getStatus(),TradeOrderStatusEnum.ING.getCode())){
+                if (Objects.equals(process.getStatus(), TradeOrderStatusEnum.ING.getCode())) {
                     process.setStatusLabel("审核");
                 }
-                if (Objects.equals(process.getStatus(),TradeOrderStatusEnum.DEAL.getCode())){
+                if (Objects.equals(process.getStatus(), TradeOrderStatusEnum.DEAL.getCode())) {
                     process.setStatusLabel("结算");
                 }
                 orderProcesses.add(process);
@@ -1963,10 +1963,10 @@ public class KwoTradeOrderService {
     /**
      * 获取贸易订单指定时间范围内的运单完成量。
      *
-     * @param tOrderId 贸易订单ID
+     * @param tOrderId   贸易订单ID
      * @param chargeType 计费方式
-     * @param startTime 开始时间
-     * @param endTime 结束时间
+     * @param startTime  开始时间
+     * @param endTime    结束时间
      * @return 运单完成量
      */
     private BigDecimal getCompletedWaybillVolume(Long tOrderId, Integer chargeType,
@@ -2356,7 +2356,7 @@ public class KwoTradeOrderService {
             walletFreeze.setOrderType(4);
             walletFreeze.setTradeType(4);
             walletFreeze.setRemark("贸易订单号:" + walletFreeze.getOrderNo() + ",下单冻结");
-            log.info("贸易订单号:{},订单下单调用钱包服务冻结预付余额,参数:{}", walletFreeze.getOrderNo(),JSON.toJSONString(walletFreeze));
+            log.info("贸易订单号:{},订单下单调用钱包服务冻结预付余额,参数:{}", walletFreeze.getOrderNo(), JSON.toJSONString(walletFreeze));
             freezeBaseResult = paymentFeignService.updatePrepaidBalance(walletFreeze);
         }
 
@@ -2402,16 +2402,16 @@ public class KwoTradeOrderService {
         freezeDto.setRemark("贸易订单号:" + freezeDto.getOrderNo() + ",撤销订单");
         BaseResult<Object> balanceResult;
         try {
-            log.info("贸易订单号:{},订单撤销调用钱包服务解冻预付余额,参数:{}", freezeDto.getOrderNo(),JSON.toJSONString(freezeDto));
+            log.info("贸易订单号:{},订单撤销调用钱包服务解冻预付余额,参数:{}", freezeDto.getOrderNo(), JSON.toJSONString(freezeDto));
             balanceResult = paymentFeignService.updatePrepaidBalance(freezeDto);
         } catch (Exception e) {
-            String errMsg = freezeDto.getRemark()+"异常";
+            String errMsg = freezeDto.getRemark() + "异常";
             log.error(errMsg, e);
             throw new BusinessException(errMsg);
         }
         if (balanceResult == null || balanceResult.getCode() != HttpStatus.SUCCESS_CODE || !Boolean.TRUE.equals(balanceResult.getData())) {
-            String errMsg = freezeDto.getRemark()+"失败";
-            log.error("{}:{}", errMsg, balanceResult != null ? balanceResult.getMessage(): "");
+            String errMsg = freezeDto.getRemark() + "失败";
+            log.error("{}:{}", errMsg, balanceResult != null ? balanceResult.getMessage() : "");
             throw new BusinessException(errMsg);
         }
 
@@ -2550,7 +2550,7 @@ public class KwoTradeOrderService {
 
             } else if (Objects.equals(kwoTradeOrder.getSettlement(), 2)) {
                 //预付制结算解冻
-                log.info("贸易订单号:{},订单审核拒绝调用钱包服务解冻预付余额,参数:{}", walletFreeze.getOrderNo(),JSON.toJSONString(walletFreeze));
+                log.info("贸易订单号:{},订单审核拒绝调用钱包服务解冻预付余额,参数:{}", walletFreeze.getOrderNo(), JSON.toJSONString(walletFreeze));
                 booleanBaseResult = paymentFeignService.updatePrepaidBalance(walletFreeze);
             }
             if (booleanBaseResult.getCode() != 60200) {
@@ -2901,6 +2901,7 @@ public class KwoTradeOrderService {
         if (CollUtil.isNotEmpty(logisticOrderList)) {
             if (logisticOrderList.stream().allMatch(d -> Objects.equals(d.getStatus(), LogisticsOrderV1Enum.NEARING_COMPLETION.getCode()))) {
                 kwoTradeOrder.setStatus(TradeOrderStatusEnum.SUCCESS.getCode());
+                calculatePrepaidBalance(kwoTradeOrderDB);
             } else {
                 kwoTradeOrder.setStatus(TradeOrderStatusEnum.DEAL.getCode());
             }
@@ -2920,56 +2921,53 @@ public class KwoTradeOrderService {
             }
         }
         kwoTradeOrderMapper.updateById(kwoTradeOrder);
-        calculatePrepaidBalance(kwoTradeOrderDB);
         return true;
     }
 
     private void calculatePrepaidBalance(KwoTradeOrder kwoTradeOrder) {
-        if (Objects.equals(kwoTradeOrder.getStatus(), TradeOrderStatusEnum.SUCCESS.getCode())) {
-            //贸易订单已完结,计算预付余额
-            if (Objects.equals(kwoTradeOrder.getSettlement(), 1)) {
-                //todo 普通结算
+        //贸易订单已完结,计算预付余额
+        if (Objects.equals(kwoTradeOrder.getSettlement(), 1)) {
+            //todo 普通结算
 
-            } else if (Objects.equals(kwoTradeOrder.getSettlement(), 2)) {
-                //预付制模式
-                //1解冻运费
-                List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitService.getByOrderId(kwoTradeOrder.getId());
-                if (CollUtil.isEmpty(orderUnits)) {
-                    throw new BusinessException("贸易订单企业信息不存在");
-                }
-                Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, e -> e, (a, b) -> a));
-                if (unitMap.keySet().size() < 2) {
-                    throw new BusinessException("贸易订单企业信息缺失");
-                }
-                //钱包退回金额
-                WalletPrepaidDto unFreezePrepaidDto = new WalletPrepaidDto();
-                unFreezePrepaidDto.setOrderNo(kwoTradeOrder.getTOrderNo());
-                unFreezePrepaidDto.setProEntId(unitMap.get(String.valueOf(1)).getEntId());
-                unFreezePrepaidDto.setSupEntId(unitMap.get(String.valueOf(2)).getEntId());
-                unFreezePrepaidDto.setOrderType(4);
-                unFreezePrepaidDto.setTradeType(5);
-                unFreezePrepaidDto.setRemark("贸易订单:" + unFreezePrepaidDto.getOrderNo() + ",");
-                log.info("贸易订单号:{},订单完结调用钱包服务解冻预付余额,参数:{}", unFreezePrepaidDto.getOrderNo(),JSON.toJSONString(unFreezePrepaidDto));
-                BaseResult<Object> unFreezeResult = paymentFeignService.updatePrepaidBalance(unFreezePrepaidDto);
-                if (unFreezeResult.getCode() != HttpStatus.SUCCESS_CODE) {
-                    log.error("贸易订单号:{},订单完结解冻失败,异常信息为:{}", unFreezePrepaidDto.getOrderNo(), unFreezeResult.getMessage());
-                    throw new BusinessException("贸易订单号:" + unFreezePrepaidDto.getOrderNo() + ",订单完结解冻失败");
-                }
-                //2计算订单金额
-                WalletPrepaidDto consumePrepaidDto = new WalletPrepaidDto();
-                consumePrepaidDto.setOrderNo(kwoTradeOrder.getTOrderNo());
-                consumePrepaidDto.setProEntId(unitMap.get(String.valueOf(1)).getEntId());
-                consumePrepaidDto.setSupEntId(unitMap.get(String.valueOf(2)).getEntId());
-                consumePrepaidDto.setOrderType(4);
-                consumePrepaidDto.setTradeType(6);
-                consumePrepaidDto.setTradeAmount(kwoTradeOrder.getPrice());
-                consumePrepaidDto.setRemark("贸易订单号:" + consumePrepaidDto.getOrderNo() + ",订单完结消费");
-                log.info("贸易订单号:{},订单完结调用钱包服务消费预付余额,参数:{}", consumePrepaidDto.getOrderNo(),JSON.toJSONString(consumePrepaidDto));
-                BaseResult<Object> consumeResult = paymentFeignService.updatePrepaidBalance(consumePrepaidDto);
-                if (consumeResult.getCode() != HttpStatus.SUCCESS_CODE) {
-                    log.error("贸易订单号:{},订单完结消费失败,异常信息为:{}", consumePrepaidDto.getOrderNo(), consumeResult.getMessage());
-                    throw new BusinessException("贸易订单号:" + consumePrepaidDto.getOrderNo() + ",订单完结消费失败");
-                }
+        } else if (Objects.equals(kwoTradeOrder.getSettlement(), 2)) {
+            //预付制模式
+            //1解冻运费
+            List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitService.getByOrderId(kwoTradeOrder.getId());
+            if (CollUtil.isEmpty(orderUnits)) {
+                throw new BusinessException("贸易订单企业信息不存在");
+            }
+            Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, e -> e, (a, b) -> a));
+            if (unitMap.keySet().size() < 2) {
+                throw new BusinessException("贸易订单企业信息缺失");
+            }
+            //钱包退回金额
+            WalletPrepaidDto unFreezePrepaidDto = new WalletPrepaidDto();
+            unFreezePrepaidDto.setOrderNo(kwoTradeOrder.getTOrderNo());
+            unFreezePrepaidDto.setProEntId(unitMap.get(String.valueOf(1)).getEntId());
+            unFreezePrepaidDto.setSupEntId(unitMap.get(String.valueOf(2)).getEntId());
+            unFreezePrepaidDto.setOrderType(4);
+            unFreezePrepaidDto.setTradeType(5);
+            unFreezePrepaidDto.setRemark("贸易订单:" + unFreezePrepaidDto.getOrderNo() + ",");
+            log.info("贸易订单号:{},订单完结调用钱包服务解冻预付余额,参数:{}", unFreezePrepaidDto.getOrderNo(), JSON.toJSONString(unFreezePrepaidDto));
+            BaseResult<Object> unFreezeResult = paymentFeignService.updatePrepaidBalance(unFreezePrepaidDto);
+            if (unFreezeResult.getCode() != HttpStatus.SUCCESS_CODE) {
+                log.error("贸易订单号:{},订单完结解冻失败,异常信息为:{}", unFreezePrepaidDto.getOrderNo(), unFreezeResult.getMessage());
+                throw new BusinessException("贸易订单号:" + unFreezePrepaidDto.getOrderNo() + ",订单完结解冻失败");
+            }
+            //2计算订单金额
+            WalletPrepaidDto consumePrepaidDto = new WalletPrepaidDto();
+            consumePrepaidDto.setOrderNo(kwoTradeOrder.getTOrderNo());
+            consumePrepaidDto.setProEntId(unitMap.get(String.valueOf(1)).getEntId());
+            consumePrepaidDto.setSupEntId(unitMap.get(String.valueOf(2)).getEntId());
+            consumePrepaidDto.setOrderType(4);
+            consumePrepaidDto.setTradeType(6);
+            consumePrepaidDto.setTradeAmount(kwoTradeOrder.getPrice());
+            consumePrepaidDto.setRemark("贸易订单号:" + consumePrepaidDto.getOrderNo() + ",订单完结消费");
+            log.info("贸易订单号:{},订单完结调用钱包服务消费预付余额,参数:{}", consumePrepaidDto.getOrderNo(), JSON.toJSONString(consumePrepaidDto));
+            BaseResult<Object> consumeResult = paymentFeignService.updatePrepaidBalance(consumePrepaidDto);
+            if (consumeResult.getCode() != HttpStatus.SUCCESS_CODE) {
+                log.error("贸易订单号:{},订单完结消费失败,异常信息为:{}", consumePrepaidDto.getOrderNo(), consumeResult.getMessage());
+                throw new BusinessException("贸易订单号:" + consumePrepaidDto.getOrderNo() + ",订单完结消费失败");
             }
         }