skyline преди 2 години
родител
ревизия
9ef6208b60

+ 3 - 3
admin/src/main/java/com/kym/admin/controller/StationController.java

@@ -5,14 +5,14 @@ import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
- *  前端控制器
+ * 充电站信息 前端控制器
  * </p>
  *
  * @author skyline
- * @since 2023-06-27
+ * @since 2023-08-12
  */
 @RestController
-@RequestMapping("/charge/station")
+@RequestMapping("/station")
 public class StationController {
 
 }

+ 0 - 6
common/pom.xml

@@ -42,12 +42,6 @@
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>com.alibaba.fastjson2</groupId>
-            <artifactId>fastjson2</artifactId>
-            <version>2.0.35</version>
-        </dependency>
-
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>

+ 55 - 1
entity/pom.xml

@@ -27,12 +27,66 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.3.1</version>
+            <version>3.5.3.2</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.35</version>
+        </dependency>
+
+        <!-- 处理空间数据 -->
+        <dependency>
+            <groupId>org.locationtech.jts</groupId>
+            <artifactId>jts-core</artifactId>
+            <version>1.19.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.geotools</groupId>
+            <artifactId>gt-epsg-hsql</artifactId>
+            <version>29.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.geotools</groupId>
+            <artifactId>gt-main</artifactId>
+            <version>29.2</version>
+        </dependency>
+
+
     </dependencies>
+    <!-- 空间处理这几个依赖单独仓库下载 -->
+    <repositories>
+        <repository>
+            <id>osgeo</id>
+            <name>OSGeo Release Repository</name>
+            <url>https://repo.osgeo.org/repository/release/</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+        <repository>
+            <id>osgeo-snapshot</id>
+            <name>OSGeo Snapshot Repository</name>
+            <url>https://repo.osgeo.org/repository/snapshot/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
 
 </project>

+ 162 - 12
entity/src/main/java/com/kym/entity/admin/Station.java

@@ -1,55 +1,205 @@
 package com.kym.entity.admin;
 
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.annotation.JSONCreator;
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Getter;
-import lombok.Setter;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.*;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.Map;
 
 /**
  * <p>
- * 
+ * 充电站信息
  * </p>
  *
  * @author skyline
- * @since 2023-06-27
+ * @since 2023-08-12
  */
 @Getter
 @Setter
 @TableName("t_station")
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Station implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    private Integer id;
+    private Long id;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 电站组id
+     */
+    private Long groupId;
+
+    /**
+     * en+充电站id
+     */
+    @JSONField(name = "StationID")
+    private String stationId;
+
+    /**
+     * en+运营商id
+     */
+    @JSONField(name = "OperatorID")
+    private String operatorId;
+
+    /**
+     * 设备所属运营平台组织机构代码
+     */
+    @JSONField(name = "EquipmentOwnerID")
+    private String equipmentOwnerId;
 
     /**
      * 站点名称
      */
+    @JSONField(name = "StationName")
     private String stationName;
 
     /**
-     * 类型: 0慢充 1快充
+     * 充电中国家代码:CN
      */
-    private String stationType;
+    @JSONField(name = "CountryCode")
+    private String countryCode;
 
     /**
-     * 充电桩位置
+     * 充电站省市辖区编码
      */
-    private byte[] stationLocation;
+    @JSONField(name = "AreaCode")
+    private String areaCode;
 
     /**
-     * 停车费
+     * 地址
+     */
+    @JSONField(name = "Address")
+    private String address;
+
+    /**
+     * 站点电话
      */
-    private String parkingFee;
+    @JSONField(name = "StationTel")
+    private String stationTel;
+
+    /**
+     * 服务电话
+     */
+    @JSONField(name = "ServiceTel")
+    private String serviceTel;
+
+    /**
+     * 站点类型:1:公共 50:个人 100:公交(专业)101:环卫(专用)102:物流(专用)103:出租车(专用)255:其他
+     */
+    @JSONField(name = "StationType")
+    private Integer stationType;
+
+    /**
+     * 站点状态:0:未知 1:建设中 5:关闭下线 6:维护中 50:正常使用
+     */
+    @JSONField(name = "StationStatus")
+    private Integer stationStatus;
 
     /**
      * 充电车位数量
      */
+    @JSONField(name = "ParkNums")
     private Integer parkingNum;
 
+    /**
+     * 充电桩位置坐标
+     */
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private JSONObject location;
+    /**
+     * 站点引导
+     */
+    @JSONField(name = "SiteGuide")
+    private String siteGuide;
+    /**
+     * 建设场所:1:居民区 2:公共机构 3:企事业单位 4:写字楼 5:工业园区 6:交通枢纽 7:大型文体设施 8:城市绿地 9:大型建筑配建停车场 10:路边停车位 11:城际高速服务区 255:其他
+     */
+    @JSONField(name = "Construction")
+    private Integer construction;
+    /**
+     * 站点照片
+     */
+    private String pictures;
+    /**
+     * 使用车型描述
+     */
+    @JSONField(name = "MatchCars")
+    private String matchCars;
+    /**
+     * 车位楼层及数量描述
+     */
+    @JSONField(name = "ParkInfo")
+    private String parkInfo;
+    /**
+     * 营业时间描述
+     */
+    @JSONField(name = "BusineHours")
+    private String businessHours;
+    /**
+     * 充电费描述
+     */
+    @JSONField(name = "ElectricityFee")
+    private String electricityFee;
+    /**
+     * 服务费率描述
+     */
+    @JSONField(name = "ServiceFee")
+    private String serviceFee;
+    /**
+     * 停车费
+     */
+    @JSONField(name = "ParkFee")
+    private String parkFee;
+    /**
+     * 支付方式:刷卡、线上、现金(电子钱包类卡为刷卡、身份鉴权卡、微信/支付宝、APP为线上)
+     */
+    @JSONField(name = "Payment")
+    private String payment;
+    /**
+     * 是否支持预约:0:不支持 1:支持
+     */
+    @JSONField(name = "SupportOrder")
+    private Integer supportOrder;
+    /**
+     * 备注
+     */
+    @JSONField(name = "Remark")
+    private String remark;
     private LocalDateTime createTime;
-
     private LocalDateTime updateTime;
+
+    @JSONCreator
+    public Station(@JSONField(name = "StationLng") String lng, @JSONField(name = "StationLat") String 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;
+
+    }
 }

+ 1 - 1
mapper/pom.xml

@@ -27,7 +27,7 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-generator</artifactId>
-            <version>3.5.3.1</version>
+            <version>3.5.3.2</version>
         </dependency>
 
         <!-- 代码生成使用 -->

+ 2 - 2
mapper/src/main/java/com/kym/mapper/admin/StationMapper.java

@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * <p>
- *  Mapper 接口
+ * 充电站信息 Mapper 接口
  * </p>
  *
  * @author skyline
- * @since 2023-06-27
+ * @since 2023-08-12
  */
 public interface StationMapper extends BaseMapper<Station> {
 

+ 25 - 3
mapper/src/main/resources/mappers/admin/StationMapper.xml

@@ -5,18 +5,40 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.kym.entity.admin.Station">
         <id column="id" property="id" />
+        <result column="company_id" property="companyId" />
+        <result column="group_id" property="groupId" />
+        <result column="station_id" property="stationId" />
+        <result column="operator_id" property="operatorId" />
+        <result column="equipment_owner_id" property="equipmentOwnerId" />
         <result column="station_name" property="stationName" />
+        <result column="country_code" property="countryCode" />
+        <result column="area_code" property="areaCode" />
+        <result column="address" property="address" />
+        <result column="station_tel" property="stationTel" />
+        <result column="service_tel" property="serviceTel" />
         <result column="station_type" property="stationType" />
-        <result column="station_location" property="stationLocation" />
-        <result column="parking_fee" property="parkingFee" />
+        <result column="station_status" property="stationStatus" />
         <result column="parking_num" property="parkingNum" />
+        <result column="location" property="location" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+        <result column="site_guide" property="siteGuide" />
+        <result column="construction" property="construction" />
+        <result column="pictures" property="pictures" />
+        <result column="match_cars" property="matchCars" />
+        <result column="park_info" property="parkInfo" />
+        <result column="business_hours" property="businessHours" />
+        <result column="electricity_fee" property="electricityFee" />
+        <result column="service_fee" property="serviceFee" />
+        <result column="park_fee" property="parkFee" />
+        <result column="payment" property="payment" />
+        <result column="support_order" property="supportOrder" />
+        <result column="remark" property="remark" />
         <result column="create_time" property="createTime" />
         <result column="update_time" property="updateTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, station_name, station_type, station_location, parking_fee, parking_num, create_time, update_time
+        id, company_id, group_id, station_id, operator_id, equipment_owner_id, station_name, country_code, area_code, address, station_tel, service_tel, station_type, station_status, parking_num, location, site_guide, construction, pictures, match_cars, park_info, business_hours, electricity_fee, service_fee, park_fee, payment, support_order, remark, create_time, update_time
     </sql>
 
 </mapper>

+ 1 - 1
miniapp/src/main/java/com/kym/miniapp/controller/UserController.java

@@ -108,7 +108,7 @@ public class UserController {
 
     @SysLog("收藏")
     @PostMapping("/collect")
-    R saveCollect(@RequestParam Long stationId, byte status) {
+    R saveCollect(@RequestParam String stationId, Integer status) {
         collectService.updateCollect(stationId, status);
         return R.success();
     }

+ 7 - 4
service/src/main/java/com/kym/service/admin/StationService.java

@@ -1,20 +1,23 @@
 package com.kym.service.admin;
 
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.kym.entity.admin.Station;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
 
 /**
  * <p>
- * 服务类
+ * 充电站信息 服务类
  * </p>
  *
  * @author skyline
- * @since 2023-06-27
+ * @since 2023-08-12
  */
 public interface StationService extends IService<Station> {
 
-    JSONObject queryStationInfo(int pageNum, int pageSize);
+    List<Station> queryStationInfo(int pageNum, int pageSize) throws JsonProcessingException;
 
     JSONObject stationStatus(String[] ids);
 

+ 22 - 6
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -1,25 +1,34 @@
 package com.kym.service.admin.impl;
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+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.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>
- * 服务实现类
+ * 充电站信息 服务实现类
  * </p>
  *
  * @author skyline
- * @since 2023-06-27
+ * @since 2023-08-12
  */
 @Service
 public class StationServiceImpl extends ServiceImpl<StationMapper, Station> implements StationService {
@@ -30,7 +39,7 @@ public class StationServiceImpl extends ServiceImpl<StationMapper, Station> impl
     private EnPlusService enPlusService;
 
     @Override
-    public JSONObject queryStationInfo(int pageNum, int pageSize) {
+    public List<Station> queryStationInfo(int pageNum, int pageSize) throws JsonProcessingException {
         var param = """
                 {
                     "PageNo":%d,
@@ -39,7 +48,13 @@ public class StationServiceImpl extends ServiceImpl<StationMapper, Station> impl
                 }
                 """.formatted(pageNum, pageSize);
         var response = enPlusService.enPlusPost(EnPlusApi.EN_PLUS_QUERY_STATION_INFO.getApi(), enPlusService.buildParams(param));
-        return JSONObject.parseObject(AESUtil.decrypt(response.getData()));
+        // TODO: 2023-08-12 包装成自己的数据格式
+        var enStations = JSONObject.parseObject(AESUtil.decrypt(response.getData()));
+
+        ObjectMapper mapper = new ObjectMapper();
+//        var station = mapper.convertValue(enStations.get("StationInfos"), List<Station>.class);
+        var stations = JSONArray.parseArray(enStations.get("StationInfos").toString(),Station.class);
+        return stations;
     }
 
 
@@ -51,6 +66,7 @@ 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()));
     }
 
@@ -64,8 +80,8 @@ public class StationServiceImpl extends ServiceImpl<StationMapper, Station> impl
                 }
                 """.formatted(stationId, startTime, endTime);
         var response = enPlusService.enPlusPost(EnPlusApi.EN_PLUS_QUERY_STATION_STATS.getApi(), enPlusService.buildParams(param));
+        // TODO: 2023-08-12 包装成自己的数据格式
         return JSONObject.parseObject(AESUtil.decrypt(response.getData()));
     }
 
-
 }