|
@@ -3,18 +3,11 @@ package cn.reghao.tnb.content.app.geo.service;
|
|
|
import cn.reghao.jutil.jdk.converter.DateTimeConverter;
|
|
import cn.reghao.jutil.jdk.converter.DateTimeConverter;
|
|
|
import cn.reghao.tnb.common.auth.UserContext;
|
|
import cn.reghao.tnb.common.auth.UserContext;
|
|
|
import cn.reghao.tnb.content.app.geo.db.mapper.*;
|
|
import cn.reghao.tnb.content.app.geo.db.mapper.*;
|
|
|
-import cn.reghao.tnb.content.app.geo.model.po.BusStation;
|
|
|
|
|
import cn.reghao.tnb.content.app.geo.model.po.GeoChina;
|
|
import cn.reghao.tnb.content.app.geo.model.po.GeoChina;
|
|
|
import cn.reghao.tnb.content.app.geo.model.po.GeoPoint;
|
|
import cn.reghao.tnb.content.app.geo.model.po.GeoPoint;
|
|
|
-import cn.reghao.tnb.content.app.geo.model.po.GeoPolygon;
|
|
|
|
|
-import cn.reghao.tnb.content.app.geo.model.vo.CascadeOption;
|
|
|
|
|
-import cn.reghao.tnb.content.app.geo.model.vo.GeoMarker;
|
|
|
|
|
-import cn.reghao.tnb.content.app.geo.model.vo.MapMarker;
|
|
|
|
|
-import cn.reghao.tnb.content.app.geo.model.vo.MapPoint;
|
|
|
|
|
|
|
+import cn.reghao.tnb.content.app.geo.model.vo.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
@@ -30,28 +23,16 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
@Service
|
|
|
public class MapService {
|
|
public class MapService {
|
|
|
private final GeoChinaMapper geoChinaMapper;
|
|
private final GeoChinaMapper geoChinaMapper;
|
|
|
- private final GeoPolygonMapper geoPolygonMapper;
|
|
|
|
|
private final GeoPointMapper geoPointMapper;
|
|
private final GeoPointMapper geoPointMapper;
|
|
|
- private final BusStationMapper busStationMapper;
|
|
|
|
|
private final List<CascadeOption> cascadeOptionList = new ArrayList<>();
|
|
private final List<CascadeOption> cascadeOptionList = new ArrayList<>();
|
|
|
|
|
|
|
|
- public MapService(GeoChinaMapper geoChinaMapper, GeoPolygonMapper geoPolygonMapper,
|
|
|
|
|
- GeoPointMapper geoPointMapper, BusStationMapper busStationMapper) {
|
|
|
|
|
|
|
+ public MapService(GeoChinaMapper geoChinaMapper, GeoPointMapper geoPointMapper) {
|
|
|
this.geoChinaMapper = geoChinaMapper;
|
|
this.geoChinaMapper = geoChinaMapper;
|
|
|
- this.geoPolygonMapper = geoPolygonMapper;
|
|
|
|
|
this.geoPointMapper = geoPointMapper;
|
|
this.geoPointMapper = geoPointMapper;
|
|
|
- this.busStationMapper = busStationMapper;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
- public void add(GeoChina geoChina, GeoPolygon geoPolygon) {
|
|
|
|
|
- try {
|
|
|
|
|
- geoChinaMapper.save(geoChina);
|
|
|
|
|
- //geoPolygonMapper.save(geoPolygon);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.info("insert {} -> {} error", geoChina.getId(), geoChina.getExtName());
|
|
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ public void add(GeoChina geoChina) {
|
|
|
|
|
+ geoChinaMapper.save(geoChina);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void addGeoPoint(MapPoint mapPoint) {
|
|
public void addGeoPoint(MapPoint mapPoint) {
|
|
@@ -59,19 +40,6 @@ public class MapService {
|
|
|
geoPointMapper.save(geoPoint);
|
|
geoPointMapper.save(geoPoint);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public List<MapMarker> getCityMarks() {
|
|
|
|
|
- int deep = 2;
|
|
|
|
|
- List<GeoMarker> list = geoChinaMapper.findByDeep(deep);
|
|
|
|
|
- return list.stream().map(geoMarker -> {
|
|
|
|
|
- String id = String.valueOf(geoMarker.getId());
|
|
|
|
|
- String name = geoMarker.getName();
|
|
|
|
|
- double lng = geoMarker.getLng();
|
|
|
|
|
- double lat = geoMarker.getLat();
|
|
|
|
|
- MapPoint mapPoint = new MapPoint(lng, lat);
|
|
|
|
|
- return new MapMarker(id, name, mapPoint);
|
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
public List<MapMarker> getTrailMarks() {
|
|
public List<MapMarker> getTrailMarks() {
|
|
|
long userId = UserContext.getUserId();
|
|
long userId = UserContext.getUserId();
|
|
|
List<GeoPoint> list = geoPointMapper.findByUserId(userId);
|
|
List<GeoPoint> list = geoPointMapper.findByUserId(userId);
|
|
@@ -85,23 +53,6 @@ public class MapService {
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public List<MapMarker> getStationMarks() {
|
|
|
|
|
- List<BusStation> list = busStationMapper.findAll();
|
|
|
|
|
- return list.stream().map(busStation -> {
|
|
|
|
|
- String id = busStation.getId()+"";
|
|
|
|
|
- String stationName = busStation.getStationName();
|
|
|
|
|
- String latStr = String.valueOf(busStation.getLat());
|
|
|
|
|
- String latStr1 = String.format("%s.%s", latStr.substring(0, 2), latStr.substring(2));
|
|
|
|
|
- double lat = Double.parseDouble(latStr1);
|
|
|
|
|
-
|
|
|
|
|
- String lngStr = String.valueOf(busStation.getLng());
|
|
|
|
|
- String lngStr1 = String.format("%s.%s", lngStr.substring(0, 3), lngStr.substring(3));
|
|
|
|
|
- double lng = Double.parseDouble(lngStr1);
|
|
|
|
|
- MapPoint mapPoint = new MapPoint(lng, lat);
|
|
|
|
|
- return new MapMarker(id, stationName, mapPoint);
|
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
public List getTrailPath() {
|
|
public List getTrailPath() {
|
|
|
long userId = UserContext.getUser();
|
|
long userId = UserContext.getUser();
|
|
|
List<GeoPoint> list = geoPointMapper.findByUserId(userId);
|
|
List<GeoPoint> list = geoPointMapper.findByUserId(userId);
|
|
@@ -116,27 +67,43 @@ public class MapService {
|
|
|
return List.of(map);
|
|
return List.of(map);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 省市县三级联动数据
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @date 2025-08-12 16:41:41
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<CascadeOption> getChinaCascade() {
|
|
|
|
|
+ if (!cascadeOptionList.isEmpty()) {
|
|
|
|
|
+ return cascadeOptionList;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ loadChinaCascade();
|
|
|
|
|
+ return cascadeOptionList;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void loadChinaCascade() {
|
|
private void loadChinaCascade() {
|
|
|
cascadeOptionList.clear();
|
|
cascadeOptionList.clear();
|
|
|
- List<GeoChina> geoChinaList = geoChinaMapper.findAll();
|
|
|
|
|
- Map<Integer, List<GeoChina>> groupMap = geoChinaList.stream().collect(Collectors.groupingBy(GeoChina::getPid));
|
|
|
|
|
|
|
+ List<GeoArea> geoChinaList = geoChinaMapper.findAllArea();
|
|
|
|
|
+ Map<Integer, List<GeoArea>> groupMap = geoChinaList.stream().collect(Collectors.groupingBy(GeoArea::getPid));
|
|
|
int pid = 0;
|
|
int pid = 0;
|
|
|
- List<GeoChina> level1 = groupMap.get(pid);
|
|
|
|
|
- for (GeoChina geoChina1 : level1) {
|
|
|
|
|
|
|
+ List<GeoArea> level1 = groupMap.get(pid);
|
|
|
|
|
+ for (GeoArea geoChina1 : level1) {
|
|
|
CascadeOption cascadeOption1 = new CascadeOption();
|
|
CascadeOption cascadeOption1 = new CascadeOption();
|
|
|
cascadeOption1.setLabel(geoChina1.getName());
|
|
cascadeOption1.setLabel(geoChina1.getName());
|
|
|
cascadeOption1.setValue(geoChina1.getName());
|
|
cascadeOption1.setValue(geoChina1.getName());
|
|
|
|
|
|
|
|
pid = geoChina1.getId();
|
|
pid = geoChina1.getId();
|
|
|
- List<GeoChina> level2 = groupMap.get(pid);
|
|
|
|
|
- for (GeoChina geoChina2 : level2) {
|
|
|
|
|
|
|
+ List<GeoArea> level2 = groupMap.get(pid);
|
|
|
|
|
+ for (GeoArea geoChina2 : level2) {
|
|
|
CascadeOption cascadeOption2 = new CascadeOption();
|
|
CascadeOption cascadeOption2 = new CascadeOption();
|
|
|
cascadeOption2.setLabel(geoChina2.getName());
|
|
cascadeOption2.setLabel(geoChina2.getName());
|
|
|
cascadeOption2.setValue(geoChina2.getName());
|
|
cascadeOption2.setValue(geoChina2.getName());
|
|
|
|
|
|
|
|
pid = geoChina2.getId();
|
|
pid = geoChina2.getId();
|
|
|
- List<GeoChina> level3 = groupMap.get(pid);
|
|
|
|
|
- for (GeoChina geoChina3 : level3) {
|
|
|
|
|
|
|
+ List<GeoArea> level3 = groupMap.get(pid);
|
|
|
|
|
+ for (GeoArea geoChina3 : level3) {
|
|
|
CascadeOption cascadeOption3 = new CascadeOption();
|
|
CascadeOption cascadeOption3 = new CascadeOption();
|
|
|
cascadeOption3.setLabel(geoChina3.getName());
|
|
cascadeOption3.setLabel(geoChina3.getName());
|
|
|
cascadeOption3.setValue(geoChina3.getName());
|
|
cascadeOption3.setValue(geoChina3.getName());
|
|
@@ -149,20 +116,4 @@ public class MapService {
|
|
|
cascadeOptionList.add(cascadeOption1);
|
|
cascadeOptionList.add(cascadeOption1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 省市县三级联动数据
|
|
|
|
|
- *
|
|
|
|
|
- * @param
|
|
|
|
|
- * @return
|
|
|
|
|
- * @date 2025-08-12 16:41:41
|
|
|
|
|
- */
|
|
|
|
|
- public List<CascadeOption> getChinaCascade() {
|
|
|
|
|
- if (!cascadeOptionList.isEmpty()) {
|
|
|
|
|
- return cascadeOptionList;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- loadChinaCascade();
|
|
|
|
|
- return cascadeOptionList;
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|