|
|
@@ -7,6 +7,7 @@ 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.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;
|
|
|
@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -31,6 +33,7 @@ public class MapService {
|
|
|
private final GeoPolygonMapper geoPolygonMapper;
|
|
|
private final GeoPointMapper geoPointMapper;
|
|
|
private final BusStationMapper busStationMapper;
|
|
|
+ private final List<CascadeOption> cascadeOptionList = new ArrayList<>();
|
|
|
|
|
|
public MapService(GeoChinaMapper geoChinaMapper, GeoPolygonMapper geoPolygonMapper,
|
|
|
GeoPointMapper geoPointMapper, BusStationMapper busStationMapper) {
|
|
|
@@ -43,8 +46,8 @@ public class MapService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void add(GeoChina geoChina, GeoPolygon geoPolygon) {
|
|
|
try {
|
|
|
- //geoChinaMapper.save(geoChina);
|
|
|
- geoPolygonMapper.save(geoPolygon);
|
|
|
+ geoChinaMapper.save(geoChina);
|
|
|
+ //geoPolygonMapper.save(geoPolygon);
|
|
|
} catch (Exception e) {
|
|
|
log.info("insert {} -> {} error", geoChina.getId(), geoChina.getExtName());
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
@@ -112,4 +115,54 @@ public class MapService {
|
|
|
map.put("path", list1);
|
|
|
return List.of(map);
|
|
|
}
|
|
|
+
|
|
|
+ private void loadChinaCascade() {
|
|
|
+ cascadeOptionList.clear();
|
|
|
+ List<GeoChina> geoChinaList = geoChinaMapper.findAll();
|
|
|
+ Map<Integer, List<GeoChina>> groupMap = geoChinaList.stream().collect(Collectors.groupingBy(GeoChina::getPid));
|
|
|
+ int pid = 0;
|
|
|
+ List<GeoChina> level1 = groupMap.get(pid);
|
|
|
+ for (GeoChina geoChina1 : level1) {
|
|
|
+ CascadeOption cascadeOption1 = new CascadeOption();
|
|
|
+ cascadeOption1.setLabel(geoChina1.getName());
|
|
|
+ cascadeOption1.setValue(geoChina1.getName());
|
|
|
+
|
|
|
+ pid = geoChina1.getId();
|
|
|
+ List<GeoChina> level2 = groupMap.get(pid);
|
|
|
+ for (GeoChina geoChina2 : level2) {
|
|
|
+ CascadeOption cascadeOption2 = new CascadeOption();
|
|
|
+ cascadeOption2.setLabel(geoChina2.getName());
|
|
|
+ cascadeOption2.setValue(geoChina2.getName());
|
|
|
+
|
|
|
+ pid = geoChina2.getId();
|
|
|
+ List<GeoChina> level3 = groupMap.get(pid);
|
|
|
+ for (GeoChina geoChina3 : level3) {
|
|
|
+ CascadeOption cascadeOption3 = new CascadeOption();
|
|
|
+ cascadeOption3.setLabel(geoChina3.getName());
|
|
|
+ cascadeOption3.setValue(geoChina3.getName());
|
|
|
+ cascadeOption3.setChildren(null);
|
|
|
+ cascadeOption2.getChildren().add(cascadeOption3);
|
|
|
+ }
|
|
|
+ cascadeOption1.getChildren().add(cascadeOption2);
|
|
|
+ }
|
|
|
+
|
|
|
+ cascadeOptionList.add(cascadeOption1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 省市县三级联动数据
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @date 2025-08-12 16:41:41
|
|
|
+ */
|
|
|
+ public List<CascadeOption> getChinaCascade() {
|
|
|
+ if (!cascadeOptionList.isEmpty()) {
|
|
|
+ return cascadeOptionList;
|
|
|
+ }
|
|
|
+
|
|
|
+ loadChinaCascade();
|
|
|
+ return cascadeOptionList;
|
|
|
+ }
|
|
|
}
|