feat: 流域下拉框列表查询&优化逻辑

This commit is contained in:
tangwei 2026-06-22 13:52:54 +08:00
parent 970de33016
commit ed0e6ed372
6 changed files with 85 additions and 4 deletions

View File

@ -111,6 +111,15 @@ public class SdRvcdDicController {
return ResponseResult.successData(rvcdDicService.selectForDropdown(rvnm, rvcd));
}
@GetMapping("/selectRvcdDropdown")
@Operation(summary = "流域下拉框列表查询")
public ResponseResult selectRvcdDropdown(
@RequestParam(required = false) String rvnm,
@RequestParam(required = false) String baseId
) {
return ResponseResult.successData(rvcdDicService.selectRvcdDropdown(rvnm,baseId));
}
@GetMapping("/regDropdown")
@Operation(summary = "下拉框列表查询(注册)")
public ResponseResult regDropdown(

View File

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

View File

@ -55,5 +55,7 @@ public interface ISdRvcdDicService extends IService<SdRvcdDic> {
List<SdRvcdDic> selectForDropdown(String rvnm, String rvcd);
List<SdRvcdDic> selectRvcdDropdown(String rvnm,String baseId);
List<SdRvcdDic> regDropdown(String rvnm, String rvcd);
}

View File

@ -149,6 +149,12 @@ public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic
}
}
@Override
public List<SdRvcdDic> selectRvcdDropdown(String rvnm,String baseId) {
List<SdRvcdDic> dropdownList = this.baseMapper.selectRvcdDropdown(rvnm,baseId);
return dropdownList;
}
@Override
public Set<String> getUserAuthorizedStationCodes() {

View File

@ -131,9 +131,30 @@ public class VdMonitorServiceImpl implements VdMonitorService {
GroupingInfo[] groups,
String filterSql,
Map<String, Object> paramMap) {
List<DataSourceRequest.GroupDescriptor> groupDescriptors = dataSourceRequest == null ? null : dataSourceRequest.getGroup();
List<String> selectItems = new ArrayList<>();
if (CollUtil.isNotEmpty(groupDescriptors)) {
for (DataSourceRequest.GroupDescriptor descriptor : groupDescriptors) {
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
continue;
}
String column = mapColumn(descriptor.getField());
if (StrUtil.isBlank(column)) {
continue;
}
selectItems.add(column + " AS " + descriptor.getField());
selectItems.add("COUNT(1) AS count_" + descriptor.getField());
}
}
if (selectItems.isEmpty()) {
selectItems.add("t.sttpCode AS sttpCode");
selectItems.add("COUNT(1) AS count_sttpCode");
}
StringBuilder sql = new StringBuilder();
sql.append("SELECT t.sttpCode AS sttpCode, COUNT(1) AS count_sttpCode ")
.append("FROM (")
sql.append("SELECT ")
.append(String.join(", ", selectItems))
.append(" FROM (")
.append(buildVmsstbprptViewSql())
.append(") t ")
.append("WHERE 1 = 1 ");
@ -141,8 +162,24 @@ public class VdMonitorServiceImpl implements VdMonitorService {
sql.append(" AND ").append(filterSql).append(" ");
}
sql.append(" GROUP BY t.sttpCode ");
sql.append(buildOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getGroup()));
List<String> groupByColumns = new ArrayList<>();
if (CollUtil.isNotEmpty(groupDescriptors)) {
for (DataSourceRequest.GroupDescriptor descriptor : groupDescriptors) {
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
continue;
}
String column = mapColumn(descriptor.getField());
if (StrUtil.isNotBlank(column)) {
groupByColumns.add(column);
}
}
}
if (!groupByColumns.isEmpty()) {
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns));
} else {
sql.append(" GROUP BY t.sttpCode ");
}
sql.append(buildOrderBySql(groupDescriptors));
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
DataSourceResult<VdVmsstbprptVo> result = new DataSourceResult<>();

View File

@ -212,5 +212,30 @@
</if>
ORDER BY t.ORDER_PATH ASC, t.RVCD ASC
</select>
<select id="selectRvcdDropdown" resultType="com.yfd.platform.qgc_base.domain.SdRvcdDic">
SELECT
RVCD,
RVNM,
PRVCD,
GRD,
PATH,
ORDER_INDEX,
SHORTNAME,
SHEPRANGE,
BASEID
FROM SD_RVCD_DIC
WHERE NVL(ENABLED, 1) = 1
AND NVL(IS_DELETED, 0) = 0
AND (PRVCD IS NULL OR PRVCD = '' OR PRVCD = '0')
<if test="baseId != null and baseId != ''">
AND BASEID = #{baseId}
</if>
<if test="rvnm != null and rvnm != ''">
AND RVNM LIKE '%' || #{rvnm} || '%'
</if>
ORDER BY ORDER_INDEX ASC, RVCD ASC
</select>
</mapper>