From dd0683827a129337fe8abfd88e3ecac4bdf6137c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 08 八月 2024 17:20:17 +0800
Subject: [PATCH] 首页,地图导航

---
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml                              |   79 ++++++++++++
 /dev/null                                                                                                           |  166 ---------------------------
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java                            |   25 ++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                |   15 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java                      |   29 ++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java                        |    9 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java             |   11 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java                     |    9 +
 9 files changed, 173 insertions(+), 172 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java
deleted file mode 100644
index b099b24..0000000
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package com.ruoyi.chargingPile.api.model;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.ruoyi.common.core.web.domain.BasePojo;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author xiaochen
- * @since 2024-08-08
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("t_site")
-@ApiModel(value="TSite对象", description="")
-public class TSite extends BasePojo {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "合作商id")
-    @TableField("partner_id")
-    private Integer partnerId;
-
-    @ApiModelProperty(value = "站点编号")
-    @TableField("code")
-    private String code;
-
-    @ApiModelProperty(value = "站点名称")
-    @TableField("name")
-    private String name;
-
-    @ApiModelProperty(value = "站点类型(0=其他,1=公共,2=个人,3=公交(专业),4=环卫(专用),5=物流(专用),6=出租车(专用))")
-    @TableField("site_type")
-    private Integer siteType;
-
-    @ApiModelProperty(value = "经营类型(1=直营,2=非直营)")
-    @TableField("business_category")
-    private Integer businessCategory;
-
-    @ApiModelProperty(value = "站点状态(1=正常使用,2=维修中,3=关闭下线)")
-    @TableField("status")
-    private Integer status;
-
-    @ApiModelProperty(value = "建设场所(0=其他,1=居民区,2=公共机构,3=企事业单位,4=写字楼,5=工业园区,6=交通枢纽,7=大型文体设施,8=城市绿地,9=大型建筑配建停车场,10=路边停车位,11=城际高速服务区)")
-    @TableField("construction_site")
-    private Integer constructionSite;
-
-    @ApiModelProperty(value = "站点环境图")
-    @TableField("img_url")
-    private String imgUrl;
-
-    @ApiModelProperty(value = "省名称")
-    @TableField("province")
-    private String province;
-
-    @ApiModelProperty(value = "省区划代码")
-    @TableField("province_code")
-    private String provinceCode;
-
-    @ApiModelProperty(value = "市名称")
-    @TableField("city")
-    private String city;
-
-    @ApiModelProperty(value = "市区划代码")
-    @TableField("city_code")
-    private String cityCode;
-
-    @ApiModelProperty(value = "区县名称")
-    @TableField("districts")
-    private String districts;
-
-    @ApiModelProperty(value = "区县区划代码")
-    @TableField("districts_code")
-    private String districtsCode;
-
-    @ApiModelProperty(value = "经度")
-    @TableField("lon")
-    private String lon;
-
-    @ApiModelProperty(value = "纬度")
-    @TableField("lat")
-    private String lat;
-
-    @ApiModelProperty(value = "详细地址")
-    @TableField("address")
-    private String address;
-
-    @ApiModelProperty(value = "国家代码")
-    @TableField("country_code")
-    private String countryCode;
-
-    @ApiModelProperty(value = "站点电话")
-    @TableField("phone")
-    private String phone;
-
-    @ApiModelProperty(value = "服务电话")
-    @TableField("service_phone")
-    private String servicePhone;
-
-    @ApiModelProperty(value = "站点引导")
-    @TableField("guide")
-    private String guide;
-
-    @ApiModelProperty(value = "开始服务时间")
-    @TableField("start_service_time")
-    private String startServiceTime;
-
-    @ApiModelProperty(value = "结束服务时间")
-    @TableField("end_service_time")
-    private String endServiceTime;
-
-    @ApiModelProperty(value = "站内提供服务")
-    @TableField("service_description")
-    private String serviceDescription;
-
-    @ApiModelProperty(value = "车型描述")
-    @TableField("vehicle_description")
-    private String vehicleDescription;
-
-    @ApiModelProperty(value = "车位数")
-    @TableField("parking_space")
-    private Integer parkingSpace;
-
-    @ApiModelProperty(value = "充电费率描述")
-    @TableField("rate_description")
-    private String rateDescription;
-
-    @ApiModelProperty(value = "超时占位费说明")
-    @TableField("space_charge_explain")
-    private String spaceChargeExplain;
-
-    @ApiModelProperty(value = "计费策略id")
-    @TableField("accounting_strategy_id")
-    private Integer accountingStrategyId;
-
-    @ApiModelProperty(value = "建站时间")
-    @TableField("establishment_time")
-    private LocalDateTime establishmentTime;
-
-    @ApiModelProperty(value = "排序")
-    @TableField("sort")
-    private Integer sort;
-
-    @ApiModelProperty(value = "备注")
-    @TableField("remark")
-    private String remark;
-
-    @ApiModelProperty(value = "评分")
-    @TableField("mark")
-    private Integer mark;
-
-
-}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java
new file mode 100644
index 0000000..7eb33df
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java
@@ -0,0 +1,29 @@
+package com.ruoyi.chargingPile.api.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "SiteQuery对象",description = "站点查询条件")
+public class SiteQuery extends BasePage {
+
+    @ApiModelProperty(value = "站点名称")
+    private String name;
+
+    @ApiModelProperty(value = "排序方式 1=离我最近 2=价格较低 3=空闲较多")
+    @NotNull(message = "排序方式不能为空")
+    private Integer sortType;
+
+    @ApiModelProperty(value = "经度")
+    @NotNull(message = "地址经度不能为空")
+    private String lon;
+
+    @ApiModelProperty(value = "纬度")
+    @NotNull(message = "地址纬度不能为空")
+    private String lat;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java
new file mode 100644
index 0000000..ba71ee4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java
@@ -0,0 +1,25 @@
+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;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "SiteVO对象", description = "站点信息")
+public class SiteVO extends Site {
+
+    @ApiModelProperty(value = "快充数量")
+    private Integer fastCount;
+    @ApiModelProperty(value = "超充数量")
+    private Integer superCount;
+    @ApiModelProperty(value = "慢充数量")
+    private Integer slowCount;
+    @ApiModelProperty(value = "普通电价")
+    private BigDecimal electrovalence;
+    @ApiModelProperty(value = "会员电价")
+    private BigDecimal vipElectrovalence;
+
+}
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 5d7f589..6bb56a7 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
@@ -3,12 +3,15 @@
 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.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -23,8 +26,8 @@
 	
 	@Resource
 	private ISiteService siteService;
-	
-	
+
+
 	@ResponseBody
 	@GetMapping("/getSiteList")
 	@ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"})
@@ -32,7 +35,13 @@
 		PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList);
 		return AjaxResult.success(list);
 	}
-	
+
+	@ApiOperation(value = "获取站点分页列表", tags = {"小程序-站点管理"})
+	@PostMapping("/pageList")
+	public AjaxResult<PageInfo<SiteVO>> pageList(@Validated @RequestBody SiteQuery query){
+		return AjaxResult.success(siteService.pageList(query));
+	}
+
 	
 	@ResponseBody
 	@PostMapping("/getSiteList")
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index ee1cceb..cad73d2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -60,7 +60,7 @@
     public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailByStrategyId(@RequestParam Integer strategyId) {
         List<TAccountingStrategyDetailVO> list = accountingStrategyDetailService.queryAccountingStrategyDetailByStrategyId(strategyId);
         list.forEach(detail -> {
-            detail.setTotalPrice(detail.getCostServiceCharge().add(detail.getElectrovalence()));
+            detail.setTotalPrice(detail.getElectrovalence().add(detail.getElectrovalence()));
         });
         return AjaxResult.ok(list);
     }
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 42263de..7fae91b 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
@@ -4,6 +4,8 @@
 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.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
 import com.ruoyi.common.core.web.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 
@@ -23,4 +25,11 @@
 	 * @return
 	 */
 	List<GetSiteListDTO> getSiteList(PageInfo<GetSiteListDTO> pageInfo, @Param("item") GetSiteList siteList);
+
+	/**
+	 * 获取站点分页列表
+	 * @return
+	 */
+	List<SiteVO> pageList(@Param("query")SiteQuery query,@Param("pageInfo")PageInfo<SiteVO> pageInfo);
+
 }
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 5e136d6..96259c2 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
@@ -4,6 +4,8 @@
 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.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -46,4 +48,11 @@
 	 * @return
 	 */
 	AjaxResult delSite(Integer id);
+
+	/**
+	 * 获取站点分页列表
+	 * @param query
+	 * @return
+	 */
+	PageInfo<SiteVO> pageList(SiteQuery query);
 }
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 8ed6be2..d07b067 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
@@ -5,6 +5,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.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
+import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
 import com.ruoyi.chargingPile.mapper.SiteMapper;
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -142,4 +145,12 @@
 		this.updateById(site);
 		return AjaxResult.success();
 	}
+
+	@Override
+	public PageInfo<SiteVO> pageList(SiteQuery query) {
+		PageInfo<SiteVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
+		List<SiteVO> list = this.baseMapper.pageList(query,pageInfo);
+		pageInfo.setRecords(list);
+		return pageInfo;
+	}
 }
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 e9cf906..09c8781 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
@@ -7,7 +7,7 @@
 		<id column="id" property="id" />
 		<result column="partner_id" property="partnerId" />
 		<result column="`code`" property="code" />
-		<result column="name" property="name" />
+		<result column="`name`" property="name" />
 		<result column="site_type" property="siteType" />
 		<result column="business_category" property="businessCategory" />
 		<result column="status" property="status" />
@@ -41,7 +41,11 @@
 		<result column="create_time" property="createTime" />
 		<result column="del_flag" property="delFlag" />
 	</resultMap>
-	
+
+	<!-- 通用查询结果列 -->
+	<sql id="Base_Column_List">
+		id, partner_id, code, `name`, site_type, business_category, status, construction_site, img_url, province, province_code, city, city_code, districts, districts_code, lon, lat, address, country_code, phone, service_phone, guide, start_service_time, end_service_time, service_description, vehicle_description, parking_space, rate_description, space_charge_explain, accounting_strategy_id, establishment_time, sort, remark, create_time, del_flag, mark
+	</sql>
 	
 	<select id="getSiteList" resultType="com.ruoyi.chargingPile.api.dto.GetSiteListDTO">
 		select
@@ -89,4 +93,75 @@
 		</if>
 		order by a.sort desc, a.create_time desc limit #{item.pageCurr}, #{item.pageSize}
 	</select>
+
+	<select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.SiteVO">
+		select
+		ts.id, ts.partner_id, ts.code, ts.`name`, ts.site_type, ts.business_category, ts.status, ts.construction_site, ts.img_url,
+		ts.lon, ts.lat, ts.address, ts.country_code, ts.phone,ts.guide, ts.service_description, ts.vehicle_description,
+		ts.parking_space, ts.rate_description, ts.space_charge_explain, ts.accounting_strategy_id,ts.del_flag,tcg.fastCount,
+		tcg.slowCount,tcg.superCount,tasd.electrovalence,tasd.vipElectrovalence,
+		ROUND(
+		6378.138 * 2 * ASIN(
+		SQRT(
+		POW(
+		SIN(
+		(
+		#{query.lat} * PI() / 180 - ts.lat * PI() / 180
+		) / 2
+		),
+		2
+		) + COS(#{query.lat} * PI() / 180) * COS(ts.lat * PI() / 180) * POW(
+		SIN(
+		(
+		#{query.lon} * PI() / 180 - ts.lon * PI() / 180
+		) / 2
+		),
+		2
+		)
+		)
+		) * 1000
+		) AS distance
+		from t_site ts
+		left join (
+		select site_id,
+			SUM(CASE WHEN charge_mode = 1 THEN 1 ELSE 0 END) AS superCount,
+			SUM(CASE WHEN charge_mode = 2 THEN 1 ELSE 0 END) AS fastCount,
+			SUM(CASE WHEN charge_mode = 3 THEN 1 ELSE 0 END) AS slowCount
+		from
+		    t_charging_gun
+		where
+		    del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+		group by
+		    site_id) tcg on (ts.id = tcg.site_id)
+		left join (
+		select
+		    a.accounting_strategy_id,
+			(a.electrovalence+a.service_charge) AS electrovalence,
+			((a.electrovalence+a.service_charge)*a.discount) AS vipElectrovalence
+		from
+		    t_accounting_strategy_detail a
+		left join
+		        t_accounting_strategy b on (a.accounting_strategy_id = b.id)
+		where b.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+		AND DATE_FORMAT(NOW(), '%H:%i:%s') between b.start_time and b.end_time) tasd on (ts.accounting_strategy_id = tasd.accounting_strategy_id)
+		<where>
+			<if test="null != query.name and '' != query.name">
+				and ts.`name` like CONCAT('%', #{query.name}, '%')
+			</if>
+			AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+		</where>
+		<if test="query.sortType != null">
+			<choose>
+				<when test="query.sortType == 1">
+					ORDER BY ts.distance ASC
+				</when>
+				<when test="query.sortType == 2">
+					ORDER BY tasd.electrovalence ASC
+				</when>
+				<when test="query.sortType == 3">
+					ORDER BY (tcg.fastCount + tcg.slowCount + tcg.superCount) DESC
+				</when>
+			</choose>
+		</if>
+	</select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.7.1