feat: 查询梯级流域
This commit is contained in:
parent
ca5ff32c27
commit
ee931da67e
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 -> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user