From 2550c4bbff05d30fa9207d30bfa2efca2c167a83 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 09 八月 2024 16:48:59 +0800
Subject: [PATCH] 站点详情
---
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 4 +
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java | 17 ++++
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GeodesyUtil.java | 75 ++++++++++++++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteDetailQuery.java | 27 ++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java | 17 ++++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 11 ++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java | 8 ++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 10 ++
ruoyi-common/ruoyi-common-core/pom.xml | 5 +
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java | 15 +++
10 files changed, 186 insertions(+), 3 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteDetailQuery.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteDetailQuery.java
new file mode 100644
index 0000000..cad843c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteDetailQuery.java
@@ -0,0 +1,27 @@
+package com.ruoyi.chargingPile.api.query;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "SiteDetailQuery对象",description = "站点详情查询条件")
+public class SiteDetailQuery implements Serializable {
+
+ @ApiModelProperty(value = "站点id")
+ @NotNull(message = "站点id不能为空")
+ private Integer siteId;
+
+ @ApiModelProperty(value = "经度")
+ @NotBlank(message = "地址经度不能为空")
+ private String lon;
+
+ @ApiModelProperty(value = "纬度")
+ @NotBlank(message = "地址纬度不能为空")
+ private String lat;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java
new file mode 100644
index 0000000..a5e9f48
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import com.ruoyi.chargingPile.api.model.Site;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ChargingGunCountVO对象",description = "充电枪数量VO")
+public class ChargingGunCountVO extends Site {
+
+ @ApiModelProperty(value = "充电枪在线数量")
+ private Integer onlineCount;
+ @ApiModelProperty(value = "充电枪总数数量")
+ private Integer totalCount;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java
new file mode 100644
index 0000000..8edc9bd
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import com.ruoyi.chargingPile.api.model.Site;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "SiteDetailVO对象",description = "站点详情VO")
+public class SiteDetailVO extends Site {
+
+ @ApiModelProperty(value = "绑定车牌提示文案")
+ private String bindCarTips;
+ @ApiModelProperty(value = "距离")
+ private double distance;
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index d5c10c8..09938de 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -140,6 +140,11 @@
<version>2.8.0</version>
</dependency>
+ <dependency>
+ <groupId>org.gavaghan</groupId>
+ <artifactId>geodesy</artifactId>
+ <version>1.1.3</version>
+ </dependency>
</dependencies>
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GeodesyUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GeodesyUtil.java
new file mode 100644
index 0000000..759e585
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GeodesyUtil.java
@@ -0,0 +1,75 @@
+package com.ruoyi.common.core.utils;
+
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GeodeticCalculator;
+import org.gavaghan.geodesy.GeodeticCurve;
+import org.gavaghan.geodesy.GlobalCoordinates;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 计算两个金纬度坐标之间的直线距离
+ */
+@Component
+public class GeodesyUtil {
+
+
+ /**
+ * 获取直线距离
+ * @param fromLonLat
+ * @param toLonLat
+ * @return
+ */
+ public Map<String, Double> getDistance(String fromLonLat, String toLonLat){
+ Map<String, Double> map = null;
+ if(StringUtils.isNotEmpty(fromLonLat) && StringUtils.isNotEmpty(toLonLat)){
+ map = new HashMap<>();
+ String[] from = fromLonLat.split(",");
+ String[] to = toLonLat.split(",");
+ GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0]));
+ GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0]));
+ double Sphere = getDistanceMeter(source, target, Ellipsoid.Sphere);
+ double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84);
+ double GRS80 = getDistanceMeter(source, target, Ellipsoid.GRS80);
+ double GRS67 = getDistanceMeter(source, target, Ellipsoid.GRS67);
+ double ANS = getDistanceMeter(source, target, Ellipsoid.ANS);
+ double WGS72 = getDistanceMeter(source, target, Ellipsoid.WGS72);
+ double Clarke1858 = getDistanceMeter(source, target, Ellipsoid.Clarke1858);
+ double Clarke1880 = getDistanceMeter(source, target, Ellipsoid.Clarke1880);
+// System.out.println("Sphere坐标系计算结果:"+Sphere + "米");
+// System.out.println("WGS84坐标系计算结果:"+WGS84 + "米");
+// System.out.println("GRS80坐标系计算结果:"+GRS80 + "米");
+// System.out.println("GRS67坐标系计算结果:"+GRS67 + "米");
+// System.out.println("ANS坐标系计算结果:"+ANS + "米");
+// System.out.println("WGS72坐标系计算结果:"+WGS72 + "米");
+// System.out.println("Clarke1858坐标系计算结果:"+Clarke1858 + "米");
+// System.out.println("Clarke1880坐标系计算结果:"+Clarke1880 + "米");
+ map.put("Sphere", Sphere);
+ map.put("WGS84", WGS84);
+ map.put("GRS80", GRS80);
+ map.put("GRS67", GRS67);
+ map.put("ANS", ANS);
+ map.put("WGS72", WGS72);
+ map.put("Clarke1858", Clarke1858);
+ map.put("Clarke1880", Clarke1880);
+ }
+ return map;
+ }
+
+
+ private double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){
+ //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
+ GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
+ return geoCurve.getEllipsoidalDistance();
+ }
+
+
+
+ public static void main(String[] ages){
+ GeodesyUtil geodesyUtil = new GeodesyUtil();
+ Map<String, Double> distance = geodesyUtil.getDistance("115.481028,39.989643", "114.465302,40.004717");
+ System.err.println(distance);
+ }
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index a6334e3..fa4d7b9 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -4,7 +4,9 @@
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.query.GetSiteList;
+import com.ruoyi.chargingPile.api.query.SiteDetailQuery;
import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteDetailVO;
import com.ruoyi.chargingPile.api.vo.SiteVO;
import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -44,6 +46,15 @@
return AjaxResult.success(siteService.pageList(query));
}
+ @ApiOperation(value = "获取站点详细信息", tags = {"小程序-站点管理"})
+ @GetMapping("/getDetailById")
+ public AjaxResult<SiteDetailVO> getDetailById(@Validated @RequestBody SiteDetailQuery query){
+ SiteDetailVO siteDetailVO = siteService.getDetailById(query.getSiteId());
+
+ // TODO 查询绑定车牌提示文案
+ return AjaxResult.success(siteDetailVO);
+ }
+
@ResponseBody
@PostMapping("/getSiteList")
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
index 7fae91b..a066725 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
@@ -5,6 +5,7 @@
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.query.GetSiteList;
import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteDetailVO;
import com.ruoyi.chargingPile.api.vo.SiteVO;
import com.ruoyi.common.core.web.page.PageInfo;
import org.apache.ibatis.annotations.Param;
@@ -32,4 +33,11 @@
*/
List<SiteVO> pageList(@Param("query")SiteQuery query,@Param("pageInfo")PageInfo<SiteVO> pageInfo);
+ /**
+ * 获取站点详情
+ * @param siteId
+ * @return
+ */
+ SiteDetailVO getDetailById(@Param("siteId")Integer siteId);
+
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
index 722b578..857b0c5 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
@@ -5,6 +5,7 @@
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.query.GetSiteList;
import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteDetailVO;
import com.ruoyi.chargingPile.api.vo.SiteVO;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -57,7 +58,19 @@
* @param accountingStrategyId 计费策略id
*/
void setAccountingStrategy(Integer id, Integer accountingStrategyId);
-
+
+ /**
+ * 获取站点分页列表
+ * @param query
+ * @return
+ */
PageInfo<SiteVO> pageList(SiteQuery query);
+
+ /**
+ * 获取站点详情
+ * @param siteId
+ * @return
+ */
+ SiteDetailVO getDetailById(Integer siteId);
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
index 98220eb..f28ee2c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.query.GetSiteList;
import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteDetailVO;
import com.ruoyi.chargingPile.api.vo.SiteVO;
import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
import com.ruoyi.chargingPile.mapper.SiteMapper;
@@ -162,8 +163,13 @@
pageInfo.setRecords(list);
return pageInfo;
}
-
-
+
+ @Override
+ public SiteDetailVO getDetailById(Integer siteId) {
+ return this.baseMapper.getDetailById(siteId);
+ }
+
+
/**
* 设置站点计费策略
* @param id 站点id
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
index ba0802e..ece5148 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -168,4 +168,8 @@
</choose>
</if>
</select>
+ <select id="getDetailById" resultType="com.ruoyi.chargingPile.api.vo.SiteDetailVO">
+ SELECT <include refid="Base_Column_List"></include>
+ FROM t_site WHERE id = #{siteId} AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.7.1