fix: 优化过鱼设施接口
This commit is contained in:
parent
c56938e881
commit
0dc8ef3cef
@ -222,40 +222,32 @@ public class FpRunServiceImpl implements FpRunService {
|
||||
private DataSourceResult<FpTableVo> queryQgcFpssTableGroupList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions,
|
||||
String stcdFilter) {
|
||||
List<DataSourceRequest.GroupDescriptor> groups = dataSourceRequest.getGroup();
|
||||
GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup();
|
||||
|
||||
StringBuilder sql = new StringBuilder("SELECT ");
|
||||
List<String> selectItems = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapQgcFpssTableColumn(descriptor.getField());
|
||||
if (StrUtil.isBlank(column)) {
|
||||
continue;
|
||||
}
|
||||
selectItems.add(column + " AS " + descriptor.getField().toUpperCase());
|
||||
selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase());
|
||||
if (CollUtil.isNotEmpty(descriptor.getAggregates())) {
|
||||
for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) {
|
||||
String aggregateColumn = mapQgcFpssTableColumn(aggregate.getField());
|
||||
if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) {
|
||||
continue;
|
||||
}
|
||||
String aggregateSql = buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField());
|
||||
if (StrUtil.isNotBlank(aggregateSql)) {
|
||||
selectItems.add(aggregateSql);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (selectItems.isEmpty()) {
|
||||
selectItems.add("t.YR AS YR");
|
||||
selectItems.add("COUNT(*) AS COUNT_YR");
|
||||
}
|
||||
|
||||
sql.append(String.join(", ", selectItems))
|
||||
sql.append("CAST(NULL AS VARCHAR2(36)) AS stcd, ")
|
||||
.append("CAST(NULL AS VARCHAR2(255)) AS stnm, ")
|
||||
.append("CAST(NULL AS VARCHAR2(19)) AS tm, ")
|
||||
.append("t.ftp AS ftp, ")
|
||||
.append("CAST(NULL AS VARCHAR2(200)) AS fishId, ")
|
||||
.append("MAX(t.fsz) AS fsz, ")
|
||||
.append("TO_CHAR(SUM(TO_NUMBER(NVL(t.fcnt, '0')))) AS fcnt, ")
|
||||
.append("CAST(NULL AS VARCHAR2(50)) AS length, ")
|
||||
.append("CAST(NULL AS VARCHAR2(50)) AS width, ")
|
||||
.append("CAST(NULL AS VARCHAR2(50)) AS fishspeed, ")
|
||||
.append("CAST(NULL AS VARCHAR2(20)) AS direction, ")
|
||||
.append("CAST(NULL AS VARCHAR2(20)) AS directionName, ")
|
||||
.append("CAST(NULL AS VARCHAR2(50)) AS temperature, ")
|
||||
.append("CAST(NULL AS VARCHAR2(50)) AS speed, ")
|
||||
.append("CAST(NULL AS VARCHAR2(255)) AS firstimgurl, ")
|
||||
.append("CAST(NULL AS VARCHAR2(255)) AS videourl, ")
|
||||
.append("t.yr AS yr, ")
|
||||
.append("CAST(NULL AS VARCHAR2(50)) AS fwet, ")
|
||||
.append("CAST(NULL AS VARCHAR2(1000)) AS fid, ")
|
||||
.append("CAST(NULL AS NUMBER(18,0)) AS upFcnt, ")
|
||||
.append("CAST(NULL AS NUMBER(18,0)) AS downFcnt, ")
|
||||
.append("CAST(NULL AS VARCHAR2(64)) AS dataSrc, ")
|
||||
.append("CAST(NULL AS NUMBER(3,0)) AS mway, ")
|
||||
.append("CAST(NULL AS VARCHAR2(255)) AS picpth, ")
|
||||
.append("CAST(NULL AS VARCHAR2(255)) AS vdpth ")
|
||||
.append("FROM (")
|
||||
.append(buildQgcFpssTableCoreSql())
|
||||
.append(") t WHERE 1 = 1 ");
|
||||
@ -267,29 +259,14 @@ public class FpRunServiceImpl implements FpRunService {
|
||||
sql.append(" AND ").append(filterSql).append(" ");
|
||||
}
|
||||
|
||||
List<String> groupByColumns = new ArrayList<>();
|
||||
for (DataSourceRequest.GroupDescriptor descriptor : groups) {
|
||||
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String column = mapQgcFpssTableColumn(descriptor.getField());
|
||||
if (StrUtil.isNotBlank(column)) {
|
||||
groupByColumns.add(column);
|
||||
}
|
||||
}
|
||||
if (!groupByColumns.isEmpty()) {
|
||||
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" ");
|
||||
}
|
||||
sql.append(buildQgcFpssTableGroupOrderBySql(groups));
|
||||
sql.append(" GROUP BY t.yr, t.ftp ");
|
||||
sql.append(buildQgcFpssTableAggregateOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||
|
||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||
List<FpTableVo> rows = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FpTableVo.class);
|
||||
DataSourceResult<FpTableVo> result = new DataSourceResult<>();
|
||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||
result.setData((List<FpTableVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||
} else {
|
||||
result.setData((List<FpTableVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||
}
|
||||
result.setTotal(0L);
|
||||
result.setData(rows);
|
||||
result.setTotal(page != null ? page.getTotal() : rows.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
@ -664,6 +641,28 @@ public class FpRunServiceImpl implements FpRunService {
|
||||
return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders);
|
||||
}
|
||||
|
||||
private String buildQgcFpssTableAggregateOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||
if (CollUtil.isEmpty(sortList)) {
|
||||
return " ORDER BY yr DESC";
|
||||
}
|
||||
List<String> orderColumns = new ArrayList<>();
|
||||
for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) {
|
||||
if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) {
|
||||
continue;
|
||||
}
|
||||
String field = sortDescriptor.getField();
|
||||
if (!"yr".equals(field) && !"ftp".equals(field) && !"fsz".equals(field) && !"fcnt".equals(field)) {
|
||||
continue;
|
||||
}
|
||||
String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC";
|
||||
orderColumns.add(field + " " + dir + " NULLS LAST");
|
||||
}
|
||||
if (orderColumns.isEmpty()) {
|
||||
return " ORDER BY yr DESC";
|
||||
}
|
||||
return " ORDER BY " + String.join(", ", orderColumns);
|
||||
}
|
||||
|
||||
private DataSourceResult<FpSdfpssrVo> queryQgcSdfpssrDetailList(DataSourceRequest dataSourceRequest,
|
||||
DataSourceLoadOptionsBase loadOptions) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user