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