feat: 查询梯级流域

This commit is contained in:
tangwei 2026-07-07 18:14:03 +08:00
parent ca5ff32c27
commit ee931da67e
4 changed files with 173 additions and 0 deletions

View File

@ -57,4 +57,10 @@ public class SdEngMonitorController {
public ResponseResult getRsvrcscdBKendoList(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getRsvrcscdBKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(engInfoBHService.getRsvrcscdBKendoList(dataSourceRequest)); return ResponseResult.successData(engInfoBHService.getRsvrcscdBKendoList(dataSourceRequest));
} }
@PostMapping("/rsvrcscdb/rvcd")
@Operation(summary = "查询梯级流域")
public ResponseResult getRsvrcscdBRvcdList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(engInfoBHService.getRsvrcscdBRvcdList(dataSourceRequest));
}
} }

View File

@ -0,0 +1,16 @@
package com.yfd.platform.qgc_base.domain.vo;
import lombok.Data;
@Data
public class EngRsvrcscdRvcdVo {
private String wbsCode;
private String wbsName;
/**
* 旧口径对应上级/关联对象编码新库这里映射为基地编码
*/
private String objId;
}

View File

@ -10,6 +10,7 @@ import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo; import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo;
import com.yfd.platform.qgc_base.domain.vo.EngOperatVo; import com.yfd.platform.qgc_base.domain.vo.EngOperatVo;
import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdBVo; import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdBVo;
import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdRvcdVo;
import com.yfd.platform.qgc_base.domain.vo.EngPointVo; import com.yfd.platform.qgc_base.domain.vo.EngPointVo;
import com.yfd.platform.qgc_base.domain.vo.EngStInfoResultVo; import com.yfd.platform.qgc_base.domain.vo.EngStInfoResultVo;
import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo; import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo;
@ -92,4 +93,6 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
DataSourceResult<EngPointVo> getEngPointKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult<EngPointVo> getEngPointKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<EngRsvrcscdBVo> getRsvrcscdBKendoList(DataSourceRequest dataSourceRequest); DataSourceResult<EngRsvrcscdBVo> getRsvrcscdBKendoList(DataSourceRequest dataSourceRequest);
DataSourceResult<EngRsvrcscdRvcdVo> getRsvrcscdBRvcdList(DataSourceRequest dataSourceRequest);
} }

View File

@ -28,6 +28,7 @@ import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo; import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo;
import com.yfd.platform.qgc_base.domain.vo.EngOperatVo; import com.yfd.platform.qgc_base.domain.vo.EngOperatVo;
import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdBVo; import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdBVo;
import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdRvcdVo;
import com.yfd.platform.qgc_base.domain.vo.EngPointVo; import com.yfd.platform.qgc_base.domain.vo.EngPointVo;
import com.yfd.platform.qgc_base.domain.vo.EngStbprpDataVo; import com.yfd.platform.qgc_base.domain.vo.EngStbprpDataVo;
import com.yfd.platform.qgc_base.domain.vo.EngStBaseInfoVo; import com.yfd.platform.qgc_base.domain.vo.EngStBaseInfoVo;
@ -2983,6 +2984,32 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
return result; return result;
} }
@Override
public DataSourceResult<EngRsvrcscdRvcdVo> getRsvrcscdBRvcdList(DataSourceRequest dataSourceRequest) {
DataSourceResult<EngRsvrcscdRvcdVo> result = new DataSourceResult<>();
result.setAggregates(new HashMap<>());
Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT ")
.append("dic.HBRVCD AS wbsCode, ")
.append("dic.HBRVNM AS wbsName, ")
.append("dic.BASEID AS objId ")
.append("FROM SD_HBRV_DIC dic ")
.append("INNER JOIN SD_RSVRCSCD_B r ON r.RVCD = dic.HBRVCD AND NVL(r.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(dic.IS_DELETED, 0) = 0 ")
.append("AND NVL(dic.ENABLED, 1) = 1 ");
appendRsvrcscdRvcdPresetFilters(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), sql, paramMap, new int[]{0});
sql.append(" ORDER BY NVL(dic.BASEID, 'ZZZZZZZZ') ASC, NVL(dic.ORDER_INDEX, 999999) ASC, dic.HBRVCD ASC");
List<EngRsvrcscdRvcdVo> list = microservicDynamicSQLMapper.getAllListWithResultType(
sql.toString(), paramMap, EngRsvrcscdRvcdVo.class);
result.setData(list);
result.setTotal(list.size());
return result;
}
private String buildRsvrcscdBFilterCondition(DataSourceRequest.FilterDescriptor filter, private String buildRsvrcscdBFilterCondition(DataSourceRequest.FilterDescriptor filter,
Map<String, Object> paramMap, Map<String, Object> paramMap,
int[] indexHolder) { int[] indexHolder) {
@ -3123,4 +3150,125 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
} }
return " ORDER BY " + String.join(", ", orderItems); return " ORDER BY " + String.join(", ", orderItems);
} }
private void appendRsvrcscdRvcdPresetFilters(DataSourceRequest.FilterDescriptor filter,
StringBuilder sql,
Map<String, Object> paramMap,
int[] indexHolder) {
if (filter == null) {
return;
}
if (StringUtils.hasText(filter.getField())) {
String field = filter.getField();
String operator = filter.getOperator() == null ? "eq" : filter.getOperator().toLowerCase();
Object value = filter.getValue();
if (!StringUtils.hasText(operator)) {
operator = "eq";
}
if ("baseId".equals(field)) {
appendRsvrcscdRvcdLeafCondition(sql, "dic.BASEID", operator, value, paramMap, indexHolder);
return;
}
if ("treeLevel".equals(field)) {
appendRsvrcscdRvcdLeafCondition(sql, "dic.GRD", operator, value, paramMap, indexHolder);
return;
}
if ("wbsType".equals(field)) {
// 旧口径走 SD_WBS_B.WBS_TYPE这里已固定替换成 SD_HBRV_DIC保留参数但不参与过滤
return;
}
if ("wbsCode".equals(field)) {
appendRsvrcscdRvcdLeafCondition(sql, "dic.HBRVCD", operator, value, paramMap, indexHolder);
return;
}
if ("wbsName".equals(field)) {
appendRsvrcscdRvcdLeafCondition(sql, "dic.HBRVNM", operator, value, paramMap, indexHolder);
return;
}
return;
}
if (filter.getFilters() == null || filter.getFilters().isEmpty()) {
return;
}
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
appendRsvrcscdRvcdPresetFilters(child, sql, paramMap, indexHolder);
}
}
private void appendRsvrcscdRvcdLeafCondition(StringBuilder sql,
String column,
String operator,
Object value,
Map<String, Object> paramMap,
int[] indexHolder) {
if (!StringUtils.hasText(column)) {
return;
}
if ("isnull".equals(operator)) {
sql.append(" AND ").append(column).append(" IS NULL ");
return;
}
if ("isnotnull".equals(operator)) {
sql.append(" AND ").append(column).append(" IS NOT NULL ");
return;
}
if ("in".equals(operator)) {
List<Object> values = normalizeFilterValues(value);
if (values.isEmpty()) {
return;
}
List<String> placeholders = new ArrayList<>();
for (Object item : values) {
String key = "rsvrcdRvcdParam" + indexHolder[0]++;
paramMap.put(key, item);
placeholders.add("#{map." + key + "}");
}
sql.append(" AND ").append(column).append(" IN (").append(String.join(", ", placeholders)).append(") ");
return;
}
if (value == null) {
return;
}
String key = "rsvrcdRvcdParam" + indexHolder[0]++;
switch (operator) {
case "eq" -> {
paramMap.put(key, value);
sql.append(" AND ").append(column).append(" = #{map.").append(key).append("} ");
}
case "neq" -> {
paramMap.put(key, value);
sql.append(" AND ").append(column).append(" <> #{map.").append(key).append("} ");
}
case "contains" -> {
paramMap.put(key, "%" + value + "%");
sql.append(" AND ").append(column).append(" LIKE #{map.").append(key).append("} ");
}
case "startswith" -> {
paramMap.put(key, value + "%");
sql.append(" AND ").append(column).append(" LIKE #{map.").append(key).append("} ");
}
case "endswith" -> {
paramMap.put(key, "%" + value);
sql.append(" AND ").append(column).append(" LIKE #{map.").append(key).append("} ");
}
case "gt" -> {
paramMap.put(key, value);
sql.append(" AND ").append(column).append(" > #{map.").append(key).append("} ");
}
case "gte" -> {
paramMap.put(key, value);
sql.append(" AND ").append(column).append(" >= #{map.").append(key).append("} ");
}
case "lt" -> {
paramMap.put(key, value);
sql.append(" AND ").append(column).append(" < #{map.").append(key).append("} ");
}
case "lte" -> {
paramMap.put(key, value);
sql.append(" AND ").append(column).append(" <= #{map.").append(key).append("} ");
}
default -> {
}
}
}
} }