修正移动端应急地图数据

This commit is contained in:
wanghao
2025-09-26 13:07:58 +08:00
parent eba9ee928f
commit f2503fdd52
5 changed files with 42 additions and 138 deletions
@@ -4,6 +4,7 @@ import com.renkang.emergency.api.RequestPrefix;
import com.renkang.emergency.api.service.EmergencyResourceApiService;
import com.renkang.emergency.bean.response.ResourceHome;
import com.renkang.emergency.entity.EmergencyResourceDO;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -33,9 +34,9 @@ public class EmergencyResourceApiController {
* @return result
*/
@GetMapping("/home")
public Result<ResourceHome> home(@RequestParam(required = false) String type,
@RequestParam(required = false) Double longitude,
@RequestParam(required = false) Double latitude) {
public Result<List<LargeScreenMap>> home(@RequestParam(required = false) String type,
@RequestParam(required = false) Double longitude,
@RequestParam(required = false) Double latitude) {
return Result.ok(emergencyResourceApiService.listResourceByType(type, longitude, latitude));
}
@@ -2,6 +2,7 @@ package com.renkang.emergency.api.service;
import com.renkang.emergency.bean.response.ResourceHome;
import com.renkang.emergency.entity.EmergencyResourceDO;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import org.jeecg.common.api.vo.Result;
import java.util.List;
@@ -11,7 +12,7 @@ import java.util.List;
* @date 2023-04-25 13:07
*/
public interface EmergencyResourceApiService {
ResourceHome listResourceByType(String type, Double longitude, Double latitude);
List<LargeScreenMap> listResourceByType(String type, Double longitude, Double latitude);
String sessionNow(String userId);
@@ -9,6 +9,7 @@ import com.renkang.emergency.bean.common.ResourceExt;
import com.renkang.emergency.bean.response.ResourceHome;
import com.renkang.emergency.constant.EmergencyConstants;
import com.renkang.emergency.entity.*;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
import com.renkang.emergency.manager.EmergencyCloudManager;
import com.renkang.emergency.manager.ResourceManager;
import com.renkang.emergency.mapper.OrderMapper;
@@ -22,6 +23,7 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.global.GlobalUtils;
import org.jeecg.util.TypeConversionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.Point;
import org.springframework.stereotype.Service;
@@ -39,101 +41,52 @@ import java.util.stream.Collectors;
*/
@Service("emergencyResourceApiService")
public class EmergencyResourceApiServiceImpl implements EmergencyResourceApiService {
@Autowired
private EmergencyCloudManager emergencyCloudManager;
@Autowired
private ResourceManager resourceManager;
@Autowired
private OrderMapper orderMapper;
@Autowired
private ResourceMapper resourceMapper;
@Autowired
private IEmergencyHealthRoomService roomService;
@Autowired
private IXjAedService xjAedService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Override
public ResourceHome listResourceByType(String type, Double longitude, Double latitude) {
if (StrUtil.isBlank(type)) {
type = EmergencyConstants.RESOURCE_ALL;
public List<LargeScreenMap> listResourceByType(String type, Double longitude, Double latitude) {
List<LargeScreenMap> maps = new ArrayList<>();
if (StrUtil.isEmpty(type) || type.equals("1")) {
List<Resource> list = resourceMapper.selectList(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type), Resource::getType, "1"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
ResourceHome home = new ResourceHome();
// 是否有正在进行的会话
String sessionId = sessionNow(null);
if (StrUtil.isNotBlank(sessionId)) {
home.setSessionId(sessionId);
// 前端页面返回需要数据 继续查数据
//return home;
if (StrUtil.isEmpty(type) || type.equals("3")) {
List<Resource> list = resourceMapper.selectList(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type), Resource::getType, "3"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
// 字典数据
List<DictModel> dictItems = emergencyCloudManager.getDictItems(EmergencyConstants.EMERGENCY_RESOURCE_TYPE_DICT);
// home.setDicts(dictItems);
// if ("4".equals(type)) {
// List<XjAed> list = xjAedService.list();
// List<ResourceExt> extList = new ArrayList<>();
// for (XjAed xjAed : list) {
// ResourceExt ext = new ResourceExt();
// BeanUtil.copyProperties(xjAed, ext);
// ext.setName(xjAed.getName());
// ext.setAddress(xjAed.getAddress());
// ext.setLatitude(xjAed.getLatitude());
// ext.setLongitude(xjAed.getLongitude());
// extList.add(ext);
// }
// home.setResources(extList);
// } else {
//
// }
if (ObjectUtils.isEmpty(longitude) || ObjectUtils.isEmpty(latitude)) {
if (!"3".equals(type)) {
home.setDicts(dictItems);
List<ResourceExt> list = this.listResource(type);
List<ResourceExt> resources = new ArrayList<>();
if ("0".equals(type)) {
resources = this.selectResourceByLongitudeLatitude(null, null, null);
}
list.addAll(resources);
home.setResources(list);
return home;
}
}else {
if (!"3".equals(type)) {
// 资源数据
if (StrUtil.isEmpty(type) || type.equals("4")){
List<XjAed> list = xjAedService.list(new LambdaQueryWrapper<XjAed>().isNotNull(XjAed::getLatitude));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (StrUtil.isEmpty(type) || type.equals("5")) {
List<Resource> list = resourceMapper.selectList(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type), Resource::getType, type)
.eq(StrUtil.isEmpty(type), Resource::getType, "5"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
for (LargeScreenMap map : maps) {
if (StrUtil.isNotEmpty(map.getLongitude()) && StrUtil.isNotEmpty(map.getLatitude())) {
Point point = new Point(longitude, latitude);
List<ResourceExt> resources = resourceManager.geoSearch(point, 100000, type);
List<ResourceExt> resourcesLL = new ArrayList<>();
if ("0".equals(type)) {
resourcesLL = this.selectResourceByLongitudeLatitude(100000D, longitude, latitude);
}
resources.addAll(resourcesLL);
home.setDicts(dictItems);
home.setResources(resources);
return home;
Point geoPoint = new Point(TypeConversionUtil.toDoubleOfNull(
map.getLongitude()), TypeConversionUtil.toDoubleOfNull(map.getLatitude()));
map.setDistance(ResourceUtils.geoDistance(point, geoPoint));
}
}
List<EmergencyHealthRoom> list = roomService.list();
List<ResourceExt> resources = new ArrayList<>();
for (EmergencyHealthRoom emergencyHealthRoom : list) {
ResourceExt ext = new ResourceExt();
ext.setId(emergencyHealthRoom.getId());
ext.setName(emergencyHealthRoom.getName());
ext.setAddress(emergencyHealthRoom.getOrgName());
ext.setLatitude(new BigDecimal(emergencyHealthRoom.getLatitude()));
ext.setLongitude(new BigDecimal(emergencyHealthRoom.getLongitude()));
ext.setType("3");
resources.add(ext);
}
home.setDicts(dictItems);
home.setResources(resources);
return home;
return maps;
}
@Override
@@ -184,60 +137,4 @@ public class EmergencyResourceApiServiceImpl implements EmergencyResourceApiServ
}
return orders.get(0);
}
private List<ResourceExt> listResource(String type) {
if ("3".equals(type)) {
return Collections.emptyList();
}
LambdaQueryWrapper<Resource> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
if (!EmergencyConstants.RESOURCE_ALL.equals(type)) {
queryWrapper.eq(Resource::getType, type);
queryWrapper.ne(Resource::getType, "3");
}
List<Resource> resources = resourceMapper.selectList(queryWrapper);
List<ResourceExt> result = new ArrayList<>();
if (CollectionUtils.isNotEmpty(resources)) {
for (Resource resource : resources) {
ResourceExt resourceExt = new ResourceExt();
BeanUtil.copyProperties(resource, resourceExt);
result.add(resourceExt);
}
}
return result;
}
public List<ResourceExt> selectResourceByLongitudeLatitude(Double distance, Double longitude, Double latitude) {
List<ResourceExt> resourceExtList = new ArrayList<>();
/* Point point = new Point(longitude, latitude);
List<MedicalResource> list = medicalCenterApi.selectResourceByLongitudeLatitude(distance, longitude, latitude).getResult();
for (MedicalResource medicalResource : list) {
ResourceExt resourceExt = convertToResourcesExt(medicalResource);
Point geoPoint = new Point(medicalResource.getLongitude().doubleValue(), medicalResource.getLatitude().doubleValue());
resourceExt.setType("3");
resourceExt.setDistance(ResourceUtils.geoDistance(point, geoPoint));
resourceExtList.add(resourceExt);
}*/
return resourceExtList;
}
/* private static ResourceExt convertToResourcesExt(MedicalResource resource) {
if (Objects.isNull(resource)) {
return null;
}
ResourceExt resourceExt = new ResourceExt();
BeanUtil.copyProperties(resource, resourceExt);
return resourceExt;
}*/
}
@@ -31,6 +31,8 @@ public class LargeScreenMap {
private String managePhone;
private double distance;
public LargeScreenMap() {}
public LargeScreenMap(Resource resource) {
@@ -42,6 +44,7 @@ public class LargeScreenMap {
this.longitude = String.valueOf(resource.getLongitude());
this.jobNum = resource.getJobNum();
this.runTime = resource.getRunTime();
this.address = resource.getAddress();
}
public LargeScreenMap(EmergencyHealthRoom room) {
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.renkang.emergency.archives.model.vo.YearsStatistic;
import com.renkang.emergency.entity.EmergencyResourceDO;
import com.renkang.emergency.entity.Resource;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -15,6 +16,7 @@ import java.util.List;
* @Date: 2023-04-24
* @Version: V1.0
*/
@Mapper
public interface ResourceMapper extends BaseMapper<Resource> {
List<String> selectHospitalList();