feat: 水质监测数据查询

This commit is contained in:
tangwei 2026-05-28 11:12:20 +08:00
parent 652abf2cb2
commit 81cefa3ffb
4 changed files with 167 additions and 44 deletions

View File

@ -36,15 +36,20 @@ public class EnvWqDataController {
} }
@PostMapping("/GetStbprpYsByStcd") @PostMapping("/GetStbprpYsByStcd")
@Operation(summary = "水质统计分析") @Operation(summary = "水质监测数据查询")
public ResponseResult GetStbprpYsByStcd(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult GetStbprpYsByStcd(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(null); return ResponseResult.successData(envWqDataService.getStbprpYsByStcd(dataSourceRequest));
} }
@PostMapping("/stTbYs/GetStTbYsBVoKendoListCust")
@GetMapping("/stTbYs/GetStTbYsBVoKendoListCust")
@Operation(summary = "水质监测信息查询") @Operation(summary = "水质监测信息查询")
public ResponseResult getStTbYsBVoKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getStTbYsBVoKendoListCust(
return ResponseResult.successData(envWqDataService.getStTbYsBVoKendoListCust(dataSourceRequest)); @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") @PostMapping("/data/noAuth/GetKendoListCust")

View File

@ -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;
}

View File

@ -10,6 +10,8 @@ public interface EnvWqDataService {
DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest); DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest);
DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest);
DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult getAlongDefaultRvcd(DataSourceRequest dataSourceRequest); DataSourceResult getAlongDefaultRvcd(DataSourceRequest dataSourceRequest);
@ -22,5 +24,5 @@ public interface EnvWqDataService {
DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest);
DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult getStTbYsBVoKendoListCust(String stcd, String tbCode, String startTime, String endTime);
} }

View File

@ -140,6 +140,83 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
return result; 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<StbprpYsVo> 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<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("tbCode", tbCode);
List<StbprpYsVo> list = microservicDynamicSQLMapper.getAllListWithResultType(
sql.toString(),
paramMap,
StbprpYsVo.class
);
DataSourceResult<StbprpYsVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal((long) list.size());
result.setAggregates(new HashMap<>());
return result;
}
@Override @Override
public DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest) { public DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
@ -611,6 +688,16 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
return null; 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 @Override
public WqBaseInfoVo getStcdInfo(String stcd) { public WqBaseInfoVo getStcdInfo(String stcd) {
if (StrUtil.isBlank(stcd)) { if (StrUtil.isBlank(stcd)) {
@ -2048,44 +2135,8 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
} }
@Override @Override
public DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest) { public DataSourceResult getStTbYsBVoKendoListCust(String stcd, String tbCode, String startTime, String endTime) {
StringBuilder sql = new StringBuilder(); return queryStbprpYsByStcd(stcd, tbCode);
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<String, Object> 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<StTbYsVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, StTbYsVo.class);
DataSourceResult<StTbYsVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
} }
private String buildStTbYsFilterCondition(DataSourceRequest.FilterDescriptor root, private String buildStTbYsFilterCondition(DataSourceRequest.FilterDescriptor root,