fix: 优化流域电站树
This commit is contained in:
parent
fca2c1cb8b
commit
37e17b6755
@ -28,6 +28,16 @@ public class TreeStructureController {
|
|||||||
@Resource
|
@Resource
|
||||||
private ITreeStructureService treeStructureService;
|
private ITreeStructureService treeStructureService;
|
||||||
|
|
||||||
|
@GetMapping("/rvcdEng")
|
||||||
|
@Operation(summary = "获取流域-电站树形结构")
|
||||||
|
public ResponseResult getRvcdEngTree(
|
||||||
|
@RequestParam(required = false) String rvcd,
|
||||||
|
@RequestParam(required = false) String engName) {
|
||||||
|
List<Map<String, Object>> result = treeStructureService.getRvcdEngTree(rvcd, engName);
|
||||||
|
return ResponseResult.successData(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/rvcdBaseEng")
|
@GetMapping("/rvcdBaseEng")
|
||||||
@Operation(summary = "获取流域-基地-电站树形结构")
|
@Operation(summary = "获取流域-基地-电站树形结构")
|
||||||
public ResponseResult getRvcdBaseEngTree(@RequestParam(required = false) String rvcd, @RequestParam(required = false) String engName) {
|
public ResponseResult getRvcdBaseEngTree(@RequestParam(required = false) String rvcd, @RequestParam(required = false) String engName) {
|
||||||
|
|||||||
@ -38,4 +38,11 @@ public interface ITreeStructureService {
|
|||||||
* 获取公司树(带子节点标记)
|
* 获取公司树(带子节点标记)
|
||||||
*/
|
*/
|
||||||
List<Map<String, Object>> getHycdTree(String phycd);
|
List<Map<String, Object>> getHycdTree(String phycd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取流域-电站树形结构(二级树)
|
||||||
|
* @param rvcd 流域编码(可选,为空则返回全部)
|
||||||
|
* @param engName 电站名称(可选,用于模糊筛选电站)
|
||||||
|
*/
|
||||||
|
List<Map<String, Object>> getRvcdEngTree(String rvcd, String engName);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -346,4 +346,85 @@ public class TreeStructureServiceImpl implements ITreeStructureService {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Map<String, Object>> getRvcdEngTree(String rvcd, String engName) {
|
||||||
|
List<Map<String, Object>> result = new ArrayList<>();
|
||||||
|
|
||||||
|
// 1. 查询流域列表
|
||||||
|
List<SdRvcdDic> rvcdList;
|
||||||
|
if (StringUtils.hasText(rvcd)) {
|
||||||
|
rvcdList = rvcdDicMapper.selectByPrvcd(rvcd);
|
||||||
|
SdRvcdDic singleRvcd = rvcdDicMapper.selectById(rvcd);
|
||||||
|
if (singleRvcd != null && !rvcdList.contains(singleRvcd)) {
|
||||||
|
rvcdList = new ArrayList<>();
|
||||||
|
rvcdList.add(singleRvcd);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rvcdList = rvcdDicMapper.selectRootList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 预加载所有流域下的电站(按流域分组)
|
||||||
|
Map<String, List<SdEngInfoBH>> rvcdEngMap = new HashMap<>();
|
||||||
|
for (SdRvcdDic rvcdDic : rvcdList) {
|
||||||
|
List<SdEngInfoBH> engList = engInfoBHMapper.selectByRvcd(rvcdDic.getRvcd());
|
||||||
|
|
||||||
|
// 如果提供了电站名称参数,进行模糊匹配筛选
|
||||||
|
if (StringUtils.hasText(engName) && engList != null) {
|
||||||
|
engList = engList.stream()
|
||||||
|
.filter(eng -> eng.getEnnm() != null && eng.getEnnm().contains(engName))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (engList != null && !engList.isEmpty()) {
|
||||||
|
rvcdEngMap.put(rvcdDic.getRvcd(), engList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 构建二级树形结构(流域 -> 电站)
|
||||||
|
for (SdRvcdDic rvcdDic : rvcdList) {
|
||||||
|
Map<String, Object> rvcdNode = new LinkedHashMap<>();
|
||||||
|
rvcdNode.put("type", "BASIN");
|
||||||
|
rvcdNode.put("code", rvcdDic.getRvcd());
|
||||||
|
rvcdNode.put("name", rvcdDic.getRvnm());
|
||||||
|
rvcdNode.put("path", rvcdDic.getPath());
|
||||||
|
rvcdNode.put("orgLevel", 0);
|
||||||
|
rvcdNode.put("grd", rvcdDic.getGrd());
|
||||||
|
rvcdNode.put("lgtd", rvcdDic.getLgtd());
|
||||||
|
rvcdNode.put("lttd", rvcdDic.getLttd());
|
||||||
|
rvcdNode.put("parentId", "0");
|
||||||
|
|
||||||
|
// 获取该流域下的所有电站
|
||||||
|
List<SdEngInfoBH> engList = rvcdEngMap.get(rvcdDic.getRvcd());
|
||||||
|
List<Map<String, Object>> engChildren = new ArrayList<>();
|
||||||
|
|
||||||
|
if (engList != null && !engList.isEmpty()) {
|
||||||
|
for (SdEngInfoBH eng : engList) {
|
||||||
|
Map<String, Object> engNode = new LinkedHashMap<>();
|
||||||
|
engNode.put("type", "STATION");
|
||||||
|
engNode.put("code", eng.getStcd());
|
||||||
|
engNode.put("name", eng.getEnnm());
|
||||||
|
engNode.put("lgtd", eng.getLgtd());
|
||||||
|
engNode.put("lttd", eng.getLttd());
|
||||||
|
engNode.put("elev", eng.getElev());
|
||||||
|
engNode.put("usfl", eng.getUsfl());
|
||||||
|
engNode.put("bldstt", eng.getBldstt());
|
||||||
|
engNode.put("engtp", eng.getEngtp());
|
||||||
|
engNode.put("parentId", rvcdDic.getRvcd());
|
||||||
|
engNode.put("orgLevel", 1);
|
||||||
|
engChildren.add(engNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只有当该流域下有电站时才添加该流域节点
|
||||||
|
if (!engChildren.isEmpty()) {
|
||||||
|
rvcdNode.put("children", engChildren);
|
||||||
|
result.add(rvcdNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user