diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java index 883ca95a..a3357165 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java @@ -544,6 +544,43 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { @Override public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM SD_WQ_B_H t ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.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 ") + .append(" AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ") + .append(" AND NVL(hbrv.ENABLED, 1) = 1 ") + .append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ") + .append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ") + .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = t.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ") + .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildMsstbprptFilterCondition( + dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, + new int[]{0} + ); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildMsstbprptDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WqBaseInfoVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + String groupField = "dtinType"; String groupColumn = "t.DTIN_TYPE"; String groupDir = "ASC"; @@ -1890,12 +1927,80 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "dtinType" -> "t.DTIN_TYPE"; case "stcd" -> "t.STCD"; case "stnm" -> "t.STNM"; + case "fhstcd" -> "t.FHSTCD"; case "baseId" -> "eng.BASE_ID"; case "dtin" -> "t.DTIN"; default -> null; }; } + private String buildMsstbprptDetailSelectSql(List selectFields) { + Map selectMap = new LinkedHashMap<>(); + selectMap.put("stcd", "t.STCD AS stcd"); + selectMap.put("stnm", "t.STNM AS stnm"); + selectMap.put("tm", "t.TM AS tm"); + selectMap.put("sttp", "t.STTP AS sttp"); + selectMap.put("lgtd", "t.LGTD AS lgtd"); + selectMap.put("lttd", "t.LTTD AS lttd"); + selectMap.put("elev", "t.ELEV AS elev"); + selectMap.put("stlc", "t.STLC AS stlc"); + selectMap.put("wwqtg", "t.WWQTG AS wwqtg"); + selectMap.put("wqtype", "t.WQTYPE AS wqtype"); + selectMap.put("jcdt", "t.JCDT AS jcdt"); + selectMap.put("wddt", "t.WDDT AS wddt"); + selectMap.put("bldsttCode", "t.BLDSTT_CODE AS bldsttCode"); + selectMap.put("introduce", "t.INTRODUCE AS introduce"); + selectMap.put("logo", "t.LOGO AS logo"); + selectMap.put("inffile", "t.INFFILE AS inffile"); + selectMap.put("usfl", "t.USFL AS usfl"); + selectMap.put("dtin", "t.DTIN AS dtin"); + selectMap.put("dtinSrc", "t.DTIN_SRC AS dtinSrc"); + selectMap.put("dtinType", "t.DTIN_TYPE AS dtinType"); + selectMap.put("dtinTm", "t.DTIN_TM AS dtinTm"); + selectMap.put("mway", "t.MWAY AS mway"); + selectMap.put("stindx", "t.STINDX AS stindx"); + selectMap.put("orderIndex", "t.ORDER_INDEX AS orderIndex"); + selectMap.put("rstcd", "t.RSTCD AS rstcd"); + selectMap.put("ennm", "eng.ENNM AS ennm"); + selectMap.put("baseId", "eng.BASE_ID AS baseId"); + selectMap.put("baseName", "hb.BASENAME AS baseName"); + selectMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); + selectMap.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName"); + selectMap.put("rvcd", "eng.RVCD AS rvcd"); + selectMap.put("rvcdName", "rv.RVNM AS rvcdName"); + selectMap.put("addvcd", "eng.ADDVCD AS addvcd"); + selectMap.put("addvcdName", "addv.ADDVNM AS addvcdName"); + selectMap.put("fhstcd", "t.FHSTCD AS fhstcd"); + selectMap.put("ispro", "t.ISPRO AS ispro"); + selectMap.put("dtfrqcy", "t.DTFRQCY AS dtfrqcy"); + selectMap.put("remark", "t.REMARK AS remark"); + selectMap.put("vlsr", "t.VLSR AS vlsr"); + selectMap.put("vlsrTm", "t.VLSR_TM AS vlsrTm"); + selectMap.put("recordUser", "t.RECORD_USER AS recordUser"); + selectMap.put("recordTime", "t.RECORD_TIME AS recordTime"); + selectMap.put("modifyUser", "t.MODIFY_USER AS modifyUser"); + selectMap.put("modifyTime", "t.MODIFY_TIME AS modifyTime"); + selectMap.put("isDeleted", "t.IS_DELETED AS isDeleted"); + selectMap.put("deleteUser", "t.DELETE_USER AS deleteUser"); + selectMap.put("deleteTime", "t.DELETE_TIME AS deleteTime"); + + if (CollUtil.isEmpty(selectFields)) { + return String.join(", ", selectMap.values()); + } + + List actualColumns = new ArrayList<>(); + for (String selectField : selectFields) { + String column = selectMap.get(selectField); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(selectMap.values()); + } + return String.join(", ", actualColumns); + } + private List> toMsstbprptLegacyGroups(List> rows, String groupField) { List> result = new ArrayList<>(); if (rows == null) { @@ -1940,6 +2045,46 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + private String buildMsstbprptDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + } + List orderColumns = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) { + continue; + } + String column = switch (sortDescriptor.getField()) { + case "stcd" -> "t.STCD"; + case "stnm" -> "t.STNM"; + case "tm" -> "t.TM"; + case "sttp" -> "t.STTP"; + case "jcdt" -> "t.JCDT"; + case "rstcd" -> "t.RSTCD"; + case "ennm" -> "eng.ENNM"; + case "baseId" -> "eng.BASE_ID"; + case "baseName" -> "hb.BASENAME"; + case "hbrvcd" -> "eng.HBRVCD"; + case "rvcd" -> "eng.RVCD"; + case "fhstcd" -> "t.FHSTCD"; + case "mway" -> "t.MWAY"; + case "dtin" -> "t.DTIN"; + case "dtinType" -> "t.DTIN_TYPE"; + case "orderIndex" -> "t.ORDER_INDEX"; + default -> null; + }; + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; + orderColumns.add(column + " " + dir + " NULLS LAST"); + } + if (orderColumns.isEmpty()) { + return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + } + return " ORDER BY " + String.join(", ", orderColumns); + } + private String buildEnvWqOrderBySql(List sortList) { if (sortList == null || sortList.isEmpty()) { return "";