fix: 优化
This commit is contained in:
parent
d3d41cb3b6
commit
81b3b8b981
@ -368,7 +368,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"WHERE NVL(mab.IS_DELETED, 0) = 0 " +
|
"WHERE NVL(mab.IS_DELETED, 0) = 0 " +
|
||||||
" AND NVL(sab.IS_DELETED, 0) = 0 " +
|
" AND NVL(sab.IS_DELETED, 0) = 0 " +
|
||||||
" AND mab.CODE = 'common' " +
|
" AND mab.CODE = 'common' " +
|
||||||
" AND eng.BASE_ID = #{map.baseId} " +
|
" AND wq.BASE_ID = #{map.baseId} " +
|
||||||
" AND r.TM >= TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') " +
|
" AND r.TM >= TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') " +
|
||||||
" AND r.TM <= TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') " +
|
" AND r.TM <= TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') " +
|
||||||
"ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC " +
|
"ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC " +
|
||||||
@ -386,7 +386,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"WHERE NVL(mab.IS_DELETED, 0) = 0 " +
|
"WHERE NVL(mab.IS_DELETED, 0) = 0 " +
|
||||||
" AND NVL(sab.IS_DELETED, 0) = 0 " +
|
" AND NVL(sab.IS_DELETED, 0) = 0 " +
|
||||||
" AND mab.CODE = 'common' " +
|
" AND mab.CODE = 'common' " +
|
||||||
" AND eng.BASE_ID = #{map.baseId} " +
|
" AND wq.BASE_ID = #{map.baseId} " +
|
||||||
"ORDER BY r.TM DESC " +
|
"ORDER BY r.TM DESC " +
|
||||||
") WHERE ROWNUM = 1";
|
") WHERE ROWNUM = 1";
|
||||||
}
|
}
|
||||||
@ -412,7 +412,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
sql.append("AND mab.RVCD = #{map.rvcd} ");
|
sql.append("AND mab.RVCD = #{map.rvcd} ");
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotBlank(baseId)) {
|
if (StrUtil.isNotBlank(baseId)) {
|
||||||
sql.append("AND eng.BASE_ID = #{map.baseId} ");
|
sql.append("AND wq.BASE_ID = #{map.baseId} ");
|
||||||
}
|
}
|
||||||
sql.append("AND swr.TM IS NOT NULL ")
|
sql.append("AND swr.TM IS NOT NULL ")
|
||||||
.append("ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC, swr.TM DESC")
|
.append("ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC, swr.TM DESC")
|
||||||
@ -486,7 +486,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
sql.append("AND mab.RVCD = #{map.rvcd} ");
|
sql.append("AND mab.RVCD = #{map.rvcd} ");
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotBlank(baseId)) {
|
if (StrUtil.isNotBlank(baseId)) {
|
||||||
sql.append("AND eng.BASE_ID = #{map.baseId} ");
|
sql.append("AND wq.BASE_ID = #{map.baseId} ");
|
||||||
}
|
}
|
||||||
sql.append("ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC");
|
sql.append("ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC");
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
@ -551,9 +551,9 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
.append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
.append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||||
.append(" FROM SD_WQ_B_H t ")
|
.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_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_HYDROBASE hb ON hb.BASEID = t.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
|
||||||
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ")
|
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ")
|
||||||
.append(" AND hbrv.BASEID = eng.BASE_ID ")
|
.append(" AND hbrv.BASEID = t.BASE_ID ")
|
||||||
.append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ")
|
.append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND NVL(hbrv.ENABLED, 1) = 1 ")
|
.append(" AND NVL(hbrv.ENABLED, 1) = 1 ")
|
||||||
.append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ")
|
.append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ")
|
||||||
@ -581,29 +581,31 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
String groupField = "dtinType";
|
GroupingInfo[] groupInfos = loadOptions == null ? null : loadOptions.getGroup();
|
||||||
String groupColumn = "t.DTIN_TYPE";
|
StringBuilder baseSql = new StringBuilder();
|
||||||
String groupDir = "ASC";
|
baseSql.append("SELECT ")
|
||||||
if (CollUtil.isNotEmpty(dataSourceRequest.getGroup())) {
|
.append("NVL(t.IS_DELETED, 0) AS isDeleted, ")
|
||||||
DataSourceRequest.GroupDescriptor groupDescriptor = dataSourceRequest.getGroup().get(0);
|
.append("t.STTP AS sttpCode, ")
|
||||||
if (groupDescriptor != null && StrUtil.isNotBlank(groupDescriptor.getField())) {
|
.append("t.MWAY AS mway, ")
|
||||||
groupField = groupDescriptor.getField();
|
.append("t.DTIN_TYPE AS dtinType, ")
|
||||||
String mappedColumn = mapMsstbprptColumn(groupField);
|
.append("t.STCD AS stcd, ")
|
||||||
if (StrUtil.isNotBlank(mappedColumn)) {
|
.append("t.STNM AS stnm, ")
|
||||||
groupColumn = mappedColumn;
|
.append("t.FHSTCD AS fhstcd, ")
|
||||||
}
|
.append("t.DTIN AS dtin, ")
|
||||||
if ("desc".equalsIgnoreCase(groupDescriptor.getDir()) || "des".equalsIgnoreCase(groupDescriptor.getDir())) {
|
.append("t.BASE_ID AS baseId, ")
|
||||||
groupDir = "DESC";
|
.append("hb.BASENAME AS baseName, ")
|
||||||
}
|
.append("hb.ORDER_INDEX AS baseStepSort, ")
|
||||||
}
|
.append("eng.HBRVCD AS hbrvcd, ")
|
||||||
}
|
.append("hbrv.HBRVNM AS hbrvcdName, ")
|
||||||
|
.append("eng.ORDER_INDEX AS rstcdStepSort, ")
|
||||||
StringBuilder sql = new StringBuilder();
|
.append("t.ORDER_INDEX AS siteStepSort ")
|
||||||
sql.append("SELECT ")
|
|
||||||
.append(groupColumn).append(" AS ").append(groupField.toUpperCase()).append(", ")
|
|
||||||
.append("COUNT(*) AS COUNT_").append(groupField.toUpperCase()).append(" ")
|
|
||||||
.append("FROM SD_WQ_B_H t ")
|
.append("FROM SD_WQ_B_H t ")
|
||||||
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD ")
|
.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 = t.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 = t.BASE_ID ")
|
||||||
|
.append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ")
|
||||||
|
.append(" AND NVL(hbrv.ENABLED, 1) = 1 ")
|
||||||
.append("WHERE NVL(t.IS_DELETED, 0) = 0 ");
|
.append("WHERE NVL(t.IS_DELETED, 0) = 0 ");
|
||||||
|
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
@ -613,14 +615,17 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
new int[]{0}
|
new int[]{0}
|
||||||
);
|
);
|
||||||
if (StrUtil.isNotBlank(filterSql)) {
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
sql.append(" AND ").append(filterSql).append(" ");
|
baseSql.append(" AND ").append(filterSql).append(" ");
|
||||||
}
|
}
|
||||||
sql.append("GROUP BY ").append(groupColumn).append(" ")
|
|
||||||
.append("ORDER BY ").append(groupColumn).append(" ").append(groupDir);
|
|
||||||
|
|
||||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
String groupedSql = buildMsstbprptGroupSql(baseSql.toString(), groupInfos);
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, groupedSql, paramMap);
|
||||||
DataSourceResult result = new DataSourceResult();
|
DataSourceResult result = new DataSourceResult();
|
||||||
result.setData(toMsstbprptLegacyGroups(rows, groupField));
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
|
result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
|
} else {
|
||||||
|
result.setData(toLegacyGroupResult(new GroupHelper().group(rows, Arrays.asList(groupInfos)), 0));
|
||||||
|
}
|
||||||
result.setTotal((long) rows.size());
|
result.setTotal((long) rows.size());
|
||||||
result.setAggregates(new HashMap<>());
|
result.setAggregates(new HashMap<>());
|
||||||
return result;
|
return result;
|
||||||
@ -789,9 +794,9 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"t.DELETE_TIME AS deleteTime " +
|
"t.DELETE_TIME AS deleteTime " +
|
||||||
"FROM SD_WQ_B_H t " +
|
"FROM SD_WQ_B_H t " +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD " +
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD " +
|
||||||
"LEFT JOIN SD_HYDROBASE base ON base.BASEID = eng.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN SD_HYDROBASE base ON base.BASEID = t.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " +
|
||||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD " +
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD " +
|
||||||
" AND hbrv.BASEID = eng.BASE_ID " +
|
" AND hbrv.BASEID = t.BASE_ID " +
|
||||||
" AND NVL(hbrv.IS_DELETED, 0) = 0 " +
|
" AND NVL(hbrv.IS_DELETED, 0) = 0 " +
|
||||||
" AND NVL(hbrv.ENABLED, 1) = 1 " +
|
" AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||||
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
||||||
@ -929,7 +934,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"wq.STTP AS STTP_CODE " +
|
"wq.STTP AS STTP_CODE " +
|
||||||
"FROM SD_WQ_B_H wq " +
|
"FROM SD_WQ_B_H wq " +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " +
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " +
|
||||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||||
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
||||||
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
||||||
"LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " +
|
||||||
@ -1341,7 +1346,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"siteAlong.SORT AS SITESTEPSORT " +
|
"siteAlong.SORT AS SITESTEPSORT " +
|
||||||
"FROM SD_WQ_B_H wq " +
|
"FROM SD_WQ_B_H wq " +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " +
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " +
|
||||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||||
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
||||||
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
||||||
@ -1928,7 +1933,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
case "stcd" -> "t.STCD";
|
case "stcd" -> "t.STCD";
|
||||||
case "stnm" -> "t.STNM";
|
case "stnm" -> "t.STNM";
|
||||||
case "fhstcd" -> "t.FHSTCD";
|
case "fhstcd" -> "t.FHSTCD";
|
||||||
case "baseId" -> "eng.BASE_ID";
|
case "baseId" -> "t.BASE_ID";
|
||||||
case "dtin" -> "t.DTIN";
|
case "dtin" -> "t.DTIN";
|
||||||
default -> null;
|
default -> null;
|
||||||
};
|
};
|
||||||
@ -2045,6 +2050,36 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildMsstbprptGroupSql(String baseSql, GroupingInfo[] groupInfos) {
|
||||||
|
if (groupInfos == null || groupInfos.length == 0) {
|
||||||
|
return baseSql;
|
||||||
|
}
|
||||||
|
List<String> groupFields = new ArrayList<>();
|
||||||
|
List<String> orderByItems = new ArrayList<>();
|
||||||
|
for (GroupingInfo item : groupInfos) {
|
||||||
|
if (item == null || StrUtil.isBlank(item.getSelector())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
groupFields.add(item.getSelector());
|
||||||
|
String dir = Boolean.TRUE.equals(item.getDesc()) ? "DESC" : "ASC";
|
||||||
|
orderByItems.add(item.getSelector() + " " + dir);
|
||||||
|
}
|
||||||
|
if (groupFields.isEmpty()) {
|
||||||
|
return baseSql;
|
||||||
|
}
|
||||||
|
StringBuilder sql = new StringBuilder("SELECT ");
|
||||||
|
sql.append(String.join(", ", groupFields));
|
||||||
|
for (String groupField : groupFields) {
|
||||||
|
sql.append(", COUNT(*) AS count_").append(groupField).append(" ");
|
||||||
|
}
|
||||||
|
sql.append("FROM (").append(baseSql).append(") T ")
|
||||||
|
.append("GROUP BY ").append(String.join(", ", groupFields)).append(" ");
|
||||||
|
if (!orderByItems.isEmpty()) {
|
||||||
|
sql.append("ORDER BY ").append(String.join(", ", orderByItems));
|
||||||
|
}
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
private String buildMsstbprptDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
private String buildMsstbprptDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
if (CollUtil.isEmpty(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 ";
|
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 ";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user