feat: 全过程沿程鱼类变化情况有数据的流域和年份
This commit is contained in:
parent
b329d475c8
commit
5bf3cf0ee9
@ -26,4 +26,10 @@ public class WeFishController {
|
||||
public ResponseResult getQgcWeFishTKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(weFishService.getQgcWeFishTKendoListCust(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/we/fisht/year/qgc/GetKendoListCust")
|
||||
@Operation(summary = "全过程沿程鱼类变化情况有数据的流域和年份")
|
||||
public ResponseResult getQgcFishStaticsYearList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(weFishService.getQgcFishStaticsYearList(dataSourceRequest));
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package com.yfd.platform.qgc_env.wte.entity.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "沿程鱼类有数据流域年份")
|
||||
public class WeRvcdYearVo {
|
||||
|
||||
@Schema(description = "河段编码")
|
||||
private String hbrvcd;
|
||||
|
||||
@Schema(description = "年份")
|
||||
private String yr;
|
||||
}
|
||||
@ -4,7 +4,12 @@ import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishTQgcVo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface WeFishService {
|
||||
|
||||
DataSourceResult<WeFishTQgcVo> getQgcWeFishTKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<Map<String, List<String>>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.yfd.platform.common.GroupHelper;
|
||||
import com.yfd.platform.common.GroupingInfo;
|
||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishTQgcVo;
|
||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeRvcdYearVo;
|
||||
import com.yfd.platform.qgc_env.wte.service.WeFishService;
|
||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -20,6 +21,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -80,6 +82,39 @@ public class WeFishServiceImpl implements WeFishService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult<Map<String, List<String>>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest) {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
DataSourceRequest.FilterDescriptor filter = dataSourceRequest == null ? null : dataSourceRequest.getFilter();
|
||||
|
||||
String baseId = getFirstWeFishFilterText(filter, "baseId");
|
||||
String hbrvcd = getFirstWeFishFilterText(filter, "hbrvcd");
|
||||
String yr = getFirstWeFishFilterText(filter, "yr");
|
||||
List<String> rstcdList = getWeFishFilterTexts(filter, "rstcd");
|
||||
|
||||
String sql = buildWeFishYearSql(baseId, hbrvcd, yr, rstcdList, paramMap);
|
||||
List<WeRvcdYearVo> rows = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, WeRvcdYearVo.class);
|
||||
|
||||
LinkedHashMap<String, List<String>> yrMap = new LinkedHashMap<>();
|
||||
for (WeRvcdYearVo row : rows) {
|
||||
if (row == null || StrUtil.isBlank(row.getHbrvcd()) || StrUtil.isBlank(row.getYr())) {
|
||||
continue;
|
||||
}
|
||||
yrMap.computeIfAbsent(row.getHbrvcd(), key -> new ArrayList<>()).add(row.getYr());
|
||||
}
|
||||
|
||||
DataSourceResult<Map<String, List<String>>> result = new DataSourceResult<>();
|
||||
if (yrMap.isEmpty()) {
|
||||
result.setData(null);
|
||||
result.setTotal(0L);
|
||||
} else {
|
||||
result.setData(java.util.Collections.singletonList(yrMap));
|
||||
result.setTotal(1L);
|
||||
}
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
private String buildWeFishQgcGroupSql(String baseSql, GroupingInfo[] groupInfos) {
|
||||
if (groupInfos == null || groupInfos.length == 0) {
|
||||
return baseSql;
|
||||
@ -147,6 +182,74 @@ public class WeFishServiceImpl implements WeFishService {
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildWeFishYearSql(String baseId,
|
||||
String hbrvcd,
|
||||
String yr,
|
||||
List<String> rstcdList,
|
||||
Map<String, Object> paramMap) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT t.HBRVCD AS hbrvcd, t.YR AS yr ")
|
||||
.append("FROM (")
|
||||
.append("SELECT section.HBRVCD, section.RSTCD, section.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ")
|
||||
.append("FROM SD_WE_B_H section ")
|
||||
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
|
||||
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
|
||||
.append(" AND NVL(we.STATUS, 1) = 1 ")
|
||||
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
|
||||
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
|
||||
.append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
|
||||
.append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
|
||||
.append("WHERE NVL(section.USFL, 0) = 1 ")
|
||||
.append("AND CASE ")
|
||||
.append("WHEN dict.SPEC_ORIGIN = 2 THEN 1 ")
|
||||
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN 2 ")
|
||||
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN 3 ")
|
||||
.append("END IS NOT NULL ");
|
||||
|
||||
if (StrUtil.isNotBlank(baseId)) {
|
||||
paramMap.put("weYearBaseId", baseId);
|
||||
sql.append("AND section.BASE_ID = #{map.weYearBaseId} ");
|
||||
}
|
||||
if (StrUtil.isNotBlank(hbrvcd)) {
|
||||
paramMap.put("weYearHbrvcd", hbrvcd);
|
||||
sql.append("AND section.HBRVCD = #{map.weYearHbrvcd} ");
|
||||
}
|
||||
if (StrUtil.isNotBlank(yr)) {
|
||||
paramMap.put("weYearYr", yr);
|
||||
sql.append("AND TO_CHAR(we.TM, 'yyyy') = #{map.weYearYr} ");
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rstcdList)) {
|
||||
List<String> placeholders = new ArrayList<>();
|
||||
int index = 0;
|
||||
for (String rstcd : rstcdList) {
|
||||
if (StrUtil.isBlank(rstcd)) {
|
||||
continue;
|
||||
}
|
||||
String key = "weYearRstcd" + index++;
|
||||
paramMap.put(key, rstcd);
|
||||
placeholders.add("#{map." + key + "}");
|
||||
}
|
||||
if (CollUtil.isNotEmpty(placeholders)) {
|
||||
sql.append("AND section.RSTCD IN (").append(String.join(", ", placeholders)).append(") ");
|
||||
}
|
||||
}
|
||||
|
||||
sql.append("GROUP BY section.BASE_ID, section.HBRVCD, section.RSTCD, TO_CHAR(we.TM, 'yyyy')")
|
||||
.append(") t ")
|
||||
.append("INNER JOIN (")
|
||||
.append("SELECT det.STCD, det.SORT, cfg.RVCD ")
|
||||
.append("FROM MS_ALONG_B cfg ")
|
||||
.append("INNER JOIN MS_ALONGDET_B det ON cfg.ID = det.ALONG_ID ")
|
||||
.append("WHERE det.STTP = 'ENG' ")
|
||||
.append(" AND cfg.CODE = 'common' ")
|
||||
.append(" AND NVL(det.IS_DELETED, 0) = 0 ")
|
||||
.append(" AND NVL(cfg.IS_DELETED, 0) = 0")
|
||||
.append(") t2 ON t.RSTCD = t2.STCD ")
|
||||
.append("GROUP BY t.BASE_ID, t.HBRVCD, t.YR ")
|
||||
.append("ORDER BY t.BASE_ID ASC NULLS LAST, t.HBRVCD ASC NULLS LAST, t.YR DESC");
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildWeFishQgcDetailSql() {
|
||||
return "SELECT " +
|
||||
"section.STCD AS stcd, " +
|
||||
@ -421,22 +524,28 @@ public class WeFishServiceImpl implements WeFishService {
|
||||
|
||||
private List<Object> normalizeWeFishQgcValues(Object value) {
|
||||
List<Object> values = new ArrayList<>();
|
||||
appendWeFishQgcValues(values, value);
|
||||
return values;
|
||||
}
|
||||
|
||||
private void appendWeFishQgcValues(List<Object> values, Object value) {
|
||||
if (value == null) {
|
||||
return values;
|
||||
return;
|
||||
}
|
||||
if (value instanceof Iterable<?> iterable) {
|
||||
for (Object item : iterable) {
|
||||
values.add(item);
|
||||
appendWeFishQgcValues(values, item);
|
||||
}
|
||||
return values;
|
||||
return;
|
||||
}
|
||||
if (value.getClass().isArray()) {
|
||||
Object[] array = (Object[]) value;
|
||||
values.addAll(Arrays.asList(array));
|
||||
return values;
|
||||
for (Object item : array) {
|
||||
appendWeFishQgcValues(values, item);
|
||||
}
|
||||
return;
|
||||
}
|
||||
values.add(value);
|
||||
return values;
|
||||
}
|
||||
|
||||
private boolean isWeFishIntegerField(String field) {
|
||||
@ -461,6 +570,40 @@ public class WeFishServiceImpl implements WeFishService {
|
||||
}
|
||||
}
|
||||
|
||||
private String getFirstWeFishFilterText(DataSourceRequest.FilterDescriptor filter, String fieldName) {
|
||||
List<String> values = getWeFishFilterTexts(filter, fieldName);
|
||||
return CollUtil.isEmpty(values) ? null : values.get(0);
|
||||
}
|
||||
|
||||
private List<String> getWeFishFilterTexts(DataSourceRequest.FilterDescriptor filter, String fieldName) {
|
||||
List<String> values = new ArrayList<>();
|
||||
collectWeFishFilterTexts(filter, fieldName, values);
|
||||
return values;
|
||||
}
|
||||
|
||||
private void collectWeFishFilterTexts(DataSourceRequest.FilterDescriptor filter, String fieldName, List<String> values) {
|
||||
if (filter == null || StrUtil.isBlank(fieldName)) {
|
||||
return;
|
||||
}
|
||||
if (fieldName.equalsIgnoreCase(filter.getField())) {
|
||||
for (Object item : normalizeWeFishQgcValues(filter.getValue())) {
|
||||
if (item == null) {
|
||||
continue;
|
||||
}
|
||||
String text = String.valueOf(item).trim();
|
||||
if (StrUtil.isNotBlank(text)) {
|
||||
values.add(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||
return;
|
||||
}
|
||||
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||
collectWeFishFilterTexts(child, fieldName, values);
|
||||
}
|
||||
}
|
||||
|
||||
private void fillWeFishDerivedFields(List<WeFishTQgcVo> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user