Ver código fonte

捕获EN+请求充电异常

skyline 2 anos atrás
pai
commit
17a3a2ed1d

+ 12 - 2
service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java

@@ -3,6 +3,7 @@ package com.kym.service.miniapp.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.kym.common.cache.ConnectorStatusCache;
 import com.kym.common.config.EnPlusConfig;
@@ -176,6 +177,7 @@ public class ChargeServiceImpl implements ChargeService {
      * @return
      */
     @Override
+    @DSTransactional(rollbackFor = Exception.class)
     public Map<String, String> queryStartCharge(Long userId, String connectorId, Long userRechargeRightsId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime) {
         var map = getConnectorIdAndStationId(connectorId);
         connectorId = map.get("connectorId");
@@ -289,9 +291,17 @@ public class ChargeServiceImpl implements ChargeService {
 
         if (equipAuth.containsKey("SuccStat") && equipAuth.getIntValue("SuccStat") == 0) {
             // 启动充电
-            var startCharge = enPlusService.queryStartCharge(order.getStartChargeSeq(), connectorId, qrCode, amount);
+            JSONObject startCharge = null;
 
-            if (startCharge.containsKey("SuccStat") && startCharge.getIntValue("SuccStat") == 0) {
+            try {
+                startCharge = enPlusService.queryStartCharge(order.getStartChargeSeq(), connectorId, qrCode, amount);
+            } catch (Exception e) {
+                // 这里可能超时,忽略
+                LOGGER.error("EN+启动充电超时,订单:{}", order.getStartChargeSeq(), e);
+                return Map.of("startChargeSeq", order.getStartChargeSeq());
+            }
+
+            if (startCharge != null && startCharge.containsKey("SuccStat") && startCharge.getIntValue("SuccStat") == 0) {
                 // 启动成功,更新充电订单状态
                 chargeOrderService.lambdaUpdate()
                         .set(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_否)