feat: 根据条件查询水质基础站点数据
This commit is contained in:
parent
355cd7f4a6
commit
ce2b43d83c
@ -47,6 +47,12 @@ public class EnvWqDataController {
|
||||
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")
|
||||
@Operation(summary = "根据站码查询单条水质基础数据")
|
||||
public ResponseResult getStcdInfo(@RequestParam String stcd) {
|
||||
|
||||
62
backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java
vendored
Normal file
62
backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java
vendored
Normal 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;
|
||||
}
|
||||
@ -12,5 +12,7 @@ public interface EnvWqDataService {
|
||||
|
||||
DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
WqBaseInfoVo getStcdInfo(String stcd);
|
||||
}
|
||||
|
||||
@ -1,12 +1,17 @@
|
||||
package com.yfd.platform.env.wq.service.impl;
|
||||
|
||||
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.DataSourceResult;
|
||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||
import com.yfd.platform.common.PageInfo;
|
||||
import com.yfd.platform.common.exception.BizException;
|
||||
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.utils.QgcQueryWrapperUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -36,6 +41,78 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
||||
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
|
||||
public WqBaseInfoVo getStcdInfo(String stcd) {
|
||||
if (StrUtil.isBlank(stcd)) {
|
||||
@ -117,4 +194,40 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
||||
result.setAggregates(new HashMap<>());
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user