feat: 获取监测点水温变化默认有数据的断面
This commit is contained in:
parent
8a561d9376
commit
9d1da55f93
@ -4085,11 +4085,17 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
}
|
||||
|
||||
// 从请求 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 视图
|
||||
List<com.yfd.platform.qgc_base.domain.vo.StcdItemVo> allItems =
|
||||
vMsStbprpTMapper.selectBySttpCodes(sttpCodes);
|
||||
List<StcdItemVo> allItems =
|
||||
vMsStbprpTMapper.selectBySttpCodes(List.of(sttpCode));
|
||||
|
||||
if (CollUtil.isEmpty(allItems)) {
|
||||
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.setBaseId(first.getBaseId());
|
||||
node.setBaseName(first.getBaseName());
|
||||
|
||||
@ -333,4 +333,10 @@ public class SdWTMonitorController {
|
||||
public ResponseResult getEngTempPointListKendoListCust(@RequestBody DataSourceRequest 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<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.qgc_base.domain.vo.DataScopeApplyResult;
|
||||
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.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.entity.vo.*;
|
||||
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.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