fix: 流域注册下拉优化

This commit is contained in:
tangwei 2026-06-04 17:11:50 +08:00
parent e1d8809a03
commit 5f7179949a
3 changed files with 87 additions and 7 deletions

View File

@ -22,4 +22,9 @@ public interface SdRvcdDicMapper extends BaseMapper<SdRvcdDic> {
* 查询所有根流域
*/
List<SdRvcdDic> selectRootList();
/**
* 注册场景下拉框查询
*/
List<SdRvcdDic> selectRegDropdown(@Param("rvnm") String rvnm, @Param("rvcd") String rvcd);
}

View File

@ -222,12 +222,7 @@ public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic
@Override
public List<SdRvcdDic> regDropdown(String rvnm, String rvcd) {
return this.lambdaQuery()
.like(rvnm != null && !rvnm.isEmpty(), SdRvcdDic::getRvnm, rvnm)
.eq(rvcd != null && !rvcd.isEmpty(), SdRvcdDic::getRvcd, rvcd)
.eq(SdRvcdDic::getEnabled, 1)
.orderByAsc(SdRvcdDic::getBaseid,SdRvcdDic::getOrderIndex)
.list();
return this.baseMapper.selectRegDropdown(rvnm, rvcd);
}
private void buildTreeRecursive(SdRvcdDic parent, Map<String, List<SdRvcdDic>> childrenMap, Set<String> rootRvcdSet) {
@ -241,4 +236,8 @@ public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic
parent.setChildren(new ArrayList<>());
}
}
}
private boolean isRootRvcd(SdRvcdDic item) {
return item == null || !StringUtils.hasText(item.getPrvcd()) || "0".equals(item.getPrvcd());
}
}

View File

@ -53,4 +53,80 @@
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
<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>
</mapper>