|
|
@@ -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) {
|