Przeglądaj źródła

fix 预约充电启动失败处理

skyline 1 rok temu
rodzic
commit
eb8243ea3d

+ 4 - 2
miniapp/src/main/java/com/kym/miniapp/jobs/StartChargeDelayJob.java

@@ -94,6 +94,7 @@ public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
                     log.info("出队预约充电订单:{},队列剩余:{}", delayedItem.data.getStartChargeSeq(), START_DELAY_QUEUE.size());
                     // 启动充电
                     var order = delayedItem.data;
+                    threadLocal.set(order.getStartChargeSeq());
                     chargeService.queryStartCharge(order.getUserId(), order.getConnectorId(), null, null,false, null, null);
                     log.info("预约充电启动成功:用户:{},订单号:{},预约启动时间:{}", order.getUserId(), order.getStartChargeSeq(), order.getStartTime());
                 } catch (Exception e) {
@@ -101,16 +102,17 @@ public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
                         log.error("预约充电队列take异常", e);
                     } else {
                         log.info("预约启动充电失败,订单号:{}", threadLocal.get());
+                        // todo 启动时遇到设备离线等情况会导致启动失败,这里如何处理? threadLocal.get()为null是怎么回事
                         if (e instanceof BusinessException && (ResponseEnum.PLATFORM_QUERY_TOKEN_EXCEPTION.getCode().equals(((BusinessException) e).getCode()))) {
                             if (retryList.contains(threadLocal.get())) {
-                                log.info("EN+ token异常,预约订单:{}已重试忽略", threadLocal.get());
+                                log.info("PlatformToken异常,预约订单:{}已重试忽略", threadLocal.get());
                                 log.error(e.getMessage());
                                 // 启动失败将订单状态修改为充电状态已结束,订单状态已确认,结束原因:预约启动失败
                                 updateOrderStatus(threadLocal.get(), ChargeOrder.CHARGE_STATUS_已结束, ChargeOrder.ORDER_STATUS_失败, ChargeOrder.STOP_REASON_预约启动充电失败);
                                 retryList.remove(threadLocal.get());
                                 return;
                             }
-                            log.info("EN+ token异常,预约订单:{},重试", threadLocal.get());
+                            log.info("PlatformToken异常,预约订单:{},重试", threadLocal.get());
                             // token异常就重新放入队列重试
                             var success = addToDelayQueue(delayedItem);
                             if (success) {