浏览代码

fix 定时任务

xucaiqin 1 天之前
父节点
当前提交
4a5bbe7291
共有 1 个文件被更改,包括 80 次插入43 次删除
  1. 80 43
      sckw-modules/sckw-order/src/main/java/com/sckw/order/task/TradeOrderTask.java

+ 80 - 43
sckw-modules/sckw-order/src/main/java/com/sckw/order/task/TradeOrderTask.java

@@ -27,10 +27,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
@@ -66,49 +63,89 @@ public class TradeOrderTask {
         if (CollUtil.isNotEmpty(kwoTradeOrders)) {
             for (KwoTradeOrder kwoTradeOrder : kwoTradeOrders) {
                 List<KwtLogisticsOrderVO> logisticOrderList = transportRemoteService.getLogisticOrderList(new OrderFinishParam(kwoTradeOrder.getId()));
-                if (logisticOrderList.stream().anyMatch(d -> Objects.equals(d.getStatus(), LogisticsOrderV1Enum.NEARING_COMPLETION.getCode()))) {
-                    continue;
-                }
-                threadPoolExecutor.execute(() -> {
-                    try {
-                        List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitMapper.selectList(new LambdaQueryWrapper<KwoTradeOrderUnit>().eq(KwoTradeOrderUnit::getTOrderId, kwoTradeOrder.getId())
-                                .eq(KwoTradeOrderUnit::getDelFlag, 0)
-                        );
-                        if (CollUtil.isEmpty(orderUnits) || orderUnits.size() < 2) {
-                            log.error("订单异常,未找到关联企业。订单id {}", kwoTradeOrder.getId());
-                            return;
-                        }
-                        Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity(), (a, b) -> a));
-                        BigDecimal sum;
-                        if (Objects.equals(kwoTradeOrder.getChargeType(), 1)) {
-                            //按装货量
-                            sum = logisticOrderList.stream().map(KwtLogisticsOrderVO::getLoadAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-                        } else {
-                            sum = logisticOrderList.stream().map(KwtLogisticsOrderVO::getUnloadAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+                //没有订单
+                if (CollUtil.isEmpty(logisticOrderList)) {
+                    threadPoolExecutor.execute(() -> {
+                        log.info("没有物流订单结算");
+                        try {
+                            List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitMapper.selectList(new LambdaQueryWrapper<KwoTradeOrderUnit>().eq(KwoTradeOrderUnit::getTOrderId, kwoTradeOrder.getId())
+                                    .eq(KwoTradeOrderUnit::getDelFlag, 0)
+                            );
+                            if (CollUtil.isEmpty(orderUnits) || orderUnits.size() < 2) {
+                                log.error("订单异常,未找到关联企业。订单id {}", kwoTradeOrder.getId());
+                                return;
+                            }
+                            Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity(), (a, b) -> a));
+                            BigDecimal sum = new BigDecimal("0");
+
+                            KwoTradeOrderGoods kwoTradeOrderGoods = kwoTradeOrderGoodsMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrderGoods>()
+                                    .eq(KwoTradeOrderGoods::getDelFlag, 0)
+                                    .eq(KwoTradeOrderGoods::getTOrderId, kwoTradeOrder.getId())
+                                    .last("limit 1")
+                            );
+
+                            //更新贸易订单状态
+                            WalletFreeze walletFreeze = new WalletFreeze();
+                            walletFreeze.setBuyEntId(unitMap.getOrDefault("1", new KwoTradeOrderUnit()).getEntId());
+                            walletFreeze.setSaleEntId(unitMap.getOrDefault("2", new KwoTradeOrderUnit()).getEntId());
+                            walletFreeze.setMoney(NumberUtil.mul(sum, kwoTradeOrderGoods.getUnitPrice()));
+                            walletFreeze.setTTradeOrderId(kwoTradeOrder.getId());
+                            walletFreeze.setOrderNo(kwoTradeOrder.getTOrderNo());
+                            log.info("结算 {}", JSONObject.toJSONString(walletFreeze));
+                            BaseResult<Boolean> booleanBaseResult = paymentDubboService.dealMoney(walletFreeze);
+                            log.info("结算结果:{}", JSONObject.toJSONString(booleanBaseResult));
+
+                            kwoTradeOrder.setStatus(TradeOrderStatusEnum.SUCCESS.getCode());
+                            kwoTradeOrderMapper.updateById(kwoTradeOrder);
+                        } catch (Exception ex) {
+                            log.error("更新订单异常{}", ex.getMessage());
                         }
-                        KwoTradeOrderGoods kwoTradeOrderGoods = kwoTradeOrderGoodsMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrderGoods>()
-                                .eq(KwoTradeOrderGoods::getDelFlag, 0)
-                                .eq(KwoTradeOrderGoods::getTOrderId, kwoTradeOrder.getId())
-                                .last("limit 1")
-                        );
+                    });
+                } else {
+                    if (logisticOrderList.stream().allMatch(d -> Arrays.asList(LogisticsOrderV1Enum.COMPLETED.getCode(), LogisticsOrderV1Enum.REJECT_ORDER.getCode()).contains(d.getStatus()))) {
+                        threadPoolExecutor.execute(() -> {
+                            try {
+                                List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitMapper.selectList(new LambdaQueryWrapper<KwoTradeOrderUnit>().eq(KwoTradeOrderUnit::getTOrderId, kwoTradeOrder.getId())
+                                        .eq(KwoTradeOrderUnit::getDelFlag, 0)
+                                );
+                                if (CollUtil.isEmpty(orderUnits) || orderUnits.size() < 2) {
+                                    log.error("订单异常,未找到关联企业。订单id {}", kwoTradeOrder.getId());
+                                    return;
+                                }
+                                Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity(), (a, b) -> a));
+                                BigDecimal sum;
+                                if (Objects.equals(kwoTradeOrder.getChargeType(), 1)) {
+                                    //按装货量
+                                    sum = logisticOrderList.stream().map(KwtLogisticsOrderVO::getLoadAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                } else {
+                                    sum = logisticOrderList.stream().map(KwtLogisticsOrderVO::getUnloadAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                }
+                                KwoTradeOrderGoods kwoTradeOrderGoods = kwoTradeOrderGoodsMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrderGoods>()
+                                        .eq(KwoTradeOrderGoods::getDelFlag, 0)
+                                        .eq(KwoTradeOrderGoods::getTOrderId, kwoTradeOrder.getId())
+                                        .last("limit 1")
+                                );
 
-                        //更新贸易订单状态
-                        WalletFreeze walletFreeze = new WalletFreeze();
-                        walletFreeze.setBuyEntId(unitMap.getOrDefault("1", new KwoTradeOrderUnit()).getEntId());
-                        walletFreeze.setSaleEntId(unitMap.getOrDefault("2", new KwoTradeOrderUnit()).getEntId());
-                        walletFreeze.setMoney(NumberUtil.mul(sum, kwoTradeOrderGoods.getUnitPrice()));
-                        walletFreeze.setTTradeOrderId(kwoTradeOrder.getId());
-                        walletFreeze.setOrderNo(kwoTradeOrder.getTOrderNo());
-                        log.info("结算 {}", JSONObject.toJSONString(walletFreeze));
-                        BaseResult<Boolean> booleanBaseResult = paymentDubboService.dealMoney(walletFreeze);
-                        log.info("结算结果:{}", JSONObject.toJSONString(booleanBaseResult));
+                                //更新贸易订单状态
+                                WalletFreeze walletFreeze = new WalletFreeze();
+                                walletFreeze.setBuyEntId(unitMap.getOrDefault("1", new KwoTradeOrderUnit()).getEntId());
+                                walletFreeze.setSaleEntId(unitMap.getOrDefault("2", new KwoTradeOrderUnit()).getEntId());
+                                walletFreeze.setMoney(NumberUtil.mul(sum, kwoTradeOrderGoods.getUnitPrice()));
+                                walletFreeze.setTTradeOrderId(kwoTradeOrder.getId());
+                                walletFreeze.setOrderNo(kwoTradeOrder.getTOrderNo());
+                                log.info("结算 {}", JSONObject.toJSONString(walletFreeze));
+                                BaseResult<Boolean> booleanBaseResult = paymentDubboService.dealMoney(walletFreeze);
+                                log.info("结算结果:{}", JSONObject.toJSONString(booleanBaseResult));
 
-                        kwoTradeOrder.setStatus(TradeOrderStatusEnum.SUCCESS.getCode());
-                        kwoTradeOrderMapper.updateById(kwoTradeOrder);
-                    } catch (Exception ex) {
-                        log.error("更新订单异常{}", ex.getMessage());
+                                kwoTradeOrder.setStatus(TradeOrderStatusEnum.SUCCESS.getCode());
+                                kwoTradeOrderMapper.updateById(kwoTradeOrder);
+                            } catch (Exception ex) {
+                                log.error("更新订单异常{}", ex.getMessage());
+                            }
+                        });
                     }
-                });
+                }
+
 
             }