feat: 查询水质日数据
This commit is contained in:
parent
abb76a8abb
commit
d46649391e
@ -42,6 +42,12 @@ public class EnvWqDataController {
|
|||||||
return ResponseResult.successData(envWqDataService.processDataKendoList(dataSourceRequest));
|
return ResponseResult.successData(envWqDataService.processDataKendoList(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/data/day/GetKendoListCust")
|
||||||
|
@Operation(summary = "查询水质日数据")
|
||||||
|
public ResponseResult getDayKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(envWqDataService.getDayKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/GetStbprpYsByStcd")
|
@PostMapping("/GetStbprpYsByStcd")
|
||||||
@Operation(summary = "水质监测数据查询")
|
@Operation(summary = "水质监测数据查询")
|
||||||
public ResponseResult GetStbprpYsByStcd(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult GetStbprpYsByStcd(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,81 @@
|
|||||||
|
package com.yfd.platform.qgc_env.wq.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "水质日数据")
|
||||||
|
public class EnvWqDayDataVo {
|
||||||
|
private String stcd;
|
||||||
|
private String rstcd;
|
||||||
|
private String stnm;
|
||||||
|
private String stCode;
|
||||||
|
private String stName;
|
||||||
|
private String ennm;
|
||||||
|
private Date dt;
|
||||||
|
private BigDecimal wtmp;
|
||||||
|
private BigDecimal ph;
|
||||||
|
private BigDecimal dox;
|
||||||
|
private BigDecimal codmn;
|
||||||
|
private BigDecimal codcr;
|
||||||
|
private BigDecimal bod5;
|
||||||
|
private BigDecimal nh3n;
|
||||||
|
private BigDecimal tp;
|
||||||
|
private BigDecimal tn;
|
||||||
|
private BigDecimal cu;
|
||||||
|
private BigDecimal zn;
|
||||||
|
private BigDecimal f;
|
||||||
|
private BigDecimal se;
|
||||||
|
private BigDecimal ars;
|
||||||
|
private BigDecimal hg;
|
||||||
|
private BigDecimal cd;
|
||||||
|
private BigDecimal cr6;
|
||||||
|
private BigDecimal pb;
|
||||||
|
private BigDecimal cn;
|
||||||
|
private BigDecimal vlph;
|
||||||
|
private BigDecimal oil;
|
||||||
|
private BigDecimal las;
|
||||||
|
private BigDecimal s2;
|
||||||
|
private BigDecimal fcg;
|
||||||
|
private BigDecimal cl;
|
||||||
|
private BigDecimal so4;
|
||||||
|
private BigDecimal no3;
|
||||||
|
private BigDecimal thrd;
|
||||||
|
private BigDecimal cond;
|
||||||
|
private BigDecimal fe;
|
||||||
|
private BigDecimal mn;
|
||||||
|
private BigDecimal al;
|
||||||
|
private BigDecimal ss;
|
||||||
|
private BigDecimal no2;
|
||||||
|
private BigDecimal chla;
|
||||||
|
private BigDecimal clarity;
|
||||||
|
private BigDecimal tu;
|
||||||
|
private BigDecimal tod;
|
||||||
|
private BigDecimal cyano;
|
||||||
|
private String wqgrd;
|
||||||
|
private String wqgrdName;
|
||||||
|
private String wwqtg;
|
||||||
|
private String wwqtgName;
|
||||||
|
private Integer sfdb;
|
||||||
|
private String sfdbName;
|
||||||
|
private String wqSfdbhnYs;
|
||||||
|
private String wqSfdbhnYsName;
|
||||||
|
private String baseId;
|
||||||
|
private String baseName;
|
||||||
|
private String rvcdName;
|
||||||
|
private String addvcdName;
|
||||||
|
private String dtinType;
|
||||||
|
private BigDecimal qi;
|
||||||
|
private BigDecimal qo;
|
||||||
|
private Integer baseStepSort;
|
||||||
|
private Integer rvcdStepSort;
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
private Integer siteStepSort;
|
||||||
|
private List<Map<String, Object>> min;
|
||||||
|
private List<Map<String, Object>> max;
|
||||||
|
}
|
||||||
@ -12,6 +12,8 @@ public interface EnvWqDataService {
|
|||||||
|
|
||||||
DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest);
|
DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult getDayKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest);
|
DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
@ -143,6 +143,54 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult getDayKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
|
StringBuilder sql = new StringBuilder(buildEnvWqDayBaseSql());
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildEnvWqDayFilterCondition(
|
||||||
|
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
|
||||||
|
paramMap,
|
||||||
|
new int[]{0}
|
||||||
|
);
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||||
|
String groupBy = KendoUtil.getGroupBy(dataSourceRequest);
|
||||||
|
GroupingInfo[] groupInfos = loadOptions.getGroup();
|
||||||
|
if (StrUtil.isNotBlank(groupBy) && groupInfos != null && groupInfos.length > 0) {
|
||||||
|
String groupedSql = buildEnvWqDayGroupSql(sql.toString(), groupBy, groupInfos);
|
||||||
|
List<Map<String, Object>> list = microservicDynamicSQLMapper.pageAllList(null, groupedSql, paramMap);
|
||||||
|
DataSourceResult result = new DataSourceResult();
|
||||||
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
|
result.setData(new GroupHelper().faltGroup(list, Arrays.asList(groupInfos)));
|
||||||
|
} else {
|
||||||
|
result.setData(new GroupHelper().group(list, Arrays.asList(groupInfos)));
|
||||||
|
}
|
||||||
|
result.setTotal(0L);
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.append(buildEnvWqDayOrderBySql(dataSourceRequest.getSort()));
|
||||||
|
Page<?> page = QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
List<EnvWqDayDataVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||||
|
page,
|
||||||
|
sql.toString(),
|
||||||
|
paramMap,
|
||||||
|
EnvWqDayDataVo.class
|
||||||
|
);
|
||||||
|
fillEnvWqDayDerivedFields(list);
|
||||||
|
fillEnvWqDayLimit(list);
|
||||||
|
|
||||||
|
DataSourceResult<EnvWqDayDataVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list);
|
||||||
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
@ -917,6 +965,376 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildEnvWqDayBaseSql() {
|
||||||
|
return new StringBuilder()
|
||||||
|
.append("SELECT ")
|
||||||
|
.append("T.STCD AS stcd, ")
|
||||||
|
.append("T.RSTCD AS rstcd, ")
|
||||||
|
.append("T.STNM AS stnm, ")
|
||||||
|
.append("T.ST_CODE AS stCode, ")
|
||||||
|
.append("T.ST_NAME AS stName, ")
|
||||||
|
.append("T.ENNM AS ennm, ")
|
||||||
|
.append("T.DT AS dt, ")
|
||||||
|
.append("T.WTMP AS wtmp, ")
|
||||||
|
.append("T.PH AS ph, ")
|
||||||
|
.append("T.DOX AS dox, ")
|
||||||
|
.append("T.CODMN AS codmn, ")
|
||||||
|
.append("T.CODCR AS codcr, ")
|
||||||
|
.append("T.BOD5 AS bod5, ")
|
||||||
|
.append("T.NH3N AS nh3n, ")
|
||||||
|
.append("T.TP AS tp, ")
|
||||||
|
.append("T.TN AS tn, ")
|
||||||
|
.append("T.CU AS cu, ")
|
||||||
|
.append("T.ZN AS zn, ")
|
||||||
|
.append("T.F AS f, ")
|
||||||
|
.append("T.SE AS se, ")
|
||||||
|
.append("T.ARS AS ars, ")
|
||||||
|
.append("T.HG AS hg, ")
|
||||||
|
.append("T.CD AS cd, ")
|
||||||
|
.append("T.CR6 AS cr6, ")
|
||||||
|
.append("T.PB AS pb, ")
|
||||||
|
.append("T.CN AS cn, ")
|
||||||
|
.append("T.VLPH AS vlph, ")
|
||||||
|
.append("T.OIL AS oil, ")
|
||||||
|
.append("T.LAS AS las, ")
|
||||||
|
.append("T.S2 AS s2, ")
|
||||||
|
.append("T.FCG AS fcg, ")
|
||||||
|
.append("T.CL AS cl, ")
|
||||||
|
.append("T.SO4 AS so4, ")
|
||||||
|
.append("T.NO3 AS no3, ")
|
||||||
|
.append("T.THRD AS thrd, ")
|
||||||
|
.append("T.COND AS cond, ")
|
||||||
|
.append("T.FE AS fe, ")
|
||||||
|
.append("T.MN AS mn, ")
|
||||||
|
.append("T.AL AS al, ")
|
||||||
|
.append("T.SS AS ss, ")
|
||||||
|
.append("T.NO2 AS no2, ")
|
||||||
|
.append("T.CHLA AS chla, ")
|
||||||
|
.append("T.CLARITY AS clarity, ")
|
||||||
|
.append("T.TU AS tu, ")
|
||||||
|
.append("T.TOD AS tod, ")
|
||||||
|
.append("T.CYANO AS cyano, ")
|
||||||
|
.append("T.WQGRD AS wqgrd, ")
|
||||||
|
.append("T.WWQTG AS wwqtg, ")
|
||||||
|
.append("T.SFDB AS sfdb, ")
|
||||||
|
.append("T.WQ_SFDBHN_YS AS wqSfdbhnYs, ")
|
||||||
|
.append("T.BASE_ID AS baseId, ")
|
||||||
|
.append("T.BASE_NAME AS baseName, ")
|
||||||
|
.append("T.RVCD_NAME AS rvcdName, ")
|
||||||
|
.append("T.ADDVCD_NAME AS addvcdName, ")
|
||||||
|
.append("T.DTIN_TYPE AS dtinType, ")
|
||||||
|
.append("T.QI AS qi, ")
|
||||||
|
.append("T.QO AS qo, ")
|
||||||
|
.append("T.BASESTEPSORT AS baseStepSort, ")
|
||||||
|
.append("T.RVCDSTEPSORT AS rvcdStepSort, ")
|
||||||
|
.append("T.RSTCDSTEPSORT AS rstcdStepSort, ")
|
||||||
|
.append("T.SITESTEPSORT AS siteStepSort ")
|
||||||
|
.append("FROM (SELECT ")
|
||||||
|
.append("day.STCD, ")
|
||||||
|
.append("station.RSTCD, ")
|
||||||
|
.append("station.STNM, ")
|
||||||
|
.append("station.ST_CODE, ")
|
||||||
|
.append("station.ST_NAME, ")
|
||||||
|
.append("station.ENNM, ")
|
||||||
|
.append("day.DT, ")
|
||||||
|
.append("day.WTMP, day.PH, day.DOX, day.CODMN, day.CODCR, day.BOD5, day.NH3N, day.TP, day.TN, ")
|
||||||
|
.append("day.CU, day.ZN, day.F, day.SE, day.ARS, day.HG, day.CD, day.CR6, day.PB, day.CN, day.VLPH, ")
|
||||||
|
.append("day.OIL, day.LAS, day.S2, day.FCG, day.CL, day.SO4, day.NO3, day.THRD, day.COND, day.FE, day.MN, ")
|
||||||
|
.append("day.AL, day.SS, day.NO2, day.CHLA, day.CLARITY, day.TU, ")
|
||||||
|
.append("CAST(NULL AS NUMBER(15,2)) AS TOD, ")
|
||||||
|
.append("day.CYANO, day.WQGRD, station.WWQTG, day.SFDB, ")
|
||||||
|
.append("CAST(NULL AS VARCHAR2(512)) AS WQ_SFDBHN_YS, ")
|
||||||
|
.append("station.BASE_ID, station.BASE_NAME, station.RVCD_NAME, station.ADDVCD_NAME, station.DTIN_TYPE, ")
|
||||||
|
.append("dayRun.QI AS QI, dayRun.QO AS QO, ")
|
||||||
|
.append("station.BASESTEPSORT, station.RVCDSTEPSORT, station.RSTCDSTEPSORT, station.SITESTEPSORT ")
|
||||||
|
.append("FROM SD_WQDAY_S day ")
|
||||||
|
.append("INNER JOIN (").append(buildEnvWqDayStationBaseSql()).append(") station ON station.STCD = day.STCD ")
|
||||||
|
.append("LEFT JOIN (SELECT run.STCD, TRUNC(run.TM) AS DT, AVG(run.QI) AS QI, AVG(run.QO) AS QO ")
|
||||||
|
.append(" FROM SD_HYDROPW_R run ")
|
||||||
|
.append(" WHERE NVL(run.IS_DELETED, 0) = 0 ")
|
||||||
|
.append(" GROUP BY run.STCD, TRUNC(run.TM)) dayRun ")
|
||||||
|
.append(" ON station.RSTCD = dayRun.STCD AND day.DT = dayRun.DT AND station.DTIN_TYPE = '0' ")
|
||||||
|
.append("WHERE NVL(day.IS_DELETED, 0) = 0) T WHERE 1 = 1 ")
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildEnvWqDayStationBaseSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"wq.STCD, " +
|
||||||
|
"wq.STNM, " +
|
||||||
|
"wq.RSTCD, " +
|
||||||
|
"eng.ENNM, " +
|
||||||
|
"wq.BASE_ID, " +
|
||||||
|
"hb.BASENAME AS BASE_NAME, " +
|
||||||
|
"eng.HBRVCD, " +
|
||||||
|
"hbrv.HBRVNM AS HBRVCD_NAME, " +
|
||||||
|
"rv.RVNM AS RVCD_NAME, " +
|
||||||
|
"addv.ADDVNM AS ADDVCD_NAME, " +
|
||||||
|
"wq.WWQTG, " +
|
||||||
|
"TO_CHAR(wq.DTIN_TYPE) AS DTIN_TYPE, " +
|
||||||
|
"wq.FHSTCD AS ST_CODE, " +
|
||||||
|
"fh.STNM AS ST_NAME, " +
|
||||||
|
"rstAlong.SORT AS RSTCDSTEPSORT, " +
|
||||||
|
"hb.ORDER_INDEX AS BASESTEPSORT, " +
|
||||||
|
"rvAlong.ORDER_INDEX AS RVCDSTEPSORT, " +
|
||||||
|
"siteAlong.SORT AS SITESTEPSORT " +
|
||||||
|
"FROM SD_WQ_B_H wq " +
|
||||||
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = wq.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 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_FHBT_B_H fh ON fh.STCD = wq.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " +
|
||||||
|
" FROM MS_ALONGDET_B det " +
|
||||||
|
" INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " +
|
||||||
|
" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') rstAlong " +
|
||||||
|
" ON rstAlong.RVCD = eng.HBRVCD AND rstAlong.STCD = wq.RSTCD " +
|
||||||
|
"LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " +
|
||||||
|
" FROM MS_ALONGDET_B det " +
|
||||||
|
" INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " +
|
||||||
|
" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') siteAlong " +
|
||||||
|
" ON siteAlong.RVCD = eng.HBRVCD AND siteAlong.STCD = wq.STCD " +
|
||||||
|
"WHERE wq.STTP IN ('WQ', 'WQFB') AND NVL(wq.IS_DELETED, 0) = 0";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildEnvWqDayFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
if (filter == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(filter.getField())) {
|
||||||
|
return buildEnvWqDayLeafCondition(filter, paramMap, indexHolder);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
List<String> conditions = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
String childSql = buildEnvWqDayFilterCondition(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 buildEnvWqDayLeafCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
String column = mapEnvWqDayColumn(filter.getField());
|
||||||
|
if (StrUtil.isBlank(column) || filter.getValue() == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase();
|
||||||
|
String key = "envWqDayParam" + indexHolder[0]++;
|
||||||
|
boolean dateField = "dt".equals(filter.getField());
|
||||||
|
switch (operator) {
|
||||||
|
case "eq":
|
||||||
|
paramMap.put(key, filter.getValue());
|
||||||
|
return dateField ? column + " = TO_DATE(#{map." + key + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " = #{map." + key + "}";
|
||||||
|
case "neq":
|
||||||
|
paramMap.put(key, filter.getValue());
|
||||||
|
return dateField ? column + " <> TO_DATE(#{map." + key + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " <> #{map." + key + "}";
|
||||||
|
case "gt":
|
||||||
|
paramMap.put(key, filter.getValue());
|
||||||
|
return dateField ? column + " > TO_DATE(#{map." + key + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " > #{map." + key + "}";
|
||||||
|
case "gte":
|
||||||
|
paramMap.put(key, filter.getValue());
|
||||||
|
return dateField ? column + " >= TO_DATE(#{map." + key + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " >= #{map." + key + "}";
|
||||||
|
case "lt":
|
||||||
|
paramMap.put(key, filter.getValue());
|
||||||
|
return dateField ? column + " < TO_DATE(#{map." + key + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " < #{map." + key + "}";
|
||||||
|
case "lte":
|
||||||
|
paramMap.put(key, filter.getValue());
|
||||||
|
return dateField ? column + " <= TO_DATE(#{map." + key + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " <= #{map." + key + "}";
|
||||||
|
case "contains":
|
||||||
|
paramMap.put(key, "%" + filter.getValue() + "%");
|
||||||
|
return column + " LIKE #{map." + key + "}";
|
||||||
|
default:
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String mapEnvWqDayColumn(String field) {
|
||||||
|
if (StrUtil.isBlank(field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (field) {
|
||||||
|
case "baseName" -> "T.BASE_NAME";
|
||||||
|
case "stnm" -> "T.STNM";
|
||||||
|
case "wwqtg" -> "T.WWQTG";
|
||||||
|
case "baseId" -> "T.BASE_ID";
|
||||||
|
case "rstcd" -> "T.RSTCD";
|
||||||
|
case "ennm" -> "T.ENNM";
|
||||||
|
case "stCode" -> "T.ST_CODE";
|
||||||
|
case "stName" -> "T.ST_NAME";
|
||||||
|
case "stcd" -> "T.STCD";
|
||||||
|
case "dt" -> "T.DT";
|
||||||
|
case "wqgrd" -> "T.WQGRD";
|
||||||
|
case "ph" -> "T.PH";
|
||||||
|
case "dox" -> "T.DOX";
|
||||||
|
case "codmn" -> "T.CODMN";
|
||||||
|
case "codcr" -> "T.CODCR";
|
||||||
|
case "bod5" -> "T.BOD5";
|
||||||
|
case "nh3n" -> "T.NH3N";
|
||||||
|
case "tp" -> "T.TP";
|
||||||
|
case "tn" -> "T.TN";
|
||||||
|
case "cu" -> "T.CU";
|
||||||
|
case "zn" -> "T.ZN";
|
||||||
|
case "f" -> "T.F";
|
||||||
|
case "se" -> "T.SE";
|
||||||
|
case "ars" -> "T.ARS";
|
||||||
|
case "hg" -> "T.HG";
|
||||||
|
case "cd" -> "T.CD";
|
||||||
|
case "cr6" -> "T.CR6";
|
||||||
|
case "pb" -> "T.PB";
|
||||||
|
case "cn" -> "T.CN";
|
||||||
|
case "vlph" -> "T.VLPH";
|
||||||
|
case "oil" -> "T.OIL";
|
||||||
|
case "las" -> "T.LAS";
|
||||||
|
case "s2" -> "T.S2";
|
||||||
|
case "fcg" -> "T.FCG";
|
||||||
|
case "cl" -> "T.CL";
|
||||||
|
case "so4" -> "T.SO4";
|
||||||
|
case "no3" -> "T.NO3";
|
||||||
|
case "thrd" -> "T.THRD";
|
||||||
|
case "cond" -> "T.COND";
|
||||||
|
case "fe" -> "T.FE";
|
||||||
|
case "mn" -> "T.MN";
|
||||||
|
case "al" -> "T.AL";
|
||||||
|
case "ss" -> "T.SS";
|
||||||
|
case "no2" -> "T.NO2";
|
||||||
|
case "chla" -> "T.CHLA";
|
||||||
|
case "clarity" -> "T.CLARITY";
|
||||||
|
case "tu" -> "T.TU";
|
||||||
|
case "cyano" -> "T.CYANO";
|
||||||
|
case "sfdb" -> "T.SFDB";
|
||||||
|
case "wtmp" -> "T.WTMP";
|
||||||
|
case "dtinType" -> "T.DTIN_TYPE";
|
||||||
|
case "tod" -> "T.TOD";
|
||||||
|
case "wqSfdbhnYs" -> "T.WQ_SFDBHN_YS";
|
||||||
|
case "rvcdName" -> "T.RVCD_NAME";
|
||||||
|
case "addvcdName" -> "T.ADDVCD_NAME";
|
||||||
|
case "qi" -> "T.QI";
|
||||||
|
case "qo" -> "T.QO";
|
||||||
|
case "siteStepSort" -> "T.SITESTEPSORT";
|
||||||
|
case "baseStepSort" -> "T.BASESTEPSORT";
|
||||||
|
case "rvcdStepSort" -> "T.RVCDSTEPSORT";
|
||||||
|
case "rstcdStepSort" -> "T.RSTCDSTEPSORT";
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildEnvWqDayGroupSql(String baseSql, String groupBy, GroupingInfo[] groupInfos) {
|
||||||
|
StringBuilder sql = new StringBuilder("SELECT ");
|
||||||
|
List<String> groupFields = new ArrayList<>();
|
||||||
|
for (GroupingInfo item : groupInfos) {
|
||||||
|
if (item != null && StrUtil.isNotBlank(item.getSelector())) {
|
||||||
|
groupFields.add(item.getSelector());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sql.append(String.join(", ", groupFields));
|
||||||
|
for (GroupingInfo item : groupInfos) {
|
||||||
|
sql.append(", COUNT(*) AS count_").append(item.getSelector()).append(" ");
|
||||||
|
}
|
||||||
|
sql.append("FROM (").append(baseSql).append(") T ").append(groupBy);
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildEnvWqDayOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
|
if (sortList == null || sortList.isEmpty()) {
|
||||||
|
return " ORDER BY T.DT DESC NULLS LAST, T.BASESTEPSORT ASC NULLS LAST, T.RVCDSTEPSORT ASC NULLS LAST, T.RSTCDSTEPSORT ASC NULLS LAST, T.SITESTEPSORT ASC NULLS LAST, T.STCD ASC";
|
||||||
|
}
|
||||||
|
StringBuilder sql = new StringBuilder(" ORDER BY ");
|
||||||
|
boolean appended = false;
|
||||||
|
for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) {
|
||||||
|
if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapEnvWqDayColumn(sortDescriptor.getField());
|
||||||
|
if (column == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (appended) {
|
||||||
|
sql.append(", ");
|
||||||
|
}
|
||||||
|
sql.append(column).append(" ")
|
||||||
|
.append("desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC")
|
||||||
|
.append(" NULLS LAST");
|
||||||
|
appended = true;
|
||||||
|
}
|
||||||
|
return appended ? sql.toString() : " ORDER BY T.DT DESC NULLS LAST, T.BASESTEPSORT ASC NULLS LAST, T.RVCDSTEPSORT ASC NULLS LAST, T.RSTCDSTEPSORT ASC NULLS LAST, T.SITESTEPSORT ASC NULLS LAST, T.STCD ASC";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillEnvWqDayDerivedFields(List<EnvWqDayDataVo> list) {
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (EnvWqDayDataVo item : list) {
|
||||||
|
item.setWqgrdName(getWqLevelName(item.getWqgrd()));
|
||||||
|
item.setWwqtgName(getWqLevelName(item.getWwqtg()));
|
||||||
|
item.setSfdbName(getSfdbName(item.getSfdb()));
|
||||||
|
item.setWqSfdbhnYsName(convertWqFactors(item.getWqSfdbhnYs()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillEnvWqDayLimit(List<EnvWqDayDataVo> list) {
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String sql = "SELECT t2.YS AS \"ys\", t2.MIN_VAL AS \"minVal\", t2.MAX_VAL AS \"maxVal\", t2.LVL AS \"lvl\" " +
|
||||||
|
"FROM MS_WARN_RULE_B t1 " +
|
||||||
|
"INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
|
||||||
|
"WHERE t1.RULE_TYPE = 'WQLVL'";
|
||||||
|
List<Map<String, Object>> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null);
|
||||||
|
if (CollUtil.isEmpty(ruleList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Integer> ruleDirectionMap = getWqLimitDirection(ruleList);
|
||||||
|
Map<String, List<Map<String, Object>>> levelRuleMap = ruleList.stream()
|
||||||
|
.filter(item -> StrUtil.isNotBlank(asString(item.get("lvl"))))
|
||||||
|
.collect(Collectors.groupingBy(item -> asString(item.get("lvl"))));
|
||||||
|
|
||||||
|
for (EnvWqDayDataVo item : list) {
|
||||||
|
if (StrUtil.isBlank(item.getWwqtg())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> currentRules = levelRuleMap.get(item.getWwqtg());
|
||||||
|
if (CollUtil.isEmpty(currentRules)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> max = new ArrayList<>();
|
||||||
|
List<Map<String, Object>> min = new ArrayList<>();
|
||||||
|
for (Map<String, Object> rule : currentRules) {
|
||||||
|
String ys = asString(rule.get("ys"));
|
||||||
|
Integer direction = ruleDirectionMap.get(ys);
|
||||||
|
Map<String, Object> maxMap = new LinkedHashMap<>();
|
||||||
|
Map<String, Object> minMap = new LinkedHashMap<>();
|
||||||
|
if (direction != null && direction == 2) {
|
||||||
|
maxMap.put(ys, rule.get("maxVal"));
|
||||||
|
minMap.put(ys, rule.get("minVal"));
|
||||||
|
max.add(maxMap);
|
||||||
|
min.add(minMap);
|
||||||
|
} else if (direction != null && direction == 1) {
|
||||||
|
minMap.put(ys, rule.get("minVal"));
|
||||||
|
min.add(minMap);
|
||||||
|
} else {
|
||||||
|
maxMap.put(ys, rule.get("maxVal"));
|
||||||
|
max.add(maxMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
item.setMax(max);
|
||||||
|
item.setMin(min);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String buildEnvWqDataStationBaseSql() {
|
private String buildEnvWqDataStationBaseSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"wq.STCD, " +
|
"wq.STCD, " +
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user