fix: 电站业务结果数据查询
This commit is contained in:
parent
bd8472db2e
commit
7695bc0c12
@ -187,4 +187,10 @@ public class EngEqDataController {
|
||||
public ResponseResult getEqdsKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(engEqDataService.getEqdsKendoListCust(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/GetKendoListCust")
|
||||
@Operation(summary = "电站业务结果数据查询(MS_ENG_T + V_MS_STBPRP_T)")
|
||||
public ResponseResult getMsEngKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(engEqDataService.getMsEngKendoList(dataSourceRequest));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,26 +2,7 @@ package com.yfd.platform.qgc_eng.eq.service;
|
||||
|
||||
import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseMsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqdsVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitQueryVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.StBaseInfo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.StcdInfoVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo;
|
||||
import com.yfd.platform.qgc_eng.eq.entity.vo.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -89,4 +70,10 @@ public interface EngEqDataService {
|
||||
StcdInfoVo getStInfoByStcd(String stcd);
|
||||
|
||||
DataSourceResult<EngEqdsVo> getEqdsKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
/**
|
||||
* 查询 MS_ENG_T 电站业务结果数据(支持动态过滤、排序、分组)
|
||||
* <p>对应旧系统 EngEqController.getKendoListCust</p>
|
||||
*/
|
||||
DataSourceResult<EngEqDataVo> getMsEngKendoList(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -6337,4 +6337,338 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
.append(String.join(", ", placeholders))
|
||||
.append(") ");
|
||||
}
|
||||
|
||||
// ==================== MS_ENG_T 电站业务结果查询 ====================
|
||||
|
||||
@Override
|
||||
public DataSourceResult<EngEqDataVo> getMsEngKendoList(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
|
||||
return queryMsEngDetailList(dataSourceRequest, loadOptions);
|
||||
}
|
||||
return queryMsEngGroupList(dataSourceRequest, loadOptions);
|
||||
}
|
||||
|
||||
private DataSourceResult<EngEqDataVo> queryMsEngDetailList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT ")
|
||||
.append(buildMsEngDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||
.append(" ")
|
||||
.append(buildMsEngViewSql())
|
||||
.append(" WHERE NVL(MET.IS_DELETED, 0) = 0 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String filterSql = buildMsEngFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append(" AND ").append(filterSql).append(" ");
|
||||
}
|
||||
sql.append(buildMsEngDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||
|
||||
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||
List<EngEqDataVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqDataVo.class);
|
||||
DataSourceResult<EngEqDataVo> result = new DataSourceResult<>();
|
||||
result.setData(list);
|
||||
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
private DataSourceResult<EngEqDataVo> queryMsEngGroupList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
List<DataSourceRequest.GroupDescriptor> groups = dataSourceRequest.getGroup();
|
||||
GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup();
|
||||
|
||||
List<String> selectItems = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapMsEngColumn(descriptor.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
selectItems.add(column + " AS " + descriptor.getField().toUpperCase());
|
||||
selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase());
|
||||
if (CollUtil.isNotEmpty(descriptor.getAggregates())) {
|
||||
for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) {
|
||||
String aggregateColumn = mapMsEngColumn(aggregate.getField());
|
||||
if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) {
|
||||
continue;
|
||||
}
|
||||
selectItems.add(buildMsEngAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (selectItems.isEmpty()) {
|
||||
selectItems.add("MET.STCD AS STCD");
|
||||
selectItems.add("COUNT(*) AS COUNT_STCD");
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT ")
|
||||
.append(String.join(", ", selectItems))
|
||||
.append(" ")
|
||||
.append(buildMsEngViewSql())
|
||||
.append(" WHERE NVL(MET.IS_DELETED, 0) = 0 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String filterSql = buildMsEngFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append(" AND ").append(filterSql).append(" ");
|
||||
}
|
||||
|
||||
List<String> groupByColumns = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapMsEngColumn(descriptor.getField());
|
||||
if (StrUtil.isNotBlank(column)) {
|
||||
groupByColumns.add(column);
|
||||
}
|
||||
}
|
||||
if (!groupByColumns.isEmpty()) {
|
||||
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" ");
|
||||
}
|
||||
sql.append(buildMsEngGroupOrderBySql(groups));
|
||||
|
||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||
DataSourceResult<EngEqDataVo> result = new DataSourceResult<>();
|
||||
if (dataSourceRequest.getGroupResultFlat() != null && dataSourceRequest.getGroupResultFlat()) {
|
||||
result.setData((List<EngEqDataVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||
} else {
|
||||
result.setData((List<EngEqDataVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||
}
|
||||
result.setTotal(0L);
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* MS_ENG_T + V_MS_STBPRP_T 联合查询的 FROM 子句
|
||||
*/
|
||||
private String buildMsEngViewSql() {
|
||||
return "FROM MS_ENG_T MET " +
|
||||
"LEFT JOIN MS_ENG_T MET1 ON MET1.STCD = MET.STCD " +
|
||||
" AND MET1.TYPE = MET.TYPE " +
|
||||
" AND ADD_MONTHS(MET1.TM, 12) = MET.TM " +
|
||||
" AND NVL(MET1.IS_DELETED, 0) = 0 " +
|
||||
"INNER JOIN V_MS_STBPRP_T MSB ON MSB.STCD = MET.STCD " +
|
||||
" AND MSB.STTP_CODE = 'ENG' " +
|
||||
" AND MSB.BLDSTT_CODE = 2 ";
|
||||
}
|
||||
|
||||
private Map<String, String> msEngFieldColumns() {
|
||||
Map<String, String> columns = new LinkedHashMap<>();
|
||||
columns.put("id", "MET.ID AS id");
|
||||
columns.put("stcd", "MET.STCD AS stcd");
|
||||
columns.put("stnm", "MSB.STNM AS stnm");
|
||||
columns.put("ennm", "MSB.ENNM AS ennm");
|
||||
columns.put("tm", "MET.TM AS tm");
|
||||
columns.put("qi", "MET.QI AS qi");
|
||||
columns.put("qo", "MET.QO AS qo");
|
||||
columns.put("qecLimit", "MET.QEC_LIMIT AS qecLimit");
|
||||
columns.put("qec", "MET.QEC AS qec");
|
||||
columns.put("mwrLimit", "MET.MWR_LIMIT AS mwrLimit");
|
||||
columns.put("avqLimit", "MET.AVQ_LIMIT AS avqLimit");
|
||||
columns.put("qecC", "MET.QEC_C AS qecC");
|
||||
columns.put("mwrC", "MET.MWR_C AS mwrC");
|
||||
columns.put("avqC", "MET.AVQ_C AS avqC");
|
||||
columns.put("sfdb", "MET.QEC_SFDB AS sfdb");
|
||||
columns.put("sfdbName", "CASE NVL(MET.QEC_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS sfdbName");
|
||||
columns.put("mwrSfdb", "MET.MWR_SFDB AS mwrSfdb");
|
||||
columns.put("mwrSfdbName", "CASE NVL(MET.MWR_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS mwrSfdbName");
|
||||
columns.put("avqSfdb", "MET.AVQ_SFDB AS avqSfdb");
|
||||
columns.put("avqSfdbName", "CASE NVL(MET.AVQ_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS avqSfdbName");
|
||||
columns.put("rz", "MET.RZ AS rz");
|
||||
columns.put("dz", "MET.DDZ AS dz");
|
||||
columns.put("baseName", "MSB.BASE_NAME AS baseName");
|
||||
columns.put("rvcdName", "MSB.RVCD_NAME AS rvcdName");
|
||||
columns.put("hbrvcdName", "MSB.HBRVCD_NAME AS hbrvcdName");
|
||||
columns.put("addvcdName", "MSB.ADDVNM AS addvcdName");
|
||||
columns.put("baseId", "MSB.BASE_ID AS baseId");
|
||||
columns.put("hbrvcd", "MSB.HBRVCD AS hbrvcd");
|
||||
columns.put("hycd", "MSB.HYCD AS hycd");
|
||||
columns.put("rvcd", "MSB.RVCD AS rvcd");
|
||||
columns.put("bldsttCcode", "MSB.BLDSTT_CODE AS bldsttCcode");
|
||||
columns.put("beforeQec", "MET1.QEC AS beforeQec");
|
||||
columns.put("baseStepSort", "NVL(MSB.BASESTEPSORT, 999999) AS baseStepSort");
|
||||
columns.put("rvcdStepSort", "NVL(MSB.RVCDSTEPSORT, 999999) AS rvcdStepSort");
|
||||
columns.put("rstcdStepSort", "NVL(MSB.RSTCDSTEPSORT, 999999) AS rstcdStepSort");
|
||||
columns.put("siteStepSort", "NVL(MSB.SITESTEPSORT, 999999) AS siteStepSort");
|
||||
return columns;
|
||||
}
|
||||
|
||||
private String buildMsEngDetailSelectSql(List<String> selectFields) {
|
||||
Map<String, String> columns = msEngFieldColumns();
|
||||
List<String> selected = new ArrayList<>();
|
||||
if (CollUtil.isEmpty(selectFields)) {
|
||||
selected.addAll(columns.values());
|
||||
} else {
|
||||
for (String field : selectFields) {
|
||||
String column = columns.get(field);
|
||||
if (StrUtil.isNotBlank(column)) {
|
||||
selected.add(column);
|
||||
}
|
||||
}
|
||||
if (selected.isEmpty()) {
|
||||
selected.addAll(columns.values());
|
||||
}
|
||||
}
|
||||
return String.join(", ", selected);
|
||||
}
|
||||
|
||||
private String buildMsEngFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||
Map<String, Object> paramMap,
|
||||
int[] indexHolder) {
|
||||
if (filter == null) {
|
||||
return "";
|
||||
}
|
||||
if (StrUtil.isNotBlank(filter.getField())) {
|
||||
return buildMsEngLeafCondition(filter, paramMap, indexHolder);
|
||||
}
|
||||
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||
return "";
|
||||
}
|
||||
List<String> conditions = new ArrayList<>();
|
||||
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||
String childSql = buildMsEngFilterCondition(child, paramMap, indexHolder);
|
||||
if (StrUtil.isNotBlank(childSql)) {
|
||||
conditions.add("(" + childSql + ")");
|
||||
}
|
||||
}
|
||||
if (conditions.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND ";
|
||||
return String.join(logic, conditions);
|
||||
}
|
||||
|
||||
private String buildMsEngLeafCondition(DataSourceRequest.FilterDescriptor filter,
|
||||
Map<String, Object> paramMap,
|
||||
int[] indexHolder) {
|
||||
String column = mapMsEngColumn(filter.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
return "";
|
||||
}
|
||||
return buildGenericCondition(column, filter, paramMap, indexHolder, isMsEngDateField(filter.getField()));
|
||||
}
|
||||
|
||||
private String buildMsEngDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||
if (CollUtil.isEmpty(sortList)) {
|
||||
return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, MET.TM DESC";
|
||||
}
|
||||
List<String> orders = new ArrayList<>();
|
||||
for (DataSourceRequest.SortDescriptor sort : sortList) {
|
||||
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapMsEngOrderColumn(sort.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC";
|
||||
orders.add(column + " " + dir);
|
||||
}
|
||||
if (orders.isEmpty()) {
|
||||
return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, MET.TM DESC";
|
||||
}
|
||||
return " ORDER BY " + String.join(", ", orders);
|
||||
}
|
||||
|
||||
private String buildMsEngGroupOrderBySql(List<DataSourceRequest.GroupDescriptor> groups) {
|
||||
if (CollUtil.isEmpty(groups)) {
|
||||
return "";
|
||||
}
|
||||
List<String> orders = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapMsEngColumn(descriptor.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC";
|
||||
orders.add(column + " " + dir);
|
||||
}
|
||||
return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders);
|
||||
}
|
||||
|
||||
private String buildMsEngAggregateSql(String aggregate, String column, String field) {
|
||||
if (StrUtil.isBlank(aggregate) || StrUtil.isBlank(column)) {
|
||||
return null;
|
||||
}
|
||||
return switch (aggregate.toLowerCase()) {
|
||||
case "sum" -> "SUM(" + column + ") AS SUM_" + field.toUpperCase();
|
||||
case "avg" -> "AVG(" + column + ") AS AVG_" + field.toUpperCase();
|
||||
case "min" -> "MIN(" + column + ") AS MIN_" + field.toUpperCase();
|
||||
case "max" -> "MAX(" + column + ") AS MAX_" + field.toUpperCase();
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
private String mapMsEngColumn(String field) {
|
||||
if (StrUtil.isBlank(field)) {
|
||||
return null;
|
||||
}
|
||||
return switch (field) {
|
||||
case "id" -> "MET.ID";
|
||||
case "stcd" -> "MSB.STCD";
|
||||
case "stnm" -> "MSB.STNM";
|
||||
case "ennm" -> "MSB.ENNM";
|
||||
case "tm" -> "MET.TM";
|
||||
case "qi" -> "MET.QI";
|
||||
case "qo" -> "MET.QO";
|
||||
case "qecLimit" -> "MET.QEC_LIMIT";
|
||||
case "qec" -> "MET.QEC";
|
||||
case "mwrLimit" -> "MET.MWR_LIMIT";
|
||||
case "avqLimit" -> "MET.AVQ_LIMIT";
|
||||
case "qecC" -> "MET.QEC_C";
|
||||
case "mwrC" -> "MET.MWR_C";
|
||||
case "avqC" -> "MET.AVQ_C";
|
||||
case "sfdb", "qecSfdb" -> "MET.QEC_SFDB";
|
||||
case "mwrSfdb" -> "MET.MWR_SFDB";
|
||||
case "avqSfdb" -> "MET.AVQ_SFDB";
|
||||
case "rz" -> "MET.RZ";
|
||||
case "dz" -> "MET.DDZ";
|
||||
case "baseName" -> "MSB.BASE_NAME";
|
||||
case "rvcdName" -> "MSB.RVCD_NAME";
|
||||
case "hbrvcdName" -> "MSB.HBRVCD_NAME";
|
||||
case "addvcdName" -> "MSB.ADDVNM";
|
||||
case "baseId" -> "MSB.BASE_ID";
|
||||
case "hbrvcd" -> "MSB.HBRVCD";
|
||||
case "hycd" -> "MSB.HYCD";
|
||||
case "rvcd" -> "MSB.RVCD";
|
||||
case "bldsttCcode" -> "MSB.BLDSTT_CODE";
|
||||
case "baseStepSort" -> "MSB.BASESTEPSORT";
|
||||
case "rvcdStepSort" -> "MSB.RVCDSTEPSORT";
|
||||
case "rstcdStepSort" -> "MSB.RSTCDSTEPSORT";
|
||||
case "siteStepSort" -> "MSB.SITESTEPSORT";
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
private String mapMsEngOrderColumn(String field) {
|
||||
if (StrUtil.isBlank(field)) {
|
||||
return null;
|
||||
}
|
||||
return switch (field) {
|
||||
case "id", "baseId", "hbrvcd", "hycd", "rvcd", "bldsttCcode",
|
||||
"sfdbName", "mwrSfdb", "mwrSfdbName", "avqSfdb", "avqSfdbName",
|
||||
"qecC", "mwrC", "avqC", "beforeQec",
|
||||
"baseStepSort", "rvcdStepSort", "rstcdStepSort", "siteStepSort",
|
||||
"stcd", "stnm", "ennm", "qi", "qo", "qec", "sfdb",
|
||||
"rz", "dz", "qecLimit", "mwrLimit", "avqLimit", "baseName",
|
||||
"rvcdName", "hbrvcdName", "addvcdName" -> field;
|
||||
case "tm" -> "MET.TM";
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
private boolean isMsEngDateField(String field) {
|
||||
return "tm".equalsIgnoreCase(field);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2741,23 +2741,33 @@ public class FpRunServiceImpl implements FpRunService {
|
||||
public DataSourceResult<FpTreeStcdGroupVo> getTreeStcdList(DataSourceRequest dataSourceRequest) {
|
||||
// 查询 SD_FPSSRL_R(自动, MWAY=2)和 SD_FPSS_R(人工, MWAY=1)中有过鱼数据的测站
|
||||
// 关联 V_MS_STBPRP_T 视图获取测站基础信息(含 ENNM 电站名称)
|
||||
String sql = "SELECT STCD, STNM, MWAY, LGTD, LTTD, BASE_ID, RSTCD, ENNM "
|
||||
+ "FROM ("
|
||||
+ " SELECT DISTINCT t2.STCD, t2.STNM, t2.BASE_ID, t2.RSTCD, t2.LGTD, t2.LTTD, t2.MWAY, t2.ENNM "
|
||||
+ " FROM SD_FPSSRL_R t1 "
|
||||
+ " INNER JOIN V_MS_STBPRP_T t2 ON t1.STCD = t2.STCD "
|
||||
+ " WHERE NVL(t2.IS_DELETED, 0) = 0 AND t2.MWAY = 2 AND t1.FTP IS NOT NULL "
|
||||
+ " UNION "
|
||||
+ " SELECT DISTINCT t4.STCD, t4.STNM, t4.BASE_ID, t4.RSTCD, t4.LGTD, t4.LTTD, t4.MWAY, t4.ENNM "
|
||||
+ " FROM SD_FPSS_R t3 "
|
||||
+ " INNER JOIN V_MS_STBPRP_T t4 ON t3.STCD = t4.STCD "
|
||||
+ " WHERE NVL(t4.IS_DELETED, 0) = 0 AND t4.MWAY = 1 AND t3.FTP IS NOT NULL "
|
||||
+ " AND NVL(t3.IS_DELETED, 0) = 0"
|
||||
+ ")";
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT STCD, STNM, MWAY, LGTD, LTTD, BASE_ID, RSTCD, ENNM ")
|
||||
.append("FROM (")
|
||||
.append(" SELECT DISTINCT t2.STCD, t2.STNM, t2.BASE_ID, t2.RSTCD, t2.LGTD, t2.LTTD, t2.MWAY, t2.ENNM ")
|
||||
.append(" FROM SD_FPSSRL_R t1 ")
|
||||
.append(" INNER JOIN V_MS_STBPRP_T t2 ON t1.STCD = t2.STCD ")
|
||||
.append(" WHERE NVL(t2.IS_DELETED, 0) = 0 AND t2.MWAY = 2 AND t1.FTP IS NOT NULL ")
|
||||
.append(" UNION ")
|
||||
.append(" SELECT DISTINCT t4.STCD, t4.STNM, t4.BASE_ID, t4.RSTCD, t4.LGTD, t4.LTTD, t4.MWAY, t4.ENNM ")
|
||||
.append(" FROM SD_FPSS_R t3 ")
|
||||
.append(" INNER JOIN V_MS_STBPRP_T t4 ON t3.STCD = t4.STCD ")
|
||||
.append(" WHERE NVL(t4.IS_DELETED, 0) = 0 AND t4.MWAY = 1 AND t3.FTP IS NOT NULL ")
|
||||
.append(" AND NVL(t3.IS_DELETED, 0) = 0")
|
||||
.append(") t WHERE 1=1 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String filterSql = QgcQueryWrapperUtil.buildFilterCondition(
|
||||
dataSourceRequest.getFilter(),
|
||||
paramMap,
|
||||
new int[]{0},
|
||||
this::FpTree
|
||||
);
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append("AND ").append(filterSql).append(" ");
|
||||
}
|
||||
List<FpTreeStcdVo> allItems = microservicDynamicSQLMapper
|
||||
.getAllListWithResultType(sql, paramMap, FpTreeStcdVo.class);
|
||||
.getAllListWithResultType(sql.toString(), paramMap, FpTreeStcdVo.class);
|
||||
|
||||
if (CollUtil.isEmpty(allItems)) {
|
||||
DataSourceResult<FpTreeStcdGroupVo> emptyResult = new DataSourceResult<>();
|
||||
@ -2815,4 +2825,18 @@ public class FpRunServiceImpl implements FpRunService {
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
private String FpTree(String field) {
|
||||
if (StrUtil.isBlank(field)) {
|
||||
return null;
|
||||
}
|
||||
return switch (field.toLowerCase()) {
|
||||
case "rstcd" -> "t.RSTCD";
|
||||
case "lgtd" -> "fp.LGTD";
|
||||
case "lttd" -> "fp.LTTD";
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user