ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java
File was deleted ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java
New file @@ -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; } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java
New file @@ -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; } 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; @@ -33,6 +36,12 @@ 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") 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); } 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); } 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); } 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; } } 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" /> @@ -42,6 +42,10 @@ <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>