fix: 优化逻辑

This commit is contained in:
tangwei 2026-06-25 16:14:45 +08:00
parent b895e989c9
commit c24c4e8645

View File

@ -300,11 +300,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
"TOP_HYNM" "TOP_HYNM"
)); ));
sql.append(", "); sql.append(", ");
sql.append(buildScalarNameSelect( sql.append(buildReachcdNameSelect(paramMap));
StringUtils.hasText((String) paramMap.get("reachcd")),
"(SELECT rv.RVNM FROM SD_RVCD_DIC rv WHERE rv.RVCD = #{map.reachcd} AND ROWNUM = 1)",
"REACHCD_NAME"
));
sql.append(" FROM DUAL"); sql.append(" FROM DUAL");
return sql.toString(); return sql.toString();
} }
@ -328,6 +324,19 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
return querySql + " AS " + alias; return querySql + " AS " + alias;
} }
private String buildReachcdNameSelect(Map<String, Object> paramMap) {
if (!StringUtils.hasText((String) paramMap.get("reachcd"))) {
return "NULL AS REACHCD_NAME";
}
return "(SELECT LISTAGG(pathNode.RVNM, '-') WITHIN GROUP (ORDER BY pathNode.LVL DESC) " +
"FROM ( " +
" SELECT rv.RVNM, LEVEL AS LVL " +
" FROM SD_RVCD_DIC rv " +
" START WITH rv.RVCD = #{map.reachcd} " +
" CONNECT BY PRIOR rv.PRVCD = rv.RVCD " +
") pathNode) AS REACHCD_NAME";
}
private String resolveRelatedName(String code, Map<String, Object> row, String column) { private String resolveRelatedName(String code, Map<String, Object> row, String column) {
if (code == null) { if (code == null) {
return null; return null;