fix: 优化页面bug
This commit is contained in:
parent
18f91f3a61
commit
d35eb47d73
@ -1,5 +1,6 @@
|
||||
package com.yfd.platform.qgc_base.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||
import com.yfd.platform.qgc_base.domain.SdHydrobase;
|
||||
import com.yfd.platform.qgc_base.domain.SdHbrvDic;
|
||||
@ -363,25 +364,40 @@ public class TreeStructureServiceImpl implements ITreeStructureService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 2. 预加载所有流域下的电站(按流域分组)
|
||||
Map<String, List<SdEngInfoBH>> rvcdEngMap = new HashMap<>();
|
||||
for (SdRvcdDic rvcdDic : rvcdList) {
|
||||
List<SdEngInfoBH> engList = engInfoBHMapper.selectByRvcd(null,rvcdDic.getRvcd());
|
||||
if (rvcdList.isEmpty()) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// 如果提供了电站名称参数,进行模糊匹配筛选
|
||||
if (StringUtils.hasText(engName) && engList != null) {
|
||||
engList = engList.stream()
|
||||
.filter(eng -> eng.getEnnm() != null && eng.getEnnm().contains(engName))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
// 2. 收集所有流域编码,一次批量查询替代 N 次循环查询
|
||||
List<String> rvcdCodeList = rvcdList.stream()
|
||||
.map(SdRvcdDic::getRvcd)
|
||||
.collect(Collectors.toList());
|
||||
List<SdEngInfoBH> allEngList = engInfoBHMapper.selectList(new LambdaQueryWrapper<SdEngInfoBH>().in(SdEngInfoBH::getReachcd, rvcdCodeList));
|
||||
// List<SdEngInfoBH> allEngList = engInfoBHMapper.selectByRvcdList(rvcdCodeList);
|
||||
|
||||
if (engList != null && !engList.isEmpty()) {
|
||||
rvcdEngMap.put(rvcdDic.getRvcd(), engList);
|
||||
// 3. 按流域分组,同时在内存中过滤电站名称
|
||||
Map<String, List<SdEngInfoBH>> rvcdEngMap = new LinkedHashMap<>();
|
||||
if (allEngList != null) {
|
||||
for (SdEngInfoBH eng : allEngList) {
|
||||
String engRvcd = eng.getReachcd();
|
||||
if (!StringUtils.hasText(engRvcd) || !rvcdCodeList.contains(engRvcd)) {
|
||||
continue;
|
||||
}
|
||||
if (StringUtils.hasText(engName) && eng.getEnnm() != null
|
||||
&& !eng.getEnnm().contains(engName)) {
|
||||
continue;
|
||||
}
|
||||
rvcdEngMap.computeIfAbsent(engRvcd, k -> new ArrayList<>()).add(eng);
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 构建二级树形结构(流域 -> 电站)
|
||||
// 4. 构建二级树形结构(流域 -> 电站)
|
||||
for (SdRvcdDic rvcdDic : rvcdList) {
|
||||
List<SdEngInfoBH> engList = rvcdEngMap.get(rvcdDic.getRvcd());
|
||||
if (engList == null || engList.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Map<String, Object> rvcdNode = new LinkedHashMap<>();
|
||||
rvcdNode.put("type", "RVCD");
|
||||
rvcdNode.put("code", rvcdDic.getRvcd());
|
||||
@ -389,37 +405,25 @@ public class TreeStructureServiceImpl implements ITreeStructureService {
|
||||
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);
|
||||
}
|
||||
List<Map<String, Object>> engChildren = new ArrayList<>(engList.size());
|
||||
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("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);
|
||||
}
|
||||
rvcdNode.put("children", engChildren);
|
||||
result.add(rvcdNode);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@ -531,14 +531,15 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append(" AND ").append(filterSql).append(" ");
|
||||
}
|
||||
sql.append(buildVdPointOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||
|
||||
DataSourceResult<VdPointVo> result = new DataSourceResult<>();
|
||||
DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "t.RSTCD");
|
||||
DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "t.rstcds");
|
||||
if (scopeApplyResult.isEmptyResult()) {
|
||||
result.setData(new ArrayList<>());
|
||||
result.setTotal(0L);
|
||||
return result;
|
||||
}
|
||||
sql.append(buildVdPointOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||
List<VdPointVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||
page, sql.toString(), paramMap, VdPointVo.class);
|
||||
result.setData(list);
|
||||
|
||||
@ -3033,7 +3033,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
// paramMap.put("dtinType", dtinType);
|
||||
// }
|
||||
|
||||
DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "t.RSTCD");
|
||||
DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "wt.RSTCD");
|
||||
if (scopeApplyResult.isEmptyResult()) {
|
||||
dataSourceResult.setData(new ArrayList<>());
|
||||
dataSourceResult.setTotal(0L);
|
||||
|
||||
@ -76,30 +76,65 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
String name,
|
||||
String isdisplay,
|
||||
String tenantId) {
|
||||
List<Map<String, Object>> mapList=null;
|
||||
List<Map<String, Object>> listMap =new ArrayList<>();
|
||||
if(StrUtil.isEmpty(name)){//不带名称查询,返回树结构
|
||||
if (StrUtil.isEmpty(name)) {
|
||||
// 一次查询该系统下所有菜单,内存中构建树(替代递归逐层查 DB)
|
||||
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("parentid", "0").eq("systemcode", systemcode)
|
||||
queryWrapper.eq("systemcode", systemcode)
|
||||
.eq(StrUtil.isNotBlank(tenantId), "tenant_id", tenantId)
|
||||
.orderByAsc("orderno");
|
||||
mapList = this.listMaps(queryWrapper);
|
||||
listMap.addAll(ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList));
|
||||
for (int i = 0; i < listMap.size(); i++) {
|
||||
//查询下一子集
|
||||
List<Map<String, Object>> childList = child(listMap.get(i).get(
|
||||
"id").toString(), systemcode, name, null, null, tenantId);
|
||||
listMap.get(i).put("children", childList); //添加新列 子集
|
||||
List<Map<String, Object>> allMenus = this.listMaps(queryWrapper);
|
||||
List<Map<String, Object>> allConverted = ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, allMenus);
|
||||
|
||||
// 构建 id -> node 索引,并预初始化 children 空列表
|
||||
Map<String, Map<String, Object>> nodeMap = new LinkedHashMap<>();
|
||||
for (Map<String, Object> menu : allConverted) {
|
||||
menu.put("children", new ArrayList<>());
|
||||
nodeMap.put(String.valueOf(menu.get("id")), menu);
|
||||
}
|
||||
}else{ //根据菜单名称查询,直接返回类别
|
||||
|
||||
// 单次遍历挂载子节点到父节点
|
||||
List<Map<String, Object>> roots = new ArrayList<>();
|
||||
for (Map<String, Object> menu : allConverted) {
|
||||
String parentId = String.valueOf(menu.get("parentid"));
|
||||
Map<String, Object> parent = nodeMap.get(parentId);
|
||||
if (parent != null) {
|
||||
// @SuppressWarnings("unchecked")
|
||||
List<Map<String, Object>> children = (List<Map<String, Object>>) parent.get("children");
|
||||
children.add(menu);
|
||||
} else {
|
||||
roots.add(menu);
|
||||
}
|
||||
}
|
||||
|
||||
// 递归按 orderno 排序
|
||||
sortTreeByOrderno(roots);
|
||||
return roots;
|
||||
} else {
|
||||
// 根据菜单名称查询,直接返回列表
|
||||
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.like("name", name).eq("systemcode", systemcode)
|
||||
.eq(StrUtil.isNotBlank(tenantId), "tenant_id", tenantId)
|
||||
.orderByAsc("name");
|
||||
mapList = this.listMaps(queryWrapper);
|
||||
listMap.addAll(ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList));
|
||||
List<Map<String, Object>> mapList = this.listMaps(queryWrapper);
|
||||
return ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归按 orderno 排序树节点(保持与原 child() 相同的排序语义)
|
||||
*/
|
||||
private void sortTreeByOrderno(List<Map<String, Object>> nodes) {
|
||||
nodes.sort(Comparator.comparingInt(m -> {
|
||||
Object orderno = m.get("orderno");
|
||||
return orderno instanceof Number ? ((Number) orderno).intValue() : 0;
|
||||
}));
|
||||
for (Map<String, Object> node : nodes) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Map<String, Object>> children = (List<Map<String, Object>>) node.get("children");
|
||||
if (children != null && !children.isEmpty()) {
|
||||
sortTreeByOrderno(children);
|
||||
}
|
||||
}
|
||||
return listMap;
|
||||
}
|
||||
|
||||
/***********************************
|
||||
|
||||
@ -53,83 +53,97 @@
|
||||
ORDER BY ORDER_INDEX ASC
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectRegDropdown" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
t.RVCD,
|
||||
t.DISPLAY_RVNM AS RVNM,
|
||||
t.PRVCD,
|
||||
t.GRD,
|
||||
t.PATH,
|
||||
t.ORDER_INDEX,
|
||||
-- t.LGTD,
|
||||
-- t.LTTD,
|
||||
-- t.AREA,
|
||||
-- t.PERIMETER,
|
||||
-- t.COUNTRY,
|
||||
-- t.LOGO,
|
||||
-- t.INTRODUCE,
|
||||
-- t.INFFILE,
|
||||
t.SHORTNAME,
|
||||
t.SHEPRANGE,
|
||||
t.BASEID
|
||||
-- ,
|
||||
-- t.ENABLED,
|
||||
-- t.RECORD_USER,
|
||||
-- t.RECORD_TIME,
|
||||
-- t.MODIFY_USER,
|
||||
-- t.MODIFY_TIME,
|
||||
-- t.IS_DELETED,
|
||||
-- t.DELETE_USER,
|
||||
-- t.DELETE_TIME
|
||||
FROM (
|
||||
SELECT
|
||||
d.RVCD,
|
||||
LTRIM(SYS_CONNECT_BY_PATH(d.RVNM, '-'), '-') AS DISPLAY_RVNM,
|
||||
d.PRVCD,
|
||||
d.GRD,
|
||||
d.PATH,
|
||||
d.ORDER_INDEX,
|
||||
-- d.LGTD,
|
||||
-- d.LTTD,
|
||||
-- d.AREA,
|
||||
-- d.PERIMETER,
|
||||
-- d.COUNTRY,
|
||||
-- d.LOGO,
|
||||
-- d.INTRODUCE,
|
||||
-- d.INFFILE,
|
||||
d.SHORTNAME,
|
||||
d.SHEPRANGE,
|
||||
d.BASEID,
|
||||
-- d.ENABLED,
|
||||
-- d.RECORD_USER,
|
||||
-- d.RECORD_TIME,
|
||||
-- d.MODIFY_USER,
|
||||
-- d.MODIFY_TIME,
|
||||
-- d.IS_DELETED,
|
||||
-- d.DELETE_USER,
|
||||
-- d.DELETE_TIME,
|
||||
SYS_CONNECT_BY_PATH(LPAD(NVL(d.ORDER_INDEX, 999999999), 10, '0'), '/') AS ORDER_PATH,
|
||||
LEVEL AS TREE_LEVEL
|
||||
FROM (
|
||||
SELECT *
|
||||
FROM SD_RVCD_DIC
|
||||
WHERE NVL(ENABLED, 1) = 1
|
||||
AND NVL(IS_DELETED, 0) = 0
|
||||
) d
|
||||
START WITH d.PRVCD IS NULL OR d.PRVCD = '' OR d.PRVCD = '0'
|
||||
CONNECT BY PRIOR d.RVCD = d.PRVCD
|
||||
ORDER SIBLINGS BY d.ORDER_INDEX ASC, d.RVCD ASC
|
||||
) t
|
||||
WHERE t.TREE_LEVEL > 1
|
||||
SELECT *
|
||||
FROM V_SD_RVCD_DIC_TREE
|
||||
WHERE 1=1
|
||||
<if test="rvcd != null and rvcd != ''">
|
||||
AND t.RVCD = #{rvcd}
|
||||
AND RVCD = #{rvcd}
|
||||
</if>
|
||||
<if test="rvnm != null and rvnm != ''">
|
||||
AND t.DISPLAY_RVNM LIKE '%' || #{rvnm} || '%'
|
||||
AND RVNM LIKE '%' || #{rvnm} || '%'
|
||||
</if>
|
||||
ORDER BY t.ORDER_PATH ASC, t.RVCD ASC
|
||||
ORDER BY ORDER_PATH ASC, RVCD ASC
|
||||
</select>
|
||||
|
||||
<!-- <select id="selectRegDropdown" resultMap="BaseResultMap">-->
|
||||
<!-- SELECT-->
|
||||
<!-- t.RVCD,-->
|
||||
<!-- t.DISPLAY_RVNM AS RVNM,-->
|
||||
<!-- t.PRVCD,-->
|
||||
<!-- t.GRD,-->
|
||||
<!-- t.PATH,-->
|
||||
<!-- t.ORDER_INDEX,-->
|
||||
<!---- t.LGTD,-->
|
||||
<!---- t.LTTD,-->
|
||||
<!---- t.AREA,-->
|
||||
<!---- t.PERIMETER,-->
|
||||
<!---- t.COUNTRY,-->
|
||||
<!---- t.LOGO,-->
|
||||
<!---- t.INTRODUCE,-->
|
||||
<!---- t.INFFILE,-->
|
||||
<!-- t.SHORTNAME,-->
|
||||
<!-- t.SHEPRANGE,-->
|
||||
<!-- t.BASEID-->
|
||||
<!---- ,-->
|
||||
<!---- t.ENABLED,-->
|
||||
<!---- t.RECORD_USER,-->
|
||||
<!---- t.RECORD_TIME,-->
|
||||
<!---- t.MODIFY_USER,-->
|
||||
<!---- t.MODIFY_TIME,-->
|
||||
<!---- t.IS_DELETED,-->
|
||||
<!---- t.DELETE_USER,-->
|
||||
<!---- t.DELETE_TIME-->
|
||||
<!-- FROM (-->
|
||||
<!-- SELECT-->
|
||||
<!-- d.RVCD,-->
|
||||
<!-- LTRIM(SYS_CONNECT_BY_PATH(d.RVNM, '-'), '-') AS DISPLAY_RVNM,-->
|
||||
<!-- d.PRVCD,-->
|
||||
<!-- d.GRD,-->
|
||||
<!-- d.PATH,-->
|
||||
<!-- d.ORDER_INDEX,-->
|
||||
<!---- d.LGTD,-->
|
||||
<!---- d.LTTD,-->
|
||||
<!---- d.AREA,-->
|
||||
<!---- d.PERIMETER,-->
|
||||
<!---- d.COUNTRY,-->
|
||||
<!---- d.LOGO,-->
|
||||
<!---- d.INTRODUCE,-->
|
||||
<!---- d.INFFILE,-->
|
||||
<!-- d.SHORTNAME,-->
|
||||
<!-- d.SHEPRANGE,-->
|
||||
<!-- d.BASEID,-->
|
||||
<!---- d.ENABLED,-->
|
||||
<!---- d.RECORD_USER,-->
|
||||
<!---- d.RECORD_TIME,-->
|
||||
<!---- d.MODIFY_USER,-->
|
||||
<!---- d.MODIFY_TIME,-->
|
||||
<!---- d.IS_DELETED,-->
|
||||
<!---- d.DELETE_USER,-->
|
||||
<!---- d.DELETE_TIME,-->
|
||||
<!-- SYS_CONNECT_BY_PATH(LPAD(NVL(d.ORDER_INDEX, 999999999), 10, '0'), '/') AS ORDER_PATH,-->
|
||||
<!-- LEVEL AS TREE_LEVEL-->
|
||||
<!-- FROM (-->
|
||||
<!-- SELECT *-->
|
||||
<!-- FROM SD_RVCD_DIC-->
|
||||
<!-- WHERE NVL(ENABLED, 1) = 1-->
|
||||
<!-- AND NVL(IS_DELETED, 0) = 0-->
|
||||
<!-- ) d-->
|
||||
<!-- START WITH d.PRVCD IS NULL OR d.PRVCD = '' OR d.PRVCD = '0'-->
|
||||
<!-- CONNECT BY PRIOR d.RVCD = d.PRVCD-->
|
||||
<!-- ORDER SIBLINGS BY d.ORDER_INDEX ASC, d.RVCD ASC-->
|
||||
<!-- ) t-->
|
||||
<!-- WHERE t.TREE_LEVEL > 1-->
|
||||
<!-- <if test="rvcd != null and rvcd != ''">-->
|
||||
<!-- AND t.RVCD = #{rvcd}-->
|
||||
<!-- </if>-->
|
||||
<!-- <if test="rvnm != null and rvnm != ''">-->
|
||||
<!-- AND t.DISPLAY_RVNM LIKE '%' || #{rvnm} || '%'-->
|
||||
<!-- </if>-->
|
||||
<!-- ORDER BY t.ORDER_PATH ASC, t.RVCD ASC-->
|
||||
<!-- </select>-->
|
||||
|
||||
<select id="selectRegDropdownWithEng" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
t.RVCD,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user