fix: 优化水温模块接口逻辑

This commit is contained in:
tangwei 2026-05-27 09:30:23 +08:00
parent 30d0522a9c
commit 88a2d81953
3 changed files with 150 additions and 65 deletions

View File

@ -162,53 +162,93 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState"); String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState");
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode);
.append("hb.BASENAME AS baseName, ") if (queryEngDirectly) {
.append("wq.STNM AS stnm, ") sql.append("SELECT ")
.append("eng.ENNM AS ennm, ") .append("hb.BASENAME AS baseName, ")
.append("wq.JCDT AS jcdt, ") .append("eng.ENNM AS stnm, ")
.append("wq.STINDX AS stindx, ") .append("eng.ENNM AS ennm, ")
.append("CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END AS coenvwState, ") .append("eng.JCDT AS jcdt, ")
.append("wq.STTP AS sttpCode, ") .append("NULL AS stindx, ")
.append("wq.STCD AS stcd, ") .append("CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END AS coenvwState, ")
.append("wq.RSTCD AS rstcd, ") .append("'ENG' AS sttpCode, ")
.append("NULL AS stCode, ") .append("eng.STCD AS stcd, ")
.append("NULL AS stName, ") .append("eng.STCD AS rstcd, ")
.append("eng.DVTP AS dvtp, ") .append("NULL AS stCode, ")
.append("hb.ORDER_INDEX AS baseStepSort, ") .append("NULL AS stName, ")
.append("eng.HBRVCD AS hbrvcd, ") .append("eng.DVTP AS dvtp, ")
.append("eng.ORDER_INDEX AS rstcdStepSort, ") .append("hb.ORDER_INDEX AS baseStepSort, ")
.append("wq.ORDER_INDEX AS siteStepSort ") .append("eng.HBRVCD AS hbrvcd, ")
.append("FROM SD_WQ_B_H wq ") .append("eng.ORDER_INDEX AS rstcdStepSort, ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD ") .append("eng.ORDER_INDEX AS siteStepSort ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") .append("FROM SD_ENGINFO_B_H eng ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WQ_R WHERE NVL(IS_DELETED, 0) = 0 AND TM >= SYSDATE - 1) recent ON recent.STCD = wq.STCD ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 "); .append("WHERE 1 = 1 ");
} else {
sql.append("SELECT ")
.append("hb.BASENAME AS baseName, ")
.append("wq.STNM AS stnm, ")
.append("eng.ENNM AS ennm, ")
.append("wq.JCDT AS jcdt, ")
.append("wq.STINDX AS stindx, ")
.append("CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END AS coenvwState, ")
.append("wq.STTP AS sttpCode, ")
.append("wq.STCD AS stcd, ")
.append("wq.RSTCD AS rstcd, ")
.append("NULL AS stCode, ")
.append("NULL AS stName, ")
.append("eng.DVTP AS dvtp, ")
.append("hb.ORDER_INDEX AS baseStepSort, ")
.append("eng.HBRVCD AS hbrvcd, ")
.append("eng.ORDER_INDEX AS rstcdStepSort, ")
.append("wq.ORDER_INDEX AS siteStepSort ")
.append("FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WQ_R WHERE NVL(IS_DELETED, 0) = 0 AND TM >= SYSDATE - 1) recent ON recent.STCD = wq.STCD ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ");
}
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
if (StrUtil.isNotBlank(mway)) { if (!queryEngDirectly && StrUtil.isNotBlank(mway)) {
paramMap.put("mway", mway); paramMap.put("mway", mway);
sql.append("AND wq.MWAY = #{map.mway} "); sql.append("AND wq.MWAY = #{map.mway} ");
} }
if (StrUtil.isNotBlank(sttpCode)) { if (!queryEngDirectly && StrUtil.isNotBlank(sttpCode)) {
paramMap.put("sttpCode", sttpCode); paramMap.put("sttpCode", sttpCode);
sql.append("AND wq.STTP = #{map.sttpCode} "); sql.append("AND wq.STTP = #{map.sttpCode} ");
} }
if (StrUtil.isNotBlank(dtinType)) { if (StrUtil.isNotBlank(dtinType)) {
paramMap.put("dtinType", dtinType); paramMap.put("dtinType", dtinType);
sql.append("AND wq.DTIN_TYPE = #{map.dtinType} "); if (queryEngDirectly) {
sql.append("AND NVL(eng.DTIN, 0) = #{map.dtinType} ");
} else {
sql.append("AND wq.DTIN_TYPE = #{map.dtinType} ");
}
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("rstcd", rstcd); paramMap.put("rstcd", rstcd);
sql.append("AND wq.RSTCD = #{map.rstcd} "); if (queryEngDirectly) {
sql.append("AND eng.STCD = #{map.rstcd} ");
} else {
sql.append("AND wq.RSTCD = #{map.rstcd} ");
}
} }
if (StrUtil.isNotBlank(stnm)) { if (StrUtil.isNotBlank(stnm)) {
paramMap.put("stnm", "%" + stnm + "%"); paramMap.put("stnm", "%" + stnm + "%");
sql.append("AND wq.STNM LIKE #{map.stnm} "); if (queryEngDirectly) {
sql.append("AND eng.ENNM LIKE #{map.stnm} ");
} else {
sql.append("AND wq.STNM LIKE #{map.stnm} ");
}
} }
if (StrUtil.isNotBlank(coenvwState)) { if (StrUtil.isNotBlank(coenvwState)) {
paramMap.put("coenvwState", coenvwState); paramMap.put("coenvwState", coenvwState);
sql.append("AND CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END = #{map.coenvwState} "); if (queryEngDirectly) {
sql.append("AND CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} ");
} else {
sql.append("AND CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END = #{map.coenvwState} ");
}
} }
// sql.append(buildEnvWqOrderBySql(dataSourceRequest.getSort())); // sql.append(buildEnvWqOrderBySql(dataSourceRequest.getSort()));

View File

@ -161,7 +161,7 @@ public class SdWTMonitorController {
return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList()); return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList());
} }
@PostMapping("/base/vmsstbprpt/GetKendoList") @PostMapping("/vmsstbprpt/GetKendoList")
@Operation(summary = "根据类型查询水温表基本数据") @Operation(summary = "根据类型查询水温表基本数据")
public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(sdWtMonitorService.getVmsstbprptList(dataSourceRequest)); return ResponseResult.successData(sdWtMonitorService.getVmsstbprptList(dataSourceRequest));

View File

@ -155,58 +155,103 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd"); String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm"); String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm");
String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState"); String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState");
String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin");
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode);
.append("hb.BASENAME AS baseName, ") if (queryEngDirectly) {
.append("wt.STNM AS stnm, ") sql.append("SELECT ")
.append("eng.ENNM AS ennm, ") .append("hb.BASENAME AS baseName, ")
.append("wt.JCDT AS jcdt, ") .append("eng.ENNM AS stnm, ")
.append("wt.STINDX AS stindx, ") .append("eng.ENNM AS ennm, ")
.append("CASE ") .append("eng.JCDT AS jcdt, ")
.append("WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 ") .append("NULL AS stindx, ")
.append("WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ") .append("CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END AS coenvwState, ")
.append("ELSE 0 END AS coenvwState, ") .append("'ENG' AS sttpCode, ")
.append("wt.STTP AS sttpCode, ") .append("eng.STCD AS stcd, ")
.append("wt.STCD AS stcd, ") .append("eng.STCD 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("hb.ORDER_INDEX AS baseStepSort, ") .append("eng.HBRVCD AS hbrvcd, ")
.append("eng.HBRVCD AS hbrvcd, ") .append("eng.ORDER_INDEX AS rstcdStepSort, ")
.append("eng.ORDER_INDEX AS rstcdStepSort, ") .append("eng.ORDER_INDEX AS siteStepSort ")
.append("wt.ORDER_INDEX AS siteStepSort ") .append("FROM SD_ENGINFO_B_H eng ")
.append("FROM SD_WT_B_H wt ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .append("WHERE 1=1 ");
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ") } else {
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTRV_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) rvRecent ON rvRecent.STCD = wt.STCD ") sql.append("SELECT ")
.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("hb.BASENAME AS baseName, ")
.append("WHERE wt.IS_DELETED = 0 AND wt.DTIN_TYPE = 0 "); .append("wt.STNM AS stnm, ")
.append("eng.ENNM AS ennm, ")
.append("wt.JCDT AS jcdt, ")
.append("wt.STINDX AS stindx, ")
.append("CASE ")
.append("WHEN wt.STTP = 'WTRV' AND rvRecent.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("wt.STTP AS sttpCode, ")
.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("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 (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<>(); Map<String, Object> paramMap = new HashMap<>();
if (mway != null && !mway.isBlank()) { if (!queryEngDirectly && 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 (sttpCode != null && !sttpCode.isBlank()) { if (!queryEngDirectly && 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 (rstcd != null && !rstcd.isBlank()) { if (rstcd != null && !rstcd.isBlank()) {
paramMap.put("rstcd", rstcd); paramMap.put("rstcd", rstcd);
sql.append("AND wt.RSTCD = #{map.rstcd} "); if (queryEngDirectly) {
sql.append("AND eng.STCD = #{map.rstcd} ");
} else {
sql.append("AND wt.RSTCD = #{map.rstcd} ");
}
} }
if (stnm != null && !stnm.isBlank()) { if (stnm != null && !stnm.isBlank()) {
paramMap.put("stnm", "%" + stnm + "%"); paramMap.put("stnm", "%" + stnm + "%");
sql.append("AND wt.STNM LIKE #{map.stnm} "); if (queryEngDirectly) {
sql.append("AND eng.ENNM LIKE #{map.stnm} ");
} else {
sql.append("AND wt.STNM LIKE #{map.stnm} ");
}
}
if (StrUtil.isNotBlank(dtin)) {
paramMap.put("dtin", dtin);
if (queryEngDirectly) {
sql.append("AND NVL(eng.DTIN, 0) = #{map.dtin} ");
} else {
sql.append("AND wt.DTIN = #{map.dtin} ");
}
} }
if (coenvwState != null && !coenvwState.isBlank()) { if (coenvwState != null && !coenvwState.isBlank()) {
paramMap.put("coenvwState", coenvwState); paramMap.put("coenvwState", coenvwState);
sql.append("AND CASE ") if (queryEngDirectly) {
.append("WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 ") sql.append("AND CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} ");
.append("WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ") } else {
.append("ELSE 0 END = #{map.coenvwState} "); sql.append("AND CASE ")
.append("WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 ")
.append("WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ")
.append("ELSE 0 END = #{map.coenvwState} ");
}
} }
sql.append(buildVmsstbprptOrderBySql(dataSourceRequest.getSort())); sql.append(buildVmsstbprptOrderBySql(dataSourceRequest.getSort()));
@ -493,7 +538,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
} else if ("rstcdStepSort".equals(field)) { } else if ("rstcdStepSort".equals(field)) {
orderColumns.add("NVL(eng.ORDER_INDEX, 999999) " + dir); orderColumns.add("NVL(eng.ORDER_INDEX, 999999) " + dir);
} else if ("siteStepSort".equals(field)) { } else if ("siteStepSort".equals(field)) {
orderColumns.add("NVL(wt.ORDER_INDEX, 999999) " + dir); // orderColumns.add("NVL(wt.ORDER_INDEX, 999999) " + dir);
} else if ("stnm".equals(field)) { } else if ("stnm".equals(field)) {
orderColumns.add("wt.STNM " + dir); orderColumns.add("wt.STNM " + dir);
} else if ("ennm".equals(field)) { } else if ("ennm".equals(field)) {