feat: 查询栖息地河道水温日统计数据和查询栖息地监测站点列表

This commit is contained in:
tangwei 2026-05-28 15:25:07 +08:00
parent ec15fabda4
commit c35842d671
6 changed files with 598 additions and 1 deletions

View File

@ -40,6 +40,18 @@ public class FhHabitatController {
return ResponseResult.successData(fhHabitatService.getDefaultFhList(fhDefaultAo));
}
@PostMapping("/sdrvwts/GetKendoList")
@Operation(summary = "查询栖息地河道水温日统计数据")
public ResponseResult getSdrvwtsList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(fhHabitatService.getSdrvwtsList(dataSourceRequest));
}
@PostMapping("/msstbprpt/GetKendoList")
@Operation(summary = "查询栖息地监测站点列表")
public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(fhHabitatService.getMsstbprptList(dataSourceRequest));
}
@PostMapping("/stTbYs/GetStTbYsBVoKendoListCust")
@Operation(summary = "水质监测信息查询")
public ResponseResult getStTbYsBVoKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {

View File

@ -0,0 +1,80 @@
package com.yfd.platform.env.fh.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@Schema(description = "栖息地关联监测站点")
public class FhMsstbprptVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "站码")
private String stcd;
@Schema(description = "站名")
private String stnm;
@Schema(description = "站类")
private String sttpCode;
@Schema(description = "所属栖息地编码")
private String fhstcd;
@Schema(description = "所属栖息地名称")
private String fhstnm;
@Schema(description = "所属电站编码")
private String rstcd;
@Schema(description = "所属电站名称")
private String ennm;
@Schema(description = "基地编码")
private String baseId;
@Schema(description = "基地名称")
private String baseName;
@Schema(description = "基地流域编码")
private String hbrvcd;
@Schema(description = "建成日期")
private Date jcdt;
@Schema(description = "监测方式")
private Integer mway;
@Schema(description = "数据是否接入")
private Integer dtin;
@Schema(description = "数据接入来源")
private String dtinSrc;
@Schema(description = "数据接入类型")
private Integer dtinType;
@Schema(description = "数据接入开始时间")
private Date dtinTm;
@Schema(description = "监测指标")
private String stindx;
@Schema(description = "是否启用")
private Integer usfl;
@Schema(description = "基地排序")
private Integer baseStepSort;
@Schema(description = "流域排序")
private Integer rvcdStepSort;
@Schema(description = "电站排序")
private Integer rstcdStepSort;
@Schema(description = "站点排序")
private Integer siteStepSort;
}

View File

@ -0,0 +1,29 @@
package com.yfd.platform.env.fh.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@Schema(description = "栖息地河道水温日统计数据")
public class FhSdrvwtsVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
private String id;
@Schema(description = "站码")
private String stcd;
@Schema(description = "时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dt;
@Schema(description = "水温")
private BigDecimal wt;
}

View File

@ -14,5 +14,9 @@ public interface FhHabitatService {
FhDefaultVo getDefaultFhList(FhDefaultAo fhDefaultAo);
DataSourceResult getSdrvwtsList(DataSourceRequest dataSourceRequest);
DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest);
DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest);
}

View File

@ -15,6 +15,8 @@ import com.yfd.platform.common.PageInfo;
import com.yfd.platform.env.fh.entity.ao.FhDefaultAo;
import com.yfd.platform.env.fh.entity.vo.FhDefaultVo;
import com.yfd.platform.env.fh.entity.vo.HabitatVo;
import com.yfd.platform.env.fh.entity.vo.FhMsstbprptVo;
import com.yfd.platform.env.fh.entity.vo.FhSdrvwtsVo;
import com.yfd.platform.env.fh.service.FhHabitatService;
import com.yfd.platform.env.wq.entity.vo.StTbYsVo;
import com.yfd.platform.utils.QgcQueryWrapperUtil;
@ -159,6 +161,55 @@ public class FhHabitatServiceImpl implements FhHabitatService {
return result.get(0);
}
@Override
public DataSourceResult getSdrvwtsList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("t.ID AS id, ")
.append("t.STCD AS stcd, ")
.append("t.DT AS dt, ")
.append("t.WT AS wt ")
.append("FROM SD_WTRVDAY_S t ")
.append("WHERE NVL(t.IS_DELETED, 0) = 0 ");
Map<String, Object> paramMap = new HashMap<>();
String filterSql = buildSdrvwtsFilterCondition(
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
paramMap,
new int[]{0}
);
if (StrUtil.isNotBlank(filterSql)) {
sql.append(" AND ").append(filterSql).append(" ");
}
GroupingInfo[] groups = loadOptions == null ? null : loadOptions.getGroup();
if (groups != null && groups.length > 0) {
String groupSql = buildGroupSql(sql.toString(), groups);
List<Map<String, Object>> groupRows = microservicDynamicSQLMapper.pageAllList(null, groupSql, paramMap);
DataSourceResult<FhSdrvwtsVo> result = new DataSourceResult<>();
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
result.setData((List<FhSdrvwtsVo>) (List<?>) new GroupHelper().faltGroup(groupRows, Arrays.asList(groups)));
} else {
result.setData((List<FhSdrvwtsVo>) (List<?>) new GroupHelper().group(groupRows, Arrays.asList(groups)));
}
result.setTotal(0L);
result.setAggregates(new HashMap<>());
return result;
}
sql.append(buildSdrvwtsOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
PageInfo pageInfo = loadOptions == null ? null : QgcQueryWrapperUtil.getPageInfo(loadOptions);
Page<?> page = pageInfo != null && pageInfo.getHasPageInfo() ? pageInfo.getPage() : null;
List<FhSdrvwtsVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FhSdrvwtsVo.class);
DataSourceResult<FhSdrvwtsVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
}
private String buildDefaultFhListSql(FhDefaultAo fhDefaultAo) {
String dateConditionWtrv = "";
String dateConditionZq = "";
@ -870,6 +921,427 @@ public class FhHabitatServiceImpl implements FhHabitatService {
return " ORDER BY " + String.join(", ", orderItems);
}
@Override
public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String sttpCode = findFilterFieldValue(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "sttpCode");
if (StrUtil.isBlank(sttpCode) && loadOptions != null) {
sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode");
}
StringBuilder sql = new StringBuilder(buildFhMsstbprptBaseSql(sttpCode));
Map<String, Object> paramMap = new HashMap<>();
String filterSql = buildFhMsstbprptFilterCondition(
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
paramMap,
new int[]{0}
);
if (StrUtil.isNotBlank(filterSql)) {
sql.append(" AND ").append(filterSql).append(" ");
}
GroupingInfo[] groups = loadOptions == null ? null : loadOptions.getGroup();
if (groups != null && groups.length > 0) {
String groupSql = buildGroupSql(sql.toString(), groups);
List<Map<String, Object>> groupRows = microservicDynamicSQLMapper.pageAllList(null, groupSql, paramMap);
DataSourceResult result = new DataSourceResult();
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
result.setData(new GroupHelper().faltGroup(groupRows, Arrays.asList(groups)));
} else {
result.setData(new GroupHelper().group(groupRows, Arrays.asList(groups)));
}
result.setTotal(0L);
result.setAggregates(new HashMap<>());
return result;
}
sql.append(buildFhMsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
PageInfo pageInfo = loadOptions == null ? null : QgcQueryWrapperUtil.getPageInfo(loadOptions);
Page<?> page = pageInfo != null && pageInfo.getHasPageInfo() ? pageInfo.getPage() : null;
List<FhMsstbprptVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FhMsstbprptVo.class);
DataSourceResult<FhMsstbprptVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
}
private String buildFhMsstbprptBaseSql(String sttpCode) {
boolean onlyRiver = "ZQ".equalsIgnoreCase(StrUtil.trim(sttpCode));
boolean onlyWtrv = "WTRV".equalsIgnoreCase(StrUtil.trim(sttpCode));
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM (");
if (!onlyWtrv) {
sql.append("SELECT river.STCD AS stcd, ")
.append("river.STNM AS stnm, ")
.append("'ZQ' AS sttpCode, ")
.append("river.FHSTCD AS fhstcd, ")
.append("fh.STNM AS fhstnm, ")
.append("river.RSTCD AS rstcd, ")
.append("eng.ENNM AS ennm, ")
.append("NVL(fh.BASE_ID, eng.BASE_ID) AS baseId, ")
.append("hb.BASENAME AS baseName, ")
.append("NVL(fh.HBRVCD, eng.HBRVCD) AS hbrvcd, ")
.append("river.JCDT AS jcdt, ")
.append("river.MWAY AS mway, ")
.append("river.DTIN AS dtin, ")
.append("river.DTIN_SRC AS dtinSrc, ")
.append("river.DTIN_TYPE AS dtinType, ")
.append("river.DTIN_TM AS dtinTm, ")
.append("river.STINDX AS stindx, ")
.append("river.USFL AS usfl, ")
.append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ")
.append("999999 AS rvcdStepSort, ")
.append("NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, ")
.append("NVL(river.ORDER_INDEX, 999999) AS siteStepSort ")
.append("FROM SD_RIVER_B_H river ")
.append("LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = river.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = river.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(fh.BASE_ID, eng.BASE_ID) AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(river.IS_DELETED, 0) = 0 ")
.append("AND river.STTP = 'ZQ' ")
.append("AND river.FHSTCD IS NOT NULL ");
}
if (!onlyRiver && !onlyWtrv) {
sql.append(" UNION ALL ");
}
if (!onlyRiver) {
sql.append("SELECT wt.STCD AS stcd, ")
.append("wt.STNM AS stnm, ")
.append("'WTRV' AS sttpCode, ")
.append("wt.FHSTCD AS fhstcd, ")
.append("fh.STNM AS fhstnm, ")
.append("wt.RSTCD AS rstcd, ")
.append("eng.ENNM AS ennm, ")
.append("NVL(fh.BASE_ID, eng.BASE_ID) AS baseId, ")
.append("hb.BASENAME AS baseName, ")
.append("NVL(fh.HBRVCD, eng.HBRVCD) AS hbrvcd, ")
.append("wt.JCDT AS jcdt, ")
.append("wt.MWAY AS mway, ")
.append("wt.DTIN AS dtin, ")
.append("wt.DTIN_SRC AS dtinSrc, ")
.append("wt.DTIN_TYPE AS dtinType, ")
.append("wt.DTIN_TM AS dtinTm, ")
.append("wt.STINDX AS stindx, ")
.append("wt.USFL AS usfl, ")
.append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ")
.append("999999 AS rvcdStepSort, ")
.append("NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, ")
.append("NVL(wt.ORDER_INDEX, 999999) AS siteStepSort ")
.append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = wt.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(fh.BASE_ID, eng.BASE_ID) AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 ")
.append("AND wt.STTP = 'WTRV' ")
.append("AND wt.FHSTCD IS NOT NULL ");
}
sql.append(") t WHERE 1 = 1 ");
return sql.toString();
}
private String buildFhMsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter,
Map<String, Object> paramMap,
int[] indexHolder) {
if (filter == null) {
return "";
}
if (StrUtil.isNotBlank(filter.getField())) {
return buildFhMsstbprptLeafCondition(filter, paramMap, indexHolder);
}
if (CollUtil.isEmpty(filter.getFilters())) {
return "";
}
List<String> conditions = new ArrayList<>();
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
String childSql = buildFhMsstbprptFilterCondition(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 buildFhMsstbprptLeafCondition(DataSourceRequest.FilterDescriptor filter,
Map<String, Object> paramMap,
int[] indexHolder) {
String column = mapFhMsstbprptColumn(filter.getField());
if (StrUtil.isBlank(column)) {
return "";
}
String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase();
Object value = filter.getValue();
if ("isnull".equals(operator)) {
return column + " IS NULL";
}
if ("isnotnull".equals(operator)) {
return column + " IS NOT NULL";
}
if ("in".equals(operator)) {
List<Object> values = normalizeFilterValues(value);
if (values.isEmpty()) {
return "";
}
List<String> placeholders = new ArrayList<>();
for (Object item : values) {
String paramKey = "fhMsParam" + indexHolder[0]++;
paramMap.put(paramKey, item);
placeholders.add("#{map." + paramKey + "}");
}
return column + " IN (" + String.join(", ", placeholders) + ")";
}
String paramKey = "fhMsParam" + indexHolder[0]++;
switch (operator) {
case "eq":
paramMap.put(paramKey, value);
return column + " = #{map." + paramKey + "}";
case "neq":
paramMap.put(paramKey, value);
return column + " <> #{map." + paramKey + "}";
case "contains":
paramMap.put(paramKey, "%" + value + "%");
return column + " LIKE #{map." + paramKey + "}";
case "startswith":
paramMap.put(paramKey, value + "%");
return column + " LIKE #{map." + paramKey + "}";
case "endswith":
paramMap.put(paramKey, "%" + value);
return column + " LIKE #{map." + paramKey + "}";
case "gt":
paramMap.put(paramKey, value);
return column + " > #{map." + paramKey + "}";
case "gte":
paramMap.put(paramKey, value);
return column + " >= #{map." + paramKey + "}";
case "lt":
paramMap.put(paramKey, value);
return column + " < #{map." + paramKey + "}";
case "lte":
paramMap.put(paramKey, value);
return column + " <= #{map." + paramKey + "}";
default:
return "";
}
}
private String mapFhMsstbprptColumn(String field) {
if (StrUtil.isBlank(field)) {
return null;
}
return switch (field) {
case "stcd" -> "t.stcd";
case "stnm" -> "t.stnm";
case "sttpCode" -> "t.sttpCode";
case "fhstcd" -> "t.fhstcd";
case "fhstnm" -> "t.fhstnm";
case "rstcd" -> "t.rstcd";
case "ennm" -> "t.ennm";
case "baseId" -> "t.baseId";
case "baseName" -> "t.baseName";
case "hbrvcd" -> "t.hbrvcd";
case "jcdt" -> "t.jcdt";
case "mway" -> "t.mway";
case "dtin" -> "t.dtin";
case "dtinSrc" -> "t.dtinSrc";
case "dtinType" -> "t.dtinType";
case "dtinTm" -> "t.dtinTm";
case "stindx" -> "t.stindx";
case "usfl", "enable" -> "t.usfl";
case "baseStepSort" -> "t.baseStepSort";
case "rvcdStepSort" -> "t.rvcdStepSort";
case "rstcdStepSort" -> "t.rstcdStepSort";
case "siteStepSort" -> "t.siteStepSort";
default -> null;
};
}
private String buildFhMsstbprptOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
if (CollUtil.isEmpty(sortList)) {
return " ORDER BY t.baseStepSort ASC, t.rvcdStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC";
}
List<String> orders = new ArrayList<>();
for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) {
if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) {
continue;
}
String column = mapFhMsstbprptColumn(sortDescriptor.getField());
if (StrUtil.isBlank(column)) {
continue;
}
String dir = ("desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir())) ? "DESC" : "ASC";
orders.add(column + " " + dir);
}
if (orders.isEmpty()) {
return " ORDER BY t.baseStepSort ASC, t.rvcdStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC";
}
return " ORDER BY " + String.join(", ", orders);
}
private String buildSdrvwtsFilterCondition(DataSourceRequest.FilterDescriptor filter,
Map<String, Object> paramMap,
int[] indexHolder) {
if (filter == null) {
return "";
}
if (StrUtil.isNotBlank(filter.getField())) {
return buildSdrvwtsLeafCondition(filter, paramMap, indexHolder);
}
if (CollUtil.isEmpty(filter.getFilters())) {
return "";
}
List<String> conditions = new ArrayList<>();
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
String childSql = buildSdrvwtsFilterCondition(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 buildSdrvwtsLeafCondition(DataSourceRequest.FilterDescriptor filter,
Map<String, Object> paramMap,
int[] indexHolder) {
String column = mapSdrvwtsColumn(filter.getField());
if (StrUtil.isBlank(column)) {
return "";
}
String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase();
Object value = filter.getValue();
if ("isnull".equals(operator)) {
return column + " IS NULL";
}
if ("isnotnull".equals(operator)) {
return column + " IS NOT NULL";
}
boolean dateField = isSdrvwtsDateField(filter.getField());
if ("in".equals(operator)) {
List<Object> values = normalizeFilterValues(value);
if (values.isEmpty()) {
return "";
}
List<String> placeholders = new ArrayList<>();
for (Object item : values) {
String paramKey = "fhWtParam" + indexHolder[0]++;
paramMap.put(paramKey, item);
placeholders.add(buildSdrvwtsValueExpr(paramKey, dateField, item));
}
return column + " IN (" + String.join(", ", placeholders) + ")";
}
String paramKey = "fhWtParam" + indexHolder[0]++;
String valueExpr = buildSdrvwtsValueExpr(paramKey, dateField, value);
switch (operator) {
case "eq":
paramMap.put(paramKey, value);
return column + " = " + valueExpr;
case "neq":
paramMap.put(paramKey, value);
return column + " <> " + valueExpr;
case "contains":
paramMap.put(paramKey, "%" + value + "%");
return column + " LIKE #{map." + paramKey + "}";
case "startswith":
paramMap.put(paramKey, value + "%");
return column + " LIKE #{map." + paramKey + "}";
case "endswith":
paramMap.put(paramKey, "%" + value);
return column + " LIKE #{map." + paramKey + "}";
case "gt":
paramMap.put(paramKey, value);
return column + " > " + valueExpr;
case "gte":
paramMap.put(paramKey, value);
return column + " >= " + valueExpr;
case "lt":
paramMap.put(paramKey, value);
return column + " < " + valueExpr;
case "lte":
paramMap.put(paramKey, value);
return column + " <= " + valueExpr;
default:
return "";
}
}
private String mapSdrvwtsColumn(String field) {
if (StrUtil.isBlank(field)) {
return null;
}
return switch (field) {
case "id" -> "t.ID";
case "stcd" -> "t.STCD";
case "dt" -> "t.DT";
case "wt" -> "t.WT";
default -> null;
};
}
private boolean isSdrvwtsDateField(String field) {
return "dt".equalsIgnoreCase(field);
}
private String buildSdrvwtsValueExpr(String paramKey, boolean dateField, Object value) {
if (!dateField || value == null) {
return "#{map." + paramKey + "}";
}
String text = String.valueOf(value).trim();
if (text.length() <= 10) {
return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD')";
}
return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')";
}
private String buildSdrvwtsOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
if (CollUtil.isEmpty(sortList)) {
return " ORDER BY t.DT DESC, t.STCD ASC";
}
List<String> orders = new ArrayList<>();
for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) {
if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) {
continue;
}
String column = mapSdrvwtsColumn(sortDescriptor.getField());
if (StrUtil.isBlank(column)) {
continue;
}
String dir = ("desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir())) ? "DESC" : "ASC";
orders.add(column + " " + dir);
}
if (orders.isEmpty()) {
return " ORDER BY t.DT DESC, t.STCD ASC";
}
return " ORDER BY " + String.join(", ", orders);
}
private String findFilterFieldValue(DataSourceRequest.FilterDescriptor filter, String field) {
if (filter == null || StrUtil.isBlank(field)) {
return null;
}
if (field.equalsIgnoreCase(filter.getField()) && filter.getValue() != null) {
return String.valueOf(filter.getValue());
}
if (CollUtil.isEmpty(filter.getFilters())) {
return null;
}
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
String value = findFilterFieldValue(child, field);
if (StrUtil.isNotBlank(value)) {
return value;
}
}
return null;
}
@Override
public DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest) {
StringBuilder sql = new StringBuilder();

View File

@ -641,7 +641,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
.append("wq.ORDER_INDEX AS siteStepSort ")
.append("FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WQ_R WHERE NVL(IS_DELETED, 0) = 0 AND TM >= SYSDATE - 1) recent ON recent.STCD = wq.STCD ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ");
}