diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java index 3a65a6b7..45dc5d14 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java @@ -69,6 +69,12 @@ public class WeFishController { return ResponseResult.successData(weFishService.getWvaDefaultList(dataSourceRequest)); } + @PostMapping("/we/compareBar/GetKendoListCust") + @Operation(summary = "水生生态调查对比(柱状图)") + public ResponseResult getWeCompareBarList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(weFishService.getWeCompareBarList(dataSourceRequest)); + } + @PostMapping("/we/fisht/year/qgc/GetKendoListCust") @Operation(summary = "全过程沿程鱼类变化情况有数据的流域和年份") public ResponseResult getQgcFishStaticsYearList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarHeadColumnVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarHeadColumnVo.java new file mode 100644 index 00000000..7790311d --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarHeadColumnVo.java @@ -0,0 +1,33 @@ +package com.yfd.platform.qgc_env.wte.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +@AllArgsConstructor +@Schema(description = "水生生态调查对比柱状图表头") +public class WeCompareBarHeadColumnVo { + + @Schema(description = "字段名") + private String dataIndex; + + @Schema(description = "标题") + private String title; + + @Schema(description = "是否可见") + private Boolean visible; + + @Schema(description = "键") + private String key; + + @Schema(description = "单位") + private boolean merge; + + @Schema(description = "子列") + private List children; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarTableVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarTableVo.java new file mode 100644 index 00000000..573d0f9c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarTableVo.java @@ -0,0 +1,22 @@ +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 WeCompareBarTableVo { + + @Schema(description = "表头") + private List columns; + + @Schema(description = "表格数据") + private Object dataSource; + + @Schema(description = "总数") + private Long total; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarVo.java new file mode 100644 index 00000000..2999824c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeCompareBarVo.java @@ -0,0 +1,29 @@ +package com.yfd.platform.qgc_env.wte.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@Schema(description = "水生生态调查对比柱状图数据") +public class WeCompareBarVo { + + @Schema(description = "鱼类名称") + private String ftp; + + @Schema(description = "科属") + private String genus; + + @Schema(description = "调查批次") + private String dcpc; + + @Schema(description = "对比批次") + private String dcpc2; + + @Schema(description = "鱼类数量") + private Integer fcnt; + + @Schema(description = "对比鱼类数量") + private Integer fcnt2; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java index 8e642ae7..0b2d6114 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java @@ -4,6 +4,7 @@ import com.yfd.platform.common.DataSourceRequest; 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.WeFishListStatQgcVo; +import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo; 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.WeFishPointQgcVo; @@ -38,6 +39,8 @@ public interface WeFishService { DataSourceResult getWvaDefaultYearList(DataSourceRequest dataSourceRequest); + DataSourceResult getWeCompareBarList(DataSourceRequest dataSourceRequest); + DataSourceResult>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest); DataSourceResult getQgcWeFishStatics(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java index f990f73f..2ecc469c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java @@ -10,6 +10,9 @@ import com.yfd.platform.common.DataSourceResult; 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.WeCompareBarHeadColumnVo; +import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo; +import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarVo; 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.WeFishDetailVo; @@ -423,6 +426,58 @@ public class WeFishServiceImpl implements WeFishService { return result; } + @Override + public DataSourceResult getWeCompareBarList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + DataSourceRequest.FilterDescriptor filter = dataSourceRequest == null ? null : dataSourceRequest.getFilter(); + + String stcd = getFirstWeFishFilterText(filter, "stcd"); + String dcpc = getFirstWeFishFilterText(filter, "dcpc"); + String dcpc2 = getFirstWeFishFilterText(filter, "dcpc2"); + + List list = new ArrayList<>(); + long total = 0L; + if (StrUtil.isNotBlank(stcd) && StrUtil.isNotBlank(dcpc) && StrUtil.isNotBlank(dcpc2)) { + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("dcpc", dcpc); + paramMap.put("dcpc2", dcpc2); + + String sql = "SELECT dict.NAME AS ftp, " + + "MAX(NVL(dict.FAMILY, '') || NVL(dict.GENUS, '')) AS genus, " + + "#{map.dcpc} AS dcpc, " + + "#{map.dcpc2} AS dcpc2, " + + "SUM(CASE WHEN we.DCPC = #{map.dcpc} THEN NVL(fish.FCNT, 0) ELSE 0 END) AS fcnt, " + + "SUM(CASE WHEN we.DCPC = #{map.dcpc2} THEN NVL(fish.FCNT, 0) ELSE 0 END) AS fcnt2 " + + "FROM SD_WE_R we " + + "INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID AND NVL(fish.IS_DELETED, 0) = 0 " + + "INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD AND NVL(section.USFL, 0) = 1 " + + "INNER JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP AND NVL(dict.IS_DELETED, 0) = 0 " + + "WHERE NVL(we.IS_DELETED, 0) = 0 " + + "AND NVL(we.STATUS, 1) = 1 " + + "AND we.STCD = #{map.stcd} " + + "AND we.DCPC IN (#{map.dcpc}, #{map.dcpc2}) " + + "GROUP BY dict.NAME " + + "ORDER BY dict.NAME"; + + Page page = loadOptions == null ? null + : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql, paramMap, WeCompareBarVo.class); + total = page != null ? page.getTotal() : list.size(); + } + + WeCompareBarTableVo tableVo = new WeCompareBarTableVo() + .setColumns(buildWeCompareBarColumns(dcpc, dcpc2)) + .setDataSource(list) + .setTotal(total); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(Collections.singletonList(tableVo)); + result.setTotal(total); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public DataSourceResult>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest) { Map paramMap = new HashMap<>(); @@ -1357,6 +1412,17 @@ public class WeFishServiceImpl implements WeFishService { return splitWeFishText(names); } + private List buildWeCompareBarColumns(String dcpc, String dcpc2) { + List columns = new ArrayList<>(); + columns.add(new WeCompareBarHeadColumnVo("ftp", "鱼种类", true, "ftp", false, new ArrayList<>())); + columns.add(new WeCompareBarHeadColumnVo("genus", "科属", true, "genus", false, new ArrayList<>())); + columns.add(new WeCompareBarHeadColumnVo("dcpc", StrUtil.isBlank(dcpc) ? "调查批次" : dcpc, true, "dcpc", false, new ArrayList<>())); + columns.add(new WeCompareBarHeadColumnVo("dcpc2", StrUtil.isBlank(dcpc2) ? "对比批次" : dcpc2, true, "dcpc2", false, new ArrayList<>())); + columns.add(new WeCompareBarHeadColumnVo("fcnt", "鱼类数量(尾)", true, "fnct", false, new ArrayList<>())); + columns.add(new WeCompareBarHeadColumnVo("fcnt2", "对比鱼类数量(尾)", true, "fcnt2", false, new ArrayList<>())); + return columns; + } + private String firstNonBlankWeFishFilter(DataSourceRequest.FilterDescriptor filter, String... fields) { if (fields == null) { return null; @@ -3088,6 +3154,12 @@ public class WeFishServiceImpl implements WeFishService { return values; } + private List normalizeWeWvaValues(Object value) { + List values = new ArrayList<>(); + appendWeFishQgcValues(values, value); + return values; + } + private String buildWeFishListStatFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) {