fix: 优化逻辑
This commit is contained in:
parent
2a20b09b6f
commit
30d0522a9c
@ -7,6 +7,7 @@ import com.yfd.platform.common.CommonConstant;
|
|||||||
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
|
import com.yfd.platform.common.Group;
|
||||||
import com.yfd.platform.common.GroupHelper;
|
import com.yfd.platform.common.GroupHelper;
|
||||||
import com.yfd.platform.common.GroupingInfo;
|
import com.yfd.platform.common.GroupingInfo;
|
||||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||||
@ -47,9 +48,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
RequestHolder.getHttpServletRequest().getParameter(CommonConstant.CALCULATE_FLAG)
|
RequestHolder.getHttpServletRequest().getParameter(CommonConstant.CALCULATE_FLAG)
|
||||||
);
|
);
|
||||||
|
|
||||||
StringBuilder sql = new StringBuilder(buildEnvWqDataBaseSql(calculated));
|
StringBuilder sql = new StringBuilder(buildEnvWqProcessBaseSql(calculated));
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
String filterSql = buildEnvWqDataFilterCondition(
|
if (calculated) {
|
||||||
|
paramMap.put("recordUser", SecurityUtils.getUserId());
|
||||||
|
}
|
||||||
|
String filterSql = buildEnvWqFilterCondition(
|
||||||
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
|
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
|
||||||
paramMap,
|
paramMap,
|
||||||
new int[]{0}
|
new int[]{0}
|
||||||
@ -62,27 +66,27 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
String groupBy = KendoUtil.getGroupBy(dataSourceRequest);
|
String groupBy = KendoUtil.getGroupBy(dataSourceRequest);
|
||||||
GroupingInfo[] groupInfos = loadOptions.getGroup();
|
GroupingInfo[] groupInfos = loadOptions.getGroup();
|
||||||
if (StrUtil.isNotBlank(groupBy) && groupInfos != null && groupInfos.length > 0) {
|
if (StrUtil.isNotBlank(groupBy) && groupInfos != null && groupInfos.length > 0) {
|
||||||
String groupedSql = buildEnvWqDataGroupSql(sql.toString(), groupBy, groupInfos);
|
String groupedSql = buildEnvWqGroupSql(sql.toString(), dataSourceRequest, groupInfos);
|
||||||
List<Map<String, Object>> list = microservicDynamicSQLMapper.pageAllList(null, groupedSql, paramMap);
|
List<Map<String, Object>> list = microservicDynamicSQLMapper.pageAllList(null, groupedSql, paramMap);
|
||||||
|
list = filterInvalidEnvWqGroupRows(list, groupInfos);
|
||||||
DataSourceResult result = new DataSourceResult();
|
DataSourceResult result = new DataSourceResult();
|
||||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
result.setData(new GroupHelper().faltGroup(list, Arrays.asList(groupInfos)));
|
result.setData(new GroupHelper().faltGroup(list, Arrays.asList(groupInfos)));
|
||||||
} else {
|
} else {
|
||||||
result.setData(new GroupHelper().group(list, Arrays.asList(groupInfos)));
|
result.setData(toLegacyGroupResult(new GroupHelper().group(list, Arrays.asList(groupInfos)), 0));
|
||||||
}
|
}
|
||||||
result.setTotal(0L);
|
result.setTotal(0L);
|
||||||
result.setAggregates(new HashMap<>());
|
result.setAggregates(new HashMap<>());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
sql.append(buildEnvWqDataOrderBySql(dataSourceRequest.getSort()));
|
sql.append(buildEnvWqOrderBySql(dataSourceRequest.getSort()));
|
||||||
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
|
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
|
||||||
Page<?> page = pageInfo.getHasPageInfo() ? pageInfo.getPage() : null;
|
Page<?> page = pageInfo.getHasPageInfo() ? pageInfo.getPage() : null;
|
||||||
List<EnvWqDataVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EnvWqDataVo.class);
|
List<EnvWqVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EnvWqVo.class);
|
||||||
fillEnvWqDataDerivedFields(list);
|
fillEnvWqDerivedFields(list, calculated);
|
||||||
fillEnvWqDataLimit(list);
|
|
||||||
|
|
||||||
DataSourceResult<EnvWqDataVo> result = new DataSourceResult<>();
|
DataSourceResult<EnvWqVo> result = new DataSourceResult<>();
|
||||||
result.setData(list);
|
result.setData(list);
|
||||||
result.setTotal(page != null ? page.getTotal() : list.size());
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
result.setAggregates(new HashMap<>());
|
result.setAggregates(new HashMap<>());
|
||||||
@ -940,10 +944,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
case "type" -> "T.TYPE";
|
case "type" -> "T.TYPE";
|
||||||
case "sttype" -> "T.STTYPE";
|
case "sttype" -> "T.STTYPE";
|
||||||
case "sfdb" -> "T.SFDB";
|
case "sfdb" -> "T.SFDB";
|
||||||
|
case "dtinType" -> "T.DTINTYPE";
|
||||||
case "rstcdStepSort" -> "T.RSTCDSTEPSORT";
|
case "rstcdStepSort" -> "T.RSTCDSTEPSORT";
|
||||||
case "baseStepSort" -> "T.BASESTEPSORT";
|
case "baseStepSort" -> "T.BASESTEPSORT";
|
||||||
case "rvcdStepSort" -> "T.RVCDSTEPSORT";
|
case "rvcdStepSort" -> "T.RVCDSTEPSORT";
|
||||||
case "siteStepSort" -> "T.SITESTEPSORT";
|
case "siteStepSort" -> "T.SITESTEPSORT";
|
||||||
|
case "drMonth" -> "T.DR_MONTH";
|
||||||
case "drYear" -> "T.DR_YEAR";
|
case "drYear" -> "T.DR_YEAR";
|
||||||
case "wqSfdbHy" -> "T.WQ_SFDB_HY";
|
case "wqSfdbHy" -> "T.WQ_SFDB_HY";
|
||||||
case "wqSfdbHn" -> "T.WQ_SFDB_HN";
|
case "wqSfdbHn" -> "T.WQ_SFDB_HN";
|
||||||
@ -954,6 +960,84 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Map<String, Object>> filterInvalidEnvWqGroupRows(List<Map<String, Object>> rows,
|
||||||
|
GroupingInfo[] groupInfos) {
|
||||||
|
if (rows == null || rows.isEmpty() || groupInfos == null || groupInfos.length == 0) {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
boolean containsBaseGroup = false;
|
||||||
|
for (GroupingInfo groupInfo : groupInfos) {
|
||||||
|
if (groupInfo == null || StrUtil.isBlank(groupInfo.getSelector())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String selector = groupInfo.getSelector();
|
||||||
|
if ("baseStepSort".equals(selector) || "baseId".equals(selector) || "baseName".equals(selector)) {
|
||||||
|
containsBaseGroup = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!containsBaseGroup) {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> filtered = new ArrayList<>();
|
||||||
|
for (Map<String, Object> row : rows) {
|
||||||
|
Object baseStepSort = readGroupValue(row, "baseStepSort");
|
||||||
|
Object baseId = readGroupValue(row, "baseId");
|
||||||
|
Object baseName = readGroupValue(row, "baseName");
|
||||||
|
if (!isBlankGroupValue(baseStepSort) || !isBlankGroupValue(baseId) || !isBlankGroupValue(baseName)) {
|
||||||
|
filtered.add(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return filtered;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Map<String, Object>> toLegacyGroupResult(List<Group> groups, int depth) {
|
||||||
|
if (groups == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> result = new ArrayList<>();
|
||||||
|
for (Group group : groups) {
|
||||||
|
if (group == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Map<String, Object> item = new LinkedHashMap<>();
|
||||||
|
if (depth > 0 && group.getField() != null) {
|
||||||
|
item.put("field", group.getField());
|
||||||
|
}
|
||||||
|
item.put("key", group.getKey());
|
||||||
|
item.put("keyName", group.getKeyName());
|
||||||
|
item.put("keyExt", group.getKeyExt() == null ? new HashMap<>() : group.getKeyExt());
|
||||||
|
item.put("count", group.getCount());
|
||||||
|
item.put("summary", group.getSummary() == null ? new Object[0] : group.getSummary());
|
||||||
|
item.put("aggregates", group.getAggregates() == null ? new HashMap<>() : group.getAggregates());
|
||||||
|
if (group.getItems() != null && !group.getItems().isEmpty() && group.getItems().get(0) instanceof Group) {
|
||||||
|
item.put("items", toLegacyGroupResult(group.getItems(), depth + 1));
|
||||||
|
} else {
|
||||||
|
item.put("items", group.getItems());
|
||||||
|
}
|
||||||
|
result.add(item);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Object readGroupValue(Map<String, Object> row, String field) {
|
||||||
|
Object value = row.get(field);
|
||||||
|
if (value == null) {
|
||||||
|
value = row.get(field.toUpperCase());
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isBlankGroupValue(Object value) {
|
||||||
|
if (value == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (value instanceof String str) {
|
||||||
|
return StrUtil.isBlank(str);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private String buildEnvWqGroupSql(String baseSql,
|
private String buildEnvWqGroupSql(String baseSql,
|
||||||
DataSourceRequest dataSourceRequest,
|
DataSourceRequest dataSourceRequest,
|
||||||
GroupingInfo[] groupInfos) {
|
GroupingInfo[] groupInfos) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user