提交 a29ed3bc 作者: xiaowang

新增:维修网点

上级 cafc4d3d
package com.mmc.csf.web.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* Date: 2022/5/24 15:18
* @author 23214
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MaintainDTO implements Serializable {
private String address;
private String name;
private Double lon;
private Double lat;
private Double distance;
}
package com.mmc.csf.web.dto;
import com.mmc.csf.web.vo.LocationVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author LW
......@@ -20,12 +17,9 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
public class WebsiteRangeDTO implements Serializable {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "省编码")
private String adCode;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "地址经纬度")
private List<LocationVO> locationList;
private String address;
private String name;
private Double lon;
private Double lat;
private Double distance;
}
......@@ -4,12 +4,13 @@ import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.service.FlyerDummyService;
import com.mmc.csf.release.service.UavDummyService;
import com.mmc.csf.release.service.WebsiteService;
import com.mmc.csf.web.dto.WebsiteDTO;
import com.mmc.csf.web.dto.WebsiteRangeDTO;
import com.mmc.csf.web.vo.WebsiteVO;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author LW
......@@ -30,31 +31,13 @@ public class WebsiteController {
@Autowired
private UavDummyService uavDummyService;
@ApiOperation(value = "小程序--获取本省网点")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = WebsiteDTO.class)})
@GetMapping("getWebsiteByAdCode")
public ResultBody getWebsiteByAdCode(@ApiParam(value = "省编码")
@RequestParam(value = "code") String adCode) {
return websiteService.getWebsiteByAdCode(adCode);
}
@ApiOperation(value = "获取全国网点")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = WebsiteRangeDTO.class)})
@GetMapping("getWebsiteList")
public ResultBody getWebsiteList(@ApiParam(value = "用户当前经度", required = true) @RequestParam(value = "lon") Double lon,
@ApiParam(value = "用户当前纬度", required = true) @RequestParam(value = "lat") Double lat) {
return websiteService.getWebsiteList(lon,lat);
}
@ApiOperation(value = "获取当前省份距离最近的网点")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = WebsiteRangeDTO.class)})
@PostMapping("getProvinceWebsiteRange")
public ResultBody getProvinceWebsiteRange(@RequestBody WebsiteVO websiteVO) {
return websiteService.getProvinceWebsiteRange(websiteVO);
public ResultBody getWebsiteList(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Double lon, @RequestParam Double lat) {
return ResultBody.success(websiteService.getWebsiteList(pageNo, pageSize, lon, lat));
}
@ApiOperation(value = "全国飞手-海点数据-fake")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/flyer/bitmap")
......@@ -68,4 +51,11 @@ public class WebsiteController {
public ResultBody listUavDummys(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Double lon, @RequestParam Double lat) {
return ResultBody.success(uavDummyService.listDummyUav(pageNo, pageSize, lon, lat));
}
@ApiOperation(value = "全国维修-海点数据")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/maintain/bitmap")
public ResultBody listMaintainData(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Double lon, @RequestParam Double lat) {
return ResultBody.success(websiteService.listMaintainData(pageNo, pageSize, lon, lat));
}
}
......@@ -3,6 +3,7 @@ package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.DummyFlyerDO;
import com.mmc.csf.release.entity.DummyUavDO;
import com.mmc.csf.release.entity.MaintainDO;
import com.mmc.csf.release.entity.WebsiteInfoDO;
import org.apache.ibatis.annotations.Mapper;
......@@ -15,10 +16,6 @@ import java.util.List;
*/
@Mapper
public interface WebsiteDao {
WebsiteInfoDO getWebsiteByAdCode(String adCode);
List<WebsiteInfoDO> getWebsiteList();
int countDummyFlyer();
List<DummyFlyerDO> listDummyFlyer(Double lon, Double lat, Integer pageNo, Integer pageSize);
......@@ -27,4 +24,12 @@ public interface WebsiteDao {
List<DummyUavDO> listDummyUav(Double lon, Double lat, Integer pageNo, Integer pageSize);
int countMaintain();
List<MaintainDO> listMaintain(Double lon, Double lat, Integer pageNo, Integer pageSize);
List<WebsiteInfoDO> getWebsiteList(Double lon, Double lat, Integer pageNo, Integer pageSize);
int countWebsiteList();
}
package com.mmc.csf.release.entity;
import com.mmc.csf.web.dto.MaintainDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* (MaintainDO)实体类
*
* @author makejava
* @since 2023-06-10 21:42:42
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MaintainDO implements Serializable {
private static final long serialVersionUID = -53401640557659711L;
private Integer id;
private String name;
private String address;
private Double lon;
private Double lat;
private Double distance;
public MaintainDTO buildMaintainDTO() {
this.distance = this.distance == null ? 0 : (BigDecimal.valueOf(this.distance).setScale(2, BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return MaintainDTO.builder().name(name).address(address).lon(this.lon).lat(this.lat).distance(this.distance / 1000).build();
}
}
package com.mmc.csf.release.entity;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mmc.csf.web.dto.WebsiteDTO;
import com.mmc.csf.web.dto.WebsiteRangeDTO;
import com.mmc.csf.web.vo.LocationVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
/**
* @Author LW
......@@ -23,31 +18,15 @@ import java.util.List;
@AllArgsConstructor
public class WebsiteInfoDO implements Serializable {
private Integer id;
private String adCode;
private String province;
private String location;
private Date createTime;
private Date updateTime;
private String name;
private String address;
private Double lat;
private Double lon;
private Double distance;
public WebsiteDTO buildWebsiteDTO() {
JSONArray json = (JSONArray)JSONObject.parse(this.location);
return WebsiteDTO.builder()
.id(this.id)
.adCode(this.adCode)
.province(this.province)
.location(json)
.createTime(this.createTime)
.build();
}
public WebsiteRangeDTO buildWebsiteRangeDTO() {
List<LocationVO> list = JSONArray.parseArray(this.location, LocationVO.class);
return WebsiteRangeDTO.builder()
.id(this.id)
.province(this.province)
.adCode(this.adCode)
.locationList(list)
.build();
this.distance = this.distance == null ? 0 : (BigDecimal.valueOf(this.distance).setScale(2, BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return WebsiteRangeDTO.builder().name(name).address(address).lon(this.lon).lat(this.lat).distance(this.distance / 1000).build();
}
}
package com.mmc.csf.release.service;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.web.vo.WebsiteVO;
import com.mmc.csf.common.util.page.PageResult;
/**
* @Author LW
......@@ -9,9 +8,8 @@ import com.mmc.csf.web.vo.WebsiteVO;
* 概要:
*/
public interface WebsiteService {
ResultBody getWebsiteByAdCode(String adCode);
ResultBody getWebsiteList(Double lon,Double lat);
PageResult listMaintainData(Integer pageNo, Integer pageSize, Double lon, Double lat);
ResultBody getProvinceWebsiteRange(WebsiteVO websiteVO);
PageResult getWebsiteList(Integer pageNo, Integer pageSize, Double lon, Double lat);
}
package com.mmc.csf.release.service.impl;
import com.mmc.csf.common.util.other.LocationUtils;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.release.dao.WebsiteDao;
import com.mmc.csf.release.entity.MaintainDO;
import com.mmc.csf.release.entity.WebsiteInfoDO;
import com.mmc.csf.release.service.WebsiteService;
import com.mmc.csf.web.dto.MaintainDTO;
import com.mmc.csf.web.dto.WebsiteRangeDTO;
import com.mmc.csf.web.vo.LocationVO;
import com.mmc.csf.web.vo.WebsiteVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
......@@ -25,45 +23,24 @@ public class WebsiteServiceImpl implements WebsiteService {
@Autowired
private WebsiteDao websiteDao;
@Override
public ResultBody getWebsiteByAdCode(String adCode) {
WebsiteInfoDO websiteInfoDO = websiteDao.getWebsiteByAdCode(adCode);
return ResultBody.success(websiteInfoDO.buildWebsiteDTO());
}
@Override
public ResultBody getWebsiteList(Double lon, Double lat) {
List<WebsiteInfoDO> list = websiteDao.getWebsiteList();
List<WebsiteRangeDTO> rangeList = list.stream()
.map(WebsiteInfoDO::buildWebsiteRangeDTO)
.collect(Collectors.toList());
for (WebsiteRangeDTO websiteRangeDTO : rangeList) {
for (LocationVO d : websiteRangeDTO.getLocationList()) {
double distance = 0;
if (d.getJd() != null && d.getJd() != 0 && d.getWd() != null && d.getWd() != 0) {
distance = LocationUtils.getDistance(d.getWd(), d.getJd(), lat, lon);
}
d.setRange(distance);
}
websiteRangeDTO.getLocationList().sort(Comparator.comparing(LocationVO::getRange));
public PageResult listMaintainData(Integer pageNo, Integer pageSize, Double lon, Double lat) {
int count = websiteDao.countMaintain();
if (count == 0) {
return PageResult.buildPage(pageNo, pageSize, count);
}
return ResultBody.success(rangeList);
List<MaintainDTO> list = websiteDao.listMaintain(lon, lat, (pageNo - 1) * pageSize, pageSize).stream().map(MaintainDO::buildMaintainDTO).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, list);
}
@Override
public ResultBody getProvinceWebsiteRange(WebsiteVO websiteVO) {
WebsiteInfoDO website = websiteDao.getWebsiteByAdCode(websiteVO.getAdCode());
WebsiteRangeDTO websiteRangeDTO = website.buildWebsiteRangeDTO();
// 获取位置信息
List<LocationVO> locationList = websiteRangeDTO.getLocationList();
for (LocationVO d : locationList) {
double distance = 0;
if (d.getJd() != null && d.getJd() != 0 && d.getWd() != null && d.getWd() != 0) {
distance = LocationUtils.getDistance(d.getWd(), d.getJd(), websiteVO.getLat(), websiteVO.getLon());
}
d.setRange(distance);
public PageResult getWebsiteList(Integer pageNo, Integer pageSize, Double lon, Double lat) {
int count = websiteDao.countWebsiteList();
if (count == 0) {
return PageResult.buildPage(pageNo, pageSize, count);
}
locationList.sort(Comparator.comparing(LocationVO::getRange));
return ResultBody.success(locationList);
List<WebsiteRangeDTO> list = websiteDao.getWebsiteList(lon, lat, (pageNo - 1) * pageSize, pageSize).stream().map(WebsiteInfoDO::buildWebsiteRangeDTO).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, list);
}
}
......@@ -28,10 +28,6 @@
from website_info
where ad_code = #{adCode}
</select>
<select id="getWebsiteList" resultType="com.mmc.csf.release.entity.WebsiteInfoDO">
select id, ad_code adCode, province, location, create_time createTime
from website_info
</select>
<select id="countDummyFlyer" resultType="Integer">
select count(*) from dummy_flyer
......@@ -56,4 +52,36 @@
ORDER BY distance ASC
LIMIT #{pageNo},#{pageSize}
</select>
<select id="countMaintain" resultType="java.lang.Integer">
select count(*) from maintain
</select>
<select id="listMaintain" resultType="com.mmc.csf.release.entity.MaintainDO">
SELECT
id,
`name`,
address,
lon,
lat, st_distance_sphere (point (lon,lat),point (${lon},${lat})) AS distance
FROM
maintain
ORDER BY
distance ASC
LIMIT #{pageNo},#{pageSize}
</select>
<select id="countWebsiteList" resultType="java.lang.Integer">
select count(*) from website_info
</select>
<select id="getWebsiteList" resultType="com.mmc.csf.release.entity.WebsiteInfoDO">
SELECT
id,
`name`,
address,
lon,
lat, st_distance_sphere (point (lon,lat),point (${lon},${lat})) AS distance
FROM
website_info
ORDER BY
distance ASC
LIMIT #{pageNo},#{pageSize}
</select>
</mapper>
\ No newline at end of file
......@@ -23,6 +23,7 @@ data-filter:
- /release/website/getWebsiteList
- /release/website/flyer/bitmap
- /release/website/uav/bitmap
- /release/website/maintain/bitmap
- /release/website/getProvinceWebsiteRange
- /release/curriculum/getIndustryFlightSkills
- /release/curriculum/getDronePilotLicense
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论