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") @PostMapping("/evnmAutoMonitor/GetKendoListCust")
@Operation(summary = "查询水温监测数量") @Operation(summary = "查询水温监测数量")
public ResponseResult getWTDataCount(@RequestBody(required = false) DataSourceRequest dataSourceRequest) { public ResponseResult getWTDataCount(@RequestBody(required = false) DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList()); return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList(dataSourceRequest));
} }
@PostMapping("/dwInfo/GetKendoListCust") @PostMapping("/dwInfo/GetKendoListCust")

View File

@ -17,6 +17,18 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "基地名称") @Schema(description = "基地名称")
private String baseName; 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 = "站名") @Schema(description = "站名")
private String stnm; private String stnm;
@ -35,6 +47,12 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "站类") @Schema(description = "站类")
private String sttpCode; private String sttpCode;
@Schema(description = "站类名称")
private String sttpName;
@Schema(description = "站类全路径")
private String sttpFullPath;
@Schema(description = "站码") @Schema(description = "站码")
private String stcd; private String stcd;
@ -49,4 +67,7 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "开发方式") @Schema(description = "开发方式")
private String dvtp; private String dvtp;
@Schema(description = "基地流域编码")
private String hbrvcd;
} }

View File

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

View File

@ -52,6 +52,7 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
DataSourceResult dataSourceResult = new DataSourceResult(); DataSourceResult dataSourceResult = new DataSourceResult();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
String tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm"); String tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm");
if (StrUtil.isBlank(tm)) { if (StrUtil.isBlank(tm)) {
throw new BizException("时间(tm)不能为空."); throw new BizException("时间(tm)不能为空.");
@ -87,6 +88,9 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
if (StrUtil.isNotBlank(stcd)) { if (StrUtil.isNotBlank(stcd)) {
sql.append(" AND r.STCD = #{map.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 "); sql.append(") t WHERE 1=1 ");
if (dataSourceRequest.getSort() != null && !dataSourceRequest.getSort().isEmpty()) { if (dataSourceRequest.getSort() != null && !dataSourceRequest.getSort().isEmpty()) {
DataSourceRequest.SortDescriptor sortDescriptor = dataSourceRequest.getSort().get(0); DataSourceRequest.SortDescriptor sortDescriptor = dataSourceRequest.getSort().get(0);
@ -110,6 +114,9 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
if (StrUtil.isNotBlank(stcd)) { if (StrUtil.isNotBlank(stcd)) {
map.put("stcd", stcd); map.put("stcd", stcd);
} }
if (StrUtil.isNotBlank(baseId)) {
map.put("baseId", baseId);
}
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions); PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
Page currentPage = pageInfo.getHasPageInfo() ? pageInfo.getPage() : page; Page currentPage = pageInfo.getHasPageInfo() ? pageInfo.getPage() : page;
List<SdAlongDetailVO> list = this.microservicDynamicSQLMapper.pageAllListWithResultType(currentPage, sql.toString(), map, SdAlongDetailVO.class); 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(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year"); String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
StringBuilder sql = new StringBuilder(); 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, ") 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(" FROM SD_WTRVDRTP_S sms ")
.append(" LEFT JOIN SD_WT_B_H wt ON wt.STCD = sms.STCD ") .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(" 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(" WHERE sms.IS_DELETED = 0 ")
.append(StrUtil.isNotBlank(baseId) ? " AND eng.BASE_ID = #{map.baseId} " : "")
.append(" ) t1 ") .append(" ) t1 ")
.append(" LEFT JOIN (SELECT STCD, WT, MNTH FROM SD_WTNP_B WHERE IS_DELETED = 0) t2 ") .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 ") .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<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd); paramMap.put("stcd", stcd);
paramMap.put("year", year); paramMap.put("year", year);
paramMap.put("baseId", baseId);
Page<?> page = buildPage(loadOptions); Page<?> page = buildPage(loadOptions);
List<SdYearListVO> voList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdYearListVO.class); List<SdYearListVO> voList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdYearListVO.class);
for (SdYearListVO vo : voList) { 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.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.env.wt.entity.vo.SdDzChuiXiangListVO; import com.yfd.platform.env.wt.entity.vo.SdDzChuiXiangListVO;
import com.yfd.platform.env.wt.mapper.SdDzChuiXiangListMapper; import com.yfd.platform.env.wt.mapper.SdDzChuiXiangListMapper;
import com.yfd.platform.env.wt.service.SdDzChuiXiangListService; import com.yfd.platform.env.wt.service.SdDzChuiXiangListService;
@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.HashMap;
/** /**
* 电站专题垂向水温一级面板Service实现类 * 电站专题垂向水温一级面板Service实现类
@ -27,12 +29,23 @@ public class SdDzChuiXiangListServiceImpl extends ServiceImpl<SdDzChuiXiangListM
@Resource @Resource
private SdDzChuiXiangListMapper sdDzChuiXiangListMapper; private SdDzChuiXiangListMapper sdDzChuiXiangListMapper;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override @Override
public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest) { public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest) {
DataSourceResult dataSourceResult = new DataSourceResult<>(); DataSourceResult dataSourceResult = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year"); 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; int m = 12;
Map<String, List<SdDzChuiXiangListVO>> map = new LinkedHashMap<>(); Map<String, List<SdDzChuiXiangListVO>> map = new LinkedHashMap<>();
@ -45,4 +58,19 @@ public class SdDzChuiXiangListServiceImpl extends ServiceImpl<SdDzChuiXiangListM
dataSourceResult.setAggregates(map); dataSourceResult.setAggregates(map);
return dataSourceResult; 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; private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override @Override
public DataSourceResult getEvnmAutoMonitorList() { public DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest) {
List<SdWtMonitorCountVO> list = sdWtMonitorMapper.getMonitorCountList(); 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<>(); DataSourceResult<SdWtMonitorCountVO> result = new DataSourceResult<>();
result.setData(list); result.setData(list);
result.setTotal(list == null ? 0 : list.size()); result.setTotal(list == null ? 0 : list.size());
@ -58,6 +82,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
public DataSourceResult<WbsbVo> getWbsbList(DataSourceRequest dataSourceRequest) { public DataSourceResult<WbsbVo> getWbsbList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String wbsType = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "wbsType"); 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)) { if (!"PSB_RVCD".equalsIgnoreCase(wbsType) && !"PSB".equalsIgnoreCase(wbsType)) {
DataSourceResult<WbsbVo> emptyResult = new DataSourceResult<>(); DataSourceResult<WbsbVo> emptyResult = new DataSourceResult<>();
emptyResult.setData(new ArrayList<>()); emptyResult.setData(new ArrayList<>());
@ -67,6 +92,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
} }
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
if ("PSB".equalsIgnoreCase(wbsType)) { if ("PSB".equalsIgnoreCase(wbsType)) {
sql.append("SELECT ") sql.append("SELECT ")
.append("t.BASEID AS id, ") .append("t.BASEID AS id, ")
@ -119,6 +145,10 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("NULL AS displayDepartment ") .append("NULL AS displayDepartment ")
.append("FROM SD_HYDROBASE t ") .append("FROM SD_HYDROBASE t ")
.append("WHERE NVL(t.IS_DELETED, 0) = 0 "); .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"); sql.append("ORDER BY NVL(t.ORDER_INDEX, 999999), t.BASENAME ASC");
} else { } else {
sql.append("SELECT ") sql.append("SELECT ")
@ -173,9 +203,13 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("NULL AS displayDepartment ") .append("NULL AS displayDepartment ")
.append("FROM SD_HBRV_DIC t ") .append("FROM SD_HBRV_DIC t ")
.append("WHERE NVL(t.IS_DELETED, 0) = 0 "); .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"); 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<>(); DataSourceResult<WbsbVo> result = new DataSourceResult<>();
result.setData(list); result.setData(list);
result.setTotal((long) list.size()); result.setTotal((long) list.size());
@ -185,6 +219,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
@Override @Override
public DataSourceResult<DfltkwFacilityCountVo> getDfltkwFacilityCount(DataSourceRequest dataSourceRequest) { public DataSourceResult<DfltkwFacilityCountVo> getDfltkwFacilityCount(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
String sql = """ String sql = """
SELECT c.dwtp AS dwtp, SELECT c.dwtp AS dwtp,
c.name AS name, 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) = 2 THEN 1 ELSE 0 END) AS buildNum,
SUM(CASE WHEN NVL(t.BLDSTT_CODE, 0) = 1 THEN 1 ELSE 0 END) AS zjNum SUM(CASE WHEN NVL(t.BLDSTT_CODE, 0) = 1 THEN 1 ELSE 0 END) AS zjNum
FROM SD_DFLTKW_B_H t 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 WHERE NVL(t.IS_DELETED, 0) = 0
""" + (StrUtil.isNotBlank(baseId) ? """
AND eng.BASE_ID LIKE #{map.baseId}
""" : "") + """
GROUP BY CASE GROUP BY CASE
WHEN t.STTP = 'DW_2' THEN '1' WHEN t.STTP = 'DW_2' THEN '1'
WHEN t.STTP = 'DW_5' THEN '2' WHEN t.STTP = 'DW_5' THEN '2'
@ -224,7 +264,11 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
ON s.dwtp = c.dwtp ON s.dwtp = c.dwtp
ORDER BY c.sortOrder 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<>(); DataSourceResult<DfltkwFacilityCountVo> result = new DataSourceResult<>();
result.setData(list); result.setData(list);
result.setTotal((long) list.size()); result.setTotal((long) list.size());
@ -389,6 +433,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String startTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime"); String startTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime");
String endTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime"); String endTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime");
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
DataSourceResult<WtFishVo> result = new DataSourceResult<>(); DataSourceResult<WtFishVo> result = new DataSourceResult<>();
if (StrUtil.isBlank(stcd) || StrUtil.isBlank(startTime) || StrUtil.isBlank(endTime)) { if (StrUtil.isBlank(stcd) || StrUtil.isBlank(startTime) || StrUtil.isBlank(endTime)) {
result.setData(new ArrayList<>()); 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_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("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("WHERE (t2.WT IS NOT NULL OR t3.WT IS NOT NULL) ")
.append(" AND t1.DT <= SYSDATE ") .append(" AND t1.DT <= SYSDATE ");
.append("ORDER BY t1.DT DESC"); 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<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd); paramMap.put("stcd", stcd);
paramMap.put("startTime", startTime); paramMap.put("startTime", startTime);
paramMap.put("endTime", endTime); paramMap.put("endTime", endTime);
if (StrUtil.isNotBlank(baseId)) {
paramMap.put("baseId", baseId);
}
Page<?> page = buildPage(dataSourceRequest.toDevRequest()); Page<?> page = buildPage(dataSourceRequest.toDevRequest());
List<WtFishVo> wtFishVoList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WtFishVo.class); 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<>(); DataSourceResult<FishSpawnVo> result = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
if (StrUtil.isBlank(stcd)) { if (StrUtil.isBlank(stcd)) {
result.setData(new ArrayList<>()); result.setData(new ArrayList<>());
result.setTotal(0L); result.setTotal(0L);
@ -482,11 +534,15 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
"WHERE NVL(t1.IS_DELETED, 0) = 0 " + "WHERE NVL(t1.IS_DELETED, 0) = 0 " +
" AND t1.STCD = #{map.stcd} " + " AND t1.STCD = #{map.stcd} " +
" AND t1.STTP = 'WTRV' " + " AND t1.STTP = 'WTRV' " +
(StrUtil.isNotBlank(baseId) ? " AND eng.BASE_ID = #{map.baseId} " : "") +
" AND t2.PRETEMP IS NOT NULL " + " AND t2.PRETEMP IS NOT NULL " +
" AND t2.SPAWN_MONTH IS NOT NULL " + " AND t2.SPAWN_MONTH IS NOT NULL " +
"ORDER BY NVL(t3.ORDER_INDEX, 999999), NVL(t2.ORDER_INDEX, 999999), t2.NAME"; "ORDER BY NVL(t3.ORDER_INDEX, 999999), NVL(t2.ORDER_INDEX, 999999), t2.NAME";
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd); paramMap.put("stcd", stcd);
if (StrUtil.isNotBlank(baseId)) {
paramMap.put("baseId", baseId);
}
List<FishSpawnVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FishSpawnVo.class); List<FishSpawnVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FishSpawnVo.class);
fillFishSpawnInfo(list); fillFishSpawnInfo(list);
result.setData(list); result.setData(list);
@ -500,6 +556,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway"); String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway");
String sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode"); 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 stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd"); String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm"); String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm");
@ -507,6 +565,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin"); String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin");
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode); boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode);
boolean queryDwDirectly = StrUtil.isNotBlank(sttpCode) && sttpCode.toUpperCase().startsWith("DW_");
if (queryEngDirectly) { if (queryEngDirectly) {
sql.append("SELECT ") sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ") .append("hb.BASENAME AS baseName, ")
@ -529,10 +588,42 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("FROM SD_ENGINFO_B_H eng ") .append("FROM SD_ENGINFO_B_H eng ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ")
.append("WHERE 1=1 "); .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 { } else {
sql.append("SELECT ") sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ") .append("hb.BASENAME AS baseName, ")
.append("hb.BASEID AS baseId, ") .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("wt.STNM AS stnm, ")
.append("eng.ENNM AS ennm, ") .append("eng.ENNM AS ennm, ")
.append("wt.JCDT AS jcdt, ") .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("WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ")
.append("ELSE 0 END AS coenvwState, ") .append("ELSE 0 END AS coenvwState, ")
.append("wt.STTP AS sttpCode, ") .append("wt.STTP AS sttpCode, ")
.append("sttp.STTP_NAME AS sttpName, ")
.append("sttp.FULL_PATH AS sttpFullPath, ")
.append("wt.STCD AS stcd, ") .append("wt.STCD AS stcd, ")
.append("wt.RSTCD AS rstcd, ") .append("wt.RSTCD AS rstcd, ")
.append("NULL AS stCode, ") .append("NULL AS stCode, ")
.append("NULL AS stName, ") .append("NULL AS stName, ")
.append("eng.DVTP AS dvtp, ") .append("eng.DVTP AS dvtp, ")
.append("hb.ORDER_INDEX AS baseStepSort, ") .append("eng.HBRVCD AS hbrvcd ")
.append("eng.HBRVCD AS hbrvcd, ")
.append("eng.ORDER_INDEX AS rstcdStepSort ")
// .append("wt.ORDER_INDEX AS siteStepSort ")
.append("FROM SD_WT_B_H wt ") .append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .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_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_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("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 "); .append("WHERE wt.IS_DELETED = 0 AND wt.DTIN_TYPE = 0 ");
} }
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
if (!queryEngDirectly && mway != null && !mway.isBlank()) { if (!queryEngDirectly && !queryDwDirectly && mway != null && !mway.isBlank()) {
paramMap.put("mway", mway); paramMap.put("mway", mway);
sql.append("AND wt.MWAY = #{map.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); paramMap.put("sttpCode", sttpCode);
sql.append("AND wt.STTP = #{map.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()) { if (rstcd != null && !rstcd.isBlank()) {
paramMap.put("rstcd", rstcd); paramMap.put("rstcd", rstcd);
if (queryEngDirectly) { if (queryEngDirectly) {
sql.append("AND eng.STCD = #{map.rstcd} "); sql.append("AND eng.STCD = #{map.rstcd} ");
} else if (queryDwDirectly) {
sql.append("AND dw.RSTCD = #{map.rstcd} ");
} else { } else {
sql.append("AND wt.RSTCD = #{map.rstcd} "); 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()) { if (stcd != null && !stcd.isBlank()) {
paramMap.put("stcd", stcd); paramMap.put("stcd", stcd);
if (queryEngDirectly) { if (queryEngDirectly) {
sql.append("AND eng.STCD = #{map.stcd} "); sql.append("AND eng.STCD = #{map.stcd} ");
} else if (queryDwDirectly) {
sql.append("AND dw.STCD = #{map.stcd} ");
} else { } else {
sql.append("AND wt.STCD = #{map.stcd} "); sql.append("AND wt.STCD = #{map.stcd} ");
} }
@ -588,6 +696,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("stnm", "%" + stnm + "%"); paramMap.put("stnm", "%" + stnm + "%");
if (queryEngDirectly) { if (queryEngDirectly) {
sql.append("AND eng.ENNM LIKE #{map.stnm} "); sql.append("AND eng.ENNM LIKE #{map.stnm} ");
} else if (queryDwDirectly) {
sql.append("AND dw.STNM LIKE #{map.stnm} ");
} else { } else {
sql.append("AND wt.STNM LIKE #{map.stnm} "); sql.append("AND wt.STNM LIKE #{map.stnm} ");
} }
@ -597,6 +707,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("dtin", dtin); paramMap.put("dtin", dtin);
if (queryEngDirectly) { if (queryEngDirectly) {
sql.append("AND NVL(eng.DTIN, 0) = #{map.dtin} "); sql.append("AND NVL(eng.DTIN, 0) = #{map.dtin} ");
} else if (queryDwDirectly) {
sql.append("AND NVL(dw.DTIN, 0) = #{map.dtin} ");
} else { } else {
sql.append("AND wt.DTIN = #{map.dtin} "); sql.append("AND wt.DTIN = #{map.dtin} ");
} }
@ -605,6 +717,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("coenvwState", coenvwState); paramMap.put("coenvwState", coenvwState);
if (queryEngDirectly) { if (queryEngDirectly) {
sql.append("AND CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} "); 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 { } else {
sql.append("AND CASE ") sql.append("AND CASE ")
.append("WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 ") .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); collectFilters(dataSourceRequest.getFilter(), filters);
String stcd = null; String stcd = null;
String baseId = null;
String drtp = null; String drtp = null;
Object startTime = null; Object startTime = null;
Object endTime = null; Object endTime = null;
@ -643,6 +758,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
for (DataSourceRequest.FilterDescriptor filter : filters) { for (DataSourceRequest.FilterDescriptor filter : filters) {
if ("stcd".equals(filter.getField())) { if ("stcd".equals(filter.getField())) {
stcd = toStringValue(filter.getValue()); stcd = toStringValue(filter.getValue());
} else if ("baseId".equals(filter.getField())) {
baseId = toStringValue(filter.getValue());
} else if ("drtp".equals(filter.getField())) { } else if ("drtp".equals(filter.getField())) {
drtp = toStringValue(filter.getValue()); drtp = toStringValue(filter.getValue());
} else if ("tm".equals(filter.getField()) && "gte".equals(filter.getOperator())) { } else if ("tm".equals(filter.getField()) && "gte".equals(filter.getOperator())) {
@ -669,6 +786,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
} }
Integer wtDeviceType = sdWtMonitorMapper.getWtDeviceTypeByStcd(stcd); Integer wtDeviceType = sdWtMonitorMapper.getWtDeviceTypeByStcd(stcd);
if (StrUtil.isNotBlank(baseId) && !matchWtStationBaseId(stcd, baseId, "WTVT")) {
return emptyCxDetailResult(wtDeviceType, drtp);
}
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd); paramMap.put("stcd", stcd);
@ -1170,6 +1290,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
"t.WT AS wt, " + "t.WT AS wt, " +
"t.STTP AS sttp, " + "t.STTP AS sttp, " +
"t.STTPCODE AS sttpCode, " + "t.STTPCODE AS sttpCode, " +
"t.BASEID AS baseId, " +
"t.BEFOREWT AS beforeWt, " + "t.BEFOREWT AS beforeWt, " +
"t.ACTUALTEMP AS actualTemp " + "t.ACTUALTEMP AS actualTemp " +
"FROM ( " + "FROM ( " +
@ -1177,6 +1298,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
" t2.WT AS wt, " + " t2.WT AS wt, " +
" 'WT' AS sttp, " + " 'WT' AS sttp, " +
" wt.STTP AS sttpCode, " + " wt.STTP AS sttpCode, " +
" eng.BASE_ID AS baseId, " +
" wt.STCD AS stcd, " + " wt.STCD AS stcd, " +
" wt.STNM AS stnm, " + " wt.STNM AS stnm, " +
" t3.WT AS beforeWt, " + " t3.WT AS beforeWt, " +
@ -1202,6 +1324,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
" ON wt.STCD = #{map.stcd} " + " ON wt.STCD = #{map.stcd} " +
" AND wt.STTP = 'WTRV' " + " AND wt.STTP = 'WTRV' " +
" AND NVL(wt.IS_DELETED, 0) = 0 " + " 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 " + " LEFT JOIN (SELECT STCD, WT " +
" FROM SD_WTNP_B " + " FROM SD_WTNP_B " +
" WHERE NVL(IS_DELETED, 0) = 0 " + " WHERE NVL(IS_DELETED, 0) = 0 " +
@ -1220,6 +1345,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("t.DT AS dt, ") .append("t.DT AS dt, ")
.append("t.WT AS wt, ") .append("t.WT AS wt, ")
.append("t.STTP AS sttp, ") .append("t.STTP AS sttp, ")
.append("t.BASEID AS baseId, ")
.append("t.SUMVAL AS sumVal, ") .append("t.SUMVAL AS sumVal, ")
.append("t.SUMCOUNT AS sumCount, ") .append("t.SUMCOUNT AS sumCount, ")
.append("t.BEFOREWT AS beforeWt, ") .append("t.BEFOREWT AS beforeWt, ")
@ -1228,6 +1354,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append(" SELECT dayData.STCD, ") .append(" SELECT dayData.STCD, ")
.append(" wt.STNM, ") .append(" wt.STNM, ")
.append(" wt.RSTCD, ") .append(" wt.RSTCD, ")
.append(" eng.BASE_ID AS baseId, ")
.append(" dayData.DT, ") .append(" dayData.DT, ")
.append(" dayData.WT, ") .append(" dayData.WT, ")
.append(" np.WT AS naturalTemp, ") .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(" INNER JOIN SD_WT_B_H wt ON wt.STCD = dayData.STCD ")
.append(" AND wt.STTP = 'WTRV' ") .append(" AND wt.STTP = 'WTRV' ")
.append(" AND NVL(wt.IS_DELETED, 0) = 0 ") .append(" AND NVL(wt.IS_DELETED, 0) = 0 ")
.append(" LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append(" LEFT JOIN ("); .append(" LEFT JOIN (");
if (hasMonth) { if (hasMonth) {
sql.append("SELECT STCD, WT FROM SD_WTNP_B ") sql.append("SELECT STCD, WT FROM SD_WTNP_B ")
@ -1394,6 +1522,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
return switch (field) { return switch (field) {
case "stcd" -> "t.STCD"; case "stcd" -> "t.STCD";
case "stnm" -> "t.STNM"; case "stnm" -> "t.STNM";
case "baseId" -> "t.BASEID";
case "dt" -> "t.DT"; case "dt" -> "t.DT";
case "wt", "actualTemp" -> "t.WT"; case "wt", "actualTemp" -> "t.WT";
case "sttp" -> "t.STTP"; case "sttp" -> "t.STTP";
@ -1506,6 +1635,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
case "sttp" -> "t.STTP"; case "sttp" -> "t.STTP";
case "sttpCode" -> "t.STTPCODE"; case "sttpCode" -> "t.STTPCODE";
case "stnm" -> "t.STNM"; case "stnm" -> "t.STNM";
case "baseId" -> "t.BASEID";
default -> null; default -> null;
}; };
} }
@ -1656,24 +1786,26 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String field = sortDescriptor.getField(); String field = sortDescriptor.getField();
String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC";
if ("baseStepSort".equals(field)) { 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)) { } else if ("hbrvcd".equals(field)) {
orderColumns.add("NVL(eng.HBRVCD, '~') " + dir); orderColumns.add("NVL(hbrvcd, '~') " + dir);
} else if ("rstcdStepSort".equals(field)) { } else if ("rstcdStepSort".equals(field)) {
orderColumns.add("NVL(eng.ORDER_INDEX, 999999) " + dir); orderColumns.add("NVL(rstcdStepSort, 999999) " + dir);
} else if ("siteStepSort".equals(field)) { } else if ("siteStepSort".equals(field)) {
// orderColumns.add("NVL(wt.ORDER_INDEX, 999999) " + dir); orderColumns.add("NVL(siteStepSort, 999999) " + dir);
} else if ("stnm".equals(field)) { } else if ("stnm".equals(field)) {
orderColumns.add("wt.STNM " + dir); orderColumns.add("NVL(stnm, '~') " + dir);
} else if ("ennm".equals(field)) { } else if ("ennm".equals(field)) {
orderColumns.add("eng.ENNM " + dir); orderColumns.add("NVL(ennm, '~') " + dir);
} else if ("stcd".equals(field)) { } else if ("stcd".equals(field)) {
orderColumns.add("wt.STCD " + dir); orderColumns.add("NVL(stcd, '~') " + dir);
} }
} }
} }
if (orderColumns.isEmpty()) { 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); return " ORDER BY " + String.join(", ", orderColumns);
} }
@ -1798,6 +1930,25 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.collect(Collectors.toList()); .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) { private void fillFishList(List<WtFishVo> wtFishVoList, List<FishSpawnVo> fishSpawnVoList) {
if (wtFishVoList == null || wtFishVoList.isEmpty() || fishSpawnVoList == null || fishSpawnVoList.isEmpty()) { if (wtFishVoList == null || wtFishVoList.isEmpty() || fishSpawnVoList == null || fishSpawnVoList.isEmpty()) {
return; 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.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.env.wt.entity.vo.SdWtvtYearVo; import com.yfd.platform.env.wt.entity.vo.SdWtvtYearVo;
import com.yfd.platform.env.wt.mapper.SdWtvtRMapper; import com.yfd.platform.env.wt.mapper.SdWtvtRMapper;
import com.yfd.platform.env.wt.service.SdWtvtRService; import com.yfd.platform.env.wt.service.SdWtvtRService;
@ -12,7 +13,9 @@ import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 垂向水温Service实现类 * 垂向水温Service实现类
@ -26,21 +29,45 @@ public class SdWtvtRServiceImpl extends ServiceImpl<SdWtvtRMapper, SdWtvtYearVo>
@Resource @Resource
private SdWtvtRMapper sdWtvtRMapper; private SdWtvtRMapper sdWtvtRMapper;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override @Override
public DataSourceResult getWtrvDefaultYear(DataSourceRequest dataSourceRequest) { public DataSourceResult getWtrvDefaultYear(DataSourceRequest dataSourceRequest) {
DataSourceResult<SdWtvtYearVo> dataSourceResult = new DataSourceResult<>(); DataSourceResult<SdWtvtYearVo> dataSourceResult = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptionsBase = dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptionsBase = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "stcd"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "stcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "baseId");
if (StringUtils.isNotBlank(stcd)) { if (StringUtils.isNotBlank(stcd)) {
stcd = stcd.replaceAll("\\[", "") stcd = stcd.replaceAll("\\[", "")
.replaceAll("]", "") .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); List<SdWtvtYearVo> result = sdWtvtRMapper.getWtrvDefaultYear(stcd);
dataSourceResult.setTotal(result.size()); dataSourceResult.setTotal(result.size());
dataSourceResult.setData(result); dataSourceResult.setData(result);
return dataSourceResult; 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();
}
} }