feat: 获取监测点水温变化默认有数据的断面
This commit is contained in:
parent
8a561d9376
commit
9d1da55f93
@ -4085,11 +4085,17 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 从请求 filter 中提取 STTP 过滤条件,用于限定站类范围
|
// 从请求 filter 中提取 STTP 过滤条件,用于限定站类范围
|
||||||
List<String> sttpCodes = extractSttpCodesFromRequest(dataSourceRequest);
|
// List<String> sttpCodes = extractSttpCodesFromRequest(dataSourceRequest);
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||||
|
String sttpCode = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode");
|
||||||
|
if(StrUtil.isBlank(sttpCode)){
|
||||||
|
result.setData(new ArrayList<>());
|
||||||
|
result.setTotal(0L);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
// 查询 V_MS_STBPRP_T 视图
|
// 查询 V_MS_STBPRP_T 视图
|
||||||
List<com.yfd.platform.qgc_base.domain.vo.StcdItemVo> allItems =
|
List<StcdItemVo> allItems =
|
||||||
vMsStbprpTMapper.selectBySttpCodes(sttpCodes);
|
vMsStbprpTMapper.selectBySttpCodes(List.of(sttpCode));
|
||||||
|
|
||||||
if (CollUtil.isEmpty(allItems)) {
|
if (CollUtil.isEmpty(allItems)) {
|
||||||
result.setData(new ArrayList<>());
|
result.setData(new ArrayList<>());
|
||||||
@ -4142,7 +4148,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 取第一个测站的排序和基地信息
|
// 取第一个测站的排序和基地信息
|
||||||
StcdItemVo first = items.get(0);
|
StcdItemVo first = items.getFirst();
|
||||||
node.setSort(first.getOrderIndex());
|
node.setSort(first.getOrderIndex());
|
||||||
node.setBaseId(first.getBaseId());
|
node.setBaseId(first.getBaseId());
|
||||||
node.setBaseName(first.getBaseName());
|
node.setBaseName(first.getBaseName());
|
||||||
|
|||||||
@ -333,4 +333,10 @@ public class SdWTMonitorController {
|
|||||||
public ResponseResult getEngTempPointListKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getEngTempPointListKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
return ResponseResult.successData(sdWtMonitorService.getEngTempPointListKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(sdWtMonitorService.getEngTempPointListKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/wtrv/default/stcd")
|
||||||
|
@Operation(summary = "获取监测点水温变化默认有数据的断面")
|
||||||
|
public ResponseResult getWtrvDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(sdWtMonitorService.getDefaultStcd(dataSourceRequest));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.yfd.platform.qgc_env.wt.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 河道水温默认有数据的断面 — 返回 VO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(description = "河道水温默认有数据的断面")
|
||||||
|
public class WtrvDefaultStcdVo {
|
||||||
|
|
||||||
|
@Schema(description = "测站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "测站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "排序")
|
||||||
|
private Integer orderIndex;
|
||||||
|
}
|
||||||
@ -57,4 +57,9 @@ public interface SdWtMonitorService {
|
|||||||
DataSourceResult<DwSlowFacilityMapVO> getFacilityPointKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<DwSlowFacilityMapVO> getFacilityPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<WaterTempMapVO> getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<WaterTempMapVO> getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取监测点水温变化默认有数据的断面
|
||||||
|
*/
|
||||||
|
DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,23 +7,7 @@ import com.yfd.platform.common.*;
|
|||||||
import com.yfd.platform.common.exception.BizException;
|
import com.yfd.platform.common.exception.BizException;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.DataScopeApplyResult;
|
import com.yfd.platform.qgc_base.domain.vo.DataScopeApplyResult;
|
||||||
import com.yfd.platform.qgc_base.service.IDataScopeFilterService;
|
import com.yfd.platform.qgc_base.service.IDataScopeFilterService;
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.DfltkwFacilityCountVo;
|
import com.yfd.platform.qgc_env.wt.entity.vo.*;
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.FishSpawnVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.RstcdTreeInfoVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.SdMonthDetailVO;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.SdYearDetailVO;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.SdWtBaseInfoVO;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.SdWtMonitorCountVO;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.SttpInfoVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WbsbVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtBaseInfoVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtFishVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtTreeStcdVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendResultVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.DwSlowFacilityMapVO;
|
|
||||||
import com.yfd.platform.qgc_env.wt.entity.vo.WaterTempMapVO;
|
|
||||||
import com.yfd.platform.qgc_env.wt.mapper.SdWtMonitorMapper;
|
import com.yfd.platform.qgc_env.wt.mapper.SdWtMonitorMapper;
|
||||||
import com.yfd.platform.qgc_env.wt.utils.SiteAvoidanceUtils;
|
import com.yfd.platform.qgc_env.wt.utils.SiteAvoidanceUtils;
|
||||||
import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService;
|
import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService;
|
||||||
@ -3114,4 +3098,152 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceResult result = new DataSourceResult();
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
|
||||||
|
if (dataSourceRequest == null) {
|
||||||
|
result.setData(new ArrayList<>());
|
||||||
|
result.setTotal(0L);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析请求中的过滤参数
|
||||||
|
Map<String, Object> sqlWhereMap = new HashMap<>();
|
||||||
|
DataSourceRequest.FilterDescriptor filter = dataSourceRequest.getFilter();
|
||||||
|
if (filter != null) {
|
||||||
|
parseDefaultStcdFilter(filter, sqlWhereMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object startTime = sqlWhereMap.get("tm");
|
||||||
|
Object endTime = sqlWhereMap.get("tm_1");
|
||||||
|
Object mway = sqlWhereMap.get("mway");
|
||||||
|
Object rstcd = sqlWhereMap.get("rstcd");
|
||||||
|
Object baseId = sqlWhereMap.get("base_id");
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT * FROM (")
|
||||||
|
.append("SELECT stb.STCD, stb.STNM, stb.ORDER_INDEX AS orderIndex ")
|
||||||
|
.append("FROM SD_WTRV_R wt ")
|
||||||
|
.append("INNER JOIN SD_WT_B_H stb ON wt.STCD = stb.STCD ")
|
||||||
|
.append("AND stb.STTP = 'WTRV' ")
|
||||||
|
.append("AND stb.IS_DELETED = 0 ")
|
||||||
|
.append("WHERE wt.IS_DELETED = 0 ");
|
||||||
|
|
||||||
|
// 时间范围
|
||||||
|
if (startTime != null && StrUtil.isNotBlank(startTime.toString())) {
|
||||||
|
sql.append("AND wt.TM >= ").append(startTime).append(" ");
|
||||||
|
}
|
||||||
|
if (endTime != null && StrUtil.isNotBlank(endTime.toString())) {
|
||||||
|
sql.append("AND wt.TM <= ").append(endTime).append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 电站编码
|
||||||
|
if (rstcd != null && StrUtil.isNotBlank(rstcd.toString())) {
|
||||||
|
String rstcdStr = rstcd.toString();
|
||||||
|
if ("('')".equals(rstcdStr)) {
|
||||||
|
sql.append("AND stb.RSTCD IN ('') ");
|
||||||
|
} else if (rstcdStr.contains(",")) {
|
||||||
|
sql.append("AND stb.RSTCD IN ").append(rstcdStr).append(" ");
|
||||||
|
} else {
|
||||||
|
sql.append("AND stb.RSTCD = ").append(rstcdStr).append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 基地编码
|
||||||
|
if (baseId != null && StrUtil.isNotBlank(baseId.toString())) {
|
||||||
|
sql.append("AND stb.BASE_ID = ").append(baseId).append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 监测方式
|
||||||
|
if (mway != null && StrUtil.isNotBlank(mway.toString())) {
|
||||||
|
sql.append("AND stb.MWAY = ").append(mway).append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.append("ORDER BY wt.TM DESC");
|
||||||
|
|
||||||
|
// 前端排序
|
||||||
|
List<DataSourceRequest.SortDescriptor> sort = dataSourceRequest.getSort();
|
||||||
|
if (sort != null && !sort.isEmpty()) {
|
||||||
|
sql.append(") ORDER BY ");
|
||||||
|
for (int i = 0; i < sort.size(); i++) {
|
||||||
|
sql.append(sort.get(i).getField()).append(" ").append(sort.get(i).getDir());
|
||||||
|
if (i < sort.size() - 1) {
|
||||||
|
sql.append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sql.append(")");
|
||||||
|
}
|
||||||
|
sql.append(" WHERE ROWNUM = 1");
|
||||||
|
|
||||||
|
List<WtrvDefaultStcdVo> dataList = microservicDynamicSQLMapper
|
||||||
|
.pageAllListWithResultType(null, sql.toString(), null, WtrvDefaultStcdVo.class);
|
||||||
|
|
||||||
|
result.setData(dataList);
|
||||||
|
result.setTotal(dataList != null ? dataList.size() : 0L);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析 DataSourceRequest filter 为 SQL 值格式,类似旧系统 SqlUtil.getWhereCondition
|
||||||
|
*/
|
||||||
|
private void parseDefaultStcdFilter(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> sqlWhereMap) {
|
||||||
|
if (filter == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (filter.getFilters() != null && !filter.getFilters().isEmpty()) {
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
parseDefaultStcdFilter(child, sqlWhereMap);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (StrUtil.isBlank(filter.getField())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String field = StrUtil.toUnderlineCase(filter.getField());
|
||||||
|
Object value = filter.getValue();
|
||||||
|
if (value == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase();
|
||||||
|
String processedValue = formatDefaultStcdValue(operator, value, filter.getDataType());
|
||||||
|
|
||||||
|
// 同名字段自动追加 _1 后缀
|
||||||
|
if (sqlWhereMap.containsKey(field)) {
|
||||||
|
int idx = 1;
|
||||||
|
while (sqlWhereMap.containsKey(field + "_" + idx)) {
|
||||||
|
idx++;
|
||||||
|
}
|
||||||
|
field = field + "_" + idx;
|
||||||
|
}
|
||||||
|
sqlWhereMap.put(field, processedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String formatDefaultStcdValue(String operator, Object value, String dataType) {
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ("in".equals(operator)) {
|
||||||
|
// 将列表转为 ('a','b','c') 格式
|
||||||
|
List<?> list = normalizeToList(value);
|
||||||
|
return "(" + list.stream()
|
||||||
|
.map(v -> "'" + String.valueOf(v).trim() + "'")
|
||||||
|
.collect(Collectors.joining(",")) + ")";
|
||||||
|
}
|
||||||
|
if ("date".equalsIgnoreCase(dataType)) {
|
||||||
|
String text = String.valueOf(value).trim().replace("T", " ");
|
||||||
|
if (text.length() <= 10) {
|
||||||
|
return "TO_DATE('" + text.replace("'", "''") + "', 'YYYY-MM-DD')";
|
||||||
|
}
|
||||||
|
return "TO_DATE('" + text.replace("'", "''") + "', 'YYYY-MM-DD HH24:MI:SS')";
|
||||||
|
}
|
||||||
|
if ("string".equalsIgnoreCase(dataType) || value instanceof String) {
|
||||||
|
return "'" + String.valueOf(value).trim().replace("'", "''") + "'";
|
||||||
|
}
|
||||||
|
return String.valueOf(value).trim();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user