fix: 优化生态调查逻辑
This commit is contained in:
parent
ed71491806
commit
8e6e958886
@ -235,20 +235,31 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
@Override
|
@Override
|
||||||
public DataSourceResult<WeVmsstbprptVo> getVmsstbprptList(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<WeVmsstbprptVo> getVmsstbprptList(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
GroupingInfo[] groups = loadOptions == null ? null : loadOptions.getGroup();
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
|
||||||
StringBuilder sql = new StringBuilder();
|
|
||||||
sql.append("SELECT ")
|
|
||||||
.append(buildWeVmsstbprptSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
|
||||||
.append(" FROM (")
|
|
||||||
.append(buildWeVmsstbprptViewSql())
|
|
||||||
.append(") t WHERE 1 = 1 ");
|
|
||||||
|
|
||||||
String filterSql = buildWeVmsstbprptFilterCondition(
|
String filterSql = buildWeVmsstbprptFilterCondition(
|
||||||
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
|
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
|
||||||
paramMap,
|
paramMap,
|
||||||
new int[]{0}
|
new int[]{0}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (groups != null && groups.length > 0) {
|
||||||
|
return buildGroupedVmsstbprptResult(dataSourceRequest, groups, filterSql, paramMap);
|
||||||
|
}
|
||||||
|
return buildDetailVmsstbprptResult(dataSourceRequest, loadOptions, filterSql, paramMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<WeVmsstbprptVo> buildDetailVmsstbprptResult(DataSourceRequest dataSourceRequest,
|
||||||
|
DataSourceLoadOptionsBase loadOptions,
|
||||||
|
String filterSql,
|
||||||
|
Map<String, Object> paramMap) {
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(buildWeVmsstbprptSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
|
||||||
|
.append(" FROM (")
|
||||||
|
.append(buildWeVmsstbprptViewSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
if (StrUtil.isNotBlank(filterSql)) {
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
sql.append("AND ").append(filterSql).append(" ");
|
sql.append("AND ").append(filterSql).append(" ");
|
||||||
}
|
}
|
||||||
@ -270,6 +281,95 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<WeVmsstbprptVo> buildGroupedVmsstbprptResult(DataSourceRequest dataSourceRequest,
|
||||||
|
GroupingInfo[] groups,
|
||||||
|
String filterSql,
|
||||||
|
Map<String, Object> paramMap) {
|
||||||
|
List<DataSourceRequest.GroupDescriptor> groupDescriptors = dataSourceRequest == null ? null : dataSourceRequest.getGroup();
|
||||||
|
List<String> selectItems = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(groupDescriptors)) {
|
||||||
|
for (DataSourceRequest.GroupDescriptor descriptor : groupDescriptors) {
|
||||||
|
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapWeVmsstbprptColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
selectItems.add(column + " AS " + descriptor.getField());
|
||||||
|
selectItems.add("COUNT(1) AS count_" + descriptor.getField());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (selectItems.isEmpty()) {
|
||||||
|
selectItems.add("t.sttpCode AS sttpCode");
|
||||||
|
selectItems.add("COUNT(1) AS count_sttpCode");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(String.join(", ", selectItems))
|
||||||
|
.append(" FROM (")
|
||||||
|
.append(buildWeVmsstbprptViewSql())
|
||||||
|
.append(") t ")
|
||||||
|
.append("WHERE 1 = 1 ");
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> groupByColumns = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(groupDescriptors)) {
|
||||||
|
for (DataSourceRequest.GroupDescriptor descriptor : groupDescriptors) {
|
||||||
|
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapWeVmsstbprptColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isNotBlank(column)) {
|
||||||
|
groupByColumns.add(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!groupByColumns.isEmpty()) {
|
||||||
|
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns));
|
||||||
|
} else {
|
||||||
|
sql.append(" GROUP BY t.sttpCode ");
|
||||||
|
}
|
||||||
|
sql.append(buildWeVmsstbprptGroupOrderBySql(groupDescriptors));
|
||||||
|
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||||
|
DataSourceResult<WeVmsstbprptVo> result = new DataSourceResult<>();
|
||||||
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
|
result.setData((List<WeVmsstbprptVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groups)));
|
||||||
|
result.setTotal((long) rows.size());
|
||||||
|
} else {
|
||||||
|
result.setData((List<WeVmsstbprptVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groups)));
|
||||||
|
result.setTotal((long) rows.size());
|
||||||
|
}
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildWeVmsstbprptGroupOrderBySql(List<DataSourceRequest.GroupDescriptor> groups) {
|
||||||
|
if (CollUtil.isEmpty(groups)) {
|
||||||
|
return " ORDER BY t.sttpCode ASC";
|
||||||
|
}
|
||||||
|
List<String> orderItems = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.GroupDescriptor group : groups) {
|
||||||
|
if (group == null || StrUtil.isBlank(group.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapWeVmsstbprptColumn(group.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String direction = "desc".equalsIgnoreCase(group.getDir()) ? "DESC" : "ASC";
|
||||||
|
orderItems.add(column + " " + direction);
|
||||||
|
}
|
||||||
|
if (orderItems.isEmpty()) {
|
||||||
|
return " ORDER BY t.sttpCode ASC";
|
||||||
|
}
|
||||||
|
return " ORDER BY " + String.join(", ", orderItems);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSourceResult<WeWvaYearQgcVo> getWvaDefaultYearList(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<WeWvaYearQgcVo> getWvaDefaultYearList(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
@ -1223,7 +1323,7 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
.append(" MAX(t.tm) AS latestTm ")
|
.append(" MAX(t.tm) AS latestTm ")
|
||||||
.append(" FROM ( ")
|
.append(" FROM ( ")
|
||||||
.append(" SELECT w.STCD AS stcd, a.NAME AS anm, MAX(w.TM) AS tm ")
|
.append(" SELECT w.STCD AS stcd, a.NAME AS anm, MAX(w.TM) AS tm ")
|
||||||
.append(" FROM SD_WVA_R w ")
|
.append(" FROM SD_ANML_R w ")
|
||||||
.append(" INNER JOIN SD_ANIMALDICTORY_B a ON a.ID = w.ANIMAL_ID ")
|
.append(" INNER JOIN SD_ANIMALDICTORY_B a ON a.ID = w.ANIMAL_ID ")
|
||||||
.append(" WHERE NVL(w.IS_DELETED, 0) = 0 ")
|
.append(" WHERE NVL(w.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND NVL(a.IS_DELETED, 0) = 0 ")
|
.append(" AND NVL(a.IS_DELETED, 0) = 0 ")
|
||||||
@ -1247,7 +1347,7 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
.append(" GROUP BY t.stcd ")
|
.append(" GROUP BY t.stcd ")
|
||||||
.append(") agg ON agg.stcd = ai.STCD ")
|
.append(") agg ON agg.stcd = ai.STCD ")
|
||||||
.append("WHERE NVL(ai.IS_DELETED, 0) = 0 ")
|
.append("WHERE NVL(ai.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND ai.STTP = 'WVA' ")
|
// .append(" AND ai.STTP = 'WVA' ")
|
||||||
.append(" AND ai.LGTD IS NOT NULL ");
|
.append(" AND ai.LGTD IS NOT NULL ");
|
||||||
if (StrUtil.isNotBlank(baseId)) {
|
if (StrUtil.isNotBlank(baseId)) {
|
||||||
paramMap.put("weAnimalPointBaseId", baseId);
|
paramMap.put("weAnimalPointBaseId", baseId);
|
||||||
@ -1347,7 +1447,7 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
"aim.STCD AS stcd, aim.STNM AS stnm, " +
|
"aim.STCD AS stcd, aim.STNM AS stnm, " +
|
||||||
"MAX(w.TM) AS tm, TO_CHAR(MAX(w.TM), 'yyyy') AS yr, " +
|
"MAX(w.TM) AS tm, TO_CHAR(MAX(w.TM), 'yyyy') AS yr, " +
|
||||||
"COUNT(*) AS acnt " +
|
"COUNT(*) AS acnt " +
|
||||||
"FROM SD_WVA_R w " +
|
"FROM SD_ANML_R w " +
|
||||||
"INNER JOIN SD_ANIMALDICTORY_B a ON a.ID = w.ANIMAL_ID " +
|
"INNER JOIN SD_ANIMALDICTORY_B a ON a.ID = w.ANIMAL_ID " +
|
||||||
" AND NVL(a.IS_DELETED, 0) = 0 " +
|
" AND NVL(a.IS_DELETED, 0) = 0 " +
|
||||||
" AND NVL(a.ENABLE, 1) = 1 " +
|
" AND NVL(a.ENABLE, 1) = 1 " +
|
||||||
@ -3735,25 +3835,24 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
|
|
||||||
private String buildWeVmsstbprptViewSql() {
|
private String buildWeVmsstbprptViewSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"ai.STCD AS id, " +
|
"src.STCD AS id, " +
|
||||||
"ai.STTP AS sttpCode, " +
|
"src.STTP_CODE AS sttpCode, " +
|
||||||
"ai.STLC AS stlc, " +
|
"src.STLC AS stlc, " +
|
||||||
"ai.STCD AS stcd, " +
|
"src.STCD AS stcd, " +
|
||||||
"ai.STNM AS stnm, " +
|
"src.STNM AS stnm, " +
|
||||||
"ai.BOX AS box, " +
|
"src.BOX AS box, " +
|
||||||
"ai.RSTCD AS rstcd, " +
|
"src.RSTCD AS rstcd, " +
|
||||||
"eng.ENNM AS ennm, " +
|
"src.ENNM AS ennm, " +
|
||||||
"ai.BASE_ID AS baseId, " +
|
"src.BASE_ID AS baseId, " +
|
||||||
"hb.BASENAME AS baseName, " +
|
"src.BASE_NAME AS baseName, " +
|
||||||
"ai.HBRVCD AS hbrvcd, " +
|
"src.HBRVCD AS hbrvcd, " +
|
||||||
"ai.RVCD AS rvcd, " +
|
"src.RVCD AS rvcd, " +
|
||||||
"ai.ORDER_INDEX AS orderIndex, " +
|
"src.ORDER_INDEX AS orderIndex, " +
|
||||||
"ai.LGTD AS lgtd, " +
|
"src.LGTD AS lgtd, " +
|
||||||
"ai.LTTD AS lttd " +
|
"src.LTTD AS lttd " +
|
||||||
"FROM SD_AIMONITOR_B_H ai " +
|
"FROM V_MS_STBPRP_T src " +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = ai.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
"WHERE 1=1 " +
|
||||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = ai.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
"AND NVL(src.IS_DELETED, 0) = 0";
|
||||||
"WHERE NVL(ai.IS_DELETED, 0) = 0";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildWeWvaViewSql() {
|
private String buildWeWvaViewSql() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user