fix: 优化水温接口

This commit is contained in:
tangwei 2026-05-27 19:00:17 +08:00
parent 2090e6c7fe
commit 3c01a787af
8 changed files with 260 additions and 22 deletions

View File

@ -170,7 +170,7 @@ public class SdWTMonitorController {
@PostMapping("/evnmAutoMonitor/GetKendoListCust")
@Operation(summary = "查询水温监测数量")
public ResponseResult getWTDataCount(@RequestBody(required = false) DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList());
return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList(dataSourceRequest));
}
@PostMapping("/dwInfo/GetKendoListCust")

View File

@ -17,6 +17,18 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "基地名称")
private String baseName;
@Schema(description = "基地排序")
private Integer baseStepSort;
@Schema(description = "流域排序")
private Integer rvcdStepSort;
@Schema(description = "电站排序")
private Integer rstcdStepSort;
@Schema(description = "站点排序")
private Integer siteStepSort;
@Schema(description = "站名")
private String stnm;
@ -35,6 +47,12 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "站类")
private String sttpCode;
@Schema(description = "站类名称")
private String sttpName;
@Schema(description = "站类全路径")
private String sttpFullPath;
@Schema(description = "站码")
private String stcd;
@ -49,4 +67,7 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "开发方式")
private String dvtp;
@Schema(description = "基地流域编码")
private String hbrvcd;
}

View File

@ -15,7 +15,7 @@ import java.util.List;
public interface SdWtMonitorService {
DataSourceResult getEvnmAutoMonitorList();
DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest);
DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest);

View File

@ -52,6 +52,7 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
DataSourceResult dataSourceResult = new DataSourceResult();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
String tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm");
if (StrUtil.isBlank(tm)) {
throw new BizException("时间(tm)不能为空.");
@ -87,6 +88,9 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
if (StrUtil.isNotBlank(stcd)) {
sql.append(" AND r.STCD = #{map.stcd} ");
}
if (StrUtil.isNotBlank(baseId)) {
sql.append(" AND eng.BASE_ID = #{map.baseId} ");
}
sql.append(") t WHERE 1=1 ");
if (dataSourceRequest.getSort() != null && !dataSourceRequest.getSort().isEmpty()) {
DataSourceRequest.SortDescriptor sortDescriptor = dataSourceRequest.getSort().get(0);
@ -110,6 +114,9 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
if (StrUtil.isNotBlank(stcd)) {
map.put("stcd", stcd);
}
if (StrUtil.isNotBlank(baseId)) {
map.put("baseId", baseId);
}
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
Page currentPage = pageInfo.getHasPageInfo() ? pageInfo.getPage() : page;
List<SdAlongDetailVO> list = this.microservicDynamicSQLMapper.pageAllListWithResultType(currentPage, sql.toString(), map, SdAlongDetailVO.class);

View File

@ -311,6 +311,7 @@ public class AlongListServiceImpl extends ServiceImpl<AlongListMapper, SdAlongVO
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
StringBuilder sql = new StringBuilder();
sql.append("SELECT t.stcd AS stcd, t.rstcd AS rstcd, t.stnm AS stnm, t.YEAR AS year, t.MONTH AS month, ")
@ -322,7 +323,9 @@ public class AlongListServiceImpl extends ServiceImpl<AlongListMapper, SdAlongVO
.append(" FROM SD_WTRVDRTP_S sms ")
.append(" LEFT JOIN SD_WT_B_H wt ON wt.STCD = sms.STCD ")
.append(" AND wt.STTP = 'WTRV' AND wt.USFL = 1 AND wt.IS_DELETED = 0 ")
.append(" LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append(" WHERE sms.IS_DELETED = 0 ")
.append(StrUtil.isNotBlank(baseId) ? " AND eng.BASE_ID = #{map.baseId} " : "")
.append(" ) t1 ")
.append(" LEFT JOIN (SELECT STCD, WT, MNTH FROM SD_WTNP_B WHERE IS_DELETED = 0) t2 ")
.append(" ON t2.STCD = t1.RSTCD AND t2.MNTH = t1.MONTH ")
@ -338,6 +341,7 @@ public class AlongListServiceImpl extends ServiceImpl<AlongListMapper, SdAlongVO
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("year", year);
paramMap.put("baseId", baseId);
Page<?> page = buildPage(loadOptions);
List<SdYearListVO> voList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdYearListVO.class);
for (SdYearListVO vo : voList) {

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.env.wt.entity.vo.SdDzChuiXiangListVO;
import com.yfd.platform.env.wt.mapper.SdDzChuiXiangListMapper;
import com.yfd.platform.env.wt.service.SdDzChuiXiangListService;
@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
/**
* 电站专题垂向水温一级面板Service实现类
@ -27,12 +29,23 @@ public class SdDzChuiXiangListServiceImpl extends ServiceImpl<SdDzChuiXiangListM
@Resource
private SdDzChuiXiangListMapper sdDzChuiXiangListMapper;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override
public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest) {
DataSourceResult dataSourceResult = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
if (baseId != null && !baseId.isBlank() && !matchWtvtBaseId(stcd, baseId)) {
dataSourceResult.setData(null);
dataSourceResult.setTotal(0);
dataSourceResult.setAggregates(new LinkedHashMap<>());
return dataSourceResult;
}
int m = 12;
Map<String, List<SdDzChuiXiangListVO>> map = new LinkedHashMap<>();
@ -45,4 +58,19 @@ public class SdDzChuiXiangListServiceImpl extends ServiceImpl<SdDzChuiXiangListM
dataSourceResult.setAggregates(map);
return dataSourceResult;
}
private boolean matchWtvtBaseId(String stcd, String baseId) {
String sql = "SELECT 1 AS flag " +
"FROM SD_WT_B_H wt " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD " +
"WHERE NVL(wt.IS_DELETED, 0) = 0 " +
" AND wt.STTP = 'WTVT' " +
" AND wt.STCD = #{map.stcd} " +
" AND eng.BASE_ID = #{map.baseId}";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("baseId", baseId);
List<Map<String, Object>> result = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap);
return result != null && !result.isEmpty();
}
}

View File

@ -45,8 +45,32 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override
public DataSourceResult getEvnmAutoMonitorList() {
List<SdWtMonitorCountVO> list = sdWtMonitorMapper.getMonitorCountList();
public DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt, 26 AS orderInx, '26' AS orderInxName, ")
.append("'ENV,ENVM,WT,' AS sttpFullPath, NULL AS sttpCode, '表层水温监测' AS sttpName ")
.append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 AND wt.STTP = 'WTRV' AND wt.DTIN_TYPE = 0 ");
if (StrUtil.isNotBlank(baseId)) {
sql.append("AND eng.BASE_ID = #{map.baseId} ");
paramMap.put("baseId", baseId);
}
sql.append("UNION ALL ")
.append("SELECT COUNT(1) AS cnt, 27 AS orderInx, '27' AS orderInxName, ")
.append("'ENV,ENVM,WT,' AS sttpFullPath, NULL AS sttpCode, '垂向水温监测' AS sttpName ")
.append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 AND wt.STTP = 'WTVT' AND wt.DTIN_TYPE = 0 ");
if (StrUtil.isNotBlank(baseId)) {
sql.append("AND eng.BASE_ID = #{map.baseId} ");
}
List<SdWtMonitorCountVO> list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, SdWtMonitorCountVO.class);
DataSourceResult<SdWtMonitorCountVO> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(list == null ? 0 : list.size());
@ -58,6 +82,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
public DataSourceResult<WbsbVo> getWbsbList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String wbsType = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "wbsType");
String objId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "objId");
if (!"PSB_RVCD".equalsIgnoreCase(wbsType) && !"PSB".equalsIgnoreCase(wbsType)) {
DataSourceResult<WbsbVo> emptyResult = new DataSourceResult<>();
emptyResult.setData(new ArrayList<>());
@ -67,6 +92,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
}
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
if ("PSB".equalsIgnoreCase(wbsType)) {
sql.append("SELECT ")
.append("t.BASEID AS id, ")
@ -119,6 +145,10 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("NULL AS displayDepartment ")
.append("FROM SD_HYDROBASE t ")
.append("WHERE NVL(t.IS_DELETED, 0) = 0 ");
if (StrUtil.isNotBlank(objId)) {
sql.append("AND t.BASEID = #{map.objId} ");
paramMap.put("objId", objId);
}
sql.append("ORDER BY NVL(t.ORDER_INDEX, 999999), t.BASENAME ASC");
} else {
sql.append("SELECT ")
@ -173,9 +203,13 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("NULL AS displayDepartment ")
.append("FROM SD_HBRV_DIC t ")
.append("WHERE NVL(t.IS_DELETED, 0) = 0 ");
if (StrUtil.isNotBlank(objId)) {
sql.append("AND t.BASEID = #{map.objId} ");
paramMap.put("objId", objId);
}
sql.append("ORDER BY NVL(t.ORDER_INDEX, 999999), t.HBRVNM ASC");
}
List<WbsbVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), new HashMap<>(), WbsbVo.class);
List<WbsbVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, WbsbVo.class);
DataSourceResult<WbsbVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal((long) list.size());
@ -185,6 +219,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
@Override
public DataSourceResult<DfltkwFacilityCountVo> getDfltkwFacilityCount(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
String sql = """
SELECT c.dwtp AS dwtp,
c.name AS name,
@ -213,7 +249,11 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
SUM(CASE WHEN NVL(t.BLDSTT_CODE, 0) = 2 THEN 1 ELSE 0 END) AS buildNum,
SUM(CASE WHEN NVL(t.BLDSTT_CODE, 0) = 1 THEN 1 ELSE 0 END) AS zjNum
FROM SD_DFLTKW_B_H t
LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD
WHERE NVL(t.IS_DELETED, 0) = 0
""" + (StrUtil.isNotBlank(baseId) ? """
AND eng.BASE_ID LIKE #{map.baseId}
""" : "") + """
GROUP BY CASE
WHEN t.STTP = 'DW_2' THEN '1'
WHEN t.STTP = 'DW_5' THEN '2'
@ -224,7 +264,11 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
ON s.dwtp = c.dwtp
ORDER BY c.sortOrder
""";
List<DfltkwFacilityCountVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, new HashMap<>(), DfltkwFacilityCountVo.class);
Map<String, Object> paramMap = new HashMap<>();
if (StrUtil.isNotBlank(baseId)) {
paramMap.put("baseId", "%" + baseId + "%");
}
List<DfltkwFacilityCountVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, DfltkwFacilityCountVo.class);
DataSourceResult<DfltkwFacilityCountVo> result = new DataSourceResult<>();
result.setData(list);
result.setTotal((long) list.size());
@ -389,6 +433,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String startTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime");
String endTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime");
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
DataSourceResult<WtFishVo> result = new DataSourceResult<>();
if (StrUtil.isBlank(stcd) || StrUtil.isBlank(startTime) || StrUtil.isBlank(endTime)) {
result.setData(new ArrayList<>());
@ -421,13 +466,19 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("LEFT JOIN SD_WT_B_H wt ON wt.STCD = #{map.stcd} AND wt.IS_DELETED = 0 AND wt.STTP = 'WTRV' ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append("WHERE (t2.WT IS NOT NULL OR t3.WT IS NOT NULL) ")
.append(" AND t1.DT <= SYSDATE ")
.append("ORDER BY t1.DT DESC");
.append(" AND t1.DT <= SYSDATE ");
if (StrUtil.isNotBlank(baseId)) {
sql.append(" AND eng.BASE_ID = #{map.baseId} ");
}
sql.append("ORDER BY t1.DT DESC");
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("startTime", startTime);
paramMap.put("endTime", endTime);
if (StrUtil.isNotBlank(baseId)) {
paramMap.put("baseId", baseId);
}
Page<?> page = buildPage(dataSourceRequest.toDevRequest());
List<WtFishVo> wtFishVoList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WtFishVo.class);
@ -463,6 +514,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
DataSourceResult<FishSpawnVo> result = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
if (StrUtil.isBlank(stcd)) {
result.setData(new ArrayList<>());
result.setTotal(0L);
@ -482,11 +534,15 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
"WHERE NVL(t1.IS_DELETED, 0) = 0 " +
" AND t1.STCD = #{map.stcd} " +
" AND t1.STTP = 'WTRV' " +
(StrUtil.isNotBlank(baseId) ? " AND eng.BASE_ID = #{map.baseId} " : "") +
" AND t2.PRETEMP IS NOT NULL " +
" AND t2.SPAWN_MONTH IS NOT NULL " +
"ORDER BY NVL(t3.ORDER_INDEX, 999999), NVL(t2.ORDER_INDEX, 999999), t2.NAME";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
if (StrUtil.isNotBlank(baseId)) {
paramMap.put("baseId", baseId);
}
List<FishSpawnVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FishSpawnVo.class);
fillFishSpawnInfo(list);
result.setData(list);
@ -500,6 +556,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway");
String sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode");
String sttpFullPath = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpFullPath");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm");
@ -507,6 +565,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin");
StringBuilder sql = new StringBuilder();
boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode);
boolean queryDwDirectly = StrUtil.isNotBlank(sttpCode) && sttpCode.toUpperCase().startsWith("DW_");
if (queryEngDirectly) {
sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ")
@ -529,10 +588,42 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("FROM SD_ENGINFO_B_H eng ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ")
.append("WHERE 1=1 ");
} else if (queryDwDirectly) {
sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ")
.append("hb.BASEID AS baseId, ")
.append("hb.ORDER_INDEX AS baseStepSort, ")
// .append("NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, ")
.append("eng.ORDER_INDEX AS rstcdStepSort, ")
.append("dw.ORDER_INDEX AS siteStepSort, ")
.append("dw.STNM AS stnm, ")
.append("eng.ENNM AS ennm, ")
.append("dw.JCDT AS jcdt, ")
.append("NULL AS stindx, ")
.append("CASE WHEN NVL(dw.DTIN, 0) = 1 THEN 1 ELSE 0 END AS coenvwState, ")
.append("dw.STTP AS sttpCode, ")
.append("sttp.STTP_NAME AS sttpName, ")
.append("sttp.FULL_PATH AS sttpFullPath, ")
.append("dw.STCD AS stcd, ")
.append("dw.RSTCD AS rstcd, ")
.append("NULL AS stCode, ")
.append("NULL AS stName, ")
.append("eng.DVTP AS dvtp, ")
.append("eng.HBRVCD AS hbrvcd ")
.append("FROM SD_DFLTKW_B_H dw ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = dw.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = dw.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(dw.IS_DELETED, 0) = 0 ");
} else {
sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ")
.append("hb.BASEID AS baseId, ")
.append("hb.ORDER_INDEX AS baseStepSort, ")
.append("NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, ")
.append("eng.ORDER_INDEX AS rstcdStepSort, ")
.append("wt.ORDER_INDEX AS siteStepSort, ")
.append("wt.STNM AS stnm, ")
.append("eng.ENNM AS ennm, ")
.append("wt.JCDT AS jcdt, ")
@ -542,44 +633,61 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ")
.append("ELSE 0 END AS coenvwState, ")
.append("wt.STTP AS sttpCode, ")
.append("sttp.STTP_NAME AS sttpName, ")
.append("sttp.FULL_PATH AS sttpFullPath, ")
.append("wt.STCD AS stcd, ")
.append("wt.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("wt.ORDER_INDEX AS siteStepSort ")
.append("eng.HBRVCD AS hbrvcd ")
.append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ")
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = wt.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTRV_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) rvRecent ON rvRecent.STCD = wt.STCD ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTVT_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) vtRecent ON vtRecent.STCD = wt.STCD ")
.append("WHERE wt.IS_DELETED = 0 AND wt.DTIN_TYPE = 0 ");
}
Map<String, Object> paramMap = new HashMap<>();
if (!queryEngDirectly && mway != null && !mway.isBlank()) {
if (!queryEngDirectly && !queryDwDirectly && mway != null && !mway.isBlank()) {
paramMap.put("mway", mway);
sql.append("AND wt.MWAY = #{map.mway} ");
}
if (!queryEngDirectly && sttpCode != null && !sttpCode.isBlank()) {
if (!queryEngDirectly && !queryDwDirectly && sttpCode != null && !sttpCode.isBlank()) {
paramMap.put("sttpCode", sttpCode);
sql.append("AND wt.STTP = #{map.sttpCode} ");
}
if (queryDwDirectly && sttpCode != null && !sttpCode.isBlank()) {
paramMap.put("sttpCode", sttpCode);
sql.append("AND dw.STTP = #{map.sttpCode} ");
}
if (rstcd != null && !rstcd.isBlank()) {
paramMap.put("rstcd", rstcd);
if (queryEngDirectly) {
sql.append("AND eng.STCD = #{map.rstcd} ");
} else if (queryDwDirectly) {
sql.append("AND dw.RSTCD = #{map.rstcd} ");
} else {
sql.append("AND wt.RSTCD = #{map.rstcd} ");
}
}
if (baseId != null && !baseId.isBlank()) {
paramMap.put("baseId", baseId);
sql.append("AND eng.BASE_ID = #{map.baseId} ");
}
if (!queryEngDirectly && StrUtil.isNotBlank(sttpFullPath)) {
paramMap.put("sttpFullPath", "%" + sttpFullPath + "%");
sql.append("AND sttp.FULL_PATH LIKE #{map.sttpFullPath} ");
}
if (stcd != null && !stcd.isBlank()) {
paramMap.put("stcd", stcd);
if (queryEngDirectly) {
sql.append("AND eng.STCD = #{map.stcd} ");
} else if (queryDwDirectly) {
sql.append("AND dw.STCD = #{map.stcd} ");
} else {
sql.append("AND wt.STCD = #{map.stcd} ");
}
@ -588,6 +696,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("stnm", "%" + stnm + "%");
if (queryEngDirectly) {
sql.append("AND eng.ENNM LIKE #{map.stnm} ");
} else if (queryDwDirectly) {
sql.append("AND dw.STNM LIKE #{map.stnm} ");
} else {
sql.append("AND wt.STNM LIKE #{map.stnm} ");
}
@ -597,6 +707,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("dtin", dtin);
if (queryEngDirectly) {
sql.append("AND NVL(eng.DTIN, 0) = #{map.dtin} ");
} else if (queryDwDirectly) {
sql.append("AND NVL(dw.DTIN, 0) = #{map.dtin} ");
} else {
sql.append("AND wt.DTIN = #{map.dtin} ");
}
@ -605,6 +717,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("coenvwState", coenvwState);
if (queryEngDirectly) {
sql.append("AND CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} ");
} else if (queryDwDirectly) {
sql.append("AND CASE WHEN NVL(dw.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} ");
} else {
sql.append("AND CASE ")
.append("WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 ")
@ -630,6 +744,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
collectFilters(dataSourceRequest.getFilter(), filters);
String stcd = null;
String baseId = null;
String drtp = null;
Object startTime = null;
Object endTime = null;
@ -643,6 +758,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
for (DataSourceRequest.FilterDescriptor filter : filters) {
if ("stcd".equals(filter.getField())) {
stcd = toStringValue(filter.getValue());
} else if ("baseId".equals(filter.getField())) {
baseId = toStringValue(filter.getValue());
} else if ("drtp".equals(filter.getField())) {
drtp = toStringValue(filter.getValue());
} else if ("tm".equals(filter.getField()) && "gte".equals(filter.getOperator())) {
@ -669,6 +786,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
}
Integer wtDeviceType = sdWtMonitorMapper.getWtDeviceTypeByStcd(stcd);
if (StrUtil.isNotBlank(baseId) && !matchWtStationBaseId(stcd, baseId, "WTVT")) {
return emptyCxDetailResult(wtDeviceType, drtp);
}
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
@ -1170,6 +1290,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
"t.WT AS wt, " +
"t.STTP AS sttp, " +
"t.STTPCODE AS sttpCode, " +
"t.BASEID AS baseId, " +
"t.BEFOREWT AS beforeWt, " +
"t.ACTUALTEMP AS actualTemp " +
"FROM ( " +
@ -1177,6 +1298,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
" t2.WT AS wt, " +
" 'WT' AS sttp, " +
" wt.STTP AS sttpCode, " +
" eng.BASE_ID AS baseId, " +
" wt.STCD AS stcd, " +
" wt.STNM AS stnm, " +
" t3.WT AS beforeWt, " +
@ -1202,6 +1324,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
" ON wt.STCD = #{map.stcd} " +
" AND wt.STTP = 'WTRV' " +
" AND NVL(wt.IS_DELETED, 0) = 0 " +
" LEFT JOIN SD_ENGINFO_B_H eng " +
" ON eng.STCD = wt.RSTCD " +
// " AND NVL(eng.IS_DELETED, 0) = 0 " +
" LEFT JOIN (SELECT STCD, WT " +
" FROM SD_WTNP_B " +
" WHERE NVL(IS_DELETED, 0) = 0 " +
@ -1220,6 +1345,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("t.DT AS dt, ")
.append("t.WT AS wt, ")
.append("t.STTP AS sttp, ")
.append("t.BASEID AS baseId, ")
.append("t.SUMVAL AS sumVal, ")
.append("t.SUMCOUNT AS sumCount, ")
.append("t.BEFOREWT AS beforeWt, ")
@ -1228,6 +1354,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append(" SELECT dayData.STCD, ")
.append(" wt.STNM, ")
.append(" wt.RSTCD, ")
.append(" eng.BASE_ID AS baseId, ")
.append(" dayData.DT, ")
.append(" dayData.WT, ")
.append(" np.WT AS naturalTemp, ")
@ -1246,6 +1373,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append(" INNER JOIN SD_WT_B_H wt ON wt.STCD = dayData.STCD ")
.append(" AND wt.STTP = 'WTRV' ")
.append(" AND NVL(wt.IS_DELETED, 0) = 0 ")
.append(" LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append(" LEFT JOIN (");
if (hasMonth) {
sql.append("SELECT STCD, WT FROM SD_WTNP_B ")
@ -1394,6 +1522,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
return switch (field) {
case "stcd" -> "t.STCD";
case "stnm" -> "t.STNM";
case "baseId" -> "t.BASEID";
case "dt" -> "t.DT";
case "wt", "actualTemp" -> "t.WT";
case "sttp" -> "t.STTP";
@ -1506,6 +1635,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
case "sttp" -> "t.STTP";
case "sttpCode" -> "t.STTPCODE";
case "stnm" -> "t.STNM";
case "baseId" -> "t.BASEID";
default -> null;
};
}
@ -1656,24 +1786,26 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String field = sortDescriptor.getField();
String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC";
if ("baseStepSort".equals(field)) {
orderColumns.add("NVL(hb.ORDER_INDEX, 999999) " + dir);
orderColumns.add("NVL(baseStepSort, 999999) " + dir);
} else if ("rvcdStepSort".equals(field)) {
// orderColumns.add("NVL(rvcdStepSort, 999999) " + dir);
} else if ("hbrvcd".equals(field)) {
orderColumns.add("NVL(eng.HBRVCD, '~') " + dir);
orderColumns.add("NVL(hbrvcd, '~') " + dir);
} else if ("rstcdStepSort".equals(field)) {
orderColumns.add("NVL(eng.ORDER_INDEX, 999999) " + dir);
orderColumns.add("NVL(rstcdStepSort, 999999) " + dir);
} else if ("siteStepSort".equals(field)) {
// orderColumns.add("NVL(wt.ORDER_INDEX, 999999) " + dir);
orderColumns.add("NVL(siteStepSort, 999999) " + dir);
} else if ("stnm".equals(field)) {
orderColumns.add("wt.STNM " + dir);
orderColumns.add("NVL(stnm, '~') " + dir);
} else if ("ennm".equals(field)) {
orderColumns.add("eng.ENNM " + dir);
orderColumns.add("NVL(ennm, '~') " + dir);
} else if ("stcd".equals(field)) {
orderColumns.add("wt.STCD " + dir);
orderColumns.add("NVL(stcd, '~') " + dir);
}
}
}
if (orderColumns.isEmpty()) {
return " ORDER BY NVL(hb.ORDER_INDEX, 999999) ASC, NVL(eng.HBRVCD, '~') ASC, NVL(eng.ORDER_INDEX, 999999) ASC";
return " ORDER BY NVL(baseStepSort, 999999) ASC, NVL(rstcdStepSort, 999999) ASC";
}
return " ORDER BY " + String.join(", ", orderColumns);
}
@ -1798,6 +1930,25 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.collect(Collectors.toList());
}
private boolean matchWtStationBaseId(String stcd, String baseId, String sttp) {
if (StrUtil.isBlank(stcd) || StrUtil.isBlank(baseId)) {
return true;
}
String sql = "SELECT 1 AS flag " +
"FROM SD_WT_B_H wt " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD " +
"WHERE NVL(wt.IS_DELETED, 0) = 0 " +
" AND wt.STCD = #{map.stcd} " +
" AND wt.STTP = #{map.sttp} " +
" AND eng.BASE_ID = #{map.baseId}";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("sttp", sttp);
paramMap.put("baseId", baseId);
List<Map<String, Object>> list = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap);
return list != null && !list.isEmpty();
}
private void fillFishList(List<WtFishVo> wtFishVoList, List<FishSpawnVo> fishSpawnVoList) {
if (wtFishVoList == null || wtFishVoList.isEmpty() || fishSpawnVoList == null || fishSpawnVoList.isEmpty()) {
return;

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.env.wt.entity.vo.SdWtvtYearVo;
import com.yfd.platform.env.wt.mapper.SdWtvtRMapper;
import com.yfd.platform.env.wt.service.SdWtvtRService;
@ -12,7 +13,9 @@ import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 垂向水温Service实现类
@ -26,21 +29,45 @@ public class SdWtvtRServiceImpl extends ServiceImpl<SdWtvtRMapper, SdWtvtYearVo>
@Resource
private SdWtvtRMapper sdWtvtRMapper;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override
public DataSourceResult getWtrvDefaultYear(DataSourceRequest dataSourceRequest) {
DataSourceResult<SdWtvtYearVo> dataSourceResult = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptionsBase = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "stcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "baseId");
if (StringUtils.isNotBlank(stcd)) {
stcd = stcd.replaceAll("\\[", "")
.replaceAll("]", "")
.replaceAll("\"", "");
}
if (StringUtils.isNotBlank(baseId) && !matchWtvtBaseId(stcd, baseId)) {
dataSourceResult.setTotal(0L);
dataSourceResult.setData(List.of());
return dataSourceResult;
}
List<SdWtvtYearVo> result = sdWtvtRMapper.getWtrvDefaultYear(stcd);
dataSourceResult.setTotal(result.size());
dataSourceResult.setData(result);
return dataSourceResult;
}
private boolean matchWtvtBaseId(String stcd, String baseId) {
String sql = "SELECT 1 AS flag " +
"FROM SD_WT_B_H wt " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD " +
"WHERE NVL(wt.IS_DELETED, 0) = 0 " +
" AND wt.STTP = 'WTVT' " +
" AND wt.STCD = #{map.stcd} " +
" AND eng.BASE_ID = #{map.baseId}";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("baseId", baseId);
List<Map<String, Object>> result = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap);
return result != null && !result.isEmpty();
}
}