feat: 根据条件查询水质基础站点数据

This commit is contained in:
tangwei 2026-05-22 10:07:01 +08:00
parent 355cd7f4a6
commit ce2b43d83c
4 changed files with 183 additions and 0 deletions

View File

@ -47,6 +47,12 @@ public class EnvWqDataController {
return ResponseResult.successData(envWqDataService.getMsstbprptList(dataSourceRequest)); return ResponseResult.successData(envWqDataService.getMsstbprptList(dataSourceRequest));
} }
@PostMapping("/vmsstbprpt/GetKendoList")
@Operation(summary = "根据条件查询水质基础站点数据")
public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(envWqDataService.getVmsstbprptList(dataSourceRequest));
}
@GetMapping("/msstbprpt/getStcdInfo") @GetMapping("/msstbprpt/getStcdInfo")
@Operation(summary = "根据站码查询单条水质基础数据") @Operation(summary = "根据站码查询单条水质基础数据")
public ResponseResult getStcdInfo(@RequestParam String stcd) { public ResponseResult getStcdInfo(@RequestParam String stcd) {

View File

@ -0,0 +1,62 @@
package com.yfd.platform.env.wq.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 WqVmsstbprptVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "基地名称")
private String baseName;
@Schema(description = "站名")
private String stnm;
@Schema(description = "电站名称")
private String ennm;
@Schema(description = "建成日期")
private Date jcdt;
@Schema(description = "监测指标")
private String stindx;
@Schema(description = "开展环保自动监测工作状态1=正常 0=暂无数据")
private Integer coenvwState;
@Schema(description = "站类")
private String sttpCode;
@Schema(description = "站码")
private String stcd;
@Schema(description = "所属电站编码")
private String rstcd;
@Schema(description = "所属测站编码")
private String stCode;
@Schema(description = "所属测站名称")
private String stName;
@Schema(description = "开发方式")
private String dvtp;
@Schema(description = "基地排序")
private Integer baseStepSort;
@Schema(description = "基地流域编码")
private String hbrvcd;
@Schema(description = "电站排序")
private Integer rstcdStepSort;
@Schema(description = "站点排序")
private Integer siteStepSort;
}

View File

@ -12,5 +12,7 @@ public interface EnvWqDataService {
DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest);
DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest);
WqBaseInfoVo getStcdInfo(String stcd); WqBaseInfoVo getStcdInfo(String stcd);
} }

View File

@ -1,12 +1,17 @@
package com.yfd.platform.env.wq.service.impl; package com.yfd.platform.env.wq.service.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.common.DataSourceLoadOptionsBase;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.common.PageInfo;
import com.yfd.platform.common.exception.BizException; import com.yfd.platform.common.exception.BizException;
import com.yfd.platform.env.wq.entity.vo.WqBaseInfoVo; import com.yfd.platform.env.wq.entity.vo.WqBaseInfoVo;
import com.yfd.platform.env.wq.entity.vo.WqVmsstbprptVo;
import com.yfd.platform.env.wq.service.EnvWqDataService; import com.yfd.platform.env.wq.service.EnvWqDataService;
import com.yfd.platform.utils.QgcQueryWrapperUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -36,6 +41,78 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
return emptyResult(); return emptyResult();
} }
@Override
public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway");
String sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode");
String dtinType = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtinType");
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm");
String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState");
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ")
.append("wq.STNM AS stnm, ")
.append("eng.ENNM AS ennm, ")
.append("wq.JCDT AS jcdt, ")
.append("wq.STINDX AS stindx, ")
.append("CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END AS coenvwState, ")
.append("wq.STTP AS sttpCode, ")
.append("wq.STCD AS stcd, ")
.append("wq.RSTCD AS rstcd, ")
.append("NULL AS stCode, ")
.append("NULL AS stName, ")
.append("eng.DVTP AS dvtp, ")
.append("hb.ORDER_INDEX AS baseStepSort, ")
.append("eng.HBRVCD AS hbrvcd, ")
.append("eng.ORDER_INDEX AS rstcdStepSort, ")
.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 (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 ");
Map<String, Object> paramMap = new HashMap<>();
if (StrUtil.isNotBlank(mway)) {
paramMap.put("mway", mway);
sql.append("AND wq.MWAY = #{map.mway} ");
}
if (StrUtil.isNotBlank(sttpCode)) {
paramMap.put("sttpCode", sttpCode);
sql.append("AND wq.STTP = #{map.sttpCode} ");
}
if (StrUtil.isNotBlank(dtinType)) {
paramMap.put("dtinType", dtinType);
sql.append("AND wq.DTIN_TYPE = #{map.dtinType} ");
}
if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("rstcd", rstcd);
sql.append("AND wq.RSTCD = #{map.rstcd} ");
}
if (StrUtil.isNotBlank(stnm)) {
paramMap.put("stnm", "%" + stnm + "%");
sql.append("AND wq.STNM LIKE #{map.stnm} ");
}
if (StrUtil.isNotBlank(coenvwState)) {
paramMap.put("coenvwState", coenvwState);
sql.append("AND CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END = #{map.coenvwState} ");
}
sql.append(buildVmsstbprptOrderBySql(dataSourceRequest.getSort()));
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
Page<?> page = pageInfo.getHasPageInfo() ? pageInfo.getPage() : null;
List<WqVmsstbprptVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WqVmsstbprptVo.class);
DataSourceResult<WqVmsstbprptVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
}
@Override @Override
public WqBaseInfoVo getStcdInfo(String stcd) { public WqBaseInfoVo getStcdInfo(String stcd) {
if (StrUtil.isBlank(stcd)) { if (StrUtil.isBlank(stcd)) {
@ -117,4 +194,40 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
result.setAggregates(new HashMap<>()); result.setAggregates(new HashMap<>());
return result; return result;
} }
private String buildVmsstbprptOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
if (sortList == null || sortList.isEmpty()) {
return " ORDER BY hb.ORDER_INDEX ASC, eng.HBRVCD ASC, eng.ORDER_INDEX ASC, wq.ORDER_INDEX 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 = switch (sortDescriptor.getField()) {
case "baseStepSort" -> "hb.ORDER_INDEX";
case "hbrvcd" -> "eng.HBRVCD";
case "rstcdStepSort" -> "eng.ORDER_INDEX";
case "siteStepSort" -> "wq.ORDER_INDEX";
case "stnm" -> "wq.STNM";
case "ennm" -> "eng.ENNM";
case "stcd" -> "wq.STCD";
default -> null;
};
if (column == null) {
continue;
}
if (appended) {
sql.append(", ");
}
sql.append(column).append(" ")
.append("desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC");
appended = true;
}
if (!appended) {
return " ORDER BY hb.ORDER_INDEX ASC, eng.HBRVCD ASC, eng.ORDER_INDEX ASC, wq.ORDER_INDEX ASC";
}
return sql.toString();
}
} }