fix: 下拉框列表查询(注册)

This commit is contained in:
tangwei 2026-06-04 18:28:52 +08:00
parent 1db7cc5075
commit 17007d8a18
3 changed files with 88 additions and 1 deletions

View File

@ -27,4 +27,9 @@ public interface SdRvcdDicMapper extends BaseMapper<SdRvcdDic> {
* 注册场景下拉框查询
*/
List<SdRvcdDic> selectRegDropdown(@Param("rvnm") String rvnm, @Param("rvcd") String rvcd);
/**
* 注册场景下拉框查询仅返回能被电站表 RVCD 命中的流域
*/
List<SdRvcdDic> selectRegDropdownWithEng(@Param("rvnm") String rvnm, @Param("rvcd") String rvcd);
}

View File

@ -216,7 +216,7 @@ public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic
@Override
public List<SdRvcdDic> regDropdown(String rvnm, String rvcd) {
return this.baseMapper.selectRegDropdown(rvnm, rvcd);
return this.baseMapper.selectRegDropdownWithEng(rvnm, rvcd);
}
private void buildTreeRecursive(SdRvcdDic parent, Map<String, List<SdRvcdDic>> childrenMap, Set<String> rootRvcdSet) {

View File

@ -129,4 +129,86 @@
ORDER BY t.ORDER_PATH ASC, t.RVCD ASC
</select>
<select id="selectRegDropdownWithEng" 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
AND EXISTS (
SELECT 1
FROM SD_ENGINFO_B_H eng
WHERE eng.RVCD = t.RVCD
AND NVL(eng.IS_DELETED, 0) = 0
)
<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>