瀏覽代碼

预约订单停止充电异常情况处理

skyline 2 年之前
父節點
當前提交
094b590bc0
共有 1 個文件被更改,包括 14 次插入4 次删除
  1. 14 4
      service/src/main/java/com/kym/service/miniapp/impl/StopDelayServiceImpl.java

+ 14 - 4
service/src/main/java/com/kym/service/miniapp/impl/StopDelayServiceImpl.java

@@ -1,6 +1,7 @@
 package com.kym.service.miniapp.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.kym.common.exception.BusinessException;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.entity.miniapp.delay.DelayChargeOrder;
 import com.kym.service.miniapp.ChargeOrderService;
@@ -79,10 +80,19 @@ public class StopDelayServiceImpl implements DelayService<DelayChargeOrder> {
                     // 停止充电
                     var order = delayedItem.data;
                     threadLocal.set(order.getStartChargeSeq());
-                    chargeService.queryStopCharge(order.getConnectorId());
-                    log.info("预约充电停止成功:用户:{},订单号:{},预约停止时间:{}", order.getUserId(), order.getStartChargeSeq(), order.getEndTime());
-                    // 线程休眠100ms
-                    Thread.sleep(100);
+                    // 查询改设备最新订单是否是当前预约订单,是则按计划停止
+                    var currentChargeOrder = chargeOrderService.lambdaQuery().eq(ChargeOrder::getConnectorId, order.getConnectorId()).orderByDesc(ChargeOrder::getCreateTime).one();
+                    if (currentChargeOrder.getStartChargeSeq().equals(order.getStartChargeSeq())) {
+                        chargeService.queryStopCharge(order.getConnectorId());
+                        log.info("预约充电停止成功:用户:{},订单号:{},预约停止时间:{}", order.getUserId(), order.getStartChargeSeq(), order.getEndTime());
+                        // 线程休眠100ms
+                        Thread.sleep(100);
+                    } else {
+                        log.error("预约充电停止异常:订单不匹配:原订单:{},当前设备最新订单:{}", order.getStartChargeSeq(), currentChargeOrder.getStartChargeSeq());
+                        throw new BusinessException("预约充电停止异常");
+                    }
+
+
                 } catch (Exception e) {
                     if (e instanceof InterruptedException) {
                         log.error("预约停止充电队列take异常", e);