fix: 水质站基础数据查询优化
This commit is contained in:
parent
704a9c3ff2
commit
0d1abdf94b
@ -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<String, Object> 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<WqBaseInfoVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WqBaseInfoVo.class);
|
||||
DataSourceResult<WqBaseInfoVo> 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<String> selectFields) {
|
||||
Map<String, String> 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<String> 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<Map<String, Object>> toMsstbprptLegacyGroups(List<Map<String, Object>> rows, String groupField) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
if (rows == null) {
|
||||
@ -1940,6 +2045,46 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private String buildMsstbprptDetailOrderBySql(List<DataSourceRequest.SortDescriptor> 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<String> 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<DataSourceRequest.SortDescriptor> sortList) {
|
||||
if (sortList == null || sortList.isEmpty()) {
|
||||
return "";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user