Forráskód Böngészése

充电订单相关

skyline 2 éve
szülő
commit
53d9ef4bc0
20 módosított fájl, 266 hozzáadás és 38 törlés
  1. 1 0
      common/src/main/java/com/kym/common/constant/ResponseEnum.java
  2. 3 1
      common/src/main/java/com/kym/common/handler/ResponseResultHandler.java
  3. 9 0
      entity/src/main/java/com/kym/entity/enplus/EnResponse.java
  4. 4 4
      entity/src/main/java/com/kym/entity/miniapp/WalletDetail.java
  5. 1 1
      mapper/src/main/java/com/kym/mapper/miniapp/WalletDetailMapper.java
  6. 45 9
      miniapp/src/main/java/com/kym/miniapp/controller/ChargerController.java
  7. 2 2
      miniapp/src/main/java/com/kym/miniapp/controller/WalletDetailController.java
  8. 2 2
      miniapp/src/main/java/com/kym/miniapp/utils/MybatisPlusGeneratorForMiniApp.java
  9. 27 0
      miniapp/src/main/resources/mappers/WalletDetailMapper.xml
  10. 7 0
      service/src/main/java/com/kym/service/enplus/EnNotifyService.java
  11. 2 0
      service/src/main/java/com/kym/service/enplus/EnPlusService.java
  12. 119 9
      service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java
  13. 4 4
      service/src/main/java/com/kym/service/enplus/impl/EnPlusServiceImpl.java
  14. 2 0
      service/src/main/java/com/kym/service/miniapp/ChargeOrderService.java
  15. 4 1
      service/src/main/java/com/kym/service/miniapp/ChargeService.java
  16. 1 1
      service/src/main/java/com/kym/service/miniapp/WalletDetailService.java
  17. 2 0
      service/src/main/java/com/kym/service/miniapp/impl/AccountServiceImpl.java
  18. 4 0
      service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java
  19. 25 2
      service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java
  20. 2 2
      service/src/main/java/com/kym/service/miniapp/impl/WalletDetailServiceImpl.java

+ 1 - 0
common/src/main/java/com/kym/common/constant/ResponseEnum.java

@@ -38,6 +38,7 @@ public enum ResponseEnum implements BusinessExceptionAssert {
     EN_PLUS_EQUIP_START_FAIL(20007, "设备启动充电失败"),
     EN_PLUS_EQUIP_NOT_EXIST(20008, "设备不存在"),
     EN_PLUS_EQUIP_OFFLINE(20009, "设备离线"),
+    EN_PLUS_EQUIP_STOP_FAIL(20010, "设备停止充电失败"),
 
 
     // EN+

+ 3 - 1
common/src/main/java/com/kym/common/handler/ResponseResultHandler.java

@@ -1,6 +1,7 @@
 package com.kym.common.handler;
 
 import com.kym.common.R;
+import com.kym.entity.enplus.EnResponse;
 import org.springframework.core.MethodParameter;
 import org.springframework.http.MediaType;
 import org.springframework.http.server.ServerHttpRequest;
@@ -33,7 +34,8 @@ public class ResponseResultHandler implements ResponseBodyAdvice {
     public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                                   Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
 
-        if (body instanceof R<?>) {
+        // 响应给en+的信息不做处理
+        if (body instanceof R<?> || body instanceof EnResponse) {
             return body;
         } else if (body == null) {
             return R.success();

+ 9 - 0
entity/src/main/java/com/kym/entity/enplus/EnResponse.java

@@ -1,6 +1,7 @@
 package com.kym.entity.enplus;
 
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @author skyline
@@ -8,10 +9,18 @@ import lombok.Data;
  * @date 2023-07-31 11:59
  */
 @Data
+@NoArgsConstructor
 public class EnResponse {
     private int Ret;
     private String Msg;
     private String Data;
     private String Sig;
 
+    public EnResponse(String data) {
+        this.Ret = 0;
+        this.Msg = "";
+        this.Data = data;
+        this.Sig = "";
+    }
+
 }

+ 4 - 4
entity/src/main/java/com/kym/entity/miniapp/WalletDetail.java

@@ -13,7 +13,7 @@ import lombok.Setter;
  * </p>
  *
  * @author skyline
- * @since 2023-07-22
+ * @since 2023-08-09
  */
 @Getter
 @Setter
@@ -40,9 +40,9 @@ public class WalletDetail implements Serializable {
     private String current;
 
     /**
-     * 订单id
+     * 订单
      */
-    private Long orderId;
+    private String orderNo;
 
     /**
      * 金额
@@ -57,7 +57,7 @@ public class WalletDetail implements Serializable {
     /**
      * 交易id type为1是pay_log的id,type为3是charge_order的id
      */
-    private Long transactionId;
+    private String transactionId;
 
     /**
      * 交易发起时间

+ 1 - 1
mapper/src/main/java/com/kym/mapper/miniapp/WalletDetailMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * </p>
  *
  * @author skyline
- * @since 2023-07-22
+ * @since 2023-08-09
  */
 public interface WalletDetailMapper extends BaseMapper<WalletDetail> {
 

+ 45 - 9
miniapp/src/main/java/com/kym/miniapp/controller/ChargerController.java

@@ -3,6 +3,7 @@ package com.kym.miniapp.controller;
 import com.alibaba.fastjson2.JSONObject;
 import com.kym.common.R;
 import com.kym.common.annotation.SysLog;
+import com.kym.entity.enplus.EnResponse;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.service.admin.StationService;
 import com.kym.service.enplus.EnNotifyService;
@@ -63,19 +64,20 @@ public class ChargerController {
 
 
     @GetMapping("/token")
-    R queryToken() {
+    R<String> queryToken() {
         return R.success(enPlusService.queryToken());
     }
 
     @SysLog("启动充电")
     @PostMapping("/startCharge")
-    R startCharge(@RequestBody String connectorId) {
-        return R.success(chargeService.startCharge(connectorId));
+    R<String> startCharge(@RequestBody String connectorId) {
+        return R.success(chargeService.queryStartCharge(connectorId));
     }
 
     @SysLog("停止充电")
     @PostMapping("/stopCharge")
-    R stopCharge() {
+    R stopCharge(@RequestBody String startChargeSeq, @RequestBody String connectorId) {
+        chargeService.queryStopCharge(startChargeSeq, connectorId);
         return R.success();
     }
 
@@ -115,8 +117,8 @@ public class ChargerController {
      */
     @PostMapping("/notification_start_charge_result")
     @ResponseBody
-    String notificationStartChargeResult(@RequestBody JSONObject json) {
-        return enNotifyService.handleNotificationStartChargeResult(json);
+    EnResponse notificationStartChargeResult(@RequestBody JSONObject json) {
+        return new EnResponse(enNotifyService.handleNotificationStartChargeResult(json));
     }
 
 
@@ -127,9 +129,43 @@ public class ChargerController {
      * @return
      */
     @PostMapping("/notification_start_charge_status")
-    JSONObject notificationStartChargeStatus(@RequestBody JSONObject json) {
-        // TODO: 2023-08-03 验签 业务逻辑
-        return null;
+    EnResponse notificationStartChargeStatus(@RequestBody JSONObject json) {
+        return new EnResponse(enNotifyService.handleNotificationEquipChargeStatus(json));
+    }
+
+
+    /**
+     * 推送停止充电结果
+     *
+     * @param json
+     * @return
+     */
+    @PostMapping("/notification_stop_charge_result")
+    EnResponse notificationStopChargeResult(@RequestBody JSONObject json) {
+        return new EnResponse(enNotifyService.handleNotificationStopChargeResult(json));
+    }
+
+    /**
+     * 推送充电订单信息
+     *
+     * @param json
+     * @return
+     */
+    @PostMapping("/notification_charge_order_info")
+    EnResponse notificationChargeOrderInfo(@RequestBody JSONObject json) {
+        return new EnResponse(enNotifyService.handleNotificationChargeOrderInfo(json));
+    }
+
+
+    /**
+     * 推送充电订单信息
+     *
+     * @param json
+     * @return
+     */
+    @PostMapping("/check_charge_orders")
+    EnResponse checkChargeOrders(@RequestBody JSONObject json) {
+        return new EnResponse(enNotifyService.handleCheckChargeOrders(json));
     }
 
 

+ 2 - 2
miniapp/src/main/java/com/kym/miniapp/controller/WalletDetailController.java

@@ -9,10 +9,10 @@ import org.springframework.web.bind.annotation.RestController;
  * </p>
  *
  * @author skyline
- * @since 2023-07-22
+ * @since 2023-08-09
  */
 @RestController
-@RequestMapping("/api/wallet-detail")
+@RequestMapping("/wallet-detail")
 public class WalletDetailController {
 
 }

+ 2 - 2
miniapp/src/main/java/com/kym/miniapp/utils/MybatisPlusGeneratorForMiniApp.java

@@ -49,8 +49,8 @@ public class MybatisPlusGeneratorForMiniApp {
                     builder.addInclude(
 //                                    "t_user",
 //                                    "t_account"
-                                    "t_charge_order"
-//                                    "t_wallet_detail",
+//                                    "t_charge_order",
+                                    "t_wallet_detail"
 //                                    "t_cars",
 //                            "t_collect"
                             )

+ 27 - 0
miniapp/src/main/resources/mappers/WalletDetailMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kym.mapper.miniapp.WalletDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.kym.entity.miniapp.WalletDetail">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="type" property="type" />
+        <result column="current" property="current" />
+        <result column="order_no" property="orderNo" />
+        <result column="amount" property="amount" />
+        <result column="commission" property="commission" />
+        <result column="transaction_id" property="transactionId" />
+        <result column="transaction_time" property="transactionTime" />
+        <result column="status" property="status" />
+        <result column="remark" property="remark" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, user_id, type, current, order_no, amount, commission, transaction_id, transaction_time, status, remark, create_time, update_time
+    </sql>
+
+</mapper>

+ 7 - 0
service/src/main/java/com/kym/service/enplus/EnNotifyService.java

@@ -11,4 +11,11 @@ public interface EnNotifyService {
 
 
     String handleNotificationStartChargeResult(JSONObject json);
+
+    String handleNotificationEquipChargeStatus(JSONObject json);
+
+    String handleNotificationStopChargeResult(JSONObject json);
+
+    String handleNotificationChargeOrderInfo(JSONObject json);
+
 }

+ 2 - 0
service/src/main/java/com/kym/service/enplus/EnPlusService.java

@@ -21,4 +21,6 @@ public interface EnPlusService {
     JSONObject queryEquipAuth(String connectorId, String equipAuthSeq);
 
     JSONObject queryEquipChargeStatus(String startChargeSeq);
+
+    JSONObject queryStopCharge(String startChargeSeq, String connectorId);
 }

+ 119 - 9
service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java

@@ -2,12 +2,17 @@ package com.kym.service.enplus.impl;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.kym.common.utils.IDGenerator;
 import com.kym.entity.miniapp.ChargeOrder;
+import com.kym.entity.miniapp.WalletDetail;
 import com.kym.service.enplus.EnNotifyService;
 import com.kym.service.enplus.EnPlusService;
+import com.kym.service.miniapp.AccountService;
 import com.kym.service.miniapp.ChargeOrderService;
+import com.kym.service.miniapp.WalletDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -27,8 +32,17 @@ public class EnNotifyServiceImpl implements EnNotifyService {
     @Autowired
     private ChargeOrderService chargeOrderService;
 
+    @Autowired
+    private AccountService accountService;
+
+    @Autowired
+    private IDGenerator idGenerator;
+
+    @Autowired
+    private WalletDetailService walletDetailService;
+
     /**
-     * EN+ 设备状态变化推送
+     * EN+ 充电站状态变化推送
      *
      * @param json
      * @return
@@ -47,11 +61,12 @@ public class EnNotifyServiceImpl implements EnNotifyService {
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public String handleNotificationStartChargeResult(JSONObject json) {
         var data = enPlusService.signValidation(json);
         var obj = JSONObject.parseObject(data);
         var startChargeSeq = obj.getString("StartChargeSeq");
-        var StartChargeSeqStat = obj.getIntValue("StartChargeSeqStat");
+        var startChargeSeqStat = obj.getIntValue("StartChargeSeqStat");
         var connectorId = obj.getString("connectorId");
         var startTime = obj.getString("StartTime");
 
@@ -59,7 +74,7 @@ public class EnNotifyServiceImpl implements EnNotifyService {
         UpdateWrapper<ChargeOrder> updateWrapper = new UpdateWrapper<>();
         updateWrapper.eq("connector_id", connectorId);
         updateWrapper.eq("start_charge_seq", startChargeSeq);
-        updateWrapper.set("charge_status", StartChargeSeqStat);
+        updateWrapper.set("charge_status", startChargeSeqStat);
         updateWrapper.set("start_time", LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         chargeOrderService.update(updateWrapper);
         return """
@@ -72,16 +87,111 @@ public class EnNotifyServiceImpl implements EnNotifyService {
     }
 
     /**
-     * 推送启动充电结果
+     * 推送充电状态
      *
      * @param json
      * @return
      */
-    String handleNotificationStartChargeStatus(JSONObject json) {
-        var data = enPlusService.signValidation(json);
-        // TODO 业务逻辑处理 更新订单信息 扣费
-        //  这里可能有坑,文档中为TotalSeviceMoney,正确的拼写为TotalServiceMoney
-        return null;
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String handleNotificationEquipChargeStatus(JSONObject json) {
+        var dataStr = enPlusService.signValidation(json);
+        var data = JSONObject.parseObject(dataStr);
+        var startChargeSeq = data.getString("StartChargeSeq");
+        var chargeOrder = chargeOrderService.getChargingOrderByStartChargeSeq(startChargeSeq);
+        // 更新订单信息
+        chargeOrder.setSoc(data.getBigDecimal("Soc"));
+        chargeOrder.setTotalPower(data.getBigDecimal("TotalPower"));
+        chargeOrder.setTotalMoney(data.getBigDecimal("TotalMoney"));
+        chargeOrder.setElecMoney(data.getBigDecimal("ElecMoney"));
+        chargeOrder.setServiceMoney(data.getBigDecimal("SeviceMoney")); // 这里文档service单词错误,按文档填写
+        chargeOrder.setSumPeriod(data.getIntValue("SumPeriod"));
+        chargeOrder.setChargeDetail(data.getString("ChargeDetails"));
+        chargeOrder.setChargeStatus(data.getIntValue("StartChargeSeqStat"));
+        chargeOrderService.updateById(chargeOrder);
+        return """
+                {
+                    "StartChargeSeq":%s,
+                    "SuccStat":%d
+                }
+                """.formatted(startChargeSeq, 0);
+    }
+
+
+    /**
+     * 推送停止充电结果
+     *
+     * @param json
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String handleNotificationStopChargeResult(JSONObject json) {
+        var dataStr = enPlusService.signValidation(json);
+        var data = JSONObject.parseObject(dataStr);
+        var startChargeSeq = data.getString("StartChargeSeq");
+        var chargeOrder = chargeOrderService.getChargingOrderByStartChargeSeq(startChargeSeq);
+        if (data.containsKey("SuccStat") && data.getIntValue("SuccStat") == 0) {
+            chargeOrder.setChargeStatus(data.getIntValue("StartChargeSeqStat"));
+            chargeOrderService.updateById(chargeOrder);
+        }
+        return """
+                {
+                    "StartChargeSeq":%s,
+                    "SuccStat":%d,
+                    "FailReason":%d
+                }
+                """.formatted(startChargeSeq, 0, 0);
+    }
+
+
+    /**
+     * 推送充电订单信息
+     *
+     * @param json
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String handleNotificationChargeOrderInfo(JSONObject json) {
+        var dataStr = enPlusService.signValidation(json);
+        var data = JSONObject.parseObject(dataStr);
+        var startChargeSeq = data.getString("StartChargeSeq");
+        var chargeOrder = chargeOrderService.getChargingOrderByStartChargeSeq(startChargeSeq);
+        // 更新订单信息
+        chargeOrder.setEndTime(LocalDateTime.parse(data.getString("EndTime"), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        chargeOrder.setTotalPower(data.getBigDecimal("TotalPower"));
+        chargeOrder.setElecMoney(data.getBigDecimal("TotalElecMoney"));
+        chargeOrder.setServiceMoney(data.getBigDecimal("TotalSeviceMoney")); // 这里文档service单词错误,按文档填写
+        chargeOrder.setTotalMoney(data.getBigDecimal("TotalMoney"));
+        chargeOrder.setStopReason(data.getIntValue("StopReason"));
+        chargeOrder.setSumPeriod(data.getIntValue("SumPeriod"));
+        chargeOrder.setChargeDetail(data.getString("ChargeDetails"));
+        chargeOrder.setOrderStatus(1);
+        chargeOrderService.updateById(chargeOrder);
+
+        // 扣费
+        var account = accountService.getAccountByUserId(chargeOrder.getUserId());
+        account.setBalance(account.getBalance().subtract(chargeOrder.getTotalMoney()));
+        accountService.save(account);
+
+        // 记录资金流水
+        var walletDetail = new WalletDetail();
+        walletDetail.setId(idGenerator.nextId());
+        walletDetail.setUserId(chargeOrder.getUserId());
+        walletDetail.setOrderNo(startChargeSeq);
+        walletDetail.setType(3);
+        walletDetail.setAmount(chargeOrder.getTotalMoney());
+        walletDetail.setTransactionTime(LocalDateTime.parse(data.getString("EndTime"), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        walletDetail.setStatus(1);
+        walletDetailService.save(walletDetail);
+        return """
+                {
+                    "StartChargeSeq":%s,
+                    "ConnectorID":%s,
+                    "ConfirmResult":%d
+                }
+                """.formatted(startChargeSeq, chargeOrder.getConnectorId(), 0);
     }
 
 

+ 4 - 4
service/src/main/java/com/kym/service/enplus/impl/EnPlusServiceImpl.java

@@ -183,7 +183,8 @@ public class EnPlusServiceImpl implements EnPlusService {
             // 验签失败
             EnResponse enResponse = new EnResponse();
             enResponse.setRet(4001);
-            enResponse.setMsg("签名错误");
+            enResponse.setMsg(ResponseEnum.EN_PLUS_PUSH_SIGN_FAIL.getMessage());
+            LOGGER.error("EN+推送数据验签失败,数据:{}", json);
             throw new EnPushException(ResponseEnum.EN_PLUS_PUSH_SIGN_FAIL, enResponse);
         }
 
@@ -273,7 +274,8 @@ public class EnPlusServiceImpl implements EnPlusService {
      * @param connectorID
      * @return
      */
-    JSONObject queryStopCharge(String startChargeSeq, String connectorID) {
+    @Override
+    public JSONObject queryStopCharge(String startChargeSeq, String connectorID) {
         var param = """
                 {
                     "StartChargeSeq":%s,
@@ -284,6 +286,4 @@ public class EnPlusServiceImpl implements EnPlusService {
         return JSONObject.parseObject(AESUtil.decrypt(response.getData()));
     }
 
-
-
 }

+ 2 - 0
service/src/main/java/com/kym/service/miniapp/ChargeOrderService.java

@@ -14,4 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface ChargeOrderService extends IService<ChargeOrder> {
 
     ChargeOrder getChargingOrderByUserId(Long userId);
+
+    ChargeOrder getChargingOrderByStartChargeSeq(String startChargeSeq);
 }

+ 4 - 1
service/src/main/java/com/kym/service/miniapp/ChargeService.java

@@ -8,7 +8,10 @@ import com.kym.entity.miniapp.ChargeOrder;
  * @date 2023-08-07 17:06
  */
 public interface ChargeService {
-    String startCharge(String connectorId);
+
+    String queryStartCharge(String connectorId);
 
     ChargeOrder queryEquipChargeStatus(String startChargeSeq);
+
+    void queryStopCharge(String startChargeSeq, String connectorId);
 }

+ 1 - 1
service/src/main/java/com/kym/service/miniapp/WalletDetailService.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * </p>
  *
  * @author skyline
- * @since 2023-07-22
+ * @since 2023-08-09
  */
 public interface WalletDetailService extends IService<WalletDetail> {
 

+ 2 - 0
service/src/main/java/com/kym/service/miniapp/impl/AccountServiceImpl.java

@@ -1,5 +1,6 @@
 package com.kym.service.miniapp.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.kym.entity.miniapp.Account;
 import com.kym.mapper.miniapp.AccountMapper;
 import com.kym.service.miniapp.AccountService;
@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
  * @since 2023-08-07
  */
 @Service
+@DS("db-admin")
 public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements AccountService {
     @Override
     public Account getAccountByUserId(Long userId){

+ 4 - 0
service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java

@@ -20,5 +20,9 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
     public ChargeOrder getChargingOrderByUserId(Long userId) {
         return getOne(lambdaQuery().eq(ChargeOrder::getUserId,userId).eq(ChargeOrder::getChargeStatus,2));
     }
+    @Override
+    public ChargeOrder getChargingOrderByStartChargeSeq(String startChargeSeq) {
+        return getOne(lambdaQuery().eq(ChargeOrder::getStartChargeSeq,startChargeSeq));
+    }
 
 }

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

@@ -60,7 +60,7 @@ public class ChargeServiceImpl implements ChargeService {
      * @return
      */
     @Override
-    public String startCharge(String connectorId) {
+    public String queryStartCharge(String connectorId) {
         var userId = StpUtil.getSession().getLong("userId");
         if (connectorId.length() == 6) {
             // 查询EN+设备SN
@@ -176,7 +176,7 @@ public class ChargeServiceImpl implements ChargeService {
             var data = enPlusService.queryEquipChargeStatus(startChargeSeq);
 
             // 更新订单信息
-            chargeOrder.setSoc(data.getBigDecimal("soc"));
+            chargeOrder.setSoc(data.getBigDecimal("Soc"));
             chargeOrder.setTotalPower(data.getBigDecimal("TotalPower"));
             chargeOrder.setTotalMoney(data.getBigDecimal("TotalMoney"));
             chargeOrder.setElecMoney(data.getBigDecimal("ElecMoney"));
@@ -193,4 +193,27 @@ public class ChargeServiceImpl implements ChargeService {
     }
 
 
+    @Override
+    public void queryStopCharge(String startChargeSeq, String connectorId) {
+        if (connectorId.length() == 6) {
+            var equipmentRelation = equipmentRelationService.getByShortId(connectorId);
+            var equipmentId = equipmentRelation.getEquipmentId();
+            if (equipmentId.length() == 16) {
+                // 如果是16位,末尾补1作为单枪枪号
+                connectorId = equipmentId.concat("1");
+            }
+        } else if (connectorId.length() == 16) {
+            connectorId = connectorId.concat("1");
+        }
+        var data = enPlusService.queryStopCharge(startChargeSeq, connectorId);
+        if (data.containsKey("SuccStat")&&data.getIntValue("SuccStat") != 0) {
+            // 记录失败原因
+            LOGGER.error("订单:{}停止充电失败,返回结果{}", startChargeSeq, data);
+            throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_STOP_FAIL);
+        }
+        // 这里不更新订单状态,等待EN+推送停止充电结果信息再处理
+
+    }
+
+
 }

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

@@ -1,9 +1,9 @@
 package com.kym.service.miniapp.impl;
 
 import com.kym.entity.miniapp.WalletDetail;
+import com.kym.mapper.miniapp.WalletDetailMapper;
 import com.kym.service.miniapp.WalletDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.kym.mapper.miniapp.WalletDetailMapper;
 import org.springframework.stereotype.Service;
 
 /**
@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
  * </p>
  *
  * @author skyline
- * @since 2023-07-22
+ * @since 2023-08-09
  */
 @Service
 public class WalletDetailServiceImpl extends ServiceImpl<WalletDetailMapper, WalletDetail> implements WalletDetailService {