feat: 沿程鱼类变化情况二级弹窗
This commit is contained in:
parent
435452a79c
commit
6865cf7317
@ -87,6 +87,12 @@ public class WeFishController {
|
|||||||
return ResponseResult.successData(weFishService.getWeFishStatList(dataSourceRequest));
|
return ResponseResult.successData(weFishService.getWeFishStatList(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/we/fisht/detail/GetKendoListCust")
|
||||||
|
@Operation(summary = "沿程鱼类变化情况二级弹窗")
|
||||||
|
public ResponseResult getWeFishDetailList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(weFishService.getWeFishDetailList(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/we/fishList/stat/qgc/GetKendoListCust")
|
@PostMapping("/we/fishList/stat/qgc/GetKendoListCust")
|
||||||
@Operation(summary = "环保部-水生生态调查-水生生态面板")
|
@Operation(summary = "环保部-水生生态调查-水生生态面板")
|
||||||
public ResponseResult getQgcFishListStat(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getQgcFishListStat(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,36 @@
|
|||||||
|
package com.yfd.platform.qgc_env.wte.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Schema(description = "沿程鱼类变化情况二级弹窗")
|
||||||
|
public class WeFishDetailVo {
|
||||||
|
|
||||||
|
@Schema(description = "电站编码")
|
||||||
|
private String rsctd;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String rsctdName;
|
||||||
|
|
||||||
|
@Schema(description = "鱼类列表")
|
||||||
|
private List<String> fishList;
|
||||||
|
|
||||||
|
@Schema(description = "断面列表")
|
||||||
|
private List<StationItem> stcdList;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Schema(description = "断面信息")
|
||||||
|
public static class StationItem {
|
||||||
|
@Schema(description = "断面编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "断面名称")
|
||||||
|
private String stnm;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@ import com.yfd.platform.common.DataSourceRequest;
|
|||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo;
|
||||||
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishStatQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishStatQgcVo;
|
||||||
@ -41,6 +42,8 @@ public interface WeFishService {
|
|||||||
|
|
||||||
DataSourceResult<WeFishStatQgcVo> getWeFishStatList(DataSourceRequest dataSourceRequest);
|
DataSourceResult<WeFishStatQgcVo> getWeFishStatList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<WeFishDetailVo> getWeFishDetailList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<WeFishListStatQgcVo> getQgcFishListStat(DataSourceRequest dataSourceRequest);
|
DataSourceResult<WeFishListStatQgcVo> getQgcFishListStat(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<WeFishPointQgcVo> getQgcWeFishPoint(DataSourceRequest dataSourceRequest);
|
DataSourceResult<WeFishPointQgcVo> getQgcWeFishPoint(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.yfd.platform.common.GroupingInfo;
|
|||||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo;
|
||||||
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo;
|
||||||
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishStatQgcVo;
|
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishStatQgcVo;
|
||||||
@ -439,6 +440,30 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
return buildWeFishStatResult(rows);
|
return buildWeFishStatResult(rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<WeFishDetailVo> getWeFishDetailList(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
Page<?> page = loadOptions == null ? null
|
||||||
|
: QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
DataSourceRequest.FilterDescriptor filter = dataSourceRequest == null ? null : dataSourceRequest.getFilter();
|
||||||
|
|
||||||
|
String baseId = firstNonBlankWeFishFilter(filter, "baseId", "base_id");
|
||||||
|
String rstcd = getFirstWeFishFilterText(filter, "stcd");
|
||||||
|
String rvcd = firstNonBlankWeFishFilter(filter, "rvcd", "hbrvcd");
|
||||||
|
String yr = getFirstWeFishFilterText(filter, "yr");
|
||||||
|
String ty = getFirstWeFishFilterText(filter, "ty");
|
||||||
|
|
||||||
|
String sql = buildWeFishDetailSql(baseId, rstcd, rvcd, yr, ty, paramMap);
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(page, sql, paramMap);
|
||||||
|
|
||||||
|
DataSourceResult<WeFishDetailVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(buildWeFishDetailResult(rows));
|
||||||
|
result.setTotal(page != null ? page.getTotal() : (long) rows.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSourceResult<WeFishStatQgcVo> getQgcWeFishStatList(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<WeFishStatQgcVo> getQgcWeFishStatList(DataSourceRequest dataSourceRequest) {
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
@ -922,6 +947,129 @@ public class WeFishServiceImpl implements WeFishService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildWeFishDetailSql(String baseId,
|
||||||
|
String rstcd,
|
||||||
|
String rvcd,
|
||||||
|
String yr,
|
||||||
|
String ty,
|
||||||
|
Map<String, Object> paramMap) {
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append("section.RSTCD AS rstcd, ")
|
||||||
|
.append("eng.ENNM AS rstcdName, ")
|
||||||
|
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ")
|
||||||
|
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ")
|
||||||
|
.append("TO_CHAR(WM_CONCAT(DISTINCT dict.NAME)) AS name ")
|
||||||
|
.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 SD_ENGINFO_B_H eng ON section.RSTCD = eng.STCD ")
|
||||||
|
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
|
||||||
|
.append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
|
||||||
|
.append(" AND NVL(dict.IS_DELETED, 0) = 0 ")
|
||||||
|
.append("WHERE NVL(section.USFL, 0) = 1 ")
|
||||||
|
.append("AND section.RSTCD IS NOT NULL ")
|
||||||
|
.append("AND dict.NAME IS NOT NULL ");
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(baseId)) {
|
||||||
|
paramMap.put("weFishDetailBaseId", baseId);
|
||||||
|
sql.append("AND section.BASE_ID = #{map.weFishDetailBaseId} ");
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(rstcd)) {
|
||||||
|
paramMap.put("weFishDetailRstcd", rstcd);
|
||||||
|
sql.append("AND section.RSTCD = #{map.weFishDetailRstcd} ");
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(rvcd)) {
|
||||||
|
paramMap.put("weFishDetailRvcd", rvcd);
|
||||||
|
sql.append("AND section.HBRVCD = #{map.weFishDetailRvcd} ");
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(yr)) {
|
||||||
|
paramMap.put("weFishDetailYr", yr);
|
||||||
|
sql.append("AND TO_CHAR(we.TM, 'yyyy') = #{map.weFishDetailYr} ");
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(ty)) {
|
||||||
|
paramMap.put("weFishDetailTy", ty);
|
||||||
|
sql.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 = #{map.weFishDetailTy} ");
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.append("GROUP BY section.RSTCD, eng.ENNM ")
|
||||||
|
.append("ORDER BY eng.ENNM ASC NULLS LAST");
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<WeFishDetailVo> buildWeFishDetailResult(List<Map<String, Object>> rows) {
|
||||||
|
List<WeFishDetailVo> result = new ArrayList<>();
|
||||||
|
if (CollUtil.isEmpty(rows)) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
for (Map<String, Object> row : rows) {
|
||||||
|
String stcd = safeWeFishString(firstPresentWeFishValue(row, "STCD", "stcd"));
|
||||||
|
String stnm = safeWeFishString(firstPresentWeFishValue(row, "STNM", "stnm"));
|
||||||
|
String fishNames = safeWeFishString(firstPresentWeFishValue(row, "NAME", "name"));
|
||||||
|
|
||||||
|
WeFishDetailVo vo = new WeFishDetailVo()
|
||||||
|
.setRsctd(safeWeFishString(firstPresentWeFishValue(row, "RSTCD", "rstcd")))
|
||||||
|
.setRsctdName(safeWeFishString(firstPresentWeFishValue(row, "RSTCDNAME", "rstcdName")))
|
||||||
|
.setFishList(splitWeFishText(fishNames))
|
||||||
|
.setStcdList(buildWeFishStationItems(stcd, stnm));
|
||||||
|
result.add(vo);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<WeFishDetailVo.StationItem> buildWeFishStationItems(String stcdText, String stnmText) {
|
||||||
|
List<WeFishDetailVo.StationItem> result = new ArrayList<>();
|
||||||
|
if (StrUtil.isBlank(stcdText) || StrUtil.isBlank(stnmText)) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
List<String> stcdList = splitWeFishText(stcdText);
|
||||||
|
List<String> stnmList = splitWeFishText(stnmText);
|
||||||
|
int size = Math.min(stcdList.size(), stnmList.size());
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
result.add(new WeFishDetailVo.StationItem()
|
||||||
|
.setStcd(stcdList.get(i))
|
||||||
|
.setStnm(stnmList.get(i)));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> splitWeFishText(String text) {
|
||||||
|
if (StrUtil.isBlank(text)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
String[] parts = text.split(",");
|
||||||
|
List<String> result = new ArrayList<>();
|
||||||
|
Set<String> seen = new HashSet<>();
|
||||||
|
for (String part : parts) {
|
||||||
|
String value = StrUtil.trim(part);
|
||||||
|
if (StrUtil.isBlank(value) || !seen.add(value)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
result.add(value);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String firstNonBlankWeFishFilter(DataSourceRequest.FilterDescriptor filter, String... fields) {
|
||||||
|
if (fields == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (String field : fields) {
|
||||||
|
String value = getFirstWeFishFilterText(filter, field);
|
||||||
|
if (StrUtil.isNotBlank(value)) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private String buildWeFishListStatQgcDetailSql() {
|
private String buildWeFishListStatQgcDetailSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"dict.FISH_ID AS id, " +
|
"dict.FISH_ID AS id, " +
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user