|
@@ -4,14 +4,13 @@ import com.welampiot.dao.GlobalLocationDao;
|
|
|
import com.welampiot.dto.GlobalLocationDTO;
|
|
|
import com.welampiot.dto.SectionDTO;
|
|
|
import com.welampiot.service.GlobalLocationService;
|
|
|
+import com.welampiot.vo.BaseVO;
|
|
|
import com.welampiot.vo.GlobalLocationVO;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* ClassName: GlobalLocationServiceImpl
|
|
@@ -257,4 +256,57 @@ public class GlobalLocationServiceImpl implements GlobalLocationService {
|
|
|
public GlobalLocationDTO getLocationBySectionId(Integer sectionId) {
|
|
|
return globalLocationDao.getLocationBySectionId(sectionId);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<GlobalLocationDTO> getProvinceCityNavByBaseVO(BaseVO baseVO) {
|
|
|
+ List<GlobalLocationDTO> provinceCityNav = globalLocationDao.getProvinceCityNavByBaseVO(baseVO);
|
|
|
+ // 使用 HashMap 存储省份
|
|
|
+ Map<Integer, GlobalLocationDTO> provinceMap = new HashMap<>();
|
|
|
+
|
|
|
+ for (GlobalLocationDTO item : provinceCityNav) {
|
|
|
+ // 获取或创建省份对象
|
|
|
+ GlobalLocationDTO province = getGlobalLocation(provinceMap, item);
|
|
|
+
|
|
|
+ // 创建城市对象并添加到省份的子列表中
|
|
|
+ GlobalLocationDTO city = new GlobalLocationDTO();
|
|
|
+ city.setId(item.getCityId());
|
|
|
+ city.setName(item.getCityName());
|
|
|
+ province.getSubList().add(city);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将 Map 转换为 List
|
|
|
+ return new ArrayList<>(provinceMap.values());
|
|
|
+ }
|
|
|
+
|
|
|
+ private GlobalLocationDTO getGlobalLocation(Map<Integer, GlobalLocationDTO> map,
|
|
|
+ GlobalLocationDTO item)
|
|
|
+ {
|
|
|
+ return map.computeIfAbsent(item.getId(), k -> {
|
|
|
+ GlobalLocationDTO p = new GlobalLocationDTO();
|
|
|
+ p.setId(item.getId());
|
|
|
+ p.setName(item.getName());
|
|
|
+ p.setSubList(new ArrayList<>());
|
|
|
+ return p;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<GlobalLocationDTO> getAreaSectionNavByBaseVO(BaseVO baseVO) {
|
|
|
+ List<GlobalLocationDTO> provinceCityNav = globalLocationDao.getAreaSectionNavByBaseVO(baseVO);
|
|
|
+ // 使用 HashMap 存储区域
|
|
|
+ Map<Integer, GlobalLocationDTO> areaMap = new HashMap<>();
|
|
|
+
|
|
|
+ for (GlobalLocationDTO item : provinceCityNav) {
|
|
|
+ // 获取或创建区域对象
|
|
|
+ GlobalLocationDTO area = getGlobalLocation(areaMap, item);
|
|
|
+ // 创建路段对象并添加到区域的子列表中
|
|
|
+ GlobalLocationDTO section = new GlobalLocationDTO();
|
|
|
+ section.setId(item.getSectionId());
|
|
|
+ section.setName(item.getSectionName());
|
|
|
+ area.getSubList().add(section);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将 Map 转换为 List
|
|
|
+ return new ArrayList<>(areaMap.values());
|
|
|
+ }
|
|
|
}
|