diff --git a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java index cccb91d..1da75e3 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java @@ -36,15 +36,20 @@ public class EnvWqDataController { } @PostMapping("/GetStbprpYsByStcd") - @Operation(summary = "水质统计分析") + @Operation(summary = "水质监测数据查询") public ResponseResult GetStbprpYsByStcd(@RequestBody DataSourceRequest dataSourceRequest) { - return ResponseResult.successData(null); + return ResponseResult.successData(envWqDataService.getStbprpYsByStcd(dataSourceRequest)); } - @PostMapping("/stTbYs/GetStTbYsBVoKendoListCust") + + @GetMapping("/stTbYs/GetStTbYsBVoKendoListCust") @Operation(summary = "水质监测信息查询") - public ResponseResult getStTbYsBVoKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - return ResponseResult.successData(envWqDataService.getStTbYsBVoKendoListCust(dataSourceRequest)); + public ResponseResult getStTbYsBVoKendoListCust( + @RequestParam String stcd, + @RequestParam String tbCode, + @RequestParam String startTime, + @RequestParam String endTime) { + return ResponseResult.successData(envWqDataService.getStTbYsBVoKendoListCust(stcd, tbCode, startTime, endTime)); } @PostMapping("/data/noAuth/GetKendoListCust") diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StbprpYsVo.java b/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StbprpYsVo.java new file mode 100644 index 0000000..f5c5d41 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StbprpYsVo.java @@ -0,0 +1,65 @@ +package com.yfd.platform.env.wq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "对象监测要素配置") +public class StbprpYsVo { + + @Schema(description = "对象编码") + private String stcd; + + @Schema(description = "要素编码") + private String ys; + + @Schema(description = "监测表ID") + private String tbId; + + @Schema(description = "要素显示名称") + private String ysShowName; + + @Schema(description = "显示控制") + private String showControl; + + @Schema(description = "是否启用") + private String enable; + + @Schema(description = "字段数据类型") + private String dataType; + + @Schema(description = "标准单位ID") + private String standardUomId; + + @Schema(description = "监测表名称") + private String tbName; + + @Schema(description = "实时表名") + private String tb; + + @Schema(description = "监测表编码") + private String tbCode; + + @Schema(description = "日统计表") + private String dayTb; + + @Schema(description = "时间维度统计表") + private String statTb; + + @Schema(description = "最新数据表") + private String lastTb; + + @Schema(description = "数据源ID") + private String dataSourceId; + + @Schema(description = "站类监测表要素关联ID") + private String sttpTbYsBId; + + @Schema(description = "最小值") + private BigDecimal minVal; + + @Schema(description = "最大值") + private BigDecimal maxVal; +} diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java b/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java index a2583f9..15d7f2b 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java @@ -10,6 +10,8 @@ public interface EnvWqDataService { DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest); + DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest); + DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult getAlongDefaultRvcd(DataSourceRequest dataSourceRequest); @@ -22,5 +24,5 @@ public interface EnvWqDataService { DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); - DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getStTbYsBVoKendoListCust(String stcd, String tbCode, String startTime, String endTime); } diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java index b7bc6ab..2cb5404 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java @@ -140,6 +140,83 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + @Override + public DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String stcd = resolveStringFilterValue(dataSourceRequest, loadOptions, "stcd"); + String tbCode = resolveStringFilterValue(dataSourceRequest, loadOptions, "tbCode"); + return queryStbprpYsByStcd(stcd, tbCode); + } + + private DataSourceResult queryStbprpYsByStcd(String stcd, String tbCode) { + if (StrUtil.isBlank(stcd)) { + throw new BizException("站点编码(stcd)不能为空."); + } + if (StrUtil.isBlank(tbCode)) { + throw new BizException("监测表编码(tbCode)不能为空."); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("t1.STCD AS stcd, ") + .append("t2.YS AS ys, ") + .append("t2.TB_ID AS tbId, ") + .append("NVL(t4.YS_SHOW_NAME, t2.YS) AS ysShowName, ") + .append("t4.SHOW_CONTROL AS showControl, ") + .append("TO_CHAR(NVL(t4.ENABLE, 0)) AS enable, ") + .append("CASE ") + .append(" WHEN utc.DATA_TYPE IN ('CHAR', 'NCHAR', 'VARCHAR2', 'NVARCHAR2', 'CLOB', 'NCLOB') THEN 'str' ") + .append(" WHEN utc.DATA_TYPE LIKE 'TIMESTAMP%' OR utc.DATA_TYPE = 'DATE' THEN 'datetime' ") + .append(" WHEN utc.DATA_TYPE IS NULL THEN NULL ") + .append(" ELSE 'number' ") + .append("END AS dataType, ") + .append("CAST(NULL AS VARCHAR2(36)) AS standardUomId, ") + .append("t3.TB_NAME AS tbName, ") + .append("t3.TB AS tb, ") + .append("t3.TB_CODE AS tbCode, ") + .append("t3.DAY_TB AS dayTb, ") + .append("t3.STAT_TB AS statTb, ") + .append("t3.LAST_TB AS lastTb, ") + .append("t3.DATA_SOURCE_ID AS dataSourceId, ") + .append("t1.STTP_TB_YS_B_ID AS sttpTbYsBId, ") + .append("CAST(NULL AS NUMBER(18,6)) AS minVal, ") + .append("CAST(NULL AS NUMBER(18,6)) AS maxVal ") + .append("FROM ST_STBPRP_YS_B t1 ") + .append("INNER JOIN ST_STTP_TB_YS_B t2 ON t2.ID = t1.STTP_TB_YS_B_ID ") + .append(" AND NVL(t2.IS_DELETED, 0) = 0 ") + .append(" AND NVL(t2.IS_SHOW, 1) = 1 ") + .append("INNER JOIN ST_TB_B t3 ON t3.ID = t2.TB_ID ") + .append(" AND NVL(t3.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN ST_TB_YS_B t4 ON t4.TB_ID = t2.TB_ID ") + .append(" AND t4.YS = t2.YS ") + .append(" AND NVL(t4.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN USER_TAB_COLUMNS utc ON utc.TABLE_NAME = UPPER(t3.TB) ") + .append(" AND utc.COLUMN_NAME = UPPER(t2.YS) ") + .append("WHERE t1.STCD = #{map.stcd} ") + .append(" AND t3.TB_CODE = #{map.tbCode} ") + .append(" AND NVL(t1.IS_DELETED, 0) = 0 ") + .append(" AND NVL(t1.IS_SHOW, 1) = 1 ") + .append("ORDER BY NVL(t1.ORDER_INDEX, 999999) ASC, ") + .append(" NVL(t2.ORDER_INDEX, 999999) ASC, ") + .append(" NVL(t4.ORDER_INDEX, 999999) ASC, ") + .append(" t2.YS ASC"); + + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("tbCode", tbCode); + List list = microservicDynamicSQLMapper.getAllListWithResultType( + sql.toString(), + paramMap, + StbprpYsVo.class + ); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal((long) list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -611,6 +688,16 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return null; } + private String resolveStringFilterValue(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions, + String field) { + String value = findFilterFieldValue(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), field); + if (StrUtil.isBlank(value) && loadOptions != null) { + value = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, field); + } + return StrUtil.trim(value); + } + @Override public WqBaseInfoVo getStcdInfo(String stcd) { if (StrUtil.isBlank(stcd)) { @@ -2048,44 +2135,8 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { } @Override - public DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest) { - StringBuilder sql = new StringBuilder(); - sql.append("SELECT ") - .append("y.ID AS id, ") - .append("y.TB_ID AS tbId, ") - .append("t.TB_NAME AS tbName, ") - .append("t.TB_CODE AS tbCode, ") - .append("y.DESCRIPTION AS description, ") - .append("y.YS AS ys, ") - .append("y.YS_SHOW_NAME AS ysShowName, ") - .append("y.SHOW_CONTROL AS showControl, ") - .append("TO_CHAR(y.ENABLE) AS enable, ") - .append("y.ORDER_INDEX AS orderIndex ") - .append("FROM ST_TB_YS_B y ") - .append("INNER JOIN ST_TB_B t ON t.ID = y.TB_ID AND NVL(t.IS_DELETED, 0) = 0 ") - .append("WHERE NVL(y.IS_DELETED, 0) = 0 "); - - Map paramMap = new HashMap<>(); - String filterSql = buildStTbYsFilterCondition( - dataSourceRequest == null ? null : dataSourceRequest.getFilter(), - paramMap, - new int[]{0} - ); - if (StrUtil.isNotBlank(filterSql)) { - sql.append(" AND ").append(filterSql).append(" "); - } - sql.append(buildStTbYsOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); - - DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); - PageInfo pageInfo = loadOptions == null ? null : QgcQueryWrapperUtil.getPageInfo(loadOptions); - Page page = pageInfo != null && pageInfo.getHasPageInfo() ? pageInfo.getPage() : null; - List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, StTbYsVo.class); - - DataSourceResult result = new DataSourceResult<>(); - result.setData(list); - result.setTotal(page != null ? page.getTotal() : list.size()); - result.setAggregates(new HashMap<>()); - return result; + public DataSourceResult getStTbYsBVoKendoListCust(String stcd, String tbCode, String startTime, String endTime) { + return queryStbprpYsByStcd(stcd, tbCode); } private String buildStTbYsFilterCondition(DataSourceRequest.FilterDescriptor root,