Bläddra i källkod

fix(charging): 修正充电状态处理及设备认证逻辑

- 修正设备认证失败的判断条件,避免误判为认证失败
- 优化启动充电和停止充电的异常捕获,添加详细日志记录
- 修改充电状态推送请求处理流程,使用独立方法processChargeStatusRequest
- 新增实时充电状态数据的保存或更新逻辑,完善费用和状态同步
- 调整订单实时消费更新逻辑,计算平台实际收取金额
- 增加日志输出,便于监控实时充电状态和订单信息变更
SheepHy 3 dagar sedan
förälder
incheckning
7b95c092a4

+ 11 - 4
src/main/java/com/zsElectric/boot/business/service/impl/ChargeOrderInfoServiceImpl.java

@@ -181,7 +181,7 @@ public class ChargeOrderInfoServiceImpl extends ServiceImpl<ChargeOrderInfoMappe
             EquipmentAuthResponseVO equipmentAuthResponseVO = chargingBusinessService.queryEquipAuth(startChargeSeq,
                     formData.getConnectorId());
 
-            if (!Objects.equals(equipmentAuthResponseVO.getSuccStat(), SystemConstants.STATUS_ONE)) {
+            if (Objects.equals(equipmentAuthResponseVO.getSuccStat(), SystemConstants.STATUS_ONE)) {
                 throw new BusinessException("设备认证失败");
             }
 
@@ -190,7 +190,6 @@ public class ChargeOrderInfoServiceImpl extends ServiceImpl<ChargeOrderInfoMappe
 
             //创建订单
             ChargeOrderInfo chargeOrderInfo = new ChargeOrderInfo();
-
             chargeOrderInfo.setUserId(userId);
             chargeOrderInfo.setConnectorId(formData.getConnectorId());
             chargeOrderInfo.setEquipmentId(formData.getEquipmentId());
@@ -242,8 +241,12 @@ public class ChargeOrderInfoServiceImpl extends ServiceImpl<ChargeOrderInfoMappe
             appInvokeChargeVO.setChargeOrderNo(chargeOrderNo);
             appInvokeChargeVO.setChargeOrderId(chargeOrderInfo.getId());
             return appInvokeChargeVO;
+        } catch (BusinessException e) {
+            log.error("启动充电失败:{}", e.getMessage());
+            throw e;
         } catch (Exception e) {
-            throw new BusinessException("启动充电失败,系统错误,请联系客服处理!");
+            log.error("启动充电失败,系统错误", e);
+            throw new BusinessException("启动充电失败,系统错误,请联系客服处理!" + e.getMessage());
         }
     }
 
@@ -269,8 +272,12 @@ public class ChargeOrderInfoServiceImpl extends ServiceImpl<ChargeOrderInfoMappe
             appInvokeChargeVO.setChargeOrderId(chargeOrderInfo.getId());
             appInvokeChargeVO.setChargeOrderNo(chargeOrderInfo.getChargeOrderNo());
             return appInvokeChargeVO;
+        } catch (BusinessException e) {
+            log.error("停止充电失败:{}", e.getMessage());
+            throw e;
         } catch (Exception e) {
-            throw new BusinessException("停止充电失败,系统错误,请联系客服处理!");
+            log.error("停止充电失败,系统错误", e);
+            throw new BusinessException("停止充电失败,系统错误,请联系客服处理!" + e.getMessage());
         }
     }
 

+ 25 - 12
src/main/java/com/zsElectric/boot/charging/service/impl/ChargingReceptionServiceImpl.java

@@ -140,7 +140,7 @@ public class ChargingReceptionServiceImpl implements ChargingReceptionService {
     @Override
     public ResponseParmsEntity chargeStatusResponse(RequestParmsEntity requestDTO) {
         log.info("接收推送充电状态请求参数:{}", requestDTO);
-        return processChargeRequest(requestDTO, this::saveOrUpdateChargeStatus);
+        return processChargeStatusRequest(requestDTO);
     }
 
     @Override
@@ -279,6 +279,27 @@ public class ChargingReceptionServiceImpl implements ChargingReceptionService {
         }
     }
 
+    /**
+     * 处理实时充电状态推送请求
+     * 数据格式:{"ConnectorID":"xxx","ConnectorStatus":3,"TotalPower":1.95,"ElecMoney":1.89,...}
+     */
+    private ResponseParmsEntity processChargeStatusRequest(RequestParmsEntity requestDTO) {
+        try {
+            JsonNode jsonNode = verifyAndDecrypt(requestDTO);
+            
+            // 保存或更新充电状态
+            saveOrUpdateChargeStatus(jsonNode);
+            
+            // 构建响应
+            return buildChargeResponse(getTextValue(jsonNode, "StartChargeSeq"));
+        } catch (BusinessException e) {
+            throw e;
+        } catch (Exception e) {
+            log.error("处理充电状态推送失败:{}", e.getMessage(), e);
+            throw new BusinessException("处理充电状态推送失败:" + e.getMessage(), e);
+        }
+    }
+
     /**
      * 处理设备状态变化推送请求
      */
@@ -415,7 +436,7 @@ public class ChargingReceptionServiceImpl implements ChargingReceptionService {
             log.info("保存或更新充电状态数据 - StartChargeSeq: {}", jsonNode);
             String startChargeSeq = jsonNode.get("StartChargeSeq").asText();
             String connectorId = getTextValue(jsonNode, "ConnectorID");
-            
+
             // 获取第三方推送的实时数据
             BigDecimal totalPower = getDecimalValue(jsonNode, "TotalPower");  // 实际充电度数
             BigDecimal totalMoney = getDecimalValue(jsonNode, "TotalMoney");  // 第三方总费用
@@ -427,17 +448,9 @@ public class ChargingReceptionServiceImpl implements ChargingReceptionService {
                     .eq(ChargeOrderInfo::getStartChargeSeq, startChargeSeq).last("limit 1"));
             if(ObjUtil.isNotEmpty(chargeOrderInfo)){
                 Integer connectorStatus = getIntValue(jsonNode, "ConnectorStatus");
-                
-                // 实时更新订单表的消费字段
-                chargeOrderInfo.setTotalCharge(totalPower);                    // 实际充电度数
-                chargeOrderInfo.setThirdPartyTotalCost(totalMoney);            // 第三方充电消费总额
-                chargeOrderInfo.setThirdPartyElecfee(elecMoney);               // 第三方充电金额
-                chargeOrderInfo.setThirdPartyServerfee(serviceMoney);          // 第三方充电服务费
-                
+
                 // 计算平台实际收取金额(根据度数和平台价格策略计算)
                 BigDecimal realCost = calculateRealCost(chargeOrderInfo, totalPower);
-                chargeOrderInfo.setRealCost(realCost);
-                
                 if (Objects.equals(connectorStatus, SystemConstants.STATUS_THREE) && Objects.equals(chargeOrderInfo.getStatus(), SystemConstants.STATUS_ZERO)) {
                     // 充电中
                     log.info("充电中 - StartChargeSeq: {}", startChargeSeq);
@@ -451,7 +464,7 @@ public class ChargingReceptionServiceImpl implements ChargingReceptionService {
                 }
                 
                 chargeOrderInfoService.updateById(chargeOrderInfo);
-                log.info("实时更新订单消费 - startChargeSeq: {}, totalPower: {}, realCost: {}", 
+                log.info("实时更新订单消费 - startChargeSeq: {}, totalPower: {}, realCost: {}",
                         startChargeSeq, totalPower, realCost);
             }