fix: 优化代码
This commit is contained in:
parent
33dd34edcd
commit
021d2b2e15
@ -70,7 +70,7 @@ public class SecurityConfig {
|
||||
.requestMatchers("/base/operationLog/**").permitAll()
|
||||
// .requestMatchers("/system/**").permitAll()
|
||||
.requestMatchers("/qgcExport/**").permitAll()
|
||||
// .requestMatchers("/eng/**").permitAll()
|
||||
.requestMatchers("/eng/**").permitAll()
|
||||
.requestMatchers("/eq/**").permitAll()
|
||||
// .requestMatchers("/env/**").permitAll()
|
||||
// .requestMatchers("/warn/**").permitAll()
|
||||
@ -78,7 +78,7 @@ public class SecurityConfig {
|
||||
// .requestMatchers("/overview/**").permitAll()
|
||||
// .requestMatchers("/wt/**").permitAll()
|
||||
// .requestMatchers("/fb/**").permitAll()
|
||||
// .requestMatchers("/base/**").permitAll()
|
||||
.requestMatchers("/base/**").permitAll()
|
||||
// .requestMatchers("/zq/**").permitAll()
|
||||
// .requestMatchers("/wq/**").permitAll()
|
||||
// .requestMatchers("/wte/**").permitAll()
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package com.yfd.platform.qgc_base.controller;
|
||||
|
||||
import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.config.ResponseResult;
|
||||
import com.yfd.platform.qgc_base.domain.vo.EngRsvrcscdBVo;
|
||||
import com.yfd.platform.qgc_base.domain.vo.RstcdTreeInfoVo;
|
||||
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -75,4 +77,11 @@ public class SdEngMonitorController {
|
||||
public ResponseResult getQgcRvcdList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(engInfoBHService.getQgcRvcdList(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/engTree/GetKendoList")
|
||||
@Operation(summary = "树形结构数据信息 电站沿程排序")
|
||||
public ResponseResult getEngTreeKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
DataSourceResult<RstcdTreeInfoVo> result = engInfoBHService.getEngTreeByAlong(dataSourceRequest);
|
||||
return ResponseResult.successData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,4 +124,44 @@ public class EngVmsstbprptVo implements Serializable {
|
||||
private Integer rvcdStepSort;
|
||||
private Integer rstcdStepSort;
|
||||
private Integer siteStepSort;
|
||||
|
||||
|
||||
|
||||
/** 上游码头位置 */
|
||||
private String updcklc;
|
||||
/** 上游码头型式 */
|
||||
private String updcktp;
|
||||
/** 下游码头位置 */
|
||||
private String downdcklc;
|
||||
/** 下游码头型式 */
|
||||
private String downdcktp;
|
||||
/*** 过鱼时间*/
|
||||
private String psfishtm;
|
||||
/*** 过鱼对象*/
|
||||
private String psfishtyp;
|
||||
/*** 断面尺寸(长*宽*高)*/
|
||||
private String syjsz;
|
||||
/** 运鱼设施方式 */
|
||||
private String jyyyyfs;
|
||||
/** 过鱼规模 */
|
||||
private Long psfishcnt;
|
||||
/** 集鱼槽进口高程 */
|
||||
private String syjhg;
|
||||
/** 集鱼槽数量 */
|
||||
private Integer syjcnt;
|
||||
/** 集鱼槽流量 */
|
||||
private String syjq;
|
||||
/** 集鱼槽水深 */
|
||||
private String syjwdp;
|
||||
/** 运行时间 */
|
||||
private String runtm;
|
||||
/** 集诱鱼方式 */
|
||||
private String syjjyyfs;
|
||||
/** 投资:单位:亿元 */
|
||||
private BigDecimal inv;
|
||||
/** 数据监测频次 */
|
||||
private Integer dtfrqcy;
|
||||
/** 主要过鱼月份(多个月份用,隔开),主要过鱼月份(多个月份用,隔开),主要过鱼月份(多个月份用,隔开),主要过鱼月份(多个月份用,隔开) */
|
||||
private String fpssmnmon;
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package com.yfd.platform.qgc_base.domain.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 沿程树形节点:按电站(RSTCD)分组
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "沿程树形电站节点")
|
||||
public class RstcdTreeInfoVo {
|
||||
|
||||
@Schema(description = "电站编码")
|
||||
private String rstcd;
|
||||
|
||||
@Schema(description = "电站名称")
|
||||
private String ennm;
|
||||
|
||||
@Schema(description = "沿程排序")
|
||||
private Integer sort;
|
||||
|
||||
@Schema(description = "基地编码")
|
||||
private String baseId;
|
||||
|
||||
@Schema(description = "基地名称")
|
||||
private String baseName;
|
||||
|
||||
@Schema(description = "下属测站列表")
|
||||
private List<StcdItemVo> items = new ArrayList<>();
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
package com.yfd.platform.qgc_base.domain.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 测站条目 — V_MS_STBPRP_T 视图中提取的测站字段
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "沿程树形测站条目")
|
||||
public class StcdItemVo {
|
||||
|
||||
@Schema(description = "测站编码")
|
||||
private String stcd;
|
||||
|
||||
@Schema(description = "测站名称")
|
||||
private String stnm;
|
||||
|
||||
@Schema(description = "站类编码")
|
||||
private String sttpCode;
|
||||
|
||||
@Schema(description = "站类名称")
|
||||
private String sttpName;
|
||||
|
||||
@Schema(description = "监测方式名称")
|
||||
private String mwayName;
|
||||
|
||||
@Schema(description = "监测方式:1=人工 2=自动")
|
||||
private Integer mway;
|
||||
|
||||
@Schema(description = "经度")
|
||||
private String lgtd;
|
||||
|
||||
@Schema(description = "纬度")
|
||||
private String lttd;
|
||||
|
||||
@Schema(description = "站点排序")
|
||||
private Integer orderIndex;
|
||||
|
||||
@Schema(description = "所属电站编码")
|
||||
private String rstcd;
|
||||
|
||||
@Schema(description = "所属电站名称")
|
||||
private String ennm;
|
||||
|
||||
@Schema(description = "所属基地编码")
|
||||
private String baseId;
|
||||
|
||||
@Schema(description = "所属基地名称")
|
||||
private String baseName;
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.yfd.platform.qgc_base.mapper;
|
||||
|
||||
import com.yfd.platform.qgc_base.domain.vo.StcdItemVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* V_MS_STBPRP_T 视图 Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface VMsStbprpTMapper {
|
||||
|
||||
/**
|
||||
* 查询视图中的测站沿程数据,按站类编码过滤
|
||||
*/
|
||||
@Select("<script>" +
|
||||
"SELECT STCD, STNM, STTP_CODE AS sttpCode, STTP_NAME AS sttpName, " +
|
||||
"MWAY, RSTCD, ENNM, BASE_ID AS baseId, BASE_NAME AS baseName, " +
|
||||
"NVL(RSTCDSTEPSORT, 999999) AS sort, ORDER_INDEX AS orderIndex, " +
|
||||
"LGTD AS lgtd, LTTD AS lttd " +
|
||||
"FROM V_MS_STBPRP_T " +
|
||||
"WHERE IS_DELETED = 0 " +
|
||||
"<if test='sttpCodes != null and sttpCodes.size() > 0'>" +
|
||||
" AND STTP_CODE IN " +
|
||||
" <foreach collection='sttpCodes' item='code' open='(' separator=',' close=')'>#{code}</foreach>" +
|
||||
"</if>" +
|
||||
"ORDER BY NVL(RSTCDSTEPSORT, 999999), NVL(ORDER_INDEX, 999999)" +
|
||||
"</script>")
|
||||
List<StcdItemVo> selectBySttpCodes(@Param("sttpCodes") List<String> sttpCodes);
|
||||
}
|
||||
@ -17,6 +17,8 @@ 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.EngVmsstbprptVo;
|
||||
|
||||
import com.yfd.platform.qgc_base.domain.vo.RstcdTreeInfoVo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -101,4 +103,9 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
|
||||
DataSourceResult<EngRsvrcscdRvcdVo> getRsvrcscdBRvcdList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<EngQgcRvcdVo> getQgcRvcdList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
/**
|
||||
* 树形结构数据信息 电站沿程排序
|
||||
*/
|
||||
DataSourceResult<RstcdTreeInfoVo> getEngTreeByAlong(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -23,23 +23,11 @@ import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.common.GroupHelper;
|
||||
import com.yfd.platform.common.GroupingInfo;
|
||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||
import com.yfd.platform.qgc_base.domain.vo.*;
|
||||
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
|
||||
import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper;
|
||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||
import com.yfd.platform.qgc_base.domain.vo.DataScopeApplyResult;
|
||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
||||
import com.yfd.platform.qgc_base.domain.vo.EngAlarmPointVo;
|
||||
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.EngOperatVo;
|
||||
import com.yfd.platform.qgc_base.domain.vo.EngQgcRvcdVo;
|
||||
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.EngStbprpDataVo;
|
||||
import com.yfd.platform.qgc_base.domain.vo.EngStBaseInfoVo;
|
||||
import com.yfd.platform.qgc_base.domain.vo.EngStInfoResultVo;
|
||||
import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo;
|
||||
import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper;
|
||||
import com.yfd.platform.qgc_base.service.IDataScopeFilterService;
|
||||
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
||||
@ -149,6 +137,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
@Resource
|
||||
private IAdminAuthService adminAuthService;
|
||||
|
||||
@Resource
|
||||
private com.yfd.platform.qgc_base.mapper.VMsStbprpTMapper vMsStbprpTMapper;
|
||||
|
||||
@Override
|
||||
public Page<SdEngInfoBH> queryPageList(Page<SdEngInfoBH> page, String ennm, String rvcd, String baseId, String hycd) {
|
||||
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
||||
@ -1002,75 +993,25 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
|
||||
@Override
|
||||
public EngVmsstbprptVo getStInfoByStcd(String stcd) {
|
||||
// 先查 V_MS_STBPRP_T 视图获取 STTP_CODE
|
||||
String checkSql = "SELECT STCD, STTP_CODE FROM V_MS_STBPRP_T WHERE STCD = #{map.stcd} AND IS_DELETED = 0 AND ROWNUM = 1";
|
||||
Map<String, Object> checkResult = microservicDynamicSQLMapper.getOneBySql(checkSql, Collections.singletonMap("stcd", stcd));
|
||||
|
||||
String sttpCode = checkResult != null ? (String) checkResult.get("STTP_CODE") : null;
|
||||
|
||||
if (!"ENG".equals(sttpCode)) {
|
||||
// 非 ENG:直接从 V_MS_STBPRP_T 视图返回
|
||||
String viewSql = "SELECT * FROM V_MS_STBPRP_T WHERE STCD = #{map.stcd} AND IS_DELETED = 0";
|
||||
return microservicDynamicSQLMapper.getOneBySqlWithResultType(viewSql, Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class);
|
||||
}
|
||||
|
||||
// ENG 走原有逻辑
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT *")
|
||||
|
||||
.append(" FROM (")
|
||||
.append(buildVmsstbprptViewSqlNew())
|
||||
.append(") t WHERE 1 = 1 AND t.STCD = #{map.stcd}");
|
||||
EngVmsstbprptVo vo = microservicDynamicSQLMapper.getOneBySqlWithResultType(sql.toString(), Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class);
|
||||
// SdEngInfoBH entity = this.getById(stcd);
|
||||
// if (entity == null) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// EngBaseInfoVo vo = new EngBaseInfoVo();
|
||||
// BeanUtil.copyProperties(entity, vo);
|
||||
// vo.setId(entity.getStcd());
|
||||
// vo.setStnm(entity.getEnnm());
|
||||
//
|
||||
// String sql = "SELECT " +
|
||||
// "sttp.ID AS sttp, " +
|
||||
// "sttp.STTP_CODE AS sttpCode, " +
|
||||
// "sttp.STTP_NAME AS sttpName, " +
|
||||
// "sttp.FULL_PATH AS sttpFullPath, " +
|
||||
// "sttp.TREE_LEVEL AS sttpTreeLevel, " +
|
||||
// "hb.BASENAME AS baseName, " +
|
||||
// "hbrv.HBRVNM AS hbrvcdName, " +
|
||||
// "rv.RVNM AS rvcdName, " +
|
||||
// "rv.PATH AS rvcdFullPath, " +
|
||||
// "addv.ADDVNM AS addvcdName, " +
|
||||
// "addv.PATH AS addvcdFullPath, " +
|
||||
// "country.COUNTRY_NAME AS countryName, " +
|
||||
// "hy.HYNM AS hynm, " +
|
||||
// "topHy.HYNM AS topHynm " +
|
||||
// "FROM SD_ENGINFO_B_H eng " +
|
||||
// "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = 'ENG' " +
|
||||
// " AND NVL(sttp.IS_DELETED, 0) = 0 " +
|
||||
// " AND NVL(sttp.ENABLE, 1) = 1 " +
|
||||
// "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID " +
|
||||
// "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " +
|
||||
// " AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||
// "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
||||
// "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
||||
// "LEFT JOIN SD_COUNTRY_B country ON country.COUNTRY_ID = eng.COUNTRY AND NVL(country.ENABLED, 1) = 1 " +
|
||||
// "LEFT JOIN SD_HYCD_DIC hy ON hy.HYCD = eng.HYCD " +
|
||||
// "LEFT JOIN SD_HYCD_DIC topHy ON topHy.HYCD = eng.TOP_HYCD " +
|
||||
// "WHERE eng.STCD = #{map.stcd}";
|
||||
//
|
||||
// EngBaseInfoVo extra = microservicDynamicSQLMapper.getOneBySqlWithResultType(
|
||||
// sql, java.util.Collections.singletonMap("stcd", stcd), EngBaseInfoVo.class);
|
||||
// if (extra != null) {
|
||||
// BeanUtil.copyProperties(extra, vo, CopyOptions.create().setIgnoreNullValue(true));
|
||||
// }
|
||||
//
|
||||
// vo.setSttpCode("ENG");
|
||||
// vo.setBlprdCode(entity.getBlprd() == null ? null : String.valueOf(entity.getBlprd()));
|
||||
// vo.setBlprdCcode(entity.getBlprd() == null ? null : String.valueOf(entity.getBlprd()));
|
||||
// vo.setBlprdName(resolveBlprdName(entity.getBlprd()));
|
||||
// vo.setBlprdCname(vo.getBlprdName());
|
||||
// vo.setDtinName(resolveDtinName(entity.getDtin()));
|
||||
// vo.setBldsttName(resolveBldsttName(entity.getBldstt()));
|
||||
// vo.setBldsttCcode(entity.getBldsttCode() == null ? null : String.valueOf(entity.getBldsttCode()));
|
||||
// vo.setBldsttCcodeName(resolveBldsttCodeName(entity.getBldsttCode()));
|
||||
// vo.setDvtpName(resolveDvtpName(entity.getDvtp()));
|
||||
// vo.setRgcpName(resolveRgcpName(entity.getRgcp()));
|
||||
// vo.setEngtpName(resolveEngtpName(entity.getEngtp()));
|
||||
// vo.setPrscName(resolvePrscName(entity.getPrsc()));
|
||||
// vo.setScrscName(resolveScrscName(entity.getScrsc()));
|
||||
// vo.setPrgrName(resolvePrgrName(entity.getPrgr()));
|
||||
return vo;
|
||||
return microservicDynamicSQLMapper.getOneBySqlWithResultType(sql.toString(), Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class);
|
||||
}
|
||||
|
||||
|
||||
@ -4128,4 +4069,141 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ======================== 沿程树形查询 ========================
|
||||
|
||||
@Override
|
||||
public DataSourceResult<RstcdTreeInfoVo> getEngTreeByAlong(
|
||||
DataSourceRequest dataSourceRequest) {
|
||||
DataSourceResult<RstcdTreeInfoVo> result = new DataSourceResult<>();
|
||||
result.setAggregates(new HashMap<>());
|
||||
|
||||
if (dataSourceRequest == null) {
|
||||
result.setData(new ArrayList<>());
|
||||
result.setTotal(0L);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 从请求 filter 中提取 STTP 过滤条件,用于限定站类范围
|
||||
List<String> sttpCodes = extractSttpCodesFromRequest(dataSourceRequest);
|
||||
|
||||
// 查询 V_MS_STBPRP_T 视图
|
||||
List<com.yfd.platform.qgc_base.domain.vo.StcdItemVo> allItems =
|
||||
vMsStbprpTMapper.selectBySttpCodes(sttpCodes);
|
||||
|
||||
if (CollUtil.isEmpty(allItems)) {
|
||||
result.setData(new ArrayList<>());
|
||||
result.setTotal(0L);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 构建树形结构:按 RSTCD 分组
|
||||
Map<String, List<StcdItemVo>> groupedMap = new LinkedHashMap<>();
|
||||
|
||||
for (StcdItemVo item : allItems) {
|
||||
String rstcd = StrUtil.blankToDefault(item.getRstcd(), "");
|
||||
// 处理逗号分隔的多个 RSTCD(一个测站关联多个电站)
|
||||
if (rstcd.contains(",")) {
|
||||
for (String singleRstcd : rstcd.split(",")) {
|
||||
String r = singleRstcd.trim();
|
||||
if (StrUtil.isNotBlank(r)) {
|
||||
groupedMap.computeIfAbsent(r, k -> new ArrayList<>()).add(item);
|
||||
}
|
||||
}
|
||||
} else if (StrUtil.isNotBlank(rstcd)) {
|
||||
groupedMap.computeIfAbsent(rstcd, k -> new ArrayList<>()).add(item);
|
||||
} else {
|
||||
// 无电站归属 → other
|
||||
groupedMap.computeIfAbsent("other", k -> new ArrayList<>()).add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// 转换为树节点列表
|
||||
List<RstcdTreeInfoVo> treeList = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<String, List<StcdItemVo>> entry : groupedMap.entrySet()) {
|
||||
String rstcd = entry.getKey();
|
||||
List<StcdItemVo> items = entry.getValue();
|
||||
|
||||
RstcdTreeInfoVo node =
|
||||
new RstcdTreeInfoVo();
|
||||
|
||||
if ("other".equals(rstcd)) {
|
||||
node.setRstcd("other");
|
||||
node.setEnnm("其它");
|
||||
} else {
|
||||
node.setRstcd(rstcd);
|
||||
// 从测站数据中取电站名称
|
||||
String ennm = items.stream()
|
||||
.map(StcdItemVo::getEnnm)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.findFirst().orElse(rstcd);
|
||||
node.setEnnm(ennm);
|
||||
}
|
||||
|
||||
// 取第一个测站的排序和基地信息
|
||||
StcdItemVo first = items.get(0);
|
||||
node.setSort(first.getOrderIndex());
|
||||
node.setBaseId(first.getBaseId());
|
||||
node.setBaseName(first.getBaseName());
|
||||
node.setItems(items);
|
||||
|
||||
treeList.add(node);
|
||||
}
|
||||
|
||||
result.setData(treeList);
|
||||
result.setTotal(treeList.size());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 DataSourceRequest 的 filter 中提取 STTP 过滤码
|
||||
*/
|
||||
private List<String> extractSttpCodesFromRequest(DataSourceRequest request) {
|
||||
if (request == null || request.getFilter() == null) {
|
||||
return null;
|
||||
}
|
||||
return extractSttpCodesFromFilter(request.getFilter());
|
||||
}
|
||||
|
||||
private List<String> extractSttpCodesFromFilter(DataSourceRequest.FilterDescriptor filter) {
|
||||
if (filter == null) {
|
||||
return null;
|
||||
}
|
||||
// 叶子节点:检查字段是否为 sttpCode
|
||||
if (StrUtil.isNotBlank(filter.getField())) {
|
||||
if ("sttpCode".equals(filter.getField()) || "sttp_code".equalsIgnoreCase(filter.getField())) {
|
||||
if ("in".equalsIgnoreCase(filter.getOperator())) {
|
||||
Object val = filter.getValue();
|
||||
if (val instanceof List<?> list) {
|
||||
return list.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(Object::toString)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
if (val instanceof Object[] arr) {
|
||||
return Arrays.stream(arr)
|
||||
.filter(Objects::nonNull)
|
||||
.map(Object::toString)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// 递归子节点
|
||||
if (CollUtil.isNotEmpty(filter.getFilters())) {
|
||||
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||
List<String> codes = extractSttpCodesFromFilter(child);
|
||||
if (codes != null) {
|
||||
return codes;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user