فهرست منبع

充电站相关接口

skyline 2 سال پیش
والد
کامیت
d64c7c5744

+ 3 - 22
entity/src/main/java/com/kym/entity/admin/Station.java

@@ -6,13 +6,11 @@ import com.alibaba.fastjson2.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.*;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.Map;
 
 /**
  * <p>
@@ -25,7 +23,6 @@ import java.util.Map;
 @Getter
 @Setter
 @TableName("t_station")
-@JsonIgnoreProperties(ignoreUnknown = true)
 public class Station implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -182,24 +179,8 @@ public class Station implements Serializable {
     private LocalDateTime updateTime;
 
     @JSONCreator
-    public Station(@JSONField(name = "StationLng") String lng, @JSONField(name = "StationLat") String lat) {
+    public Station(@JSONField(name = "StationLng") Double lng, @JSONField(name = "StationLat") Double lat) {
         this.location = JSONObject.of("stationLng", lng, "stationLat", lat);
     }
 
-    @Data
-    @AllArgsConstructor
-    @NoArgsConstructor
-    public static class GeoPoint implements Serializable {
-        /**
-         * 纬度
-         */
-        @JSONField(name = "StationLng")
-        private Double stationLng;
-        /**
-         * 经度
-         */
-        @JSONField(name = "StationLat")
-        private Double stationLat;
-
-    }
 }

+ 9 - 4
entity/src/main/java/com/kym/entity/enplus/EnConnectorStatusInfo.java

@@ -1,5 +1,6 @@
 package com.kym.entity.enplus;
 
+import com.alibaba.fastjson2.annotation.JSONField;
 import lombok.Data;
 
 /**
@@ -12,7 +13,8 @@ public class EnConnectorStatusInfo {
     /**
      * 充电设备接口编码
      */
-    private String ConnectorID;
+    @JSONField(name = "ConnectorID")
+    private String connectorId;
     /**
      * 充个设备接口状态
      * 0:离网
@@ -22,19 +24,22 @@ public class EnConnectorStatusInfo {
      * 4:占用(预约锁定)
      * 255:故障
      */
-    private int Status;
+    @JSONField(name = "Status")
+    private Integer status;
     /**
      * 车位状态
      * 0:未知
      * 10:空闲
      * 50:占用
      */
-    private int ParkStatus;
+    @JSONField(name = "ParkStatus")
+    private Integer parkStatus;
     /**
      * 地锁状态
      * 0:未知
      * 10:已解锁
      * 50:已上锁
      */
-    private int LockStatus;
+    @JSONField(name = "LockStatus")
+    private Integer lockStatus;
 }

+ 11 - 2
entity/src/main/java/com/kym/entity/enplus/StationStatusInfo.java

@@ -1,5 +1,8 @@
 package com.kym.entity.enplus;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.annotation.JSONCreator;
+import com.alibaba.fastjson2.annotation.JSONField;
 import lombok.Data;
 
 import java.util.List;
@@ -14,11 +17,17 @@ public class StationStatusInfo {
     /**
      * 充电站ID(20字符,运营商自定义的唯一编码,不足长度在前方补0)
      */
-    private String StationID;
+    @JSONField(name = "StationID")
+    private String stationId;
 
     /**
      * 充电设备接口状态列表
      */
-    private List<EnConnectorStatusInfo> ConnectorStatusInfos;
+    private List<EnConnectorStatusInfo> connectorStatusInfos;
+
+    @JSONCreator
+    public StationStatusInfo(@JSONField(name = "connectorStatusInfos") JSONArray infos) {
+        this.connectorStatusInfos = infos.toJavaList(EnConnectorStatusInfo.class);
+    }
 
 }

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

@@ -3,16 +3,20 @@ 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.admin.Station;
 import com.kym.entity.enplus.EnResponse;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.service.admin.StationService;
 import com.kym.service.enplus.EnNotifyService;
 import com.kym.service.enplus.EnPlusService;
 import com.kym.service.miniapp.ChargeService;
+import lombok.SneakyThrows;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 
 /**
  * 充电
@@ -36,16 +40,17 @@ public class ChargerController {
     @Autowired
     private EnNotifyService enNotifyService;
 
+    @SneakyThrows
     @SysLog("充电站列表")
-    @GetMapping("listStation")
+    @GetMapping("/listStation")
     R listChargeStation(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
         // 请求en+接口
-        var response = stationService.queryStationInfo(pageNum, pageSize);
+        List<Station> response = stationService.queryStationInfo(pageNum, pageSize);
         return R.success(response);
     }
 
     @SysLog("充电站状态")
-    @GetMapping("stationStatus")
+    @GetMapping("/stationStatus")
     R stationStatus(@RequestParam("ids") String ids) {
         // 请求en+接口
         var response = stationService.stationStatus(ids.split(","));
@@ -53,7 +58,7 @@ public class ChargerController {
     }
 
     @SysLog("充电详情")
-    @GetMapping("stationStatusDetail")
+    @GetMapping("/stationStatusDetail")
     R stationStatusDetail(@RequestParam("stationId") String stationId,
                           @RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd") String startTime,
                           @RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd") String endTime) {

+ 2 - 1
service/src/main/java/com/kym/service/admin/StationService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.kym.entity.admin.Station;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kym.entity.enplus.StationStatusInfo;
 
 import java.util.List;
 
@@ -19,7 +20,7 @@ public interface StationService extends IService<Station> {
 
     List<Station> queryStationInfo(int pageNum, int pageSize) throws JsonProcessingException;
 
-    JSONObject stationStatus(String[] ids);
+    List<StationStatusInfo> stationStatus(String[] ids);
 
     JSONObject stationStats(String stationId, String startTime, String endTime);
 }

+ 9 - 10
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -1,26 +1,23 @@
 package com.kym.service.admin.impl;
 
-import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
+import com.alibaba.fastjson2.JSONReader;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.kym.common.enums.EnPlusApi;
 import com.kym.common.utils.AESUtil;
 import com.kym.entity.admin.Station;
+import com.kym.entity.enplus.StationStatusInfo;
 import com.kym.mapper.admin.StationMapper;
 import com.kym.service.admin.StationService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kym.service.enplus.EnPlusService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.json.JacksonJsonParser;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -39,7 +36,7 @@ public class StationServiceImpl extends ServiceImpl<StationMapper, Station> impl
     private EnPlusService enPlusService;
 
     @Override
-    public List<Station> queryStationInfo(int pageNum, int pageSize) throws JsonProcessingException {
+    public List<Station> queryStationInfo(int pageNum, int pageSize) {
         var param = """
                 {
                     "PageNo":%d,
@@ -53,13 +50,14 @@ public class StationServiceImpl extends ServiceImpl<StationMapper, Station> impl
 
         ObjectMapper mapper = new ObjectMapper();
 //        var station = mapper.convertValue(enStations.get("StationInfos"), List<Station>.class);
-        var stations = JSONArray.parseArray(enStations.get("StationInfos").toString(),Station.class);
+        var stations = JSONArray.parseArray(enStations.get("StationInfos").toString(), Station.class);
         return stations;
+
     }
 
 
     @Override
-    public JSONObject stationStatus(String[] ids) {
+    public List<StationStatusInfo> stationStatus(String[] ids) {
         var param = """
                 {
                     "StationIDs":["%s"]
@@ -67,7 +65,8 @@ public class StationServiceImpl extends ServiceImpl<StationMapper, Station> impl
                 """.formatted(String.join("\",\"", ids));
         var response = enPlusService.enPlusPost(EnPlusApi.EN_PLUS_QUERY_STATION_STATUS.getApi(), enPlusService.buildParams(param));
         // TODO: 2023-08-12 包装成自己的数据格式
-        return JSONObject.parseObject(AESUtil.decrypt(response.getData()));
+        var enStationStatus = JSONObject.parseObject(AESUtil.decrypt(response.getData()));
+        return enStationStatus.getJSONArray("StationStatusInfos").toJavaList(StationStatusInfo.class, JSONReader.Feature.SupportArrayToBean);
     }
 
     @Override