From 3fa0857bfd094ead97deed17a5dfba15140af78c Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 16:02:57 +0800 Subject: [PATCH 01/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=88=86?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java index 752ca7d5..d8342689 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java @@ -61,8 +61,7 @@ public class FhHabitatServiceImpl implements FhHabitatService { } sql.append(buildCustOrderBySql(dataSourceRequest.getSort())); - PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions); - Page page = pageInfo.getHasPageInfo() ? pageInfo.getPage() : null; + Page page = QgcQueryWrapperUtil.buildPage(loadOptions,loadOptions.getSkip(), loadOptions.getTake()); List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, HabitatVo.class); DataSourceResult result = new DataSourceResult<>(); From e7476da0087c44d47a7f97402670ea95c77bde22 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 16:24:36 +0800 Subject: [PATCH 02/47] =?UTF-8?q?fix:=20=E6=9F=A5=E8=AF=A2=E6=A0=96?= =?UTF-8?q?=E6=81=AF=E5=9C=B0=E7=9B=91=E6=B5=8B=E7=AB=99=E7=82=B9=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E5=AD=90=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../env/fh/entity/vo/FhMsstbprptVo.java | 37 ++++++++ .../fh/service/impl/FhHabitatServiceImpl.java | 84 +++++++++++++++++-- .../env/wt/entity/vo/SdWtBaseInfoVO.java | 3 + .../service/impl/SdWtMonitorServiceImpl.java | 9 +- 4 files changed, 127 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java b/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java index 9ca7df5e..2214ad61 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @Data @@ -63,6 +64,42 @@ public class FhMsstbprptVo implements Serializable { @Schema(description = "监测指标") private String stindx; + @Schema(description = "建设阶段") + private Integer bldstt; + + @Schema(description = "保护对象") + private String qxdbhdx; + + @Schema(description = "保护范围") + private String qxdbhfw; + + @Schema(description = "保护长度") + private BigDecimal qxdbhcd; + + @Schema(description = "保护面积") + private BigDecimal qxdbhmj; + + @Schema(description = "保护河流") + private String bhhl; + + @Schema(description = "保护河段") + private String bhhd; + + @Schema(description = "保护措施") + private String bhcs; + + @Schema(description = "保护方式") + private String qxdbhfs; + + @Schema(description = "实施时间") + private Date ststdt; + + @Schema(description = "数据监测频次") + private Integer dtfrqcy; + + @Schema(description = "投资") + private BigDecimal qxdinv; + @Schema(description = "是否启用") private Integer usfl; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java index d8342689..276b5e16 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java @@ -1008,8 +1008,7 @@ public class FhHabitatServiceImpl implements FhHabitatService { } sql.append(buildFhMsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); - PageInfo pageInfo = loadOptions == null ? null : QgcQueryWrapperUtil.getPageInfo(loadOptions); - Page page = pageInfo != null && pageInfo.getHasPageInfo() ? pageInfo.getPage() : null; + Page page = QgcQueryWrapperUtil.buildPage(loadOptions,loadOptions.getSkip(), loadOptions.getTake()); List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FhMsstbprptVo.class); DataSourceResult result = new DataSourceResult<>(); @@ -1020,11 +1019,50 @@ public class FhHabitatServiceImpl implements FhHabitatService { } private String buildFhMsstbprptBaseSql(String sttpCode) { + boolean onlyFh = "FH".equalsIgnoreCase(StrUtil.trim(sttpCode)); boolean onlyRiver = "ZQ".equalsIgnoreCase(StrUtil.trim(sttpCode)); boolean onlyWtrv = "WTRV".equalsIgnoreCase(StrUtil.trim(sttpCode)); StringBuilder sql = new StringBuilder(); sql.append("SELECT * FROM ("); - if (!onlyWtrv) { + if (onlyFh) { + sql.append("SELECT fh.STCD AS stcd, ") + .append("fh.STNM AS stnm, ") + .append("'FH' AS sttpCode, ") + .append("CAST(NULL AS VARCHAR2(36)) AS fhstcd, ") + .append("CAST(NULL AS VARCHAR2(255)) AS fhstnm, ") + .append("fh.RSTCD AS rstcd, ") + .append("CAST(NULL AS VARCHAR2(255)) AS ennm, ") + .append("fh.BASE_ID AS baseId, ") + .append("hb.BASENAME AS baseName, ") + .append("fh.HBRVCD AS hbrvcd, ") + .append("fh.ATTM AS jcdt, ") + .append("CAST(NULL AS NUMBER(10)) AS mway, ") + .append("fh.DTIN AS dtin, ") + .append("CAST(NULL AS VARCHAR2(255)) AS dtinSrc, ") + .append("CAST(NULL AS NUMBER(10)) AS dtinType, ") + .append("fh.DTIN_TM AS dtinTm, ") + .append("CAST(NULL AS VARCHAR2(1000)) AS stindx, ") + .append("fh.BLPRD AS bldstt, ") + .append("fh.BHDX AS qxdbhdx, ") + .append("fh.BHFW AS qxdbhfw, ") + .append("fh.BHCD AS qxdbhcd, ") + .append("fh.BHMJ AS qxdbhmj, ") + .append("fh.BHHL AS bhhl, ") + .append("fh.BHHD AS bhhd, ") + .append("fh.BHCS AS bhcs, ") + .append("fh.BHFS AS qxdbhfs, ") + .append("fh.ATTM AS ststdt, ") + .append("fh.DTFRQCY AS dtfrqcy, ") + .append("fh.INV AS qxdinv, ") + .append("fh.USFL AS usfl, ") + .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") + .append("999999 AS rvcdStepSort, ") + .append("999999 AS rstcdStepSort, ") + .append("NVL(fh.ORDER_INDEX, 999999) AS siteStepSort ") + .append("FROM SD_FHBT_B_H fh ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = fh.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("WHERE NVL(fh.IS_DELETED, 0) = 0 "); + } else if (!onlyWtrv) { sql.append("SELECT river.STCD AS stcd, ") .append("river.STNM AS stnm, ") .append("'ZQ' AS sttpCode, ") @@ -1042,6 +1080,18 @@ public class FhHabitatServiceImpl implements FhHabitatService { .append("river.DTIN_TYPE AS dtinType, ") .append("river.DTIN_TM AS dtinTm, ") .append("river.STINDX AS stindx, ") + .append("fh.BLPRD AS bldstt, ") + .append("fh.BHDX AS qxdbhdx, ") + .append("fh.BHFW AS qxdbhfw, ") + .append("fh.BHCD AS qxdbhcd, ") + .append("fh.BHMJ AS qxdbhmj, ") + .append("fh.BHHL AS bhhl, ") + .append("fh.BHHD AS bhhd, ") + .append("fh.BHCS AS bhcs, ") + .append("fh.BHFS AS qxdbhfs, ") + .append("fh.ATTM AS ststdt, ") + .append("fh.DTFRQCY AS dtfrqcy, ") + .append("fh.INV AS qxdinv, ") .append("river.USFL AS usfl, ") .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") .append("999999 AS rvcdStepSort, ") @@ -1055,10 +1105,10 @@ public class FhHabitatServiceImpl implements FhHabitatService { .append("AND river.STTP = 'ZQ' ") .append("AND river.FHSTCD IS NOT NULL "); } - if (!onlyRiver && !onlyWtrv) { + if (!onlyFh && !onlyRiver && !onlyWtrv) { sql.append(" UNION ALL "); } - if (!onlyRiver) { + if (!onlyFh && !onlyRiver) { sql.append("SELECT wt.STCD AS stcd, ") .append("wt.STNM AS stnm, ") .append("'WTRV' AS sttpCode, ") @@ -1076,6 +1126,18 @@ public class FhHabitatServiceImpl implements FhHabitatService { .append("wt.DTIN_TYPE AS dtinType, ") .append("wt.DTIN_TM AS dtinTm, ") .append("wt.STINDX AS stindx, ") + .append("fh.BLPRD AS bldstt, ") + .append("fh.BHDX AS qxdbhdx, ") + .append("fh.BHFW AS qxdbhfw, ") + .append("fh.BHCD AS qxdbhcd, ") + .append("fh.BHMJ AS qxdbhmj, ") + .append("fh.BHHL AS bhhl, ") + .append("fh.BHHD AS bhhd, ") + .append("fh.BHCS AS bhcs, ") + .append("fh.BHFS AS qxdbhfs, ") + .append("fh.ATTM AS ststdt, ") + .append("fh.DTFRQCY AS dtfrqcy, ") + .append("fh.INV AS qxdinv, ") .append("wt.USFL AS usfl, ") .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") .append("999999 AS rvcdStepSort, ") @@ -1203,6 +1265,18 @@ public class FhHabitatServiceImpl implements FhHabitatService { case "dtinType" -> "t.dtinType"; case "dtinTm" -> "t.dtinTm"; case "stindx" -> "t.stindx"; + case "bldstt" -> "t.bldstt"; + case "dtfrqcy" -> "t.dtfrqcy"; + case "qxdinv" -> "t.qxdinv"; + case "qxdbhdx" -> "t.qxdbhdx"; + case "qxdbhfw" -> "t.qxdbhfw"; + case "qxdbhcd" -> "t.qxdbhcd"; + case "qxdbhmj" -> "t.qxdbhmj"; + case "bhhl" -> "t.bhhl"; + case "bhhd" -> "t.bhhd"; + case "bhcs" -> "t.bhcs"; + case "qxdbhfs" -> "t.qxdbhfs"; + case "ststdt" -> "t.ststdt"; case "usfl", "enable" -> "t.usfl"; case "baseStepSort" -> "t.baseStepSort"; case "rvcdStepSort" -> "t.rvcdStepSort"; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java index 85139154..07d0a824 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java @@ -41,6 +41,9 @@ public class SdWtBaseInfoVO implements Serializable { @Schema(description = "开工日期") private Date ststdt; + @Schema(description = "建设状态") + private String bldsttCcode; + @Schema(description = "建设状态") private String bldsttCcodeName; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java index f9af2aa8..75e6fcfc 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -563,6 +563,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm"); String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState"); String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin"); + String bldsttCcode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "bldsttCcode"); StringBuilder sql = new StringBuilder(); boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode); boolean queryDwDirectly = StrUtil.isNotBlank(sttpCode) && sttpCode.toUpperCase().startsWith("DW_"); @@ -615,6 +616,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("WHEN dw.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' ") .append("WHEN dw.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ") .append("ELSE '未建/规划' END AS bldsttCcodeName, ") + .append("dw.BLDSTT_CODE AS bldsttCcode, ") .append("eng.HBRVCD AS hbrvcd ") .append("FROM SD_DFLTKW_B_H dw ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = dw.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") @@ -666,10 +668,15 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { paramMap.put("sttpCode", sttpCode); sql.append("AND wt.STTP = #{map.sttpCode} "); } - if (queryDwDirectly && sttpCode != null && !sttpCode.isBlank()) { + if (queryDwDirectly && StrUtil.isNotBlank(sttpCode)) { paramMap.put("sttpCode", sttpCode); sql.append("AND dw.STTP = #{map.sttpCode} "); } + + if (queryDwDirectly && StrUtil.isNotBlank(bldsttCcode)) { + paramMap.put("bldsttCcode", bldsttCcode); + sql.append("AND dw.BLDSTT_CODE = #{map.bldsttCcode} "); + } if (rstcd != null && !rstcd.isBlank()) { paramMap.put("rstcd", rstcd); if (queryEngDirectly) { From 71ad7f4b0f3b5da3c9c7f4e8b5866e0140c8469a Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 17:00:34 +0800 Subject: [PATCH 03/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/env/fh/service/impl/FhHabitatServiceImpl.java | 4 ++-- .../platform/env/wt/service/impl/SdWtMonitorServiceImpl.java | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java index 276b5e16..c38646c6 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java @@ -1148,8 +1148,8 @@ public class FhHabitatServiceImpl implements FhHabitatService { .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(fh.BASE_ID, eng.BASE_ID) AND NVL(hb.IS_DELETED, 0) = 0 ") .append("WHERE NVL(wt.IS_DELETED, 0) = 0 ") - .append("AND wt.STTP = 'WTRV' ") - .append("AND wt.FHSTCD IS NOT NULL "); + .append("AND wt.STTP = 'WTRV' "); +// .append("AND wt.FHSTCD IS NOT NULL "); } sql.append(") t WHERE 1 = 1 "); return sql.toString(); diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java index 75e6fcfc..c7e7112d 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -645,6 +645,11 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("sttp.FULL_PATH AS sttpFullPath, ") .append("wt.STCD AS stcd, ") .append("wt.RSTCD AS rstcd, ") + .append("CASE ") + .append("WHEN wt.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' ") + .append("WHEN wt.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ") + .append("ELSE '未建/规划' END AS bldsttCcodeName, ") + .append("wt.BLDSTT_CODE AS bldsttCcode, ") .append("NULL AS stCode, ") .append("NULL AS stName, ") .append("eng.DVTP AS dvtp, ") From fa0519fab6624e31bef82eec136ecb04f2d2d020 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 17:13:15 +0800 Subject: [PATCH 04/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/env/wt/service/impl/AlongDetailServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java index c52dff2b..59a06849 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java @@ -117,8 +117,9 @@ public class AlongDetailServiceImpl extends ServiceImpl list = this.microservicDynamicSQLMapper.pageAllListWithResultType(currentPage, sql.toString(), map, SdAlongDetailVO.class); dataSourceResult.setData(list); dataSourceResult.setTotal(ObjectUtil.isNotEmpty(currentPage) ? currentPage.getTotal() : (long) list.size()); From d4eb75bea8b92b6f6b97efcd2fc8fc453239daea Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 17:56:13 +0800 Subject: [PATCH 05/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E7=AB=99?= =?UTF-8?q?=E7=A0=81=E6=9F=A5=E8=AF=A2=E5=8D=95=E6=9D=A1=E6=B0=B4=E6=B8=A9?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wt/controller/SdWTMonitorController.java | 6 + .../env/wt/entity/vo/WtBaseInfoVo.java | 187 ++++++++++++++++++ .../env/wt/service/SdWtMonitorService.java | 3 + .../service/impl/SdWtMonitorServiceImpl.java | 86 ++++++++ 4 files changed, 282 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java diff --git a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java index ebad6183..f21913b2 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java @@ -191,6 +191,12 @@ public class SdWTMonitorController { return ResponseResult.successData(sdWtMonitorService.getVmsstbprptList(dataSourceRequest)); } + @GetMapping("/msstbprpt/getStcdInfo") + @Operation(summary = "根据站码查询单条水温基础数据") + public ResponseResult getStcdInfo(@RequestParam String stcd) { + return ResponseResult.successData(sdWtMonitorService.getStcdInfo(stcd)); + } + @PostMapping("/wbsb/GetKendoList") @Operation(summary = "查询水电基地流域字典列表") public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java new file mode 100644 index 00000000..031deef9 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java @@ -0,0 +1,187 @@ +package com.yfd.platform.env.wt.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "水温基础站点信息") +public class WtBaseInfoVo { + + @Schema(description = "站码") + private String stcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "数据时间") + private Date tm; + + @Schema(description = "站类") + private String sttp; + + @Schema(description = "经度") + private Double lgtd; + + @Schema(description = "纬度") + private Double lttd; + + @Schema(description = "海拔") + private Double elev; + + @Schema(description = "站址") + private String stlc; + + @Schema(description = "测站来源") + private String stsr; + + @Schema(description = "水温断面设备类型") + private Integer wtDeviceType; + + @Schema(description = "水温监测断面类型") + private String wtType; + + @Schema(description = "电站水温结构类型") + private String wts; + + @Schema(description = "固定垂向水温类型") + private Integer wtHgtType; + + @Schema(description = "第一个探头高程") + private Double wtFirstHgt; + + @Schema(description = "垂向水温探头分布") + private String wtDist; + + @Schema(description = "建成日期") + private Date jcdt; + + @Schema(description = "撤站日期") + private Date wddt; + + @Schema(description = "建设状态分类") + private Integer bldsttCode; + + @Schema(description = "建设状态名称") + private String bldsttCcodeName; + + + @Schema(description = "总投资") + private BigDecimal inv; + + @Schema(description = "投资是否计入主体工程") + private Integer invinmn; + + @Schema(description = "简介") + private String introduce; + + @Schema(description = "LOGO") + private String logo; + + @Schema(description = "介绍图片") + private String inffile; + + @Schema(description = "是否启用") + private Integer usfl; + + @Schema(description = "数据是否接入") + private Integer dtin; + + @Schema(description = "数据接入来源") + private String dtinSrc; + + @Schema(description = "数据接入类型") + private Integer dtinType; + + @Schema(description = "数据接入开始时间") + private Date dtinTm; + + @Schema(description = "监测方式") + private Integer mway; + + @Schema(description = "监测方式名称") + private String mwayName; + + @Schema(description = "监测指标") + private String stindx; + + @Schema(description = "排序") + private Integer orderIndex; + + @Schema(description = "所属断面编码") + private String dmstcd; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "所属电站名称") + private String ennm; + + @Schema(description = "所属基地编码") + private String baseId; + + @Schema(description = "所属基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "行政区编码") + private String addvcd; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "所属栖息地编码") + private String fhstcd; + + @Schema(description = "是否属于测站") + private Integer ispro; + + @Schema(description = "依托项目") + private String project; + + @Schema(description = "数据监测频次") + private Integer dtfrqcy; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "数据来源") + private String vlsr; + + @Schema(description = "数据来源时间") + private Date vlsrTm; + + @Schema(description = "创建人") + private String recordUser; + + @Schema(description = "创建时间") + private Date recordTime; + + @Schema(description = "更新人") + private String modifyUser; + + @Schema(description = "更新时间") + private Date modifyTime; + + @Schema(description = "是否删除") + private Integer isDeleted; + + @Schema(description = "删除人") + private String deleteUser; + + @Schema(description = "删除时间") + private Date deleteTime; +} diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java index 804d4a20..6aec9e4f 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java @@ -9,6 +9,7 @@ import com.yfd.platform.env.wt.entity.vo.SdMonthDetailVO; import com.yfd.platform.env.wt.entity.vo.SdYearDetailVO; import com.yfd.platform.env.wt.entity.vo.SttpInfoVo; import com.yfd.platform.env.wt.entity.vo.WbsbVo; +import com.yfd.platform.env.wt.entity.vo.WtBaseInfoVo; import com.yfd.platform.env.wt.entity.vo.WtrvVo; import java.util.List; @@ -19,6 +20,8 @@ public interface SdWtMonitorService { DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); + WtBaseInfoVo getStcdInfo(String stcd); + DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest); DataSourceResult getWtFishAnalysis(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java index c7e7112d..a9fc3f71 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -3,6 +3,7 @@ package com.yfd.platform.env.wt.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.*; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.env.wt.entity.vo.DfltkwFacilityCountVo; import com.yfd.platform.env.wt.entity.vo.FishSpawnVo; import com.yfd.platform.env.wt.entity.vo.RstcdTreeInfoVo; @@ -12,6 +13,7 @@ import com.yfd.platform.env.wt.entity.vo.SdWtBaseInfoVO; import com.yfd.platform.env.wt.entity.vo.SdWtMonitorCountVO; import com.yfd.platform.env.wt.entity.vo.SttpInfoVo; import com.yfd.platform.env.wt.entity.vo.WbsbVo; +import com.yfd.platform.env.wt.entity.vo.WtBaseInfoVo; import com.yfd.platform.env.wt.entity.vo.WtFishVo; import com.yfd.platform.env.wt.entity.vo.WtTreeStcdVo; import com.yfd.platform.env.wt.entity.vo.WtrvVo; @@ -78,6 +80,90 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { return result; } + @Override + public WtBaseInfoVo getStcdInfo(String stcd) { + if (StrUtil.isBlank(stcd)) { + throw new BizException("站点编码不能为空!"); + } + String sql = "SELECT " + + "t.STCD AS stcd, " + + "t.STNM AS stnm, " + + "t.TM AS tm, " + + "t.STTP AS sttp, " + + "t.LGTD AS lgtd, " + + "t.LTTD AS lttd, " + + "t.ELEV AS elev, " + + "t.STLC AS stlc, " + + "t.STSR AS stsr, " + + "t.WT_DEVICE_TYPE AS wtDeviceType, " + + "t.WT_TYPE AS wtType, " + + "t.WTS AS wts, " + + "t.WT_HGT_TYPE AS wtHgtType, " + + "t.WT_FIRST_HGT AS wtFirstHgt, " + + "t.WT_DIST AS wtDist, " + + "t.JCDT AS jcdt, " + + "t.WDDT AS wddt, " + + "t.BLDSTT_CODE AS bldsttCode, " + + "CASE WHEN t.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' WHEN t.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName, "+ + "t.INV AS inv, " + + "t.INVINMN AS invinmn, " + + "t.INTRODUCE AS introduce, " + + "t.LOGO AS logo, " + + "t.INFFILE AS inffile, " + + "t.USFL AS usfl, " + + "t.DTIN AS dtin, " + + "t.DTIN_SRC AS dtinSrc, " + + "t.DTIN_TYPE AS dtinType, " + + "t.DTIN_TM AS dtinTm, " + + "t.MWAY AS mway, " + + "CASE NVL(t.MWAY, 0) WHEN 1 THEN '人工' WHEN 2 THEN '自动' ELSE '未知' END AS mwayName , "+ + "t.STINDX AS stindx, " + + "t.ORDER_INDEX AS orderIndex, " + + "t.DMSTCD AS dmstcd, " + + "t.RSTCD AS rstcd, " + + "eng.ENNM AS ennm, " + + "eng.BASE_ID AS baseId, " + + "base.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "eng.RVCD AS rvcd, " + + "rv.RVNM AS rvcdName, " + + "eng.ADDVCD AS addvcd, " + + "addv.ADDVNM AS addvcdName, " + + "t.FHSTCD AS fhstcd, " + + "t.ISPRO AS ispro, " + + "t.PROJECT AS project, " + + "t.DTFRQCY AS dtfrqcy, " + + "t.REMARK AS remark, " + + "t.VLSR AS vlsr, " + + "t.VLSR_TM AS vlsrTm, " + + "t.RECORD_USER AS recordUser, " + + "t.RECORD_TIME AS recordTime, " + + "t.MODIFY_USER AS modifyUser, " + + "t.MODIFY_TIME AS modifyTime, " + + "t.IS_DELETED AS isDeleted, " + + "t.DELETE_USER AS deleteUser, " + + "t.DELETE_TIME AS deleteTime " + + "FROM SD_WT_B_H t " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD " + + "LEFT JOIN SD_HYDROBASE base ON base.BASEID = eng.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD " + + " AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 " + + " AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "WHERE t.STCD = #{map.stcd} " + + " AND NVL(t.IS_DELETED, 0) = 0 "; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, WtBaseInfoVo.class); + if (list == null || list.isEmpty()) { + return null; + } + return list.get(0); + } + @Override public DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); From 25bb50533d347879886119347ad7448807e9bd43 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 18:37:39 +0800 Subject: [PATCH 06/47] =?UTF-8?q?feat:=20=E6=B0=B4=E6=96=87=E7=AB=99?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SecurityConfig.java | 1 + .../yfd/platform/config/SwaggerConfig.java | 8 + .../zq/controller/ZqMonitorController.java | 28 ++++ .../env/zq/entity/vo/ZqBaseInfoVo.java | 158 ++++++++++++++++++ .../env/zq/service/ZqMonitorService.java | 8 + .../zq/service/impl/ZqMonitorServiceImpl.java | 95 +++++++++++ 6 files changed, 298 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java create mode 100644 backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java create mode 100644 backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java create mode 100644 backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index 8188f10f..d801cb4d 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -60,6 +60,7 @@ public class SecurityConfig { .requestMatchers("/eng/**").permitAll() .requestMatchers("/env/**").permitAll() .requestMatchers("/wt/**").permitAll() + .requestMatchers("/zq/**").permitAll() .requestMatchers("/wq/**").permitAll() .requestMatchers("/fp/**").permitAll() .requestMatchers("/fh/**").permitAll() diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index 453c5b0e..11520d14 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -92,6 +92,14 @@ public class SwaggerConfig { .build(); } + @Bean + public GroupedOpenApi groupEnvZQApi() { + return GroupedOpenApi.builder() + .group("3.4.1 全过程-生态环保数据服务-栖息地-水文模块") + .packagesToScan("com.yfd.platform.env.zq.controller") + .build(); + } + diff --git a/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java b/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java new file mode 100644 index 00000000..f877e37e --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java @@ -0,0 +1,28 @@ +package com.yfd.platform.env.zq.controller; + +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.env.zq.service.ZqMonitorService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/zq") +@Tag(name = "水文流量站监测") +@Validated +public class ZqMonitorController { + + @Resource + private ZqMonitorService zqMonitorService; + + @GetMapping("/msstbprpt/getStcdInfo") + @Operation(summary = "根据站码查询单条水文站基础数据") + public ResponseResult getStcdInfo(@RequestParam String stcd) { + return ResponseResult.successData(zqMonitorService.getStcdInfo(stcd)); + } +} diff --git a/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java new file mode 100644 index 00000000..4631ec7e --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java @@ -0,0 +1,158 @@ +package com.yfd.platform.env.zq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "水文站基础站点信息") +public class ZqBaseInfoVo { + + @Schema(description = "站码") + private String stcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "数据时间") + private Date tm; + + @Schema(description = "站类") + private String sttp; + + @Schema(description = "经度") + private Double lgtd; + + @Schema(description = "纬度") + private Double lttd; + + @Schema(description = "海拔") + private Double elev; + + @Schema(description = "站址") + private String stlc; + + @Schema(description = "建成日期") + private Date jcdt; + + @Schema(description = "撤站日期") + private Date wddt; + + @Schema(description = "建设状态分类") + private Integer bldsttCode; + + @Schema(description = "建设状态名称") + private String bldsttCcodeName; + + @Schema(description = "简介") + private String introduce; + + @Schema(description = "LOGO") + private String logo; + + @Schema(description = "介绍图片") + private String inffile; + + @Schema(description = "是否启用") + private Integer usfl; + + @Schema(description = "数据是否接入") + private Integer dtin; + + @Schema(description = "数据接入来源") + private String dtinSrc; + + @Schema(description = "数据接入类型") + private Integer dtinType; + + @Schema(description = "数据接入开始时间") + private Date dtinTm; + + @Schema(description = "监测方式") + private Integer mway; + + @Schema(description = "监测方式名称") + private String mwayName; + + @Schema(description = "监测指标") + private String stindx; + + @Schema(description = "排序") + private Integer orderIndex; + + @Schema(description = "所属断面编码") + private String dmstcd; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "所属电站名称") + private String ennm; + + @Schema(description = "所属基地编码") + private String baseId; + + @Schema(description = "所属基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "行政区编码") + private String addvcd; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "所属栖息地编码") + private String fhstcd; + + @Schema(description = "是否属于测站") + private Integer ispro; + + @Schema(description = "依托项目") + private String project; + + @Schema(description = "数据监测频次") + private Integer dtfrqcy; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "数据来源") + private String vlsr; + + @Schema(description = "数据来源时间") + private Date vlsrTm; + + @Schema(description = "创建人") + private String recordUser; + + @Schema(description = "创建时间") + private Date recordTime; + + @Schema(description = "更新人") + private String modifyUser; + + @Schema(description = "更新时间") + private Date modifyTime; + + @Schema(description = "是否删除") + private Integer isDeleted; + + @Schema(description = "删除人") + private String deleteUser; + + @Schema(description = "删除时间") + private Date deleteTime; +} diff --git a/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java b/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java new file mode 100644 index 00000000..221745e0 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java @@ -0,0 +1,8 @@ +package com.yfd.platform.env.zq.service; + +import com.yfd.platform.env.zq.entity.vo.ZqBaseInfoVo; + +public interface ZqMonitorService { + + ZqBaseInfoVo getStcdInfo(String stcd); +} diff --git a/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java new file mode 100644 index 00000000..59a43405 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java @@ -0,0 +1,95 @@ +package com.yfd.platform.env.zq.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.common.exception.BizException; +import com.yfd.platform.env.zq.entity.vo.ZqBaseInfoVo; +import com.yfd.platform.env.zq.service.ZqMonitorService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class ZqMonitorServiceImpl implements ZqMonitorService { + + @Resource + private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + + @Override + public ZqBaseInfoVo getStcdInfo(String stcd) { + if (StrUtil.isBlank(stcd)) { + throw new BizException("站点编码不能为空!"); + } + String sql = "SELECT " + + "t.STCD AS stcd, " + + "t.STNM AS stnm, " + + "t.TM AS tm, " + + "t.STTP AS sttp, " + + "t.LGTD AS lgtd, " + + "t.LTTD AS lttd, " + + "t.ELEV AS elev, " + + "t.STLC AS stlc, " + + "t.JCDT AS jcdt, " + + "t.WDDT AS wddt, " + + "t.BLDSTT_CODE AS bldsttCode, " + + "CASE WHEN t.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' WHEN t.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName, " + + "t.INTRODUCE AS introduce, " + + "t.LOGO AS logo, " + + "t.INFFILE AS inffile, " + + "t.USFL AS usfl, " + + "t.DTIN AS dtin, " + + "t.DTIN_SRC AS dtinSrc, " + + "t.DTIN_TYPE AS dtinType, " + + "t.DTIN_TM AS dtinTm, " + + "t.MWAY AS mway, " + + "CASE NVL(t.MWAY, 0) WHEN 1 THEN '人工' WHEN 2 THEN '自动' ELSE '未知' END AS mwayName, " + + "t.STINDX AS stindx, " + + "t.ORDER_INDEX AS orderIndex, " + + "t.DMSTCD AS dmstcd, " + + "t.RSTCD AS rstcd, " + + "eng.ENNM AS ennm, " + + "eng.BASE_ID AS baseId, " + + "base.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "eng.RVCD AS rvcd, " + + "rv.RVNM AS rvcdName, " + + "eng.ADDVCD AS addvcd, " + + "addv.ADDVNM AS addvcdName, " + + "t.FHSTCD AS fhstcd, " + + "t.ISPRO AS ispro, " + + "t.PROJECT AS project, " + + "t.DTFRQCY AS dtfrqcy, " + + "t.REMARK AS remark, " + + "t.VLSR AS vlsr, " + + "t.VLSR_TM AS vlsrTm, " + + "t.RECORD_USER AS recordUser, " + + "t.RECORD_TIME AS recordTime, " + + "t.MODIFY_USER AS modifyUser, " + + "t.MODIFY_TIME AS modifyTime, " + + "t.IS_DELETED AS isDeleted, " + + "t.DELETE_USER AS deleteUser, " + + "t.DELETE_TIME AS deleteTime " + + "FROM SD_RIVER_B_H t " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD " + + "LEFT JOIN SD_HYDROBASE base ON base.BASEID = eng.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD " + + " AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 " + + " AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "WHERE t.STCD = #{map.stcd} " + + " AND NVL(t.IS_DELETED, 0) = 0 "; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, ZqBaseInfoVo.class); + if (list == null || list.isEmpty()) { + return null; + } + return list.get(0); + } +} From 0715616e5f37062904de224b325e9bd60fadc9a3 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 19:06:40 +0800 Subject: [PATCH 07/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E7=AB=99?= =?UTF-8?q?=E7=A0=81=E6=9F=A5=E8=AF=A2=E5=8D=95=E6=9D=A1=E6=A0=96=E6=81=AF?= =?UTF-8?q?=E5=9C=B0=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fh/controller/FhHabitatController.java | 8 + .../env/fh/entity/vo/FhBaseInfoVo.java | 165 ++++++++++++++++++ .../env/fh/service/FhHabitatService.java | 3 + .../fh/service/impl/FhHabitatServiceImpl.java | 79 +++++++++ 4 files changed, 255 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java diff --git a/backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java b/backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java index ddaa23a3..2365c12c 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java @@ -8,9 +8,11 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -58,6 +60,12 @@ public class FhHabitatController { return ResponseResult.successData(fhHabitatService.getMsstbprptList(dataSourceRequest)); } + @GetMapping("/msstbprpt/getStcdInfo") + @Operation(summary = "根据站码查询单条栖息地基础数据") + public ResponseResult getStcdInfo(@RequestParam String stcd) { + return ResponseResult.successData(fhHabitatService.getStcdInfo(stcd)); + } + @PostMapping("/stTbYs/GetStTbYsBVoKendoListCust") @Operation(summary = "水质监测信息查询") public ResponseResult getStTbYsBVoKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java new file mode 100644 index 00000000..5bd36a4c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java @@ -0,0 +1,165 @@ +package com.yfd.platform.env.fh.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "栖息地基础信息") +public class FhBaseInfoVo { + + @Schema(description = "栖息地编码") + private String stcd; + + @Schema(description = "栖息地名称") + private String stnm; + + @Schema(description = "数据时间") + private Date tm; + + @Schema(description = "所属建设阶段") + private Integer blprd; + + @Schema(description = "经度") + private Double lgtd; + + @Schema(description = "纬度") + private Double lttd; + + @Schema(description = "高程") + private Double elev; + + @Schema(description = "站址") + private String stlc; + + @Schema(description = "是否启用") + private Integer usfl; + + @Schema(description = "数据是否接入") + private Integer dtin; + + @Schema(description = "数据接入时间") + private Date dtinTm; + + @Schema(description = "排序") + private Integer orderIndex; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "所属电站名称") + private String ennm; + + @Schema(description = "所属基地编码") + private String baseId; + + @Schema(description = "所属基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "行政区编码") + private String addvcd; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "河段描述") + private String reachdes; + + @Schema(description = "栖息地范围经纬度列表") + private String lglttd; + + @Schema(description = "简介") + private String introduce; + + @Schema(description = "LOGO") + private String logo; + + @Schema(description = "介绍图片") + private String inffile; + + @Schema(description = "投资") + private BigDecimal inv; + + @Schema(description = "投资是否计入主体工程") + private Integer invinmn; + + @Schema(description = "保护对象") + private String bhdx; + + @Schema(description = "保护范围") + private String bhfw; + + @Schema(description = "保护长度") + private BigDecimal bhcd; + + @Schema(description = "保护面积") + private BigDecimal bhmj; + + @Schema(description = "保护河流") + private String bhhl; + + @Schema(description = "保护河段") + private String bhhd; + + @Schema(description = "保护措施") + private String bhcs; + + @Schema(description = "保护方式") + private String bhfs; + + @Schema(description = "实施时间") + private Date attm; + + @Schema(description = "保护外围长度") + private BigDecimal bhwwcd; + + @Schema(description = "保护核心长度") + private BigDecimal bhhxcd; + + @Schema(description = "数据监测频次") + private Integer dtfrqcy; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "数据来源") + private String vlsr; + + @Schema(description = "数据来源时间") + private Date vlsrTm; + + @Schema(description = "创建人") + private String recordUser; + + @Schema(description = "创建时间") + private Date recordTime; + + @Schema(description = "更新人") + private String modifyUser; + + @Schema(description = "更新时间") + private Date modifyTime; + + @Schema(description = "是否删除") + private Integer isDeleted; + + @Schema(description = "删除人") + private String deleteUser; + + @Schema(description = "删除时间") + private Date deleteTime; +} diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java b/backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java index 92b600db..237fa0f0 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java @@ -3,6 +3,7 @@ package com.yfd.platform.env.fh.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.env.fh.entity.ao.FhDefaultAo; +import com.yfd.platform.env.fh.entity.vo.FhBaseInfoVo; import com.yfd.platform.env.fh.entity.vo.FhDefaultVo; import com.yfd.platform.env.fh.entity.vo.HabitatVo; @@ -20,5 +21,7 @@ public interface FhHabitatService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + FhBaseInfoVo getStcdInfo(String stcd); + DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java index c38646c6..d4cd1b34 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java @@ -12,7 +12,9 @@ import com.yfd.platform.common.GroupHelper; import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.env.fh.entity.ao.FhDefaultAo; +import com.yfd.platform.env.fh.entity.vo.FhBaseInfoVo; import com.yfd.platform.env.fh.entity.vo.FhDefaultVo; import com.yfd.platform.env.fh.entity.vo.HabitatVo; import com.yfd.platform.env.fh.entity.vo.FhMsstbprptVo; @@ -161,6 +163,83 @@ public class FhHabitatServiceImpl implements FhHabitatService { return result.get(0); } + @Override + public FhBaseInfoVo getStcdInfo(String stcd) { + if (StrUtil.isBlank(stcd)) { + throw new BizException("站点编码不能为空!"); + } + String sql = "SELECT " + + "t.STCD AS stcd, " + + "t.STNM AS stnm, " + + "t.TM AS tm, " + + "t.BLPRD AS blprd, " + + "t.LGTD AS lgtd, " + + "t.LTTD AS lttd, " + + "t.ELEV AS elev, " + + "t.STLC AS stlc, " + + "t.USFL AS usfl, " + + "t.DTIN AS dtin, " + + "t.DTIN_TM AS dtinTm, " + + "t.ORDER_INDEX AS orderIndex, " + + "t.RSTCD AS rstcd, " + + "eng.ENNM AS ennm, " + + "t.BASE_ID AS baseId, " + + "base.BASENAME AS baseName, " + + "t.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "t.RVCD AS rvcd, " + + "rv.RVNM AS rvcdName, " + + "t.ADDVCD AS addvcd, " + + "addv.ADDVNM AS addvcdName, " + + "t.REACHDES AS reachdes, " + + "t.LGLTTD AS lglttd, " + + "t.INTRODUCE AS introduce, " + + "t.LOGO AS logo, " + + "t.INFFILE AS inffile, " + + "t.INV AS inv, " + + "t.INVINMN AS invinmn, " + + "t.BHDX AS bhdx, " + + "t.BHFW AS bhfw, " + + "t.BHCD AS bhcd, " + + "t.BHMJ AS bhmj, " + + "t.BHHL AS bhhl, " + + "t.BHHD AS bhhd, " + + "t.BHCS AS bhcs, " + + "t.BHFS AS bhfs, " + + "t.ATTM AS attm, " + + "t.BHWWCD AS bhwwcd, " + + "t.BHHXCD AS bhhxcd, " + + "t.DTFRQCY AS dtfrqcy, " + + "t.REMARK AS remark, " + + "t.VLSR AS vlsr, " + + "t.VLSR_TM AS vlsrTm, " + + "t.RECORD_USER AS recordUser, " + + "t.RECORD_TIME AS recordTime, " + + "t.MODIFY_USER AS modifyUser, " + + "t.MODIFY_TIME AS modifyTime, " + + "t.IS_DELETED AS isDeleted, " + + "t.DELETE_USER AS deleteUser, " + + "t.DELETE_TIME AS deleteTime " + + "FROM SD_FHBT_B_H t " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD " + + "LEFT JOIN SD_HYDROBASE base ON base.BASEID = t.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = t.HBRVCD " + + " AND hbrv.BASEID = t.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 " + + " AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = t.RVCD " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = t.ADDVCD " + + "WHERE t.STCD = #{map.stcd} " + + " AND NVL(t.IS_DELETED, 0) = 0 "; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FhBaseInfoVo.class); + if (list == null || list.isEmpty()) { + return null; + } + return list.get(0); + } + @Override public DataSourceResult getSdrvwtsList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); From 704a9c3ff24eb5f8566e51b12ea443aeec0a7baa Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 08:18:24 +0800 Subject: [PATCH 08/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9F=A5=E8=AF=A2=E6=B0=B4=E6=B8=A9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wt/controller/SdWTMonitorController.java | 6 + .../env/wt/entity/vo/SdWtBaseInfoVO.java | 3 + .../env/wt/service/SdWtMonitorService.java | 2 + .../service/impl/SdWtMonitorServiceImpl.java | 162 +++++++++++++++++- 4 files changed, 171 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java index f21913b2..93460c1a 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java @@ -191,6 +191,12 @@ public class SdWTMonitorController { return ResponseResult.successData(sdWtMonitorService.getVmsstbprptList(dataSourceRequest)); } + @PostMapping("/msstbprpt/GetKendoList") + @Operation(summary = "根据条件查询水温基础站点列表") + public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(sdWtMonitorService.getMsstbprptList(dataSourceRequest)); + } + @GetMapping("/msstbprpt/getStcdInfo") @Operation(summary = "根据站码查询单条水温基础数据") public ResponseResult getStcdInfo(@RequestParam String stcd) { diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java index 07d0a824..15a30c95 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java @@ -68,6 +68,9 @@ public class SdWtBaseInfoVO implements Serializable { @Schema(description = "站码") private String stcd; + @Schema(description = "所属栖息地编码") + private String fhstcd; + @Schema(description = "所属电站编码") private String rstcd; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java index 6aec9e4f..9a52159c 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java @@ -20,6 +20,8 @@ public interface SdWtMonitorService { DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); + DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + WtBaseInfoVo getStcdInfo(String stcd); DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java index a9fc3f71..7c0fb6c4 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -842,6 +842,37 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { return result; } + @Override + public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { + List selectFields = dataSourceRequest == null ? null : dataSourceRequest.getSelect(); + String selectSql = buildWtMsstbprptSelectSql(selectFields); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ").append(selectSql).append(" ") + .append("FROM SD_WT_B_H wt ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = wt.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTRV_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) rvRecent ON rvRecent.STCD = wt.STCD ") + .append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTVT_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) vtRecent ON vtRecent.STCD = wt.STCD ") + .append("WHERE NVL(wt.IS_DELETED, 0) = 0 AND NVL(wt.DTIN_TYPE, 0) = 0 "); + + Map paramMap = new HashMap<>(); + appendWtMsstbprptFilters(sql, paramMap, dataSourceRequest == null ? null : dataSourceRequest.getFilter()); + sql.append(buildVmsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + Page page = QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdWtBaseInfoVO.class); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest) { List filters = new ArrayList<>(); @@ -1889,7 +1920,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } else if ("hbrvcd".equals(field)) { orderColumns.add("NVL(hbrvcd, '~') " + dir); } else if ("rstcdStepSort".equals(field)) { - orderColumns.add("NVL(rstcdStepSort, 999999) " + dir); +// orderColumns.add("NVL(rstcdStepSort, 999999) " + dir); } else if ("siteStepSort".equals(field)) { orderColumns.add("NVL(siteStepSort, 999999) " + dir); } else if ("stnm".equals(field)) { @@ -1902,11 +1933,138 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } } if (orderColumns.isEmpty()) { - return " ORDER BY NVL(baseStepSort, 999999) ASC, NVL(rstcdStepSort, 999999) ASC"; + return ""; +// return " ORDER BY NVL(baseStepSort, 999999) ASC, NVL(rstcdStepSort, 999999) ASC"; } return " ORDER BY " + String.join(", ", orderColumns); } + private String buildWtMsstbprptSelectSql(List selectFields) { + Map columnMap = new LinkedHashMap<>(); + columnMap.put("baseName", "hb.BASENAME AS baseName"); + columnMap.put("baseId", "hb.BASEID AS baseId"); + columnMap.put("baseStepSort", "hb.ORDER_INDEX AS baseStepSort"); + columnMap.put("rvcdStepSort", "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort"); + columnMap.put("rstcdStepSort", "eng.ORDER_INDEX AS rstcdStepSort"); + columnMap.put("siteStepSort", "wt.ORDER_INDEX AS siteStepSort"); + columnMap.put("stnm", "wt.STNM AS stnm"); + columnMap.put("ennm", "eng.ENNM AS ennm"); + columnMap.put("jcdt", "wt.JCDT AS jcdt"); + columnMap.put("stindx", "wt.STINDX AS stindx"); + columnMap.put("coenvwState", "CASE WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ELSE 0 END AS coenvwState"); + columnMap.put("sttpCode", "wt.STTP AS sttpCode"); + columnMap.put("sttpName", "sttp.STTP_NAME AS sttpName"); + columnMap.put("sttpFullPath", "sttp.FULL_PATH AS sttpFullPath"); + columnMap.put("stcd", "wt.STCD AS stcd"); + columnMap.put("fhstcd", "wt.FHSTCD AS fhstcd"); + columnMap.put("rstcd", "wt.RSTCD AS rstcd"); + columnMap.put("bldsttCcodeName", "CASE WHEN wt.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' WHEN wt.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName"); + columnMap.put("bldsttCcode", "wt.BLDSTT_CODE AS bldsttCcode"); + columnMap.put("stCode", "NULL AS stCode"); + columnMap.put("stName", "NULL AS stName"); + columnMap.put("dvtp", "eng.DVTP AS dvtp"); + columnMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); + + List actualColumns = new ArrayList<>(); + if (selectFields != null && !selectFields.isEmpty()) { + for (String field : selectFields) { + String column = columnMap.get(field); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(columnMap.values()); + } + return String.join(", ", actualColumns); + } + + private void appendWtMsstbprptFilters(StringBuilder sql, + Map paramMap, + DataSourceRequest.FilterDescriptor filter) { + List filters = new ArrayList<>(); + collectFilters(filter, filters); + for (DataSourceRequest.FilterDescriptor descriptor : filters) { + String field = descriptor.getField(); + String operator = descriptor.getOperator(); + Object value = descriptor.getValue(); + if (StrUtil.isBlank(field) || StrUtil.isBlank(operator)) { + continue; + } + String paramKey = "wtMsst_" + field + "_" + paramMap.size(); + if ("fhstcd".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.FHSTCD", operator, value); + } else if ("sttpCode".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.STTP", operator, value); + } else if ("stcd".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.STCD", operator, value); + } else if ("stnm".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.STNM", operator, value); + } else if ("rstcd".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.RSTCD", operator, value); + } else if ("baseId".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "eng.BASE_ID", operator, value); + } else if ("mway".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.MWAY", operator, value); + } else if ("dtin".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.DTIN", operator, value); + } else if ("bldsttCcode".equals(field)) { + appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.BLDSTT_CODE", operator, value); + } + } + } + + private void appendWtMsstbprptLeaf(StringBuilder sql, + Map paramMap, + String paramKey, + String column, + String operator, + Object value) { + switch (operator) { + case "eq": + sql.append("AND ").append(column).append(" = #{map.").append(paramKey).append("} "); + paramMap.put(paramKey, value); + break; + case "neq": + sql.append("AND ").append(column).append(" <> #{map.").append(paramKey).append("} "); + paramMap.put(paramKey, value); + break; + case "contains": + sql.append("AND ").append(column).append(" LIKE #{map.").append(paramKey).append("} "); + paramMap.put(paramKey, "%" + value + "%"); + break; + case "startswith": + sql.append("AND ").append(column).append(" LIKE #{map.").append(paramKey).append("} "); + paramMap.put(paramKey, value + "%"); + break; + case "endswith": + sql.append("AND ").append(column).append(" LIKE #{map.").append(paramKey).append("} "); + paramMap.put(paramKey, "%" + value); + break; + case "in": + if (value instanceof List && !((List) value).isEmpty()) { + List values = (List) value; + List placeholders = new ArrayList<>(); + for (int i = 0; i < values.size(); i++) { + String itemKey = paramKey + "_" + i; + placeholders.add("#{map." + itemKey + "}"); + paramMap.put(itemKey, values.get(i)); + } + sql.append("AND ").append(column).append(" IN (").append(String.join(", ", placeholders)).append(") "); + } + break; + case "isnull": + sql.append("AND ").append(column).append(" IS NULL "); + break; + case "isnotnull": + sql.append("AND ").append(column).append(" IS NOT NULL "); + break; + default: + break; + } + } + private void collectFilters(DataSourceRequest.FilterDescriptor filter, List result) { if (filter == null) { return; From 0d1abdf94b670a38ffe3d574309160e41ad150f2 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 09:08:00 +0800 Subject: [PATCH 09/47] =?UTF-8?q?fix:=20=E6=B0=B4=E8=B4=A8=E7=AB=99?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/service/impl/EnvWqDataServiceImpl.java | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java index 883ca95a..a3357165 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java @@ -544,6 +544,43 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { @Override public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM SD_WQ_B_H t ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ") + .append(" AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ") + .append(" AND NVL(hbrv.ENABLED, 1) = 1 ") + .append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ") + .append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ") + .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = t.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ") + .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildMsstbprptFilterCondition( + dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, + new int[]{0} + ); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildMsstbprptDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WqBaseInfoVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + String groupField = "dtinType"; String groupColumn = "t.DTIN_TYPE"; String groupDir = "ASC"; @@ -1890,12 +1927,80 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "dtinType" -> "t.DTIN_TYPE"; case "stcd" -> "t.STCD"; case "stnm" -> "t.STNM"; + case "fhstcd" -> "t.FHSTCD"; case "baseId" -> "eng.BASE_ID"; case "dtin" -> "t.DTIN"; default -> null; }; } + private String buildMsstbprptDetailSelectSql(List selectFields) { + Map selectMap = new LinkedHashMap<>(); + selectMap.put("stcd", "t.STCD AS stcd"); + selectMap.put("stnm", "t.STNM AS stnm"); + selectMap.put("tm", "t.TM AS tm"); + selectMap.put("sttp", "t.STTP AS sttp"); + selectMap.put("lgtd", "t.LGTD AS lgtd"); + selectMap.put("lttd", "t.LTTD AS lttd"); + selectMap.put("elev", "t.ELEV AS elev"); + selectMap.put("stlc", "t.STLC AS stlc"); + selectMap.put("wwqtg", "t.WWQTG AS wwqtg"); + selectMap.put("wqtype", "t.WQTYPE AS wqtype"); + selectMap.put("jcdt", "t.JCDT AS jcdt"); + selectMap.put("wddt", "t.WDDT AS wddt"); + selectMap.put("bldsttCode", "t.BLDSTT_CODE AS bldsttCode"); + selectMap.put("introduce", "t.INTRODUCE AS introduce"); + selectMap.put("logo", "t.LOGO AS logo"); + selectMap.put("inffile", "t.INFFILE AS inffile"); + selectMap.put("usfl", "t.USFL AS usfl"); + selectMap.put("dtin", "t.DTIN AS dtin"); + selectMap.put("dtinSrc", "t.DTIN_SRC AS dtinSrc"); + selectMap.put("dtinType", "t.DTIN_TYPE AS dtinType"); + selectMap.put("dtinTm", "t.DTIN_TM AS dtinTm"); + selectMap.put("mway", "t.MWAY AS mway"); + selectMap.put("stindx", "t.STINDX AS stindx"); + selectMap.put("orderIndex", "t.ORDER_INDEX AS orderIndex"); + selectMap.put("rstcd", "t.RSTCD AS rstcd"); + selectMap.put("ennm", "eng.ENNM AS ennm"); + selectMap.put("baseId", "eng.BASE_ID AS baseId"); + selectMap.put("baseName", "hb.BASENAME AS baseName"); + selectMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); + selectMap.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName"); + selectMap.put("rvcd", "eng.RVCD AS rvcd"); + selectMap.put("rvcdName", "rv.RVNM AS rvcdName"); + selectMap.put("addvcd", "eng.ADDVCD AS addvcd"); + selectMap.put("addvcdName", "addv.ADDVNM AS addvcdName"); + selectMap.put("fhstcd", "t.FHSTCD AS fhstcd"); + selectMap.put("ispro", "t.ISPRO AS ispro"); + selectMap.put("dtfrqcy", "t.DTFRQCY AS dtfrqcy"); + selectMap.put("remark", "t.REMARK AS remark"); + selectMap.put("vlsr", "t.VLSR AS vlsr"); + selectMap.put("vlsrTm", "t.VLSR_TM AS vlsrTm"); + selectMap.put("recordUser", "t.RECORD_USER AS recordUser"); + selectMap.put("recordTime", "t.RECORD_TIME AS recordTime"); + selectMap.put("modifyUser", "t.MODIFY_USER AS modifyUser"); + selectMap.put("modifyTime", "t.MODIFY_TIME AS modifyTime"); + selectMap.put("isDeleted", "t.IS_DELETED AS isDeleted"); + selectMap.put("deleteUser", "t.DELETE_USER AS deleteUser"); + selectMap.put("deleteTime", "t.DELETE_TIME AS deleteTime"); + + if (CollUtil.isEmpty(selectFields)) { + return String.join(", ", selectMap.values()); + } + + List actualColumns = new ArrayList<>(); + for (String selectField : selectFields) { + String column = selectMap.get(selectField); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(selectMap.values()); + } + return String.join(", ", actualColumns); + } + private List> toMsstbprptLegacyGroups(List> rows, String groupField) { List> result = new ArrayList<>(); if (rows == null) { @@ -1940,6 +2045,46 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + private String buildMsstbprptDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + } + List orderColumns = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) { + continue; + } + String column = switch (sortDescriptor.getField()) { + case "stcd" -> "t.STCD"; + case "stnm" -> "t.STNM"; + case "tm" -> "t.TM"; + case "sttp" -> "t.STTP"; + case "jcdt" -> "t.JCDT"; + case "rstcd" -> "t.RSTCD"; + case "ennm" -> "eng.ENNM"; + case "baseId" -> "eng.BASE_ID"; + case "baseName" -> "hb.BASENAME"; + case "hbrvcd" -> "eng.HBRVCD"; + case "rvcd" -> "eng.RVCD"; + case "fhstcd" -> "t.FHSTCD"; + case "mway" -> "t.MWAY"; + case "dtin" -> "t.DTIN"; + case "dtinType" -> "t.DTIN_TYPE"; + case "orderIndex" -> "t.ORDER_INDEX"; + default -> null; + }; + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; + orderColumns.add(column + " " + dir + " NULLS LAST"); + } + if (orderColumns.isEmpty()) { + return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + } + return " ORDER BY " + String.join(", ", orderColumns); + } + private String buildEnvWqOrderBySql(List sortList) { if (sortList == null || sortList.isEmpty()) { return ""; From 0ad86754e7cf604c7bf93e9eceed293e19cfeab5 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 09:21:40 +0800 Subject: [PATCH 10/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9F=A5=E8=AF=A2=E6=B0=B4=E6=96=87=E6=B5=81=E9=87=8F?= =?UTF-8?q?=E7=AB=99=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zq/controller/ZqMonitorController.java | 9 + .../env/zq/entity/vo/ZqBaseInfoVo.java | 3 + .../env/zq/service/ZqMonitorService.java | 4 + .../zq/service/impl/ZqMonitorServiceImpl.java | 369 ++++++++++++++++++ 4 files changed, 385 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java b/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java index f877e37e..0b327e37 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java @@ -1,5 +1,6 @@ package com.yfd.platform.env.zq.controller; +import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.env.zq.service.ZqMonitorService; import io.swagger.v3.oas.annotations.Operation; @@ -7,6 +8,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -20,6 +23,12 @@ public class ZqMonitorController { @Resource private ZqMonitorService zqMonitorService; + @PostMapping("/msstbprpt/GetKendoList") + @Operation(summary = "根据条件查询水文流量站基础数据") + public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(zqMonitorService.getMsstbprptList(dataSourceRequest)); + } + @GetMapping("/msstbprpt/getStcdInfo") @Operation(summary = "根据站码查询单条水文站基础数据") public ResponseResult getStcdInfo(@RequestParam String stcd) { diff --git a/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java index 4631ec7e..ff8e42bd 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java @@ -21,6 +21,9 @@ public class ZqBaseInfoVo { @Schema(description = "站类") private String sttp; + @Schema(description = "站类编码") + private String sttpCode; + @Schema(description = "经度") private Double lgtd; diff --git a/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java b/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java index 221745e0..30caf16b 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java @@ -1,8 +1,12 @@ package com.yfd.platform.env.zq.service; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.env.zq.entity.vo.ZqBaseInfoVo; public interface ZqMonitorService { + DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + ZqBaseInfoVo getStcdInfo(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java index 59a43405..27033f5f 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java @@ -1,13 +1,21 @@ package com.yfd.platform.env.zq.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.exception.BizException; import com.yfd.platform.env.zq.entity.vo.ZqBaseInfoVo; import com.yfd.platform.env.zq.service.ZqMonitorService; +import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -18,6 +26,81 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { @Resource private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + @Override + public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM SD_RIVER_B_H t ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ") + .append(" AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ") + .append(" AND NVL(hbrv.ENABLED, 1) = 1 ") + .append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ") + .append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ") + .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildMsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildMsstbprptDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, ZqBaseInfoVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + String groupField = "dtinType"; + String groupColumn = "t.DTIN_TYPE"; + String groupDir = "ASC"; + if (CollUtil.isNotEmpty(dataSourceRequest.getGroup())) { + DataSourceRequest.GroupDescriptor groupDescriptor = dataSourceRequest.getGroup().get(0); + if (groupDescriptor != null && StrUtil.isNotBlank(groupDescriptor.getField())) { + groupField = groupDescriptor.getField(); + String mappedColumn = mapMsstbprptColumn(groupField); + if (StrUtil.isNotBlank(mappedColumn)) { + groupColumn = mappedColumn; + } + if ("desc".equalsIgnoreCase(groupDescriptor.getDir()) || "des".equalsIgnoreCase(groupDescriptor.getDir())) { + groupDir = "DESC"; + } + } + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(groupColumn).append(" AS ").append(groupField.toUpperCase()).append(", ") + .append("COUNT(*) AS COUNT_").append(groupField.toUpperCase()).append(" ") + .append("FROM SD_RIVER_B_H t ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildMsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append("GROUP BY ").append(groupColumn).append(" ") + .append("ORDER BY ").append(groupColumn).append(" ").append(groupDir); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult(); + result.setData(toMsstbprptLegacyGroups(rows, groupField)); + result.setTotal((long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public ZqBaseInfoVo getStcdInfo(String stcd) { if (StrUtil.isBlank(stcd)) { @@ -92,4 +175,290 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { } return list.get(0); } + + private String buildMsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildMsstbprptLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildMsstbprptFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildMsstbprptLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapMsstbprptColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeMsstbprptValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String paramKey = "zqMsstP" + indexHolder[0]++; + paramMap.put(paramKey, item); + placeholders.add("#{map." + paramKey + "}"); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + + String paramKey = "zqMsstP" + indexHolder[0]++; + switch (operator) { + case "eq": + paramMap.put(paramKey, value); + return column + " = #{map." + paramKey + "}"; + case "neq": + paramMap.put(paramKey, value); + return column + " <> #{map." + paramKey + "}"; + case "contains": + paramMap.put(paramKey, "%" + value + "%"); + return column + " LIKE #{map." + paramKey + "}"; + case "startswith": + paramMap.put(paramKey, value + "%"); + return column + " LIKE #{map." + paramKey + "}"; + case "endswith": + paramMap.put(paramKey, "%" + value); + return column + " LIKE #{map." + paramKey + "}"; + case "gt": + paramMap.put(paramKey, value); + return column + " > #{map." + paramKey + "}"; + case "gte": + paramMap.put(paramKey, value); + return column + " >= #{map." + paramKey + "}"; + case "lt": + paramMap.put(paramKey, value); + return column + " < #{map." + paramKey + "}"; + case "lte": + paramMap.put(paramKey, value); + return column + " <= #{map." + paramKey + "}"; + default: + return ""; + } + } + + private List normalizeMsstbprptValues(Object value) { + if (value == null) { + return new ArrayList<>(); + } + if (value instanceof List list) { + return new ArrayList<>(list); + } + String text = String.valueOf(value).trim(); + if (StrUtil.isBlank(text)) { + return new ArrayList<>(); + } + if (text.startsWith("[") && text.endsWith("]")) { + text = text.substring(1, text.length() - 1); + } + List values = new ArrayList<>(); + for (String item : text.split(",")) { + String trimmed = StrUtil.trim(item); + if (StrUtil.isNotBlank(trimmed)) { + values.add(StrUtil.removeAll(trimmed, "\"")); + } + } + return values; + } + + private String mapMsstbprptColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "isDeleted" -> "NVL(t.IS_DELETED, 0)"; + case "sttpCode" -> "t.STTP"; + case "mway" -> "t.MWAY"; + case "dtinType" -> "t.DTIN_TYPE"; + case "stcd" -> "t.STCD"; + case "stnm" -> "t.STNM"; + case "fhstcd" -> "t.FHSTCD"; + case "baseId" -> "eng.BASE_ID"; + case "dtin" -> "t.DTIN"; + case "rstcd" -> "t.RSTCD"; + default -> null; + }; + } + + private String buildMsstbprptDetailSelectSql(List selectFields) { + Map selectMap = new LinkedHashMap<>(); + selectMap.put("stcd", "t.STCD AS stcd"); + selectMap.put("stnm", "t.STNM AS stnm"); + selectMap.put("tm", "t.TM AS tm"); + selectMap.put("sttp", "t.STTP AS sttp"); + selectMap.put("sttpCode", "t.STTP AS sttpCode"); + selectMap.put("lgtd", "t.LGTD AS lgtd"); + selectMap.put("lttd", "t.LTTD AS lttd"); + selectMap.put("elev", "t.ELEV AS elev"); + selectMap.put("stlc", "t.STLC AS stlc"); + selectMap.put("jcdt", "t.JCDT AS jcdt"); + selectMap.put("wddt", "t.WDDT AS wddt"); + selectMap.put("bldsttCode", "t.BLDSTT_CODE AS bldsttCode"); + selectMap.put("bldsttCcodeName", "CASE WHEN t.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' WHEN t.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName"); + selectMap.put("introduce", "t.INTRODUCE AS introduce"); + selectMap.put("logo", "t.LOGO AS logo"); + selectMap.put("inffile", "t.INFFILE AS inffile"); + selectMap.put("usfl", "t.USFL AS usfl"); + selectMap.put("dtin", "t.DTIN AS dtin"); + selectMap.put("dtinSrc", "t.DTIN_SRC AS dtinSrc"); + selectMap.put("dtinType", "t.DTIN_TYPE AS dtinType"); + selectMap.put("dtinTm", "t.DTIN_TM AS dtinTm"); + selectMap.put("mway", "t.MWAY AS mway"); + selectMap.put("mwayName", "CASE NVL(t.MWAY, 0) WHEN 1 THEN '人工' WHEN 2 THEN '自动' ELSE '未知' END AS mwayName"); + selectMap.put("stindx", "t.STINDX AS stindx"); + selectMap.put("orderIndex", "t.ORDER_INDEX AS orderIndex"); + selectMap.put("dmstcd", "t.DMSTCD AS dmstcd"); + selectMap.put("rstcd", "t.RSTCD AS rstcd"); + selectMap.put("ennm", "eng.ENNM AS ennm"); + selectMap.put("baseId", "eng.BASE_ID AS baseId"); + selectMap.put("baseName", "hb.BASENAME AS baseName"); + selectMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); + selectMap.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName"); + selectMap.put("rvcd", "eng.RVCD AS rvcd"); + selectMap.put("rvcdName", "rv.RVNM AS rvcdName"); + selectMap.put("addvcd", "eng.ADDVCD AS addvcd"); + selectMap.put("addvcdName", "addv.ADDVNM AS addvcdName"); + selectMap.put("fhstcd", "t.FHSTCD AS fhstcd"); + selectMap.put("ispro", "t.ISPRO AS ispro"); + selectMap.put("project", "t.PROJECT AS project"); + selectMap.put("dtfrqcy", "t.DTFRQCY AS dtfrqcy"); + selectMap.put("remark", "t.REMARK AS remark"); + selectMap.put("vlsr", "t.VLSR AS vlsr"); + selectMap.put("vlsrTm", "t.VLSR_TM AS vlsrTm"); + selectMap.put("recordUser", "t.RECORD_USER AS recordUser"); + selectMap.put("recordTime", "t.RECORD_TIME AS recordTime"); + selectMap.put("modifyUser", "t.MODIFY_USER AS modifyUser"); + selectMap.put("modifyTime", "t.MODIFY_TIME AS modifyTime"); + selectMap.put("isDeleted", "t.IS_DELETED AS isDeleted"); + selectMap.put("deleteUser", "t.DELETE_USER AS deleteUser"); + selectMap.put("deleteTime", "t.DELETE_TIME AS deleteTime"); + + if (CollUtil.isEmpty(selectFields)) { + return String.join(", ", selectMap.values()); + } + + List actualColumns = new ArrayList<>(); + for (String selectField : selectFields) { + String column = selectMap.get(selectField); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(selectMap.values()); + } + return String.join(", ", actualColumns); + } + + private List> toMsstbprptLegacyGroups(List> rows, String groupField) { + List> result = new ArrayList<>(); + if (rows == null) { + return result; + } + String upperField = groupField == null ? "DTINTYPE" : groupField.toUpperCase(); + String countField = "COUNT_" + upperField; + String aggregateKey = "count_" + groupField; + for (Map row : rows) { + Object key = row.get(upperField); + if (key == null) { + key = row.get(groupField); + } + Object countValue = row.get(countField); + if (countValue == null) { + countValue = row.get("count_" + upperField); + } + long count = 0L; + if (countValue instanceof Number number) { + count = number.longValue(); + } else if (countValue != null) { + count = Long.parseLong(String.valueOf(countValue)); + } + + Map item = new LinkedHashMap<>(); + item.put("key", key); + item.put("keyName", null); + item.put("keyExt", new HashMap<>()); + + Map detail = new LinkedHashMap<>(); + detail.put(upperField, key); + detail.put(countField, count); + item.put("items", List.of(detail)); + item.put("count", count); + item.put("summary", new Object[0]); + + Map aggregates = new LinkedHashMap<>(); + aggregates.put(aggregateKey, count); + item.put("aggregates", aggregates); + result.add(item); + } + return result; + } + + private String buildMsstbprptDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + } + List orderColumns = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) { + continue; + } + String column = switch (sortDescriptor.getField()) { + case "stcd" -> "t.STCD"; + case "stnm" -> "t.STNM"; + case "tm" -> "t.TM"; + case "sttp", "sttpCode" -> "t.STTP"; + case "jcdt" -> "t.JCDT"; + case "rstcd" -> "t.RSTCD"; + case "ennm" -> "eng.ENNM"; + case "baseId" -> "eng.BASE_ID"; + case "baseName" -> "hb.BASENAME"; + case "hbrvcd" -> "eng.HBRVCD"; + case "rvcd" -> "eng.RVCD"; + case "fhstcd" -> "t.FHSTCD"; + case "mway" -> "t.MWAY"; + case "dtin" -> "t.DTIN"; + case "dtinType" -> "t.DTIN_TYPE"; + case "orderIndex" -> "t.ORDER_INDEX"; + default -> null; + }; + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; + orderColumns.add(column + " " + dir + " NULLS LAST"); + } + if (orderColumns.isEmpty()) { + return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + } + return " ORDER BY " + String.join(", ", orderColumns); + } } From 3acd4386f0aca14c08b7518fa36074baeff481ab Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 10:23:29 +0800 Subject: [PATCH 11/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9F=A5=E8=AF=A2=E8=BF=87=E9=B1=BC=E8=AE=BE=E6=96=BD?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fp/controller/FishPassageController.java | 6 + .../env/fp/entity/vo/FpVmsstbprptVo.java | 243 ++++++++++++++ .../env/fp/service/FpBuildService.java | 3 + .../fp/service/impl/FpBuildServiceImpl.java | 301 ++++++++++++++++++ 4 files changed, 553 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java diff --git a/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java b/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java index 4b4f1bae..c0d3543a 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java +++ b/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java @@ -40,6 +40,12 @@ public class FishPassageController { return ResponseResult.successData(fpBuildService.processKendoList(dataSourceRequest)); } + @PostMapping("/vmsstbprpt/GetKendoList") + @Operation(summary = "根据条件查询过鱼设施基础列表") + public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(fpBuildService.getVmsstbprptList(dataSourceRequest)); + } + @GetMapping("/run/qgc/year/GetYearFpStatistics") @Operation(summary = "全过程过鱼统计总数,根据基地分组") public ResponseResult getYearFpStatic(@RequestParam("year") String year) { diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java new file mode 100644 index 00000000..9a124dfc --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java @@ -0,0 +1,243 @@ +package com.yfd.platform.env.fp.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "过鱼设施基础列表") +public class FpVmsstbprptVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "过鱼设施编码") + private String stcd; + + @Schema(description = "过鱼设施名称") + private String stnm; + + @Schema(description = "过鱼设施类型编码") + private String sttpCode; + + @Schema(description = "过鱼设施类型名称") + private String sttpName; + + @Schema(description = "过鱼设施类型全路径") + private String sttpFullPath; + + @Schema(description = "过鱼设施类型层级") + private Integer sttpTreeLevel; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "所属电站名称") + private String ennm; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal elev; + + @Schema(description = "站址") + private String stlc; + + @Schema(description = "数据是否接入") + private Integer dtin; + + @Schema(description = "接入状态中文") + private String dtinName; + + @Schema(description = "数据接入时间") + private Date dtinTm; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "建设状态中文") + private String bldsttCcodeName; + + @Schema(description = "规划设计日期") + private Date stdsdt; + + @Schema(description = "计划开工日期") + private Date pststdt; + + @Schema(description = "计划完工日期") + private Date pesstdt; + + @Schema(description = "开工日期") + private Date swdt; + + @Schema(description = "建成日期") + private Date jcdt; + + @Schema(description = "退役/拆除日期") + private Date wddt; + + @Schema(description = "简介") + private String introduce; + + @Schema(description = "鱼道型式") + private String ydxs; + + @Schema(description = "鱼道总长度") + private BigDecimal ydzcd; + + @Schema(description = "鱼道进口运行设计水位") + private BigDecimal ydjkz; + + @Schema(description = "鱼道进口数量") + private Integer ydjkcnt; + + @Schema(description = "进口高程") + private BigDecimal jkhg; + + @Schema(description = "鱼道进口诱鱼型式") + private String ydyyxs; + + @Schema(description = "鱼道出口运行设计水位") + private BigDecimal ydckz; + + @Schema(description = "鱼道出口数量") + private Integer ydckcnt; + + @Schema(description = "出口高程") + private BigDecimal ckhg; + + @Schema(description = "鱼道池室设计流速") + private BigDecimal ydcsv; + + @Schema(description = "鱼道每级池室长") + private BigDecimal ydcscd; + + @Schema(description = "鱼道每级池室宽") + private BigDecimal ydcskd; + + @Schema(description = "鱼道池室坡度") + private String ydcspd; + + @Schema(description = "鱼道池室数量") + private Integer ydcscnt; + + @Schema(description = "鱼道休息池个数") + private Integer ydxxccnt; + + @Schema(description = "鱼道或仿自然通道流速") + private String v; + + @Schema(description = "仿自然通道断面形状") + private String fzrdmxz; + + @Schema(description = "仿自然通道长度宽度") + private String fzrtdsz; + + @Schema(description = "仿自然通道运行水深") + private BigDecimal fzryxwdp; + + @Schema(description = "仿自然通道坡降") + private BigDecimal fzrpj; + + @Schema(description = "上游码头位置") + private String symtlc; + + @Schema(description = "上游码头型式") + private String symtxs; + + @Schema(description = "下游码头位置") + private String xymtlc; + + @Schema(description = "下游码头型式") + private String xymtxs; + + @Schema(description = "集诱鱼方式") + private String jyfs; + + @Schema(description = "运鱼设施方式") + private String yyfs; + + @Schema(description = "升鱼机集鱼槽数量") + private Integer syjcnt; + + @Schema(description = "升鱼机集鱼槽进口高程") + private BigDecimal syjhg; + + @Schema(description = "升鱼机集鱼槽流量") + private String syjq; + + @Schema(description = "升鱼机断面尺寸") + private String syjsz; + + @Schema(description = "升鱼机集鱼槽水深") + private String syjwdp; + + @Schema(description = "设计过鱼规模") + private Integer sjgycnt; + + @Schema(description = "主要过鱼对象描述") + private String zygydxms; + + @Schema(description = "兼顾过鱼对象描述") + private String jggydxms; + + @Schema(description = "过鱼时间") + private String gytm; + + @Schema(description = "运行时间") + private String yxtm; + + @Schema(description = "主要过鱼月份") + private String fpssmn; + + @Schema(description = "数据监测频次") + private Integer dtfrqcy; + + @Schema(description = "基本特性参数") + private String jbtxcs; + + @Schema(description = "是否上行") + private Integer isUp; + + @Schema(description = "是否下行") + private Integer isDown; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "数据来源") + private String vlsr; + + @Schema(description = "数据来源时间") + private Date vlsrTm; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java b/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java index bf470bf0..1492859d 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java +++ b/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java @@ -3,8 +3,11 @@ package com.yfd.platform.env.fp.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.env.fp.entity.vo.FpConstructionSituationVo; +import com.yfd.platform.env.fp.entity.vo.FpVmsstbprptVo; public interface FpBuildService { DataSourceResult processKendoList(DataSourceRequest dataSourceRequest); + + DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java index c6dbadd1..d01d3196 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java @@ -7,13 +7,17 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; import com.yfd.platform.env.fp.entity.vo.FpConstructionSituationVo; +import com.yfd.platform.env.fp.entity.vo.FpVmsstbprptVo; import com.yfd.platform.env.fp.service.FpBuildService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; +import org.springframework.util.CollectionUtils; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; @Service public class FpBuildServiceImpl implements FpBuildService { @@ -51,4 +55,301 @@ public class FpBuildServiceImpl implements FpBuildService { result.setAggregates(new HashMap<>()); return result; } + + @Override + public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + Map paramMap = new HashMap<>(); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("fp.STCD AS stcd, ") + .append("fp.STNM AS stnm, ") + .append("fp.STTP AS sttpCode, ") + .append("sttp.STTP_NAME AS sttpName, ") + .append("sttp.FULL_PATH AS sttpFullPath, ") + .append("sttp.TREE_LEVEL AS sttpTreeLevel, ") + .append("fp.RSTCD AS rstcd, ") + .append("eng.ENNM AS ennm, ") + .append("eng.BASE_ID AS baseId, ") + .append("hb.BASENAME AS baseName, ") + .append("eng.HBRVCD AS hbrvcd, ") + .append("hbrv.HBRVNM AS hbrvcdName, ") + .append("fp.LGTD AS lgtd, ") + .append("fp.LTTD AS lttd, ") + .append("fp.ELEV AS elev, ") + .append("fp.STLC AS stlc, ") + .append("fp.DTIN AS dtin, ") + .append("CASE WHEN NVL(fp.DTIN, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName, ") + .append("fp.DTIN_TM AS dtinTm, ") + .append("fp.BLDSTT_CODE AS bldsttCcode, ") + .append("CASE ") + .append("WHEN fp.BLDSTT_CODE IN (1, 10, 11) THEN '已建' ") + .append("WHEN fp.BLDSTT_CODE IN (2, 7, 8) THEN '在建' ") + .append("ELSE '未建/规划' END AS bldsttCcodeName, ") + .append("fp.STDSDT AS stdsdt, ") + .append("fp.PSTSTDT AS pststdt, ") + .append("fp.PESSTDT AS pesstdt, ") + .append("fp.SWDT AS swdt, ") + .append("fp.JCDT AS jcdt, ") + .append("fp.WDDT AS wddt, ") + .append("fp.INTRODUCE AS introduce, ") + .append("fp.YDXS AS ydxs, ") + .append("fp.YDZCD AS ydzcd, ") + .append("fp.YDJKZ AS ydjkz, ") + .append("fp.YDJKCNT AS ydjkcnt, ") + .append("fp.JKHG AS jkhg, ") + .append("fp.YDYYXS AS ydyyxs, ") + .append("fp.YDCKZ AS ydckz, ") + .append("fp.YDCKCNT AS ydckcnt, ") + .append("fp.CKHG AS ckhg, ") + .append("fp.YDCSV AS ydcsv, ") + .append("fp.YDCSCD AS ydcscd, ") + .append("fp.YDCSKD AS ydcskd, ") + .append("fp.YDCSPD AS ydcspd, ") + .append("fp.YDCSCNT AS ydcscnt, ") + .append("fp.YDXXCCNT AS ydxxccnt, ") + .append("fp.V AS v, ") + .append("fp.FZRDMXZ AS fzrdmxz, ") + .append("fp.FZRTDSZ AS fzrtdsz, ") + .append("fp.FZRYXWDP AS fzryxwdp, ") + .append("fp.FZRPJ AS fzrpj, ") + .append("fp.SYMTLC AS symtlc, ") + .append("fp.SYMTXS AS symtxs, ") + .append("fp.XYMTLC AS xymtlc, ") + .append("fp.XYMTXS AS xymtxs, ") + .append("fp.JYFS AS jyfs, ") + .append("fp.YYFS AS yyfs, ") + .append("fp.SYJCNT AS syjcnt, ") + .append("fp.SYJHG AS syjhg, ") + .append("fp.SYJQ AS syjq, ") + .append("fp.SYJSZ AS syjsz, ") + .append("fp.SYJWDP AS syjwdp, ") + .append("fp.SJGYCNT AS sjgycnt, ") + .append("fp.ZYGYDXMS AS zygydxms, ") + .append("fp.JGGYDXMS AS jggydxms, ") + .append("fp.GYTM AS gytm, ") + .append("fp.YXTM AS yxtm, ") + .append("fp.FPSSMN AS fpssmn, ") + .append("fp.DTFRQCY AS dtfrqcy, ") + .append("fp.JBTXCS AS jbtxcs, ") + .append("fp.IS_UP AS isUp, ") + .append("fp.IS_DOWN AS isDown, ") + .append("fp.REMARK AS remark, ") + .append("fp.VLSR AS vlsr, ") + .append("fp.VLSR_TM AS vlsrTm, ") + .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") + .append("NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, ") + .append("NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, ") + .append("NVL(fp.ORDER_INDEX, 999999) AS siteStepSort ") + .append("FROM SD_FPSS_B_H fp ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = fp.RSTCD ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 ") + .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = fp.STTP ") + .append(" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ") + .append("WHERE 1 = 1 "); + + String filterSql = buildVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, new int[]{0}); + if (!filterSql.isBlank()) { + sql.append(" AND ").append(filterSql); + } + + sql.append(buildVmsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, sql.toString(), paramMap, FpVmsstbprptVo.class); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (filter.getField() != null && !filter.getField().isBlank()) { + return buildVmsstbprptLeafCondition(filter, paramMap, indexHolder); + } + if (CollectionUtils.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildVmsstbprptFilterCondition(child, paramMap, indexHolder); + if (!childSql.isBlank()) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildVmsstbprptLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapVmsstbprptColumn(filter.getField()); + if (column == null || column.isBlank()) { + return ""; + } + String operator = filter.getOperator() == null ? "eq" : filter.getOperator().toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String paramKey = "fpVmsParam" + indexHolder[0]++; + paramMap.put(paramKey, item); + placeholders.add("#{map." + paramKey + "}"); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if (value == null) { + return ""; + } + String paramKey = "fpVmsParam" + indexHolder[0]++; + switch (operator) { + case "eq": + paramMap.put(paramKey, value); + return column + " = #{map." + paramKey + "}"; + case "neq": + paramMap.put(paramKey, value); + return column + " <> #{map." + paramKey + "}"; + case "contains": + paramMap.put(paramKey, "%" + value + "%"); + return column + " LIKE #{map." + paramKey + "}"; + case "startswith": + paramMap.put(paramKey, value + "%"); + return column + " LIKE #{map." + paramKey + "}"; + case "endswith": + paramMap.put(paramKey, "%" + value); + return column + " LIKE #{map." + paramKey + "}"; + case "gt": + paramMap.put(paramKey, value); + return column + " > #{map." + paramKey + "}"; + case "gte": + paramMap.put(paramKey, value); + return column + " >= #{map." + paramKey + "}"; + case "lt": + paramMap.put(paramKey, value); + return column + " < #{map." + paramKey + "}"; + case "lte": + paramMap.put(paramKey, value); + return column + " <= #{map." + paramKey + "}"; + default: + return ""; + } + } + + private List normalizeValues(Object value) { + List values = new ArrayList<>(); + if (value instanceof List list) { + for (Object item : list) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value instanceof Object[] array) { + for (Object item : array) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value != null) { + values.add(value); + } + return values; + } + + private String mapVmsstbprptColumn(String field) { + if (field == null || field.isBlank()) { + return null; + } + Map columnMap = new HashMap<>(); + columnMap.put("stcd", "fp.STCD"); + columnMap.put("stnm", "fp.STNM"); + columnMap.put("sttpCode", "fp.STTP"); + columnMap.put("sttpName", "sttp.STTP_NAME"); + columnMap.put("sttpFullPath", "sttp.FULL_PATH"); + columnMap.put("rstcd", "fp.RSTCD"); + columnMap.put("ennm", "eng.ENNM"); + columnMap.put("baseId", "eng.BASE_ID"); + columnMap.put("baseName", "hb.BASENAME"); + columnMap.put("hbrvcd", "eng.HBRVCD"); + columnMap.put("dtin", "fp.DTIN"); + columnMap.put("dtinName", "CASE WHEN NVL(fp.DTIN, 0) = 1 THEN '已接入' ELSE '未接入' END"); + columnMap.put("bldsttCcode", "fp.BLDSTT_CODE"); + columnMap.put("bldsttCcodeName", "CASE WHEN fp.BLDSTT_CODE IN (1, 10, 11) THEN '已建' WHEN fp.BLDSTT_CODE IN (2, 7, 8) THEN '在建' ELSE '未建/规划' END"); + columnMap.put("ydxs", "fp.YDXS"); + columnMap.put("siteStepSort", "fp.ORDER_INDEX"); + columnMap.put("rstcdStepSort", "eng.ORDER_INDEX"); + columnMap.put("baseStepSort", "hb.ORDER_INDEX"); + columnMap.put("rvcdStepSort", "hbrv.ORDER_INDEX"); + return columnMap.get(field); + } + + private String buildVmsstbprptOrderBySql(List sorts) { + if (sorts == null || sorts.isEmpty()) { + return " ORDER BY NVL(hb.ORDER_INDEX, 999999) ASC, NVL(hbrv.ORDER_INDEX, 999999) ASC, " + + "NVL(eng.ORDER_INDEX, 999999) ASC, NVL(fp.ORDER_INDEX, 999999) ASC, fp.STCD ASC"; + } + Map sortMap = new HashMap<>(); + sortMap.put("stcd", "fp.STCD"); + sortMap.put("stnm", "fp.STNM"); + sortMap.put("sttpCode", "fp.STTP"); + sortMap.put("sttpName", "sttp.STTP_NAME"); + sortMap.put("rstcd", "fp.RSTCD"); + sortMap.put("ennm", "eng.ENNM"); + sortMap.put("baseId", "eng.BASE_ID"); + sortMap.put("baseName", "hb.BASENAME"); + sortMap.put("hbrvcd", "eng.HBRVCD"); + sortMap.put("dtin", "fp.DTIN"); + sortMap.put("bldsttCcode", "fp.BLDSTT_CODE"); + sortMap.put("baseStepSort", "hb.ORDER_INDEX"); + sortMap.put("rvcdStepSort", "hbrv.ORDER_INDEX"); + sortMap.put("rstcdStepSort", "eng.ORDER_INDEX"); + sortMap.put("siteStepSort", "fp.ORDER_INDEX"); + + List orderItems = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sorts) { + if (sort == null || sort.getField() == null || sort.getField().isBlank()) { + continue; + } + String column = sortMap.get(sort.getField()); + if (column == null) { + continue; + } + String direction = "desc".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orderItems.add(column + " " + direction); + } + if (orderItems.isEmpty()) { + return " ORDER BY NVL(hb.ORDER_INDEX, 999999) ASC, NVL(hbrv.ORDER_INDEX, 999999) ASC, " + + "NVL(eng.ORDER_INDEX, 999999) ASC, NVL(fp.ORDER_INDEX, 999999) ASC, fp.STCD ASC"; + } + return " ORDER BY " + String.join(", ", orderItems); + } } From a342d66ff9b048bca2198cefb7b09ba8611e7f19 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 10:30:24 +0800 Subject: [PATCH 12/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E7=AB=99?= =?UTF-8?q?=E7=A0=81=E6=9F=A5=E8=AF=A2=E5=8D=95=E6=9D=A1=E8=BF=87=E9=B1=BC?= =?UTF-8?q?=E8=AE=BE=E6=96=BD=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fp/controller/FishPassageController.java | 6 +++ .../env/fp/service/FpBuildService.java | 2 + .../fp/service/impl/FpBuildServiceImpl.java | 51 ++++++++++++------- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java b/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java index c0d3543a..f218d426 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java +++ b/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java @@ -46,6 +46,12 @@ public class FishPassageController { return ResponseResult.successData(fpBuildService.getVmsstbprptList(dataSourceRequest)); } + @GetMapping("/msstbprpt/getStInfoByStcd") + @Operation(summary = "根据站码查询单条过鱼设施基础数据") + public ResponseResult getStInfoByStcd(@RequestParam String stcd) { + return ResponseResult.successData(fpBuildService.getStInfoByStcd(stcd)); + } + @GetMapping("/run/qgc/year/GetYearFpStatistics") @Operation(summary = "全过程过鱼统计总数,根据基地分组") public ResponseResult getYearFpStatic(@RequestParam("year") String year) { diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java b/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java index 1492859d..1053e9ee 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java +++ b/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java @@ -10,4 +10,6 @@ public interface FpBuildService { DataSourceResult processKendoList(DataSourceRequest dataSourceRequest); DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); + + FpVmsstbprptVo getStInfoByStcd(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java index d01d3196..6153fdb7 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java @@ -62,6 +62,39 @@ public class FpBuildServiceImpl implements FpBuildService { Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); Map paramMap = new HashMap<>(); + StringBuilder sql = new StringBuilder(buildVmsstbprptBaseSql()); + + String filterSql = buildVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, new int[]{0}); + if (!filterSql.isBlank()) { + sql.append(" AND ").append(filterSql); + } + + sql.append(buildVmsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, sql.toString(), paramMap, FpVmsstbprptVo.class); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + @Override + public FpVmsstbprptVo getStInfoByStcd(String stcd) { + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + String sql = buildVmsstbprptBaseSql() + " AND fp.STCD = #{map.stcd}"; + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FpVmsstbprptVo.class); + if (list == null || list.isEmpty()) { + return null; + } + return list.getFirst(); + } + + private String buildVmsstbprptBaseSql() { StringBuilder sql = new StringBuilder(); sql.append("SELECT ") .append("fp.STCD AS stcd, ") @@ -151,23 +184,7 @@ public class FpBuildServiceImpl implements FpBuildService { .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = fp.STTP ") .append(" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ") .append("WHERE 1 = 1 "); - - String filterSql = buildVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), - paramMap, new int[]{0}); - if (!filterSql.isBlank()) { - sql.append(" AND ").append(filterSql); - } - - sql.append(buildVmsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); - - List list = microservicDynamicSQLMapper.pageAllListWithResultType( - page, sql.toString(), paramMap, FpVmsstbprptVo.class); - - DataSourceResult result = new DataSourceResult<>(); - result.setData(list); - result.setTotal(page != null ? page.getTotal() : list.size()); - result.setAggregates(new HashMap<>()); - return result; + return sql.toString(); } private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, From 21a5282572047047d0b7da2bd6024ba77abe040c Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 11:04:27 +0800 Subject: [PATCH 13/47] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FpssRController.java | 6 +-- .../controller/SdCountryBController.java | 7 ++-- .../controller/SdEngInfoBHController.java | 9 ++--- .../controller/SdFishDictoryBController.java | 7 ++-- .../controller/SdFpssBHController.java | 8 ++-- .../controller/SdHbrvDicController.java | 6 +-- .../controller/SdHycdDicController.java | 6 +-- .../controller/SdHydrobaseController.java | 6 +-- .../controller/SdRvcdDicController.java | 6 +-- .../controller/TreeStructureController.java | 4 +- .../{env => qgc_base}/domain/SdCountryB.java | 2 +- .../{env => qgc_base}/domain/SdEngInfoBH.java | 2 +- .../domain/SdEngInfoBHRequest.java | 2 +- .../domain/SdFishDictoryB.java | 2 +- .../{env => qgc_base}/domain/SdFpssBH.java | 2 +- .../{env => qgc_base}/domain/SdFpssR.java | 2 +- .../{env => qgc_base}/domain/SdHbrvDic.java | 2 +- .../{env => qgc_base}/domain/SdHycdDic.java | 2 +- .../{env => qgc_base}/domain/SdHydrobase.java | 2 +- .../domain/SdPraddRltnB.java | 2 +- .../{env => qgc_base}/domain/SdPrhbrltnB.java | 2 +- .../{env => qgc_base}/domain/SdPrhyrltnB.java | 2 +- .../{env => qgc_base}/domain/SdRvcdDic.java | 3 +- .../domain/StationBasinInfo.java | 2 +- .../entity/vo/BatchDeleteAo.java | 2 +- .../entity/vo/DataParam.java | 2 +- .../entity/vo/HydrobaseWbsVo.java | 2 +- .../mapper/SdCountryBMapper.java | 4 +- .../mapper/SdEngInfoBHMapper.java | 6 +-- .../mapper/SdFishDictoryBMapper.java | 4 +- .../mapper/SdFpssBHMapper.java | 4 +- .../mapper/SdFpssRMapper.java | 4 +- .../mapper/SdHbrvDicMapper.java | 4 +- .../mapper/SdHycdDicMapper.java | 4 +- .../mapper/SdHydrobaseMapper.java | 4 +- .../mapper/SdPrhbrltnBMapper.java | 4 +- .../mapper/SdPrhyrltnBMapper.java | 4 +- .../mapper/SdRvcdDicMapper.java | 4 +- .../service/ISdCountryBService.java | 4 +- .../service/ISdEngInfoBHService.java | 6 +-- .../service/ISdFishDictoryBService.java | 4 +- .../service/ISdFpssBHService.java | 4 +- .../service/ISdFpssRService.java | 4 +- .../service/ISdHbrvDicService.java | 4 +- .../service/ISdHycdDicService.java | 4 +- .../service/ISdHydrobaseService.java | 6 +-- .../service/ISdRvcdDicService.java | 4 +- .../service/ITreeStructureService.java | 4 +- .../service/impl/SdCountryBServiceImpl.java | 8 ++-- .../service/impl/SdEngInfoBHServiceImpl.java | 14 +++---- .../impl/SdFishDictoryBServiceImpl.java | 8 ++-- .../service/impl/SdFpssBHServiceImpl.java | 16 ++++---- .../service/impl/SdFpssRServiceImpl.java | 8 ++-- .../service/impl/SdHbrvDicServiceImpl.java | 17 ++++---- .../service/impl/SdHycdDicServiceImpl.java | 8 ++-- .../service/impl/SdHydrobaseServiceImpl.java | 19 +++++---- .../service/impl/SdRvcdDicServiceImpl.java | 8 ++-- .../impl/TreeStructureServiceImpl.java | 18 ++++----- .../ApprovalChangeLogController.java | 7 ++-- .../controller/ApprovalLogController.java | 7 ++-- .../controller/ApprovalMainController.java | 8 ++-- .../controller/FishDraftDataController.java | 25 ++++++------ .../controller/ImportTaskController.java | 8 ++-- .../SysUserDataScopeController.java | 10 ++--- .../domain/ApprovalChangeLog.java | 2 +- .../domain/ApprovalLog.java | 2 +- .../domain/ApprovalMain.java | 2 +- .../domain/BatchApproveRequest.java | 2 +- .../domain/BatchRejectRequest.java | 2 +- .../domain/BatchSaveDraftRequest.java | 2 +- .../domain/FishDraftData.java | 2 +- .../domain/FishImportRequest.java | 2 +- .../domain/FishImportResult.java | 2 +- .../domain/FishImportRowRequest.java | 2 +- .../{data => qgc_data}/domain/ImportTask.java | 2 +- .../domain/ImportTaskRequest.java | 2 +- .../domain/ImportTaskRow.java | 2 +- .../domain/SysUserDataScope.java | 3 +- .../domain/bo/EditUserDataScopeBo.java | 4 +- .../domain/vo/FishDraftDataVO.java | 3 +- .../domain/vo/FishStatisticsVO.java | 2 +- .../domain/vo/SysUserDataScopeVO.java | 2 +- .../mapper/ApprovalChangeLogMapper.java | 4 +- .../mapper/ApprovalLogMapper.java | 4 +- .../mapper/ApprovalMainMapper.java | 4 +- .../mapper/FishDraftDataMapper.java | 6 +-- .../mapper/FishStatisticsMapper.java | 4 +- .../mapper/ImportTaskMapper.java | 4 +- .../mapper/ImportTaskRowMapper.java | 4 +- .../mapper/SysUserDataScopeMapper.java | 5 +-- .../service/AttachmentUploadService.java | 7 +--- .../service/IApprovalChangeLogService.java | 4 +- .../service/IApprovalLogService.java | 4 +- .../service/IApprovalMainService.java | 5 +-- .../service/IFishDraftDataService.java | 6 +-- .../service/IFishImportService.java | 11 +++--- .../service/IFishStatisticsService.java | 4 +- .../service/IFishZipImportService.java | 4 +- .../service/IImportTaskService.java | 8 ++-- .../service/ISysUserDataScopeService.java | 8 ++-- .../impl/ApprovalChangeLogServiceImpl.java | 10 ++--- .../service/impl/ApprovalLogServiceImpl.java | 8 ++-- .../service/impl/ApprovalMainServiceImpl.java | 15 +++---- .../impl/FishDraftDataServiceImpl.java | 39 +++++++++---------- .../service/impl/FishImportServiceImpl.java | 26 ++++++------- .../impl/FishStatisticsServiceImpl.java | 9 ++--- .../service/impl/ImportTaskServiceImpl.java | 20 +++++----- .../impl/SysUserDataScopeServiceImpl.java | 32 +++++++-------- .../{data => qgc_data}/utils/ZipFileUtil.java | 2 +- .../controller/AlarmPointController.java | 6 +-- .../controller/EngEqController.java | 4 +- .../controller/EngEqDataController.java | 4 +- .../controller/EngEqIntervalController.java | 9 ++--- .../controller/EngEqStatController.java | 4 +- .../controller/EngSpecialController.java | 6 +-- .../{eng => qgc_eng}/domain/MsEngEq.java | 2 +- .../{eng => qgc_eng}/entity/EqSpecial.java | 2 +- .../entity/vo/AlarmStcdCountVo.java | 2 +- .../entity/vo/EngEqDataVo.java | 2 +- .../entity/vo/EngEqDayDataVo.java | 2 +- .../entity/vo/EngEqDrtpDataVo.java | 2 +- .../{eng => qgc_eng}/mapper/EngEqMapper.java | 4 +- .../service/AlarmPointService.java | 4 +- .../service/EngEqDataService.java | 2 +- .../service/EngEqIntervalService.java | 4 +- .../service/EngEqService.java | 4 +- .../service/EngSpecialService.java | 4 +- .../service/impl/AlarmPointServiceImpl.java | 6 +-- .../service/impl/EngEqDataServiceImpl.java | 4 +- .../impl/EngEqIntervalServiceImpl.java | 6 +-- .../service/impl/EngEqServiceImpl.java | 8 ++-- .../service/impl/EngSpecialServiceImpl.java | 6 +-- .../fh/controller/FhHabitatController.java | 6 +-- .../fh/entity/ao/FhDefaultAo.java | 2 +- .../fh/entity/vo/FhBaseInfoVo.java | 2 +- .../fh/entity/vo/FhDefaultVo.java | 2 +- .../fh/entity/vo/FhMsstbprptVo.java | 2 +- .../fh/entity/vo/FhSdriverdayVo.java | 2 +- .../fh/entity/vo/FhSdrvwtsVo.java | 2 +- .../fh/entity/vo/HabitatVo.java | 2 +- .../fh/service/FhHabitatService.java | 10 ++--- .../fh/service/impl/FhHabitatServiceImpl.java | 20 +++++----- .../fp/controller/FishPassageController.java | 6 +-- .../fp/entity/vo/FdFishVo.java | 2 +- .../entity/vo/FpConstructionSituationVo.java | 2 +- .../fp/entity/vo/FpFtpStatisticsVo.java | 2 +- .../fp/entity/vo/FpRunPlanVo.java | 2 +- .../fp/entity/vo/FpVmsstbprptVo.java | 2 +- .../fp/entity/vo/YearFpStatisticsVo.java | 2 +- .../fp/service/FpBuildService.java | 6 +-- .../fp/service/FpRunService.java | 6 +-- .../fp/service/impl/FpBuildServiceImpl.java | 8 ++-- .../fp/service/impl/FpRunServiceImpl.java | 10 ++--- .../wq/controller/EnvWqDataController.java | 4 +- .../wq/entity/vo/EnvWqDataVo.java | 2 +- .../wq/entity/vo/EnvWqVo.java | 2 +- .../wq/entity/vo/StTbYsVo.java | 2 +- .../wq/entity/vo/StbprpYsVo.java | 2 +- .../wq/entity/vo/WqAlongVo.java | 2 +- .../wq/entity/vo/WqBaseInfoVo.java | 2 +- .../wq/entity/vo/WqMsstbprptGroupVo.java | 2 +- .../wq/entity/vo/WqVmsstbprptVo.java | 2 +- .../wq/service/EnvWqDataService.java | 4 +- .../wq/service/impl/EnvWqDataServiceImpl.java | 8 ++-- .../wt/controller/SdWTMonitorController.java | 8 ++-- .../wt/entity/vo/DfltkwFacilityCountVo.java | 2 +- .../wt/entity/vo/FishSpawnVo.java | 2 +- .../wt/entity/vo/RstcdTreeInfoVo.java | 2 +- .../wt/entity/vo/SdAlongDetailVO.java | 2 +- .../wt/entity/vo/SdAlongVO.java | 2 +- .../wt/entity/vo/SdDzChuiXiangListVO.java | 2 +- .../wt/entity/vo/SdMonthDetailVO.java | 2 +- .../wt/entity/vo/SdRvwtSVO.java | 2 +- .../wt/entity/vo/SdWtBaseInfoVO.java | 2 +- .../wt/entity/vo/SdWtMonitorCountVO.java | 2 +- .../wt/entity/vo/SdWtvtYearVo.java | 2 +- .../wt/entity/vo/SdYearDetailVO.java | 2 +- .../wt/entity/vo/SdYearListVO.java | 2 +- .../{env => qgc_env}/wt/entity/vo/StcdVo.java | 2 +- .../wt/entity/vo/SttpInfoVo.java | 2 +- .../{env => qgc_env}/wt/entity/vo/WbsbVo.java | 2 +- .../wt/entity/vo/WtBaseInfoVo.java | 2 +- .../wt/entity/vo/WtFishVo.java | 2 +- .../wt/entity/vo/WtTreeStcdVo.java | 2 +- .../wt/entity/vo/WtrvDataVo.java | 2 +- .../wt/entity/vo/WtrvInfo.java | 2 +- .../{env => qgc_env}/wt/entity/vo/WtrvVo.java | 2 +- .../wt/mapper/AlongDetailMapper.java | 6 +-- .../wt/mapper/AlongListMapper.java | 4 +- .../wt/mapper/SdDzChuiXiangListMapper.java | 4 +- .../wt/mapper/SdRvwtSInOutOneMapper.java | 6 +-- .../wt/mapper/SdWtMonitorMapper.java | 4 +- .../wt/mapper/SdWtrvdrtpSMapper.java | 4 +- .../wt/mapper/SdWtvtRMapper.java | 4 +- .../wt/service/AlongDetailService.java | 8 ++-- .../wt/service/AlongListService.java | 6 +-- .../wt/service/SdDzChuiXiangListService.java | 2 +- .../wt/service/SdRvwtSInOutOneService.java | 6 +-- .../wt/service/SdWtMonitorService.java | 20 +++++----- .../wt/service/SdWtvtRService.java | 2 +- .../service/impl/AlongDetailServiceImpl.java | 15 +++---- .../wt/service/impl/AlongListServiceImpl.java | 12 +++--- .../impl/SdDzChuiXiangListServiceImpl.java | 8 ++-- .../impl/SdRvwtSInOutOneServiceImpl.java | 10 ++--- .../service/impl/SdWtMonitorServiceImpl.java | 32 +++++++-------- .../wt/service/impl/SdWtvtRServiceImpl.java | 8 ++-- .../zq/controller/ZqMonitorController.java | 4 +- .../zq/entity/vo/ZqBaseInfoVo.java | 2 +- .../zq/service/ZqMonitorService.java | 4 +- .../zq/service/impl/ZqMonitorServiceImpl.java | 6 +-- .../controller/SmsVerifyCodeController.java | 10 ++--- .../system/service/impl/UserServiceImpl.java | 12 +++--- .../mapper/data/FishDraftDataMapper.xml | 4 +- .../mapper/data/FishStatisticsMapper.xml | 2 +- .../mapper/data/ImportTaskRowMapper.xml | 2 +- .../mapper/data/SysUserDataScopeMapper.xml | 2 +- .../{env => qgc_base}/SdCountryBMapper.xml | 4 +- .../{env => qgc_base}/SdEngInfoBHMapper.xml | 6 +-- .../{env => qgc_base}/SdHbrvDicMapper.xml | 4 +- .../{env => qgc_base}/SdHycdDicMapper.xml | 4 +- .../{env => qgc_base}/SdHydrobaseMapper.xml | 4 +- .../{env => qgc_base}/SdPrhbrltnBMapper.xml | 4 +- .../{env => qgc_base}/SdPrhyrltnBMapper.xml | 4 +- .../{env => qgc_base}/SdRvcdDicMapper.xml | 4 +- 224 files changed, 578 insertions(+), 620 deletions(-) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/FpssRController.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdCountryBController.java (91%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdEngInfoBHController.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdFishDictoryBController.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdFpssBHController.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdHbrvDicController.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdHycdDicController.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdHydrobaseController.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/SdRvcdDicController.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/controller/TreeStructureController.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdCountryB.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdEngInfoBH.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdEngInfoBHRequest.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdFishDictoryB.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdFpssBH.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdFpssR.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdHbrvDic.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdHycdDic.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdHydrobase.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdPraddRltnB.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdPrhbrltnB.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdPrhyrltnB.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/SdRvcdDic.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/domain/StationBasinInfo.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/entity/vo/BatchDeleteAo.java (90%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/entity/vo/DataParam.java (82%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/entity/vo/HydrobaseWbsVo.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdCountryBMapper.java (66%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdEngInfoBHMapper.java (87%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdFishDictoryBMapper.java (65%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdFpssBHMapper.java (91%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdFpssRMapper.java (72%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdHbrvDicMapper.java (87%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdHycdDicMapper.java (83%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdHydrobaseMapper.java (83%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdPrhbrltnBMapper.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdPrhyrltnBMapper.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/mapper/SdRvcdDicMapper.java (83%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdCountryBService.java (84%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdEngInfoBHService.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdFishDictoryBService.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdFpssBHService.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdFpssRService.java (81%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdHbrvDicService.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdHycdDicService.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdHydrobaseService.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ISdRvcdDicService.java (91%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/ITreeStructureService.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdCountryBServiceImpl.java (83%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdEngInfoBHServiceImpl.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdFishDictoryBServiceImpl.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdFpssBHServiceImpl.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdFpssRServiceImpl.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdHbrvDicServiceImpl.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdHycdDicServiceImpl.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdHydrobaseServiceImpl.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/SdRvcdDicServiceImpl.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_base}/service/impl/TreeStructureServiceImpl.java (98%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/controller/ApprovalChangeLogController.java (94%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/controller/ApprovalLogController.java (93%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/controller/ApprovalMainController.java (95%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/controller/FishDraftDataController.java (98%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/controller/ImportTaskController.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/controller/SysUserDataScopeController.java (94%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/ApprovalChangeLog.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/ApprovalLog.java (96%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/ApprovalMain.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/BatchApproveRequest.java (91%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/BatchRejectRequest.java (92%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/BatchSaveDraftRequest.java (88%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/FishDraftData.java (99%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/FishImportRequest.java (89%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/FishImportResult.java (98%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/FishImportRowRequest.java (74%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/ImportTask.java (98%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/ImportTaskRequest.java (67%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/ImportTaskRow.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/SysUserDataScope.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/bo/EditUserDataScopeBo.java (60%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/vo/FishDraftDataVO.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/vo/FishStatisticsVO.java (92%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/domain/vo/SysUserDataScopeVO.java (98%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/ApprovalChangeLogMapper.java (92%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/ApprovalLogMapper.java (91%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/ApprovalMainMapper.java (92%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/FishDraftDataMapper.java (95%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/FishStatisticsMapper.java (84%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/ImportTaskMapper.java (96%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/ImportTaskRowMapper.java (83%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/mapper/SysUserDataScopeMapper.java (94%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/AttachmentUploadService.java (98%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IApprovalChangeLogService.java (89%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IApprovalLogService.java (89%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IApprovalMainService.java (88%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IFishDraftDataService.java (93%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IFishImportService.java (86%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IFishStatisticsService.java (69%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IFishZipImportService.java (90%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/IImportTaskService.java (92%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/ISysUserDataScopeService.java (89%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/ApprovalChangeLogServiceImpl.java (90%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/ApprovalLogServiceImpl.java (93%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/ApprovalMainServiceImpl.java (91%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/FishDraftDataServiceImpl.java (96%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/FishImportServiceImpl.java (99%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/FishStatisticsServiceImpl.java (89%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/ImportTaskServiceImpl.java (97%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/service/impl/SysUserDataScopeServiceImpl.java (93%) rename backend/src/main/java/com/yfd/platform/{data => qgc_data}/utils/ZipFileUtil.java (99%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/controller/AlarmPointController.java (92%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/controller/EngEqController.java (98%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/controller/EngEqDataController.java (98%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/controller/EngEqIntervalController.java (95%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/controller/EngEqStatController.java (95%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/controller/EngSpecialController.java (91%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/domain/MsEngEq.java (95%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/entity/EqSpecial.java (94%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/entity/vo/AlarmStcdCountVo.java (92%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/entity/vo/EngEqDataVo.java (93%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/entity/vo/EngEqDayDataVo.java (94%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/entity/vo/EngEqDrtpDataVo.java (94%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/mapper/EngEqMapper.java (83%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/AlarmPointService.java (90%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/EngEqDataService.java (98%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/EngEqIntervalService.java (95%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/EngEqService.java (96%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/EngSpecialService.java (90%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/impl/AlarmPointServiceImpl.java (92%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/impl/EngEqDataServiceImpl.java (95%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/impl/EngEqIntervalServiceImpl.java (99%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/impl/EngEqServiceImpl.java (97%) rename backend/src/main/java/com/yfd/platform/{eng => qgc_eng}/service/impl/EngSpecialServiceImpl.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/controller/FhHabitatController.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/ao/FhDefaultAo.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/vo/FhBaseInfoVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/vo/FhDefaultVo.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/vo/FhMsstbprptVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/vo/FhSdriverdayVo.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/vo/FhSdrvwtsVo.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/entity/vo/HabitatVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/service/FhHabitatService.java (72%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fh/service/impl/FhHabitatServiceImpl.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/controller/FishPassageController.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/entity/vo/FdFishVo.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/entity/vo/FpConstructionSituationVo.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/entity/vo/FpFtpStatisticsVo.java (91%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/entity/vo/FpRunPlanVo.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/entity/vo/FpVmsstbprptVo.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/entity/vo/YearFpStatisticsVo.java (91%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/service/FpBuildService.java (68%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/service/FpRunService.java (65%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/service/impl/FpBuildServiceImpl.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/fp/service/impl/FpRunServiceImpl.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/controller/EnvWqDataController.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/EnvWqDataVo.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/EnvWqVo.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/StTbYsVo.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/StbprpYsVo.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/WqAlongVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/WqBaseInfoVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/WqMsstbprptGroupVo.java (88%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/entity/vo/WqVmsstbprptVo.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/service/EnvWqDataService.java (90%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wq/service/impl/EnvWqDataServiceImpl.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/controller/SdWTMonitorController.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/DfltkwFacilityCountVo.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/FishSpawnVo.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/RstcdTreeInfoVo.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdAlongDetailVO.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdAlongVO.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdDzChuiXiangListVO.java (90%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdMonthDetailVO.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdRvwtSVO.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdWtBaseInfoVO.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdWtMonitorCountVO.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdWtvtYearVo.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdYearDetailVO.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SdYearListVO.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/StcdVo.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/SttpInfoVo.java (95%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WbsbVo.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WtBaseInfoVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WtFishVo.java (85%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WtTreeStcdVo.java (96%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WtrvDataVo.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WtrvInfo.java (97%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/entity/vo/WtrvVo.java (87%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/AlongDetailMapper.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/AlongListMapper.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/SdDzChuiXiangListMapper.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/SdRvwtSInOutOneMapper.java (94%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/SdWtMonitorMapper.java (90%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/SdWtrvdrtpSMapper.java (93%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/mapper/SdWtvtRMapper.java (89%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/AlongDetailService.java (87%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/AlongListService.java (83%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/SdDzChuiXiangListService.java (91%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/SdRvwtSInOutOneService.java (72%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/SdWtMonitorService.java (68%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/SdWtvtRService.java (90%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/impl/AlongDetailServiceImpl.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/impl/AlongListServiceImpl.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/impl/SdDzChuiXiangListServiceImpl.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/impl/SdRvwtSInOutOneServiceImpl.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/impl/SdWtMonitorServiceImpl.java (99%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/wt/service/impl/SdWtvtRServiceImpl.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/zq/controller/ZqMonitorController.java (92%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/zq/entity/vo/ZqBaseInfoVo.java (98%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/zq/service/ZqMonitorService.java (71%) rename backend/src/main/java/com/yfd/platform/{env => qgc_env}/zq/service/impl/ZqMonitorServiceImpl.java (99%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdCountryBMapper.xml (80%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdEngInfoBHMapper.xml (98%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdHbrvDicMapper.xml (87%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdHycdDicMapper.xml (90%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdHydrobaseMapper.xml (88%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdPrhbrltnBMapper.xml (81%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdPrhyrltnBMapper.xml (81%) rename backend/src/main/resources/mapper/{env => qgc_base}/SdRvcdDicMapper.xml (92%) diff --git a/backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/FpssRController.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/FpssRController.java index a6310248..3c12a6bc 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/FpssRController.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdFpssR; -import com.yfd.platform.env.service.ISdFpssRService; +import com.yfd.platform.qgc_base.domain.SdFpssR; +import com.yfd.platform.qgc_base.service.ISdFpssRService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdCountryBController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdCountryBController.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/env/controller/SdCountryBController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdCountryBController.java index aeb16b3f..442cfd0d 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdCountryBController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdCountryBController.java @@ -1,15 +1,14 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdCountryB; -import com.yfd.platform.env.service.ISdCountryBService; +import com.yfd.platform.qgc_base.domain.SdCountryB; +import com.yfd.platform.qgc_base.service.ISdCountryBService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; -import java.util.List; /** *

diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdEngInfoBHController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/controller/SdEngInfoBHController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java index aa0f6255..feb06ac0 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdEngInfoBHController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java @@ -1,17 +1,16 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdEngInfoBHRequest; -import com.yfd.platform.env.service.ISdEngInfoBHService; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; +import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; -import java.util.List; /** *

diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdFishDictoryBController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdFishDictoryBController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/controller/SdFishDictoryBController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdFishDictoryBController.java index d7c6ee7f..0638da0f 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdFishDictoryBController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdFishDictoryBController.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -6,15 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdFishDictoryB; -import com.yfd.platform.env.service.ISdFishDictoryBService; +import com.yfd.platform.qgc_base.domain.SdFishDictoryB; +import com.yfd.platform.qgc_base.service.ISdFishDictoryBService; import com.yfd.platform.utils.DataSourceRequestUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; import java.util.List; /** diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdFpssBHController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdFpssBHController.java index f56fb92a..1f83d18c 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdFpssBHController.java @@ -1,17 +1,15 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdFpssBH; -import com.yfd.platform.env.service.ISdFpssBHService; +import com.yfd.platform.qgc_base.domain.SdFpssBH; +import com.yfd.platform.qgc_base.service.ISdFpssBHService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.*; -import java.util.List; - /** *

* 过鱼设施表 前端控制器 diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHbrvDicController.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHbrvDicController.java index 5faa2c02..e52b8e93 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdHbrvDicController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHbrvDicController.java @@ -1,10 +1,10 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdHbrvDic; -import com.yfd.platform.env.service.ISdHbrvDicService; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.service.ISdHbrvDicService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdHycdDicController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHycdDicController.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/controller/SdHycdDicController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHycdDicController.java index cead7e6f..9075f0db 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdHycdDicController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHycdDicController.java @@ -1,10 +1,10 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdHycdDic; -import com.yfd.platform.env.service.ISdHycdDicService; +import com.yfd.platform.qgc_base.domain.SdHycdDic; +import com.yfd.platform.qgc_base.service.ISdHycdDicService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHydrobaseController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHydrobaseController.java index 9ef89dfb..0cf36e7a 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdHydrobaseController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdHydrobaseController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdHydrobase; -import com.yfd.platform.env.service.ISdHydrobaseService; +import com.yfd.platform.qgc_base.domain.SdHydrobase; +import com.yfd.platform.qgc_base.service.ISdHydrobaseService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdRvcdDicController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/controller/SdRvcdDicController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java index c4f08903..9a1c6bdc 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdRvcdDicController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.domain.SdRvcdDic; -import com.yfd.platform.env.service.ISdRvcdDicService; +import com.yfd.platform.qgc_base.domain.SdRvcdDic; +import com.yfd.platform.qgc_base.service.ISdRvcdDicService; import com.yfd.platform.utils.DataSourceRequestUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/TreeStructureController.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java rename to backend/src/main/java/com/yfd/platform/qgc_base/controller/TreeStructureController.java index 1b39ca25..0b9d6ce8 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/TreeStructureController.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.controller; +package com.yfd.platform.qgc_base.controller; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.service.ITreeStructureService; +import com.yfd.platform.qgc_base.service.ITreeStructureService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.GetMapping; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdCountryB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdCountryB.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/domain/SdCountryB.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdCountryB.java index ff739e46..62d1517c 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdCountryB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdCountryB.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdEngInfoBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/domain/SdEngInfoBH.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java index 4d258c45..f316193c 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdEngInfoBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdEngInfoBHRequest.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHRequest.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/domain/SdEngInfoBHRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHRequest.java index 89cf2343..5227bdb2 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdEngInfoBHRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdFishDictoryB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/domain/SdFishDictoryB.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java index d7b4f686..554ddf1e 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdFishDictoryB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdFpssBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/domain/SdFpssBH.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java index 1e0c7335..a20947e9 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdFpssBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssR.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssR.java index a6baecda..7688ff15 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssR.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdHbrvDic.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHbrvDic.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/domain/SdHbrvDic.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHbrvDic.java index 66a99ed9..94b45e33 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdHbrvDic.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHbrvDic.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdHycdDic.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHycdDic.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/domain/SdHycdDic.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHycdDic.java index aadce20f..4d8826ea 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdHycdDic.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHycdDic.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdHydrobase.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHydrobase.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/domain/SdHydrobase.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHydrobase.java index 92378d63..296090ae 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdHydrobase.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdHydrobase.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdPraddRltnB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPraddRltnB.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/domain/SdPraddRltnB.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPraddRltnB.java index 67d546bd..9bd3732b 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdPraddRltnB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPraddRltnB.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdPrhbrltnB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPrhbrltnB.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/domain/SdPrhbrltnB.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPrhbrltnB.java index 747a21e7..625e6598 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdPrhbrltnB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPrhbrltnB.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdPrhyrltnB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPrhyrltnB.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/domain/SdPrhyrltnB.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPrhyrltnB.java index ef22ccf0..e6e410bd 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdPrhyrltnB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdPrhyrltnB.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdRvcdDic.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdRvcdDic.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/domain/SdRvcdDic.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/SdRvcdDic.java index 9f3a9676..2b92f18d 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/SdRvcdDic.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdRvcdDic.java @@ -1,11 +1,10 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.util.Date; import java.util.List; /** diff --git a/backend/src/main/java/com/yfd/platform/env/domain/StationBasinInfo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/StationBasinInfo.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/domain/StationBasinInfo.java rename to backend/src/main/java/com/yfd/platform/qgc_base/domain/StationBasinInfo.java index 2e348b36..ac1f326c 100644 --- a/backend/src/main/java/com/yfd/platform/env/domain/StationBasinInfo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/StationBasinInfo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.domain; +package com.yfd.platform.qgc_base.domain; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/entity/vo/BatchDeleteAo.java b/backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/BatchDeleteAo.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/env/entity/vo/BatchDeleteAo.java rename to backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/BatchDeleteAo.java index f4dfafbd..2fbb7069 100644 --- a/backend/src/main/java/com/yfd/platform/env/entity/vo/BatchDeleteAo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/BatchDeleteAo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.entity.vo; +package com.yfd.platform.qgc_base.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/entity/vo/DataParam.java b/backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/DataParam.java similarity index 82% rename from backend/src/main/java/com/yfd/platform/env/entity/vo/DataParam.java rename to backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/DataParam.java index 88b5bacc..79e9498e 100644 --- a/backend/src/main/java/com/yfd/platform/env/entity/vo/DataParam.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/DataParam.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.entity.vo; +package com.yfd.platform.qgc_base.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/HydrobaseWbsVo.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java rename to backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/HydrobaseWbsVo.java index f08f9206..47c6d19a 100644 --- a/backend/src/main/java/com/yfd/platform/env/entity/vo/HydrobaseWbsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/entity/vo/HydrobaseWbsVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.entity.vo; +package com.yfd.platform.qgc_base.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdCountryBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdCountryBMapper.java similarity index 66% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdCountryBMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdCountryBMapper.java index 4a796ce0..bef73fbe 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdCountryBMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdCountryBMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdCountryB; +import com.yfd.platform.qgc_base.domain.SdCountryB; /** *

diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdEngInfoBHMapper.java similarity index 87% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdEngInfoBHMapper.java index 45b9e695..2a4fa27c 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdEngInfoBHMapper.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.StationBasinInfo; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.StationBasinInfo; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdFishDictoryBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFishDictoryBMapper.java similarity index 65% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdFishDictoryBMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFishDictoryBMapper.java index 14e31ede..d38a17ea 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdFishDictoryBMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFishDictoryBMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdFishDictoryB; +import com.yfd.platform.qgc_base.domain.SdFishDictoryB; import org.apache.ibatis.annotations.Mapper; @Mapper diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFpssBHMapper.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFpssBHMapper.java index 08c53fa4..86ac6ee7 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFpssBHMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdFpssBH; +import com.yfd.platform.qgc_base.domain.SdFpssBH; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFpssRMapper.java similarity index 72% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFpssRMapper.java index 9a32050b..82318c9a 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdFpssRMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdFpssR; +import com.yfd.platform.qgc_base.domain.SdFpssR; import org.apache.ibatis.annotations.Mapper; /** diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdHbrvDicMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHbrvDicMapper.java similarity index 87% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdHbrvDicMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHbrvDicMapper.java index 715e22a4..3dde38df 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdHbrvDicMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHbrvDicMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdHycdDicMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHycdDicMapper.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdHycdDicMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHycdDicMapper.java index 96e185bc..4475d944 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdHycdDicMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHycdDicMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdHycdDic; +import com.yfd.platform.qgc_base.domain.SdHycdDic; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdHydrobaseMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHydrobaseMapper.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdHydrobaseMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHydrobaseMapper.java index fe6efb11..d3046b2e 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdHydrobaseMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdHydrobaseMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdHydrobase; +import com.yfd.platform.qgc_base.domain.SdHydrobase; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdPrhbrltnBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdPrhbrltnBMapper.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdPrhbrltnBMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdPrhbrltnBMapper.java index a1d1a84a..acefefa3 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdPrhbrltnBMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdPrhbrltnBMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdPrhbrltnB; +import com.yfd.platform.qgc_base.domain.SdPrhbrltnB; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdPrhyrltnBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdPrhyrltnBMapper.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdPrhyrltnBMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdPrhyrltnBMapper.java index 398844b0..57b975cb 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdPrhyrltnBMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdPrhyrltnBMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdPrhyrltnB; +import com.yfd.platform.qgc_base.domain.SdPrhyrltnB; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdRvcdDicMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdRvcdDicMapper.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/env/mapper/SdRvcdDicMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdRvcdDicMapper.java index e1abe3b2..00b83828 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdRvcdDicMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/SdRvcdDicMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.mapper; +package com.yfd.platform.qgc_base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.domain.SdRvcdDic; +import com.yfd.platform.qgc_base.domain.SdRvcdDic; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdCountryBService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdCountryBService.java similarity index 84% rename from backend/src/main/java/com/yfd/platform/env/service/ISdCountryBService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdCountryBService.java index 229299f9..89253992 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdCountryBService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdCountryBService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdCountryB; +import com.yfd.platform.qgc_base.domain.SdCountryB; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java index c99d88a8..b12099c9 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdEngInfoBHRequest; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; import java.util.List; import java.util.Set; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdFishDictoryBService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFishDictoryBService.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/service/ISdFishDictoryBService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFishDictoryBService.java index 00809826..9352dada 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdFishDictoryBService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFishDictoryBService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdFishDictoryB; +import com.yfd.platform.qgc_base.domain.SdFishDictoryB; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFpssBHService.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFpssBHService.java index 7b37c276..42d1fee2 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFpssBHService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdFpssBH; +import com.yfd.platform.qgc_base.domain.SdFpssBH; import java.util.List; import java.util.Set; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFpssRService.java similarity index 81% rename from backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFpssRService.java index eed22d38..1af560d0 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdFpssRService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdFpssR; +import com.yfd.platform.qgc_base.domain.SdFpssR; /** *

diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHbrvDicService.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHbrvDicService.java index 3f3cf23b..ea932c43 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdHbrvDicService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHbrvDicService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; import java.util.List; import java.util.Set; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdHycdDicService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHycdDicService.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/env/service/ISdHycdDicService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHycdDicService.java index 7bf15b86..ed680881 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdHycdDicService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHycdDicService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdHycdDic; +import com.yfd.platform.qgc_base.domain.SdHycdDic; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHydrobaseService.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHydrobaseService.java index 9f16b1ab..2de91b30 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdHydrobaseService.java @@ -1,11 +1,11 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdHydrobase; -import com.yfd.platform.env.entity.vo.HydrobaseWbsVo; +import com.yfd.platform.qgc_base.domain.SdHydrobase; +import com.yfd.platform.qgc_base.entity.vo.HydrobaseWbsVo; import java.util.List; import java.util.Set; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdRvcdDicService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/env/service/ISdRvcdDicService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java index ea8da573..38e299f0 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdRvcdDicService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.service; +package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.env.domain.SdRvcdDic; +import com.yfd.platform.qgc_base.domain.SdRvcdDic; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ITreeStructureService.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/ITreeStructureService.java index 03342c9e..42f03aab 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ITreeStructureService.java @@ -1,6 +1,4 @@ -package com.yfd.platform.env.service; - -import com.yfd.platform.env.domain.SdEngInfoBH; +package com.yfd.platform.qgc_base.service; import java.util.List; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdCountryBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdCountryBServiceImpl.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdCountryBServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdCountryBServiceImpl.java index 94045aec..9b007704 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdCountryBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdCountryBServiceImpl.java @@ -1,10 +1,10 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.env.domain.SdCountryB; -import com.yfd.platform.env.mapper.SdCountryBMapper; -import com.yfd.platform.env.service.ISdCountryBService; +import com.yfd.platform.qgc_base.domain.SdCountryB; +import com.yfd.platform.qgc_base.mapper.SdCountryBMapper; +import com.yfd.platform.qgc_base.service.ISdCountryBService; import org.springframework.stereotype.Service; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 99f2ade4..4ec1dfac 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -1,14 +1,14 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdEngInfoBHRequest; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.service.ISdEngInfoBHService; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFishDictoryBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFishDictoryBServiceImpl.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdFishDictoryBServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFishDictoryBServiceImpl.java index 1519f3f1..5a635c3a 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFishDictoryBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFishDictoryBServiceImpl.java @@ -1,12 +1,12 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.env.domain.SdFishDictoryB; -import com.yfd.platform.env.mapper.SdFishDictoryBMapper; -import com.yfd.platform.env.service.ISdFishDictoryBService; +import com.yfd.platform.qgc_base.domain.SdFishDictoryB; +import com.yfd.platform.qgc_base.mapper.SdFishDictoryBMapper; +import com.yfd.platform.qgc_base.service.ISdFishDictoryBService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java index d620898f..101135f6 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java @@ -1,15 +1,15 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdFpssBH; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.mapper.SdFpssBHMapper; -import com.yfd.platform.env.service.ISdFpssBHService; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdFpssBH; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.mapper.SdFpssBHMapper; +import com.yfd.platform.qgc_base.service.ISdFpssBHService; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssRServiceImpl.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssRServiceImpl.java index 5483b26f..597aeb99 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssRServiceImpl.java @@ -1,11 +1,11 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.env.domain.SdFpssR; -import com.yfd.platform.env.mapper.SdFpssRMapper; -import com.yfd.platform.env.service.ISdFpssRService; +import com.yfd.platform.qgc_base.domain.SdFpssR; +import com.yfd.platform.qgc_base.mapper.SdFpssRMapper; +import com.yfd.platform.qgc_base.service.ISdFpssRService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java index 90ea0e91..dde43f59 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java @@ -1,16 +1,15 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdHbrvDic; -import com.yfd.platform.env.domain.SdHydrobase; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.mapper.SdHbrvDicMapper; -import com.yfd.platform.env.service.ISdHbrvDicService; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.mapper.SdHbrvDicMapper; +import com.yfd.platform.qgc_base.service.ISdHbrvDicService; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHycdDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHycdDicServiceImpl.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdHycdDicServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHycdDicServiceImpl.java index a87c2efb..8d2fa828 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHycdDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHycdDicServiceImpl.java @@ -1,10 +1,10 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.env.domain.SdHycdDic; -import com.yfd.platform.env.mapper.SdHycdDicMapper; -import com.yfd.platform.env.service.ISdHycdDicService; +import com.yfd.platform.qgc_base.domain.SdHycdDic; +import com.yfd.platform.qgc_base.mapper.SdHycdDicMapper; +import com.yfd.platform.qgc_base.service.ISdHycdDicService; import org.springframework.stereotype.Service; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHydrobaseServiceImpl.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHydrobaseServiceImpl.java index 1cf1ec78..d73872c9 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHydrobaseServiceImpl.java @@ -1,18 +1,18 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdHydrobase; -import com.yfd.platform.env.entity.vo.HydrobaseWbsVo; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.mapper.SdHydrobaseMapper; -import com.yfd.platform.env.service.ISdHydrobaseService; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdHydrobase; +import com.yfd.platform.qgc_base.entity.vo.HydrobaseWbsVo; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.mapper.SdHydrobaseMapper; +import com.yfd.platform.qgc_base.service.ISdHydrobaseService; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.stream.Collectors; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdRvcdDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdRvcdDicServiceImpl.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/service/impl/SdRvcdDicServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdRvcdDicServiceImpl.java index 85f77a44..1b5bdc36 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdRvcdDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdRvcdDicServiceImpl.java @@ -1,10 +1,10 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.env.domain.SdRvcdDic; -import com.yfd.platform.env.mapper.SdRvcdDicMapper; -import com.yfd.platform.env.service.ISdRvcdDicService; +import com.yfd.platform.qgc_base.domain.SdRvcdDic; +import com.yfd.platform.qgc_base.mapper.SdRvcdDicMapper; +import com.yfd.platform.qgc_base.service.ISdRvcdDicService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/TreeStructureServiceImpl.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_base/service/impl/TreeStructureServiceImpl.java index 233835d5..0f627d39 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/TreeStructureServiceImpl.java @@ -1,14 +1,12 @@ -package com.yfd.platform.env.service.impl; +package com.yfd.platform.qgc_base.service.impl; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdHydrobase; -import com.yfd.platform.env.domain.SdHbrvDic; -import com.yfd.platform.env.domain.SdHycdDic; -import com.yfd.platform.env.domain.SdPrhbrltnB; -import com.yfd.platform.env.domain.SdPrhyrltnB; -import com.yfd.platform.env.domain.SdRvcdDic; -import com.yfd.platform.env.mapper.*; -import com.yfd.platform.env.service.ITreeStructureService; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdHydrobase; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.domain.SdHycdDic; +import com.yfd.platform.qgc_base.domain.SdRvcdDic; +import com.yfd.platform.qgc_base.mapper.*; +import com.yfd.platform.qgc_base.service.ITreeStructureService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalChangeLogController.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java rename to backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalChangeLogController.java index 49a2d2fe..01d4e545 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalChangeLogController.java @@ -1,12 +1,11 @@ -package com.yfd.platform.data.controller; +package com.yfd.platform.qgc_data.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.utils.UserNameFillHelper; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.ApprovalChangeLog; -import com.yfd.platform.data.domain.ApprovalLog; -import com.yfd.platform.data.service.IApprovalChangeLogService; +import com.yfd.platform.qgc_data.domain.ApprovalChangeLog; +import com.yfd.platform.qgc_data.service.IApprovalChangeLogService; import com.yfd.platform.utils.DataSourceRequestUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalLogController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalLogController.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/data/controller/ApprovalLogController.java rename to backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalLogController.java index b3673615..e92fee25 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalLogController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalLogController.java @@ -1,11 +1,10 @@ -package com.yfd.platform.data.controller; +package com.yfd.platform.qgc_data.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.ApprovalLog; -import com.yfd.platform.data.domain.ApprovalMain; -import com.yfd.platform.data.service.IApprovalLogService; +import com.yfd.platform.qgc_data.domain.ApprovalLog; +import com.yfd.platform.qgc_data.service.IApprovalLogService; import com.yfd.platform.utils.DataSourceRequestUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalMainController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java rename to backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalMainController.java index c0db9867..2da41270 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ApprovalMainController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.data.controller; +package com.yfd.platform.qgc_data.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.ApprovalMain; -import com.yfd.platform.data.service.IApprovalMainService; -import com.yfd.platform.data.service.IFishDraftDataService; +import com.yfd.platform.qgc_data.domain.ApprovalMain; +import com.yfd.platform.qgc_data.service.IApprovalMainService; +import com.yfd.platform.qgc_data.service.IFishDraftDataService; import com.yfd.platform.utils.DataSourceRequestUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java rename to backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java index 5a84a7c3..6c3b3ce6 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.controller; +package com.yfd.platform.qgc_data.controller; import java.io.File; import java.io.FileInputStream; @@ -17,23 +17,21 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.ObjectMapper; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.*; -import com.yfd.platform.data.domain.vo.FishDraftDataVO; -import com.yfd.platform.data.domain.vo.FishStatisticsVO; -import com.yfd.platform.data.service.AttachmentUploadService; -import com.yfd.platform.data.service.IFishDraftDataService; -import com.yfd.platform.data.service.IFishImportService; -import com.yfd.platform.data.service.IFishStatisticsService; -import com.yfd.platform.data.service.IImportTaskService; -import com.yfd.platform.data.utils.ZipFileUtil; -import com.yfd.platform.utils.KendoUtil; +import com.yfd.platform.qgc_data.domain.*; +import com.yfd.platform.qgc_data.domain.vo.FishDraftDataVO; +import com.yfd.platform.qgc_data.domain.vo.FishStatisticsVO; +import com.yfd.platform.qgc_data.service.AttachmentUploadService; +import com.yfd.platform.qgc_data.service.IFishDraftDataService; +import com.yfd.platform.qgc_data.service.IFishImportService; +import com.yfd.platform.qgc_data.service.IFishStatisticsService; +import com.yfd.platform.qgc_data.service.IImportTaskService; +import com.yfd.platform.qgc_data.utils.ZipFileUtil; import com.yfd.platform.utils.MultipartStreamParser; import com.yfd.platform.utils.SecurityUtils; import io.swagger.v3.oas.annotations.Operation; @@ -49,7 +47,6 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import java.io.IOException; import java.util.*; /** @@ -937,7 +934,7 @@ public class FishDraftDataController { @Operation(summary = "清理临时文件") public ResponseResult cleanupTemp(@RequestParam String tempDir) { try { - com.yfd.platform.data.utils.ZipFileUtil.cleanupTempDir(tempDir); + com.yfd.platform.qgc_data.utils.ZipFileUtil.cleanupTempDir(tempDir); return ResponseResult.success("清理成功"); } catch (Exception e) { return ResponseResult.error("清理失败: " + e.getMessage()); diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ImportTaskController.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java rename to backend/src/main/java/com/yfd/platform/qgc_data/controller/ImportTaskController.java index 3682d35c..2fb05ce1 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/ImportTaskController.java @@ -1,12 +1,12 @@ -package com.yfd.platform.data.controller; +package com.yfd.platform.qgc_data.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.ImportTask; -import com.yfd.platform.data.domain.ImportTaskRequest; -import com.yfd.platform.data.service.IImportTaskService; +import com.yfd.platform.qgc_data.domain.ImportTask; +import com.yfd.platform.qgc_data.domain.ImportTaskRequest; +import com.yfd.platform.qgc_data.service.IImportTaskService; import com.yfd.platform.utils.KendoUtil; import com.yfd.platform.utils.QgcQueryWrapperUtil; import io.swagger.v3.oas.annotations.Operation; diff --git a/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/SysUserDataScopeController.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java rename to backend/src/main/java/com/yfd/platform/qgc_data/controller/SysUserDataScopeController.java index 6858f423..4abf6143 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/SysUserDataScopeController.java @@ -1,12 +1,12 @@ -package com.yfd.platform.data.controller; +package com.yfd.platform.qgc_data.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.domain.bo.EditUserDataScopeBo; -import com.yfd.platform.data.domain.vo.SysUserDataScopeVO; -import com.yfd.platform.data.service.ISysUserDataScopeService; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.domain.bo.EditUserDataScopeBo; +import com.yfd.platform.qgc_data.domain.vo.SysUserDataScopeVO; +import com.yfd.platform.qgc_data.service.ISysUserDataScopeService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalChangeLog.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalChangeLog.java index 24673fdf..77b9cf70 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalChangeLog.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import com.yfd.platform.annotation.UserIdField; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalLog.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalLog.java index 84f46628..e4726478 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalLog.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalMain.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalMain.java index 1e0a3c1d..495747fe 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ApprovalMain.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchApproveRequest.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchApproveRequest.java index 66226b5a..64ada50f 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchApproveRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchRejectRequest.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchRejectRequest.java index fd1deb94..1be41d6c 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchRejectRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/BatchSaveDraftRequest.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchSaveDraftRequest.java similarity index 88% rename from backend/src/main/java/com/yfd/platform/data/domain/BatchSaveDraftRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchSaveDraftRequest.java index 93bb8b6c..3ff21c0e 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/BatchSaveDraftRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/BatchSaveDraftRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishDraftData.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/FishDraftData.java index da33082d..f3f02325 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishDraftData.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishImportRequest.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportRequest.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/data/domain/FishImportRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportRequest.java index 894aea46..d78f07d2 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishImportRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportResult.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportResult.java index 64641db8..c92aa246 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportResult.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishImportRowRequest.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportRowRequest.java similarity index 74% rename from backend/src/main/java/com/yfd/platform/data/domain/FishImportRowRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportRowRequest.java index 3dedff7e..1801a10f 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishImportRowRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/FishImportRowRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTask.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTask.java index a1325568..1b1d3e2a 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTask.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ImportTaskRequest.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTaskRequest.java similarity index 67% rename from backend/src/main/java/com/yfd/platform/data/domain/ImportTaskRequest.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTaskRequest.java index 0a2050e0..55080935 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ImportTaskRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTaskRequest.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ImportTaskRow.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTaskRow.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/domain/ImportTaskRow.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTaskRow.java index a43098a2..71527dc8 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ImportTaskRow.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/ImportTaskRow.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/SysUserDataScope.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/SysUserDataScope.java index beca8a94..e10f5c91 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/SysUserDataScope.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain; +package com.yfd.platform.qgc_data.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; @@ -6,7 +6,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.sql.Timestamp; import java.util.Date; /** diff --git a/backend/src/main/java/com/yfd/platform/data/domain/bo/EditUserDataScopeBo.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/bo/EditUserDataScopeBo.java similarity index 60% rename from backend/src/main/java/com/yfd/platform/data/domain/bo/EditUserDataScopeBo.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/bo/EditUserDataScopeBo.java index db27b4fa..cb1f04f3 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/bo/EditUserDataScopeBo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/bo/EditUserDataScopeBo.java @@ -1,6 +1,6 @@ -package com.yfd.platform.data.domain.bo; +package com.yfd.platform.qgc_data.domain.bo; -import com.yfd.platform.data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; import lombok.Data; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/FishDraftDataVO.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/FishDraftDataVO.java index 35fa6218..8f58d3ee 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/FishDraftDataVO.java @@ -1,6 +1,5 @@ -package com.yfd.platform.data.domain.vo; +package com.yfd.platform.qgc_data.domain.vo; -import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.io.Serializable; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishStatisticsVO.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/FishStatisticsVO.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/data/domain/vo/FishStatisticsVO.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/FishStatisticsVO.java index 369cbf9b..0bab5d16 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishStatisticsVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/FishStatisticsVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain.vo; +package com.yfd.platform.qgc_data.domain.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java b/backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/SysUserDataScopeVO.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java rename to backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/SysUserDataScopeVO.java index 7d792e83..89b560f7 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/domain/vo/SysUserDataScopeVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.domain.vo; +package com.yfd.platform.qgc_data.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/ApprovalChangeLogMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalChangeLogMapper.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/data/mapper/ApprovalChangeLogMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalChangeLogMapper.java index 4019a25f..7e3be480 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/ApprovalChangeLogMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalChangeLogMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.data.domain.ApprovalChangeLog; +import com.yfd.platform.qgc_data.domain.ApprovalChangeLog; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/ApprovalLogMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalLogMapper.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/data/mapper/ApprovalLogMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalLogMapper.java index b522e066..dd6924ad 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/ApprovalLogMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalLogMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.data.domain.ApprovalLog; +import com.yfd.platform.qgc_data.domain.ApprovalLog; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/ApprovalMainMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalMainMapper.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/data/mapper/ApprovalMainMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalMainMapper.java index 77fe3bda..097f7184 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/ApprovalMainMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ApprovalMainMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.data.domain.ApprovalMain; +import com.yfd.platform.qgc_data.domain.ApprovalMain; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java index 6ebcbec4..baa8d260 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java @@ -1,9 +1,9 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.data.domain.FishDraftData; -import com.yfd.platform.data.domain.vo.FishDraftDataVO; +import com.yfd.platform.qgc_data.domain.FishDraftData; +import com.yfd.platform.qgc_data.domain.vo.FishDraftDataVO; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/FishStatisticsMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishStatisticsMapper.java similarity index 84% rename from backend/src/main/java/com/yfd/platform/data/mapper/FishStatisticsMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishStatisticsMapper.java index 47a44ece..f0df6603 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/FishStatisticsMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishStatisticsMapper.java @@ -1,6 +1,6 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; -import com.yfd.platform.data.domain.vo.FishStatisticsVO; +import com.yfd.platform.qgc_data.domain.vo.FishStatisticsVO; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ImportTaskMapper.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/ImportTaskMapper.java index a7d4edd0..d811e589 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ImportTaskMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.data.domain.ImportTask; +import com.yfd.platform.qgc_data.domain.ImportTask; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskRowMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ImportTaskRowMapper.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskRowMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/ImportTaskRowMapper.java index a1e56dbd..1b3b565d 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskRowMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/ImportTaskRowMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.data.domain.ImportTaskRow; +import com.yfd.platform.qgc_data.domain.ImportTaskRow; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/SysUserDataScopeMapper.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_data/mapper/SysUserDataScopeMapper.java index e1e10f17..0f947e05 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/SysUserDataScopeMapper.java @@ -1,12 +1,11 @@ -package com.yfd.platform.data.mapper; +package com.yfd.platform.qgc_data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; import org.apache.ibatis.annotations.Param; import java.util.List; -import java.util.Map; /** *

diff --git a/backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/AttachmentUploadService.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/AttachmentUploadService.java index 2531588b..5f12b0d4 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/AttachmentUploadService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/AttachmentUploadService.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; @@ -6,9 +6,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; import java.io.File; import java.io.IOException; import java.net.URI; @@ -16,8 +13,6 @@ import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.file.Files; -import java.security.SecureRandom; -import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalChangeLogService.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalChangeLogService.java index 92d7e2c6..9791db41 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalChangeLogService.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.data.domain.ApprovalChangeLog; +import com.yfd.platform.qgc_data.domain.ApprovalChangeLog; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/IApprovalLogService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalLogService.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/data/service/IApprovalLogService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalLogService.java index 575273ea..4ab5d419 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IApprovalLogService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalLogService.java @@ -1,7 +1,7 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.data.domain.ApprovalLog; +import com.yfd.platform.qgc_data.domain.ApprovalLog; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalMainService.java similarity index 88% rename from backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalMainService.java index 2c186516..06fb2045 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IApprovalMainService.java @@ -1,9 +1,8 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.data.domain.ApprovalMain; -import org.springframework.web.bind.annotation.RequestParam; +import com.yfd.platform.qgc_data.domain.ApprovalMain; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java index 25041724..742d6c88 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java @@ -1,10 +1,10 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.data.domain.FishDraftData; -import com.yfd.platform.data.domain.vo.FishDraftDataVO; +import com.yfd.platform.qgc_data.domain.FishDraftData; +import com.yfd.platform.qgc_data.domain.vo.FishDraftDataVO; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/IFishImportService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishImportService.java similarity index 86% rename from backend/src/main/java/com/yfd/platform/data/service/IFishImportService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IFishImportService.java index 4862f013..1aafd8a1 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IFishImportService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishImportService.java @@ -1,15 +1,14 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; -import com.yfd.platform.data.domain.FishDraftData; -import com.yfd.platform.data.domain.FishImportRequest; -import com.yfd.platform.data.domain.FishImportResult; -import com.yfd.platform.data.utils.ZipFileUtil; +import com.yfd.platform.qgc_data.domain.FishDraftData; +import com.yfd.platform.qgc_data.domain.FishImportRequest; +import com.yfd.platform.qgc_data.domain.FishImportResult; +import com.yfd.platform.qgc_data.utils.ZipFileUtil; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.InputStream; import java.util.List; -import java.util.Map; /** *

diff --git a/backend/src/main/java/com/yfd/platform/data/service/IFishStatisticsService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishStatisticsService.java similarity index 69% rename from backend/src/main/java/com/yfd/platform/data/service/IFishStatisticsService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IFishStatisticsService.java index 514d485e..4a08e371 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IFishStatisticsService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishStatisticsService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.data.domain.vo.FishStatisticsVO; +import com.yfd.platform.qgc_data.domain.vo.FishStatisticsVO; public interface IFishStatisticsService { diff --git a/backend/src/main/java/com/yfd/platform/data/service/IFishZipImportService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishZipImportService.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/data/service/IFishZipImportService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IFishZipImportService.java index a8534399..0f48a740 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IFishZipImportService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishZipImportService.java @@ -1,6 +1,6 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; -import com.yfd.platform.data.domain.FishImportResult; +import com.yfd.platform.qgc_data.domain.FishImportResult; import java.io.InputStream; diff --git a/backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IImportTaskService.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/IImportTaskService.java index d0ca0b73..dd880fc7 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IImportTaskService.java @@ -1,10 +1,10 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.data.domain.FishImportResult; -import com.yfd.platform.data.domain.ImportTask; -import com.yfd.platform.data.domain.ImportTaskRow; +import com.yfd.platform.qgc_data.domain.FishImportResult; +import com.yfd.platform.qgc_data.domain.ImportTask; +import com.yfd.platform.qgc_data.domain.ImportTaskRow; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/ISysUserDataScopeService.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/ISysUserDataScopeService.java index a4f75d35..9763c025 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/ISysUserDataScopeService.java @@ -1,10 +1,10 @@ -package com.yfd.platform.data.service; +package com.yfd.platform.qgc_data.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.domain.bo.EditUserDataScopeBo; -import com.yfd.platform.data.domain.vo.SysUserDataScopeVO; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.domain.bo.EditUserDataScopeBo; +import com.yfd.platform.qgc_data.domain.vo.SysUserDataScopeVO; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalChangeLogServiceImpl.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalChangeLogServiceImpl.java index 0e4782a8..895cb7a1 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalChangeLogServiceImpl.java @@ -1,11 +1,9 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.ApprovalChangeLog; -import com.yfd.platform.data.mapper.ApprovalChangeLogMapper; -import com.yfd.platform.data.service.IApprovalChangeLogService; -import com.yfd.platform.system.domain.SysUser; +import com.yfd.platform.qgc_data.domain.ApprovalChangeLog; +import com.yfd.platform.qgc_data.mapper.ApprovalChangeLogMapper; +import com.yfd.platform.qgc_data.service.IApprovalChangeLogService; import com.yfd.platform.system.mapper.SysUserMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalLogServiceImpl.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalLogServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalLogServiceImpl.java index cb491738..b3a577be 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalLogServiceImpl.java @@ -1,10 +1,10 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.ApprovalLog; -import com.yfd.platform.data.mapper.ApprovalLogMapper; -import com.yfd.platform.data.service.IApprovalLogService; +import com.yfd.platform.qgc_data.domain.ApprovalLog; +import com.yfd.platform.qgc_data.mapper.ApprovalLogMapper; +import com.yfd.platform.qgc_data.service.IApprovalLogService; import com.yfd.platform.system.domain.SysUser; import com.yfd.platform.system.mapper.SysUserMapper; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalMainServiceImpl.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalMainServiceImpl.java index 27923ee2..caca4a50 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ApprovalMainServiceImpl.java @@ -1,15 +1,13 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.ApprovalMain; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.ApprovalMainMapper; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.data.service.IApprovalLogService; -import com.yfd.platform.data.service.IApprovalMainService; +import com.yfd.platform.qgc_data.domain.ApprovalMain; +import com.yfd.platform.qgc_data.mapper.ApprovalMainMapper; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_data.service.IApprovalLogService; +import com.yfd.platform.qgc_data.service.IApprovalMainService; import com.yfd.platform.system.domain.SysUser; import com.yfd.platform.system.mapper.SysUserMapper; import jakarta.annotation.Resource; @@ -18,7 +16,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.*; -import java.util.stream.Collectors; /** *

diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java index 4fd0c39e..2d723be6 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.data.domain.ApprovalMain; -import com.yfd.platform.data.domain.FishDraftData; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.domain.vo.FishDraftDataVO; -import com.yfd.platform.data.mapper.FishDraftDataMapper; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.data.service.IApprovalChangeLogService; -import com.yfd.platform.data.service.IApprovalLogService; -import com.yfd.platform.data.service.IApprovalMainService; -import com.yfd.platform.data.service.IFishDraftDataService; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdFpssR; -import com.yfd.platform.env.domain.SdHbrvDic; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.mapper.SdFpssRMapper; -import com.yfd.platform.env.mapper.SdHbrvDicMapper; -import com.yfd.platform.env.service.ISdFpssRService; +import com.yfd.platform.qgc_data.domain.ApprovalMain; +import com.yfd.platform.qgc_data.domain.FishDraftData; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.domain.vo.FishDraftDataVO; +import com.yfd.platform.qgc_data.mapper.FishDraftDataMapper; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_data.service.IApprovalChangeLogService; +import com.yfd.platform.qgc_data.service.IApprovalLogService; +import com.yfd.platform.qgc_data.service.IApprovalMainService; +import com.yfd.platform.qgc_data.service.IFishDraftDataService; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdFpssR; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.mapper.SdFpssRMapper; +import com.yfd.platform.qgc_base.mapper.SdHbrvDicMapper; +import com.yfd.platform.qgc_base.service.ISdFpssRService; import com.yfd.platform.system.domain.SysUser; import com.yfd.platform.system.mapper.SysUserMapper; import com.yfd.platform.utils.KendoUtil; @@ -32,11 +32,8 @@ import com.yfd.platform.utils.SecurityUtils; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.executor.BatchResult; -import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; import java.util.*; diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishImportServiceImpl.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishImportServiceImpl.java index 5d49a60f..6df1f3fd 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishImportServiceImpl.java @@ -1,23 +1,22 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.databind.exc.InvalidFormatException; -import com.yfd.platform.data.domain.FishDraftData; -import com.yfd.platform.data.domain.FishImportRequest; -import com.yfd.platform.data.domain.FishImportResult; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.data.service.AttachmentUploadService; -import com.yfd.platform.data.service.IFishDraftDataService; -import com.yfd.platform.data.service.IFishImportService; -import com.yfd.platform.data.utils.ZipFileUtil; -import com.yfd.platform.env.domain.*; -import com.yfd.platform.env.mapper.*; +import com.yfd.platform.qgc_data.domain.FishDraftData; +import com.yfd.platform.qgc_data.domain.FishImportRequest; +import com.yfd.platform.qgc_data.domain.FishImportResult; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_data.service.AttachmentUploadService; +import com.yfd.platform.qgc_data.service.IFishDraftDataService; +import com.yfd.platform.qgc_data.service.IFishImportService; +import com.yfd.platform.qgc_data.utils.ZipFileUtil; +import com.yfd.platform.qgc_base.domain.*; +import com.yfd.platform.qgc_base.mapper.*; import com.yfd.platform.system.service.ISysDictionaryItemsService; import com.yfd.platform.system.service.ISysDictionaryService; -import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.poi.EncryptedDocumentException; @@ -34,7 +33,6 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; -import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.*; diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishStatisticsServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishStatisticsServiceImpl.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/data/service/impl/FishStatisticsServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishStatisticsServiceImpl.java index 8e975ed9..87749f86 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishStatisticsServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishStatisticsServiceImpl.java @@ -1,13 +1,12 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.data.domain.vo.FishStatisticsVO; -import com.yfd.platform.data.mapper.FishStatisticsMapper; -import com.yfd.platform.data.service.IFishStatisticsService; -import com.yfd.platform.utils.KendoUtil; +import com.yfd.platform.qgc_data.domain.vo.FishStatisticsVO; +import com.yfd.platform.qgc_data.mapper.FishStatisticsMapper; +import com.yfd.platform.qgc_data.service.IFishStatisticsService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ImportTaskServiceImpl.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ImportTaskServiceImpl.java index 7b6e8e91..db0b1550 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/ImportTaskServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; @@ -8,24 +8,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.yfd.platform.data.domain.FishDraftData; -import com.yfd.platform.data.domain.FishImportResult; -import com.yfd.platform.data.domain.ImportTask; -import com.yfd.platform.data.domain.ImportTaskRow; -import com.yfd.platform.data.mapper.ImportTaskMapper; -import com.yfd.platform.data.mapper.ImportTaskRowMapper; -import com.yfd.platform.data.service.AttachmentUploadService; -import com.yfd.platform.data.service.IImportTaskService; +import com.yfd.platform.qgc_data.domain.FishDraftData; +import com.yfd.platform.qgc_data.domain.FishImportResult; +import com.yfd.platform.qgc_data.domain.ImportTask; +import com.yfd.platform.qgc_data.domain.ImportTaskRow; +import com.yfd.platform.qgc_data.mapper.ImportTaskMapper; +import com.yfd.platform.qgc_data.mapper.ImportTaskRowMapper; +import com.yfd.platform.qgc_data.service.AttachmentUploadService; +import com.yfd.platform.qgc_data.service.IImportTaskService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.*; import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; /** *

diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/SysUserDataScopeServiceImpl.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_data/service/impl/SysUserDataScopeServiceImpl.java index a1e86244..1f106acb 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/SysUserDataScopeServiceImpl.java @@ -1,25 +1,25 @@ -package com.yfd.platform.data.service.impl; +package com.yfd.platform.qgc_data.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.domain.bo.EditUserDataScopeBo; -import com.yfd.platform.data.domain.vo.SysUserDataScopeVO; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.data.service.ISysUserDataScopeService; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdHbrvDic; -import com.yfd.platform.env.domain.SdHycdDic; -import com.yfd.platform.env.domain.SdHydrobase; -import com.yfd.platform.env.domain.SdRvcdDic; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.mapper.SdHbrvDicMapper; -import com.yfd.platform.env.mapper.SdHycdDicMapper; -import com.yfd.platform.env.mapper.SdHydrobaseMapper; -import com.yfd.platform.env.mapper.SdRvcdDicMapper; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.domain.bo.EditUserDataScopeBo; +import com.yfd.platform.qgc_data.domain.vo.SysUserDataScopeVO; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_data.service.ISysUserDataScopeService; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.domain.SdHbrvDic; +import com.yfd.platform.qgc_base.domain.SdHycdDic; +import com.yfd.platform.qgc_base.domain.SdHydrobase; +import com.yfd.platform.qgc_base.domain.SdRvcdDic; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.mapper.SdHbrvDicMapper; +import com.yfd.platform.qgc_base.mapper.SdHycdDicMapper; +import com.yfd.platform.qgc_base.mapper.SdHydrobaseMapper; +import com.yfd.platform.qgc_base.mapper.SdRvcdDicMapper; import com.yfd.platform.system.domain.SysUser; import com.yfd.platform.system.mapper.SysUserMapper; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/data/utils/ZipFileUtil.java b/backend/src/main/java/com/yfd/platform/qgc_data/utils/ZipFileUtil.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/data/utils/ZipFileUtil.java rename to backend/src/main/java/com/yfd/platform/qgc_data/utils/ZipFileUtil.java index d183bca2..bcfd2ef3 100644 --- a/backend/src/main/java/com/yfd/platform/data/utils/ZipFileUtil.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/utils/ZipFileUtil.java @@ -1,4 +1,4 @@ -package com.yfd.platform.data.utils; +package com.yfd.platform.qgc_data.utils; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; diff --git a/backend/src/main/java/com/yfd/platform/eng/controller/AlarmPointController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/eng/controller/AlarmPointController.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java index 76ace5c0..02fcd23a 100644 --- a/backend/src/main/java/com/yfd/platform/eng/controller/AlarmPointController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.eng.controller; +package com.yfd.platform.qgc_eng.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.eng.entity.vo.AlarmStcdCountVo; -import com.yfd.platform.eng.service.AlarmPointService; +import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; +import com.yfd.platform.qgc_eng.service.AlarmPointService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.PostMapping; diff --git a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/eng/controller/EngEqController.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java index 7dda1323..c05b2e6e 100644 --- a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.eng.controller; +package com.yfd.platform.qgc_eng.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupResult; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.eng.service.EngEqService; +import com.yfd.platform.qgc_eng.service.EngEqService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.PostMapping; diff --git a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/eng/controller/EngEqDataController.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java index 6b0f1a90..60a072f5 100644 --- a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java @@ -1,10 +1,10 @@ -package com.yfd.platform.eng.controller; +package com.yfd.platform.qgc_eng.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.eng.service.EngEqDataService; +import com.yfd.platform.qgc_eng.service.EngEqDataService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqIntervalController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/eng/controller/EngEqIntervalController.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java index c70a96d7..57871c1d 100644 --- a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqIntervalController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.controller; +package com.yfd.platform.qgc_eng.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.annotation.Log; @@ -6,12 +6,11 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.eng.domain.MsEngEq; -import com.yfd.platform.eng.service.EngEqIntervalService; -import com.yfd.platform.eng.service.EngEqService; +import com.yfd.platform.qgc_eng.domain.MsEngEq; +import com.yfd.platform.qgc_eng.service.EngEqIntervalService; +import com.yfd.platform.qgc_eng.service.EngEqService; import com.yfd.platform.utils.KendoUtil; import com.yfd.platform.utils.QgcQueryWrapperUtil; -import com.yfd.platform.utils.QueryWrapperUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqStatController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/eng/controller/EngEqStatController.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java index d88865bd..9460967c 100644 --- a/backend/src/main/java/com/yfd/platform/eng/controller/EngEqStatController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.eng.controller; +package com.yfd.platform.qgc_eng.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupResult; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.eng.service.EngEqService; +import com.yfd.platform.qgc_eng.service.EngEqService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/eng/controller/EngSpecialController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/eng/controller/EngSpecialController.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java index 194bea98..04aac605 100644 --- a/backend/src/main/java/com/yfd/platform/eng/controller/EngSpecialController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java @@ -1,11 +1,11 @@ -package com.yfd.platform.eng.controller; +package com.yfd.platform.qgc_eng.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.eng.entity.EqSpecial; -import com.yfd.platform.eng.service.EngSpecialService; +import com.yfd.platform.qgc_eng.entity.EqSpecial; +import com.yfd.platform.qgc_eng.service.EngSpecialService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/eng/domain/MsEngEq.java b/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/eng/domain/MsEngEq.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java index 28c4018f..6078be33 100644 --- a/backend/src/main/java/com/yfd/platform/eng/domain/MsEngEq.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.domain; +package com.yfd.platform.qgc_eng.domain; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/eng/entity/EqSpecial.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/eng/entity/EqSpecial.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java index f8a116da..d7d1ba24 100644 --- a/backend/src/main/java/com/yfd/platform/eng/entity/EqSpecial.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.entity; +package com.yfd.platform.qgc_eng.entity; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/eng/entity/vo/AlarmStcdCountVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/eng/entity/vo/AlarmStcdCountVo.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java index d06eebea..01635f24 100644 --- a/backend/src/main/java/com/yfd/platform/eng/entity/vo/AlarmStcdCountVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.entity.vo; +package com.yfd.platform.qgc_eng.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDataVo.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java index eea49d20..2dc3c7bd 100644 --- a/backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDataVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.entity.vo; +package com.yfd.platform.qgc_eng.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDayDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDayDataVo.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java index adf9671d..f349dcab 100644 --- a/backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDayDataVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.entity.vo; +package com.yfd.platform.qgc_eng.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDrtpDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDrtpDataVo.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java index 4c108a1e..64880657 100644 --- a/backend/src/main/java/com/yfd/platform/eng/entity/vo/EngEqDrtpDataVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.entity.vo; +package com.yfd.platform.qgc_eng.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/eng/mapper/EngEqMapper.java b/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/eng/mapper/EngEqMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java index 8c660c2a..e981c49b 100644 --- a/backend/src/main/java/com/yfd/platform/eng/mapper/EngEqMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.eng.mapper; +package com.yfd.platform.qgc_eng.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.eng.domain.MsEngEq; +import com.yfd.platform.qgc_eng.domain.MsEngEq; import org.apache.ibatis.annotations.Select; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/AlarmPointService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/eng/service/AlarmPointService.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java index babe6ebc..b2506a18 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/AlarmPointService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java @@ -1,9 +1,9 @@ -package com.yfd.platform.eng.service; +package com.yfd.platform.qgc_eng.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.eng.entity.vo.AlarmStcdCountVo; +import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/eng/service/EngEqDataService.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java index 2fe57493..4b9218ba 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.service; +package com.yfd.platform.qgc_eng.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/EngEqIntervalService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/eng/service/EngEqIntervalService.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java index a4b224ed..2c4512e3 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/EngEqIntervalService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java @@ -1,10 +1,10 @@ -package com.yfd.platform.eng.service; +package com.yfd.platform.qgc_eng.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupResult; -import com.yfd.platform.eng.domain.MsEngEq; +import com.yfd.platform.qgc_eng.domain.MsEngEq; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/EngEqService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/eng/service/EngEqService.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java index 288aa9ee..79888918 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/EngEqService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java @@ -1,11 +1,11 @@ -package com.yfd.platform.eng.service; +package com.yfd.platform.qgc_eng.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupResult; -import com.yfd.platform.eng.domain.MsEngEq; +import com.yfd.platform.qgc_eng.domain.MsEngEq; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/EngSpecialService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/eng/service/EngSpecialService.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java index 0c3a884a..24b6d66c 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/EngSpecialService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java @@ -1,9 +1,9 @@ -package com.yfd.platform.eng.service; +package com.yfd.platform.qgc_eng.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.eng.entity.EqSpecial; +import com.yfd.platform.qgc_eng.entity.EqSpecial; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/impl/AlarmPointServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/eng/service/impl/AlarmPointServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java index 225a0a57..20b8cde1 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/impl/AlarmPointServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java @@ -1,10 +1,10 @@ -package com.yfd.platform.eng.service.impl; +package com.yfd.platform.qgc_eng.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.eng.entity.vo.AlarmStcdCountVo; -import com.yfd.platform.eng.service.AlarmPointService; +import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; +import com.yfd.platform.qgc_eng.service.AlarmPointService; import org.springframework.stereotype.Service; import java.util.ArrayList; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqDataServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java index 2fc6bc42..dccc72c7 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java @@ -1,9 +1,9 @@ -package com.yfd.platform.eng.service.impl; +package com.yfd.platform.qgc_eng.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.eng.service.EngEqDataService; +import com.yfd.platform.qgc_eng.service.EngEqDataService; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java index d851bc61..f8168546 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqIntervalServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.eng.service.impl; +package com.yfd.platform.qgc_eng.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.*; import com.yfd.platform.common.enums.QecIntervalEnum; import com.yfd.platform.common.enums.ShowEnum; -import com.yfd.platform.eng.domain.MsEngEq; -import com.yfd.platform.eng.service.EngEqIntervalService; +import com.yfd.platform.qgc_eng.domain.MsEngEq; +import com.yfd.platform.qgc_eng.service.EngEqIntervalService; import com.yfd.platform.utils.QueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java index 516de82e..0efe4056 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngEqServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java @@ -1,13 +1,13 @@ -package com.yfd.platform.eng.service.impl; +package com.yfd.platform.qgc_eng.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.*; -import com.yfd.platform.eng.domain.MsEngEq; -import com.yfd.platform.eng.mapper.EngEqMapper; -import com.yfd.platform.eng.service.EngEqService; +import com.yfd.platform.qgc_eng.domain.MsEngEq; +import com.yfd.platform.qgc_eng.mapper.EngEqMapper; +import com.yfd.platform.qgc_eng.service.EngEqService; import com.yfd.platform.utils.KendoUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngSpecialServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/eng/service/impl/EngSpecialServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java index 0854231c..4ccb9e8f 100644 --- a/backend/src/main/java/com/yfd/platform/eng/service/impl/EngSpecialServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java @@ -1,10 +1,10 @@ -package com.yfd.platform.eng.service.impl; +package com.yfd.platform.qgc_eng.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.eng.entity.EqSpecial; -import com.yfd.platform.eng.service.EngSpecialService; +import com.yfd.platform.qgc_eng.entity.EqSpecial; +import com.yfd.platform.qgc_eng.service.EngSpecialService; import org.springframework.stereotype.Service; import java.util.ArrayList; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/controller/FhHabitatController.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/controller/FhHabitatController.java index 2365c12c..8a5ee63d 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/controller/FhHabitatController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/controller/FhHabitatController.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.fh.controller; +package com.yfd.platform.qgc_env.fh.controller; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.fh.entity.ao.FhDefaultAo; -import com.yfd.platform.env.fh.service.FhHabitatService; +import com.yfd.platform.qgc_env.fh.entity.ao.FhDefaultAo; +import com.yfd.platform.qgc_env.fh.service.FhHabitatService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/ao/FhDefaultAo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/ao/FhDefaultAo.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/ao/FhDefaultAo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/ao/FhDefaultAo.java index ab6309a2..50c238b3 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/ao/FhDefaultAo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/ao/FhDefaultAo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.ao; +package com.yfd.platform.qgc_env.fh.entity.ao; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhBaseInfoVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhBaseInfoVo.java index 5bd36a4c..93105dc0 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhBaseInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhBaseInfoVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.vo; +package com.yfd.platform.qgc_env.fh.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhDefaultVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhDefaultVo.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhDefaultVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhDefaultVo.java index 1aec0c8c..2ff9be9e 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhDefaultVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhDefaultVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.vo; +package com.yfd.platform.qgc_env.fh.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhMsstbprptVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhMsstbprptVo.java index 2214ad61..177ce601 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhMsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhMsstbprptVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.vo; +package com.yfd.platform.qgc_env.fh.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhSdriverdayVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhSdriverdayVo.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhSdriverdayVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhSdriverdayVo.java index f81decd4..0abd7809 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhSdriverdayVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhSdriverdayVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.vo; +package com.yfd.platform.qgc_env.fh.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhSdrvwtsVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhSdrvwtsVo.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhSdrvwtsVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhSdrvwtsVo.java index baafa011..5654168c 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/FhSdrvwtsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/FhSdrvwtsVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.vo; +package com.yfd.platform.qgc_env.fh.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/HabitatVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/fh/entity/vo/HabitatVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java index 876b478b..937c58f6 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/entity/vo/HabitatVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.entity.vo; +package com.yfd.platform.qgc_env.fh.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/FhHabitatService.java similarity index 72% rename from backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/service/FhHabitatService.java index 237fa0f0..267ff509 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/FhHabitatService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/FhHabitatService.java @@ -1,11 +1,11 @@ -package com.yfd.platform.env.fh.service; +package com.yfd.platform.qgc_env.fh.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.fh.entity.ao.FhDefaultAo; -import com.yfd.platform.env.fh.entity.vo.FhBaseInfoVo; -import com.yfd.platform.env.fh.entity.vo.FhDefaultVo; -import com.yfd.platform.env.fh.entity.vo.HabitatVo; +import com.yfd.platform.qgc_env.fh.entity.ao.FhDefaultAo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhBaseInfoVo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhDefaultVo; +import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo; public interface FhHabitatService { diff --git a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java index d4cd1b34..d258e690 100644 --- a/backend/src/main/java/com/yfd/platform/env/fh/service/impl/FhHabitatServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fh.service.impl; +package com.yfd.platform.qgc_env.fh.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; @@ -13,15 +13,15 @@ import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.fh.entity.ao.FhDefaultAo; -import com.yfd.platform.env.fh.entity.vo.FhBaseInfoVo; -import com.yfd.platform.env.fh.entity.vo.FhDefaultVo; -import com.yfd.platform.env.fh.entity.vo.HabitatVo; -import com.yfd.platform.env.fh.entity.vo.FhMsstbprptVo; -import com.yfd.platform.env.fh.entity.vo.FhSdriverdayVo; -import com.yfd.platform.env.fh.entity.vo.FhSdrvwtsVo; -import com.yfd.platform.env.fh.service.FhHabitatService; -import com.yfd.platform.env.wq.entity.vo.StTbYsVo; +import com.yfd.platform.qgc_env.fh.entity.ao.FhDefaultAo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhBaseInfoVo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhDefaultVo; +import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhMsstbprptVo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhSdriverdayVo; +import com.yfd.platform.qgc_env.fh.entity.vo.FhSdrvwtsVo; +import com.yfd.platform.qgc_env.fh.service.FhHabitatService; +import com.yfd.platform.qgc_env.wq.entity.vo.StTbYsVo; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/controller/FishPassageController.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/controller/FishPassageController.java index f218d426..104b5e69 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/controller/FishPassageController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/controller/FishPassageController.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.fp.controller; +package com.yfd.platform.qgc_env.fp.controller; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.fp.service.FpBuildService; -import com.yfd.platform.env.fp.service.FpRunService; +import com.yfd.platform.qgc_env.fp.service.FpBuildService; +import com.yfd.platform.qgc_env.fp.service.FpRunService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FdFishVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FdFishVo.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FdFishVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FdFishVo.java index 210e89b3..9c691ff7 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FdFishVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FdFishVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.entity.vo; +package com.yfd.platform.qgc_env.fp.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpConstructionSituationVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpConstructionSituationVo.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpConstructionSituationVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpConstructionSituationVo.java index 5f86411a..0e712b2c 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpConstructionSituationVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpConstructionSituationVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.entity.vo; +package com.yfd.platform.qgc_env.fp.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpFtpStatisticsVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpFtpStatisticsVo.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpFtpStatisticsVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpFtpStatisticsVo.java index 8073de06..55330057 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpFtpStatisticsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpFtpStatisticsVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.entity.vo; +package com.yfd.platform.qgc_env.fp.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpRunPlanVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpRunPlanVo.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpRunPlanVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpRunPlanVo.java index 6f2c5455..0cb40ab2 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpRunPlanVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpRunPlanVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.entity.vo; +package com.yfd.platform.qgc_env.fp.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpVmsstbprptVo.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpVmsstbprptVo.java index 9a124dfc..4ad9471d 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/FpVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/FpVmsstbprptVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.entity.vo; +package com.yfd.platform.qgc_env.fp.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/YearFpStatisticsVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/YearFpStatisticsVo.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/env/fp/entity/vo/YearFpStatisticsVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/YearFpStatisticsVo.java index ccbc42c3..29b100dc 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/entity/vo/YearFpStatisticsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/entity/vo/YearFpStatisticsVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.entity.vo; +package com.yfd.platform.qgc_env.fp.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/FpBuildService.java similarity index 68% rename from backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/service/FpBuildService.java index 1053e9ee..8d1cefac 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/FpBuildService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/FpBuildService.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.fp.service; +package com.yfd.platform.qgc_env.fp.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.fp.entity.vo.FpConstructionSituationVo; -import com.yfd.platform.env.fp.entity.vo.FpVmsstbprptVo; +import com.yfd.platform.qgc_env.fp.entity.vo.FpConstructionSituationVo; +import com.yfd.platform.qgc_env.fp.entity.vo.FpVmsstbprptVo; public interface FpBuildService { diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/FpRunService.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/FpRunService.java similarity index 65% rename from backend/src/main/java/com/yfd/platform/env/fp/service/FpRunService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/service/FpRunService.java index da685715..3088f708 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/FpRunService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/FpRunService.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.fp.service; +package com.yfd.platform.qgc_env.fp.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.fp.entity.vo.YearFpStatisticsVo; -import com.yfd.platform.env.fp.entity.vo.FpRunPlanVo; +import com.yfd.platform.qgc_env.fp.entity.vo.YearFpStatisticsVo; +import com.yfd.platform.qgc_env.fp.entity.vo.FpRunPlanVo; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java index 6153fdb7..7ae27947 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpBuildServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.service.impl; +package com.yfd.platform.qgc_env.fp.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceLoadOptionsBase; @@ -6,9 +6,9 @@ import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; -import com.yfd.platform.env.fp.entity.vo.FpConstructionSituationVo; -import com.yfd.platform.env.fp.entity.vo.FpVmsstbprptVo; -import com.yfd.platform.env.fp.service.FpBuildService; +import com.yfd.platform.qgc_env.fp.entity.vo.FpConstructionSituationVo; +import com.yfd.platform.qgc_env.fp.entity.vo.FpVmsstbprptVo; +import com.yfd.platform.qgc_env.fp.service.FpBuildService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.util.CollectionUtils; diff --git a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpRunServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpRunServiceImpl.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpRunServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpRunServiceImpl.java index d2d0e9a6..d0591911 100644 --- a/backend/src/main/java/com/yfd/platform/env/fp/service/impl/FpRunServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpRunServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.fp.service.impl; +package com.yfd.platform.qgc_env.fp.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; @@ -9,10 +9,10 @@ import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.fp.entity.vo.FpFtpStatisticsVo; -import com.yfd.platform.env.fp.entity.vo.FpRunPlanVo; -import com.yfd.platform.env.fp.entity.vo.YearFpStatisticsVo; -import com.yfd.platform.env.fp.service.FpRunService; +import com.yfd.platform.qgc_env.fp.entity.vo.FpFtpStatisticsVo; +import com.yfd.platform.qgc_env.fp.entity.vo.FpRunPlanVo; +import com.yfd.platform.qgc_env.fp.entity.vo.YearFpStatisticsVo; +import com.yfd.platform.qgc_env.fp.service.FpRunService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java index 7472649c..ff4f0655 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.wq.controller; +package com.yfd.platform.qgc_env.wq.controller; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.wq.service.EnvWqDataService; +import com.yfd.platform.qgc_env.wq.service.EnvWqDataService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/EnvWqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/EnvWqDataVo.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/EnvWqDataVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/EnvWqDataVo.java index 4a60882e..c7c8cd5b 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/EnvWqDataVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/EnvWqDataVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/EnvWqVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/EnvWqVo.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/EnvWqVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/EnvWqVo.java index 47163bf7..f40f3699 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/EnvWqVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/EnvWqVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StTbYsVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/StTbYsVo.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StTbYsVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/StTbYsVo.java index 21b3251d..b529cff3 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StTbYsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/StTbYsVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StbprpYsVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/StbprpYsVo.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StbprpYsVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/StbprpYsVo.java index f5c5d413..80ab125e 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/StbprpYsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/StbprpYsVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqAlongVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqAlongVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqAlongVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqAlongVo.java index ad5d38b2..c47d8f41 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqAlongVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqAlongVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqBaseInfoVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqBaseInfoVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqBaseInfoVo.java index ac273d24..0fc81648 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqBaseInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqBaseInfoVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqMsstbprptGroupVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqMsstbprptGroupVo.java similarity index 88% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqMsstbprptGroupVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqMsstbprptGroupVo.java index 8ba1aeb1..05a011fa 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqMsstbprptGroupVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqMsstbprptGroupVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqVmsstbprptVo.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqVmsstbprptVo.java index 0a46130d..04810375 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/WqVmsstbprptVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.entity.vo; +package com.yfd.platform.qgc_env.wq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java index 321901d7..3d084c72 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.wq.service; +package com.yfd.platform.qgc_env.wq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.wq.entity.vo.WqBaseInfoVo; +import com.yfd.platform.qgc_env.wq.entity.vo.WqBaseInfoVo; public interface EnvWqDataService { diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index a3357165..ed24d9b9 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wq.service.impl; +package com.yfd.platform.qgc_env.wq.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; @@ -13,9 +13,9 @@ import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.wq.entity.vo.*; -import com.yfd.platform.env.wq.service.EnvWqDataService; -import com.yfd.platform.env.wt.entity.vo.WbsbVo; +import com.yfd.platform.qgc_env.wq.entity.vo.*; +import com.yfd.platform.qgc_env.wq.service.EnvWqDataService; +import com.yfd.platform.qgc_env.wt.entity.vo.WbsbVo; import com.yfd.platform.utils.KendoUtil; import com.yfd.platform.utils.QgcQueryWrapperUtil; import com.yfd.platform.utils.RequestHolder; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java index 93460c1a..b1bf235c 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.controller; +package com.yfd.platform.qgc_env.wt.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -7,9 +7,9 @@ import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.exception.BizException; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.entity.vo.BatchDeleteAo; -import com.yfd.platform.env.wt.entity.vo.WtrvInfo; -import com.yfd.platform.env.wt.service.*; +import com.yfd.platform.qgc_base.entity.vo.BatchDeleteAo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtrvInfo; +import com.yfd.platform.qgc_env.wt.service.*; import com.yfd.platform.utils.QgcQueryWrapperUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/DfltkwFacilityCountVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/DfltkwFacilityCountVo.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/DfltkwFacilityCountVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/DfltkwFacilityCountVo.java index 5ed84803..46cafc39 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/DfltkwFacilityCountVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/DfltkwFacilityCountVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/FishSpawnVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/FishSpawnVo.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/FishSpawnVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/FishSpawnVo.java index 4d1c9de6..566b83c8 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/FishSpawnVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/FishSpawnVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/RstcdTreeInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/RstcdTreeInfoVo.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/RstcdTreeInfoVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/RstcdTreeInfoVo.java index d62cab4c..54819070 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/RstcdTreeInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/RstcdTreeInfoVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdAlongDetailVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdAlongDetailVO.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdAlongDetailVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdAlongDetailVO.java index 6496d197..a3188af3 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdAlongDetailVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdAlongDetailVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdAlongVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdAlongVO.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdAlongVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdAlongVO.java index d4a6a7c0..b6559bd6 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdAlongVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdAlongVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdDzChuiXiangListVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdDzChuiXiangListVO.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdDzChuiXiangListVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdDzChuiXiangListVO.java index 90ec997e..df6a7e66 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdDzChuiXiangListVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdDzChuiXiangListVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdMonthDetailVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdMonthDetailVO.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdMonthDetailVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdMonthDetailVO.java index bd26e144..c708410c 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdMonthDetailVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdMonthDetailVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdRvwtSVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdRvwtSVO.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdRvwtSVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdRvwtSVO.java index 0e79bea0..ae6d7108 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdRvwtSVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdRvwtSVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java index 15a30c95..71894890 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtMonitorCountVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtMonitorCountVO.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtMonitorCountVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtMonitorCountVO.java index 3e05d905..9a5c397e 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtMonitorCountVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtMonitorCountVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtvtYearVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtvtYearVo.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtvtYearVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtvtYearVo.java index b63b2bd4..65a81f06 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtvtYearVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtvtYearVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdYearDetailVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdYearDetailVO.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdYearDetailVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdYearDetailVO.java index 1ba93147..bb3da57c 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdYearDetailVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdYearDetailVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdYearListVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdYearListVO.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdYearListVO.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdYearListVO.java index 570db59e..d4d6d3c6 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdYearListVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdYearListVO.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/StcdVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/StcdVo.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/StcdVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/StcdVo.java index bd578063..c0cd75f2 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/StcdVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/StcdVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SttpInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SttpInfoVo.java similarity index 95% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SttpInfoVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SttpInfoVo.java index 681f9e78..0b3962b3 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SttpInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SttpInfoVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WbsbVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WbsbVo.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WbsbVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WbsbVo.java index f205081a..eaccd9ef 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WbsbVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WbsbVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtBaseInfoVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtBaseInfoVo.java index 031deef9..37d0f22f 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtBaseInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtBaseInfoVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtFishVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtFishVo.java similarity index 85% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtFishVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtFishVo.java index 859a4d46..181aaae2 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtFishVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtFishVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtTreeStcdVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtTreeStcdVo.java similarity index 96% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtTreeStcdVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtTreeStcdVo.java index 541514ba..9ec0fcbe 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtTreeStcdVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtTreeStcdVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvDataVo.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvDataVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvDataVo.java index f788117f..a3b5b195 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvDataVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvDataVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvInfo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvInfo.java similarity index 97% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvInfo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvInfo.java index 43dc6c2c..75c8b69b 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvInfo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvInfo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvVo.java similarity index 87% rename from backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvVo.java index 1f4a30ed..ac9c0f7d 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/WtrvVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WtrvVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.entity.vo; +package com.yfd.platform.qgc_env.wt.entity.vo; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/AlongDetailMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/AlongDetailMapper.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/AlongDetailMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/AlongDetailMapper.java index 486b6d8c..3592d50e 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/AlongDetailMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/AlongDetailMapper.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.wt.entity.vo.SdAlongDetailVO; -import com.yfd.platform.env.wt.entity.vo.WtrvInfo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdAlongDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.WtrvInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/AlongListMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/AlongListMapper.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/AlongListMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/AlongListMapper.java index b5849c7c..0fd45a09 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/AlongListMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/AlongListMapper.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.wt.entity.vo.SdAlongVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdAlongVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdDzChuiXiangListMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdDzChuiXiangListMapper.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/SdDzChuiXiangListMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdDzChuiXiangListMapper.java index a9a46a9d..100ec6bc 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdDzChuiXiangListMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdDzChuiXiangListMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.wt.entity.vo.SdDzChuiXiangListVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdDzChuiXiangListVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdRvwtSInOutOneMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdRvwtSInOutOneMapper.java similarity index 94% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/SdRvwtSInOutOneMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdRvwtSInOutOneMapper.java index c3298452..2670ef36 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdRvwtSInOutOneMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdRvwtSInOutOneMapper.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.wt.entity.vo.SdRvwtSVO; -import com.yfd.platform.env.wt.entity.vo.StcdVo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdRvwtSVO; +import com.yfd.platform.qgc_env.wt.entity.vo.StcdVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtMonitorMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtMonitorMapper.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtMonitorMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtMonitorMapper.java index b17bdef0..98c88ee4 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtMonitorMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtMonitorMapper.java @@ -1,6 +1,6 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; -import com.yfd.platform.env.wt.entity.vo.SdWtMonitorCountVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdWtMonitorCountVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtrvdrtpSMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtrvdrtpSMapper.java similarity index 93% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtrvdrtpSMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtrvdrtpSMapper.java index 76ea5e53..1ae5ef60 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtrvdrtpSMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtrvdrtpSMapper.java @@ -1,6 +1,6 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; -import com.yfd.platform.env.entity.vo.DataParam; +import com.yfd.platform.qgc_base.entity.vo.DataParam; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtvtRMapper.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtvtRMapper.java similarity index 89% rename from backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtvtRMapper.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtvtRMapper.java index 4357f570..8a514c00 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/mapper/SdWtvtRMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/mapper/SdWtvtRMapper.java @@ -1,7 +1,7 @@ -package com.yfd.platform.env.wt.mapper; +package com.yfd.platform.qgc_env.wt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.env.wt.entity.vo.SdWtvtYearVo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdWtvtYearVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/AlongDetailService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/AlongDetailService.java similarity index 87% rename from backend/src/main/java/com/yfd/platform/env/wt/service/AlongDetailService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/AlongDetailService.java index 7ff96690..5465ec79 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/AlongDetailService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/AlongDetailService.java @@ -1,13 +1,13 @@ -package com.yfd.platform.env.wt.service; +package com.yfd.platform.qgc_env.wt.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupResult; -import com.yfd.platform.env.entity.vo.BatchDeleteAo; -import com.yfd.platform.env.wt.entity.vo.SdAlongDetailVO; -import com.yfd.platform.env.wt.entity.vo.WtrvInfo; +import com.yfd.platform.qgc_base.entity.vo.BatchDeleteAo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdAlongDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.WtrvInfo; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/AlongListService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/AlongListService.java similarity index 83% rename from backend/src/main/java/com/yfd/platform/env/wt/service/AlongListService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/AlongListService.java index 418fc40f..f55a9beb 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/AlongListService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/AlongListService.java @@ -1,10 +1,10 @@ -package com.yfd.platform.env.wt.service; +package com.yfd.platform.qgc_env.wt.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.wt.entity.vo.SdYearListVO; -import com.yfd.platform.env.wt.entity.vo.StcdVo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdYearListVO; +import com.yfd.platform.qgc_env.wt.entity.vo.StcdVo; import org.springframework.web.bind.annotation.RequestBody; import java.util.Map; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdDzChuiXiangListService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdDzChuiXiangListService.java similarity index 91% rename from backend/src/main/java/com/yfd/platform/env/wt/service/SdDzChuiXiangListService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdDzChuiXiangListService.java index de4bbff4..086a3235 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdDzChuiXiangListService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdDzChuiXiangListService.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.service; +package com.yfd.platform.qgc_env.wt.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdRvwtSInOutOneService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdRvwtSInOutOneService.java similarity index 72% rename from backend/src/main/java/com/yfd/platform/env/wt/service/SdRvwtSInOutOneService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdRvwtSInOutOneService.java index 2bd09913..0ac4708b 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdRvwtSInOutOneService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdRvwtSInOutOneService.java @@ -1,9 +1,9 @@ -package com.yfd.platform.env.wt.service; +package com.yfd.platform.qgc_env.wt.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.wt.entity.vo.SdRvwtSVO; -import com.yfd.platform.env.wt.entity.vo.StcdVo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdRvwtSVO; +import com.yfd.platform.qgc_env.wt.entity.vo.StcdVo; public interface SdRvwtSInOutOneService { diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java similarity index 68% rename from backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java index 9a52159c..e8aab7ec 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java @@ -1,16 +1,16 @@ -package com.yfd.platform.env.wt.service; +package com.yfd.platform.qgc_env.wt.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.wt.entity.vo.DfltkwFacilityCountVo; -import com.yfd.platform.env.wt.entity.vo.FishSpawnVo; -import com.yfd.platform.env.wt.entity.vo.RstcdTreeInfoVo; -import com.yfd.platform.env.wt.entity.vo.SdMonthDetailVO; -import com.yfd.platform.env.wt.entity.vo.SdYearDetailVO; -import com.yfd.platform.env.wt.entity.vo.SttpInfoVo; -import com.yfd.platform.env.wt.entity.vo.WbsbVo; -import com.yfd.platform.env.wt.entity.vo.WtBaseInfoVo; -import com.yfd.platform.env.wt.entity.vo.WtrvVo; +import com.yfd.platform.qgc_env.wt.entity.vo.DfltkwFacilityCountVo; +import com.yfd.platform.qgc_env.wt.entity.vo.FishSpawnVo; +import com.yfd.platform.qgc_env.wt.entity.vo.RstcdTreeInfoVo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdMonthDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdYearDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SttpInfoVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WbsbVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtBaseInfoVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo; import java.util.List; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtvtRService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtvtRService.java similarity index 90% rename from backend/src/main/java/com/yfd/platform/env/wt/service/SdWtvtRService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtvtRService.java index 9d0e7382..f820339c 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtvtRService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtvtRService.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.service; +package com.yfd.platform.qgc_env.wt.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/AlongDetailServiceImpl.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/AlongDetailServiceImpl.java index 59a06849..d1bb3656 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/AlongDetailServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.service.impl; +package com.yfd.platform.qgc_env.wt.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; @@ -8,12 +8,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.*; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.entity.vo.*; -import com.yfd.platform.env.wt.mapper.AlongDetailMapper; -import com.yfd.platform.env.wt.mapper.SdWtrvdrtpSMapper; -import com.yfd.platform.env.wt.service.AlongDetailService; -import com.yfd.platform.env.wt.entity.vo.SdAlongDetailVO; -import com.yfd.platform.env.wt.entity.vo.WtrvInfo; +import com.yfd.platform.qgc_env.wt.mapper.AlongDetailMapper; +import com.yfd.platform.qgc_env.wt.mapper.SdWtrvdrtpSMapper; +import com.yfd.platform.qgc_env.wt.service.AlongDetailService; +import com.yfd.platform.qgc_env.wt.entity.vo.SdAlongDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.WtrvInfo; +import com.yfd.platform.qgc_base.entity.vo.BatchDeleteAo; +import com.yfd.platform.qgc_base.entity.vo.DataParam; import com.yfd.platform.utils.CollectionExtUtils; import com.yfd.platform.utils.QgcQueryWrapperUtil; import com.yfd.platform.utils.SecurityUtils; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/AlongListServiceImpl.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/AlongListServiceImpl.java index aa5e2168..8529947c 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/AlongListServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.service.impl; +package com.yfd.platform.qgc_env.wt.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -10,11 +10,11 @@ import com.yfd.platform.common.DynamicSQLMapper; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.PageInfo; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.wt.entity.vo.SdAlongVO; -import com.yfd.platform.env.wt.entity.vo.SdYearListVO; -import com.yfd.platform.env.wt.entity.vo.StcdVo; -import com.yfd.platform.env.wt.mapper.AlongListMapper; -import com.yfd.platform.env.wt.service.AlongListService; +import com.yfd.platform.qgc_env.wt.entity.vo.SdAlongVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdYearListVO; +import com.yfd.platform.qgc_env.wt.entity.vo.StcdVo; +import com.yfd.platform.qgc_env.wt.mapper.AlongListMapper; +import com.yfd.platform.qgc_env.wt.service.AlongListService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import com.yfd.platform.utils.SqlUtil; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdDzChuiXiangListServiceImpl.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdDzChuiXiangListServiceImpl.java index 9ee64c92..388aa8a3 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdDzChuiXiangListServiceImpl.java @@ -1,13 +1,13 @@ -package com.yfd.platform.env.wt.service.impl; +package com.yfd.platform.qgc_env.wt.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; -import com.yfd.platform.env.wt.entity.vo.SdDzChuiXiangListVO; -import com.yfd.platform.env.wt.mapper.SdDzChuiXiangListMapper; -import com.yfd.platform.env.wt.service.SdDzChuiXiangListService; +import com.yfd.platform.qgc_env.wt.entity.vo.SdDzChuiXiangListVO; +import com.yfd.platform.qgc_env.wt.mapper.SdDzChuiXiangListMapper; +import com.yfd.platform.qgc_env.wt.service.SdDzChuiXiangListService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdRvwtSInOutOneServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdRvwtSInOutOneServiceImpl.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdRvwtSInOutOneServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdRvwtSInOutOneServiceImpl.java index 68c98d69..6c86008f 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdRvwtSInOutOneServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdRvwtSInOutOneServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.wt.service.impl; +package com.yfd.platform.qgc_env.wt.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,10 +6,10 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.*; -import com.yfd.platform.env.wt.entity.vo.SdRvwtSVO; -import com.yfd.platform.env.wt.entity.vo.StcdVo; -import com.yfd.platform.env.wt.mapper.SdRvwtSInOutOneMapper; -import com.yfd.platform.env.wt.service.SdRvwtSInOutOneService; +import com.yfd.platform.qgc_env.wt.entity.vo.SdRvwtSVO; +import com.yfd.platform.qgc_env.wt.entity.vo.StcdVo; +import com.yfd.platform.qgc_env.wt.mapper.SdRvwtSInOutOneMapper; +import com.yfd.platform.qgc_env.wt.service.SdRvwtSInOutOneService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index 7c0fb6c4..1c7092ec 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -1,24 +1,24 @@ -package com.yfd.platform.env.wt.service.impl; +package com.yfd.platform.qgc_env.wt.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.*; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.wt.entity.vo.DfltkwFacilityCountVo; -import com.yfd.platform.env.wt.entity.vo.FishSpawnVo; -import com.yfd.platform.env.wt.entity.vo.RstcdTreeInfoVo; -import com.yfd.platform.env.wt.entity.vo.SdMonthDetailVO; -import com.yfd.platform.env.wt.entity.vo.SdYearDetailVO; -import com.yfd.platform.env.wt.entity.vo.SdWtBaseInfoVO; -import com.yfd.platform.env.wt.entity.vo.SdWtMonitorCountVO; -import com.yfd.platform.env.wt.entity.vo.SttpInfoVo; -import com.yfd.platform.env.wt.entity.vo.WbsbVo; -import com.yfd.platform.env.wt.entity.vo.WtBaseInfoVo; -import com.yfd.platform.env.wt.entity.vo.WtFishVo; -import com.yfd.platform.env.wt.entity.vo.WtTreeStcdVo; -import com.yfd.platform.env.wt.entity.vo.WtrvVo; -import com.yfd.platform.env.wt.mapper.SdWtMonitorMapper; -import com.yfd.platform.env.wt.service.SdWtMonitorService; +import com.yfd.platform.qgc_env.wt.entity.vo.DfltkwFacilityCountVo; +import com.yfd.platform.qgc_env.wt.entity.vo.FishSpawnVo; +import com.yfd.platform.qgc_env.wt.entity.vo.RstcdTreeInfoVo; +import com.yfd.platform.qgc_env.wt.entity.vo.SdMonthDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdYearDetailVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdWtBaseInfoVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SdWtMonitorCountVO; +import com.yfd.platform.qgc_env.wt.entity.vo.SttpInfoVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WbsbVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtBaseInfoVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtFishVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtTreeStcdVo; +import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo; +import com.yfd.platform.qgc_env.wt.mapper.SdWtMonitorMapper; +import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtvtRServiceImpl.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtvtRServiceImpl.java index 22d28686..bb59d92e 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtvtRServiceImpl.java @@ -1,13 +1,13 @@ -package com.yfd.platform.env.wt.service.impl; +package com.yfd.platform.qgc_env.wt.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; -import com.yfd.platform.env.wt.entity.vo.SdWtvtYearVo; -import com.yfd.platform.env.wt.mapper.SdWtvtRMapper; -import com.yfd.platform.env.wt.service.SdWtvtRService; +import com.yfd.platform.qgc_env.wt.entity.vo.SdWtvtYearVo; +import com.yfd.platform.qgc_env.wt.mapper.SdWtvtRMapper; +import com.yfd.platform.qgc_env.wt.service.SdWtvtRService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; diff --git a/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java similarity index 92% rename from backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java rename to backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java index 0b327e37..c38ec14b 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/controller/ZqMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.zq.controller; +package com.yfd.platform.qgc_env.zq.controller; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.env.zq.service.ZqMonitorService; +import com.yfd.platform.qgc_env.zq.service.ZqMonitorService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqBaseInfoVo.java similarity index 98% rename from backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java rename to backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqBaseInfoVo.java index ff8e42bd..0dfcbd38 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/entity/vo/ZqBaseInfoVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqBaseInfoVo.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.zq.entity.vo; +package com.yfd.platform.qgc_env.zq.entity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java similarity index 71% rename from backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java rename to backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java index 30caf16b..fd576538 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/service/ZqMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java @@ -1,8 +1,8 @@ -package com.yfd.platform.env.zq.service; +package com.yfd.platform.qgc_env.zq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.env.zq.entity.vo.ZqBaseInfoVo; +import com.yfd.platform.qgc_env.zq.entity.vo.ZqBaseInfoVo; public interface ZqMonitorService { diff --git a/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java similarity index 99% rename from backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java rename to backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java index 27033f5f..b8704f59 100644 --- a/backend/src/main/java/com/yfd/platform/env/zq/service/impl/ZqMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java @@ -1,4 +1,4 @@ -package com.yfd.platform.env.zq.service.impl; +package com.yfd.platform.qgc_env.zq.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; @@ -8,8 +8,8 @@ import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.exception.BizException; -import com.yfd.platform.env.zq.entity.vo.ZqBaseInfoVo; -import com.yfd.platform.env.zq.service.ZqMonitorService; +import com.yfd.platform.qgc_env.zq.entity.vo.ZqBaseInfoVo; +import com.yfd.platform.qgc_env.zq.service.ZqMonitorService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java index e3183674..a0572066 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java @@ -4,11 +4,11 @@ import cn.hutool.json.JSONUtil; import cn.hutool.jwt.JWTUtil; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.config.WebConfig; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.service.ISysUserDataScopeService; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.service.ISdEngInfoBHService; -import com.yfd.platform.env.service.ISdHbrvDicService; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.service.ISysUserDataScopeService; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; +import com.yfd.platform.qgc_base.service.ISdHbrvDicService; import com.yfd.platform.system.domain.*; import com.yfd.platform.system.mapper.SysMenuMapper; import com.yfd.platform.system.service.ISmsVerifyCodeService; diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java index 31aa4ea9..bdc2fa5e 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java @@ -10,13 +10,11 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.data.domain.SysUserDataScope; -import com.yfd.platform.data.mapper.SysUserDataScopeMapper; -import com.yfd.platform.env.domain.SdEngInfoBH; -import com.yfd.platform.env.domain.SdHbrvDic; -import com.yfd.platform.env.domain.StationBasinInfo; -import com.yfd.platform.env.mapper.SdEngInfoBHMapper; -import com.yfd.platform.env.mapper.SdHbrvDicMapper; +import com.yfd.platform.qgc_data.domain.SysUserDataScope; +import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; +import com.yfd.platform.qgc_base.domain.StationBasinInfo; +import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; +import com.yfd.platform.qgc_base.mapper.SdHbrvDicMapper; import com.yfd.platform.system.domain.LoginUser; import com.yfd.platform.system.domain.SysRole; import com.yfd.platform.system.domain.SysUser; diff --git a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml index ec55559f..a2e54147 100644 --- a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml +++ b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml @@ -3,7 +3,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -35,7 +35,7 @@ - + diff --git a/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml b/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml index d652a587..53218609 100644 --- a/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml +++ b/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml @@ -3,7 +3,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + diff --git a/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml b/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml index 2de26c35..78a617a6 100644 --- a/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml +++ b/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml @@ -3,7 +3,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + diff --git a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml index 572746db..b5d72bda 100644 --- a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml +++ b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml @@ -3,7 +3,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + diff --git a/backend/src/main/resources/mapper/env/SdCountryBMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdCountryBMapper.xml similarity index 80% rename from backend/src/main/resources/mapper/env/SdCountryBMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdCountryBMapper.xml index b5c093c9..c4a1241e 100644 --- a/backend/src/main/resources/mapper/env/SdCountryBMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdCountryBMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdEngInfoBHMapper.xml similarity index 98% rename from backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdEngInfoBHMapper.xml index a01627ce..0e04883c 100644 --- a/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdEngInfoBHMapper.xml @@ -1,9 +1,9 @@ - + - + @@ -231,7 +231,7 @@ - + diff --git a/backend/src/main/resources/mapper/env/SdHbrvDicMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdHbrvDicMapper.xml similarity index 87% rename from backend/src/main/resources/mapper/env/SdHbrvDicMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdHbrvDicMapper.xml index 850aebd7..09f8a32d 100644 --- a/backend/src/main/resources/mapper/env/SdHbrvDicMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdHbrvDicMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/backend/src/main/resources/mapper/env/SdHycdDicMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdHycdDicMapper.xml similarity index 90% rename from backend/src/main/resources/mapper/env/SdHycdDicMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdHycdDicMapper.xml index 810afb72..4ed2f89c 100644 --- a/backend/src/main/resources/mapper/env/SdHycdDicMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdHycdDicMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/backend/src/main/resources/mapper/env/SdHydrobaseMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdHydrobaseMapper.xml similarity index 88% rename from backend/src/main/resources/mapper/env/SdHydrobaseMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdHydrobaseMapper.xml index 3391d95c..839bafd4 100644 --- a/backend/src/main/resources/mapper/env/SdHydrobaseMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdHydrobaseMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/backend/src/main/resources/mapper/env/SdPrhbrltnBMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdPrhbrltnBMapper.xml similarity index 81% rename from backend/src/main/resources/mapper/env/SdPrhbrltnBMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdPrhbrltnBMapper.xml index 28d25b7b..4b5f9253 100644 --- a/backend/src/main/resources/mapper/env/SdPrhbrltnBMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdPrhbrltnBMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/backend/src/main/resources/mapper/env/SdPrhyrltnBMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdPrhyrltnBMapper.xml similarity index 81% rename from backend/src/main/resources/mapper/env/SdPrhyrltnBMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdPrhyrltnBMapper.xml index bd6d8592..0127f05c 100644 --- a/backend/src/main/resources/mapper/env/SdPrhyrltnBMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdPrhyrltnBMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/backend/src/main/resources/mapper/env/SdRvcdDicMapper.xml b/backend/src/main/resources/mapper/qgc_base/SdRvcdDicMapper.xml similarity index 92% rename from backend/src/main/resources/mapper/env/SdRvcdDicMapper.xml rename to backend/src/main/resources/mapper/qgc_base/SdRvcdDicMapper.xml index 1eaf1b7a..e4f11d28 100644 --- a/backend/src/main/resources/mapper/env/SdRvcdDicMapper.xml +++ b/backend/src/main/resources/mapper/qgc_base/SdRvcdDicMapper.xml @@ -1,9 +1,9 @@ - + - + From b908daa9bc7ea0fe87084cddc02e69004af31931 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 11:56:13 +0800 Subject: [PATCH 14/47] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=94=B5?= =?UTF-8?q?=E7=AB=99=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SwaggerConfig.java | 18 +- .../controller/SdEngMonitorController.java | 26 ++ .../qgc_base/domain/vo/EngBaseInfoVo.java | 103 ++++++++ .../qgc_base/service/ISdEngInfoBHService.java | 5 +- .../service/impl/SdEngInfoBHServiceImpl.java | 227 +++++++++++++++++- 5 files changed, 368 insertions(+), 11 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngBaseInfoVo.java diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index 11520d14..d55a6ec7 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -49,15 +49,15 @@ public class SwaggerConfig { public GroupedOpenApi groupDataEnvApi() { return GroupedOpenApi.builder() .group("2. 过鱼数据模块") - .packagesToScan("com.yfd.platform.data.controller") + .packagesToScan("com.yfd.platform.qgc_data.controller") .build(); } @Bean - public GroupedOpenApi groupEnvApi() { + public GroupedOpenApi groupQgcBaseApi() { return GroupedOpenApi.builder() .group("3全过程-生态环保数据服务") - .packagesToScan("com.yfd.platform.env.controller") + .packagesToScan("com.yfd.platform.qgc_base.controller") .build(); } @@ -65,14 +65,14 @@ public class SwaggerConfig { public GroupedOpenApi groupEnvWTApi() { return GroupedOpenApi.builder() .group("3.1 全过程-生态环保数据服务-水温监测") - .packagesToScan("com.yfd.platform.env.wt.controller") + .packagesToScan("com.yfd.platform.qgc_env.wt.controller") .build(); } @Bean public GroupedOpenApi groupEnvWQApi() { return GroupedOpenApi.builder() .group("3.2 全过程-生态环保数据服务-水质监测") - .packagesToScan("com.yfd.platform.env.wq.controller") + .packagesToScan("com.yfd.platform.qgc_env.wq.controller") .build(); } @@ -80,7 +80,7 @@ public class SwaggerConfig { public GroupedOpenApi groupEnvFPApi() { return GroupedOpenApi.builder() .group("3.3 全过程-生态环保数据服务-过鱼设施") - .packagesToScan("com.yfd.platform.env.fp.controller") + .packagesToScan("com.yfd.platform.qgc_env.fp.controller") .build(); } @@ -88,7 +88,7 @@ public class SwaggerConfig { public GroupedOpenApi groupEnvFHApi() { return GroupedOpenApi.builder() .group("3.4 全过程-生态环保数据服务-栖息地") - .packagesToScan("com.yfd.platform.env.fh.controller") + .packagesToScan("com.yfd.platform.qgc_env.fh.controller") .build(); } @@ -96,7 +96,7 @@ public class SwaggerConfig { public GroupedOpenApi groupEnvZQApi() { return GroupedOpenApi.builder() .group("3.4.1 全过程-生态环保数据服务-栖息地-水文模块") - .packagesToScan("com.yfd.platform.env.zq.controller") + .packagesToScan("com.yfd.platform.qgc_env.zq.controller") .build(); } @@ -107,7 +107,7 @@ public class SwaggerConfig { public GroupedOpenApi groupEngApi() { return GroupedOpenApi.builder() .group("4. 全过程-常规水电数据服务") - .packagesToScan("com.yfd.platform.eng.controller") + .packagesToScan("com.yfd.platform.qgc_eng.controller") .build(); } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java new file mode 100644 index 00000000..6f23a0f4 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java @@ -0,0 +1,26 @@ +package com.yfd.platform.qgc_base.controller; + +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/env/eng") +@Tag(name = "电站基础监测") +public class SdEngMonitorController { + + @Resource + private ISdEngInfoBHService engInfoBHService; + + @GetMapping("/msstbprpt/getStInfoByStcd") + @Operation(summary = "根据站码查询单条电站基础数据") + public ResponseResult getStInfoByStcd(@RequestParam String stcd) { + return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd)); + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngBaseInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngBaseInfoVo.java new file mode 100644 index 00000000..d2593c28 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngBaseInfoVo.java @@ -0,0 +1,103 @@ +package com.yfd.platform.qgc_base.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@Schema(description = "电站基础详情") +public class EngBaseInfoVo extends SdEngInfoBH { + + @Schema(description = "主键ID") + private String id; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "站类主键") + private String sttp; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "站类名称") + private String sttpName; + + @Schema(description = "站类全路径") + private String sttpFullPath; + + @Schema(description = "站类层级") + private Integer sttpTreeLevel; + + @Schema(description = "建设阶段编码") + private String blprdCode; + + @Schema(description = "建设阶段名称") + private String blprdName; + + @Schema(description = "建设阶段分类编码") + private String blprdCcode; + + @Schema(description = "建设阶段分类名称") + private String blprdCname; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "流域全路径") + private String rvcdFullPath; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "行政区全路径") + private String addvcdFullPath; + + @Schema(description = "国家名称") + private String countryName; + + @Schema(description = "公司名称") + private String hynm; + + @Schema(description = "集团名称") + private String topHynm; + + @Schema(description = "数据接入中文") + private String dtinName; + + @Schema(description = "建设状态名称") + private String bldsttName; + + @Schema(description = "建设状态分类编码") + private String bldsttCcode; + + @Schema(description = "建设状态分类名称") + private String bldsttCcodeName; + + @Schema(description = "开发方式名称") + private String dvtpName; + + @Schema(description = "调节性能名称") + private String rgcpName; + + @Schema(description = "工程类别名称") + private String engtpName; + + @Schema(description = "工程规模名称") + private String prscName; + + @Schema(description = "工程规模库容名称") + private String scrscName; + + @Schema(description = "工程等别名称") + private String prgrName; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java index b12099c9..c8c9bc6c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; +import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo; import java.util.List; import java.util.Set; @@ -58,4 +59,6 @@ public interface ISdEngInfoBHService extends IService { boolean deleteEngInfo(String stcd); List selectRegDropdown(SdEngInfoBHRequest sdEngInfoBHRequest); -} \ No newline at end of file + + EngBaseInfoVo getStInfoByStcd(String stcd); +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 4ec1dfac..02e07744 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -1,12 +1,16 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.qgc_data.domain.SysUserDataScope; import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; +import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo; import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; import com.yfd.platform.utils.SecurityUtils; @@ -31,6 +35,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl microservicDynamicSQLMapper; + @Resource private SysUserDataScopeMapper sysUserDataScopeMapper; @@ -194,4 +201,222 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl "规划"; + case 1002000 -> "预可研"; + case 1003000 -> "环评"; + case 1004000 -> "可研"; + case 1005000 -> "在建"; + case 1006000 -> "招标设计"; + case 1007000 -> "施工详图"; + case 1009000 -> "建设"; + case 1010000 -> "蓄水阶段环保验收"; + case 1011000 -> "竣工"; + case 1012000 -> "竣工环保验收"; + case 1013000 -> "环境影响后评价"; + default -> null; + }; + } + + private String resolveDtinName(Integer dtin) { + if (dtin == null) { + return null; + } + return dtin == 1 ? "已接入" : "未接入"; + } + + private String resolveBldsttName(String bldstt) { + if (!StringUtils.hasText(bldstt)) { + return null; + } + return switch (bldstt) { + case "1" -> "已建成未验收"; + case "2" -> "在建"; + case "3", "32", "64" -> "可研"; + case "4", "61" -> "规划"; + case "5", "63" -> "预可研"; + case "6", "65" -> "已核准"; + case "7", "67" -> "招标设计"; + case "8", "69" -> "施工详图"; + case "9", "40", "74" -> "其他"; + case "10" -> "已建成已验收"; + case "11" -> "已开展后评价"; + case "31", "62" -> "项目建议书"; + case "33" -> "已审批"; + case "34", "66" -> "初步设计"; + case "35" -> "技施设计"; + case "36", "70" -> "在建"; + case "37", "71" -> "已建成未验收"; + case "38", "72" -> "已建成已验收"; + case "39", "73" -> "已开展后评价"; + case "68" -> "技施设计"; + case "91" -> "拆除"; + default -> null; + }; + } + + private String resolveBldsttCodeName(Integer bldsttCode) { + if (bldsttCode == null) { + return null; + } + return switch (bldsttCode) { + case 0 -> "未建/规划"; + case 1 -> "在建"; + case 2 -> "已建"; + default -> null; + }; + } + + private String resolveDvtpName(String dvtp) { + if (!StringUtils.hasText(dvtp)) { + return null; + } + return switch (dvtp) { + case "1" -> "堤坝式"; + case "2" -> "引水式"; + case "3" -> "混合式"; + default -> null; + }; + } + + private String resolveRgcpName(String rgcp) { + if (!StringUtils.hasText(rgcp)) { + return null; + } + return switch (rgcp) { + case "1" -> "多年调节"; + case "2" -> "年调节"; + case "3" -> "不完全年调节"; + case "4" -> "径流式(无调节)"; + case "5" -> "季调节"; + case "6" -> "月调节"; + case "7" -> "周调节"; + case "8" -> "日调节"; + case "9" -> "其他"; + default -> null; + }; + } + + private String resolveEngtpName(Integer engtp) { + if (engtp == null) { + return null; + } + return switch (engtp) { + case 1 -> "水电站"; + case 2 -> "水利工程"; + case 3 -> "航电枢纽"; + default -> null; + }; + } + + private String resolvePrscName(Integer prsc) { + if (prsc == null) { + return null; + } + return switch (prsc) { + case 1 -> "大型1"; + case 2 -> "大型2"; + case 3 -> "中型"; + case 4 -> "小型"; + default -> null; + }; + } + + private String resolveScrscName(Integer scrsc) { + if (scrsc == null) { + return null; + } + return switch (scrsc) { + case 1 -> "大型1"; + case 2 -> "大型2"; + case 3 -> "中型"; + case 4 -> "小型1"; + case 5 -> "小型2"; + default -> null; + }; + } + + private String resolvePrgrName(String prgr) { + if (!StringUtils.hasText(prgr)) { + return null; + } + return switch (prgr) { + case "1" -> "Ⅰ"; + case "2" -> "Ⅱ"; + case "3" -> "Ⅲ"; + case "4" -> "Ⅳ"; + case "5" -> "Ⅴ"; + default -> null; + }; + } +} From d77c7d60bbf16ba284dd061ec1e508ee5dac2734 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 14:28:54 +0800 Subject: [PATCH 15/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E7=94=9F?= =?UTF-8?q?=E6=80=81=E7=8E=AF=E4=BF=9D=E6=89=B9=E5=A4=8D=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SdEngMonitorController.java | 11 +- .../qgc_base/domain/vo/EngEiaapprovalVo.java | 125 +++++++ .../qgc_base/service/ISdEngInfoBHService.java | 5 + .../service/impl/SdEngInfoBHServiceImpl.java | 309 ++++++++++++++++++ .../wq/controller/EnvWqDataController.java | 4 +- 5 files changed, 451 insertions(+), 3 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngEiaapprovalVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java index 6f23a0f4..1524a5a9 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java @@ -1,17 +1,20 @@ package com.yfd.platform.qgc_base.controller; +import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/env/eng") +@RequestMapping("/eng/base") @Tag(name = "电站基础监测") public class SdEngMonitorController { @@ -23,4 +26,10 @@ public class SdEngMonitorController { public ResponseResult getStInfoByStcd(@RequestParam String stcd) { return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd)); } + + @PostMapping("/eiaapproval/GetKendoList") + @Operation(summary = "查询生态环保批复文件列表") + public ResponseResult getEiaapprovalKendoList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engInfoBHService.getEiaapprovalKendoList(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngEiaapprovalVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngEiaapprovalVo.java new file mode 100644 index 00000000..21648517 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngEiaapprovalVo.java @@ -0,0 +1,125 @@ +package com.yfd.platform.qgc_base.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "生态环保批复文件列表") +public class EngEiaapprovalVo { + + @Schema(description = "主键ID") + private String id; + + @Schema(description = "流域") + private String basin; + + @Schema(description = "河流") + private String river; + + @Schema(description = "电站") + private String hydropowerStation; + + @Schema(description = "电站建设状态中文") + private String bldsttCName; + + @Schema(description = "批复文号") + private String approvalFileNo; + + @Schema(description = "批复文件标题") + private String approvalFileTitle; + + @Schema(description = "文件名") + private String fileName; + + @Schema(description = "附件路径") + private String flpath; + + @Schema(description = "生态流量") + private String ecologicalFlow; + + @Schema(description = "水环境保护措施") + private String waterEnvProtection; + + @Schema(description = "低温水减缓措施") + private String coldWaterMitigation; + + @Schema(description = "栖息地保护") + private String habitatProtection; + + @Schema(description = "过鱼措施") + private String fishPassageMeasures; + + @Schema(description = "鱼类增殖放流") + private String fishStocking; + + @Schema(description = "陆生生态保护/水土保持措施") + private String terrestrialEcoSoilCons; + + @Schema(description = "珍稀植物保护措施") + private String rarePlantProtection; + + @Schema(description = "动物救助") + private String animalRescue; + + @Schema(description = "移民安置") + private String resettlementMeasures; + + @Schema(description = "施工期防治措施或其他环境保护措施") + private String constructionPollutionCtrl; + + @Schema(description = "地下水及地质环境保护措施") + private String groundwaterGeoProtect; + + @Schema(description = "风景名胜区保护措施") + private String scenicAreaProtection; + + @Schema(description = "环境监测要求") + private String envMonitoringRequire; + + @Schema(description = "基地编码") + private String baseid; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "环评表中的电站编码") + private String eiaStcd; + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "电站类型") + private String sttp; + + @Schema(description = "电站类型名称") + private String sttpName; + + @Schema(description = "电站建设状态代码") + private String bldsttCcode; + + @Schema(description = "电站建设状态") + private String bldstt; + + @Schema(description = "经度") + private String lgtd; + + @Schema(description = "纬度") + private String lttd; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java index c8c9bc6c..5a14f586 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java @@ -2,9 +2,12 @@ package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo; +import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo; import java.util.List; import java.util.Set; @@ -61,4 +64,6 @@ public interface ISdEngInfoBHService extends IService { List selectRegDropdown(SdEngInfoBHRequest sdEngInfoBHRequest); EngBaseInfoVo getStInfoByStcd(String stcd); + + DataSourceResult getEiaapprovalKendoList(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 02e07744..d1e63e39 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -5,12 +5,15 @@ import cn.hutool.core.bean.copier.CopyOptions; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.qgc_data.domain.SysUserDataScope; import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest; import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo; +import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo; import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; import com.yfd.platform.qgc_base.service.ISdEngInfoBHService; import com.yfd.platform.utils.SecurityUtils; @@ -19,8 +22,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -202,6 +207,53 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl getEiaapprovalKendoList(DataSourceRequest dataSourceRequest) { + DataSourceResult result = new DataSourceResult<>(); + result.setAggregates(new HashMap<>()); + + if (dataSourceRequest == null) { + result.setData(new ArrayList<>()); + result.setTotal(0L); + return result; + } + +// if (!"admin".equals(SecurityUtils.getCurrentUsername())) { +// Set authorizedStations = getUserAuthorizedStationCodes(); +// if (authorizedStations == null || authorizedStations.isEmpty()) { +// result.setData(new ArrayList<>()); +// result.setTotal(0L); +// return result; +// } +// } + + Page page = null; + if (dataSourceRequest.getTake() > 0) { + page = new Page<>(dataSourceRequest.getSkip() / dataSourceRequest.getTake() + 1, + dataSourceRequest.getTake()); + } + + Map paramMap = new HashMap<>(); + StringBuilder sql = new StringBuilder(buildEiaapprovalBaseSql()); + +// if (!"admin".equals(SecurityUtils.getCurrentUsername())) { +// appendAuthorizedStations(sql, paramMap, getUserAuthorizedStationCodes()); +// } + + String filterSql = buildEiaapprovalFilterCondition(dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StringUtils.hasText(filterSql)) { + sql.append(" AND ").append(filterSql); + } + + sql.append(buildEiaapprovalOrderBySql(dataSourceRequest.getSort())); + + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, sql.toString(), paramMap, EngEiaapprovalVo.class); + result.setData(list); + result.setTotal(page == null ? list.size() : page.getTotal()); + return result; + } + @Override public EngBaseInfoVo getStInfoByStcd(String stcd) { SdEngInfoBH entity = this.getById(stcd); @@ -267,6 +319,263 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl paramMap, Set authorizedStations) { + if (authorizedStations == null || authorizedStations.isEmpty()) { + return; + } + List placeholders = new ArrayList<>(); + int index = 0; + for (String stcd : authorizedStations) { + String key = "authStcd" + index++; + paramMap.put(key, stcd); + placeholders.add("#{map." + key + "}"); + } + sql.append(" AND e.STCD IN (").append(String.join(", ", placeholders)).append(")"); + } + + private String buildEiaapprovalFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StringUtils.hasText(filter.getField())) { + return buildEiaapprovalLeafCondition(filter, paramMap, indexHolder); + } + if (filter.getFilters() == null || filter.getFilters().isEmpty()) { + return ""; + } + List childConditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildEiaapprovalFilterCondition(child, paramMap, indexHolder); + if (StringUtils.hasText(childSql)) { + childConditions.add("(" + childSql + ")"); + } + } + if (childConditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, childConditions); + } + + private String buildEiaapprovalLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapEiaapprovalColumn(filter.getField()); + if (!StringUtils.hasText(column)) { + return ""; + } + String operator = filter.getOperator() == null ? "eq" : filter.getOperator().toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeFilterValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "eiaParam" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add("#{map." + key + "}"); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if (value == null) { + return ""; + } + String key = "eiaParam" + indexHolder[0]++; + return switch (operator) { + case "eq" -> { + paramMap.put(key, value); + yield column + " = #{map." + key + "}"; + } + case "neq" -> { + paramMap.put(key, value); + yield column + " <> #{map." + key + "}"; + } + case "contains" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "startswith" -> { + paramMap.put(key, value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "endswith" -> { + paramMap.put(key, "%" + value); + yield column + " LIKE #{map." + key + "}"; + } + case "gt" -> { + paramMap.put(key, value); + yield column + " > #{map." + key + "}"; + } + case "gte" -> { + paramMap.put(key, value); + yield column + " >= #{map." + key + "}"; + } + case "lt" -> { + paramMap.put(key, value); + yield column + " < #{map." + key + "}"; + } + case "lte" -> { + paramMap.put(key, value); + yield column + " <= #{map." + key + "}"; + } + default -> ""; + }; + } + + private List normalizeFilterValues(Object value) { + List values = new ArrayList<>(); + if (value instanceof List list) { + for (Object item : list) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value instanceof Object[] array) { + for (Object item : array) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value != null) { + values.add(value); + } + return values; + } + + private String mapEiaapprovalColumn(String field) { + if (!StringUtils.hasText(field)) { + return null; + } + return switch (field) { + case "stcd", "eiaStcd" -> "e.STCD"; + case "hydropowerStation" -> "e.ENNM"; + case "baseId", "baseid" -> "e.BASEID"; + case "hbrvcd" -> "e.HBRVCD"; + case "envMonitoringRequire" -> "e.ENV_MONITORING_REQUIRE"; + case "ecologicalFlow" -> "e.ECOLOGICAL_FLOW"; + case "approvalFileNo" -> "e.APPROVAL_FILE_NO"; + case "approvalFileTitle" -> "e.APPROVAL_FILE_TITLE"; + case "fishPassageMeasures" -> "e.FISH_PASSAGE_MEASURES"; + case "bldsttCcode" -> "s.BLDSTT_CODE"; + case "bldsttCName" -> "CASE WHEN s.BLDSTT_CODE = 0 OR s.BLDSTT_CODE IS NULL THEN '未建/规划' WHEN s.BLDSTT_CODE = 1 THEN '在建' WHEN s.BLDSTT_CODE = 2 THEN '已建' ELSE NULL END"; + case "basin" -> "e.BASIN"; + case "river" -> "e.RIVER"; + case "stnm" -> "s.ENNM"; + default -> null; + }; + } + + private String buildEiaapprovalOrderBySql(List sortList) { + if (sortList == null || sortList.isEmpty()) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, stnm ASC"; + } + List orderItems = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || !StringUtils.hasText(sortDescriptor.getField())) { + continue; + } + String column = switch (sortDescriptor.getField()) { + case "baseStepSort" -> "baseStepSort"; + case "rvcdStepSort" -> "rvcdStepSort"; + case "rstcdStepSort" -> "rstcdStepSort"; + case "siteStepSort" -> "siteStepSort"; + case "stnm" -> "stnm"; + case "hydropowerStation" -> "e.HYDROPOWER_STATION"; + case "approvalFileNo" -> "e.APPROVAL_FILE_NO"; + case "recordTime" -> "e.RECORD_TIME"; + case "bldsttCcode" -> "s.BLDSTT_CODE"; + default -> null; + }; + if (!StringUtils.hasText(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; + orderItems.add(column + " " + dir); + } + if (orderItems.isEmpty()) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, stnm ASC"; + } + return " ORDER BY " + String.join(", ", orderItems); + } + private String resolveBlprdName(Integer blprd) { if (blprd == null) { return null; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java index ff4f0655..4157bcbe 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java @@ -47,8 +47,8 @@ public class EnvWqDataController { public ResponseResult getStTbYsBVoKendoListCust( @RequestParam String stcd, @RequestParam String tbCode, - @RequestParam String startTime, - @RequestParam String endTime) { + @RequestParam(required = false) String startTime, + @RequestParam(required = false) String endTime) { return ResponseResult.successData(envWqDataService.getStTbYsBVoKendoListCust(stcd, tbCode, startTime, endTime)); } From 1e96f432ed47b482a97d6326d42277adfeb85984 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 15:10:51 +0800 Subject: [PATCH 16/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E6=B2=BF=E7=A8=8B=E5=8F=98=E5=8C=96-=E5=B0=8F?= =?UTF-8?q?=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SecurityConfig.java | 1 + .../yfd/platform/config/SwaggerConfig.java | 8 + .../controller/AlarmPointController.java | 54 -- .../qgc_eng/controller/EngEqController.java | 121 ----- .../controller/EngEqDataController.java | 108 ---- .../controller/EngEqIntervalController.java | 130 ----- .../controller/EngEqStatController.java | 54 -- .../controller/EngSpecialController.java | 42 -- .../yfd/platform/qgc_eng/domain/MsEngEq.java | 61 --- .../platform/qgc_eng/entity/EqSpecial.java | 54 -- .../qgc_eng/entity/vo/AlarmStcdCountVo.java | 39 -- .../qgc_eng/entity/vo/EngEqDataVo.java | 54 -- .../qgc_eng/entity/vo/EngEqDayDataVo.java | 59 --- .../qgc_eng/entity/vo/EngEqDrtpDataVo.java | 59 --- .../eq/controller/EngEqDataController.java | 29 ++ .../qgc_eng/eq/entity/vo/EngEqDataVo.java | 129 +++++ .../qgc_eng/eq/service/EngEqDataService.java | 9 + .../eq/service/impl/EngEqDataServiceImpl.java | 473 ++++++++++++++++++ .../platform/qgc_eng/mapper/EngEqMapper.java | 21 - .../qgc_eng/service/AlarmPointService.java | 37 -- .../qgc_eng/service/EngEqDataService.java | 74 --- .../qgc_eng/service/EngEqIntervalService.java | 59 --- .../qgc_eng/service/EngEqService.java | 83 --- .../qgc_eng/service/EngSpecialService.java | 30 -- .../service/impl/AlarmPointServiceImpl.java | 66 --- .../service/impl/EngEqDataServiceImpl.java | 71 --- .../impl/EngEqIntervalServiceImpl.java | 169 ------- .../service/impl/EngEqServiceImpl.java | 158 ------ .../service/impl/EngSpecialServiceImpl.java | 59 --- 29 files changed, 649 insertions(+), 1662 deletions(-) delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index d801cb4d..d04d95c5 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -58,6 +58,7 @@ public class SecurityConfig { .requestMatchers("/tempFile/**").permitAll() .requestMatchers("/system/user/auditUser").permitAll() .requestMatchers("/eng/**").permitAll() + .requestMatchers("/eq/**").permitAll() .requestMatchers("/env/**").permitAll() .requestMatchers("/wt/**").permitAll() .requestMatchers("/zq/**").permitAll() diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index d55a6ec7..18d33404 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -110,4 +110,12 @@ public class SwaggerConfig { .packagesToScan("com.yfd.platform.qgc_eng.controller") .build(); } + + @Bean + public GroupedOpenApi groupEngEqApi() { + return GroupedOpenApi.builder() + .group("4.1. 全过程-常规水电数据服务-生态流量") + .packagesToScan("com.yfd.platform.qgc_eng.eq.controller") + .build(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java deleted file mode 100644 index 02fcd23a..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; -import com.yfd.platform.qgc_eng.service.AlarmPointService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import jakarta.annotation.Resource; -import java.util.Map; - -/** - * 运行告警锚点控制器 - */ -@RestController -@RequestMapping("/eng/alarmPoint") -@Tag(name = "运行告警锚点控制器") -public class AlarmPointController { - - /** - * 服务对象 - */ - @Resource - private AlarmPointService alarmPointService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = alarmPointService.processKendoList(dataSourceRequest, filterResult, page); - alarmPointService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 获取警报统计数据 - * @param stcd 电站ID - * @return 响应结果 - */ - @PostMapping({"/getAlarmCount"}) - @Operation(summary = "获取警报统计数据") - public ResponseResult getAlarmCount(String stcd) { - AlarmStcdCountVo vo = alarmPointService.getAlarmCount(stcd); - return ResponseResult.successData(vo); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java deleted file mode 100644 index c05b2e6e..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.service.EngEqService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; - -import java.util.Map; - -/** - * 电站生态流量统计查询 - */ -@RestController -@RequestMapping("/eng/eq/") -@Tag(name = "电站生态流量统计查询") -public class EngEqController { - - /** - * 服务对象 - */ - @Resource - private EngEqService msEngEqService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = msEngEqService.processKendoList(dataSourceRequest, filterResult, page); - msEngEqService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } - - /** - * 月统计数据有数据的电站 - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping("/lastEngDataSite") - @Operation(summary = "查询指定时间有数据的站点") - public ResponseResult lastEngDataSite(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.lastEngDataSite(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping("/default/stcd") - @Operation(summary = "获取生态流量默认有数据的电站") - public ResponseResult getDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.getDefaultStcd(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping("/getSfdbInfo") - @Operation(summary = "获取不达标详情数据") - public ResponseResult getSfdbInfo(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.getSfdbInfo(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping({"/qecSfdbCountByStcd"}) - @Operation(summary = "生态流量不达标测站数") - public ResponseResult qecSfdbCountByStcd(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.qecSfdbCountByStcd(dataSourceRequest); - return ResponseResult.successData(result); - } - - /** - * 生态流量达标率计算(基地维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qecRateCount"}) - @Operation(summary = "生态流量达标率计算(基地维度、不达标原因维度)") - public ResponseResult qecRateCount(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.qecRateCount(dataSourceRequest); - return ResponseResult.successData(result); - } - - /** - * 生态流量不达标数量计算(电站维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qecSfdbCount"}) - @Operation(summary = "生态流量不达标数量计算(电站维度、不达标原因维度)") - public ResponseResult qecSfdbCount(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.qecSfdbCount(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping({"/group/GetKendoListCust"}) - public ResponseResult getGroupKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = msEngEqService.processKendoList(dataSourceRequest, filterResult, page); - msEngEqService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java deleted file mode 100644 index 60a072f5..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.service.EngEqDataService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 电站实时数据查询 - */ -@RestController -@RequestMapping("/eng/eq/data") -@Tag(name = "电站实时数据查询") -public class EngEqDataController { - - /** - * 服务对象 - */ - @Resource - private EngEqDataService engEqDataService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "生态流量沿程变化-小时") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = engEqDataService.processKendoList(dataSourceRequest, filterResult, page); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } - - @PostMapping({"/day/GetKendoListCust"}) - @Operation(summary = "查询生态流量 日 数据") - public ResponseResult getKendoDayListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult dataSourceResult = engEqDataService.processDayKendoList(dataSourceRequest, filterResult, page, groupBy); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - @PostMapping({"/drtp/GetKendoListCust"}) - @Operation(summary = "查询生态流量 周旬月季年 数据") - public ResponseResult getKendoDrtpListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult dataSourceResult = engEqDataService.processKendoDrtpList(dataSourceRequest, filterResult, page, groupBy); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - @PostMapping({"/fastSiteLastData/GetKendoListCust"}) - @Operation(summary = "查询沿程第一个电站的生态流量数据时间") - public ResponseResult getFastSiteLastData(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult dataSourceResult = engEqDataService.getFastSiteLastData(dataSourceRequest, filterResult, page, groupBy); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 生态流量沿程变化(面板) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/along/GetKendoListCust"}) - @Operation(summary = "查询生态流量(沿程数据)") - public ResponseResult getKendoAlongListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = engEqDataService.processKendoList(dataSourceRequest, filterResult, page); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - @PostMapping({"/getEngLimit"}) - @Operation(summary = "根据时间范围查询电站生态流量限值及来源") - public ResponseResult getEngLimit(@RequestBody DataSourceRequest dataSourceRequest) { - Object result = engEqDataService.getEngLimit(dataSourceRequest); - return ResponseResult.successData(result); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java deleted file mode 100644 index 57871c1d..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.annotation.Log; -import com.yfd.platform.common.DataSourceLoadOptionsBase; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import com.yfd.platform.qgc_eng.service.EngEqIntervalService; -import com.yfd.platform.qgc_eng.service.EngEqService; -import com.yfd.platform.utils.KendoUtil; -import com.yfd.platform.utils.QgcQueryWrapperUtil; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 生态流量区间统计控制器 - */ -@RestController -@RequestMapping("/eng/eq/interval") -@Tag(name = "电站生态流量区间统计查询") -public class EngEqIntervalController { - - /** - * 服务对象 - */ - @Resource - private EngEqIntervalService eqIntervalService; - - @Resource - private EngEqService engEqService; - - /** - * 生态流量达标情况 - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "生态流量达标情况") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult result = eqIntervalService.processKendoList(dataSourceRequest, filterResult, page); - eqIntervalService.processKendoGetListLoadResult(dataSourceRequest, result); - return ResponseResult.successData(result); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - @Log(module = "生态流量", value = "导出生态流量数据") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } - - /** - * 生态流量达标率 小时统计(二级页面) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qgc/hour/GetKendoListCust"}) - @Operation(summary = "生态流量达标率 小时统计(二级页面)") - public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - String kendoGroupCode = "EngEqHour"; -// Map filterResult = KendoUtil.getGroupResultMap(dataSourceRequest, null, EngEqIntervalController.class); -// String groupBy = KendoUtil.getGroupBy(dataSourceRequest); - Page page = KendoUtil.getPage(dataSourceRequest); - DataSourceResult result = eqIntervalService.getQgcHourKendoListCust(dataSourceRequest, null, page, null); -// eqIntervalService.processKendoGetListLoadResult(dataSourceRequest, result); - return ResponseResult.successData(result); - } - - /** - * 生态流量达标率 日统计(二级页面) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qgc/day/GetKendoListCust"}) - @Operation(summary = "生态流量达标率 日统计(二级页面)") - public ResponseResult getQgcDayKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult result = eqIntervalService.getQgcDayKendoListCust(dataSourceRequest, filterResult, page, groupBy); - eqIntervalService.processKendoGetListLoadResult(dataSourceRequest, result); - return ResponseResult.successData(result); - } - - /** - * 生态流量达标率 区间范围统计(一级页面) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qgc/getQgcStaticData"}) - @Operation(summary = "生态流量达标率 区间范围统计(一级页面)") -// @Log(module = "生态流量", value = "生态流量达标率统计") - public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceLoadOptionsBase loadOptionsBase = dataSourceRequest.toDevRequest(); - String type = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "type"); - ResponseResult r; - if("hour".equals(type)){ - r = this.getQgcHourKendoListCust(dataSourceRequest); - }else if("day".equals(type)){ - r = this.getQgcDayKendoListCust(dataSourceRequest); - }else{ - return ResponseResult.error("请选择生态流量达标率统计类型(小时还是天统计)"); - } - if(r != null && r.get("code").equals("0") && r.get("data") != null){ - DataSourceResult dataSourceResult = (DataSourceResult) r.get("data"); - if(dataSourceResult != null && dataSourceResult.getData() != null){ - Map staticData = eqIntervalService.getQgcQecStaticData(dataSourceResult.getData(), type); - return ResponseResult.successData(staticData); - } - } - return ResponseResult.success(); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java deleted file mode 100644 index 9460967c..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.service.EngEqService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 电站生态流量统计结果查询 - */ -@RestController -@RequestMapping("/eng/eq/stat") -@Tag(name = "电站生态流量统计结果查询") -public class EngEqStatController { - - /** - * 服务对象 - */ - @Resource - private EngEqService msEngEqService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = msEngEqService.processKendoList(dataSourceRequest, filterResult, page); - msEngEqService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java deleted file mode 100644 index 04aac605..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.entity.EqSpecial; -import com.yfd.platform.qgc_eng.service.EngSpecialService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 电站专题-环保设施运行情况 - */ -@RestController -@RequestMapping("/eng/special") -@Tag(name = "电站专题-环保设施运行情况") -public class EngSpecialController { - - /** - * 服务对象 - */ - @Resource - private EngSpecialService engSpecialService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = engSpecialService.processKendoList(dataSourceRequest, filterResult, page); - engSpecialService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java b/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java deleted file mode 100644 index 6078be33..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yfd.platform.qgc_eng.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - * 生态流量实体类 - */ -@Data -@TableName("ms_eng_eq") -public class MsEngEq implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - private String id; - - /** - * 电站ID - */ - private String stationId; - - /** - * 电站名称 - */ - private String stationName; - - /** - * 时间 - */ - private Date time; - - /** - * 生态流量值 - */ - private Double eqValue; - - /** - * 达标状态 - */ - private String status; - - /** - * 统计类型(hour/day) - */ - private String type; - - /** - * 创建时间 - */ - private Date createTime; - - /** - * 更新时间 - */ - private Date updateTime; -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java deleted file mode 100644 index d7d1ba24..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.entity; - -import lombok.Data; - -/** - * 电站专题-环保设施运行情况 - */ -@Data -public class EqSpecial { - /** - * 主键 - */ - private String id; - - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 环保设施类型 - */ - private String eqType; - - /** - * 设施名称 - */ - private String eqName; - - /** - * 运行状态 - */ - private String status; - - /** - * 检查时间 - */ - private String checkTime; - - /** - * 检查人 - */ - private String checker; - - /** - * 备注 - */ - private String remark; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java deleted file mode 100644 index 01635f24..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 警报锚点统计VO - */ -@Data -public class AlarmStcdCountVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 警报数量 - */ - private Integer alarmCount; - - /** - * 未处理数量 - */ - private Integer unhandledCount; - - /** - * 处理中数量 - */ - private Integer handlingCount; - - /** - * 已处理数量 - */ - private Integer handledCount; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java deleted file mode 100644 index 2dc3c7bd..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 生态流量小时数据VO - */ -@Data -public class EngEqDataVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 时间 - */ - private String tm; - - /** - * 生态流量值 - */ - private Double eqValue; - - /** - * 状态 - */ - private String status; - - /** - * 不达标原因 - */ - private String reason; - - /** - * 限值 - */ - private Double limitValue; - - /** - * 限值来源 - */ - private String limitSource; - - /** - * 是否左边界 - */ - private Integer isLeft; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java deleted file mode 100644 index f349dcab..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 生态流量日数据VO - */ -@Data -public class EngEqDayDataVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 日期 - */ - private String tm; - - /** - * 日平均生态流量 - */ - private Double avgValue; - - /** - * 日最小生态流量 - */ - private Double minValue; - - /** - * 日最大生态流量 - */ - private Double maxValue; - - /** - * 状态 - */ - private String status; - - /** - * 不达标原因 - */ - private String reason; - - /** - * 限值 - */ - private Double limitValue; - - /** - * 限值来源 - */ - private String limitSource; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java deleted file mode 100644 index 64880657..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 生态流量周旬月季年数据VO - */ -@Data -public class EngEqDrtpDataVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 时间 - */ - private String tm; - - /** - * 平均生态流量 - */ - private Double avgValue; - - /** - * 最小生态流量 - */ - private Double minValue; - - /** - * 最大生态流量 - */ - private Double maxValue; - - /** - * 状态 - */ - private String status; - - /** - * 不达标原因 - */ - private String reason; - - /** - * 限值 - */ - private Double limitValue; - - /** - * 限值来源 - */ - private String limitSource; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java new file mode 100644 index 00000000..d5486ca4 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -0,0 +1,29 @@ +package com.yfd.platform.qgc_eng.eq.controller; + +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/eq/data") +@Tag(name = "电站实时数据查询") +@Validated +public class EngEqDataController { + + @Resource + private EngEqDataService engEqDataService; + + @PostMapping("/GetKendoListCust") + @Operation(summary = "生态流量沿程变化-小时") + public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getKendoListCust(dataSourceRequest)); + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java new file mode 100644 index 00000000..653e0a1c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java @@ -0,0 +1,129 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "生态流量小时数据") +public class EngEqDataVo { + + @Schema(description = "主键") + private String id; + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "电站名称") + private String ennm; + + @Schema(description = "数据时间") + private Date tm; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "生态流量限值(环保部)") + private BigDecimal qecLimit; + + @Schema(description = "生态流量") + private BigDecimal qec; + + @Schema(description = "生态流量限值(水利部)") + private BigDecimal mwrLimit; + + @Schema(description = "生态流量限值(多年平均)") + private BigDecimal avqLimit; + + @Schema(description = "生态流量系数(环保部)") + private BigDecimal qecC; + + @Schema(description = "生态流量系数(水利部)") + private BigDecimal mwrC; + + @Schema(description = "生态流量系数(多年平均)") + private BigDecimal avqC; + + @Schema(description = "生态流量是否达标(环保部)") + private Integer sfdb; + + @Schema(description = "生态流量是否达标(环保部)中文") + private String sfdbName; + + @Schema(description = "生态流量是否达标(水利部)") + private Integer mwrSfdb; + + @Schema(description = "生态流量是否达标(水利部)中文") + private String mwrSfdbName; + + @Schema(description = "生态流量是否达标(多年平均)") + private Integer avqSfdb; + + @Schema(description = "生态流量是否达标(多年平均)中文") + private String avqSfdbName; + + @Schema(description = "坝上水位") + private BigDecimal rz; + + @Schema(description = "坝下水位") + private BigDecimal dz; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "河段名称") + private String hbrvcdName; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "AI识别生态流量值") + private BigDecimal qecAi; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "河段编码") + private String hbrvcd; + + @Schema(description = "公司编码") + private String hycd; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "环保部规则详情ID") + private String qecRuleDid; + + @Schema(description = "水利部规则详情ID") + private String qecMwrruleDid; + + @Schema(description = "去年同期生态流量") + private BigDecimal beforeQec; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java new file mode 100644 index 00000000..58dcf45f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -0,0 +1,9 @@ +package com.yfd.platform.qgc_eng.eq.service; + +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; + +public interface EngEqDataService { + + DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java new file mode 100644 index 00000000..5bc426e8 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -0,0 +1,473 @@ +package com.yfd.platform.qgc_eng.eq.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +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_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import com.yfd.platform.utils.QgcQueryWrapperUtil; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Service +public class EngEqDataServiceImpl implements EngEqDataService { + + @Resource + private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + + @Override + public DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryDetailList(dataSourceRequest, loadOptions); + } + return queryGroupList(dataSourceRequest, loadOptions); + } + + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" ") + .append(buildFromSql()) + .append(" WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(sqr.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqDataVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + + sql.append("SELECT "); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapEqColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapEqColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("eng.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + sql.append(String.join(", ", selectItems)).append(" "); + sql.append(buildFromSql()) + .append(" WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(sqr.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapEqColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult(); + if (dataSourceRequest.getGroupResultFlat() != null && dataSourceRequest.getGroupResultFlat()) { + result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData(new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildFromSql() { + return " FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.RVCD = eng.HBRVCD " + + " AND rstSort.STCD = eng.STCD "+ + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " + + "INNER JOIN SD_QEC_R sqr ON sqr.STCD = eng.STCD " + + "LEFT JOIN SD_HYDROPW_R shr ON shr.STCD = sqr.STCD AND shr.TM = sqr.TM AND NVL(shr.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_QEC_R bsqr ON bsqr.STCD = sqr.STCD AND ADD_MONTHS(bsqr.TM, 12) = sqr.TM AND NVL(bsqr.IS_DELETED, 0) = 0 "; + } + + private String buildDetailSelectSql(List selectFields) { + Map columns = detailFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map detailFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("id", "sqr.ID AS id"); + columns.put("stcd", "eng.STCD AS stcd"); + columns.put("stnm", "eng.ENNM AS stnm"); + columns.put("ennm", "eng.ENNM AS ennm"); + columns.put("tm", "sqr.TM AS tm"); + columns.put("qi", "shr.QI AS qi"); + columns.put("qo", "shr.QO AS qo"); + columns.put("qecLimit", "sqr.QEC_LIMIT AS qecLimit"); + columns.put("qec", "sqr.QEC AS qec"); + columns.put("mwrLimit", "sqr.MWR_LIMIT AS mwrLimit"); + columns.put("avqLimit", "eng.AVQ AS avqLimit"); + columns.put("qecC", "sqr.QEC_C AS qecC"); + columns.put("mwrC", "sqr.MWR_C AS mwrC"); + columns.put("avqC", "sqr.AVQ_C AS avqC"); + columns.put("sfdb", "sqr.SFDB AS sfdb"); + columns.put("sfdbName", "CASE NVL(sqr.SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS sfdbName"); + columns.put("mwrSfdb", "sqr.MWR_SFDB AS mwrSfdb"); + columns.put("mwrSfdbName", "CASE NVL(sqr.MWR_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS mwrSfdbName"); + columns.put("avqSfdb", "sqr.AVQ_SFDB AS avqSfdb"); + columns.put("avqSfdbName", "CASE NVL(sqr.AVQ_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS avqSfdbName"); + columns.put("rz", "shr.RZ AS rz"); + columns.put("dz", "shr.DZ AS dz"); + columns.put("baseName", "hb.BASENAME AS baseName"); + columns.put("rvcdName", "rv.RVNM AS rvcdName"); + columns.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName"); + columns.put("addvcdName", "addv.ADDVNM AS addvcdName"); + columns.put("qecAi", "sqr.WATERFLOW AS qecAi"); + columns.put("baseId", "eng.BASE_ID AS baseId"); + columns.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); + columns.put("hycd", "eng.HYCD AS hycd"); + columns.put("rvcd", "eng.RVCD AS rvcd"); + columns.put("bldsttCcode", "eng.BLDSTT_CODE AS bldsttCcode"); + columns.put("qecRuleDid", "sqr.QEC_RULE_DID AS qecRuleDid"); + columns.put("qecMwrruleDid", "sqr.QEC_MWRRULE_DID AS qecMwrruleDid"); + columns.put("beforeQec", "bsqr.QEC AS beforeQec"); + columns.put("baseStepSort", "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort"); + columns.put("rvcdStepSort", "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort"); + columns.put("rstcdStepSort", "NVL(rstSort.SORT, 999999) AS rstcdStepSort"); + columns.put("siteStepSort", "NVL(siteSort.SORT, 999999) AS siteStepSort"); + return columns; + } + + private String buildDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, tm DESC"; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapOrderColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + if (orders.isEmpty()) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, tm DESC"; + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapEqColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + + private String buildAggregateSql(String aggregate, String column, String field) { + String normalized = aggregate == null ? "" : aggregate.toLowerCase(); + return switch (normalized) { + case "sum", "min", "max", "avg", "count" -> normalized.toUpperCase() + "(" + column + ") AS " + normalized + "_" + field; + default -> ""; + }; + } + + private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String field = filter.getField(); + String column = mapEqColumn(field); + if (StrUtil.isBlank(column)) { + return ""; + } + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + boolean dateField = isEqDateField(field); + if ("in".equals(operator)) { + List values = normalizeValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "eqParam" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add(buildEqValueExpr(key, dateField, item)); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if ("vdid".equalsIgnoreCase(field)) { + return ""; + } + if (value == null) { + return ""; + } + String key = "eqParam" + indexHolder[0]++; + String valueExpr = buildEqValueExpr(key, dateField, value); + return switch (operator) { + case "eq" -> { + paramMap.put(key, value); + yield column + " = " + valueExpr; + } + case "neq" -> { + paramMap.put(key, value); + yield column + " <> " + valueExpr; + } + case "contains" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "startswith" -> { + paramMap.put(key, value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "endswith" -> { + paramMap.put(key, "%" + value); + yield column + " LIKE #{map." + key + "}"; + } + case "gt" -> { + paramMap.put(key, value); + yield column + " > " + valueExpr; + } + case "gte" -> { + paramMap.put(key, value); + yield column + " >= " + valueExpr; + } + case "lt" -> { + paramMap.put(key, value); + yield column + " < " + valueExpr; + } + case "lte" -> { + paramMap.put(key, value); + yield column + " <= " + valueExpr; + } + default -> ""; + }; + } + + private boolean isEqDateField(String field) { + return "tm".equalsIgnoreCase(field); + } + + private String buildEqValueExpr(String paramKey, boolean dateField, Object value) { + if (!dateField || value == null) { + return "#{map." + paramKey + "}"; + } + String text = String.valueOf(value).trim(); + if (text.length() <= 10) { + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD')"; + } + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')"; + } + + + + + private List normalizeValues(Object value) { + List values = new ArrayList<>(); + if (value instanceof List list) { + for (Object item : list) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value instanceof Object[] array) { + for (Object item : array) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value != null) { + values.add(value); + } + return values; + } + + private String mapEqColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "baseName" -> "hb.BASENAME"; + case "stnm", "ennm" -> "eng.ENNM"; + case "baseId" -> "eng.BASE_ID"; + case "rvcdName" -> "rv.RVNM"; + case "addvcdName" -> "addv.ADDVNM"; + case "stcd" -> "eng.STCD"; + case "tm" -> "sqr.TM"; + case "rz" -> "shr.RZ"; + case "qec" -> "sqr.QEC"; + case "sfdb" -> "sqr.SFDB"; + case "qi" -> "shr.QI"; + case "qo" -> "shr.QO"; + case "dz" -> "shr.DZ"; + case "qecLimit" -> "sqr.QEC_LIMIT"; + case "hbrvcd" -> "eng.HBRVCD"; + case "hbrvcdName" -> "hbrv.HBRVNM"; + case "rvcdStepSort" -> "NVL(along.ORDER_INDEX, 999999)"; + case "rstcdStepSort" -> "NVL(rstSort.SORT, 999999)"; + case "siteStepSort" -> "NVL(siteSort.SORT, 999999)"; + case "hycd" -> "eng.HYCD"; + case "rvcd" -> "eng.HBRVCD"; + case "bldsttCcode" -> "eng.BLDSTT_CODE"; + case "baseStepSort" -> "NVL(hb.ORDER_INDEX, 999999)"; + case "mwrLimit" -> "sqr.MWR_LIMIT"; + case "avqLimit" -> "eng.AVQ"; + case "mwrSfdb" -> "sqr.MWR_SFDB"; + case "avqSfdb" -> "sqr.AVQ_SFDB"; + case "qecC" -> "sqr.QEC_C"; + case "mwrC" -> "sqr.MWR_C"; + case "avqC" -> "sqr.AVQ_C"; + case "qecAi" -> "sqr.WATERFLOW"; + default -> null; + }; + } + + private String mapOrderColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "baseStepSort", "rvcdStepSort", "rstcdStepSort", "siteStepSort", + "tm", "stcd", "stnm", "ennm", "qi", "qo", "qec", "sfdb", + "rz", "dz", "qecLimit", "mwrLimit", "avqLimit", "baseName", + "rvcdName", "hbrvcdName", "addvcdName", "qecAi" -> field; + default -> null; + }; + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java b/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java deleted file mode 100644 index e981c49b..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.yfd.platform.qgc_eng.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import org.apache.ibatis.annotations.Select; - -import java.util.Map; - -/** - * 生态流量Mapper - */ -public interface EngEqMapper extends BaseMapper { - - /** - * 根据条件查询生态流量数据 - * @param params 查询参数 - * @return 生态流量列表 - */ - @Select("select * from ms_eng_eq where 1=1") - Object queryList(Map params); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java deleted file mode 100644 index b2506a18..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; - -import java.util.Map; - -/** - * 警报锚点服务 - */ -public interface AlarmPointService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 获取警报统计数据 - * @param stcd 电站ID - * @return 统计结果 - */ - AlarmStcdCountVo getAlarmCount(String stcd); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java deleted file mode 100644 index 4b9218ba..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; - -import java.util.Map; - -/** - * 生态流量数据服务 - */ -public interface EngEqDataService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 处理分组条件SQL - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @return SQL条件 - */ - String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult); - - /** - * 处理日数据kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult processDayKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 处理周旬月季年数据kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult processKendoDrtpList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 查询沿程第一个电站的生态流量数据时间 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult getFastSiteLastData(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 根据时间范围查询电站生态流量限值及来源 - * @param dataSourceRequest 数据源请求 - * @return 生态流量限值VO - */ - Object getEngLimit(DataSourceRequest dataSourceRequest); -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java deleted file mode 100644 index 2c4512e3..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.qgc_eng.domain.MsEngEq; - -import java.util.Map; - -/** - * 生态流量区间统计服务 - */ -public interface EngEqIntervalService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 生态流量达标率 小时统计 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 生态流量达标率 日统计 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 生态流量达标率 区间范围统计 - * @param dataList 数据列表 - * @param type 类型(hour/day) - * @return 统计结果 - */ - Map getQgcQecStaticData(Object dataList, String type); -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java deleted file mode 100644 index 79888918..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.qgc_eng.domain.MsEngEq; - - -import java.util.Map; - -/** - * 生态流量服务 - */ -public interface EngEqService extends IService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 处理分组条件SQL - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @return SQL条件 - */ - String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult); - - /** - * 月统计数据有数据的电站 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult lastEngDataSite(DataSourceRequest dataSourceRequest); - - /** - * 获取生态流量默认有数据的电站 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest); - - /** - * 获取不达标详情数据 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult getSfdbInfo(DataSourceRequest dataSourceRequest); - - /** - * 生态流量不达标测站数 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult qecSfdbCountByStcd(DataSourceRequest dataSourceRequest); - - /** - * 生态流量达标率计算(基地维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest); - - /** - * 生态流量不达标数量计算(电站维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult qecSfdbCount(DataSourceRequest dataSourceRequest); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java deleted file mode 100644 index 24b6d66c..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.EqSpecial; - -import java.util.Map; - -/** - * 电站专题-环保设施运行情况服务 - */ -public interface EngSpecialService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java deleted file mode 100644 index 20b8cde1..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; -import com.yfd.platform.qgc_eng.service.AlarmPointService; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 警报锚点服务实现 - */ -@Service -public class AlarmPointServiceImpl implements AlarmPointService { - - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - // 模拟添加一些数据 - AlarmStcdCountVo vo1 = new AlarmStcdCountVo(); - vo1.setStcd("ST001"); - vo1.setStnm("电站1"); - vo1.setAlarmCount(10); - vo1.setUnhandledCount(3); - vo1.setHandlingCount(2); - vo1.setHandledCount(5); - dataList.add(vo1); - - AlarmStcdCountVo vo2 = new AlarmStcdCountVo(); - vo2.setStcd("ST002"); - vo2.setStnm("电站2"); - vo2.setAlarmCount(8); - vo2.setUnhandledCount(2); - vo2.setHandlingCount(1); - vo2.setHandledCount(5); - dataList.add(vo2); - - DataSourceResult result = new DataSourceResult<>(); - result.setData(dataList); - result.setTotal(dataList.size()); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public AlarmStcdCountVo getAlarmCount(String stcd) { - // 模拟数据,实际应该从数据库查询 - AlarmStcdCountVo vo = new AlarmStcdCountVo(); - vo.setStcd(stcd); - vo.setStnm("电站" + stcd); - vo.setAlarmCount(5); - vo.setUnhandledCount(1); - vo.setHandlingCount(1); - vo.setHandledCount(3); - return vo; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java deleted file mode 100644 index dccc72c7..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.service.EngEqDataService; - -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.Map; - -/** - * 生态流量数据服务实现 - */ -@Service -public class EngEqDataServiceImpl implements EngEqDataService { - - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult) { - // 模拟SQL条件,实际应该根据业务需求实现 - return "1=1"; - } - - @Override - public DataSourceResult processDayKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult processKendoDrtpList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult getFastSiteLastData(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public Object getEngLimit(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - return null; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java deleted file mode 100644 index f8168546..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java +++ /dev/null @@ -1,169 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.*; -import com.yfd.platform.common.enums.QecIntervalEnum; -import com.yfd.platform.common.enums.ShowEnum; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import com.yfd.platform.qgc_eng.service.EngEqIntervalService; -import com.yfd.platform.utils.QueryWrapperUtil; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * 生态流量区间统计服务实现 - */ -@Service -public class EngEqIntervalServiceImpl implements EngEqIntervalService { - @Resource - private DynamicSQLMapper dynamicSQLMapper; - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - DataSourceResult result = new DataSourceResult(); - result.setData(dataList); - result.setTotal(0L); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - DataSourceResult dataSourceResult = new DataSourceResult<>(); - DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); - StringBuilder sql = new StringBuilder(); - - sql.append("select AVQ_POINT_STATE as avqPointState, ENNM as ennm, RZ as rz, HBRVCD_NAME as hbrvcdName, QEC_INTERVAL as qecInterval, LTTD as lttd, BASE_ID as baseId, ANCHO_POINT_STATE as anchoPointState, HBRVCD as hbrvcd, MWR_RATE as mwrRate, SITESTEPSORT as siteStepSort, AVQ_INTERVAL as avqInterval, TTPWR as ttpwr, QI as qi, LGTD as lgtd, STTP_CODE as sttpCode, QEC_RATE as qecRate, BASESTEPSORT as baseStepSort, BASE_NAME as baseName, AVQ as avq, QO as qo, MWR_POINT_STATE as mwrPointState, QO_SUM as qoSum, orderIndex as orderindex, DTIN_ENV as dtinEnv, RVCDSTEPSORT as rvcdStepSort, sttp as sttp, AVQ_RATE as avqRate, DTMEL as dtmel, STCD as stcd, RSTCDSTEPSORT as rstcdStepSort, ADDVCD_NAME as addvcdName, QI_SUM as qiSum, MWR_INTERVAL as mwrInterval, NORMZ as normz"); - sql.append(" FROM "); - sql.append("(select MSB.STCD,MSB.STNM as ENNM,MSB.BASESTEPSORT,MSB.SITESTEPSORT,MSB.RVCDSTEPSORT,MSB.RSTCDSTEPSORT ,MSB.BASE_NAME,MSB.BASE_ID,MSB.ORDER_INDEX orderIndex,MSB.HBRVCD ,MSB.HBRVCD_NAME,MSB.ADDVCD_NAME ,MSB.STTP_CODE,'ENG' as sttp,MSB.LGTD,MSB.LTTD,MSB.DTMEL ,MSB.TTPWR,MSB.NORMZ,MSB.DTIN_ENV,MSB.AVQ ,SQR.QEC_RATE,SQR.MWR_RATE,SQR.AVQ_RATE,SHR.QI,SHR.QO,SHR.RZ,SHR.QO_SUM,SHR.QI_SUM,(CASE WHEN SQR.STCD IS NULL and qecR.stcd is null THEN 'QEC_STLL_5_EMPTY' WHEN SQR.STCD IS NULL and qecR.stcd is not null THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.QR = -2 THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.QR = -1 THEN 'QEC_STLL_5_EMPTY' WHEN SQR.QEC_RATE >= 95 THEN 'QEC_STLL_1_DY95' WHEN SQR.QEC_RATE >= 90 AND 95 > SQR.QEC_RATE THEN 'QEC_STLL_2_90AND95' WHEN SQR.QEC_RATE >= 80 AND 90 > SQR.QEC_RATE THEN 'QEC_STLL_3_80AND90' WHEN 80 > SQR.QEC_RATE THEN 'QEC_STLL_4_XY80' END) AS QEC_INTERVAL ,(CASE WHEN SQR.STCD IS NULL and mwrR.stcd is null THEN 'QEC_STLL_5_EMPTY' WHEN SQR.STCD IS NULL and mwrR.stcd is not null THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.MQR = -2 THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.MQR = -1 THEN 'QEC_STLL_5_EMPTY' WHEN SQR.MWR_RATE >= 95 THEN 'QEC_STLL_1_DY95' WHEN SQR.MWR_RATE >= 90 AND 95 > SQR.MWR_RATE THEN 'QEC_STLL_2_90AND95' WHEN SQR.MWR_RATE >= 80 AND 90 > SQR.MWR_RATE THEN 'QEC_STLL_3_80AND90' WHEN 80 > SQR.MWR_RATE THEN 'QEC_STLL_4_XY80' END) AS MWR_INTERVAL ,(CASE WHEN MSB.AVQ is not null AND SQR.AVQ_RATE IS NULL THEN 'QEC_STLL_5_EMPTY' WHEN MSB.AVQ is null THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.AVQ_RATE >= 95 THEN 'QEC_STLL_1_DY95' WHEN SQR.AVQ_RATE >= 90 AND 95 > SQR.AVQ_RATE THEN 'QEC_STLL_2_90AND95' WHEN SQR.AVQ_RATE >= 80 AND 90 > SQR.AVQ_RATE THEN 'QEC_STLL_3_80AND90' WHEN 80 > SQR.AVQ_RATE THEN 'QEC_STLL_4_XY80' END) AS AVQ_INTERVAL ,(case when SQR.QEC_RATE is null and MSB.PRSC = 1 then 'eef_1_none' when SQR.QEC_RATE >=95 and MSB.PRSC = 1 then 'eef_1_1' when SQR.QEC_RATE >=90 and 95 > SQR.QEC_RATE and MSB.PRSC = 1 then 'eef_1_2' when SQR.QEC_RATE >=80 and 90 > SQR.QEC_RATE and MSB.PRSC = 1 then 'eef_1_3' when 80 > SQR.QEC_RATE and MSB.PRSC = 1 then 'eef_1_4' when SQR.QEC_RATE is null and MSB.PRSC in (2,3) then 'eef_2_none' when SQR.QEC_RATE >=95 and MSB.PRSC in (2,3) then 'eef_2_1' when SQR.QEC_RATE >=90 and 95 > SQR.QEC_RATE and MSB.PRSC in (2,3) then 'eef_2_2' when SQR.QEC_RATE >=80 and 90 > SQR.QEC_RATE and MSB.PRSC in (2,3) then 'eef_2_3' when 80 > SQR.QEC_RATE and MSB.PRSC in (2,3) then 'eef_2_4' end) as ANCHO_POINT_STATE ,(case when SQR.MWR_RATE is null and MSB.PRSC = 1 then 'eef_1_none' when SQR.MWR_RATE >=95 and MSB.PRSC = 1 then 'eef_1_1' when SQR.MWR_RATE >=90 and 95 > SQR.MWR_RATE and MSB.PRSC = 1 then 'eef_1_2' when SQR.MWR_RATE >=80 and 90 > SQR.MWR_RATE and MSB.PRSC = 1 then 'eef_1_3' when 80 > SQR.MWR_RATE and MSB.PRSC = 1 then 'eef_1_4' when SQR.MWR_RATE is null and MSB.PRSC in (2,3) then 'eef_2_none' when SQR.MWR_RATE >=95 and MSB.PRSC in (2,3) then 'eef_2_1' when SQR.MWR_RATE >=90 and 95 > SQR.MWR_RATE and MSB.PRSC in (2,3) then 'eef_2_2' when SQR.MWR_RATE >=80 and 90 > SQR.MWR_RATE and MSB.PRSC in (2,3) then 'eef_2_3' when 80 > SQR.MWR_RATE and MSB.PRSC in (2,3) then 'eef_2_4' end) as MWR_POINT_STATE ,(case when SQR.AVQ_RATE is null and MSB.PRSC = 1 then 'eef_1_none' when SQR.AVQ_RATE >=95 and MSB.PRSC = 1 then 'eef_1_1' when SQR.AVQ_RATE >=90 and 95 > SQR.AVQ_RATE and MSB.PRSC = 1 then 'eef_1_2' when SQR.AVQ_RATE >=80 and 90 > SQR.AVQ_RATE and MSB.PRSC = 1 then 'eef_1_3' when 80 > SQR.AVQ_RATE and MSB.PRSC = 1 then 'eef_1_4' when SQR.AVQ_RATE is null and MSB.PRSC in (2,3) then 'eef_2_none' when SQR.AVQ_RATE >=95 and MSB.PRSC in (2,3) then 'eef_2_1' when SQR.AVQ_RATE >=90 and 95 > SQR.AVQ_RATE and MSB.PRSC in (2,3) then 'eef_2_2' when SQR.AVQ_RATE >=80 and 90 > SQR.AVQ_RATE and MSB.PRSC in (2,3) then 'eef_2_3' when 80 > SQR.AVQ_RATE and MSB.PRSC in (2,3) then 'eef_2_4' end) as AVQ_POINT_STATE from V_MS_STBPRP_T MSB left join (select STCD ,(case when sum(case when SFDB =1 or SFDB =0 then 1 else 0 end) =0 then null else (sum(case when SFDB =1 then 1 else 0 end)/sum(case when SFDB =1 or SFDB =0 then 1 else 0 end)) end)*100 QEC_RATE ,(case when sum(case when MWR_SFDB =1 or MWR_SFDB =0 then 1 else 0 end) =0 then null else (sum(case when MWR_SFDB =1 then 1 else 0 end)/sum(case when MWR_SFDB =1 or MWR_SFDB =0 then 1 else 0 end)) end)*100 MWR_RATE ,(case when sum(case when AVQ_SFDB =1 or AVQ_SFDB =0 then 1 else 0 end) =0 then null else (sum(case when AVQ_SFDB =1 then 1 else 0 end)/sum(case when AVQ_SFDB =1 or AVQ_SFDB =0 then 1 else 0 end)) end)*100 AVQ_RATE ,case when count(1)=sum(case when SFDB =2 then 1 else 0 end) then -1 when count(1)=sum(case when SFDB =3 then 1 else 0 end) then -2 WHEN sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END) >0 and count(1) = sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB is null THEN 1 ELSE 0 END) then -1 WHEN sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END) =0 and count(1) = sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB is null THEN 1 ELSE 0 END) then -2 end qr ,case when count(1)=sum(case when MWR_SFDB =2 then 1 else 0 end) then -1 when count(1)=sum(case when MWR_SFDB =3 then 1 else 0 end) then -2 WHEN sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END) >0 and count(1) = sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB is null THEN 1 ELSE 0 END) then -1 WHEN sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END) =0 and count(1) = sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB is null THEN 1 ELSE 0 END) then -2 end mqr ,case when count(1)=sum(case when AVQ_SFDB =2 then 1 else 0 end) then -1 when count(1)=sum(case when AVQ_SFDB =3 then 1 else 0 end) then -2 end aqr from SD_QEC_R where 1=1 "); - Map params = QueryWrapperUtil.buildSqlConditionsByField(loadOptions); - if(StrUtil.isNotBlank(params.get("TM"))){ - sql.append(" and ").append(params.get("TM")); - } - sql.append(" group by STCD) SQR on MSB.STCD=SQR.STCD left join (SELECT stcd, avg(QI) QI, avg(QO) QO, avg(qec) qec,avg(RZ) RZ,SUM(QI) QI_SUM,SUM(QO) QO_SUM from SD_HYDROPW_R where 1=1 "); - if(StrUtil.isNotBlank(params.get("TM"))){ - sql.append(" and ").append(params.get("TM")); - } - sql.append(" group by STCD) SHR on SHR.STCD = MSB.STCD left join (select STCD from MS_STBPRP_T where is_deleted=0 and sttp_code ='ENG' and stcd not in (select distinct A.STCD from MS_WARN_RULE_STBPRP_B a INNER JOIN MS_WARN_RULE_DETAIL_B b ON a.RULE_ID = b.RULE_ID and b.is_deleted=0 INNER JOIN MS_WARN_RULE_B c ON c.ID = b.RULE_ID where a.is_deleted=0 and b.is_deleted=0 and c.RULE_TYPE in('EQMN') and c.is_deleted=0)) qecR on qecR.STCD =MSB.STCD left join (select STCD from MS_STBPRP_T where is_deleted=0 and sttp_code ='ENG' and stcd not in (select distinct A.STCD from MS_WARN_RULE_STBPRP_B a INNER JOIN MS_WARN_RULE_DETAIL_B b ON a.RULE_ID = b.RULE_ID and b.is_deleted=0 INNER JOIN MS_WARN_RULE_B c ON c.ID = b.RULE_ID where a.is_deleted=0 and b.is_deleted=0 and c.RULE_TYPE in('EQMNMWR') and c.is_deleted=0)) mwrR on mwrR.STCD =MSB.STCD where MSB.STTP_CODE='ENG' and MSB.DTIN=1 and MSB.IS_DELETED = 0 and MSB.BLDSTT_CCODE = 2 and MSB.RUN_STATE=4 )"); - sql.append(" where 1=1 "); - -// sql.append(" and select AVQ_POINT_STATE as avqPointState, ENNM as ennm, RZ as rz, HBRVCD_NAME as hbrvcdName, QEC_INTERVAL as qecInterval, LTTD as lttd, BASE_ID as baseId, ANCHO_POINT_STATE as anchoPointState, HBRVCD as hbrvcd, MWR_RATE as mwrRate, SITESTEPSORT as siteStepSort, AVQ_INTERVAL as avqInterval, TTPWR as ttpwr, QI as qi, LGTD as lgtd, STTP_CODE as sttpCode, QEC_RATE as qecRate, BASESTEPSORT as baseStepSort, BASE_NAME as baseName, AVQ as avq, QO as qo, MWR_POINT_STATE as mwrPointState, QO_SUM as qoSum, orderIndex as orderindex, DTIN_ENV as dtinEnv, RVCDSTEPSORT as rvcdStepSort, sttp as sttp, AVQ_RATE as avqRate, DTMEL as dtmel, STCD as stcd, RSTCDSTEPSORT as rstcdStepSort, ADDVCD_NAME as addvcdName, QI_SUM as qiSum, MWR_INTERVAL as mwrInterval, NORMZ as normz"); - //非分组,求统计 - List groupFields = new ArrayList<>(); - if (CollUtil.isNotEmpty(dataSourceRequest.getAggregate()) && "average".equals(dataSourceRequest.getAggregate().get(0).getAggregate())){ - StringBuilder temp = new StringBuilder("select "); - for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) - { - groupFields.add("avg(" + item.getField() + ") as "+item.getField()); - } - temp.append(StrUtil.join(",", groupFields)); - sql = temp.append(" from ( ").append(sql).append(" ) "); - } - if (CollUtil.isNotEmpty(dataSourceRequest.getAggregate()) && "average".equals(dataSourceRequest.getAggregate().get(0).getAggregate())){ - List> list = dynamicSQLMapper.pageAllList(page, sql.toString(), params); - dataSourceResult.setTotal(0); - for (Map objectMap : list) - { - for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) - { - objectMap.put(item.getField(),objectMap.get(item.getField().toUpperCase())); - } - } - dataSourceResult.setData(list); - return dataSourceResult; - } - List> mapList =new ArrayList<>(); -// List> mapList = dynamicSQLMapper.pageAllList(page, sql.toString(), params); -// List msEngEqs = convertToMsEngEqList(mapList); - dataSourceResult.setData(mapList); - dataSourceResult.setTotal(ObjectUtil.isNotEmpty(page) ? page.getTotal() : (long) mapList.size()); - return dataSourceResult; - } - - @Override - public DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - DataSourceResult result = new DataSourceResult(); - result.setData(dataList); - result.setTotal(0L); - return result; - } - - @Override - public Map getQgcQecStaticData(Object data, String type) { - List> newDataList = (List>)data; - - //生态达标率大于95%的电站数量(环保部) - Long qecCnt = newDataList.stream().filter(it->Objects.equals(it.get("QECINTERVAL"), QecIntervalEnum.QEC_STLL_1_DY95.getCode())).count(); - Long qecTcnt = newDataList.stream().filter(it->!Objects.equals(it.get("QECINTERVAL"), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())).count(); - - //生态达标率大于95%的电站数量(水利部) - Long mwrCnt = newDataList.stream().filter(it->Objects.equals(it.get("MWRINTERVAL"),QecIntervalEnum.QEC_STLL_1_DY95.getCode())).count(); - Long mwrTcnt = newDataList.stream().filter(it->!Objects.equals(it.get("MWRINTERVAL"), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())).count(); - - //生态达标率大于95%的电站数量(多年平均) - Long avqCnt = newDataList.stream().filter(it->Objects.equals(it.get("AVQINTERVAL"),QecIntervalEnum.QEC_STLL_1_DY95.getCode())).count(); - Long avqTcnt = newDataList.stream().filter(it->!Objects.equals(it.get("AVQINTERVAL"), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())).count(); - - //无生态流量要求的电站数据 - Long noCnt = newDataList.stream().filter(it-> - Objects.equals(it.get("QECINTERVAL"),QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) - && - Objects.equals(it.get("MWRINTERVAL"),QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) - && - Objects.equals(it.get("AVQINTERVAL"),QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) - ).count(); - - Map result = new HashMap<>(); - result.put("engCnt", newDataList.size()); - - List> qgcQecVos = new ArrayList<>(); - - Map qvo = new HashMap<>(); - qvo.put("qecTCnt", Math.toIntExact(qecTcnt)); - qvo.put("qecCnt", Math.toIntExact(qecCnt)); - qvo.put("code", QecIntervalEnum.QEC_STLL_1_DY95.getCode()); - qvo.put("desc", ShowEnum.Q.getDesc()+"_"+QecIntervalEnum.QEC_STLL_1_DY95.getDesc()); - qvo.put("type", ShowEnum.Q.getCode()); - qgcQecVos.add(qvo); - - Map mwrVo = new HashMap<>(); - mwrVo.put("qecTCnt", Math.toIntExact(mwrTcnt)); - mwrVo.put("qecCnt", Math.toIntExact(mwrCnt)); - mwrVo.put("code", QecIntervalEnum.QEC_STLL_1_DY95.getCode()); - mwrVo.put("desc", ShowEnum.M.getDesc()+"_"+QecIntervalEnum.QEC_STLL_1_DY95.getDesc()); - mwrVo.put("type", ShowEnum.M.getCode()); - qgcQecVos.add(mwrVo); - - Map avqVo = new HashMap<>(); - avqVo.put("qecTCnt", Math.toIntExact(avqTcnt)); - avqVo.put("qecCnt", Math.toIntExact(avqCnt)); - avqVo.put("code", QecIntervalEnum.QEC_STLL_1_DY95.getCode()); - avqVo.put("desc", ShowEnum.A.getDesc()+"_"+QecIntervalEnum.QEC_STLL_1_DY95.getDesc()); - avqVo.put("type", ShowEnum.A.getCode()); - qgcQecVos.add(avqVo); - - Map noVo = new HashMap<>(); - noVo.put("qecTCnt", Math.toIntExact(noCnt)); - noVo.put("qecCnt", Math.toIntExact(noCnt)); - noVo.put("code", QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()); - noVo.put("desc", QecIntervalEnum.QEC_STLL_6_NOEQMN.getDesc()); - noVo.put("type", ShowEnum.N.getCode()); - qgcQecVos.add(noVo); - - result.put("list", qgcQecVos); - - return result; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java deleted file mode 100644 index 0efe4056..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.common.*; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import com.yfd.platform.qgc_eng.mapper.EngEqMapper; -import com.yfd.platform.qgc_eng.service.EngEqService; -import com.yfd.platform.utils.KendoUtil; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * 生态流量服务实现 - */ -@Service -public class EngEqServiceImpl extends ServiceImpl implements EngEqService { - @Resource - MicroservicDynamicSQLMapper microservicDynamicSQLMapper; - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - - DataSourceResult dataSourceResult = new DataSourceResult<>(); - StringBuilder sql = new StringBuilder(); - String kendoGroupCode = "default"; - String kendoGroupCode2 = "TM"; - if (filterResult.get(kendoGroupCode) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode).getSelectSql())) { - sql.append(filterResult.get("default").getSelectSql()); - if (filterResult.get(kendoGroupCode2) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode2).getSelectSql())) { - sql.append(StrUtil.replace(filterResult.get(kendoGroupCode2).getSelectSql(),"select",",")); - } - sql.append(",MET1.QEC beforeQec FROM "); - sql.append(" MS_ENG_T MET left join MS_ENG_T MET1 on MET1.stcd=MET.stcd and MET1.TYPE=met.type and add_months(MET1.TM,12)=met.tm inner join V_MS_STBPRP_T MSB on MSB.STCD=MET.STCD where MSB.STTP_CODE = 'ENG' and MSB.BLDSTT_CCODE = 2 ");//去掉大中型电站过滤条件 - } - - if (filterResult.get(kendoGroupCode) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode).getGroupSql())) { - sql.append(" and ").append(filterResult.get(kendoGroupCode).getGroupSql()); - } - if (filterResult.get(kendoGroupCode2) != null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode2).getGroupSql())) { - sql.append(" and ").append(filterResult.get(kendoGroupCode2).getGroupSql()); - } - if (filterResult.get(kendoGroupCode2) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode2).getOrderBySql())) { - sql.append(" ").append(filterResult.get(kendoGroupCode2).getOrderBySql()); - } - //组装分组条件 - String groupBy = KendoUtil.getGroupBy(dataSourceRequest); - GroupingInfo[] group = dataSourceRequest.toDevRequest().getGroup(); - if (StrUtil.isNotBlank(groupBy)) { - StringBuilder temp = new StringBuilder("select "); - List groupFields = new ArrayList<>(); - for (GroupingInfo item : group) { - groupFields.add(item.getSelector()); - } - temp.append(StrUtil.join(",",groupFields)); - for (GroupingInfo item : group) { - groupFields.add(item.getSelector()); - temp.append(",").append("count(*) as count_").append(item.getSelector()); - } - sql = temp.append(" from ( ").append(sql).append(" ) ").append(groupBy); - } - - if (filterResult.get(kendoGroupCode) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode).getOrderBySql())) { - sql.append(" ").append(filterResult.get(kendoGroupCode).getOrderBySql()); - } - - //组装map参数 - Map map = new HashMap<>(); - for (String key : filterResult.keySet()) { - map.putAll(filterResult.get(key).getParamMap()); - } - - - if (StrUtil.isNotBlank(groupBy)) { - List> list = microservicDynamicSQLMapper.pageAllList(page, sql.toString(), map); - //是否扁平化分组 - if (null != dataSourceRequest.getGroupResultFlat() && dataSourceRequest.getGroupResultFlat()) { - dataSourceResult.setData((new GroupHelper()).faltGroup(list, Arrays.asList(group))); - } else { - dataSourceResult.setData((new GroupHelper()).group(list, Arrays.asList(group))); - } - dataSourceResult.setTotal(0); - return dataSourceResult; - } - List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), map,MsEngEq.class); - dataSourceResult.setData(list); - dataSourceResult.setTotal(ObjectUtil.isNotEmpty(page) ? page.getTotal() : (long) list.size()); - return dataSourceResult; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult) { - // 模拟SQL条件,实际应该根据业务需求实现 - return "1=1"; - } - - @Override - public DataSourceResult lastEngDataSite(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult getSfdbInfo(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult qecSfdbCountByStcd(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult qecSfdbCount(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java deleted file mode 100644 index 4ccb9e8f..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.EqSpecial; -import com.yfd.platform.qgc_eng.service.EngSpecialService; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 电站专题-环保设施运行情况服务实现 - */ -@Service -public class EngSpecialServiceImpl implements EngSpecialService { - - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - // 模拟添加一些数据 - EqSpecial special1 = new EqSpecial(); - special1.setId("1"); - special1.setStcd("ST001"); - special1.setStnm("电站1"); - special1.setEqType("生态流量监测设施"); - special1.setEqName("流量监测仪"); - special1.setStatus("正常运行"); - special1.setCheckTime("2023-04-14"); - special1.setChecker("张三"); - special1.setRemark("无"); - dataList.add(special1); - - EqSpecial special2 = new EqSpecial(); - special2.setId("2"); - special2.setStcd("ST002"); - special2.setStnm("电站2"); - special2.setEqType("水质监测设施"); - special2.setEqName("水质分析仪"); - special2.setStatus("正常运行"); - special2.setCheckTime("2023-04-15"); - special2.setChecker("李四"); - special2.setRemark("无"); - dataList.add(special2); - - DataSourceResult result = new DataSourceResult<>(); - result.setData(dataList); - result.setTotal(dataList.size()); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } -} \ No newline at end of file From b3406a0246192b7b694511a259213bec1ebae641 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 29 May 2026 16:03:35 +0800 Subject: [PATCH 17/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E7=AB=99=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zq/controller/ZqMonitorController.java | 6 + .../qgc_env/zq/entity/vo/ZqRiverDataVo.java | 87 ++++ .../qgc_env/zq/service/ZqMonitorService.java | 3 + .../zq/service/impl/ZqMonitorServiceImpl.java | 480 ++++++++++++++++++ 4 files changed, 576 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqRiverDataVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java index c38ec14b..534b6b8b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/controller/ZqMonitorController.java @@ -29,6 +29,12 @@ public class ZqMonitorController { return ResponseResult.successData(zqMonitorService.getMsstbprptList(dataSourceRequest)); } + @PostMapping("/river/GetKendoListCust") + @Operation(summary = "查询流量站实时数据") + public ResponseResult getRiverKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(zqMonitorService.getRiverKendoListCust(dataSourceRequest)); + } + @GetMapping("/msstbprpt/getStcdInfo") @Operation(summary = "根据站码查询单条水文站基础数据") public ResponseResult getStcdInfo(@RequestParam String stcd) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqRiverDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqRiverDataVo.java new file mode 100644 index 00000000..56c59541 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/entity/vo/ZqRiverDataVo.java @@ -0,0 +1,87 @@ +package com.yfd.platform.qgc_env.zq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "流量站实时数据") +public class ZqRiverDataVo { + + @Schema(description = "流量") + private BigDecimal q; + + @Schema(description = "站码") + private String stcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "流速") + private BigDecimal v; + + @Schema(description = "所属电站名称") + private String ennm; + + @Schema(description = "时间") + private Date tm; + + @Schema(description = "水位") + private BigDecimal z; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "站址") + private String stlc; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "视频站编码聚合") + private String vdid; + + @Schema(description = "水位视频名称") + private String rzVideo; + + @Schema(description = "流速视频名称") + private String speedVideo; + + @Schema(description = "水位视频路径") + private String rzVideoPath; + + @Schema(description = "流速视频路径") + private String speedVideoPath; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java index fd576538..1eff40a1 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/ZqMonitorService.java @@ -3,10 +3,13 @@ package com.yfd.platform.qgc_env.zq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_env.zq.entity.vo.ZqBaseInfoVo; +import com.yfd.platform.qgc_env.zq.entity.vo.ZqRiverDataVo; public interface ZqMonitorService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + DataSourceResult getRiverKendoListCust(DataSourceRequest dataSourceRequest); + ZqBaseInfoVo getStcdInfo(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java index b8704f59..21e5cd7e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java @@ -6,15 +6,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; 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.common.exception.BizException; +import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo; import com.yfd.platform.qgc_env.zq.entity.vo.ZqBaseInfoVo; +import com.yfd.platform.qgc_env.zq.entity.vo.ZqRiverDataVo; import com.yfd.platform.qgc_env.zq.service.ZqMonitorService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedHashMap; import java.util.HashMap; import java.util.List; @@ -101,6 +106,15 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { return result; } + @Override + public DataSourceResult getRiverKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryRiverDetailList(dataSourceRequest, loadOptions); + } + return queryRiverGroupList(dataSourceRequest, loadOptions); + } + @Override public ZqBaseInfoVo getStcdInfo(String stcd) { if (StrUtil.isBlank(stcd)) { @@ -176,6 +190,472 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { return list.get(0); } + private DataSourceResult queryRiverDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildRiverDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(buildRiverCoreSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildRiverFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildRiverOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, ZqRiverDataVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryRiverGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + + StringBuilder sql = new StringBuilder("SELECT "); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapRiverColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapRiverColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildRiverAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + sql.append(String.join(", ", selectItems)) + .append(" FROM (") + .append(buildRiverCoreSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildRiverFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapRiverColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildRiverGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult(); + if (dataSourceRequest.getGroupResultFlat() != null && dataSourceRequest.getGroupResultFlat()) { + result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData(new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildRiverCoreSql() { + return "SELECT " + + "rr.Q AS q, " + + "rr.STCD AS stcd, " + + "rb.STNM AS stnm, " + + "rr.V AS v, " + + "eng.ENNM AS ennm, " + + "rr.TM AS tm, " + + "rr.Z AS z, " + + "eng.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "rb.STLC AS stlc, " + + "rb.RSTCD AS rstcd, " + + "eng.RVCD AS rvcd, " + + "rv.RVNM AS rvcdName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "rb.BLDSTT_CODE AS bldsttCcode, " + + "LISTAGG(vdb.STCD, ',') WITHIN GROUP(ORDER BY vdb.STCD) AS vdid, " + + "CASE " + + " WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') > 0 " + + " THEN CASE WHEN INSTR(SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1), '水位') > 0 " + + " THEN SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1) " + + " ELSE SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), 1, INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') - 1) END " + + " ELSE CASE WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), '水位') > 0 THEN LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD) END " + + "END AS rzVideo, " + + "CASE " + + " WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') > 0 " + + " THEN CASE WHEN INSTR(SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1), '流速') > 0 " + + " THEN SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1) " + + " ELSE SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), 1, INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') - 1) END " + + " ELSE CASE WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), '流速') > 0 THEN LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD) END " + + "END AS speedVideo, " + + "CASE " + + " WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') > 0 " + + " THEN CASE WHEN INSTR(SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1), '水位') > 0 " + + " THEN SUBSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1) " + + " ELSE SUBSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), 1, INSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') - 1) END " + + " ELSE CASE WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), '水位') > 0 THEN LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD) END " + + "END AS rzVideoPath, " + + "CASE " + + " WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') > 0 " + + " THEN CASE WHEN INSTR(SUBSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1), '流速') > 0 " + + " THEN SUBSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), INSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') + 1) " + + " ELSE SUBSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), 1, INSTR(LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD), ',') - 1) END " + + " ELSE CASE WHEN INSTR(LISTAGG(vdr.FLNM, ',') WITHIN GROUP(ORDER BY vdb.STCD), '流速') > 0 THEN LISTAGG(vdr.FLPTH, ',') WITHIN GROUP(ORDER BY vdb.STCD) END " + + "END AS speedVideoPath, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(rstSort.SORT, 999999) AS rstcdStepSort, " + + "NVL(siteSort.SORT, 999999) AS siteStepSort " + + "FROM SD_RIVER_R rr " + + "INNER JOIN SD_RIVER_B_H rb ON rb.STCD = rr.STCD AND rb.STTP = 'ZQ' AND NVL(rb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = rb.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = rb.RSTCD " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = rb.STCD " + + "LEFT JOIN SD_VDINFO_B vdb ON vdb.CSTCD = rr.STCD AND NVL(vdb.USFL, 1) = 1 " + + "LEFT JOIN SD_VDINFO_R vdr ON vdr.STCD = vdb.STCD AND vdr.TM = rr.TM AND NVL(vdr.IS_DELETED, 0) = 0 " + + "WHERE NVL(rr.IS_DELETED, 0) = 0 " + + "GROUP BY rr.Q, rr.STCD, rb.STNM, rr.V, eng.ENNM, rr.TM, rr.Z, eng.BASE_ID, hb.BASENAME, rb.STLC, rb.RSTCD, " + + "eng.RVCD, rv.RVNM, eng.HBRVCD, hbrv.HBRVNM, rb.BLDSTT_CODE, hb.ORDER_INDEX, along.ORDER_INDEX, rstSort.SORT, siteSort.SORT"; + } + + private String buildRiverFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildRiverLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildRiverFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildRiverLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String field = filter.getField(); + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("vdid".equalsIgnoreCase(field)) { + return buildRiverVdidCondition(operator, value, paramMap, indexHolder); + } + + String column = mapRiverColumn(field); + if (StrUtil.isBlank(column)) { + return ""; + } + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + boolean dateField = "tm".equalsIgnoreCase(field); + if ("in".equals(operator)) { + List values = normalizeRiverValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "zqRiverP" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add(buildRiverValueExpr(key, dateField, item)); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if (value == null) { + return ""; + } + + String key = "zqRiverP" + indexHolder[0]++; + String valueExpr = buildRiverValueExpr(key, dateField, value); + return switch (operator) { + case "eq" -> { + paramMap.put(key, value); + yield column + " = " + valueExpr; + } + case "neq" -> { + paramMap.put(key, value); + yield column + " <> " + valueExpr; + } + case "contains" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "startswith" -> { + paramMap.put(key, value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "endswith" -> { + paramMap.put(key, "%" + value); + yield column + " LIKE #{map." + key + "}"; + } + case "gt" -> { + paramMap.put(key, value); + yield column + " > " + valueExpr; + } + case "gte" -> { + paramMap.put(key, value); + yield column + " >= " + valueExpr; + } + case "lt" -> { + paramMap.put(key, value); + yield column + " < " + valueExpr; + } + case "lte" -> { + paramMap.put(key, value); + yield column + " <= " + valueExpr; + } + default -> ""; + }; + } + + private String buildRiverVdidCondition(String operator, + Object value, + Map paramMap, + int[] indexHolder) { + List values; + if ("in".equals(operator)) { + values = normalizeRiverValues(value); + } else if (value == null) { + return ""; + } else { + values = List.of(value); + } + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "zqRiverP" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add("#{map." + key + "}"); + } + if ("neq".equals(operator)) { + return " NOT EXISTS (SELECT 1 FROM SD_VDINFO_B vdb WHERE vdb.CSTCD = t.STCD AND vdb.STCD IN (" + String.join(", ", placeholders) + "))"; + } + return " EXISTS (SELECT 1 FROM SD_VDINFO_B vdb WHERE vdb.CSTCD = t.STCD AND vdb.STCD IN (" + String.join(", ", placeholders) + "))"; + } + + private List normalizeRiverValues(Object value) { + if (value == null) { + return new ArrayList<>(); + } + if (value instanceof List list) { + return new ArrayList<>(list); + } + String text = String.valueOf(value).trim(); + if (StrUtil.isBlank(text)) { + return new ArrayList<>(); + } + if (text.startsWith("[") && text.endsWith("]")) { + text = text.substring(1, text.length() - 1); + } + List values = new ArrayList<>(); + for (String item : text.split(",")) { + String trimmed = StrUtil.trim(item); + if (StrUtil.isNotBlank(trimmed)) { + values.add(StrUtil.removeAll(trimmed, "\"")); + } + } + return values; + } + + private String buildRiverValueExpr(String paramKey, boolean dateField, Object value) { + if (!dateField || value == null) { + return "#{map." + paramKey + "}"; + } + String text = String.valueOf(value).trim(); + if (text.length() <= 10) { + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD')"; + } + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')"; + } + + private String mapRiverColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "q" -> "t.Q"; + case "stcd" -> "t.STCD"; + case "stnm" -> "t.STNM"; + case "v" -> "t.V"; + case "ennm" -> "t.ENNM"; + case "tm" -> "t.TM"; + case "z" -> "t.Z"; + case "baseId" -> "t.BASEID"; + case "baseName" -> "t.BASENAME"; + case "stlc" -> "t.STLC"; + case "rstcd" -> "t.RSTCD"; + case "rvcd" -> "t.RVCD"; + case "rvcdName" -> "t.RVCDNAME"; + case "hbrvcd" -> "t.HBRVCD"; + case "hbrvcdName" -> "t.HBRVCDNAME"; + case "bldsttCcode" -> "t.BLDSTTCCODE"; + case "rzVideo" -> "t.RZVIDEO"; + case "speedVideo" -> "t.SPEEDVIDEO"; + case "baseStepSort" -> "t.BASESTEPSORT"; + case "rvcdStepSort" -> "t.RVCDSTEPSORT"; + case "rstcdStepSort" -> "t.RSTCDSTEPSORT"; + case "siteStepSort" -> "t.SITESTEPSORT"; + default -> null; + }; + } + + private String buildRiverDetailSelectSql(List selectFields) { + Map selectMap = new LinkedHashMap<>(); + selectMap.put("q", "t.Q AS q"); + selectMap.put("stcd", "t.STCD AS stcd"); + selectMap.put("stnm", "t.STNM AS stnm"); + selectMap.put("v", "t.V AS v"); + selectMap.put("ennm", "t.ENNM AS ennm"); + selectMap.put("tm", "t.TM AS tm"); + selectMap.put("z", "t.Z AS z"); + selectMap.put("baseId", "t.BASEID AS baseId"); + selectMap.put("baseName", "t.BASENAME AS baseName"); + selectMap.put("stlc", "t.STLC AS stlc"); + selectMap.put("rstcd", "t.RSTCD AS rstcd"); + selectMap.put("rvcd", "t.RVCD AS rvcd"); + selectMap.put("rvcdName", "t.RVCDNAME AS rvcdName"); + selectMap.put("hbrvcd", "t.HBRVCD AS hbrvcd"); + selectMap.put("hbrvcdName", "t.HBRVCDNAME AS hbrvcdName"); + selectMap.put("bldsttCcode", "t.BLDSTTCCODE AS bldsttCcode"); + selectMap.put("vdid", "t.VDID AS vdid"); + selectMap.put("rzVideo", "t.RZVIDEO AS rzVideo"); + selectMap.put("speedVideo", "t.SPEEDVIDEO AS speedVideo"); + selectMap.put("rzVideoPath", "t.RZVIDEOPATH AS rzVideoPath"); + selectMap.put("speedVideoPath", "t.SPEEDVIDEOPATH AS speedVideoPath"); + selectMap.put("baseStepSort", "t.BASESTEPSORT AS baseStepSort"); + selectMap.put("rvcdStepSort", "t.RVCDSTEPSORT AS rvcdStepSort"); + selectMap.put("rstcdStepSort", "t.RSTCDSTEPSORT AS rstcdStepSort"); + selectMap.put("siteStepSort", "t.SITESTEPSORT AS siteStepSort"); + + if (CollUtil.isEmpty(selectFields)) { + return String.join(", ", selectMap.values()); + } + List actualColumns = new ArrayList<>(); + for (String selectField : selectFields) { + String column = selectMap.get(selectField); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(selectMap.values()); + } + return String.join(", ", actualColumns); + } + + private String buildRiverOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY t.BASESTEPSORT ASC, t.RVCDSTEPSORT ASC, t.RSTCDSTEPSORT ASC, t.SITESTEPSORT ASC, t.STCD ASC, t.TM DESC"; + } + List orderColumns = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) { + continue; + } + String column = mapRiverColumn(sortDescriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; + orderColumns.add(column + " " + dir + " NULLS LAST"); + } + if (orderColumns.isEmpty()) { + return " ORDER BY t.BASESTEPSORT ASC, t.RVCDSTEPSORT ASC, t.RSTCDSTEPSORT ASC, t.SITESTEPSORT ASC, t.STCD ASC, t.TM DESC"; + } + return " ORDER BY " + String.join(", ", orderColumns); + } + + private String buildRiverGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapRiverColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + + private String buildRiverAggregateSql(String aggregate, String column, String field) { + String normalized = aggregate == null ? "" : aggregate.toLowerCase(); + return switch (normalized) { + case "sum", "min", "max", "avg", "count" -> + normalized.toUpperCase() + "(" + column + ") AS " + normalized + "_" + field; + default -> ""; + }; + } + private String buildMsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { From 7d230273e89ba1989d509731b1296f37949c135c Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 08:49:14 +0800 Subject: [PATCH 18/47] =?UTF-8?q?feat:=20=E8=A7=86=E9=A2=91=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E8=AE=BE=E5=A4=87=E7=BB=9F=E8=AE=A1=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SecurityConfig.java | 1 + .../yfd/platform/config/SwaggerConfig.java | 8 + .../vd/controller/VdMonitorController.java | 29 +++ .../qgc_env/vd/entity/vo/VdVmsstbprptVo.java | 25 ++ .../qgc_env/vd/service/VdMonitorService.java | 10 + .../vd/service/impl/VdMonitorServiceImpl.java | 233 ++++++++++++++++++ 6 files changed, 306 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index d04d95c5..b4323148 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -63,6 +63,7 @@ public class SecurityConfig { .requestMatchers("/wt/**").permitAll() .requestMatchers("/zq/**").permitAll() .requestMatchers("/wq/**").permitAll() + .requestMatchers("/vd/**").permitAll() .requestMatchers("/fp/**").permitAll() .requestMatchers("/fh/**").permitAll() .requestMatchers("/data/**").permitAll() diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index 18d33404..9178996a 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -84,6 +84,14 @@ public class SwaggerConfig { .build(); } + @Bean + public GroupedOpenApi groupEnvVDApi() { + return GroupedOpenApi.builder() + .group("3.3.1 全过程-生态环保数据服务-过鱼设施-过鱼监测") + .packagesToScan("com.yfd.platform.qgc_env.vd.controller") + .build(); + } + @Bean public GroupedOpenApi groupEnvFHApi() { return GroupedOpenApi.builder() diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java new file mode 100644 index 00000000..a2d2193f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java @@ -0,0 +1,29 @@ +package com.yfd.platform.qgc_env.vd.controller; + +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_env.vd.service.VdMonitorService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/vd") +@Tag(name = "视频监控模块") +@Validated +public class VdMonitorController { + + @Resource + private VdMonitorService vdMonitorService; + + @PostMapping("/vmsstbprpt/GetKendoList") + @Operation(summary = "视频监控设备统计查询") + public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(vdMonitorService.getVmsstbprptList(dataSourceRequest)); + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java new file mode 100644 index 00000000..70783d4a --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java @@ -0,0 +1,25 @@ +package com.yfd.platform.qgc_env.vd.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +@Data +@Schema(description = "视频监控设备分组统计") +public class VdVmsstbprptVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "站类值") + private String sttpCodeValue; + + @Schema(description = "站类扩展") + private Object sttpCodeExt; + + @Schema(description = "站类数量") + private Integer countSttpCode; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java new file mode 100644 index 00000000..18d05d5a --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java @@ -0,0 +1,10 @@ +package com.yfd.platform.qgc_env.vd.service; + +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo; + +public interface VdMonitorService { + + DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java new file mode 100644 index 00000000..eafc9041 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -0,0 +1,233 @@ +package com.yfd.platform.qgc_env.vd.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +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.vd.entity.vo.VdVmsstbprptVo; +import com.yfd.platform.qgc_env.vd.service.VdMonitorService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class VdMonitorServiceImpl implements VdMonitorService { + + @Resource + private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + + @Override + public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + GroupingInfo[] groups = loadOptions == null ? null : loadOptions.getGroup(); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT t.STTP_CODE AS sttpCode, COUNT(1) AS COUNT_STTPCODE ") + .append("FROM (") + .append(buildUnionBaseSql()) + .append(") t ") + .append("WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + sql.append(" GROUP BY t.STTP_CODE "); + sql.append(buildOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getGroup())); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (groups != null && groups.length > 0) { + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groups))); + result.setTotal((long) rows.size()); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groups))); + result.setTotal((long) rows.size()); + } + } else { + List data = new ArrayList<>(); + for (Map row : rows) { + VdVmsstbprptVo vo = new VdVmsstbprptVo(); + Object sttpCode = row.get("STTPCODE"); + Object count = row.get("COUNT_STTPCODE"); + vo.setSttpCode(sttpCode == null ? null : sttpCode.toString()); + vo.setSttpCodeValue(sttpCode == null ? null : sttpCode.toString()); + vo.setSttpCodeExt(null); + vo.setCountSttpCode(count == null ? 0 : Integer.parseInt(count.toString())); + data.add(vo); + } + result.setData(data); + result.setTotal((long) data.size()); + } + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildUnionBaseSql() { + return "SELECT vd.STCD, vd.STTP AS STTP_CODE, sttp.STTP_NAME, sttp.FULL_PATH " + + "FROM SD_VDINFO_B vd " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = vd.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + + "WHERE NVL(vd.USFL, 1) = 1 AND vd.STTP = 'VD_FP' " + + "UNION ALL " + + "SELECT sonar.STCD, sonar.STTP AS STTP_CODE, sttp.STTP_NAME, sttp.FULL_PATH " + + "FROM SD_SONAR_B_H sonar " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = sonar.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + + "WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') "; + } + + private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String paramKey = "vdParam" + indexHolder[0]++; + paramMap.put(paramKey, item); + placeholders.add("#{map." + paramKey + "}"); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if (value == null) { + return ""; + } + String paramKey = "vdParam" + indexHolder[0]++; + return switch (operator) { + case "eq" -> { + paramMap.put(paramKey, value); + yield column + " = #{map." + paramKey + "}"; + } + case "neq" -> { + paramMap.put(paramKey, value); + yield column + " <> #{map." + paramKey + "}"; + } + case "contains" -> { + paramMap.put(paramKey, "%" + value + "%"); + yield column + " LIKE #{map." + paramKey + "}"; + } + case "startswith" -> { + paramMap.put(paramKey, value + "%"); + yield column + " LIKE #{map." + paramKey + "}"; + } + case "endswith" -> { + paramMap.put(paramKey, "%" + value); + yield column + " LIKE #{map." + paramKey + "}"; + } + default -> ""; + }; + } + + private List normalizeValues(Object value) { + List values = new ArrayList<>(); + if (value instanceof List list) { + for (Object item : list) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value instanceof Object[] array) { + for (Object item : array) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value != null) { + values.add(value); + } + return values; + } + + private String mapColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "sttpCode" -> "t.STTP_CODE"; + case "sttpName" -> "t.STTP_NAME"; + case "sttpFullPath" -> "t.FULL_PATH"; + case "stcd" -> "t.STCD"; + default -> null; + }; + } + + private String buildOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return " ORDER BY t.STTP_CODE ASC"; + } + List orderItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor group : groups) { + if (group == null || StrUtil.isBlank(group.getField())) { + continue; + } + String column = mapColumn(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.STTP_CODE ASC"; + } + return " ORDER BY " + String.join(", ", orderItems); + } +} From f03bb3f3dd3a2b8b6d42612d1ece9de72ce0ff9c Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 09:06:32 +0800 Subject: [PATCH 19/47] =?UTF-8?q?fix:=20=E8=A7=86=E9=A2=91=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E8=AE=BE=E5=A4=87=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_env/vd/entity/vo/VdVmsstbprptVo.java | 107 ++++++++ .../vd/service/impl/VdMonitorServiceImpl.java | 231 ++++++++++++++---- 2 files changed, 291 insertions(+), 47 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java index 70783d4a..620e7996 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; @Data @Schema(description = "视频监控设备分组统计") @@ -22,4 +24,109 @@ public class VdVmsstbprptVo implements Serializable { @Schema(description = "站类数量") private Integer countSttpCode; + + @Schema(description = "站码") + private String stcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "监控类型") + private String mntp; + + @Schema(description = "站类名称") + private String sttpName; + + @Schema(description = "站类全路径") + private String sttpFullPath; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "所属电站名称") + private String ennm; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "行政区编码") + private String addvcd; + + @Schema(description = "站址") + private String stlc; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal elev; + + @Schema(description = "建成日期") + private Date jcdt; + + @Schema(description = "撤站日期") + private Date wddt; + + @Schema(description = "数据是否接入") + private Integer dtin; + + @Schema(description = "数据是否接入中文") + private String dtinName; + + @Schema(description = "是否启用") + private Integer usfl; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "建设状态中文") + private String bldsttCcodeName; + + @Schema(description = "监测指标") + private String stindx; + + @Schema(description = "简介") + private String introduce; + + @Schema(description = "LOGO") + private String logo; + + @Schema(description = "介绍附件") + private String inffile; + + @Schema(description = "监测频次") + private Integer dtfrqcy; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "数据来源") + private String vlsr; + + @Schema(description = "数据来源时间") + private Date vlsrTm; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; + + @Schema(description = "来源表") + private String sourceTable; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index eafc9041..f92db482 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_env.vd.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; @@ -10,6 +11,7 @@ import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo; import com.yfd.platform.qgc_env.vd.service.VdMonitorService; +import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -29,64 +31,165 @@ public class VdMonitorServiceImpl implements VdMonitorService { public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); GroupingInfo[] groups = loadOptions == null ? null : loadOptions.getGroup(); - - StringBuilder sql = new StringBuilder(); - sql.append("SELECT t.STTP_CODE AS sttpCode, COUNT(1) AS COUNT_STTPCODE ") - .append("FROM (") - .append(buildUnionBaseSql()) - .append(") t ") - .append("WHERE 1 = 1 "); - Map paramMap = new HashMap<>(); String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + + if (groups != null && groups.length > 0) { + return buildGroupedResult(dataSourceRequest, groups, filterSql, paramMap); + } + + return buildDetailResult(dataSourceRequest, loadOptions, filterSql, paramMap); + } + + private DataSourceResult buildGroupedResult(DataSourceRequest dataSourceRequest, + GroupingInfo[] groups, + String filterSql, + Map paramMap) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT t.sttpCode AS sttpCode, COUNT(1) AS count_sttpCode ") + .append("FROM (") + .append(buildVmsstbprptViewSql()) + .append(") t ") + .append("WHERE 1 = 1 "); if (StrUtil.isNotBlank(filterSql)) { sql.append(" AND ").append(filterSql).append(" "); } - sql.append(" GROUP BY t.STTP_CODE "); + sql.append(" GROUP BY t.sttpCode "); sql.append(buildOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getGroup())); List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); DataSourceResult result = new DataSourceResult<>(); - if (groups != null && groups.length > 0) { - if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { - result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groups))); - result.setTotal((long) rows.size()); - } else { - result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groups))); - result.setTotal((long) rows.size()); - } + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groups))); + result.setTotal((long) rows.size()); } else { - List data = new ArrayList<>(); - for (Map row : rows) { - VdVmsstbprptVo vo = new VdVmsstbprptVo(); - Object sttpCode = row.get("STTPCODE"); - Object count = row.get("COUNT_STTPCODE"); - vo.setSttpCode(sttpCode == null ? null : sttpCode.toString()); - vo.setSttpCodeValue(sttpCode == null ? null : sttpCode.toString()); - vo.setSttpCodeExt(null); - vo.setCountSttpCode(count == null ? 0 : Integer.parseInt(count.toString())); - data.add(vo); - } - result.setData(data); - result.setTotal((long) data.size()); + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groups))); + result.setTotal((long) rows.size()); } result.setAggregates(new HashMap<>()); return result; } - private String buildUnionBaseSql() { - return "SELECT vd.STCD, vd.STTP AS STTP_CODE, sttp.STTP_NAME, sttp.FULL_PATH " + - "FROM SD_VDINFO_B vd " + - "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = vd.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + - "WHERE NVL(vd.USFL, 1) = 1 AND vd.STTP = 'VD_FP' " + + private DataSourceResult buildDetailResult(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions, + String filterSql, + Map paramMap) { + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("t.stcd AS stcd, ") + .append("t.stnm AS stnm, ") + .append("t.mntp AS mntp, ") + .append("t.sttpCode AS sttpCode, ") + .append("t.sttpName AS sttpName, ") + .append("t.sttpFullPath AS sttpFullPath, ") + .append("t.rstcd AS rstcd, ") + .append("t.ennm AS ennm, ") + .append("t.baseId AS baseId, ") + .append("t.baseName AS baseName, ") + .append("t.hbrvcd AS hbrvcd, ") + .append("t.rvcd AS rvcd, ") + .append("t.addvcd AS addvcd, ") + .append("t.stlc AS stlc, ") + .append("t.lgtd AS lgtd, ") + .append("t.lttd AS lttd, ") + .append("t.elev AS elev, ") + .append("t.jcdt AS jcdt, ") + .append("t.wddt AS wddt, ") + .append("t.dtin AS dtin, ") + .append("CASE WHEN NVL(t.dtin, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName, ") + .append("t.usfl AS usfl, ") + .append("t.bldsttCcode AS bldsttCcode, ") + .append("CASE ") + .append("WHEN t.bldsttCcode IN (1, 10, 11) THEN '已建' ") + .append("WHEN t.bldsttCcode IN (2, 7, 8) THEN '在建' ") + .append("ELSE '未建/规划' END AS bldsttCcodeName, ") + .append("t.stindx AS stindx, ") + .append("t.introduce AS introduce, ") + .append("t.logo AS logo, ") + .append("t.inffile AS inffile, ") + .append("t.dtfrqcy AS dtfrqcy, ") + .append("t.remark AS remark, ") + .append("t.vlsr AS vlsr, ") + .append("t.vlsrTm AS vlsrTm, ") + .append("t.baseStepSort AS baseStepSort, ") + .append("t.rstcdStepSort AS rstcdStepSort, ") + .append("t.siteStepSort AS siteStepSort, ") + .append("t.sourceTable AS sourceTable ") + .append("FROM (") + .append(buildVmsstbprptViewSql()) + .append(") t WHERE 1 = 1 "); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, sql.toString(), paramMap, VdVmsstbprptVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildVmsstbprptViewSql() { + return "SELECT " + + "src.STCD AS stcd, " + + "src.STNM AS stnm, " + + "src.MNTP AS mntp, " + + "src.STTP AS sttpCode, " + + "sttp.STTP_NAME AS sttpName, " + + "sttp.FULL_PATH AS sttpFullPath, " + + "src.RSTCD AS rstcd, " + + "eng.ENNM AS ennm, " + + "NVL(eng.BASE_ID, src.BASE_ID) AS baseId, " + + "hb.BASENAME AS baseName, " + + "NVL(eng.HBRVCD, src.HBRVCD) AS hbrvcd, " + + "NVL(eng.RVCD, src.RVCD) AS rvcd, " + + "NVL(eng.ADDVCD, src.ADDVCD) AS addvcd, " + + "src.STLC AS stlc, " + + "src.LGTD AS lgtd, " + + "src.LTTD AS lttd, " + + "src.ELEV AS elev, " + + "src.JCDT AS jcdt, " + + "src.WDDT AS wddt, " + + "src.DTIN AS dtin, " + + "src.USFL AS usfl, " + + "src.BLDSTT_CODE AS bldsttCcode, " + + "src.STINDX AS stindx, " + + "src.INTRODUCE AS introduce, " + + "src.LOGO AS logo, " + + "src.INFFILE AS inffile, " + + "src.DTFRQCY AS dtfrqcy, " + + "src.REMARK AS remark, " + + "src.VLSR AS vlsr, " + + "src.VLSR_TM AS vlsrTm, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + + "NVL(src.ORDER_INDEX, 999999) AS siteStepSort, " + + "src.SOURCE_TABLE AS sourceTable " + + "FROM (" + + "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " + + " vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " + + " vd.HBRVCD, vd.RVCD, vd.ADDVCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " + + " CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " + + " vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " + + " 'SD_VDINFO_B' AS SOURCE_TABLE " + + "FROM SD_VDINFO_B vd WHERE vd.STTP = 'VD_FP' " + "UNION ALL " + - "SELECT sonar.STCD, sonar.STTP AS STTP_CODE, sttp.STTP_NAME, sttp.FULL_PATH " + - "FROM SD_SONAR_B_H sonar " + - "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = sonar.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + - "WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') "; + "SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " + + " sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " + + " sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, " + + " sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, sonar.ORDER_INDEX, " + + " 'SD_SONAR_B_H' AS SOURCE_TABLE " + + "FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') " + + ") src " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; } private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, @@ -201,17 +304,29 @@ public class VdMonitorServiceImpl implements VdMonitorService { return null; } return switch (field) { - case "sttpCode" -> "t.STTP_CODE"; - case "sttpName" -> "t.STTP_NAME"; - case "sttpFullPath" -> "t.FULL_PATH"; - case "stcd" -> "t.STCD"; + case "sttpCode" -> "t.sttpCode"; + case "sttpName" -> "t.sttpName"; + case "sttpFullPath" -> "t.sttpFullPath"; + case "stcd" -> "t.stcd"; + case "stnm" -> "t.stnm"; + case "rstcd" -> "t.rstcd"; + case "ennm" -> "t.ennm"; + case "baseId" -> "t.baseId"; + case "baseName" -> "t.baseName"; + case "hbrvcd" -> "t.hbrvcd"; + case "rvcd" -> "t.rvcd"; + case "addvcd" -> "t.addvcd"; + case "dtin" -> "t.dtin"; + case "usfl" -> "t.usfl"; + case "bldsttCcode" -> "t.bldsttCcode"; + case "sourceTable" -> "t.sourceTable"; default -> null; }; } private String buildOrderBySql(List groups) { if (CollUtil.isEmpty(groups)) { - return " ORDER BY t.STTP_CODE ASC"; + return " ORDER BY t.sttpCode ASC"; } List orderItems = new ArrayList<>(); for (DataSourceRequest.GroupDescriptor group : groups) { @@ -226,7 +341,29 @@ public class VdMonitorServiceImpl implements VdMonitorService { orderItems.add(column + " " + direction); } if (orderItems.isEmpty()) { - return " ORDER BY t.STTP_CODE ASC"; + return " ORDER BY t.sttpCode ASC"; + } + return " ORDER BY " + String.join(", ", orderItems); + } + + private String buildDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY t.baseStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC"; + } + List orderItems = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String direction = "desc".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orderItems.add(column + " " + direction); + } + if (orderItems.isEmpty()) { + return " ORDER BY t.baseStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC"; } return " ORDER BY " + String.join(", ", orderItems); } From 368bffb61ca690e804bd672d54db3913595f3bb6 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 09:23:06 +0800 Subject: [PATCH 20/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E7=AB=99?= =?UTF-8?q?=E7=A0=81=E6=9F=A5=E8=AF=A2=E5=8D=95=E6=9D=A1=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E8=AE=BE=E5=A4=87=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vd/controller/VdMonitorController.java | 8 +++ .../qgc_env/vd/service/VdMonitorService.java | 2 + .../vd/service/impl/VdMonitorServiceImpl.java | 60 +++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java index a2d2193f..03216b3d 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java @@ -7,9 +7,11 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -26,4 +28,10 @@ public class VdMonitorController { public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(vdMonitorService.getVmsstbprptList(dataSourceRequest)); } + + @GetMapping("/msstbprpt/getStcdInfo") + @Operation(summary = "根据站码查询单条视频监控设备详情") + public ResponseResult getStcdInfo(@RequestParam String stcd) { + return ResponseResult.successData(vdMonitorService.getStcdInfo(stcd)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java index 18d05d5a..1c137839 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java @@ -7,4 +7,6 @@ import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo; public interface VdMonitorService { DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); + + VdVmsstbprptVo getStcdInfo(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index f92db482..56d0f9c9 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -41,6 +41,66 @@ public class VdMonitorServiceImpl implements VdMonitorService { return buildDetailResult(dataSourceRequest, loadOptions, filterSql, paramMap); } + @Override + public VdVmsstbprptVo getStcdInfo(String stcd) { + if (StrUtil.isBlank(stcd)) { + return null; + } + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("t.stcd AS stcd, ") + .append("t.stnm AS stnm, ") + .append("t.mntp AS mntp, ") + .append("t.sttpCode AS sttpCode, ") + .append("t.sttpName AS sttpName, ") + .append("t.sttpFullPath AS sttpFullPath, ") + .append("t.rstcd AS rstcd, ") + .append("t.ennm AS ennm, ") + .append("t.baseId AS baseId, ") + .append("t.baseName AS baseName, ") + .append("t.hbrvcd AS hbrvcd, ") + .append("t.rvcd AS rvcd, ") + .append("t.addvcd AS addvcd, ") + .append("t.stlc AS stlc, ") + .append("t.lgtd AS lgtd, ") + .append("t.lttd AS lttd, ") + .append("t.elev AS elev, ") + .append("t.jcdt AS jcdt, ") + .append("t.wddt AS wddt, ") + .append("t.dtin AS dtin, ") + .append("CASE WHEN NVL(t.dtin, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName, ") + .append("t.usfl AS usfl, ") + .append("t.bldsttCcode AS bldsttCcode, ") + .append("CASE ") + .append("WHEN t.bldsttCcode IN (1, 10, 11) THEN '已建' ") + .append("WHEN t.bldsttCcode IN (2, 7, 8) THEN '在建' ") + .append("ELSE '未建/规划' END AS bldsttCcodeName, ") + .append("t.stindx AS stindx, ") + .append("t.introduce AS introduce, ") + .append("t.logo AS logo, ") + .append("t.inffile AS inffile, ") + .append("t.dtfrqcy AS dtfrqcy, ") + .append("t.remark AS remark, ") + .append("t.vlsr AS vlsr, ") + .append("t.vlsrTm AS vlsrTm, ") + .append("t.baseStepSort AS baseStepSort, ") + .append("t.rstcdStepSort AS rstcdStepSort, ") + .append("t.siteStepSort AS siteStepSort, ") + .append("t.sourceTable AS sourceTable ") + .append("FROM (") + .append(buildVmsstbprptViewSql()) + .append(") t WHERE t.stcd = #{map.stcd}"); + + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List list = microservicDynamicSQLMapper.getAllListWithResultType( + sql.toString(), paramMap, VdVmsstbprptVo.class); + if (CollUtil.isEmpty(list)) { + return null; + } + return list.get(0); + } + private DataSourceResult buildGroupedResult(DataSourceRequest dataSourceRequest, GroupingInfo[] groups, String filterSql, From ef1a76223d2823fa598c2751e85cd0d85a431032 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 09:53:34 +0800 Subject: [PATCH 21/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E7=9B=91=E6=8E=A7=E8=BF=90=E8=A1=8C=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vd/controller/VdMonitorController.java | 6 + .../qgc_env/vd/entity/vo/VdRunDataVo.java | 97 ++++ .../qgc_env/vd/service/VdMonitorService.java | 3 + .../vd/service/impl/VdMonitorServiceImpl.java | 419 +++++++++++++++++- 4 files changed, 511 insertions(+), 14 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdRunDataVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java index 03216b3d..841e56e7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java @@ -34,4 +34,10 @@ public class VdMonitorController { public ResponseResult getStcdInfo(@RequestParam String stcd) { return ResponseResult.successData(vdMonitorService.getStcdInfo(stcd)); } + + @PostMapping("/runData/GetKendoListCust") + @Operation(summary = "查询视频监控运行数据") + public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(vdMonitorService.getRunDataKendoListCust(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdRunDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdRunDataVo.java new file mode 100644 index 00000000..166fc84d --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdRunDataVo.java @@ -0,0 +1,97 @@ +package com.yfd.platform.qgc_env.vd.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Schema(description = "视频监控运行数据") +public class VdRunDataVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "视频站名称") + private String stnm; + + @Schema(description = "视频监控点编码") + private String stcd; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "时间") + private Date tm; + + @Schema(description = "显示名称") + private String flnm; + + @Schema(description = "图片路径") + private String imgPath; + + @Schema(description = "视频路径") + private String flpth; + + @Schema(description = "设备视频信息") + private String deviceinfo; + + @Schema(description = "设备状态描述") + private String describe; + + @Schema(description = "附件ID") + private String fid; + + @Schema(description = "缩略图") + private String thumbnail; + + @Schema(description = "电站编码") + private String rstcd; + + @Schema(description = "电站名称") + private String ennm; + + @Schema(description = "栖息地编码") + private String fhstcd; + + @Schema(description = "栖息地名称") + private String fhstnm; + + @Schema(description = "测站编码") + private String stCode; + + @Schema(description = "测站名称") + private String stName; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "类型编码") + private String sttpCode; + + @Schema(description = "类型名称") + private String sttpName; + + @Schema(description = "标题名称") + private String titleName; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java index 1c137839..59730582 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_env.vd.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo; import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo; public interface VdMonitorService { @@ -9,4 +10,6 @@ public interface VdMonitorService { DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); VdVmsstbprptVo getStcdInfo(String stcd); + + DataSourceResult getRunDataKendoListCust(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index 56d0f9c9..42f124ca 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -9,6 +9,7 @@ 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.vd.entity.vo.VdRunDataVo; import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo; import com.yfd.platform.qgc_env.vd.service.VdMonitorService; import com.yfd.platform.utils.QgcQueryWrapperUtil; @@ -18,6 +19,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -101,6 +103,15 @@ public class VdMonitorServiceImpl implements VdMonitorService { return list.get(0); } + @Override + public DataSourceResult getRunDataKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryRunDataDetailList(dataSourceRequest, loadOptions); + } + return queryRunDataGroupList(dataSourceRequest, loadOptions); + } + private DataSourceResult buildGroupedResult(DataSourceRequest dataSourceRequest, GroupingInfo[] groups, String filterSql, @@ -194,6 +205,101 @@ public class VdMonitorServiceImpl implements VdMonitorService { return result; } + private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildRunDataSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(buildRunDataCoreSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildRunDataFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildRunDataOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, VdRunDataVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryRunDataGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapRunDataColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField()); + selectItems.add("COUNT(*) AS count_" + descriptor.getField()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapRunDataColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildRunDataAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.sttpCode AS sttpCode"); + selectItems.add("COUNT(*) AS count_sttpCode"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(buildRunDataCoreSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildRunDataFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapRunDataColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)); + sql.append(buildRunDataGroupOrderBySql(groups)); + } + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal((long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private String buildVmsstbprptViewSql() { return "SELECT " + "src.STCD AS stcd, " + @@ -231,9 +337,18 @@ public class VdMonitorServiceImpl implements VdMonitorService { "NVL(src.ORDER_INDEX, 999999) AS siteStepSort, " + "src.SOURCE_TABLE AS sourceTable " + "FROM (" + - "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " + + buildVdDeviceBaseSql() + + ") src " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, src.BASE_ID) AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 "; + } + + private String buildVdDeviceBaseSql() { + return "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " + " vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " + - " vd.HBRVCD, vd.RVCD, vd.ADDVCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " + + " vd.HBRVCD, vd.RVCD, vd.ADDVCD, vd.CSTCD, vd.FHSTCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " + " CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " + " vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " + " 'SD_VDINFO_B' AS SOURCE_TABLE " + @@ -241,15 +356,163 @@ public class VdMonitorServiceImpl implements VdMonitorService { "UNION ALL " + "SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " + " sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " + - " sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, " + - " sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, sonar.ORDER_INDEX, " + + " sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, CAST(NULL AS VARCHAR2(36)) AS CSTCD, CAST(NULL AS VARCHAR2(36)) AS FHSTCD, " + + " sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, sonar.ORDER_INDEX, " + " 'SD_SONAR_B_H' AS SOURCE_TABLE " + - "FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') " + - ") src " + - "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; + "FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') "; + } + + private String buildRunDataCoreSql() { + return "SELECT " + + "run.ID AS id, " + + "run.STCD AS stcd, " + + "run.TM AS tm, " + + "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " + + "run.IMG_PATH AS imgPath, " + + "run.FLPTH AS flpth, " + + "run.DEVICEINFO AS deviceinfo, " + + "run.DESCRIBE AS describe, " + + "run.FID AS fid, " + + "run.THUMBNAIL AS thumbnail, " + + "base.RSTCD AS rstcd, " + + "base.STNM AS stnm, " + + "eng.ENNM AS ennm, " + + "base.FHSTCD AS fhstcd, " + + "fh.STNM AS fhstnm, " + + "base.CSTCD AS stCode, " + + "cst.STNM AS stName, " + + "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " + + "hb.BASENAME AS baseName, " + + "base.STTP AS sttpCode, " + + "sttp.STTP_NAME AS sttpName, " + + "base.STNM AS titleName, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + + "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " + + "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName " + + "FROM SD_VDINFO_R run " + + "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + + " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " + + " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + + "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + + "WHERE NVL(run.IS_DELETED, 0) = 0 "; + } + + private String buildStationBaseSql() { + return "SELECT river.STCD AS STCD, river.STNM AS STNM FROM SD_RIVER_B_H river WHERE NVL(river.IS_DELETED, 0) = 0 " + + "UNION ALL " + + "SELECT wt.STCD AS STCD, wt.STNM AS STNM FROM SD_WT_B_H wt WHERE NVL(wt.IS_DELETED, 0) = 0 " + + "UNION ALL " + + "SELECT wq.STCD AS STCD, wq.STNM AS STNM FROM SD_WQ_B_H wq WHERE NVL(wq.IS_DELETED, 0) = 0 " + + "UNION ALL " + + "SELECT fh.STCD AS STCD, fh.STNM AS STNM FROM SD_FHBT_B_H fh WHERE NVL(fh.IS_DELETED, 0) = 0 " + + "UNION ALL " + + "SELECT eng.STCD AS STCD, eng.ENNM AS STNM FROM SD_ENGINFO_B_H eng WHERE NVL(eng.IS_DELETED, 0) = 0 "; + } + + private String buildRunDataSelectSql(List selectFields) { + Map selectMap = new LinkedHashMap<>(); + selectMap.put("stnm", "t.stnm AS stnm"); + selectMap.put("stcd", "t.stcd AS stcd"); + selectMap.put("tm", "t.tm AS tm"); + selectMap.put("flnm", "t.flnm AS flnm"); + selectMap.put("imgPath", "t.imgPath AS imgPath"); + selectMap.put("flpth", "t.flpth AS flpth"); + selectMap.put("deviceinfo", "t.deviceinfo AS deviceinfo"); + selectMap.put("describe", "t.describe AS describe"); + selectMap.put("fid", "t.fid AS fid"); + selectMap.put("thumbnail", "t.thumbnail AS thumbnail"); + selectMap.put("rstcd", "t.rstcd AS rstcd"); + selectMap.put("ennm", "t.ennm AS ennm"); + selectMap.put("fhstcd", "t.fhstcd AS fhstcd"); + selectMap.put("fhstnm", "t.fhstnm AS fhstnm"); + selectMap.put("stCode", "t.stCode AS stCode"); + selectMap.put("stName", "t.stName AS stName"); + selectMap.put("baseId", "t.baseId AS baseId"); + selectMap.put("baseName", "t.baseName AS baseName"); + selectMap.put("sttpCode", "t.sttpCode AS sttpCode"); + selectMap.put("sttpName", "t.sttpName AS sttpName"); + selectMap.put("titleName", "t.titleName AS titleName"); + selectMap.put("baseStepSort", "t.baseStepSort AS baseStepSort"); + selectMap.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort"); + selectMap.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort"); + selectMap.put("siteStepSort", "t.siteStepSort AS siteStepSort"); + selectMap.put("hbrvcd", "t.hbrvcd AS hbrvcd"); + selectMap.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName"); + + if (CollUtil.isEmpty(selectFields)) { + return String.join(", ", selectMap.values()); + } + List actualColumns = new ArrayList<>(); + for (String selectField : selectFields) { + String column = selectMap.get(selectField); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(selectMap.values()); + } + return String.join(", ", actualColumns); + } + + private String buildRunDataOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY t.baseStepSort ASC, t.rvcdStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC, t.tm DESC"; + } + List orderItems = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapRunDataColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String direction = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orderItems.add(column + " " + direction + " NULLS LAST"); + } + if (orderItems.isEmpty()) { + return " ORDER BY t.baseStepSort ASC, t.rvcdStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC, t.tm DESC"; + } + return " ORDER BY " + String.join(", ", orderItems); + } + + private String buildRunDataGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapRunDataColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String direction = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + direction); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + + private String buildRunDataAggregateSql(String aggregate, String column, String field) { + String normalized = aggregate == null ? "" : aggregate.toLowerCase(); + return switch (normalized) { + case "sum", "min", "max", "avg", "count" -> + normalized.toUpperCase() + "(" + column + ") AS " + normalized + "_" + field; + default -> null; + }; } private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, @@ -278,6 +541,32 @@ public class VdMonitorServiceImpl implements VdMonitorService { return String.join(logic, conditions); } + private String buildRunDataFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildRunDataLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildRunDataFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + private String buildLeafCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { @@ -285,6 +574,33 @@ public class VdMonitorServiceImpl implements VdMonitorService { if (StrUtil.isBlank(column)) { return ""; } + return buildSimpleCondition(column, "vdParam", filter, paramMap, indexHolder); + } + + private String buildRunDataLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapRunDataColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildSimpleCondition(column, "vdRunParam", filter, paramMap, indexHolder, isRunDataDateField(filter)); + } + + private String buildSimpleCondition(String column, + String paramPrefix, + DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + return buildSimpleCondition(column, paramPrefix, filter, paramMap, indexHolder, false); + } + + private String buildSimpleCondition(String column, + String paramPrefix, + DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + boolean dateField) { String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); Object value = filter.getValue(); if ("isnull".equals(operator)) { @@ -300,7 +616,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { } List placeholders = new ArrayList<>(); for (Object item : values) { - String paramKey = "vdParam" + indexHolder[0]++; + String paramKey = paramPrefix + indexHolder[0]++; paramMap.put(paramKey, item); placeholders.add("#{map." + paramKey + "}"); } @@ -309,15 +625,16 @@ public class VdMonitorServiceImpl implements VdMonitorService { if (value == null) { return ""; } - String paramKey = "vdParam" + indexHolder[0]++; + String paramKey = paramPrefix + indexHolder[0]++; + String valueExpr = buildValueExpr(paramKey, dateField, value); return switch (operator) { case "eq" -> { paramMap.put(paramKey, value); - yield column + " = #{map." + paramKey + "}"; + yield column + " = " + valueExpr; } case "neq" -> { paramMap.put(paramKey, value); - yield column + " <> #{map." + paramKey + "}"; + yield column + " <> " + valueExpr; } case "contains" -> { paramMap.put(paramKey, "%" + value + "%"); @@ -331,10 +648,47 @@ public class VdMonitorServiceImpl implements VdMonitorService { paramMap.put(paramKey, "%" + value); yield column + " LIKE #{map." + paramKey + "}"; } + case "gt" -> { + paramMap.put(paramKey, value); + yield column + " > " + valueExpr; + } + case "gte" -> { + paramMap.put(paramKey, value); + yield column + " >= " + valueExpr; + } + case "lt" -> { + paramMap.put(paramKey, value); + yield column + " < " + valueExpr; + } + case "lte" -> { + paramMap.put(paramKey, value); + yield column + " <= " + valueExpr; + } default -> ""; }; } + private boolean isRunDataDateField(DataSourceRequest.FilterDescriptor filter) { + if (filter == null || StrUtil.isBlank(filter.getField())) { + return false; + } + if ("tm".equalsIgnoreCase(filter.getField())) { + return true; + } + return "date".equalsIgnoreCase(filter.getDataType()); + } + + private String buildValueExpr(String paramKey, boolean dateField, Object value) { + if (!dateField || value == null) { + return "#{map." + paramKey + "}"; + } + String text = String.valueOf(value).trim(); + if (text.length() <= 10) { + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD')"; + } + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')"; + } + private List normalizeValues(Object value) { List values = new ArrayList<>(); if (value instanceof List list) { @@ -384,6 +738,43 @@ public class VdMonitorServiceImpl implements VdMonitorService { }; } + private String mapRunDataColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "id" -> "t.id"; + case "stnm" -> "t.stnm"; + case "stcd" -> "t.stcd"; + case "tm" -> "t.tm"; + case "flnm" -> "t.flnm"; + case "imgPath" -> "t.imgPath"; + case "flpth" -> "t.flpth"; + case "deviceinfo" -> "t.deviceinfo"; + case "describe" -> "t.describe"; + case "fid" -> "t.fid"; + case "thumbnail" -> "t.thumbnail"; + case "rstcd" -> "t.rstcd"; + case "ennm" -> "t.ennm"; + case "fhstcd" -> "t.fhstcd"; + case "fhstnm" -> "t.fhstnm"; + case "stCode" -> "t.stCode"; + case "stName" -> "t.stName"; + case "baseId" -> "t.baseId"; + case "baseName" -> "t.baseName"; + case "sttpCode" -> "t.sttpCode"; + case "sttpName" -> "t.sttpName"; + case "titleName" -> "t.titleName"; + case "baseStepSort" -> "t.baseStepSort"; + case "rvcdStepSort" -> "t.rvcdStepSort"; + case "rstcdStepSort" -> "t.rstcdStepSort"; + case "siteStepSort" -> "t.siteStepSort"; + case "hbrvcd" -> "t.hbrvcd"; + case "hbrvcdName" -> "t.hbrvcdName"; + default -> null; + }; + } + private String buildOrderBySql(List groups) { if (CollUtil.isEmpty(groups)) { return " ORDER BY t.sttpCode ASC"; From 6fc80d7199bffd4ab82f38c5348eb72c3ec8445a Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 10:03:52 +0800 Subject: [PATCH 22/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9F=A5=E8=AF=A2=E8=A7=86=E9=A2=91=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vd/controller/VdMonitorController.java | 6 + .../qgc_env/vd/entity/vo/VdVmsstbprptVo.java | 18 +++ .../vd/service/impl/VdMonitorServiceImpl.java | 129 ++++++++++++------ 3 files changed, 110 insertions(+), 43 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java index 841e56e7..8dd04bf2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java @@ -29,6 +29,12 @@ public class VdMonitorController { return ResponseResult.successData(vdMonitorService.getVmsstbprptList(dataSourceRequest)); } + @PostMapping("/msstbprpt/GetKendoList") + @Operation(summary = "根据条件查询视频监控设备基础数据") + public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(vdMonitorService.getVmsstbprptList(dataSourceRequest)); + } + @GetMapping("/msstbprpt/getStcdInfo") @Operation(summary = "根据站码查询单条视频监控设备详情") public ResponseResult getStcdInfo(@RequestParam String stcd) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java index 620e7996..b4281f26 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/entity/vo/VdVmsstbprptVo.java @@ -46,6 +46,18 @@ public class VdVmsstbprptVo implements Serializable { @Schema(description = "所属电站名称") private String ennm; + @Schema(description = "所属栖息地编码") + private String fhstcd; + + @Schema(description = "所属栖息地名称") + private String fhstnm; + + @Schema(description = "所属测站编码") + private String stCode; + + @Schema(description = "所属测站名称") + private String stName; + @Schema(description = "基地编码") private String baseId; @@ -118,6 +130,12 @@ public class VdVmsstbprptVo implements Serializable { @Schema(description = "数据来源时间") private Date vlsrTm; + @Schema(description = "视频播放地址") + private String url; + + @Schema(description = "播放方式") + private Integer playWay; + @Schema(description = "基地排序") private Integer baseStepSort; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index 42f124ca..1748774d 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -58,6 +58,10 @@ public class VdMonitorServiceImpl implements VdMonitorService { .append("t.sttpFullPath AS sttpFullPath, ") .append("t.rstcd AS rstcd, ") .append("t.ennm AS ennm, ") + .append("t.fhstcd AS fhstcd, ") + .append("t.fhstnm AS fhstnm, ") + .append("t.stCode AS stCode, ") + .append("t.stName AS stName, ") .append("t.baseId AS baseId, ") .append("t.baseName AS baseName, ") .append("t.hbrvcd AS hbrvcd, ") @@ -85,6 +89,8 @@ public class VdMonitorServiceImpl implements VdMonitorService { .append("t.remark AS remark, ") .append("t.vlsr AS vlsr, ") .append("t.vlsrTm AS vlsrTm, ") + .append("t.url AS url, ") + .append("t.playWay AS playWay, ") .append("t.baseStepSort AS baseStepSort, ") .append("t.rstcdStepSort AS rstcdStepSort, ") .append("t.siteStepSort AS siteStepSort, ") @@ -149,45 +155,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); StringBuilder sql = new StringBuilder(); sql.append("SELECT ") - .append("t.stcd AS stcd, ") - .append("t.stnm AS stnm, ") - .append("t.mntp AS mntp, ") - .append("t.sttpCode AS sttpCode, ") - .append("t.sttpName AS sttpName, ") - .append("t.sttpFullPath AS sttpFullPath, ") - .append("t.rstcd AS rstcd, ") - .append("t.ennm AS ennm, ") - .append("t.baseId AS baseId, ") - .append("t.baseName AS baseName, ") - .append("t.hbrvcd AS hbrvcd, ") - .append("t.rvcd AS rvcd, ") - .append("t.addvcd AS addvcd, ") - .append("t.stlc AS stlc, ") - .append("t.lgtd AS lgtd, ") - .append("t.lttd AS lttd, ") - .append("t.elev AS elev, ") - .append("t.jcdt AS jcdt, ") - .append("t.wddt AS wddt, ") - .append("t.dtin AS dtin, ") - .append("CASE WHEN NVL(t.dtin, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName, ") - .append("t.usfl AS usfl, ") - .append("t.bldsttCcode AS bldsttCcode, ") - .append("CASE ") - .append("WHEN t.bldsttCcode IN (1, 10, 11) THEN '已建' ") - .append("WHEN t.bldsttCcode IN (2, 7, 8) THEN '在建' ") - .append("ELSE '未建/规划' END AS bldsttCcodeName, ") - .append("t.stindx AS stindx, ") - .append("t.introduce AS introduce, ") - .append("t.logo AS logo, ") - .append("t.inffile AS inffile, ") - .append("t.dtfrqcy AS dtfrqcy, ") - .append("t.remark AS remark, ") - .append("t.vlsr AS vlsr, ") - .append("t.vlsrTm AS vlsrTm, ") - .append("t.baseStepSort AS baseStepSort, ") - .append("t.rstcdStepSort AS rstcdStepSort, ") - .append("t.siteStepSort AS siteStepSort, ") - .append("t.sourceTable AS sourceTable ") + .append(buildVmsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) .append("FROM (") .append(buildVmsstbprptViewSql()) .append(") t WHERE 1 = 1 "); @@ -205,6 +173,67 @@ public class VdMonitorServiceImpl implements VdMonitorService { return result; } + private String buildVmsstbprptDetailSelectSql(List selectFields) { + Map selectMap = new LinkedHashMap<>(); + selectMap.put("stcd", "t.stcd AS stcd"); + selectMap.put("stnm", "t.stnm AS stnm"); + selectMap.put("mntp", "t.mntp AS mntp"); + selectMap.put("sttpCode", "t.sttpCode AS sttpCode"); + selectMap.put("sttpName", "t.sttpName AS sttpName"); + selectMap.put("sttpFullPath", "t.sttpFullPath AS sttpFullPath"); + selectMap.put("rstcd", "t.rstcd AS rstcd"); + selectMap.put("ennm", "t.ennm AS ennm"); + selectMap.put("fhstcd", "t.fhstcd AS fhstcd"); + selectMap.put("fhstnm", "t.fhstnm AS fhstnm"); + selectMap.put("stCode", "t.stCode AS stCode"); + selectMap.put("stName", "t.stName AS stName"); + selectMap.put("baseId", "t.baseId AS baseId"); + selectMap.put("baseName", "t.baseName AS baseName"); + selectMap.put("hbrvcd", "t.hbrvcd AS hbrvcd"); + selectMap.put("rvcd", "t.rvcd AS rvcd"); + selectMap.put("addvcd", "t.addvcd AS addvcd"); + selectMap.put("stlc", "t.stlc AS stlc"); + selectMap.put("lgtd", "t.lgtd AS lgtd"); + selectMap.put("lttd", "t.lttd AS lttd"); + selectMap.put("elev", "t.elev AS elev"); + selectMap.put("jcdt", "t.jcdt AS jcdt"); + selectMap.put("wddt", "t.wddt AS wddt"); + selectMap.put("dtin", "t.dtin AS dtin"); + selectMap.put("dtinName", "CASE WHEN NVL(t.dtin, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName"); + selectMap.put("usfl", "t.usfl AS usfl"); + selectMap.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode"); + selectMap.put("bldsttCcodeName", "CASE WHEN t.bldsttCcode IN (1, 10, 11) THEN '已建' WHEN t.bldsttCcode IN (2, 7, 8) THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName"); + selectMap.put("stindx", "t.stindx AS stindx"); + selectMap.put("introduce", "t.introduce AS introduce"); + selectMap.put("logo", "t.logo AS logo"); + selectMap.put("inffile", "t.inffile AS inffile"); + selectMap.put("dtfrqcy", "t.dtfrqcy AS dtfrqcy"); + selectMap.put("remark", "t.remark AS remark"); + selectMap.put("vlsr", "t.vlsr AS vlsr"); + selectMap.put("vlsrTm", "t.vlsrTm AS vlsrTm"); + selectMap.put("url", "t.url AS url"); + selectMap.put("playWay", "t.playWay AS playWay"); + selectMap.put("baseStepSort", "t.baseStepSort AS baseStepSort"); + selectMap.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort"); + selectMap.put("siteStepSort", "t.siteStepSort AS siteStepSort"); + selectMap.put("sourceTable", "t.sourceTable AS sourceTable"); + + if (CollUtil.isEmpty(selectFields)) { + return String.join(", ", selectMap.values()) + " "; + } + List actualColumns = new ArrayList<>(); + for (String selectField : selectFields) { + String column = selectMap.get(selectField); + if (StrUtil.isNotBlank(column)) { + actualColumns.add(column); + } + } + if (actualColumns.isEmpty()) { + actualColumns.addAll(selectMap.values()); + } + return String.join(", ", actualColumns) + " "; + } + private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -310,6 +339,10 @@ public class VdMonitorServiceImpl implements VdMonitorService { "sttp.FULL_PATH AS sttpFullPath, " + "src.RSTCD AS rstcd, " + "eng.ENNM AS ennm, " + + "src.FHSTCD AS fhstcd, " + + "fh.STNM AS fhstnm, " + + "src.CSTCD AS stCode, " + + "cst.STNM AS stName, " + "NVL(eng.BASE_ID, src.BASE_ID) AS baseId, " + "hb.BASENAME AS baseName, " + "NVL(eng.HBRVCD, src.HBRVCD) AS hbrvcd, " + @@ -332,6 +365,8 @@ public class VdMonitorServiceImpl implements VdMonitorService { "src.REMARK AS remark, " + "src.VLSR AS vlsr, " + "src.VLSR_TM AS vlsrTm, " + + "src.URL AS url, " + + "CASE WHEN src.URL IS NULL THEN NULL WHEN INSTR(src.URL, 'm3u8') > 0 THEN 1 ELSE 0 END AS playWay, " + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + "NVL(src.ORDER_INDEX, 999999) AS siteStepSort, " + @@ -341,8 +376,10 @@ public class VdMonitorServiceImpl implements VdMonitorService { ") src " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, src.BASE_ID) AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = src.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + + "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = src.CSTCD " + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 "; + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; } private String buildVdDeviceBaseSql() { @@ -350,14 +387,14 @@ public class VdMonitorServiceImpl implements VdMonitorService { " vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " + " vd.HBRVCD, vd.RVCD, vd.ADDVCD, vd.CSTCD, vd.FHSTCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " + " CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " + - " vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " + + " vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, vd.URL AS URL, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " + " 'SD_VDINFO_B' AS SOURCE_TABLE " + "FROM SD_VDINFO_B vd WHERE vd.STTP = 'VD_FP' " + "UNION ALL " + "SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " + " sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " + " sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, CAST(NULL AS VARCHAR2(36)) AS CSTCD, CAST(NULL AS VARCHAR2(36)) AS FHSTCD, " + - " sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, sonar.ORDER_INDEX, " + + " sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, CAST(NULL AS VARCHAR2(512)) AS URL, sonar.ORDER_INDEX, " + " 'SD_SONAR_B_H' AS SOURCE_TABLE " + "FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') "; } @@ -403,7 +440,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 " + "WHERE NVL(run.IS_DELETED, 0) = 0 "; } @@ -725,6 +762,10 @@ public class VdMonitorServiceImpl implements VdMonitorService { case "stnm" -> "t.stnm"; case "rstcd" -> "t.rstcd"; case "ennm" -> "t.ennm"; + case "fhstcd" -> "t.fhstcd"; + case "fhstnm" -> "t.fhstnm"; + case "stCode" -> "t.stCode"; + case "stName" -> "t.stName"; case "baseId" -> "t.baseId"; case "baseName" -> "t.baseName"; case "hbrvcd" -> "t.hbrvcd"; @@ -733,6 +774,8 @@ public class VdMonitorServiceImpl implements VdMonitorService { case "dtin" -> "t.dtin"; case "usfl" -> "t.usfl"; case "bldsttCcode" -> "t.bldsttCcode"; + case "url" -> "t.url"; + case "playWay" -> "t.playWay"; case "sourceTable" -> "t.sourceTable"; default -> null; }; From de347f8f093fcba00789d5fd4f6d1aa448606701 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 10:24:52 +0800 Subject: [PATCH 23/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E7=AB=99=E6=9C=80=E6=96=B0=E4=B8=80=E6=9D=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vd/controller/VdMonitorController.java | 6 ++ .../qgc_env/vd/service/VdMonitorService.java | 2 + .../vd/service/impl/VdMonitorServiceImpl.java | 91 ++++++++++++++++++- 3 files changed, 95 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java index 8dd04bf2..a341cb51 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java @@ -41,6 +41,12 @@ public class VdMonitorController { return ResponseResult.successData(vdMonitorService.getStcdInfo(stcd)); } + @PostMapping("/GetKendoListCust") + @Operation(summary = "查询视频站最新一条数据") + public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(vdMonitorService.getKendoListCust(dataSourceRequest)); + } + @PostMapping("/runData/GetKendoListCust") @Operation(summary = "查询视频监控运行数据") public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java index 59730582..4fa8d933 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java @@ -11,5 +11,7 @@ public interface VdMonitorService { VdVmsstbprptVo getStcdInfo(String stcd); + DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getRunDataKendoListCust(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index 1748774d..220eb699 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -109,6 +109,15 @@ public class VdMonitorServiceImpl implements VdMonitorService { return list.get(0); } + @Override + public DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryLatestRunDataDetailList(dataSourceRequest, loadOptions); + } + return queryLatestRunDataGroupList(dataSourceRequest, loadOptions); + } + @Override public DataSourceResult getRunDataKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -236,11 +245,22 @@ public class VdMonitorServiceImpl implements VdMonitorService { private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { + return queryRunDataDetailList(dataSourceRequest, loadOptions, buildRunDataCoreSql()); + } + + private DataSourceResult queryLatestRunDataDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + return queryRunDataDetailList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql()); + } + + private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions, + String coreSql) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ") .append(buildRunDataSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) .append(" FROM (") - .append(buildRunDataCoreSql()) + .append(coreSql) .append(") t WHERE 1 = 1 "); Map paramMap = new HashMap<>(); @@ -261,6 +281,17 @@ public class VdMonitorServiceImpl implements VdMonitorService { private DataSourceResult queryRunDataGroupList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { + return queryRunDataGroupList(dataSourceRequest, loadOptions, buildRunDataCoreSql()); + } + + private DataSourceResult queryLatestRunDataGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + return queryRunDataGroupList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql()); + } + + private DataSourceResult queryRunDataGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions, + String coreSql) { List groups = dataSourceRequest.getGroup(); GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); List selectItems = new ArrayList<>(); @@ -293,7 +324,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { sql.append("SELECT ") .append(String.join(", ", selectItems)) .append(" FROM (") - .append(buildRunDataCoreSql()) + .append(coreSql) .append(") t WHERE 1 = 1 "); Map paramMap = new HashMap<>(); @@ -379,7 +410,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = src.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = src.CSTCD " + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 "; } private String buildVdDeviceBaseSql() { @@ -440,10 +471,62 @@ public class VdMonitorServiceImpl implements VdMonitorService { "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + "WHERE NVL(run.IS_DELETED, 0) = 0 "; } + private String buildLatestRunDataCoreSql() { + return "SELECT " + + "run.ID AS id, " + + "run.STCD AS stcd, " + + "run.TM AS tm, " + + "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " + + "run.IMG_PATH AS imgPath, " + + "run.FLPTH AS flpth, " + + "run.DEVICEINFO AS deviceinfo, " + + "run.DESCRIBE AS describe, " + + "run.FID AS fid, " + + "run.THUMBNAIL AS thumbnail, " + + "base.RSTCD AS rstcd, " + + "base.STNM AS stnm, " + + "eng.ENNM AS ennm, " + + "base.FHSTCD AS fhstcd, " + + "fh.STNM AS fhstnm, " + + "base.CSTCD AS stCode, " + + "cst.STNM AS stName, " + + "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " + + "hb.BASENAME AS baseName, " + + "base.STTP AS sttpCode, " + + "sttp.STTP_NAME AS sttpName, " + + "base.STNM AS titleName, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + + "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " + + "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName " + + "FROM ( " + + "SELECT detail.ID, detail.STCD, detail.TM, detail.FLNM, detail.IMG_PATH, detail.FLPTH, detail.DEVICEINFO, " + + "detail.DESCRIBE, detail.FID, detail.THUMBNAIL " + + "FROM SD_VDINFO_R detail " + + "INNER JOIN ( " + + "SELECT STCD, MAX(TM) AS TM FROM SD_VDINFO_R WHERE NVL(IS_DELETED, 0) = 0 GROUP BY STCD " + + ") latest ON detail.STCD = latest.STCD AND detail.TM = latest.TM " + + "WHERE NVL(detail.IS_DELETED, 0) = 0 " + + ") run " + + "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + + " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " + + " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + + "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; + } + private String buildStationBaseSql() { return "SELECT river.STCD AS STCD, river.STNM AS STNM FROM SD_RIVER_B_H river WHERE NVL(river.IS_DELETED, 0) = 0 " + "UNION ALL " + From b8163ce312438725475d0485b60804cf3957d619 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 13:57:01 +0800 Subject: [PATCH 24/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E8=BE=BE=E6=A0=87=E7=8E=87=E5=8C=BA=E9=97=B4=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 19 +- .../eq/entity/vo/EngEqStaticIntervalVo.java | 21 ++ .../qgc_eng/eq/entity/vo/QgcQecStaticVo.java | 19 + .../qgc_eng/eq/entity/vo/QgcQecVo.java | 29 ++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 329 ++++++++++++++++++ 6 files changed, 418 insertions(+), 2 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqStaticIntervalVo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecStaticVo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index d5486ca4..2ff956d5 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -1,8 +1,11 @@ package com.yfd.platform.qgc_eng.eq.controller; +import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; +import com.yfd.platform.utils.QgcQueryWrapperUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; @@ -13,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/eq/data") +@RequestMapping("/eq") @Tag(name = "电站实时数据查询") @Validated public class EngEqDataController { @@ -21,9 +24,21 @@ public class EngEqDataController { @Resource private EngEqDataService engEqDataService; - @PostMapping("/GetKendoListCust") + @PostMapping("/data/GetKendoListCust") @Operation(summary = "生态流量沿程变化-小时") public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(engEqDataService.getKendoListCust(dataSourceRequest)); } + + @PostMapping("/interval/qgc/getQgcStaticData") + @Operation(summary = "生态流量达标率区间范围统计(一级页面)") + public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String type = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "type"); + if (!"hour".equals(type) && !"day".equals(type)) { + return ResponseResult.error("请选择生态流量达标率统计类型(小时还是天统计)"); + } + QgcQecStaticVo result = engEqDataService.getQgcStaticData(dataSourceRequest, type); + return result == null ? ResponseResult.success() : ResponseResult.successData(result); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqStaticIntervalVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqStaticIntervalVo.java new file mode 100644 index 00000000..8c66b62f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqStaticIntervalVo.java @@ -0,0 +1,21 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "生态流量区间统计中间结果") +public class EngEqStaticIntervalVo { + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "环保部区间") + private String qecInterval; + + @Schema(description = "水利部区间") + private String mwrInterval; + + @Schema(description = "多年平均区间") + private String avqInterval; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecStaticVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecStaticVo.java new file mode 100644 index 00000000..971349d2 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecStaticVo.java @@ -0,0 +1,19 @@ +package com.yfd.platform.qgc_eng.eq.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 QgcQecStaticVo { + + @Schema(description = "参与统计电站总数") + private Integer engCnt; + + @Schema(description = "统计明细") + private List list; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecVo.java new file mode 100644 index 00000000..0ef8d66b --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/QgcQecVo.java @@ -0,0 +1,29 @@ +package com.yfd.platform.qgc_eng.eq.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 QgcQecVo { + + @Schema(description = "统计类型") + private Integer type; + + @Schema(description = "区间数量") + private Integer qecCnt; + + @Schema(description = "有要求的电站总数") + private Integer qecTCnt; + + @Schema(description = "区间编码") + private String code; + + @Schema(description = "区间描述") + private String desc; + + @Schema(description = "统计类型名称") + private String typeName; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index 58dcf45f..efa88546 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -2,8 +2,11 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; public interface EngEqDataService { DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); + + QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 5bc426e8..bcc872ac 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -9,7 +9,12 @@ 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.common.enums.QecIntervalEnum; +import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; @@ -21,6 +26,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; @Service public class EngEqDataServiceImpl implements EngEqDataService { @@ -37,6 +43,71 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryGroupList(dataSourceRequest, loadOptions); } + @Override + public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { + List intervalList = queryStaticIntervals(dataSourceRequest, type); + if (CollUtil.isEmpty(intervalList)) { + return null; + } + long qecCnt = intervalList.stream() + .filter(it -> Objects.equals(it.getQecInterval(), QecIntervalEnum.QEC_STLL_1_DY95.getCode())) + .count(); + long qecTCnt = intervalList.stream() + .filter(it -> !Objects.equals(it.getQecInterval(), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())) + .count(); + long mwrCnt = intervalList.stream() + .filter(it -> Objects.equals(it.getMwrInterval(), QecIntervalEnum.QEC_STLL_1_DY95.getCode())) + .count(); + long mwrTCnt = intervalList.stream() + .filter(it -> !Objects.equals(it.getMwrInterval(), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())) + .count(); + long avqCnt = intervalList.stream() + .filter(it -> Objects.equals(it.getAvqInterval(), QecIntervalEnum.QEC_STLL_1_DY95.getCode())) + .count(); + long avqTCnt = intervalList.stream() + .filter(it -> !Objects.equals(it.getAvqInterval(), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())) + .count(); + long noCnt = intervalList.stream() + .filter(it -> Objects.equals(it.getQecInterval(), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) + && Objects.equals(it.getMwrInterval(), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) + && Objects.equals(it.getAvqInterval(), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())) + .count(); + + List list = new ArrayList<>(); + list.add(new QgcQecVo() + .setType(ShowEnum.Q.getCode()) + .setTypeName(ShowEnum.Q.getDesc()) + .setQecCnt(Math.toIntExact(qecCnt)) + .setQecTCnt(Math.toIntExact(qecTCnt)) + .setCode(QecIntervalEnum.QEC_STLL_1_DY95.getCode()) + .setDesc(ShowEnum.Q.getDesc() + "_" + QecIntervalEnum.QEC_STLL_1_DY95.getDesc())); + list.add(new QgcQecVo() + .setType(ShowEnum.M.getCode()) + .setTypeName(ShowEnum.M.getDesc()) + .setQecCnt(Math.toIntExact(mwrCnt)) + .setQecTCnt(Math.toIntExact(mwrTCnt)) + .setCode(QecIntervalEnum.QEC_STLL_1_DY95.getCode()) + .setDesc(ShowEnum.M.getDesc() + "_" + QecIntervalEnum.QEC_STLL_1_DY95.getDesc())); + list.add(new QgcQecVo() + .setType(ShowEnum.A.getCode()) + .setTypeName(ShowEnum.A.getDesc()) + .setQecCnt(Math.toIntExact(avqCnt)) + .setQecTCnt(Math.toIntExact(avqTCnt)) + .setCode(QecIntervalEnum.QEC_STLL_1_DY95.getCode()) + .setDesc(ShowEnum.A.getDesc() + "_" + QecIntervalEnum.QEC_STLL_1_DY95.getDesc())); + list.add(new QgcQecVo() + .setType(ShowEnum.N.getCode()) + .setTypeName(ShowEnum.N.getDesc()) + .setQecCnt(Math.toIntExact(noCnt)) + .setQecTCnt(Math.toIntExact(noCnt)) + .setCode(QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) + .setDesc(QecIntervalEnum.QEC_STLL_6_NOEQMN.getDesc())); + + return new QgcQecStaticVo() + .setEngCnt(intervalList.size()) + .setList(list); + } + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -63,6 +134,44 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + private List queryStaticIntervals(DataSourceRequest dataSourceRequest, String type) { + StringBuilder sql = new StringBuilder(); + Map paramMap = new HashMap<>(); + sql.append("SELECT ") + .append("eng.STCD AS stcd, ") + .append(buildStaticIntervalSql("agg.QEC_RATE", "agg.QR", "qecNoRule.STCD", false)) + .append(" AS qecInterval, ") + .append(buildStaticIntervalSql("agg.MWR_RATE", "agg.MQR", "mwrNoRule.STCD", false)) + .append(" AS mwrInterval, ") + .append(buildStaticIntervalSql("agg.AVQ_RATE", "agg.AQR", "eng.AVQ", true)) + .append(" AS avqInterval ") + .append("FROM SD_ENGINFO_B_H eng ") + .append("LEFT JOIN (") + .append(buildStaticAggregateSql(type, dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0})) + .append(") agg ON agg.STCD = eng.STCD ") + .append("LEFT JOIN (") + .append(buildStaticRuleSql("EQMN")) + .append(") qecNoRule ON qecNoRule.STCD = eng.STCD ") + .append("LEFT JOIN (") + .append(buildStaticRuleSql("EQMNMWR")) + .append(") mwrNoRule ON mwrNoRule.STCD = eng.STCD ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 ") + .append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ") + .append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ") + .append("WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(eng.DTIN, 0) = 1 ") + .append(" AND NVL(eng.BLDSTT_CODE, 0) = 2 ") + .append(" AND EXISTS (SELECT 1 FROM SD_QEC_R valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0) "); + + String stationFilter = buildStaticStationFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(stationFilter)) { + sql.append(" AND ").append(stationFilter).append(" "); + } + return microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, EngEqStaticIntervalVo.class); + } + private DataSourceResult queryGroupList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -271,6 +380,85 @@ public class EngEqDataServiceImpl implements EngEqDataService { }; } + private String buildStaticAggregateSql(String type, + DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String tableName = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R"; + String timeFilter = buildStaticTimeFilterCondition(filter, paramMap, indexHolder); + StringBuilder sql = new StringBuilder(); + sql.append("SELECT data.STCD, ") + .append("(CASE WHEN SUM(CASE WHEN data.SFDB IN (0, 1) THEN 1 ELSE 0 END) = 0 THEN NULL ") + .append("ELSE (SUM(CASE WHEN data.SFDB = 1 THEN 1 ELSE 0 END) / SUM(CASE WHEN data.SFDB IN (0, 1) THEN 1 ELSE 0 END)) * 100 END) AS QEC_RATE, ") + .append("(CASE WHEN SUM(CASE WHEN data.MWR_SFDB IN (0, 1) THEN 1 ELSE 0 END) = 0 THEN NULL ") + .append("ELSE (SUM(CASE WHEN data.MWR_SFDB = 1 THEN 1 ELSE 0 END) / SUM(CASE WHEN data.MWR_SFDB IN (0, 1) THEN 1 ELSE 0 END)) * 100 END) AS MWR_RATE, ") + .append("(CASE WHEN SUM(CASE WHEN data.AVQ_SFDB IN (0, 1) THEN 1 ELSE 0 END) = 0 THEN NULL ") + .append("ELSE (SUM(CASE WHEN data.AVQ_SFDB = 1 THEN 1 ELSE 0 END) / SUM(CASE WHEN data.AVQ_SFDB IN (0, 1) THEN 1 ELSE 0 END)) * 100 END) AS AVQ_RATE, ") + .append("CASE ") + .append("WHEN COUNT(1) = SUM(CASE WHEN data.SFDB = 2 THEN 1 ELSE 0 END) THEN -1 ") + .append("WHEN COUNT(1) = SUM(CASE WHEN data.SFDB = 3 THEN 1 ELSE 0 END) THEN -2 ") + .append("WHEN SUM(CASE WHEN data.SFDB = 2 THEN 1 ELSE 0 END) > 0 ") + .append(" AND COUNT(1) = SUM(CASE WHEN data.SFDB = 2 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.SFDB = 3 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.SFDB IS NULL THEN 1 ELSE 0 END) THEN -1 ") + .append("WHEN SUM(CASE WHEN data.SFDB = 2 THEN 1 ELSE 0 END) = 0 ") + .append(" AND COUNT(1) = SUM(CASE WHEN data.SFDB = 2 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.SFDB = 3 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.SFDB IS NULL THEN 1 ELSE 0 END) THEN -2 ") + .append("END AS QR, ") + .append("CASE ") + .append("WHEN COUNT(1) = SUM(CASE WHEN data.MWR_SFDB = 2 THEN 1 ELSE 0 END) THEN -1 ") + .append("WHEN COUNT(1) = SUM(CASE WHEN data.MWR_SFDB = 3 THEN 1 ELSE 0 END) THEN -2 ") + .append("WHEN SUM(CASE WHEN data.MWR_SFDB = 2 THEN 1 ELSE 0 END) > 0 ") + .append(" AND COUNT(1) = SUM(CASE WHEN data.MWR_SFDB = 2 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.MWR_SFDB = 3 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.MWR_SFDB IS NULL THEN 1 ELSE 0 END) THEN -1 ") + .append("WHEN SUM(CASE WHEN data.MWR_SFDB = 2 THEN 1 ELSE 0 END) = 0 ") + .append(" AND COUNT(1) = SUM(CASE WHEN data.MWR_SFDB = 2 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.MWR_SFDB = 3 THEN 1 ELSE 0 END) + SUM(CASE WHEN data.MWR_SFDB IS NULL THEN 1 ELSE 0 END) THEN -2 ") + .append("END AS MQR, ") + .append("CASE ") + .append("WHEN COUNT(1) = SUM(CASE WHEN data.AVQ_SFDB = 2 THEN 1 ELSE 0 END) THEN -1 ") + .append("WHEN COUNT(1) = SUM(CASE WHEN data.AVQ_SFDB = 3 THEN 1 ELSE 0 END) THEN -2 ") + .append("END AS AQR ") + .append("FROM ").append(tableName).append(" data WHERE NVL(data.IS_DELETED, 0) = 0 "); + if (StrUtil.isNotBlank(timeFilter)) { + sql.append(" AND ").append(timeFilter).append(" "); + } + sql.append("GROUP BY data.STCD"); + return sql.toString(); + } + + private String buildStaticRuleSql(String ruleType) { + return "SELECT DISTINCT engRule.STCD " + + "FROM SD_ENGINFO_B_H engRule " + + "WHERE NVL(engRule.IS_DELETED, 0) = 0 " + + " AND NOT EXISTS ( " + + " SELECT 1 FROM MS_WARN_RULE_B rule " + + " INNER JOIN MS_WARN_RULE_DETAIL_B detail ON detail.RULE_ID = rule.ID AND NVL(detail.IS_DELETED, 0) = 0 " + + " WHERE NVL(rule.IS_DELETED, 0) = 0 AND rule.RULE_TYPE = '" + ruleType + "' AND rule.STCD = engRule.STCD " + + " )"; + } + + private String buildStaticIntervalSql(String rateColumn, + String qrColumn, + String ruleColumn, + boolean avqMode) { + if (avqMode) { + return "CASE " + + "WHEN " + ruleColumn + " IS NOT NULL AND " + rateColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + + "WHEN " + ruleColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN " + rateColumn + " >= 95 THEN '" + QecIntervalEnum.QEC_STLL_1_DY95.getCode() + "' " + + "WHEN " + rateColumn + " >= 90 AND 95 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_2_90AND95.getCode() + "' " + + "WHEN " + rateColumn + " >= 80 AND 90 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_3_80AND90.getCode() + "' " + + "WHEN 80 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_4_XY80.getCode() + "' " + + "END"; + } + return "CASE " + + "WHEN " + rateColumn + " IS NULL AND " + ruleColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + + "WHEN " + rateColumn + " IS NULL AND " + ruleColumn + " IS NOT NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN " + qrColumn + " = -2 THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN " + qrColumn + " = -1 THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + + "WHEN " + rateColumn + " >= 95 THEN '" + QecIntervalEnum.QEC_STLL_1_DY95.getCode() + "' " + + "WHEN " + rateColumn + " >= 90 AND 95 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_2_90AND95.getCode() + "' " + + "WHEN " + rateColumn + " >= 80 AND 90 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_3_80AND90.getCode() + "' " + + "WHEN 80 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_4_XY80.getCode() + "' " + + "END"; + } + private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { @@ -376,6 +564,126 @@ public class EngEqDataServiceImpl implements EngEqDataService { }; } + private String buildStaticStationFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildStaticStationLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildStaticStationFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildStaticStationLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapStaticStationColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildGenericCondition(column, filter, paramMap, indexHolder, false); + } + + private String buildStaticTimeFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + if (!"tm".equalsIgnoreCase(filter.getField())) { + return ""; + } + return buildGenericCondition("data.TM", filter, paramMap, indexHolder, true); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildStaticTimeFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildGenericCondition(String column, + DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + boolean dateField) { + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "staticParam" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add(buildEqValueExpr(key, dateField, item)); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if (value == null) { + return ""; + } + String key = "staticParam" + indexHolder[0]++; + paramMap.put(key, value); + String valueExpr = buildEqValueExpr(key, dateField, value); + return switch (operator) { + case "eq" -> column + " = " + valueExpr; + case "neq" -> column + " <> " + valueExpr; + case "contains" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "startswith" -> { + paramMap.put(key, value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "endswith" -> { + paramMap.put(key, "%" + value); + yield column + " LIKE #{map." + key + "}"; + } + case "gt" -> column + " > " + valueExpr; + case "gte" -> column + " >= " + valueExpr; + case "lt" -> column + " < " + valueExpr; + case "lte" -> column + " <= " + valueExpr; + default -> ""; + }; + } + private boolean isEqDateField(String field) { return "tm".equalsIgnoreCase(field); } @@ -418,6 +726,27 @@ public class EngEqDataServiceImpl implements EngEqDataService { return values; } + private String mapStaticStationColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "type", "tm" -> null; + case "baseName" -> "hb.BASENAME"; + case "stnm", "ennm" -> "eng.ENNM"; + case "baseId" -> "eng.BASE_ID"; + case "rvcdName" -> "rv.RVNM"; + case "addvcdName" -> "addv.ADDVNM"; + case "stcd" -> "eng.STCD"; + case "hbrvcd" -> "eng.HBRVCD"; + case "hbrvcdName" -> "hbrv.HBRVNM"; + case "hycd" -> "eng.HYCD"; + case "rvcd" -> "eng.RVCD"; + case "bldsttCcode" -> "eng.BLDSTT_CODE"; + default -> null; + }; + } + private String mapEqColumn(String field) { if (StrUtil.isBlank(field)) { return null; From 95b6e1f34124b36684a277bea9fb8a0d5c16644f Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 14:49:07 +0800 Subject: [PATCH 25/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E5=9F=BA?= =?UTF-8?q?=E5=9C=B0/=E5=9F=BA=E5=9C=B0=E6=B5=81=E5=9F=9F=E6=A0=91?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 6 + .../platform/qgc_eng/eq/entity/vo/WbsbVo.java | 60 +++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 374 ++++++++++++++++++ 4 files changed, 443 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/WbsbVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 2ff956d5..c4a3394b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -41,4 +41,10 @@ public class EngEqDataController { QgcQecStaticVo result = engEqDataService.getQgcStaticData(dataSourceRequest, type); return result == null ? ResponseResult.success() : ResponseResult.successData(result); } + + @PostMapping("/wbsb/GetKendoList") + @Operation(summary = "查询基地/基地流域树数据") + public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getWbsbList(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/WbsbVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/WbsbVo.java new file mode 100644 index 00000000..a3bd3895 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/WbsbVo.java @@ -0,0 +1,60 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "基地/基地流域树节点") +public class WbsbVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private String id; + private String recordUser; + private Date recordTime; + private Date modifyTime; + private String displayRecordUser; + private String isolateType; + private String wbsType; + private String wbsCode; + private String wbsName; + private String wbsSname; + private String wbsNameEn; + private String wbsSnameEn; + private Integer enable; + private String description; + private String parentId; + private String parentCode; + private Integer treeLevel; + private Integer hasChildren; + private String objId; + private String topWbsType; + private String fullPath; + private Integer internal; + private BigDecimal lgtd; + private BigDecimal lttd; + private BigDecimal area; + private BigDecimal perimeter; + private String synopsis; + private String introduce; + private String logo; + private String inffile; + private Integer orderIndex; + private String filterContent; + private String departmentId; + private String systemId; + private String platformId; + private String reachWwqtg; + private BigDecimal maxElev; + private BigDecimal minElev; + private String datTp; + private String rvAg; + private Integer ifInnRv; + private String showControl; + private String stcd; + private String displayDepartment; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index efa88546..ecb95877 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -3,10 +3,13 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; public interface EngEqDataService { DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); + + DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index bcc872ac..18636671 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -15,6 +15,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; @@ -108,6 +109,15 @@ public class EngEqDataServiceImpl implements EngEqDataService { .setList(list); } + @Override + public DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryWbsbDetailList(dataSourceRequest, loadOptions); + } + return queryWbsbGroupList(dataSourceRequest, loadOptions); + } + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -134,6 +144,101 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + private DataSourceResult queryWbsbDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildWbsbDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(buildWbsbViewSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildWbsbFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildWbsbDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WbsbVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryWbsbGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapWbsbColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapWbsbColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.WBSCODE AS WBSCODE"); + selectItems.add("COUNT(*) AS COUNT_WBSCODE"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(buildWbsbViewSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildWbsbFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapWbsbColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildWbsbGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal((long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private List queryStaticIntervals(DataSourceRequest dataSourceRequest, String type) { StringBuilder sql = new StringBuilder(); Map paramMap = new HashMap<>(); @@ -459,6 +564,247 @@ public class EngEqDataServiceImpl implements EngEqDataService { "END"; } + private String buildWbsbViewSql() { + return "SELECT " + + "t.BASEID AS id, " + + "t.RECORD_USER AS recordUser, " + + "t.RECORD_TIME AS recordTime, " + + "t.MODIFY_TIME AS modifyTime, " + + "CAST(NULL AS VARCHAR2(36)) AS displayRecordUser, " + + "CAST(NULL AS VARCHAR2(36)) AS isolateType, " + + "'PSB' AS wbsType, " + + "t.BASEID AS wbsCode, " + + "t.BASENAME AS wbsName, " + + "t.SHORTNAME AS wbsSname, " + + "CAST(NULL AS VARCHAR2(255)) AS wbsNameEn, " + + "CAST(NULL AS VARCHAR2(255)) AS wbsSnameEn, " + + "t.ENABLED AS enable, " + + "t.RMK AS description, " + + "CASE WHEN t.PBASEID = '0' THEN NULL ELSE t.PBASEID END AS parentId, " + + "CASE WHEN t.PBASEID = '0' THEN NULL ELSE t.PBASEID END AS parentCode, " + + "t.GRD AS treeLevel, " + + "CASE WHEN EXISTS (SELECT 1 FROM SD_HYDROBASE c WHERE c.PBASEID = t.BASEID AND NVL(c.IS_DELETED, 0) = 0) THEN 1 ELSE 0 END AS hasChildren, " + + "CAST(NULL AS VARCHAR2(36)) AS objId, " + + "CAST(NULL AS VARCHAR2(20)) AS topWbsType, " + + "t.PATH AS fullPath, " + + "1 AS internal, " + + "CAST(NULL AS NUMBER(10,6)) AS lgtd, " + + "CAST(NULL AS NUMBER(10,6)) AS lttd, " + + "CAST(NULL AS NUMBER(18,6)) AS area, " + + "CAST(NULL AS NUMBER(18,6)) AS perimeter, " + + "CAST(NULL AS VARCHAR2(4000)) AS synopsis, " + + "t.DES AS introduce, " + + "CAST(NULL AS VARCHAR2(255)) AS logo, " + + "CAST(NULL AS VARCHAR2(255)) AS inffile, " + + "t.ORDER_INDEX AS orderIndex, " + + "CAST(NULL AS VARCHAR2(255)) AS filterContent, " + + "CAST(NULL AS VARCHAR2(36)) AS departmentId, " + + "CAST(NULL AS VARCHAR2(36)) AS systemId, " + + "CAST(NULL AS VARCHAR2(36)) AS platformId, " + + "CAST(NULL AS VARCHAR2(50)) AS reachWwqtg, " + + "CAST(NULL AS NUMBER(10,6)) AS maxElev, " + + "CAST(NULL AS NUMBER(10,6)) AS minElev, " + + "CAST(NULL AS VARCHAR2(50)) AS datTp, " + + "CAST(NULL AS VARCHAR2(50)) AS rvAg, " + + "CAST(NULL AS NUMBER(1,0)) AS ifInnRv, " + + "CAST(NULL AS VARCHAR2(2000)) AS showControl, " + + "CAST(NULL AS VARCHAR2(36)) AS stcd, " + + "CAST(NULL AS VARCHAR2(255)) AS displayDepartment " + + "FROM SD_HYDROBASE t WHERE NVL(t.IS_DELETED, 0) = 0 " + + "UNION ALL " + + "SELECT " + + "t.HBRVCD || '_' || t.BASEID AS id, " + + "t.RECORD_USER AS recordUser, " + + "t.RECORD_TIME AS recordTime, " + + "t.MODIFY_TIME AS modifyTime, " + + "CAST(NULL AS VARCHAR2(36)) AS displayRecordUser, " + + "CAST(NULL AS VARCHAR2(36)) AS isolateType, " + + "'PSB_RVCD' AS wbsType, " + + "t.HBRVCD AS wbsCode, " + + "t.HBRVNM AS wbsName, " + + "CAST(NULL AS VARCHAR2(255)) AS wbsSname, " + + "CAST(NULL AS VARCHAR2(255)) AS wbsNameEn, " + + "CAST(NULL AS VARCHAR2(255)) AS wbsSnameEn, " + + "t.ENABLED AS enable, " + + "t.REMARK AS description, " + + "CASE WHEN t.PHBRVCD IS NULL OR t.PHBRVCD = '0' THEN NULL ELSE t.PHBRVCD || '_' || t.BASEID END AS parentId, " + + "CASE WHEN t.PHBRVCD IS NULL OR t.PHBRVCD = '0' THEN NULL ELSE t.PHBRVCD END AS parentCode, " + + "t.GRD AS treeLevel, " + + "CASE WHEN EXISTS (SELECT 1 FROM SD_HBRV_DIC c WHERE c.PHBRVCD = t.HBRVCD AND c.BASEID = t.BASEID AND NVL(c.IS_DELETED, 0) = 0) THEN 1 ELSE 0 END AS hasChildren, " + + "t.BASEID AS objId, " + + "'PSB' AS topWbsType, " + + "t.PATH AS fullPath, " + + "1 AS internal, " + + "CAST(NULL AS NUMBER(10,6)) AS lgtd, " + + "CAST(NULL AS NUMBER(10,6)) AS lttd, " + + "CAST(NULL AS NUMBER(18,6)) AS area, " + + "CAST(NULL AS NUMBER(18,6)) AS perimeter, " + + "CAST(NULL AS VARCHAR2(4000)) AS synopsis, " + + "CAST(NULL AS VARCHAR2(4000)) AS introduce, " + + "CAST(NULL AS VARCHAR2(255)) AS logo, " + + "CAST(NULL AS VARCHAR2(255)) AS inffile, " + + "t.ORDER_INDEX AS orderIndex, " + + "CAST(NULL AS VARCHAR2(255)) AS filterContent, " + + "CAST(NULL AS VARCHAR2(36)) AS departmentId, " + + "CAST(NULL AS VARCHAR2(36)) AS systemId, " + + "CAST(NULL AS VARCHAR2(36)) AS platformId, " + + "CAST(NULL AS VARCHAR2(50)) AS reachWwqtg, " + + "CAST(NULL AS NUMBER(10,6)) AS maxElev, " + + "CAST(NULL AS NUMBER(10,6)) AS minElev, " + + "CAST(NULL AS VARCHAR2(50)) AS datTp, " + + "CAST(NULL AS VARCHAR2(50)) AS rvAg, " + + "CAST(NULL AS NUMBER(1,0)) AS ifInnRv, " + + "CAST(NULL AS VARCHAR2(2000)) AS showControl, " + + "CAST(NULL AS VARCHAR2(36)) AS stcd, " + + "CAST(NULL AS VARCHAR2(255)) AS displayDepartment " + + "FROM SD_HBRV_DIC t WHERE NVL(t.IS_DELETED, 0) = 0 AND t.ORDER_INDEX IS NOT NULL"; + } + + private String buildWbsbDetailSelectSql(List selectFields) { + Map columns = wbsbFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map wbsbFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("id", "t.id AS id"); + columns.put("recordUser", "t.recordUser AS recordUser"); + columns.put("recordTime", "t.recordTime AS recordTime"); + columns.put("modifyTime", "t.modifyTime AS modifyTime"); + columns.put("displayRecordUser", "t.displayRecordUser AS displayRecordUser"); + columns.put("isolateType", "t.isolateType AS isolateType"); + columns.put("wbsType", "t.wbsType AS wbsType"); + columns.put("wbsCode", "t.wbsCode AS wbsCode"); + columns.put("wbsName", "t.wbsName AS wbsName"); + columns.put("wbsSname", "t.wbsSname AS wbsSname"); + columns.put("wbsNameEn", "t.wbsNameEn AS wbsNameEn"); + columns.put("wbsSnameEn", "t.wbsSnameEn AS wbsSnameEn"); + columns.put("enable", "t.enable AS enable"); + columns.put("description", "t.description AS description"); + columns.put("parentId", "t.parentId AS parentId"); + columns.put("parentCode", "t.parentCode AS parentCode"); + columns.put("treeLevel", "t.treeLevel AS treeLevel"); + columns.put("hasChildren", "t.hasChildren AS hasChildren"); + columns.put("objId", "t.objId AS objId"); + columns.put("topWbsType", "t.topWbsType AS topWbsType"); + columns.put("fullPath", "t.fullPath AS fullPath"); + columns.put("internal", "t.internal AS internal"); + columns.put("lgtd", "t.lgtd AS lgtd"); + columns.put("lttd", "t.lttd AS lttd"); + columns.put("area", "t.area AS area"); + columns.put("perimeter", "t.perimeter AS perimeter"); + columns.put("synopsis", "t.synopsis AS synopsis"); + columns.put("introduce", "t.introduce AS introduce"); + columns.put("logo", "t.logo AS logo"); + columns.put("inffile", "t.inffile AS inffile"); + columns.put("orderIndex", "t.orderIndex AS orderIndex"); + columns.put("filterContent", "t.filterContent AS filterContent"); + columns.put("departmentId", "t.departmentId AS departmentId"); + columns.put("systemId", "t.systemId AS systemId"); + columns.put("platformId", "t.platformId AS platformId"); + columns.put("reachWwqtg", "t.reachWwqtg AS reachWwqtg"); + columns.put("maxElev", "t.maxElev AS maxElev"); + columns.put("minElev", "t.minElev AS minElev"); + columns.put("datTp", "t.datTp AS datTp"); + columns.put("rvAg", "t.rvAg AS rvAg"); + columns.put("ifInnRv", "t.ifInnRv AS ifInnRv"); + columns.put("showControl", "t.showControl AS showControl"); + columns.put("stcd", "t.stcd AS stcd"); + columns.put("displayDepartment", "t.displayDepartment AS displayDepartment"); + return columns; + } + + private String buildWbsbFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildWbsbLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildWbsbFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildWbsbLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapWbsbColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildGenericCondition(column, filter, paramMap, indexHolder, false); + } + + private String buildWbsbDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY NVL(t.orderIndex, 999999) ASC, t.wbsCode ASC"; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapWbsbColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + if (orders.isEmpty()) { + return " ORDER BY NVL(t.orderIndex, 999999) ASC, t.wbsCode ASC"; + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildWbsbGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapWbsbColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { @@ -747,6 +1093,34 @@ public class EngEqDataServiceImpl implements EngEqDataService { }; } + private String mapWbsbColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "id" -> "t.id"; + case "wbsType" -> "t.wbsType"; + case "wbsCode" -> "t.wbsCode"; + case "wbsName" -> "t.wbsName"; + case "wbsSname" -> "t.wbsSname"; + case "enable" -> "t.enable"; + case "description" -> "t.description"; + case "parentId" -> "t.parentId"; + case "parentCode" -> "t.parentCode"; + case "treeLevel" -> "t.treeLevel"; + case "hasChildren" -> "t.hasChildren"; + case "objId", "objid" -> "t.objId"; + case "topWbsType" -> "t.topWbsType"; + case "fullPath" -> "t.fullPath"; + case "internal" -> "t.internal"; + case "introduce" -> "t.introduce"; + case "orderIndex" -> "NVL(t.orderIndex, 999999)"; + case "recordTime" -> "t.recordTime"; + case "modifyTime" -> "t.modifyTime"; + default -> null; + }; + } + private String mapEqColumn(String field) { if (StrUtil.isBlank(field)) { return null; From 787e3fea4226ab6bf8b672330bc1a69bf8b73ae9 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 14:54:23 +0800 Subject: [PATCH 26/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E7=9B=91=E6=B5=8B=E6=95=B0=E9=87=8F=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 6 ++ .../eq/entity/vo/SdEqMonitorCountVo.java | 31 +++++++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 65 +++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/SdEqMonitorCountVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index c4a3394b..87234952 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -47,4 +47,10 @@ public class EngEqDataController { public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(engEqDataService.getWbsbList(dataSourceRequest)); } + + @PostMapping("/evnmAutoMonitor/GetKendoListCust") + @Operation(summary = "生态流量监测数量统计") + public ResponseResult getEvnmAutoMonitorList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getEvnmAutoMonitorList(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/SdEqMonitorCountVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/SdEqMonitorCountVo.java new file mode 100644 index 00000000..7d600576 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/SdEqMonitorCountVo.java @@ -0,0 +1,31 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +@Data +@Schema(description = "生态流量监测数量统计") +public class SdEqMonitorCountVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "数量") + private Long cnt; + + @Schema(description = "排序号") + private Integer orderInx; + + @Schema(description = "排序号名称") + private String orderInxName; + + @Schema(description = "站类完整路径") + private String sttpFullPath; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "站类名称") + private String sttpName; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index ecb95877..5fe8e83d 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; public interface EngEqDataService { @@ -12,4 +13,6 @@ public interface EngEqDataService { QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); + + DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 18636671..26f9d081 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -15,6 +15,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; import com.yfd.platform.utils.QgcQueryWrapperUtil; @@ -118,6 +119,42 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryWbsbGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest) { + List showIds = findFilterValues(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "showIds"); + if (!showIds.isEmpty() && !showIds.contains("7")) { + DataSourceResult emptyResult = new DataSourceResult<>(); + emptyResult.setData(new ArrayList<>()); + emptyResult.setTotal(0L); + emptyResult.setAggregates(new HashMap<>()); + return emptyResult; + } + + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + + StringBuilder sql = new StringBuilder(); + Map paramMap = new HashMap<>(); + sql.append("SELECT COUNT(1) AS cnt, 7 AS orderInx, '生态流量' AS orderInxName, ") + .append("'ENG' AS sttpFullPath, 'ENG' AS sttpCode, '生态流量' AS sttpName ") + .append("FROM SD_ENGINFO_B_H eng ") + .append("WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append("AND NVL(eng.DTIN, 0) = 1 ") + .append("AND NVL(eng.BLDSTT_CODE, 0) IN (1, 2) ") + .append("AND EXISTS (SELECT 1 FROM SD_QEC_R qec WHERE qec.STCD = eng.STCD AND NVL(qec.IS_DELETED, 0) = 0) "); + if (StrUtil.isNotBlank(baseId)) { + sql.append("AND eng.BASE_ID = #{map.baseId} "); + paramMap.put("baseId", baseId); + } + + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, SdEqMonitorCountVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(list == null ? 0 : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -1072,6 +1109,34 @@ public class EngEqDataServiceImpl implements EngEqDataService { return values; } + private List findFilterValues(DataSourceRequest.FilterDescriptor filter, String field) { + List values = new ArrayList<>(); + collectFilterValues(filter, field, values); + return values; + } + + private void collectFilterValues(DataSourceRequest.FilterDescriptor filter, String field, List values) { + if (filter == null) { + return; + } + if (StrUtil.isNotBlank(filter.getField())) { + if (field.equalsIgnoreCase(filter.getField())) { + for (Object value : normalizeValues(filter.getValue())) { + if (value != null) { + values.add(String.valueOf(value)); + } + } + } + return; + } + if (CollUtil.isEmpty(filter.getFilters())) { + return; + } + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + collectFilterValues(child, field, values); + } + } + private String mapStaticStationColumn(String field) { if (StrUtil.isBlank(field)) { return null; From aea22ebf02127c2da806850fd995752d938bdae2 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 16:51:59 +0800 Subject: [PATCH 27/47] =?UTF-8?q?fix:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E7=9B=91=E6=B5=8B=E6=95=B0=E9=87=8F=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/service/impl/EngEqDataServiceImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 26f9d081..7111940a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -527,7 +527,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { Map paramMap, int[] indexHolder) { String tableName = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R"; - String timeFilter = buildStaticTimeFilterCondition(filter, paramMap, indexHolder); + String timeFilter = buildStaticTimeFilterCondition(filter, paramMap, indexHolder,type); StringBuilder sql = new StringBuilder(); sql.append("SELECT data.STCD, ") .append("(CASE WHEN SUM(CASE WHEN data.SFDB IN (0, 1) THEN 1 ELSE 0 END) = 0 THEN NULL ") @@ -985,7 +985,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { private String buildStaticTimeFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, - int[] indexHolder) { + int[] indexHolder,String type) { if (filter == null) { return ""; } @@ -993,14 +993,20 @@ public class EngEqDataServiceImpl implements EngEqDataService { if (!"tm".equalsIgnoreCase(filter.getField())) { return ""; } - return buildGenericCondition("data.TM", filter, paramMap, indexHolder, true); + if (type.equals("day")) { + return buildGenericCondition("data.DT", filter, paramMap, indexHolder, true); + }else{ + return buildGenericCondition("data.TM", filter, paramMap, indexHolder, true); + } + + } if (CollUtil.isEmpty(filter.getFilters())) { return ""; } List conditions = new ArrayList<>(); for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { - String childSql = buildStaticTimeFilterCondition(child, paramMap, indexHolder); + String childSql = buildStaticTimeFilterCondition(child, paramMap, indexHolder,type); if (StrUtil.isNotBlank(childSql)) { conditions.add("(" + childSql + ")"); } From d3d41cb3b6af7a9145d28e3fdad8b2a47f1dc6d0 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 19:26:17 +0800 Subject: [PATCH 28/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E8=BE=BE=E6=A0=87=E7=8E=87=E8=AE=A1=E7=AE=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 7 + .../eq/entity/vo/EngEqRateCountVo.java | 50 ++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 237 ++++++++++++++++++ 4 files changed, 297 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRateCountVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 87234952..86840056 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.controller; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.utils.QgcQueryWrapperUtil; @@ -53,4 +54,10 @@ public class EngEqDataController { public ResponseResult getEvnmAutoMonitorList(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(engEqDataService.getEvnmAutoMonitorList(dataSourceRequest)); } + + @PostMapping("/qecRateCount") + @Operation(summary = "生态流量达标率计算(基地维度、不达标原因维度)") + public ResponseResult getQecRateCount(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.qecRateCount(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRateCountVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRateCountVo.java new file mode 100644 index 00000000..22ba4b74 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRateCountVo.java @@ -0,0 +1,50 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@Schema(description = "生态流量达标率统计") +public class EngEqRateCountVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "行政区编码") + private String addvcd; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "工程名称") + private String ennm; + + @Schema(description = "调节性能编码") + private String qecPerformance; + + @Schema(description = "调节性能名称") + private String qecPerformanceName; + + @Schema(description = "生态流量达标率") + private BigDecimal qecRate; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index 5fe8e83d..b1786af6 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; @@ -15,4 +16,6 @@ public interface EngEqDataService { DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest); + + DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 7111940a..67d6d7a8 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -12,6 +12,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.enums.QecIntervalEnum; import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo; @@ -29,6 +30,9 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; @Service public class EngEqDataServiceImpl implements EngEqDataService { @@ -155,6 +159,74 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + @Override + public DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + String tm = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm"); + String[] tmRange = resolveQecRateTimeRange(tm); + + List groups = dataSourceRequest == null ? null : dataSourceRequest.getGroup(); + List selectItems = new ArrayList<>(); + List groupItems = new ArrayList<>(); + if (CollUtil.isNotEmpty(groups)) { + for (DataSourceRequest.GroupDescriptor group : groups) { + if (group == null || StrUtil.isBlank(group.getField())) { + continue; + } + String selectSql = mapQecRateSelect(group.getField()); + String groupSql = mapQecRateGroup(group.getField()); + if (StrUtil.isNotBlank(selectSql) && StrUtil.isNotBlank(groupSql)) { + selectItems.add(selectSql); + groupItems.add(groupSql); + } + } + } + + StringBuilder sql = new StringBuilder(); + Map paramMap = new HashMap<>(); + paramMap.put("startTime", tmRange[0]); + paramMap.put("endTime", tmRange[1]); + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("baseId", baseId); + } + + sql.append("SELECT "); + if (!selectItems.isEmpty()) { + sql.append(String.join(", ", selectItems)).append(", "); + } + sql.append(buildQecRateSql()).append(" AS qecRate ") + .append("FROM SD_ENGINFO_B_H eng ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 ") + .append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ") + .append("LEFT JOIN (") + .append(buildQecRateMetricSourceSql()) + .append(") met ON met.STCD = eng.STCD ") + .append("WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(eng.DTIN_ENV, 0) IN (1, 2) ") + .append(" AND NVL(eng.BLDSTT_CODE, 0) = 2 "); + if (StrUtil.isNotBlank(baseId)) { + sql.append(" AND eng.BASE_ID = #{map.baseId} "); + } + if (!groupItems.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupItems)).append(" "); + sql.append(buildQecRateOrderBy(groups)); + } + + List list = microservicDynamicSQLMapper.getAllListWithResultType( + sql.toString(), paramMap, EngEqRateCountVo.class); + fillQecRateCountNames(list); + list = completeQecPerformanceGroups(list, groups); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(list == null ? 0 : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -697,6 +769,171 @@ public class EngEqDataServiceImpl implements EngEqDataService { "FROM SD_HBRV_DIC t WHERE NVL(t.IS_DELETED, 0) = 0 AND t.ORDER_INDEX IS NOT NULL"; } + private String buildQecRateMetricSourceSql() { + // 方案一:当前没有新框架业务结果表时,直接使用日统计表 SD_QECDAY_S 参与达标率计算。 + // 方案二:后续如果补齐新框架业务结果表,可仅替换此处为“SELECT * FROM 新业务结果表 WHERE TYPE='DAY' ...”。 + return "SELECT met.STCD, met.QEC, met.QEC_LIMIT, met.MWR_LIMIT, met.AVQ_LIMIT, " + + "met.SFDB, met.MWR_SFDB, met.AVQ_SFDB " + + "FROM SD_QECDAY_S met " + + "WHERE NVL(met.IS_DELETED, 0) = 0 " + + " AND met.DT BETWEEN TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') " + + " AND TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS')"; + } + + private String buildQecRateSql() { + return "CASE " + + "WHEN COUNT(*) = 0 THEN NULL " + + "WHEN SUM(CASE WHEN met.QEC_LIMIT IS NULL AND met.MWR_LIMIT IS NULL AND met.AVQ_LIMIT IS NULL THEN 0 ELSE 1 END) = 0 THEN NULL " + + "WHEN SUM(CASE WHEN (met.QEC_LIMIT IS NOT NULL OR met.MWR_LIMIT IS NOT NULL OR met.AVQ_LIMIT IS NOT NULL) AND met.QEC IS NULL THEN 0 ELSE 1 END) = 0 THEN NULL " + + "WHEN SUM(CASE " + + "WHEN met.SFDB = 1 OR met.SFDB = 0 THEN 1 " + + "WHEN met.SFDB = 2 AND (met.MWR_SFDB = 1 OR met.MWR_SFDB = 0) THEN 1 " + + "WHEN met.MWR_SFDB = 2 AND (met.AVQ_SFDB = 1 OR met.AVQ_SFDB = 0) THEN 1 " + + "ELSE 0 END) = 0 THEN NULL " + + "ELSE ((SUM(CASE " + + "WHEN met.SFDB = 1 THEN 1 " + + "WHEN met.SFDB = 0 THEN 0 " + + "WHEN met.SFDB = 2 AND met.MWR_SFDB = 1 THEN 1 " + + "WHEN met.SFDB = 2 AND met.MWR_SFDB = 0 THEN 0 " + + "WHEN met.MWR_SFDB = 2 AND met.AVQ_SFDB = 1 THEN 1 " + + "WHEN met.MWR_SFDB = 2 AND met.AVQ_SFDB = 0 THEN 0 " + + "ELSE 0 END) / NULLIF(SUM(CASE " + + "WHEN met.SFDB = 1 OR met.SFDB = 0 THEN 1 " + + "WHEN met.SFDB = 2 AND (met.MWR_SFDB = 1 OR met.MWR_SFDB = 0) THEN 1 " + + "WHEN met.MWR_SFDB = 2 AND (met.AVQ_SFDB = 1 OR met.AVQ_SFDB = 0) THEN 1 " + + "ELSE 0 END), 0)) * 100) END"; + } + + private String[] resolveQecRateTimeRange(String tm) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + if (StrUtil.isNotBlank(tm)) { + String[] arr = StrUtil.splitToArray(tm, ','); + if (arr != null && arr.length >= 2) { + return new String[]{arr[0].trim(), arr[1].trim()}; + } + } + LocalDateTime end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(0); + LocalDateTime start = end.minusMonths(3).withHour(0).withMinute(0).withSecond(0).withNano(0); + return new String[]{start.format(formatter), end.format(formatter)}; + } + + private String mapQecRateSelect(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "baseId" -> "eng.BASE_ID AS baseId"; + case "baseName" -> "hb.BASENAME AS baseName"; + case "hbrvcd" -> "eng.HBRVCD AS hbrvcd"; + case "hbrvcdName" -> "hbrv.HBRVNM AS hbrvcdName"; + case "addvcd" -> "eng.ADDVCD AS addvcd"; + case "addvcdName" -> "addv.ADDVNM AS addvcdName"; + case "stcd" -> "eng.STCD AS stcd"; + case "stnm" -> "eng.ENNM AS stnm"; + case "ennm" -> "eng.ENNM AS ennm"; + case "qecPerformance" -> buildQecPerformanceCaseSql() + " AS qecPerformance"; + default -> null; + }; + } + + private String mapQecRateGroup(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "baseId" -> "eng.BASE_ID"; + case "baseName" -> "hb.BASENAME"; + case "hbrvcd" -> "eng.HBRVCD"; + case "hbrvcdName" -> "hbrv.HBRVNM"; + case "addvcd" -> "eng.ADDVCD"; + case "addvcdName" -> "addv.ADDVNM"; + case "stcd" -> "eng.STCD"; + case "stnm", "ennm" -> "eng.ENNM"; + case "qecPerformance" -> buildQecPerformanceCaseSql(); + default -> null; + }; + } + + private String buildQecPerformanceCaseSql() { + return "CASE " + + "WHEN eng.RGCP = '1' THEN '1' " + + "WHEN eng.RGCP = '2' THEN '2' " + + "WHEN eng.RGCP = '5' THEN '5' " + + "WHEN eng.RGCP = '7' THEN '7' " + + "ELSE '9' END"; + } + + private String buildQecRateOrderBy(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor group : groups) { + if (group == null || StrUtil.isBlank(group.getField())) { + continue; + } + String column = mapQecRateGroup(group.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(group.getDir()) || "des".equalsIgnoreCase(group.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + + private void fillQecRateCountNames(List list) { + if (CollUtil.isEmpty(list)) { + return; + } + for (EngEqRateCountVo item : list) { + item.setQecPerformanceName(getQecPerformanceName(item.getQecPerformance())); + if (item.getQecRate() != null) { + item.setQecRate(item.getQecRate().setScale(2, RoundingMode.HALF_UP)); + } + } + } + + private List completeQecPerformanceGroups(List list, + List groups) { + if (CollUtil.isEmpty(groups) || groups.get(0) == null || !"qecPerformance".equals(groups.get(0).getField())) { + return list; + } + Map exists = new LinkedHashMap<>(); + if (CollUtil.isNotEmpty(list)) { + for (EngEqRateCountVo item : list) { + if (item != null && StrUtil.isNotBlank(item.getQecPerformance())) { + exists.put(item.getQecPerformance(), item); + } + } + } + List result = new ArrayList<>(); + for (String code : Arrays.asList("1", "2", "5", "7", "9")) { + EngEqRateCountVo item = exists.get(code); + if (item == null) { + item = new EngEqRateCountVo(); + item.setQecPerformance(code); + item.setQecPerformanceName(getQecPerformanceName(code)); + } + result.add(item); + } + return result; + } + + private String getQecPerformanceName(String code) { + if (StrUtil.isBlank(code)) { + return null; + } + return switch (code) { + case "1" -> "多年调节"; + case "2" -> "年调节"; + case "5" -> "季调节"; + case "7" -> "周调节"; + case "9" -> "其他"; + default -> null; + }; + } + private String buildWbsbDetailSelectSql(List selectFields) { Map columns = wbsbFieldColumns(); List selected = new ArrayList<>(); From 81b3b8b9812962910826a28d9548b6e915304540 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 20:02:13 +0800 Subject: [PATCH 29/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/service/impl/EnvWqDataServiceImpl.java | 111 ++++++++++++------ 1 file changed, 73 insertions(+), 38 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index ed24d9b9..aa826d93 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -368,7 +368,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "WHERE NVL(mab.IS_DELETED, 0) = 0 " + " AND NVL(sab.IS_DELETED, 0) = 0 " + " AND mab.CODE = 'common' " + - " AND eng.BASE_ID = #{map.baseId} " + + " AND wq.BASE_ID = #{map.baseId} " + " AND r.TM >= TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') " + " AND r.TM <= TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') " + "ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC " + @@ -386,7 +386,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "WHERE NVL(mab.IS_DELETED, 0) = 0 " + " AND NVL(sab.IS_DELETED, 0) = 0 " + " AND mab.CODE = 'common' " + - " AND eng.BASE_ID = #{map.baseId} " + + " AND wq.BASE_ID = #{map.baseId} " + "ORDER BY r.TM DESC " + ") WHERE ROWNUM = 1"; } @@ -412,7 +412,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { sql.append("AND mab.RVCD = #{map.rvcd} "); } if (StrUtil.isNotBlank(baseId)) { - sql.append("AND eng.BASE_ID = #{map.baseId} "); + sql.append("AND wq.BASE_ID = #{map.baseId} "); } sql.append("AND swr.TM IS NOT NULL ") .append("ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC, swr.TM DESC") @@ -486,7 +486,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { sql.append("AND mab.RVCD = #{map.rvcd} "); } if (StrUtil.isNotBlank(baseId)) { - sql.append("AND eng.BASE_ID = #{map.baseId} "); + sql.append("AND wq.BASE_ID = #{map.baseId} "); } sql.append("ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC"); return sql.toString(); @@ -551,9 +551,9 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { .append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) .append(" FROM SD_WQ_B_H t ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") - .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = t.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ") - .append(" AND hbrv.BASEID = eng.BASE_ID ") + .append(" AND hbrv.BASEID = t.BASE_ID ") .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ") .append(" AND NVL(hbrv.ENABLED, 1) = 1 ") .append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ") @@ -581,29 +581,31 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } - String groupField = "dtinType"; - String groupColumn = "t.DTIN_TYPE"; - String groupDir = "ASC"; - if (CollUtil.isNotEmpty(dataSourceRequest.getGroup())) { - DataSourceRequest.GroupDescriptor groupDescriptor = dataSourceRequest.getGroup().get(0); - if (groupDescriptor != null && StrUtil.isNotBlank(groupDescriptor.getField())) { - groupField = groupDescriptor.getField(); - String mappedColumn = mapMsstbprptColumn(groupField); - if (StrUtil.isNotBlank(mappedColumn)) { - groupColumn = mappedColumn; - } - if ("desc".equalsIgnoreCase(groupDescriptor.getDir()) || "des".equalsIgnoreCase(groupDescriptor.getDir())) { - groupDir = "DESC"; - } - } - } - - StringBuilder sql = new StringBuilder(); - sql.append("SELECT ") - .append(groupColumn).append(" AS ").append(groupField.toUpperCase()).append(", ") - .append("COUNT(*) AS COUNT_").append(groupField.toUpperCase()).append(" ") + GroupingInfo[] groupInfos = loadOptions == null ? null : loadOptions.getGroup(); + StringBuilder baseSql = new StringBuilder(); + baseSql.append("SELECT ") + .append("NVL(t.IS_DELETED, 0) AS isDeleted, ") + .append("t.STTP AS sttpCode, ") + .append("t.MWAY AS mway, ") + .append("t.DTIN_TYPE AS dtinType, ") + .append("t.STCD AS stcd, ") + .append("t.STNM AS stnm, ") + .append("t.FHSTCD AS fhstcd, ") + .append("t.DTIN AS dtin, ") + .append("t.BASE_ID AS baseId, ") + .append("hb.BASENAME AS baseName, ") + .append("hb.ORDER_INDEX AS baseStepSort, ") + .append("eng.HBRVCD AS hbrvcd, ") + .append("hbrv.HBRVNM AS hbrvcdName, ") + .append("eng.ORDER_INDEX AS rstcdStepSort, ") + .append("t.ORDER_INDEX AS siteStepSort ") .append("FROM SD_WQ_B_H t ") - .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = t.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ") + .append(" AND hbrv.BASEID = t.BASE_ID ") + .append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ") + .append(" AND NVL(hbrv.ENABLED, 1) = 1 ") .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); Map paramMap = new HashMap<>(); @@ -613,14 +615,17 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { new int[]{0} ); if (StrUtil.isNotBlank(filterSql)) { - sql.append(" AND ").append(filterSql).append(" "); + baseSql.append(" AND ").append(filterSql).append(" "); } - sql.append("GROUP BY ").append(groupColumn).append(" ") - .append("ORDER BY ").append(groupColumn).append(" ").append(groupDir); - List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + String groupedSql = buildMsstbprptGroupSql(baseSql.toString(), groupInfos); + List> rows = microservicDynamicSQLMapper.pageAllList(null, groupedSql, paramMap); DataSourceResult result = new DataSourceResult(); - result.setData(toMsstbprptLegacyGroups(rows, groupField)); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData(toLegacyGroupResult(new GroupHelper().group(rows, Arrays.asList(groupInfos)), 0)); + } result.setTotal((long) rows.size()); result.setAggregates(new HashMap<>()); return result; @@ -789,9 +794,9 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "t.DELETE_TIME AS deleteTime " + "FROM SD_WQ_B_H t " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD " + - "LEFT JOIN SD_HYDROBASE base ON base.BASEID = eng.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE base ON base.BASEID = t.BASE_ID AND NVL(base.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD " + - " AND hbrv.BASEID = eng.BASE_ID " + + " AND hbrv.BASEID = t.BASE_ID " + " AND NVL(hbrv.IS_DELETED, 0) = 0 " + " AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + @@ -929,7 +934,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "wq.STTP AS STTP_CODE " + "FROM SD_WQ_B_H wq " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " + - "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + @@ -1341,7 +1346,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "siteAlong.SORT AS SITESTEPSORT " + "FROM SD_WQ_B_H wq " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " + - "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + @@ -1928,7 +1933,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "stcd" -> "t.STCD"; case "stnm" -> "t.STNM"; case "fhstcd" -> "t.FHSTCD"; - case "baseId" -> "eng.BASE_ID"; + case "baseId" -> "t.BASE_ID"; case "dtin" -> "t.DTIN"; default -> null; }; @@ -2045,6 +2050,36 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + private String buildMsstbprptGroupSql(String baseSql, GroupingInfo[] groupInfos) { + if (groupInfos == null || groupInfos.length == 0) { + return baseSql; + } + List groupFields = new ArrayList<>(); + List orderByItems = new ArrayList<>(); + for (GroupingInfo item : groupInfos) { + if (item == null || StrUtil.isBlank(item.getSelector())) { + continue; + } + groupFields.add(item.getSelector()); + String dir = Boolean.TRUE.equals(item.getDesc()) ? "DESC" : "ASC"; + orderByItems.add(item.getSelector() + " " + dir); + } + if (groupFields.isEmpty()) { + return baseSql; + } + StringBuilder sql = new StringBuilder("SELECT "); + sql.append(String.join(", ", groupFields)); + for (String groupField : groupFields) { + sql.append(", COUNT(*) AS count_").append(groupField).append(" "); + } + sql.append("FROM (").append(baseSql).append(") T ") + .append("GROUP BY ").append(String.join(", ", groupFields)).append(" "); + if (!orderByItems.isEmpty()) { + sql.append("ORDER BY ").append(String.join(", ", orderByItems)); + } + return sql.toString(); + } + private String buildMsstbprptDetailOrderBySql(List sortList) { if (CollUtil.isEmpty(sortList)) { return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; From 75bbb0a65ed7da80cc430d687206b06b59c2b670 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 20:23:45 +0800 Subject: [PATCH 30/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E6=B0=B4?= =?UTF-8?q?=E8=B4=A8=E9=A2=84=E8=AD=A6=E8=A7=84=E5=88=99=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/controller/EnvWqDataController.java | 8 + .../wq/entity/vo/MsWarnRuleDetailBVo.java | 96 ++++++ .../qgc_env/wq/service/EnvWqDataService.java | 2 + .../wq/service/impl/EnvWqDataServiceImpl.java | 287 ++++++++++++++++++ 4 files changed, 393 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/MsWarnRuleDetailBVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java index 4157bcbe..496df412 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java @@ -23,6 +23,7 @@ public class EnvWqDataController { @Resource private EnvWqDataService envWqDataService; + @PostMapping("/GetKendoListCust") @Operation(summary = "水质统计分析") public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { @@ -106,4 +107,11 @@ public class EnvWqDataController { public ResponseResult getStcdInfo(@RequestParam String stcd) { return ResponseResult.successData(envWqDataService.getStcdInfo(stcd)); } + + + @PostMapping("/rule/GetKendoListCust") + @Operation(summary = "查询水质预警规则列表") + public ResponseResult getRuleKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(envWqDataService.getWqWarRuleList(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/MsWarnRuleDetailBVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/MsWarnRuleDetailBVo.java new file mode 100644 index 00000000..3186f812 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/entity/vo/MsWarnRuleDetailBVo.java @@ -0,0 +1,96 @@ +package com.yfd.platform.qgc_env.wq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "水质预警规则明细") +public class MsWarnRuleDetailBVo { + + @Schema(description = "主键") + private String id; + + @Schema(description = "规则主键") + private String ruleId; + + @Schema(description = "监测表主键") + private String tbId; + + @Schema(description = "要素编码") + private String ys; + + @Schema(description = "生效时间") + private Date tm; + + @Schema(description = "开始月日") + private String beginTime; + + @Schema(description = "结束月日") + private String endTime; + + @Schema(description = "最小值") + private BigDecimal minVal; + + @Schema(description = "最大值") + private BigDecimal maxVal; + + @Schema(description = "等级") + private Integer lvl; + + @Schema(description = "等级描述") + private String lvlNote; + + @Schema(description = "站类标识") + private String stty; + + @Schema(description = "持续要求") + private Integer alwyrqst; + + @Schema(description = "环评要求") + private Integer elaeq; + + @Schema(description = "容差系数") + private BigDecimal qecsc; + + @Schema(description = "备注") + private String description; + + @Schema(description = "创建人") + private String recordUser; + + @Schema(description = "创建时间") + private Date recordTime; + + @Schema(description = "更新人") + private String modifyUser; + + @Schema(description = "更新时间") + private Date modifyTime; + + @Schema(description = "是否删除") + private Integer isDeleted; + + @Schema(description = "删除人") + private String deleteUser; + + @Schema(description = "删除时间") + private Date deleteTime; + + @Schema(description = "告警等级") + private Integer warnLevel; + + @Schema(description = "标注") + private String mark; + + @Schema(description = "数据来源") + private String vlsr; + + @Schema(description = "数据来源时间") + private Date vlsrTm; + + @Schema(description = "是否正序") + private Integer isAsc; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java index 3d084c72..7bc84531 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java @@ -24,6 +24,8 @@ public interface EnvWqDataService { DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); + DataSourceResult getWqWarRuleList(DataSourceRequest dataSourceRequest); + DataSourceResult getStTbYsBVoKendoListCust(String stcd, String tbCode, String startTime, String endTime); DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index aa826d93..2debcad5 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1648,6 +1648,293 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + @Override + public DataSourceResult getWqWarRuleList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("d.ID AS id, ") + .append("d.RULE_ID AS ruleId, ") + .append("d.TB_ID AS tbId, ") + .append("d.YS AS ys, ") + .append("d.TM AS tm, ") + .append("d.BEGIN_TIME AS beginTime, ") + .append("d.END_TIME AS endTime, ") + .append("d.MIN_VAL AS minVal, ") + .append("d.MAX_VAL AS maxVal, ") + .append("d.LVL AS lvl, ") + .append("d.LVL_NOTE AS lvlNote, ") + .append("d.STTY AS stty, ") + .append("d.ALWYRQST AS alwyrqst, ") + .append("d.ELAEQ AS elaeq, ") + .append("d.QECSC AS qecsc, ") + .append("d.DESCRIPTION AS description, ") + .append("d.RECORD_USER AS recordUser, ") + .append("d.RECORD_TIME AS recordTime, ") + .append("d.MODIFY_USER AS modifyUser, ") + .append("d.MODIFY_TIME AS modifyTime, ") + .append("d.IS_DELETED AS isDeleted, ") + .append("d.DELETE_USER AS deleteUser, ") + .append("d.DELETE_TIME AS deleteTime, ") + .append("d.WARN_LEVEL AS warnLevel, ") + .append("d.MARK AS mark, ") + .append("d.VLSR AS vlsr, ") + .append("d.VLSR_TM AS vlsrTm ") + .append("FROM MS_WARN_RULE_DETAIL_B d ") + .append("WHERE NVL(d.IS_DELETED, 0) = 0 ") + .append(" AND d.TB_ID = (SELECT tb.ID FROM ST_TB_B tb ") + .append(" WHERE tb.TB_CODE = 'WQ_R' AND NVL(tb.IS_DELETED, 0) = 0 AND ROWNUM = 1) ") + .append(" AND d.RULE_ID = (SELECT r.ID FROM MS_WARN_RULE_B r ") + .append(" WHERE r.RULE_TYPE = 'WQLVL' AND NVL(r.IS_DELETED, 0) = 0 AND ROWNUM = 1) ") + .append(" AND d.LVL = (SELECT station.WWQTG FROM (") + .append(buildWqWarRuleStationSql()) + .append(") station WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildWqWarRuleStationFilterCondition( + dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, + new int[]{0} + ); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(" AND station.WWQTG IS NOT NULL AND ROWNUM = 1) "); + sql.append(buildWqWarRuleOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, + sql.toString(), + paramMap, + MsWarnRuleDetailBVo.class + ); + fillWqWarRuleSort(list); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildWqWarRuleStationSql() { + return "SELECT " + + "t.WWQTG AS WWQTG, " + + "NVL(t.IS_DELETED, 0) AS ISDELETED, " + + "t.STTP AS STTPCODE, " + + "t.MWAY AS MWAY, " + + "t.DTIN_TYPE AS DTINTYPE, " + + "t.STCD AS STCD, " + + "t.STNM AS STNM, " + + "t.FHSTCD AS FHSTCD, " + + "t.DTIN AS DTIN, " + + "t.RSTCD AS RSTCD, " + + "eng.ENNM AS ENNM, " + + "eng.BASE_ID AS BASEID, " + + "eng.HBRVCD AS HBRVCD, " + + "eng.RVCD AS RVCD, " + + "eng.ADDVCD AS ADDVCD, " + + "t.TM AS TM, " + + "t.JCDT AS JCDT, " + + "t.WDDT AS WDDT, " + + "t.DTIN_TM AS DTINTM " + + "FROM SD_WQ_B_H t " + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "WHERE NVL(t.IS_DELETED, 0) = 0 "; + } + + private String buildWqWarRuleStationFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildWqWarRuleStationLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildWqWarRuleStationFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildWqWarRuleStationLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapWqWarRuleStationColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + boolean dateField = isWqWarRuleDateField(filter.getField()); + + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeMsstbprptValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String paramKey = "wqWarP" + indexHolder[0]++; + paramMap.put(paramKey, item); + placeholders.add(dateField + ? "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" + : "#{map." + paramKey + "}"); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + + String paramKey = "wqWarP" + indexHolder[0]++; + switch (operator) { + case "eq": + paramMap.put(paramKey, value); + return dateField ? column + " = TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " = #{map." + paramKey + "}"; + case "neq": + paramMap.put(paramKey, value); + return dateField ? column + " <> TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " <> #{map." + paramKey + "}"; + case "contains": + paramMap.put(paramKey, "%" + value + "%"); + return column + " LIKE #{map." + paramKey + "}"; + case "startswith": + paramMap.put(paramKey, value + "%"); + return column + " LIKE #{map." + paramKey + "}"; + case "endswith": + paramMap.put(paramKey, "%" + value); + return column + " LIKE #{map." + paramKey + "}"; + case "gt": + paramMap.put(paramKey, value); + return dateField ? column + " > TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " > #{map." + paramKey + "}"; + case "gte": + paramMap.put(paramKey, value); + return dateField ? column + " >= TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " >= #{map." + paramKey + "}"; + case "lt": + paramMap.put(paramKey, value); + return dateField ? column + " < TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " < #{map." + paramKey + "}"; + case "lte": + paramMap.put(paramKey, value); + return dateField ? column + " <= TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')" : column + " <= #{map." + paramKey + "}"; + default: + return ""; + } + } + + private String mapWqWarRuleStationColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "isDeleted" -> "station.ISDELETED"; + case "sttpCode" -> "station.STTPCODE"; + case "mway" -> "station.MWAY"; + case "dtinType" -> "station.DTINTYPE"; + case "stcd" -> "station.STCD"; + case "stnm" -> "station.STNM"; + case "fhstcd" -> "station.FHSTCD"; + case "baseId" -> "station.BASEID"; + case "dtin" -> "station.DTIN"; + case "rstcd" -> "station.RSTCD"; + case "ennm" -> "station.ENNM"; + case "hbrvcd" -> "station.HBRVCD"; + case "rvcd" -> "station.RVCD"; + case "addvcd" -> "station.ADDVCD"; + case "wwqtg" -> "station.WWQTG"; + case "tm" -> "station.TM"; + case "jcdt" -> "station.JCDT"; + case "wddt" -> "station.WDDT"; + case "dtinTm" -> "station.DTINTM"; + default -> null; + }; + } + + private boolean isWqWarRuleDateField(String field) { + if (StrUtil.isBlank(field)) { + return false; + } + return "tm".equalsIgnoreCase(field) + || "jcdt".equalsIgnoreCase(field) + || "wddt".equalsIgnoreCase(field) + || "dtinTm".equalsIgnoreCase(field); + } + + private String buildWqWarRuleOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY d.YS ASC, d.LVL ASC, d.TM DESC "; + } + List orderColumns = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) { + continue; + } + String column = switch (sortDescriptor.getField()) { + case "ys" -> "d.YS"; + case "lvl" -> "d.LVL"; + case "lvlNote" -> "d.LVL_NOTE"; + case "minVal" -> "d.MIN_VAL"; + case "maxVal" -> "d.MAX_VAL"; + case "tm" -> "d.TM"; + case "beginTime" -> "d.BEGIN_TIME"; + case "endTime" -> "d.END_TIME"; + case "warnLevel" -> "d.WARN_LEVEL"; + case "mark" -> "d.MARK"; + case "description" -> "d.DESCRIPTION"; + case "vlsrTm" -> "d.VLSR_TM"; + default -> null; + }; + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) || "des".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; + orderColumns.add(column + " " + dir + " NULLS LAST"); + } + if (orderColumns.isEmpty()) { + return " ORDER BY d.YS ASC, d.LVL ASC, d.TM DESC "; + } + return " ORDER BY " + String.join(", ", orderColumns) + " "; + } + + private void fillWqWarRuleSort(List list) { + if (CollUtil.isEmpty(list)) { + return; + } + String sql = "SELECT ys AS ys, CASE WHEN lvl = dr THEN 1 ELSE 0 END AS isAsc " + + "FROM ( " + + " SELECT T.ys AS ys, T.lvl AS lvl, DENSE_RANK() OVER (PARTITION BY T.ys ORDER BY T.MIN_VAL) AS dr " + + " FROM (SELECT * FROM MS_WARN_RULE_DETAIL_B " + + " WHERE NVL(IS_DELETED, 0) = 0 " + + " AND TB_ID = (SELECT ID FROM ST_TB_B WHERE TB = 'SD_WQ_R' AND TB_CODE = 'WQ_R' AND NVL(IS_DELETED, 0) = 0 AND ROWNUM = 1) " + + " AND RULE_ID = (SELECT ID FROM MS_WARN_RULE_B WHERE RULE_TYPE = 'WQLVL' AND NVL(IS_DELETED, 0) = 0 AND ROWNUM = 1) " + + " ) T " + + ") WHERE lvl = 1"; + List sortList = microservicDynamicSQLMapper.getAllListWithResultType( + sql, + new HashMap<>(), + MsWarnRuleDetailBVo.class + ); + Map ysRuleSortMap = sortList.stream() + .filter(item -> StrUtil.isNotBlank(item.getYs())) + .collect(Collectors.toMap(MsWarnRuleDetailBVo::getYs, MsWarnRuleDetailBVo::getIsAsc, (left, right) -> left)); + list.forEach(item -> item.setIsAsc(ysRuleSortMap.get(item.getYs()))); + } + private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder, From c5db1d6ae45571460bb29e2000ae71518a98a607 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 2 Jun 2026 11:28:46 +0800 Subject: [PATCH 31/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/service/impl/EnvWqDataServiceImpl.java | 71 +++++++++++++++---- .../src/main/resources/application-prod.yml | 2 + 2 files changed, 58 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index 2debcad5..b5750551 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -496,8 +496,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { if (CollUtil.isEmpty(list)) { return; } - String sql = "SELECT t2.YS AS ys, t2.MIN_VAL AS minVal, t2.MAX_VAL AS maxVal, t2.LVL AS lvl " + - "FROM MS_WARN_RULE_B t1 " + + String sql = "SELECT t2.YS AS \"ys\", t2.MIN_VAL AS \"minVal\", t2.MAX_VAL AS \"maxVal\", t2.LVL AS \"lvl\" " + "FROM MS_WARN_RULE_B t1 " + "INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " + "WHERE t1.RULE_TYPE = 'WQLVL'"; List> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null); @@ -771,7 +770,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "t.ORDER_INDEX AS orderIndex, " + "t.RSTCD AS rstcd, " + "eng.ENNM AS ennm, " + - "eng.BASE_ID AS baseId, " + + "t.BASE_ID AS baseId, " + "base.BASENAME AS baseName, " + "eng.HBRVCD AS hbrvcd, " + "hbrv.HBRVNM AS hbrvcdName, " + @@ -921,7 +920,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "wq.FHSTCD AS ST_CODE, " + "CAST(NULL AS VARCHAR2(200)) AS ST_NAME, " + "eng.ENNM, " + - "eng.BASE_ID, " + + "wq.BASE_ID, " + "hb.BASENAME AS BASE_NAME, " + "rv.RVNM AS RVCD_NAME, " + "addv.ADDVNM AS ADDVCD_NAME, " + @@ -1134,8 +1133,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { if (CollUtil.isEmpty(list)) { return; } - String sql = "SELECT t2.YS AS ys, t2.MIN_VAL AS minVal, t2.MAX_VAL AS maxVal, t2.LVL AS lvl " + - "FROM MS_WARN_RULE_B t1 " + + String sql = "SELECT t2.YS AS \"ys\", t2.MIN_VAL AS \"minVal\", t2.MAX_VAL AS \"maxVal\", t2.LVL AS \"lvl\" " + "FROM MS_WARN_RULE_B t1 " + "INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " + "WHERE t1.RULE_TYPE = 'WQLVL'"; List> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null); @@ -1315,10 +1313,13 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { } sql.append("FROM (").append(buildStationBaseSql()).append(") MSB "); if (calculated) { - sql.append("INNER JOIN MS_WQCALCULATION_T MWT ON MWT.STCD = MSB.STCD ") - .append("WHERE MWT.RECORD_USER = #{map.recordUser} "); + sql.append("INNER JOIN (") + .append(buildEnvWqMetricSourceSql(true)) + .append(") MWT ON MWT.STCD = MSB.STCD "); } else { - sql.append("INNER JOIN MS_WQ_T MWT ON MWT.STCD = MSB.STCD ") + sql.append("INNER JOIN (") + .append(buildEnvWqMetricSourceSql(false)) + .append(") MWT ON MWT.STCD = MSB.STCD ") .append("LEFT JOIN SD_WQDAY_S WQD ON WQD.DT = MWT.TM AND MSB.STCD = WQD.STCD AND NVL(WQD.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_WQDAY_S WQD2 ON ADD_MONTHS(WQD2.DT, 12) = WQD.DT AND WQD2.STCD = WQD.STCD AND NVL(WQD2.IS_DELETED, 0) = 0 "); } @@ -1326,6 +1327,21 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return sql.toString(); } + private String buildEnvWqMetricSourceSql(boolean calculated) { + if (calculated) { + return "SELECT " + + "ID, STCD, TM, TYPE, STTYPE, SFDB, DR_MONTH, DR_YEAR, " + + "WQ_SFDB_HY, WQ_SFDB_COUNT, WQ_SFDB_HO, WQ_RATE, WQ_SFDB_HN " + + "FROM MS_WQCALCULATION_T " + + "WHERE NVL(IS_DELETED, 0) = 0 AND RECORD_USER = #{map.recordUser}"; + } + return "SELECT " + + "ID, STCD, TM, TYPE, STTYPE, SFDB, DR_MONTH, DR_YEAR, " + + "WQ_SFDB_HY, WQ_SFDB_COUNT, WQ_SFDB_HO, WQ_RATE, WQ_SFDB_HN " + + "FROM MS_WQ_T " + + "WHERE NVL(IS_DELETED, 0) = 0"; + } + private String buildStationBaseSql() { return "SELECT " + "wq.STCD, " + @@ -1347,7 +1363,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "FROM SD_WQ_B_H wq " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = wq.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + @@ -1521,7 +1537,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { item.put("field", group.getField()); } item.put("key", group.getKey()); - item.put("keyName", group.getKeyName()); + item.put("keyName", StrUtil.blankToDefault(group.getKeyName(), resolveEnvWqGroupKeyName(group.getField(), group.getKey()))); 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()); @@ -1536,6 +1552,31 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + private String resolveEnvWqGroupKeyName(Object field, Object key) { + if (field == null || key == null) { + return null; + } + String fieldName = String.valueOf(field); + String keyValue = String.valueOf(key); + return switch (fieldName) { + case "sfdb" -> parseInteger(keyValue) == null ? null : getSfdbName(parseInteger(keyValue)); + case "sttype" -> getSttypeName(keyValue); + case "wwqtg", "wqGrd", "beforeWqGrd" -> getWqLevelName(keyValue); + default -> null; + }; + } + + private Integer parseInteger(String value) { + if (StrUtil.isBlank(value)) { + return null; + } + try { + return Integer.parseInt(value); + } catch (NumberFormatException ex) { + return null; + } + } + private Object readGroupValue(Map row, String field) { Object value = row.get(field); if (value == null) { @@ -1731,7 +1772,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "t.DTIN AS DTIN, " + "t.RSTCD AS RSTCD, " + "eng.ENNM AS ENNM, " + - "eng.BASE_ID AS BASEID, " + + "t.BASE_ID AS BASEID, " + "eng.HBRVCD AS HBRVCD, " + "eng.RVCD AS RVCD, " + "eng.ADDVCD AS ADDVCD, " + @@ -2254,7 +2295,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { selectMap.put("orderIndex", "t.ORDER_INDEX AS orderIndex"); selectMap.put("rstcd", "t.RSTCD AS rstcd"); selectMap.put("ennm", "eng.ENNM AS ennm"); - selectMap.put("baseId", "eng.BASE_ID AS baseId"); + selectMap.put("baseId", "t.BASE_ID AS baseId"); selectMap.put("baseName", "hb.BASENAME AS baseName"); selectMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); selectMap.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName"); @@ -2369,7 +2410,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { private String buildMsstbprptDetailOrderBySql(List sortList) { if (CollUtil.isEmpty(sortList)) { - return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + return " ORDER BY t.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; } List orderColumns = new ArrayList<>(); for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { @@ -2402,7 +2443,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { orderColumns.add(column + " " + dir + " NULLS LAST"); } if (orderColumns.isEmpty()) { - return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; + return " ORDER BY t.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC "; } return " ORDER BY " + String.join(", ", orderColumns); } diff --git a/backend/src/main/resources/application-prod.yml b/backend/src/main/resources/application-prod.yml index 8520bc61..b125d232 100644 --- a/backend/src/main/resources/application-prod.yml +++ b/backend/src/main/resources/application-prod.yml @@ -122,6 +122,8 @@ logging: level: root: info com.yfd.platform: info + com.yfd.platform.common.MicroservicDynamicSQLMapper: debug + # ... existing code ... # com.yfd.platform.*.mapper: trace # 在线文档: swagger-ui(生产环境建议关闭) From 6b00a61957eda71aa43ebff9b6ab11492318287d Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 2 Jun 2026 13:59:05 +0800 Subject: [PATCH 32/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/qgc_env/wq/controller/EnvWqDataController.java | 6 ++++++ .../yfd/platform/qgc_env/wq/service/EnvWqDataService.java | 2 ++ .../qgc_env/wq/service/impl/EnvWqDataServiceImpl.java | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java index 496df412..76f13c1f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/controller/EnvWqDataController.java @@ -30,6 +30,12 @@ public class EnvWqDataController { return ResponseResult.successData(envWqDataService.processKendoList(dataSourceRequest)); } + @PostMapping("/compare/GetKendoListCust") + @Operation(summary = "水质达标情况同比统计查询") + public ResponseResult getCompareKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(envWqDataService.getCompareKendoList(dataSourceRequest)); + } + @PostMapping("/data/GetKendoListCust") @Operation(summary = "水质明细数据查询") public ResponseResult getDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java index 7bc84531..7e351ad7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/EnvWqDataService.java @@ -8,6 +8,8 @@ public interface EnvWqDataService { DataSourceResult processKendoList(DataSourceRequest dataSourceRequest); + DataSourceResult getCompareKendoList(DataSourceRequest dataSourceRequest); + DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest); DataSourceResult getStbprpYsByStcd(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index b5750551..9fc5562a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -91,6 +91,11 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + @Override + public DataSourceResult getCompareKendoList(DataSourceRequest dataSourceRequest) { + return processKendoList(dataSourceRequest); + } + @Override public DataSourceResult processDataKendoList(DataSourceRequest dataSourceRequest) { boolean calculated = CommonConstant.CALCULATE_SUCCESS.equals( From 93c05da7a8724dfcaf38ab49f25692955496d70e Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 2 Jun 2026 16:28:56 +0800 Subject: [PATCH 33/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index 9fc5562a..f4c224b2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1478,7 +1478,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "wwqtg" -> "T.WWQTG"; case "id" -> "T.ID"; case "tm" -> "T.TM"; - case "type" -> "T.TYPE"; + case "TYPE" -> "T.TYPE"; case "sttype" -> "T.STTYPE"; case "sfdb" -> "T.SFDB"; case "dtinType" -> "T.DTINTYPE"; From 21a11b307636f93deea8ddb5d1d2afc5486af9b2 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 2 Jun 2026 16:34:34 +0800 Subject: [PATCH 34/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/service/impl/EnvWqDataServiceImpl.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index f4c224b2..b0e7efd7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1455,6 +1455,24 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "contains": paramMap.put(key, "%" + filter.getValue() + "%"); return column + " LIKE #{map." + key + "}"; + case "in": { + List list = null; + if (filter.getValue() instanceof List l) { + list = l; + } else if (filter.getValue() instanceof Object[] arr) { + list = Arrays.asList(arr); + } + if (list != null && !list.isEmpty()) { + List placeholders = new ArrayList<>(); + for (Object item : list) { + String itemKey = "envWqParam" + indexHolder[0]++; + paramMap.put(itemKey, item); + placeholders.add("#{map." + itemKey + "}"); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + return ""; + } default: return ""; } From b44a4b932fb81a13dce4fe08753d771b85db7372 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 2 Jun 2026 17:29:37 +0800 Subject: [PATCH 35/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index b0e7efd7..72790e38 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1497,6 +1497,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "id" -> "T.ID"; case "tm" -> "T.TM"; case "TYPE" -> "T.TYPE"; + case "type" -> "T.TYPE"; case "sttype" -> "T.STTYPE"; case "sfdb" -> "T.SFDB"; case "dtinType" -> "T.DTINTYPE"; From d2432c77e969686b553798e5e632dec6bd785e4f Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 09:33:55 +0800 Subject: [PATCH 36/47] =?UTF-8?q?feat:=20=E7=94=B5=E7=AB=99=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 7 + .../eq/entity/vo/EngEqVmsstbprptVo.java | 70 +++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 285 ++++++++++++++++++ 4 files changed, 365 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 86840056..40bbacf3 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.controller; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; @@ -49,6 +50,12 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getWbsbList(dataSourceRequest)); } + @PostMapping("/vmsstbprpt/GetKendoList") + @Operation(summary = "电站统计查询") + public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getVmsstbprptList(dataSourceRequest)); + } + @PostMapping("/evnmAutoMonitor/GetKendoListCust") @Operation(summary = "生态流量监测数量统计") public ResponseResult getEvnmAutoMonitorList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java new file mode 100644 index 00000000..04a7d016 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java @@ -0,0 +1,70 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +@Data +@Schema(description = "电站统计查询") +public class EngEqVmsstbprptVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "站类名称") + private String sttpName; + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "工程名称") + private String ennm; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "工程规模") + private Integer prsc; + + @Schema(description = "建设状态") + private String bldstt; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "环保数据接入状态") + private Integer dtinEnv; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index b1786af6..a851172a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; @@ -15,6 +16,8 @@ public interface EngEqDataService { DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); + DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); + DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest); DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 67d6d7a8..99200f89 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -14,6 +14,7 @@ import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecVo; import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo; @@ -123,6 +124,15 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryWbsbGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryVmsstbprptDetailList(dataSourceRequest, loadOptions); + } + return queryVmsstbprptGroupList(dataSourceRequest, loadOptions); + } + @Override public DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest) { List showIds = findFilterValues(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "showIds"); @@ -253,6 +263,101 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + private DataSourceResult queryVmsstbprptDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildVmsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(buildVmsstbprptViewSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildVmsstbprptDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqVmsstbprptVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryVmsstbprptGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapVmsstbprptColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapVmsstbprptColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(buildVmsstbprptViewSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapVmsstbprptColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildVmsstbprptGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal((long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private DataSourceResult queryWbsbDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -278,6 +383,158 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + private String buildVmsstbprptViewSql() { + return "SELECT " + + "'ENG' AS sttpCode, " + + "'电站' AS sttpName, " + + "eng.STCD AS stcd, " + + "eng.ENNM AS stnm, " + + "eng.ENNM AS ennm, " + + "eng.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "eng.RVCD AS rvcd, " + + "rv.RVNM AS rvcdName, " + + "eng.PRSC AS prsc, " + + "eng.BLDSTT AS bldstt, " + + "eng.BLDSTT_CODE AS bldsttCcode, " + + "eng.DTIN_ENV AS dtinEnv, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + + "NVL(eng.ORDER_INDEX, 999999) AS siteStepSort " + + "FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "WHERE NVL(eng.IS_DELETED, 0) = 0"; + } + + private String buildVmsstbprptDetailSelectSql(List selectFields) { + Map columns = vmsstbprptFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map vmsstbprptFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("sttpCode", "t.sttpCode AS sttpCode"); + columns.put("sttpName", "t.sttpName AS sttpName"); + columns.put("stcd", "t.stcd AS stcd"); + columns.put("stnm", "t.stnm AS stnm"); + columns.put("ennm", "t.ennm AS ennm"); + columns.put("baseId", "t.baseId AS baseId"); + columns.put("baseName", "t.baseName AS baseName"); + columns.put("hbrvcd", "t.hbrvcd AS hbrvcd"); + columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName"); + columns.put("rvcd", "t.rvcd AS rvcd"); + columns.put("rvcdName", "t.rvcdName AS rvcdName"); + columns.put("prsc", "t.prsc AS prsc"); + columns.put("bldstt", "t.bldstt AS bldstt"); + columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode"); + columns.put("dtinEnv", "t.dtinEnv AS dtinEnv"); + columns.put("baseStepSort", "t.baseStepSort AS baseStepSort"); + columns.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort"); + columns.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort"); + columns.put("siteStepSort", "t.siteStepSort AS siteStepSort"); + return columns; + } + + private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildVmsstbprptLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildVmsstbprptFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildVmsstbprptLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapVmsstbprptColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildGenericCondition(column, filter, paramMap, indexHolder, false); + } + + private String buildVmsstbprptDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY NVL(t.baseStepSort, 999999) ASC, NVL(t.rvcdStepSort, 999999) ASC, " + + "NVL(t.rstcdStepSort, 999999) ASC, NVL(t.siteStepSort, 999999) ASC, t.stcd ASC"; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapVmsstbprptColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + if (orders.isEmpty()) { + return " ORDER BY NVL(t.baseStepSort, 999999) ASC, NVL(t.rvcdStepSort, 999999) ASC, " + + "NVL(t.rstcdStepSort, 999999) ASC, NVL(t.siteStepSort, 999999) ASC, t.stcd ASC"; + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildVmsstbprptGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapVmsstbprptColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + private DataSourceResult queryWbsbGroupList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { List groups = dataSourceRequest.getGroup(); @@ -1401,6 +1658,34 @@ public class EngEqDataServiceImpl implements EngEqDataService { }; } + private String mapVmsstbprptColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "sttpCode" -> "t.sttpCode"; + case "sttpName" -> "t.sttpName"; + case "stcd" -> "t.stcd"; + case "stnm" -> "t.stnm"; + case "ennm" -> "t.ennm"; + case "baseId" -> "t.baseId"; + case "baseName" -> "t.baseName"; + case "hbrvcd" -> "t.hbrvcd"; + case "hbrvcdName" -> "t.hbrvcdName"; + case "rvcd" -> "t.rvcd"; + case "rvcdName" -> "t.rvcdName"; + case "prsc" -> "t.prsc"; + case "bldstt" -> "t.bldstt"; + case "bldsttCcode" -> "t.bldsttCcode"; + case "dtinEnv" -> "t.dtinEnv"; + case "baseStepSort" -> "NVL(t.baseStepSort, 999999)"; + case "rvcdStepSort" -> "NVL(t.rvcdStepSort, 999999)"; + case "rstcdStepSort" -> "NVL(t.rstcdStepSort, 999999)"; + case "siteStepSort" -> "NVL(t.siteStepSort, 999999)"; + default -> null; + }; + } + private String mapWbsbColumn(String field) { if (StrUtil.isBlank(field)) { return null; From a2e81f5f42c1c0a9530583c62a8ab924e6ecf0c0 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 10:06:44 +0800 Subject: [PATCH 37/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E8=BE=BE=E6=A0=87=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 7 + .../qgc_eng/eq/entity/vo/EngEqIntervalVo.java | 125 ++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 646 ++++++++++++++++++ 4 files changed, 781 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqIntervalVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 40bbacf3..ce3f64d0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.controller; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; @@ -32,6 +33,12 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getKendoListCust(dataSourceRequest)); } + @PostMapping("/interval/GetKendoListCust") + @Operation(summary = "生态流量达标情况") + public ResponseResult getIntervalKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getIntervalKendoListCust(dataSourceRequest)); + } + @PostMapping("/interval/qgc/getQgcStaticData") @Operation(summary = "生态流量达标率区间范围统计(一级页面)") public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqIntervalVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqIntervalVo.java new file mode 100644 index 00000000..e988df2e --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqIntervalVo.java @@ -0,0 +1,125 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "生态流量达标情况") +public class EngEqIntervalVo { + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "工程名称") + private String ennm; + + @Schema(description = "站类") + private String sttp; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal dtmel; + + @Schema(description = "是否接入") + private Integer dtin; + + @Schema(description = "环保数据接入状态") + private Integer dtinEnv; + + @Schema(description = "工程规模") + private Integer prsc; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "生态流量限值") + private BigDecimal qecLimit; + + @Schema(description = "生态流量") + private BigDecimal qec; + + @Schema(description = "坝上水位") + private BigDecimal rz; + + @Schema(description = "坝下水位") + private BigDecimal dz; + + @Schema(description = "生态流量达标率") + private BigDecimal qecRate; + + @Schema(description = "去年同期生态流量达标率") + private BigDecimal beforeQecRate; + + @Schema(description = "生态流量达标率区间") + private String qecInterval; + + @Schema(description = "锚点状态") + private String anchoPointState; + + @Schema(description = "环保部达标数") + private Integer qecSfdbHy; + + @Schema(description = "环保部不达标数") + private Integer qecSfdbHn; + + @Schema(description = "环保部统计数") + private Integer qecSfdbCount; + + @Schema(description = "环保部异常数") + private Integer qecSfdbHo; + + @Schema(description = "入库流量合计") + private BigDecimal qiSum; + + @Schema(description = "出库流量合计") + private BigDecimal qoSum; + + @Schema(description = "补水总量") + private BigDecimal fillWater; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index a851172a..2932c505 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; @@ -12,6 +13,8 @@ public interface EngEqDataService { DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getIntervalKendoListCust(DataSourceRequest dataSourceRequest); + QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 99200f89..f52967b0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -12,6 +12,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.enums.QecIntervalEnum; import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; @@ -32,6 +33,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.math.RoundingMode; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -50,6 +52,15 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getIntervalKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryIntervalDetailList(dataSourceRequest, loadOptions); + } + return queryIntervalGroupList(dataSourceRequest, loadOptions); + } + @Override public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { List intervalList = queryStaticIntervals(dataSourceRequest, type); @@ -263,6 +274,486 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + private DataSourceResult queryIntervalDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + String viewSql = buildIntervalViewSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildIntervalDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(viewSql) + .append(") t WHERE 1 = 1 "); + + String filterSql = buildIntervalFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getAggregate()) + && "average".equalsIgnoreCase(dataSourceRequest.getAggregate().get(0).getAggregate())) { + return buildIntervalAggregateResult(dataSourceRequest, sql.toString(), paramMap); + } + + sql.append(buildIntervalDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqIntervalVo.class); + postProcessIntervalList(list); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryIntervalGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + String viewSql = buildIntervalViewSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapIntervalColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapIntervalColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(viewSql) + .append(") t WHERE 1 = 1 "); + + String filterSql = buildIntervalFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapIntervalColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildIntervalGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult buildIntervalAggregateResult(DataSourceRequest dataSourceRequest, + String sourceSql, + Map paramMap) { + List aggregateItems = new ArrayList<>(); + for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) { + if (item == null || !"average".equalsIgnoreCase(item.getAggregate())) { + continue; + } + String column = mapIntervalColumn(item.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + aggregateItems.add("AVG(" + column + ") AS " + item.getField()); + } + if (aggregateItems.isEmpty()) { + DataSourceResult emptyResult = new DataSourceResult<>(); + emptyResult.setData(new ArrayList<>()); + emptyResult.setTotal(0L); + emptyResult.setAggregates(new HashMap<>()); + return emptyResult; + } + + String sql = "SELECT " + String.join(", ", aggregateItems) + " FROM (" + sourceSql + ")"; + List> list = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + DataSourceResult result = new DataSourceResult<>(); + result.setData((List) (List) list); + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private void postProcessIntervalList(List list) { + if (CollUtil.isEmpty(list)) { + return; + } + for (EngEqIntervalVo item : list) { + if (item == null || item.getQiSum() == null || item.getQoSum() == null) { + continue; + } + item.setFillWater(item.getQoSum().subtract(item.getQiSum())); + } + } + + private String buildIntervalViewSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + boolean hasTmFilter = hasIntervalTmFilter(filter); + String beforeMetricSql = hasTmFilter + ? buildIntervalMetricSourceSql(filter, paramMap, indexHolder, -1) + : "SELECT CAST(NULL AS VARCHAR2(36)) AS STCD, CAST(NULL AS NUMBER(18,6)) AS QEC_RATE FROM DUAL"; + + return "SELECT " + + "eng.STCD AS stcd, " + + "eng.ENNM AS stnm, " + + "eng.ENNM AS ennm, " + + "'ENG' AS sttp, " + + "'ENG' AS sttpCode, " + + "eng.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "addv.ADDVNM AS addvcdName, " + + "eng.LGTD AS lgtd, " + + "eng.LTTD AS lttd, " + + "eng.ELEV AS dtmel, " + + "eng.DTIN AS dtin, " + + "eng.DTIN_ENV AS dtinEnv, " + + "eng.PRSC AS prsc, " + + "eng.BLDSTT_CODE AS bldsttCcode, " + + "met.QI AS qi, " + + "met.QO AS qo, " + + "met.QEC_LIMIT AS qecLimit, " + + "met.QEC AS qec, " + + "met.RZ AS rz, " + + "met.DZ AS dz, " + + buildIntervalRateDisplaySql("met.QEC_RATE") + " AS qecRate, " + + buildIntervalRateDisplaySql("beforeMet.QEC_RATE") + " AS beforeQecRate, " + + buildIntervalQecIntervalSql() + " AS qecInterval, " + + buildIntervalAnchorPointStateSql() + " AS anchoPointState, " + + "met.QEC_SFDB_HY AS qecSfdbHy, " + + "met.QEC_SFDB_HN AS qecSfdbHn, " + + "met.QEC_SFDB_COUNT AS qecSfdbCount, " + + "met.QEC_SFDB_HO AS qecSfdbHo, " + + "met.QI_SUM AS qiSum, " + + "met.QO_SUM AS qoSum, " + + "CAST(NULL AS NUMBER(18,6)) AS fillWater, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(rstSort.SORT, 999999) AS rstcdStepSort, " + + "NVL(siteSort.SORT, 999999) AS siteStepSort " + + "FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = eng.STCD " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " + + "LEFT JOIN (" + buildIntervalMetricSourceSql(filter, paramMap, indexHolder, 0) + ") met ON met.STCD = eng.STCD " + + "LEFT JOIN (" + beforeMetricSql + ") beforeMet ON beforeMet.STCD = eng.STCD " + + "LEFT JOIN (" + buildIntervalNoRuleSql() + ") qecNoRule ON qecNoRule.STCD = eng.STCD " + + "WHERE NVL(eng.IS_DELETED, 0) = 0 AND NVL(eng.BLDSTT_CODE, 0) = 2"; + } + + private String buildIntervalMetricSourceSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + int yearOffset) { + String qecTimeFilter = buildIntervalTmFilterCondition(filter, "qec.DT", paramMap, indexHolder, yearOffset); + String runTimeFilter = buildIntervalTmFilterCondition(filter, "run.TM", paramMap, indexHolder, yearOffset); + return "SELECT qec.STCD, " + + "AVG(runAgg.QI) AS QI, " + + "AVG(runAgg.QO) AS QO, " + + "AVG(qec.QEC_LIMIT) AS QEC_LIMIT, " + + "AVG(qec.QEC) AS QEC, " + + "AVG(runAgg.RZ) AS RZ, " + + "AVG(runAgg.DZ) AS DZ, " + + buildIntervalQecRateSql("qec") + " AS QEC_RATE, " + + buildIntervalQrSql("qec") + " AS QR, " + + "SUM(CASE WHEN qec.SFDB = 1 THEN 1 ELSE 0 END) AS QEC_SFDB_HY, " + + "SUM(CASE WHEN qec.SFDB = 0 THEN 1 ELSE 0 END) AS QEC_SFDB_HN, " + + "SUM(CASE WHEN qec.SFDB IN (0, 1) THEN 1 ELSE 0 END) AS QEC_SFDB_COUNT, " + + "SUM(CASE WHEN qec.SFDB NOT IN (0, 1) OR qec.SFDB IS NULL THEN 1 ELSE 0 END) AS QEC_SFDB_HO, " + + "SUM(NVL(runAgg.QI_SUM_DAY, 0)) AS QI_SUM, " + + "SUM(NVL(runAgg.QO_SUM_DAY, 0)) AS QO_SUM " + + "FROM SD_QECDAY_S qec " + + "LEFT JOIN (SELECT run.STCD, TRUNC(run.TM) AS DT, AVG(run.QI) AS QI, AVG(run.QO) AS QO, AVG(run.RZ) AS RZ, AVG(run.DZ) AS DZ, " + + "SUM(run.QI) AS QI_SUM_DAY, SUM(run.QO) AS QO_SUM_DAY " + + "FROM SD_HYDROPW_R run WHERE NVL(run.IS_DELETED, 0) = 0 " + + (StrUtil.isNotBlank(runTimeFilter) ? " AND " + runTimeFilter : "") + + " GROUP BY run.STCD, TRUNC(run.TM)) runAgg ON runAgg.STCD = qec.STCD AND runAgg.DT = qec.DT " + + "WHERE NVL(qec.IS_DELETED, 0) = 0 " + + (StrUtil.isNotBlank(qecTimeFilter) ? " AND " + qecTimeFilter : "") + + " GROUP BY qec.STCD"; + } + + private String buildIntervalQecRateSql(String alias) { + return "CASE " + + "WHEN COUNT(*) = 0 THEN NULL " + + "WHEN SUM(CASE WHEN " + alias + ".QEC_LIMIT IS NULL AND " + alias + ".MWR_LIMIT IS NULL AND " + alias + ".AVQ_LIMIT IS NULL THEN 0 ELSE 1 END) = 0 THEN -1 " + + "WHEN SUM(CASE WHEN (" + alias + ".QEC_LIMIT IS NOT NULL OR " + alias + ".MWR_LIMIT IS NOT NULL OR " + alias + ".AVQ_LIMIT IS NOT NULL) AND " + alias + ".QEC IS NULL THEN 0 ELSE 1 END) = 0 THEN -2 " + + "WHEN SUM(CASE " + + "WHEN " + alias + ".SFDB IN (0, 1) THEN 1 " + + "WHEN " + alias + ".SFDB = 2 AND " + alias + ".MWR_SFDB IN (0, 1) THEN 1 " + + "WHEN " + alias + ".MWR_SFDB = 2 AND " + alias + ".AVQ_SFDB IN (0, 1) THEN 1 " + + "ELSE 0 END) = 0 THEN NULL " + + "ELSE ((SUM(CASE " + + "WHEN " + alias + ".SFDB = 1 THEN 1 " + + "WHEN " + alias + ".SFDB = 0 THEN 0 " + + "WHEN " + alias + ".SFDB = 2 AND " + alias + ".MWR_SFDB = 1 THEN 1 " + + "WHEN " + alias + ".SFDB = 2 AND " + alias + ".MWR_SFDB = 0 THEN 0 " + + "WHEN " + alias + ".MWR_SFDB = 2 AND " + alias + ".AVQ_SFDB = 1 THEN 1 " + + "WHEN " + alias + ".MWR_SFDB = 2 AND " + alias + ".AVQ_SFDB = 0 THEN 0 " + + "ELSE 0 END) / NULLIF(SUM(CASE " + + "WHEN " + alias + ".SFDB IN (0, 1) THEN 1 " + + "WHEN " + alias + ".SFDB = 2 AND " + alias + ".MWR_SFDB IN (0, 1) THEN 1 " + + "WHEN " + alias + ".MWR_SFDB = 2 AND " + alias + ".AVQ_SFDB IN (0, 1) THEN 1 " + + "ELSE 0 END), 0)) * 100) END"; + } + + private String buildIntervalQrSql(String alias) { + return "CASE " + + "WHEN COUNT(*) = SUM(CASE WHEN " + alias + ".SFDB = 2 THEN 1 ELSE 0 END) THEN -1 " + + "WHEN COUNT(*) = SUM(CASE WHEN " + alias + ".SFDB = 3 THEN 1 ELSE 0 END) THEN -2 " + + "WHEN SUM(CASE WHEN " + alias + ".SFDB = 2 THEN 1 ELSE 0 END) > 0 " + + " AND COUNT(*) = SUM(CASE WHEN " + alias + ".SFDB = 2 THEN 1 ELSE 0 END) " + + " + SUM(CASE WHEN " + alias + ".SFDB = 3 THEN 1 ELSE 0 END) " + + " + SUM(CASE WHEN " + alias + ".SFDB IS NULL THEN 1 ELSE 0 END) THEN -1 " + + "WHEN SUM(CASE WHEN " + alias + ".SFDB = 2 THEN 1 ELSE 0 END) = 0 " + + " AND COUNT(*) = SUM(CASE WHEN " + alias + ".SFDB = 2 THEN 1 ELSE 0 END) " + + " + SUM(CASE WHEN " + alias + ".SFDB = 3 THEN 1 ELSE 0 END) " + + " + SUM(CASE WHEN " + alias + ".SFDB IS NULL THEN 1 ELSE 0 END) THEN -2 " + + "END"; + } + + private String buildIntervalAnchorPointStateSql() { + return "CASE " + + "WHEN (met.QEC_RATE IS NULL OR met.QEC_RATE IN (-1, -2)) AND eng.PRSC = 1 THEN 'eef_1_none' " + + "WHEN met.QEC_RATE >= 95 AND eng.PRSC = 1 THEN 'eef_1_1' " + + "WHEN met.QEC_RATE >= 90 AND met.QEC_RATE < 95 AND eng.PRSC = 1 THEN 'eef_1_2' " + + "WHEN met.QEC_RATE >= 80 AND met.QEC_RATE < 90 AND eng.PRSC = 1 THEN 'eef_1_3' " + + "WHEN met.QEC_RATE < 80 AND eng.PRSC = 1 THEN 'eef_1_4' " + + "WHEN (met.QEC_RATE IS NULL OR met.QEC_RATE IN (-1, -2)) AND eng.PRSC IN (2, 3) THEN 'eef_2_none' " + + "WHEN met.QEC_RATE >= 95 AND eng.PRSC IN (2, 3) THEN 'eef_2_1' " + + "WHEN met.QEC_RATE >= 90 AND met.QEC_RATE < 95 AND eng.PRSC IN (2, 3) THEN 'eef_2_2' " + + "WHEN met.QEC_RATE >= 80 AND met.QEC_RATE < 90 AND eng.PRSC IN (2, 3) THEN 'eef_2_3' " + + "WHEN met.QEC_RATE < 80 AND eng.PRSC IN (2, 3) THEN 'eef_2_4' " + + "END"; + } + + private String buildIntervalRateDisplaySql(String column) { + return "CASE WHEN " + column + " IN (-1, -2) THEN NULL ELSE " + column + " END"; + } + + private String buildIntervalQecIntervalSql() { + return "CASE " + + "WHEN qecNoRule.STCD IS NOT NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN met.QEC_RATE = -1 THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN met.QEC_RATE IS NULL OR met.QEC_RATE = -2 THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + + "WHEN met.QEC_RATE >= 95 THEN '" + QecIntervalEnum.QEC_STLL_1_DY95.getCode() + "' " + + "WHEN met.QEC_RATE >= 90 AND met.QEC_RATE < 95 THEN '" + QecIntervalEnum.QEC_STLL_2_90AND95.getCode() + "' " + + "WHEN met.QEC_RATE >= 80 AND met.QEC_RATE < 90 THEN '" + QecIntervalEnum.QEC_STLL_3_80AND90.getCode() + "' " + + "WHEN met.QEC_RATE < 80 THEN '" + QecIntervalEnum.QEC_STLL_4_XY80.getCode() + "' " + + "END"; + } + + private String buildIntervalNoRuleSql() { + return "SELECT engRule.STCD " + + "FROM SD_ENGINFO_B_H engRule " + + "WHERE NVL(engRule.IS_DELETED, 0) = 0 " + + " AND engRule.AVQ IS NULL " + + " AND NOT EXISTS ( " + + " SELECT 1 FROM MS_WARN_RULE_B rule " + + " INNER JOIN MS_WARN_RULE_DETAIL_B detail ON detail.RULE_ID = rule.ID AND NVL(detail.IS_DELETED, 0) = 0 " + + " WHERE NVL(rule.IS_DELETED, 0) = 0 " + + " AND rule.RULE_TYPE IN ('EQMN', 'EQMNMWR') " + + " AND rule.STCD = engRule.STCD " + + " )"; + } + + private String buildIntervalDetailSelectSql(List selectFields) { + Map columns = intervalFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map intervalFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("stcd", "t.stcd AS stcd"); + columns.put("stnm", "t.stnm AS stnm"); + columns.put("ennm", "t.ennm AS ennm"); + columns.put("sttp", "t.sttp AS sttp"); + columns.put("sttpCode", "t.sttpCode AS sttpCode"); + columns.put("baseId", "t.baseId AS baseId"); + columns.put("baseName", "t.baseName AS baseName"); + columns.put("hbrvcd", "t.hbrvcd AS hbrvcd"); + columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName"); + columns.put("addvcdName", "t.addvcdName AS addvcdName"); + columns.put("lgtd", "t.lgtd AS lgtd"); + columns.put("lttd", "t.lttd AS lttd"); + columns.put("dtmel", "t.dtmel AS dtmel"); + columns.put("dtin", "t.dtin AS dtin"); + columns.put("dtinEnv", "t.dtinEnv AS dtinEnv"); + columns.put("prsc", "t.prsc AS prsc"); + columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode"); + columns.put("qi", "t.qi AS qi"); + columns.put("qo", "t.qo AS qo"); + columns.put("qecLimit", "t.qecLimit AS qecLimit"); + columns.put("qec", "t.qec AS qec"); + columns.put("rz", "t.rz AS rz"); + columns.put("dz", "t.dz AS dz"); + columns.put("qecRate", "t.qecRate AS qecRate"); + columns.put("beforeQecRate", "t.beforeQecRate AS beforeQecRate"); + columns.put("qecInterval", "t.qecInterval AS qecInterval"); + columns.put("anchoPointState", "t.anchoPointState AS anchoPointState"); + columns.put("qecSfdbHy", "t.qecSfdbHy AS qecSfdbHy"); + columns.put("qecSfdbHn", "t.qecSfdbHn AS qecSfdbHn"); + columns.put("qecSfdbCount", "t.qecSfdbCount AS qecSfdbCount"); + columns.put("qecSfdbHo", "t.qecSfdbHo AS qecSfdbHo"); + columns.put("qiSum", "t.qiSum AS qiSum"); + columns.put("qoSum", "t.qoSum AS qoSum"); + columns.put("fillWater", "t.fillWater AS fillWater"); + columns.put("baseStepSort", "t.baseStepSort AS baseStepSort"); + columns.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort"); + columns.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort"); + columns.put("siteStepSort", "t.siteStepSort AS siteStepSort"); + return columns; + } + + private String buildIntervalFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + if ("tm".equalsIgnoreCase(filter.getField())) { + return ""; + } + return buildIntervalLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildIntervalFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildIntervalLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapIntervalColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildGenericCondition(column, filter, paramMap, indexHolder, false); + } + + private String buildIntervalDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, stcd ASC"; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapIntervalColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + if (orders.isEmpty()) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, stcd ASC"; + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildIntervalGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapIntervalColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + private DataSourceResult queryVmsstbprptDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -1658,6 +2149,161 @@ public class EngEqDataServiceImpl implements EngEqDataService { }; } + private boolean hasIntervalTmFilter(DataSourceRequest.FilterDescriptor filter) { + if (filter == null) { + return false; + } + if ("tm".equalsIgnoreCase(filter.getField())) { + return true; + } + if (CollUtil.isEmpty(filter.getFilters())) { + return false; + } + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + if (hasIntervalTmFilter(child)) { + return true; + } + } + return false; + } + + private String buildIntervalTmFilterCondition(DataSourceRequest.FilterDescriptor filter, + String column, + Map paramMap, + int[] indexHolder, + int yearOffset) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + if (!"tm".equalsIgnoreCase(filter.getField())) { + return ""; + } + return buildIntervalTmLeafCondition(filter, column, paramMap, indexHolder, yearOffset); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildIntervalTmFilterCondition(child, column, paramMap, indexHolder, yearOffset); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildIntervalTmLeafCondition(DataSourceRequest.FilterDescriptor filter, + String column, + Map paramMap, + int[] indexHolder, + int yearOffset) { + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("in".equals(operator)) { + List values = normalizeValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + Object shifted = shiftTemporalValue(item, yearOffset); + String key = "intervalTmParam" + indexHolder[0]++; + paramMap.put(key, shifted); + placeholders.add(buildEqValueExpr(key, true, shifted)); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if (value == null) { + return ""; + } + Object shiftedValue = shiftTemporalValue(value, yearOffset); + String key = "intervalTmParam" + indexHolder[0]++; + paramMap.put(key, shiftedValue); + String valueExpr = buildEqValueExpr(key, true, shiftedValue); + return switch (operator) { + case "eq" -> column + " = " + valueExpr; + case "neq" -> column + " <> " + valueExpr; + case "gt" -> column + " > " + valueExpr; + case "gte" -> column + " >= " + valueExpr; + case "lt" -> column + " < " + valueExpr; + case "lte" -> column + " <= " + valueExpr; + default -> ""; + }; + } + + private Object shiftTemporalValue(Object value, int yearOffset) { + if (value == null || yearOffset == 0) { + return value; + } + String text = String.valueOf(value).trim(); + if (StrUtil.isBlank(text)) { + return value; + } + if (text.length() <= 10) { + LocalDate date = LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + return date.plusYears(yearOffset).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + } + LocalDateTime dateTime = LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + return dateTime.plusYears(yearOffset).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } + + private String mapIntervalColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "stcd" -> "t.stcd"; + case "stnm", "ennm" -> "t.ennm"; + case "sttp", "sttpCode" -> "t.sttpCode"; + case "baseId" -> "t.baseId"; + case "baseName" -> "t.baseName"; + case "hbrvcd" -> "t.hbrvcd"; + case "hbrvcdName" -> "t.hbrvcdName"; + case "addvcdName" -> "t.addvcdName"; + case "lgtd" -> "t.lgtd"; + case "lttd" -> "t.lttd"; + case "dtmel" -> "t.dtmel"; + case "dtin" -> "t.dtin"; + case "dtinEnv" -> "t.dtinEnv"; + case "prsc" -> "t.prsc"; + case "bldsttCcode", "bldstt" -> "t.bldsttCcode"; + case "qi" -> "t.qi"; + case "qo" -> "t.qo"; + case "qecLimit" -> "t.qecLimit"; + case "qec" -> "t.qec"; + case "rz" -> "t.rz"; + case "dz", "ddz" -> "t.dz"; + case "qecRate" -> "t.qecRate"; + case "beforeQecRate" -> "t.beforeQecRate"; + case "qecInterval" -> "t.qecInterval"; + case "anchoPointState" -> "t.anchoPointState"; + case "qecSfdbHy" -> "t.qecSfdbHy"; + case "qecSfdbHn" -> "t.qecSfdbHn"; + case "qecSfdbCount" -> "t.qecSfdbCount"; + case "qecSfdbHo" -> "t.qecSfdbHo"; + case "qiSum" -> "t.qiSum"; + case "qoSum" -> "t.qoSum"; + case "fillWater" -> "(t.qoSum - t.qiSum)"; + case "baseStepSort" -> "NVL(t.baseStepSort, 999999)"; + case "rvcdStepSort" -> "NVL(t.rvcdStepSort, 999999)"; + case "rstcdStepSort" -> "NVL(t.rstcdStepSort, 999999)"; + case "siteStepSort" -> "NVL(t.siteStepSort, 999999)"; + default -> null; + }; + } + private String mapVmsstbprptColumn(String field) { if (StrUtil.isBlank(field)) { return null; From 312925b9bcfbe24ec88dd13b156d0ca2f452143b Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 11:47:27 +0800 Subject: [PATCH 38/47] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/service/impl/EngEqDataServiceImpl.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index f52967b0..1d251c5c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -1099,6 +1099,10 @@ public class EngEqDataServiceImpl implements EngEqDataService { private List queryStaticIntervals(DataSourceRequest dataSourceRequest, String type) { StringBuilder sql = new StringBuilder(); Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "dtin")); + String validTable = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R"; + String validTimeColumn = "day".equalsIgnoreCase(type) ? "valid.DT" : "valid.TM"; sql.append("SELECT ") .append("eng.STCD AS stcd, ") .append(buildStaticIntervalSql("agg.QEC_RATE", "agg.QR", "qecNoRule.STCD", false)) @@ -1109,7 +1113,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { .append(" AS avqInterval ") .append("FROM SD_ENGINFO_B_H eng ") .append("LEFT JOIN (") - .append(buildStaticAggregateSql(type, dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0})) + .append(buildStaticAggregateSql(type, dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder)) .append(") agg ON agg.STCD = eng.STCD ") .append("LEFT JOIN (") .append(buildStaticRuleSql("EQMN")) @@ -1123,11 +1127,21 @@ public class EngEqDataServiceImpl implements EngEqDataService { .append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ") .append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ") .append("WHERE NVL(eng.IS_DELETED, 0) = 0 ") - .append(" AND NVL(eng.DTIN, 0) = 1 ") - .append(" AND NVL(eng.BLDSTT_CODE, 0) = 2 ") - .append(" AND EXISTS (SELECT 1 FROM SD_QEC_R valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0) "); + .append(" AND NVL(eng.BLDSTT_CODE, 0) = 2 "); + if (!hasDtinFilter) { + sql.append(" AND NVL(eng.DTIN, 0) = 1 "); + } + sql.append(" AND EXISTS (SELECT 1 FROM ") + .append(validTable) + .append(" valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0"); + String validTimeFilter = buildStaticTimeFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, indexHolder, validTimeColumn); + if (StrUtil.isNotBlank(validTimeFilter)) { + sql.append(" AND ").append(validTimeFilter); + } + sql.append(") "); - String stationFilter = buildStaticStationFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + String stationFilter = buildStaticStationFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); if (StrUtil.isNotBlank(stationFilter)) { sql.append(" AND ").append(stationFilter).append(" "); } @@ -1347,7 +1361,8 @@ public class EngEqDataServiceImpl implements EngEqDataService { Map paramMap, int[] indexHolder) { String tableName = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R"; - String timeFilter = buildStaticTimeFilterCondition(filter, paramMap, indexHolder,type); + String timeColumn = "day".equalsIgnoreCase(type) ? "data.DT" : "data.TM"; + String timeFilter = buildStaticTimeFilterCondition(filter, paramMap, indexHolder, timeColumn); StringBuilder sql = new StringBuilder(); sql.append("SELECT data.STCD, ") .append("(CASE WHEN SUM(CASE WHEN data.SFDB IN (0, 1) THEN 1 ELSE 0 END) = 0 THEN NULL ") @@ -1970,7 +1985,8 @@ public class EngEqDataServiceImpl implements EngEqDataService { private String buildStaticTimeFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, - int[] indexHolder,String type) { + int[] indexHolder, + String timeColumn) { if (filter == null) { return ""; } @@ -1978,20 +1994,14 @@ public class EngEqDataServiceImpl implements EngEqDataService { if (!"tm".equalsIgnoreCase(filter.getField())) { return ""; } - if (type.equals("day")) { - return buildGenericCondition("data.DT", filter, paramMap, indexHolder, true); - }else{ - return buildGenericCondition("data.TM", filter, paramMap, indexHolder, true); - } - - + return buildGenericCondition(timeColumn, filter, paramMap, indexHolder, true); } if (CollUtil.isEmpty(filter.getFilters())) { return ""; } List conditions = new ArrayList<>(); for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { - String childSql = buildStaticTimeFilterCondition(child, paramMap, indexHolder,type); + String childSql = buildStaticTimeFilterCondition(child, paramMap, indexHolder, timeColumn); if (StrUtil.isNotBlank(childSql)) { conditions.add("(" + childSql + ")"); } @@ -2137,6 +2147,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { case "baseName" -> "hb.BASENAME"; case "stnm", "ennm" -> "eng.ENNM"; case "baseId" -> "eng.BASE_ID"; + case "dtin" -> "eng.DTIN"; case "rvcdName" -> "rv.RVNM"; case "addvcdName" -> "addv.ADDVNM"; case "stcd" -> "eng.STCD"; From e7faf1e13cccfcde861b55f8d5afcd4f4f342440 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 14:48:53 +0800 Subject: [PATCH 39/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E8=BE=BE=E6=A0=87=E7=8E=87=E5=B0=8F=E6=97=B6=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1(=E4=BA=8C=E7=BA=A7=E9=A1=B5=E9=9D=A2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 7 + .../eq/entity/vo/EngEqHourIntervalVo.java | 137 +++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 487 +++++++++++++++++- 4 files changed, 633 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index ce3f64d0..092e4be2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_eng.eq.controller; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -39,6 +40,12 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getIntervalKendoListCust(dataSourceRequest)); } + @PostMapping("/interval/qgc/hour/GetKendoListCust") + @Operation(summary = "生态流量达标率小时统计(二级页面)") + public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getQgcHourKendoListCust(dataSourceRequest)); + } + @PostMapping("/interval/qgc/getQgcStaticData") @Operation(summary = "生态流量达标率区间范围统计(一级页面)") public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java new file mode 100644 index 00000000..fcc87f1e --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java @@ -0,0 +1,137 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "生态流量达标率小时统计") +public class EngEqHourIntervalVo { + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "工程名称") + private String ennm; + + @Schema(description = "站类") + private String sttp; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal dtmel; + + @Schema(description = "装机容量") + private BigDecimal ttpwr; + + @Schema(description = "正常蓄水位") + private BigDecimal normz; + + @Schema(description = "多年平均流量") + private BigDecimal avq; + + @Schema(description = "是否接入") + private Integer dtin; + + @Schema(description = "环保数据接入状态") + private Integer dtinEnv; + + @Schema(description = "工程规模") + private Integer prsc; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "生态流量") + private BigDecimal qec; + + @Schema(description = "坝上水位") + private BigDecimal rz; + + @Schema(description = "生态流量达标率") + private BigDecimal qecRate; + + @Schema(description = "水利部生态流量达标率") + private BigDecimal mwrRate; + + @Schema(description = "多年平均生态流量达标率") + private BigDecimal avqRate; + + @Schema(description = "环保部区间") + private String qecInterval; + + @Schema(description = "水利部区间") + private String mwrInterval; + + @Schema(description = "多年平均区间") + private String avqInterval; + + @Schema(description = "环保部锚点状态") + private String anchoPointState; + + @Schema(description = "水利部锚点状态") + private String mwrPointState; + + @Schema(description = "多年平均锚点状态") + private String avqPointState; + + @Schema(description = "入库流量合计") + private BigDecimal qiSum; + + @Schema(description = "出库流量合计") + private BigDecimal qoSum; + + @Schema(description = "补水总量") + private BigDecimal fillWater; + + @Schema(description = "标题名称") + private String titleName; + + @Schema(description = "生态类型") + private String eqtp; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index 2932c505..9e3e7031 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; @@ -15,6 +16,8 @@ public interface EngEqDataService { DataSourceResult getIntervalKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest); + QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 1d251c5c..b0aed9b3 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -12,6 +12,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.enums.QecIntervalEnum; import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; @@ -61,6 +62,15 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryIntervalGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryHourIntervalDetailList(dataSourceRequest, loadOptions); + } + return queryHourIntervalGroupList(dataSourceRequest, loadOptions); + } + @Override public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { List intervalList = queryStaticIntervals(dataSourceRequest, type); @@ -248,6 +258,473 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + private DataSourceResult queryHourIntervalDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + String viewSql = buildHourIntervalViewSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildHourDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(viewSql) + .append(") t WHERE 1 = 1 "); + + String filterSql = buildHourFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getAggregate()) + && "average".equalsIgnoreCase(dataSourceRequest.getAggregate().get(0).getAggregate())) { + return buildHourIntervalAggregateResult(dataSourceRequest, sql.toString(), paramMap); + } + + sql.append(buildHourDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqHourIntervalVo.class); + postProcessHourIntervalList(list); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryHourIntervalGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + String viewSql = buildHourIntervalViewSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapHourColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapHourColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(viewSql) + .append(") t WHERE 1 = 1 "); + + String filterSql = buildHourFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapHourColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildHourGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult buildHourIntervalAggregateResult(DataSourceRequest dataSourceRequest, + String sourceSql, + Map paramMap) { + List aggregateItems = new ArrayList<>(); + for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) { + if (item == null || !"average".equalsIgnoreCase(item.getAggregate())) { + continue; + } + String column = mapHourColumn(item.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + aggregateItems.add("AVG(" + column + ") AS " + item.getField()); + } + if (aggregateItems.isEmpty()) { + DataSourceResult emptyResult = new DataSourceResult<>(); + emptyResult.setData(new ArrayList<>()); + emptyResult.setTotal(0L); + emptyResult.setAggregates(new HashMap<>()); + return emptyResult; + } + + String sql = "SELECT " + String.join(", ", aggregateItems) + " FROM (" + sourceSql + ")"; + List> list = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + DataSourceResult result = new DataSourceResult<>(); + result.setData((List) (List) list); + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private void postProcessHourIntervalList(List list) { + if (CollUtil.isEmpty(list)) { + return; + } + for (EngEqHourIntervalVo item : list) { + if (item == null) { + continue; + } + if (item.getQiSum() != null && item.getQoSum() != null) { + item.setFillWater(item.getQoSum().subtract(item.getQiSum())); + } + item.setTitleName(item.getEnnm()); + item.setEqtp("QEC"); + } + } + + private String buildHourIntervalViewSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(filter, "dtin")); + String validTimeFilter = buildIntervalTmFilterCondition(filter, "valid.TM", paramMap, indexHolder, 0); + return "SELECT " + + "eng.STCD AS stcd, " + + "eng.ENNM AS stnm, " + + "eng.ENNM AS ennm, " + + "'ENG' AS sttp, " + + "'ENG' AS sttpCode, " + + "eng.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "addv.ADDVNM AS addvcdName, " + + "eng.LGTD AS lgtd, " + + "eng.LTTD AS lttd, " + + "eng.ELEV AS dtmel, " + + "CAST(NULL AS NUMBER(18,6)) AS ttpwr, " + + "CAST(NULL AS NUMBER(18,6)) AS normz, " + + "eng.AVQ AS avq, " + + "eng.DTIN AS dtin, " + + "eng.DTIN_ENV AS dtinEnv, " + + "eng.PRSC AS prsc, " + + "eng.BLDSTT_CODE AS bldsttCcode, " + + "runAgg.QI AS qi, " + + "runAgg.QO AS qo, " + + "runAgg.QEC AS qec, " + + "runAgg.RZ AS rz, " + + buildIntervalRateDisplaySql("met.QEC_RATE") + " AS qecRate, " + + buildIntervalRateDisplaySql("met.MWR_RATE") + " AS mwrRate, " + + buildIntervalRateDisplaySql("met.AVQ_RATE") + " AS avqRate, " + + buildStaticIntervalSql("met.QEC_RATE", "met.QR", "qecNoRule.STCD", false) + " AS qecInterval, " + + buildStaticIntervalSql("met.MWR_RATE", "met.MQR", "mwrNoRule.STCD", false) + " AS mwrInterval, " + + buildStaticIntervalSql("met.AVQ_RATE", "met.AQR", "eng.AVQ", true) + " AS avqInterval, " + + buildHourPointStateSql("met.QEC_RATE") + " AS anchoPointState, " + + buildHourPointStateSql("met.MWR_RATE") + " AS mwrPointState, " + + buildHourPointStateSql("met.AVQ_RATE") + " AS avqPointState, " + + "runAgg.QI_SUM AS qiSum, " + + "runAgg.QO_SUM AS qoSum, " + + "CAST(NULL AS NUMBER(18,6)) AS fillWater, " + + "CAST(NULL AS VARCHAR2(255)) AS titleName, " + + "CAST(NULL AS VARCHAR2(20)) AS eqtp, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(rstSort.SORT, 999999) AS rstcdStepSort, " + + "NVL(siteSort.SORT, 999999) AS siteStepSort " + + "FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = eng.STCD " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " + + "LEFT JOIN (" + buildHourMetricSourceSql(filter, paramMap, indexHolder, 0) + ") met ON met.STCD = eng.STCD " + + "LEFT JOIN (" + buildHourRunSourceSql(filter, paramMap, indexHolder, 0) + ") runAgg ON runAgg.STCD = eng.STCD " + + "LEFT JOIN (" + buildStaticRuleSql("EQMN") + ") qecNoRule ON qecNoRule.STCD = eng.STCD " + + "LEFT JOIN (" + buildStaticRuleSql("EQMNMWR") + ") mwrNoRule ON mwrNoRule.STCD = eng.STCD " + + "WHERE NVL(eng.IS_DELETED, 0) = 0 " + + " AND NVL(eng.BLDSTT_CODE, 0) = 2 " + + (hasDtinFilter ? "" : " AND NVL(eng.DTIN, 0) = 1 ") + + " AND EXISTS (SELECT 1 FROM SD_QEC_R valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0" + + (StrUtil.isNotBlank(validTimeFilter) ? " AND " + validTimeFilter : "") + + ")"; + } + + private String buildHourMetricSourceSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + int yearOffset) { + return buildStaticAggregateSql("hour", filter, paramMap, indexHolder, yearOffset); + } + + private String buildHourRunSourceSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + int yearOffset) { + String timeFilter = buildIntervalTmFilterCondition(filter, "run.TM", paramMap, indexHolder, yearOffset); + return "SELECT run.STCD, " + + "AVG(run.QI) AS QI, " + + "AVG(run.QO) AS QO, " + + "AVG(run.QEC) AS QEC, " + + "AVG(run.RZ) AS RZ, " + + "SUM(run.QI) AS QI_SUM, " + + "SUM(run.QO) AS QO_SUM " + + "FROM SD_HYDROPW_R run " + + "WHERE NVL(run.IS_DELETED, 0) = 0 " + + (StrUtil.isNotBlank(timeFilter) ? " AND " + timeFilter : "") + + " GROUP BY run.STCD"; + } + + private String buildHourPointStateSql(String rateColumn) { + return "CASE " + + "WHEN " + rateColumn + " IS NULL AND eng.PRSC = 1 THEN 'eef_1_none' " + + "WHEN " + rateColumn + " >= 95 AND eng.PRSC = 1 THEN 'eef_1_1' " + + "WHEN " + rateColumn + " >= 90 AND " + rateColumn + " < 95 AND eng.PRSC = 1 THEN 'eef_1_2' " + + "WHEN " + rateColumn + " >= 80 AND " + rateColumn + " < 90 AND eng.PRSC = 1 THEN 'eef_1_3' " + + "WHEN " + rateColumn + " < 80 AND eng.PRSC = 1 THEN 'eef_1_4' " + + "WHEN " + rateColumn + " IS NULL AND eng.PRSC IN (2, 3) THEN 'eef_2_none' " + + "WHEN " + rateColumn + " >= 95 AND eng.PRSC IN (2, 3) THEN 'eef_2_1' " + + "WHEN " + rateColumn + " >= 90 AND " + rateColumn + " < 95 AND eng.PRSC IN (2, 3) THEN 'eef_2_2' " + + "WHEN " + rateColumn + " >= 80 AND " + rateColumn + " < 90 AND eng.PRSC IN (2, 3) THEN 'eef_2_3' " + + "WHEN " + rateColumn + " < 80 AND eng.PRSC IN (2, 3) THEN 'eef_2_4' " + + "END"; + } + + private String buildHourDetailSelectSql(List selectFields) { + Map columns = hourFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map hourFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("stcd", "t.stcd AS stcd"); + columns.put("stnm", "t.stnm AS stnm"); + columns.put("ennm", "t.ennm AS ennm"); + columns.put("sttp", "t.sttp AS sttp"); + columns.put("sttpCode", "t.sttpCode AS sttpCode"); + columns.put("baseId", "t.baseId AS baseId"); + columns.put("baseName", "t.baseName AS baseName"); + columns.put("hbrvcd", "t.hbrvcd AS hbrvcd"); + columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName"); + columns.put("addvcdName", "t.addvcdName AS addvcdName"); + columns.put("lgtd", "t.lgtd AS lgtd"); + columns.put("lttd", "t.lttd AS lttd"); + columns.put("dtmel", "t.dtmel AS dtmel"); + columns.put("ttpwr", "t.ttpwr AS ttpwr"); + columns.put("normz", "t.normz AS normz"); + columns.put("avq", "t.avq AS avq"); + columns.put("dtin", "t.dtin AS dtin"); + columns.put("dtinEnv", "t.dtinEnv AS dtinEnv"); + columns.put("prsc", "t.prsc AS prsc"); + columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode"); + columns.put("qi", "t.qi AS qi"); + columns.put("qo", "t.qo AS qo"); + columns.put("qec", "t.qec AS qec"); + columns.put("rz", "t.rz AS rz"); + columns.put("qecRate", "t.qecRate AS qecRate"); + columns.put("mwrRate", "t.mwrRate AS mwrRate"); + columns.put("avqRate", "t.avqRate AS avqRate"); + columns.put("qecInterval", "t.qecInterval AS qecInterval"); + columns.put("mwrInterval", "t.mwrInterval AS mwrInterval"); + columns.put("avqInterval", "t.avqInterval AS avqInterval"); + columns.put("anchoPointState", "t.anchoPointState AS anchoPointState"); + columns.put("mwrPointState", "t.mwrPointState AS mwrPointState"); + columns.put("avqPointState", "t.avqPointState AS avqPointState"); + columns.put("qiSum", "t.qiSum AS qiSum"); + columns.put("qoSum", "t.qoSum AS qoSum"); + columns.put("fillWater", "t.fillWater AS fillWater"); + columns.put("titleName", "t.titleName AS titleName"); + columns.put("eqtp", "t.eqtp AS eqtp"); + columns.put("baseStepSort", "t.baseStepSort AS baseStepSort"); + columns.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort"); + columns.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort"); + columns.put("siteStepSort", "t.siteStepSort AS siteStepSort"); + return columns; + } + + private String buildHourFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + if ("tm".equalsIgnoreCase(filter.getField())) { + return ""; + } + return buildHourLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildHourFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildHourLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String column = mapHourColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildGenericCondition(column, filter, paramMap, indexHolder, false); + } + + private String buildHourDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, stcd ASC"; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapHourColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + if (orders.isEmpty()) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, stcd ASC"; + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildHourGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapHourColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + + private String mapHourColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "stcd" -> "t.stcd"; + case "stnm", "ennm", "titleName" -> "t.ennm"; + case "sttp", "sttpCode" -> "t.sttpCode"; + case "baseId" -> "t.baseId"; + case "baseName" -> "t.baseName"; + case "hbrvcd" -> "t.hbrvcd"; + case "hbrvcdName" -> "t.hbrvcdName"; + case "addvcdName" -> "t.addvcdName"; + case "lgtd" -> "t.lgtd"; + case "lttd" -> "t.lttd"; + case "dtmel" -> "t.dtmel"; + case "ttpwr" -> "t.ttpwr"; + case "normz" -> "t.normz"; + case "avq" -> "t.avq"; + case "dtin" -> "t.dtin"; + case "dtinEnv" -> "t.dtinEnv"; + case "prsc" -> "t.prsc"; + case "bldsttCcode", "bldstt" -> "t.bldsttCcode"; + case "qi" -> "t.qi"; + case "qo" -> "t.qo"; + case "qec" -> "t.qec"; + case "rz" -> "t.rz"; + case "qecRate" -> "t.qecRate"; + case "mwrRate" -> "t.mwrRate"; + case "avqRate" -> "t.avqRate"; + case "qecInterval" -> "t.qecInterval"; + case "mwrInterval" -> "t.mwrInterval"; + case "avqInterval" -> "t.avqInterval"; + case "anchoPointState" -> "t.anchoPointState"; + case "mwrPointState" -> "t.mwrPointState"; + case "avqPointState" -> "t.avqPointState"; + case "qiSum" -> "t.qiSum"; + case "qoSum" -> "t.qoSum"; + case "fillWater" -> "(t.qoSum - t.qiSum)"; + case "eqtp" -> "t.eqtp"; + case "baseStepSort" -> "NVL(t.baseStepSort, 999999)"; + case "rvcdStepSort" -> "NVL(t.rvcdStepSort, 999999)"; + case "rstcdStepSort" -> "NVL(t.rstcdStepSort, 999999)"; + case "siteStepSort" -> "NVL(t.siteStepSort, 999999)"; + default -> null; + }; + } + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { StringBuilder sql = new StringBuilder(); @@ -1360,9 +1837,17 @@ public class EngEqDataServiceImpl implements EngEqDataService { DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { + return buildStaticAggregateSql(type, filter, paramMap, indexHolder, 0); + } + + private String buildStaticAggregateSql(String type, + DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + int yearOffset) { String tableName = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R"; String timeColumn = "day".equalsIgnoreCase(type) ? "data.DT" : "data.TM"; - String timeFilter = buildStaticTimeFilterCondition(filter, paramMap, indexHolder, timeColumn); + String timeFilter = buildIntervalTmFilterCondition(filter, timeColumn, paramMap, indexHolder, yearOffset); StringBuilder sql = new StringBuilder(); sql.append("SELECT data.STCD, ") .append("(CASE WHEN SUM(CASE WHEN data.SFDB IN (0, 1) THEN 1 ELSE 0 END) = 0 THEN NULL ") From ee340ce3ebe8b01be60423d29ff6b82e10eb5812 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 17:13:21 +0800 Subject: [PATCH 40/47] =?UTF-8?q?fix:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E8=BE=BE=E6=A0=87=E7=8E=87=E5=B0=8F=E6=97=B6=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1(=E4=BA=8C=E7=BA=A7=E9=A1=B5=E9=9D=A2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/service/impl/EngEqDataServiceImpl.java | 49 ++++++++----------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index b0aed9b3..6507c786 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -417,7 +417,6 @@ public class EngEqDataServiceImpl implements EngEqDataService { Map paramMap, int[] indexHolder) { boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(filter, "dtin")); - String validTimeFilter = buildIntervalTmFilterCondition(filter, "valid.TM", paramMap, indexHolder, 0); return "SELECT " + "eng.STCD AS stcd, " + "eng.ENNM AS stnm, " + @@ -446,9 +445,9 @@ public class EngEqDataServiceImpl implements EngEqDataService { buildIntervalRateDisplaySql("met.QEC_RATE") + " AS qecRate, " + buildIntervalRateDisplaySql("met.MWR_RATE") + " AS mwrRate, " + buildIntervalRateDisplaySql("met.AVQ_RATE") + " AS avqRate, " + - buildStaticIntervalSql("met.QEC_RATE", "met.QR", "qecNoRule.STCD", false) + " AS qecInterval, " + - buildStaticIntervalSql("met.MWR_RATE", "met.MQR", "mwrNoRule.STCD", false) + " AS mwrInterval, " + - buildStaticIntervalSql("met.AVQ_RATE", "met.AQR", "eng.AVQ", true) + " AS avqInterval, " + + buildStaticIntervalSql("met.STCD", "met.QEC_RATE", "met.QR", "qecNoRule.STCD", false) + " AS qecInterval, " + + buildStaticIntervalSql("met.STCD", "met.MWR_RATE", "met.MQR", "mwrNoRule.STCD", false) + " AS mwrInterval, " + + buildStaticIntervalSql("met.STCD", "met.AVQ_RATE", "met.AQR", "eng.AVQ", true) + " AS avqInterval, " + buildHourPointStateSql("met.QEC_RATE") + " AS anchoPointState, " + buildHourPointStateSql("met.MWR_RATE") + " AS mwrPointState, " + buildHourPointStateSql("met.AVQ_RATE") + " AS avqPointState, " + @@ -486,9 +485,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { "WHERE NVL(eng.IS_DELETED, 0) = 0 " + " AND NVL(eng.BLDSTT_CODE, 0) = 2 " + (hasDtinFilter ? "" : " AND NVL(eng.DTIN, 0) = 1 ") + - " AND EXISTS (SELECT 1 FROM SD_QEC_R valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0" + - (StrUtil.isNotBlank(validTimeFilter) ? " AND " + validTimeFilter : "") + - ")"; + " AND NVL(eng.RUN_STATE, 0) = 4"; } private String buildHourMetricSourceSql(DataSourceRequest.FilterDescriptor filter, @@ -1578,15 +1575,13 @@ public class EngEqDataServiceImpl implements EngEqDataService { Map paramMap = new HashMap<>(); int[] indexHolder = new int[]{0}; boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "dtin")); - String validTable = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R"; - String validTimeColumn = "day".equalsIgnoreCase(type) ? "valid.DT" : "valid.TM"; sql.append("SELECT ") .append("eng.STCD AS stcd, ") - .append(buildStaticIntervalSql("agg.QEC_RATE", "agg.QR", "qecNoRule.STCD", false)) + .append(buildStaticIntervalSql("agg.STCD", "agg.QEC_RATE", "agg.QR", "qecNoRule.STCD", false)) .append(" AS qecInterval, ") - .append(buildStaticIntervalSql("agg.MWR_RATE", "agg.MQR", "mwrNoRule.STCD", false)) + .append(buildStaticIntervalSql("agg.STCD", "agg.MWR_RATE", "agg.MQR", "mwrNoRule.STCD", false)) .append(" AS mwrInterval, ") - .append(buildStaticIntervalSql("agg.AVQ_RATE", "agg.AQR", "eng.AVQ", true)) + .append(buildStaticIntervalSql("agg.STCD", "agg.AVQ_RATE", "agg.AQR", "eng.AVQ", true)) .append(" AS avqInterval ") .append("FROM SD_ENGINFO_B_H eng ") .append("LEFT JOIN (") @@ -1608,15 +1603,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { if (!hasDtinFilter) { sql.append(" AND NVL(eng.DTIN, 0) = 1 "); } - sql.append(" AND EXISTS (SELECT 1 FROM ") - .append(validTable) - .append(" valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0"); - String validTimeFilter = buildStaticTimeFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), - paramMap, indexHolder, validTimeColumn); - if (StrUtil.isNotBlank(validTimeFilter)) { - sql.append(" AND ").append(validTimeFilter); - } - sql.append(") "); + sql.append(" AND NVL(eng.RUN_STATE, 0) = 4 "); String stationFilter = buildStaticStationFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); if (StrUtil.isNotBlank(stationFilter)) { @@ -1889,13 +1876,17 @@ public class EngEqDataServiceImpl implements EngEqDataService { "FROM SD_ENGINFO_B_H engRule " + "WHERE NVL(engRule.IS_DELETED, 0) = 0 " + " AND NOT EXISTS ( " + - " SELECT 1 FROM MS_WARN_RULE_B rule " + - " INNER JOIN MS_WARN_RULE_DETAIL_B detail ON detail.RULE_ID = rule.ID AND NVL(detail.IS_DELETED, 0) = 0 " + - " WHERE NVL(rule.IS_DELETED, 0) = 0 AND rule.RULE_TYPE = '" + ruleType + "' AND rule.STCD = engRule.STCD " + + " SELECT 1 FROM MS_WARN_RULE_STBPRP_B ruleStbprp " + + " INNER JOIN MS_WARN_RULE_DETAIL_B detail ON detail.RULE_ID = ruleStbprp.RULE_ID AND NVL(detail.IS_DELETED, 0) = 0 " + + " INNER JOIN MS_WARN_RULE_B rule ON rule.ID = detail.RULE_ID AND NVL(rule.IS_DELETED, 0) = 0 " + + " WHERE NVL(ruleStbprp.IS_DELETED, 0) = 0 " + + " AND rule.RULE_TYPE = '" + ruleType + "' " + + " AND ruleStbprp.STCD = engRule.STCD " + " )"; } - private String buildStaticIntervalSql(String rateColumn, + private String buildStaticIntervalSql(String stcdColumn, + String rateColumn, String qrColumn, String ruleColumn, boolean avqMode) { @@ -1910,10 +1901,10 @@ public class EngEqDataServiceImpl implements EngEqDataService { "END"; } return "CASE " + - "WHEN " + rateColumn + " IS NULL AND " + ruleColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + - "WHEN " + rateColumn + " IS NULL AND " + ruleColumn + " IS NOT NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + - "WHEN " + qrColumn + " = -2 THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + - "WHEN " + qrColumn + " = -1 THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + + "WHEN " + stcdColumn + " IS NULL AND " + ruleColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + + "WHEN " + stcdColumn + " IS NULL AND " + ruleColumn + " IS NOT NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN " + stcdColumn + " IS NOT NULL AND " + qrColumn + " = -2 THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " + + "WHEN " + stcdColumn + " IS NOT NULL AND " + qrColumn + " = -1 THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " + "WHEN " + rateColumn + " >= 95 THEN '" + QecIntervalEnum.QEC_STLL_1_DY95.getCode() + "' " + "WHEN " + rateColumn + " >= 90 AND 95 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_2_90AND95.getCode() + "' " + "WHEN " + rateColumn + " >= 80 AND 90 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_3_80AND90.getCode() + "' " + From 1abc8aa43a674f6f3d553c8af4f708ed924af75c Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 17:20:33 +0800 Subject: [PATCH 41/47] =?UTF-8?q?feat:=20=E6=9C=80=E6=96=B0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=9A=84=E4=B8=80=E6=9D=A1=E6=95=B0=E6=8D=AE=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E5=A2=9E=E5=8A=A0=EF=BC=8C=E9=9C=80=E8=A6=81=E9=80=9A?= =?UTF-8?q?=E8=BF=87redis=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/entity/vo/EngEqHourIntervalVo.java | 6 ++ .../eq/entity/vo/LastTmEngEqDataVo.java | 95 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/LastTmEngEqDataVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java index fcc87f1e..1ab37f3e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqHourIntervalVo.java @@ -134,4 +134,10 @@ public class EngEqHourIntervalVo { @Schema(description = "站点排序") private Integer siteStepSort; + + /** + * 最新时间的一条数据 + */ + @Schema(description = "最新时间的一条数据") + private LastTmEngEqDataVo lastTmEngEqDataVo; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/LastTmEngEqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/LastTmEngEqDataVo.java new file mode 100644 index 00000000..7711be27 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/LastTmEngEqDataVo.java @@ -0,0 +1,95 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author phq + * @date 2023/5/13 14:25 + * 描述: + */ +@Data +@Schema(description = "最新电站工程数据") +public class LastTmEngEqDataVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "数据时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date tm; + + @Schema(description = "装机容量") + private BigDecimal ttpwr; + + @Schema(description = "生态流量限值") + private BigDecimal qecLimit; + + @Schema(description = "生态流量限值(水利部)") + private BigDecimal mwrLimit; + + @Schema(description = "生态流量限值(多年平均)") + private BigDecimal avqLimit; + + @Schema(description = "生态流量系数(环保部)") + private BigDecimal qecC; + + @Schema(description = "生态流量系数(水利部)") + private BigDecimal mwrC; + + @Schema(description = "生态流量系数(多年平均)") + private BigDecimal avqC; + + /* 以下字段暂未使用 + @Schema(description = "生态流量是否达标(环保部)") + private Integer qecSfdb; + + @Schema(description = "生态流量是否达标(水利部)") + private Integer mwrSfdb; + + @Schema(description = "生态流量是否达标(电站多年平均)") + private Integer avqSfdb; + */ + + @Schema(description = "正常蓄水位") + private BigDecimal normz; + + @Schema(description = "死水位") + private BigDecimal ddz; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "坝上水位") + private BigDecimal rz; + + @Schema(description = "坝下水位") + private BigDecimal dz; + + @Schema(description = "规则来源") + private String vlsr; + + @Schema(description = "规则来源时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date vlsrTm; + + @Schema(description = "规则来源(水利部)") + private String mwrVlsr; + + @Schema(description = "规则来源时间(水利部)") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date mwrVlsrTm; +} \ No newline at end of file From ac21220e8f42c5dffc9752e0ccd0b3a5a60eff5a Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 18:03:52 +0800 Subject: [PATCH 42/47] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E8=BE=BE=E6=A0=87=E7=8E=87=E6=97=A5=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?(=E4=BA=8C=E7=BA=A7=E9=A1=B5=E9=9D=A2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 7 +- .../eq/entity/vo/EngEqDayIntervalVo.java | 140 +++++++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 269 ++++++++++++++++++ 4 files changed, 418 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDayIntervalVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 092e4be2..840d1d97 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -3,7 +3,6 @@ package com.yfd.platform.qgc_eng.eq.controller; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -46,6 +45,12 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getQgcHourKendoListCust(dataSourceRequest)); } + @PostMapping("/interval/qgc/day/GetKendoListCust") + @Operation(summary = "生态流量达标率日统计(二级页面)") + public ResponseResult getQgcDayKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getQgcDayKendoListCust(dataSourceRequest)); + } + @PostMapping("/interval/qgc/getQgcStaticData") @Operation(summary = "生态流量达标率区间范围统计(一级页面)") public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDayIntervalVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDayIntervalVo.java new file mode 100644 index 00000000..a40b7442 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDayIntervalVo.java @@ -0,0 +1,140 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "生态流量达标率日统计") +public class EngEqDayIntervalVo { + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "工程名称") + private String ennm; + + @Schema(description = "站类") + private String sttp; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal dtmel; + + @Schema(description = "装机容量") + private BigDecimal ttpwr; + + @Schema(description = "正常蓄水位") + private BigDecimal normz; + + @Schema(description = "多年平均流量") + private BigDecimal avq; + + @Schema(description = "是否接入") + private Integer dtin; + + @Schema(description = "环保数据接入状态") + private Integer dtinEnv; + + @Schema(description = "工程规模") + private Integer prsc; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "生态流量") + private BigDecimal qec; + + @Schema(description = "坝上水位") + private BigDecimal rz; + + @Schema(description = "生态流量达标率") + private BigDecimal qecRate; + + @Schema(description = "水利部生态流量达标率") + private BigDecimal mwrRate; + + @Schema(description = "多年平均生态流量达标率") + private BigDecimal avqRate; + + @Schema(description = "环保部区间") + private String qecInterval; + + @Schema(description = "水利部区间") + private String mwrInterval; + + @Schema(description = "多年平均区间") + private String avqInterval; + + @Schema(description = "环保部锚点状态") + private String anchoPointState; + + @Schema(description = "水利部锚点状态") + private String mwrPointState; + + @Schema(description = "多年平均锚点状态") + private String avqPointState; + + @Schema(description = "入库流量合计") + private BigDecimal qiSum; + + @Schema(description = "出库流量合计") + private BigDecimal qoSum; + + @Schema(description = "补水总量") + private BigDecimal fillWater; + + @Schema(description = "标题名称") + private String titleName; + + @Schema(description = "生态类型") + private String eqtp; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; + + @Schema(description = "最新时间的一条数据") + private LastTmEngEqDataVo lastTmEngEqDataVo; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index 9e3e7031..a3d3944f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_eng.eq.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -18,6 +19,8 @@ public interface EngEqDataService { DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest); + QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 6507c786..259c55c0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -12,6 +12,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.common.enums.QecIntervalEnum; import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -71,6 +72,15 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryHourIntervalGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryDayIntervalDetailList(dataSourceRequest, loadOptions); + } + return queryDayIntervalGroupList(dataSourceRequest, loadOptions); + } + @Override public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { List intervalList = queryStaticIntervals(dataSourceRequest, type); @@ -413,6 +423,265 @@ public class EngEqDataServiceImpl implements EngEqDataService { } } + private DataSourceResult queryDayIntervalDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + String viewSql = buildDayIntervalViewSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildHourDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(viewSql) + .append(") t WHERE 1 = 1 "); + + String filterSql = buildHourFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getAggregate()) + && "average".equalsIgnoreCase(dataSourceRequest.getAggregate().get(0).getAggregate())) { + return buildDayIntervalAggregateResult(dataSourceRequest, sql.toString(), paramMap); + } + + sql.append(buildHourDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqDayIntervalVo.class); + postProcessDayIntervalList(list); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryDayIntervalGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + Map paramMap = new HashMap<>(); + int[] indexHolder = new int[]{0}; + String viewSql = buildDayIntervalViewSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapHourColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapHourColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(viewSql) + .append(") t WHERE 1 = 1 "); + + String filterSql = buildHourFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapHourColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildHourGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult buildDayIntervalAggregateResult(DataSourceRequest dataSourceRequest, + String sourceSql, + Map paramMap) { + List aggregateItems = new ArrayList<>(); + for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) { + if (item == null || !"average".equalsIgnoreCase(item.getAggregate())) { + continue; + } + String column = mapHourColumn(item.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + aggregateItems.add("AVG(" + column + ") AS " + item.getField()); + } + if (aggregateItems.isEmpty()) { + DataSourceResult emptyResult = new DataSourceResult<>(); + emptyResult.setData(new ArrayList<>()); + emptyResult.setTotal(0L); + emptyResult.setAggregates(new HashMap<>()); + return emptyResult; + } + + String sql = "SELECT " + String.join(", ", aggregateItems) + " FROM (" + sourceSql + ")"; + List> list = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + DataSourceResult result = new DataSourceResult<>(); + result.setData((List) (List) list); + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private void postProcessDayIntervalList(List list) { + if (CollUtil.isEmpty(list)) { + return; + } + for (EngEqDayIntervalVo item : list) { + if (item == null) { + continue; + } + if (item.getQiSum() != null && item.getQoSum() != null) { + item.setFillWater(item.getQoSum().subtract(item.getQiSum())); + } + item.setTitleName(item.getEnnm()); + item.setEqtp("QEC"); + } + } + + private String buildDayIntervalViewSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(filter, "dtin")); + return "SELECT " + + "eng.STCD AS stcd, " + + "eng.ENNM AS stnm, " + + "eng.ENNM AS ennm, " + + "'ENG' AS sttp, " + + "'ENG' AS sttpCode, " + + "eng.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "addv.ADDVNM AS addvcdName, " + + "eng.LGTD AS lgtd, " + + "eng.LTTD AS lttd, " + + "eng.ELEV AS dtmel, " + + "CAST(NULL AS NUMBER(18,6)) AS ttpwr, " + + "CAST(NULL AS NUMBER(18,6)) AS normz, " + + "eng.AVQ AS avq, " + + "eng.DTIN AS dtin, " + + "eng.DTIN_ENV AS dtinEnv, " + + "eng.PRSC AS prsc, " + + "eng.BLDSTT_CODE AS bldsttCcode, " + + "runAgg.QI AS qi, " + + "runAgg.QO AS qo, " + + "runAgg.QEC AS qec, " + + "runAgg.RZ AS rz, " + + buildIntervalRateDisplaySql("met.QEC_RATE") + " AS qecRate, " + + buildIntervalRateDisplaySql("met.MWR_RATE") + " AS mwrRate, " + + buildIntervalRateDisplaySql("met.AVQ_RATE") + " AS avqRate, " + + buildStaticIntervalSql("met.STCD", "met.QEC_RATE", "met.QR", "qecNoRule.STCD", false) + " AS qecInterval, " + + buildStaticIntervalSql("met.STCD", "met.MWR_RATE", "met.MQR", "mwrNoRule.STCD", false) + " AS mwrInterval, " + + buildStaticIntervalSql("met.STCD", "met.AVQ_RATE", "met.AQR", "eng.AVQ", true) + " AS avqInterval, " + + buildHourPointStateSql("met.QEC_RATE") + " AS anchoPointState, " + + buildHourPointStateSql("met.MWR_RATE") + " AS mwrPointState, " + + buildHourPointStateSql("met.AVQ_RATE") + " AS avqPointState, " + + "runAgg.QI_SUM AS qiSum, " + + "runAgg.QO_SUM AS qoSum, " + + "CAST(NULL AS NUMBER(18,6)) AS fillWater, " + + "CAST(NULL AS VARCHAR2(255)) AS titleName, " + + "CAST(NULL AS VARCHAR2(20)) AS eqtp, " + + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + + "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " + + "NVL(rstSort.SORT, 999999) AS rstcdStepSort, " + + "NVL(siteSort.SORT, 999999) AS siteStepSort " + + "FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = eng.STCD " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " + + "LEFT JOIN (" + buildDayMetricSourceSql(filter, paramMap, indexHolder, 0) + ") met ON met.STCD = eng.STCD " + + "LEFT JOIN (" + buildDayRunSourceSql(filter, paramMap, indexHolder, 0) + ") runAgg ON runAgg.STCD = eng.STCD " + + "LEFT JOIN (" + buildStaticRuleSql("EQMN") + ") qecNoRule ON qecNoRule.STCD = eng.STCD " + + "LEFT JOIN (" + buildStaticRuleSql("EQMNMWR") + ") mwrNoRule ON mwrNoRule.STCD = eng.STCD " + + "WHERE NVL(eng.IS_DELETED, 0) = 0 " + + " AND NVL(eng.BLDSTT_CODE, 0) = 2 " + + (hasDtinFilter ? "" : " AND NVL(eng.DTIN, 0) = 1 ") + + " AND NVL(eng.RUN_STATE, 0) = 4"; + } + + private String buildDayMetricSourceSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + int yearOffset) { + return buildStaticAggregateSql("day", filter, paramMap, indexHolder, yearOffset); + } + + private String buildDayRunSourceSql(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder, + int yearOffset) { + String timeFilter = buildIntervalTmFilterCondition(filter, "run.TM", paramMap, indexHolder, yearOffset); + return "SELECT dayRun.STCD, " + + "AVG(dayRun.QI) AS QI, " + + "AVG(dayRun.QO) AS QO, " + + "AVG(dayRun.QEC) AS QEC, " + + "AVG(dayRun.RZ) AS RZ, " + + "SUM(dayRun.QI_SUM_DAY) AS QI_SUM, " + + "SUM(dayRun.QO_SUM_DAY) AS QO_SUM " + + "FROM (SELECT run.STCD, TRUNC(run.TM) AS DT, " + + "AVG(run.QI) AS QI, AVG(run.QO) AS QO, AVG(run.QEC) AS QEC, AVG(run.RZ) AS RZ, " + + "SUM(run.QI) AS QI_SUM_DAY, SUM(run.QO) AS QO_SUM_DAY " + + "FROM SD_HYDROPW_R run " + + "WHERE NVL(run.IS_DELETED, 0) = 0 " + + (StrUtil.isNotBlank(timeFilter) ? " AND " + timeFilter : "") + + " GROUP BY run.STCD, TRUNC(run.TM)) dayRun " + + "GROUP BY dayRun.STCD"; + } + private String buildHourIntervalViewSql(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { From 33e63d12a4685afa63844ba78d6ed4e1eeaa45b8 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 18:40:19 +0800 Subject: [PATCH 43/47] =?UTF-8?q?feat:=20=E6=B2=BF=E7=A8=8B=E7=94=9F?= =?UTF-8?q?=E6=80=81=E6=B5=81=E9=87=8F=E5=8F=98=E5=8C=96(=E7=8E=AF?= =?UTF-8?q?=E4=BF=9D=E9=83=A8=E5=B0=8F=E6=97=B6=E6=95=B0=E6=8D=AE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 6 + .../qgc_eng/eq/entity/vo/EngQecAlongVo.java | 51 +++++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 139 ++++++++++++++++++ 4 files changed, 199 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngQecAlongVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 840d1d97..0de58b54 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -51,6 +51,12 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getQgcDayKendoListCust(dataSourceRequest)); } + @PostMapping("/engalong/statistics/qgcHourV/GetKendoListCust") + @Operation(summary = "沿程生态流量变化(环保部小时数据)") + public ResponseResult getQgcHourVAlongKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getQgcHourVAlongKendoListCust(dataSourceRequest)); + } + @PostMapping("/interval/qgc/getQgcStaticData") @Operation(summary = "生态流量达标率区间范围统计(一级页面)") public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngQecAlongVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngQecAlongVo.java new file mode 100644 index 00000000..36e3dae4 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngQecAlongVo.java @@ -0,0 +1,51 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "沿程生态流量变化(环保部小时最新)") +public class EngQecAlongVo { + + @Schema(description = "类型") + private String sttp; + + @Schema(description = "站码") + private String stcd; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "生态流量") + private BigDecimal qec; + + @Schema(description = "流域排序") + private Integer rvcdSort; + + @Schema(description = "生态流量限值") + private BigDecimal qecLimit; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "最新时间") + private Date tm; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "结果集中的最小非空时间") + private Date minTm; + + @Schema(description = "站点排序") + private Integer stcdSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index a3d3944f..ae4673b1 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo; @@ -21,6 +22,8 @@ public interface EngEqDataService { DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getQgcHourVAlongKendoListCust(DataSourceRequest dataSourceRequest); + QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 259c55c0..74b88fa6 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -15,6 +15,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; @@ -34,6 +35,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Date; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; @@ -81,6 +83,52 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryDayIntervalGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getQgcHourVAlongKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String[] tmRange = resolveAlongTmRange(dataSourceRequest, loadOptions); + if (tmRange == null) { + throw new IllegalArgumentException("请选择开始日期和结束日期"); + } + String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + String rvcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rvcd"); + + Map paramMap = new HashMap<>(); + paramMap.put("startTm", tmRange[0]); + paramMap.put("endTm", tmRange[1]); + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("baseId", baseId); + } + if (StrUtil.isNotBlank(rvcd)) { + paramMap.put("rvcd", rvcd); + } + + List list = microservicDynamicSQLMapper.getAllListWithResultType( + buildQgcHourVAlongSql(baseId, rvcd), paramMap, EngQecAlongVo.class); + + DataSourceResult result = new DataSourceResult<>(); + result.setAggregates(new HashMap<>()); + if (CollUtil.isEmpty(list)) { + result.setTotal(0L); + result.setData(null); + return result; + } + + Date first = list.stream() + .map(EngQecAlongVo::getTm) + .filter(Objects::nonNull) + .findFirst() + .orElse(null); + for (EngQecAlongVo item : list) { + item.setMinTm(first); + item.setTm(first); + } + + result.setTotal((long) list.size()); + result.setData(list); + return result; + } + @Override public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { List intervalList = queryStaticIntervals(dataSourceRequest, type); @@ -682,6 +730,51 @@ public class EngEqDataServiceImpl implements EngEqDataService { "GROUP BY dayRun.STCD"; } + private String buildQgcHourVAlongSql(String baseId, String rvcd) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT along.RVCD AS rvcd, det.STCD AS stcd, eng.ENNM AS stnm, det.STTP AS sttp, ") + .append("along.ORDER_INDEX AS rvcdSort, det.SORT AS stcdSort, ") + .append("met.QEC AS qec, met.QI AS qi, met.QO AS qo, met.TM AS tm, met.QEC_LIMIT AS qecLimit ") + .append("FROM MS_ALONG_B along ") + .append("INNER JOIN MS_ALONGDET_B det ON along.ID = det.ALONG_ID ") + .append("INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = det.STCD ") + .append("LEFT JOIN (") + .append(" SELECT qec.STCD, run.QI AS QI, qec.QEC AS QEC, run.QO AS QO, qec.TM AS TM, qec.QEC_LIMIT AS QEC_LIMIT ") + .append(" FROM SD_QEC_R qec ") + .append(" LEFT JOIN SD_HYDROPW_R run ON qec.STCD = run.STCD AND qec.TM = run.TM AND NVL(run.IS_DELETED, 0) = 0 ") + .append(" WHERE NVL(qec.IS_DELETED, 0) = 0 ") + .append(" AND qec.TM BETWEEN TO_DATE(#{map.startTm}, 'YYYY-MM-DD HH24:MI:SS') ") + .append(" AND TO_DATE(#{map.endTm}, 'YYYY-MM-DD HH24:MI:SS') ") + .append(" AND qec.TM = (") + .append(" SELECT MAX(qec2.TM) ") + .append(" FROM SD_QEC_R qec2 ") + .append(" WHERE qec2.STCD = qec.STCD ") + .append(" AND NVL(qec2.IS_DELETED, 0) = 0 ") + .append(" AND qec2.TM BETWEEN TO_DATE(#{map.startTm}, 'YYYY-MM-DD HH24:MI:SS') ") + .append(" AND TO_DATE(#{map.endTm}, 'YYYY-MM-DD HH24:MI:SS')") + .append(" )") + .append(") met ON met.STCD = det.STCD ") + .append("WHERE det.STTP = 'ENG' ") + .append(" AND NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(eng.BLDSTT_CODE, 0) = 2 ") + .append(" AND along.CODE = 'common' ") + .append(" AND NVL(along.IS_DELETED, 0) = 0 ") + .append(" AND NVL(det.IS_DELETED, 0) = 0 "); + if (StrUtil.isNotBlank(baseId)) { + sql.append(" AND along.RVCD IN (") + .append("SELECT dic.HBRVCD FROM SD_HBRV_DIC dic ") + .append("WHERE dic.BASEID = #{map.baseId} ") + .append(" AND NVL(dic.IS_DELETED, 0) = 0 ") + .append(" AND NVL(dic.ENABLED, 1) = 1") + .append(") "); + } + if (StrUtil.isNotBlank(rvcd)) { + sql.append(" AND along.RVCD = #{map.rvcd} "); + } + sql.append("ORDER BY along.ORDER_INDEX, det.SORT"); + return sql.toString(); + } + private String buildHourIntervalViewSql(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { @@ -2861,6 +2954,52 @@ public class EngEqDataServiceImpl implements EngEqDataService { return values; } + private String[] resolveAlongTmRange(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { + String tmValue = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm"); + if (StrUtil.isNotBlank(tmValue) && tmValue.contains(",")) { + String[] arr = tmValue.split(","); + if (arr.length == 2 && StrUtil.isNotBlank(arr[0]) && StrUtil.isNotBlank(arr[1])) { + return new String[]{arr[0].trim(), arr[1].trim()}; + } + } + String[] range = new String[2]; + collectAlongTmRange(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), range); + if (StrUtil.isNotBlank(range[0]) && StrUtil.isNotBlank(range[1])) { + return range; + } + return null; + } + + private void collectAlongTmRange(DataSourceRequest.FilterDescriptor filter, String[] range) { + if (filter == null || range == null) { + return; + } + if (StrUtil.isNotBlank(filter.getField())) { + if (!"tm".equalsIgnoreCase(filter.getField()) || filter.getValue() == null) { + return; + } + String value = String.valueOf(filter.getValue()); + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + switch (operator) { + case "gt", "gte" -> range[0] = value; + case "lt", "lte" -> range[1] = value; + case "eq" -> { + range[0] = value; + range[1] = value; + } + default -> { + } + } + return; + } + if (CollUtil.isEmpty(filter.getFilters())) { + return; + } + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + collectAlongTmRange(child, range); + } + } + private void collectFilterValues(DataSourceRequest.FilterDescriptor filter, String field, List values) { if (filter == null) { return; From b1a7dea09ce9b1fdf58504b404ba8ba63873e205 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 3 Jun 2026 18:58:02 +0800 Subject: [PATCH 44/47] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=8C=83=E5=9B=B4=E6=9F=A5=E8=AF=A2=E7=94=B5=E7=AB=99?= =?UTF-8?q?=E7=94=9F=E6=80=81=E6=B5=81=E9=87=8F=E9=99=90=E5=80=BC=E5=8F=8A?= =?UTF-8?q?=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 8 + .../qgc_eng/eq/entity/vo/EngEqRuleVo.java | 35 +++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 143 ++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRuleVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 0de58b54..c1b58dfd 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -4,6 +4,7 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; @@ -57,6 +58,13 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getQgcHourVAlongKendoListCust(dataSourceRequest)); } + @PostMapping("/data/getEngLimit") + @Operation(summary = "根据时间范围查询电站生态流量限值及来源") + public ResponseResult getEngLimit(@RequestBody DataSourceRequest dataSourceRequest) { + EngEqRuleVo result = engEqDataService.getEngLimit(dataSourceRequest); + return result == null ? ResponseResult.success() : ResponseResult.successData(result); + } + @PostMapping("/interval/qgc/getQgcStaticData") @Operation(summary = "生态流量达标率区间范围统计(一级页面)") public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRuleVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRuleVo.java new file mode 100644 index 00000000..48c85326 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqRuleVo.java @@ -0,0 +1,35 @@ +package com.yfd.platform.qgc_eng.eq.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 EngEqRuleVo { + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "环保部生态流量限值") + private String eqmnStr; + + @Schema(description = "环保部生态流量限值来源") + private String vlsr; + + @Schema(description = "水利部生态流量限值") + private String eqmnmwrStr; + + @Schema(description = "水利部生态流量限值来源") + private String mwrVlsr; + + @Schema(description = "多年平均流量值") + private String avqStr; + + @Schema(description = "多年平均流量值来源") + private String avqVlsr; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index ae4673b1..d4063239 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; @@ -24,6 +25,8 @@ public interface EngEqDataService { DataSourceResult getQgcHourVAlongKendoListCust(DataSourceRequest dataSourceRequest); + EngEqRuleVo getEngLimit(DataSourceRequest dataSourceRequest); + QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 74b88fa6..8201f678 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -15,6 +15,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqStaticIntervalVo; @@ -36,6 +37,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Date; +import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; @@ -129,6 +131,52 @@ public class EngEqDataServiceImpl implements EngEqDataService { return result; } + @Override + public EngEqRuleVo getEngLimit(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + if (StrUtil.isBlank(stcd)) { + throw new IllegalArgumentException("电站编码不能为空."); + } + String[] timeRange = resolveEngLimitTimeRange(dataSourceRequest, loadOptions); + if (timeRange == null) { + throw new IllegalArgumentException("开始时间不能为空."); + } + + Map stationParamMap = new HashMap<>(); + stationParamMap.put("stcd", stcd); + List> stationList = microservicDynamicSQLMapper.pageAllList( + null, + "SELECT STCD, ENNM AS STNM, AVQ, AVQ_SRC FROM SD_ENGINFO_B_H " + + "WHERE STCD = #{map.stcd} AND NVL(IS_DELETED, 0) = 0", + stationParamMap + ); + + EngEqRuleVo vo = new EngEqRuleVo().setStcd(stcd); + if (CollUtil.isNotEmpty(stationList)) { + Map station = stationList.get(0); + vo.setStnm(asString(station.get("STNM"))); + BigDecimal avq = toBigDecimal(station.get("AVQ")); + if (avq != null) { + vo.setAvqStr("(多年平均)(m³/s):" + stripTrailingZeros(avq)); + } else { + vo.setAvqStr("(多年平均)(m³/s):无数据"); + } + String avqSrc = asString(station.get("AVQ_SRC")); + if (StrUtil.isNotBlank(avqSrc)) { + vo.setAvqVlsr(avqSrc); + } + } else { + vo.setAvqStr("(多年平均)(m³/s):无数据"); + } + + List> eqmnList = queryEngLimitRuleDetails(stcd, timeRange[0], timeRange[1], "EQMN"); + List> eqmnMwrList = queryEngLimitRuleDetails(stcd, timeRange[0], timeRange[1], "EQMNMWR"); + vo.setEqmnStr(buildEngLimitDisplay("(生态环境部)(m³/s):", eqmnList)); + vo.setEqmnmwrStr(buildEngLimitDisplay("(水利部)(m³/s):", eqmnMwrList)); + return vo; + } + @Override public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { List intervalList = queryStaticIntervals(dataSourceRequest, type); @@ -775,6 +823,66 @@ public class EngEqDataServiceImpl implements EngEqDataService { return sql.toString(); } + private List> queryEngLimitRuleDetails(String stcd, + String startTime, + String endTime, + String ruleType) { + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("startTime", startTime); + paramMap.put("endTime", endTime); + paramMap.put("ruleType", ruleType); + + String sql = "SELECT det.TM, det.BEGIN_TIME, det.END_TIME, det.MIN_VAL, det.VLSR, det.VLSR_TM " + + "FROM MS_WARN_RULE_DETAIL_B det " + + "INNER JOIN MS_WARN_RULE_STBPRP_B rel ON rel.RULE_ID = det.RULE_ID AND rel.STCD = #{map.stcd} " + + " AND NVL(rel.IS_DELETED, 0) = 0 " + + "INNER JOIN MS_WARN_RULE_B rule ON rule.ID = det.RULE_ID AND rule.RULE_TYPE = #{map.ruleType} " + + " AND NVL(rule.IS_DELETED, 0) = 0 " + + "INNER JOIN (SELECT TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') AS StartDate, " + + " TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') AS EndDate FROM DUAL) g ON g.EndDate >= det.TM " + + "INNER JOIN (SELECT EXTRACT(YEAR FROM x.StartDate) + LEVEL - 1 AS Year " + + " FROM (SELECT TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') AS StartDate, " + + " TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') AS EndDate FROM DUAL) x " + + " CONNECT BY EXTRACT(YEAR FROM x.StartDate) + LEVEL - 1 <= EXTRACT(YEAR FROM x.EndDate)) y ON " + + " (TO_DATE(TO_CHAR(y.Year) || LPAD(det.BEGIN_TIME, 4, '0'), 'YYYYMMDD') <= g.EndDate AND " + + " TO_DATE(TO_CHAR(y.Year) || LPAD(det.END_TIME, 4, '0'), 'YYYYMMDD') >= g.StartDate) " + + " AND TO_DATE(TO_CHAR(y.Year) || LPAD(det.END_TIME, 4, '0'), 'YYYYMMDD') >= det.TM " + + "WHERE NVL(det.IS_DELETED, 0) = 0 " + + " AND det.BEGIN_TIME IS NOT NULL " + + " AND det.END_TIME IS NOT NULL " + + " AND det.MIN_VAL IS NOT NULL " + + "GROUP BY det.TM, det.BEGIN_TIME, det.END_TIME, det.MIN_VAL, det.VLSR, det.VLSR_TM " + + "ORDER BY det.TM DESC, SUBSTR(det.BEGIN_TIME, 1, 2) ASC, SUBSTR(det.BEGIN_TIME, 3, 2) ASC, " + + " SUBSTR(det.END_TIME, 1, 2) ASC, SUBSTR(det.END_TIME, 3, 2) ASC"; + return microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + } + + private String buildEngLimitDisplay(String prefix, List> detailList) { + if (CollUtil.isEmpty(detailList)) { + return prefix + "无限值要求"; + } + List parts = new ArrayList<>(); + for (Map row : detailList) { + String beginTime = asString(row.get("BEGIN_TIME")); + String endTime = asString(row.get("END_TIME")); + BigDecimal minVal = toBigDecimal(row.get("MIN_VAL")); + if (StrUtil.length(beginTime) != 4 || StrUtil.length(endTime) != 4 || minVal == null) { + continue; + } + parts.add(String.format("%s月%s日~%s月%s日限值为:%s", + beginTime.substring(0, 2), + beginTime.substring(2, 4), + endTime.substring(0, 2), + endTime.substring(2, 4), + stripTrailingZeros(minVal))); + } + if (parts.isEmpty()) { + return prefix + "无限值要求"; + } + return prefix + String.join(";", parts); + } + private String buildHourIntervalViewSql(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { @@ -2970,6 +3078,20 @@ public class EngEqDataServiceImpl implements EngEqDataService { return null; } + private String[] resolveEngLimitTimeRange(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { + String startTime = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime"); + String endTime = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime"); + if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) { + return new String[]{startTime, endTime}; + } + String[] range = new String[2]; + collectAlongTmRange(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), range); + if (StrUtil.isNotBlank(range[0]) && StrUtil.isNotBlank(range[1])) { + return range; + } + return null; + } + private void collectAlongTmRange(DataSourceRequest.FilterDescriptor filter, String[] range) { if (filter == null || range == null) { return; @@ -3022,6 +3144,27 @@ public class EngEqDataServiceImpl implements EngEqDataService { } } + private String asString(Object value) { + return value == null ? null : String.valueOf(value); + } + + private BigDecimal toBigDecimal(Object value) { + if (value == null) { + return null; + } + if (value instanceof BigDecimal bigDecimal) { + return bigDecimal; + } + return new BigDecimal(String.valueOf(value)); + } + + private String stripTrailingZeros(BigDecimal value) { + if (value == null) { + return null; + } + return value.stripTrailingZeros().toPlainString(); + } + private String mapStaticStationColumn(String field) { if (StrUtil.isBlank(field)) { return null; From 2dbcbf3f9dec30e7d8e631dc70b9fe9f844a833d Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 4 Jun 2026 08:22:01 +0800 Subject: [PATCH 45/47] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E7=94=B5?= =?UTF-8?q?=E7=AB=99=E7=9B=B8=E5=85=B3=E9=B1=BC=E7=B1=BB=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 6 +++ .../qgc_eng/eq/entity/vo/EngFidVo.java | 12 ++++++ .../qgc_eng/eq/service/EngEqDataService.java | 2 + .../eq/service/impl/EngEqDataServiceImpl.java | 40 +++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngFidVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index c1b58dfd..90a161ad 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -58,6 +58,12 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getQgcHourVAlongKendoListCust(dataSourceRequest)); } + @PostMapping("/fid/GetKendoListCust") + @Operation(summary = "查询电站相关鱼类附件编码") + public ResponseResult getFidKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getFidKendoListCust(dataSourceRequest)); + } + @PostMapping("/data/getEngLimit") @Operation(summary = "根据时间范围查询电站生态流量限值及来源") public ResponseResult getEngLimit(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngFidVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngFidVo.java new file mode 100644 index 00000000..cc00fe03 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngFidVo.java @@ -0,0 +1,12 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "电站鱼类附件编码") +public class EngFidVo { + + @Schema(description = "附件编码串,多个逗号分隔") + private String fid; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index d4063239..d2c7e261 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -25,6 +25,8 @@ public interface EngEqDataService { DataSourceResult getQgcHourVAlongKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getFidKendoListCust(DataSourceRequest dataSourceRequest); + EngEqRuleVo getEngLimit(DataSourceRequest dataSourceRequest); QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index 8201f678..c647d75e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -13,6 +13,7 @@ import com.yfd.platform.common.enums.QecIntervalEnum; import com.yfd.platform.common.enums.ShowEnum; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngFidVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; @@ -177,6 +178,45 @@ public class EngEqDataServiceImpl implements EngEqDataService { return vo; } + @Override + public DataSourceResult getFidKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + if (StrUtil.isBlank(stcd)) { + throw new IllegalArgumentException("stcd 参数不能为空"); + } + + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List sourceList = microservicDynamicSQLMapper.getAllListWithResultType( + "SELECT FID AS fid " + + "FROM SD_ENGCONSTGENVF_B " + + "WHERE STCD = #{map.stcd} " + + " AND FID IS NOT NULL " + + " AND NVL(IS_DELETED, 0) = 0", + paramMap, + EngFidVo.class + ); + + List data = new ArrayList<>(); + if (CollUtil.isNotEmpty(sourceList)) { + data = sourceList.stream() + .map(EngFidVo::getFid) + .filter(StrUtil::isNotBlank) + .flatMap(fid -> Arrays.stream(fid.split(","))) + .map(String::trim) + .filter(StrUtil::isNotBlank) + .distinct() + .toList(); + } + + DataSourceResult result = new DataSourceResult<>(); + result.setData(data); + result.setTotal((long) data.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public QgcQecStaticVo getQgcStaticData(DataSourceRequest dataSourceRequest, String type) { List intervalList = queryStaticIntervals(dataSourceRequest, type); From b8d768880301b5a21e33583ca04846dae69f2a1d Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 4 Jun 2026 08:53:05 +0800 Subject: [PATCH 46/47] =?UTF-8?q?feat:=20=E7=94=B5=E7=AB=99=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/controller/EngEqDataController.java | 9 + .../eq/entity/vo/EngEqMsstbprptVo.java | 72 ++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 347 ++++++++++++++++++ .../fh/service/impl/FhHabitatServiceImpl.java | 2 +- 5 files changed, 432 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqMsstbprptVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java index 90a161ad..644a77a7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -2,8 +2,10 @@ package com.yfd.platform.qgc_eng.eq.controller; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -40,6 +42,13 @@ public class EngEqDataController { return ResponseResult.successData(engEqDataService.getIntervalKendoListCust(dataSourceRequest)); } + @PostMapping("/msstbprpt/GetKendoList") + @Operation(summary = "电站基础信息查询") + public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + DataSourceResult result = engEqDataService.getMsstbprptList(dataSourceRequest); + return ResponseResult.successData(result); + } + @PostMapping("/interval/qgc/hour/GetKendoListCust") @Operation(summary = "生态流量达标率小时统计(二级页面)") public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqMsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqMsstbprptVo.java new file mode 100644 index 00000000..8bfe763f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqMsstbprptVo.java @@ -0,0 +1,72 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import com.yfd.platform.qgc_base.domain.SdEngInfoBH; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@Schema(description = "电站基础信息查询") +public class EngEqMsstbprptVo extends SdEngInfoBH { + + @Schema(description = "主键ID") + private String id; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "电站高程") + private Double dtmel; + + @Schema(description = "站类主键") + private String sttp; + + @Schema(description = "站类编码") + private String sttpCode; + + @Schema(description = "站类名称") + private String sttpName; + + @Schema(description = "站类全路径") + private String sttpFullPath; + + @Schema(description = "站类层级") + private Integer sttpTreeLevel; + + @Schema(description = "建设状态分类编码") + private String bldsttCcode; + + @Schema(description = "建设状态分类名称") + private String bldsttCcodeName; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "基地流域名称") + private String hbrvcdName; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "国家名称") + private String countryName; + + @Schema(description = "公司名称") + private String hynm; + + @Schema(description = "集团名称") + private String topHynm; + + @Schema(description = "数据接入中文") + private String dtinName; + + @Schema(description = "建设状态名称") + private String bldsttName; + + @Schema(description = "图片附件") + private String url; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java index d2c7e261..03d06e3a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -19,6 +20,8 @@ public interface EngEqDataService { DataSourceResult getIntervalKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index c647d75e..2a71ed11 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -16,6 +16,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngFidVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRateCountVo; @@ -68,6 +69,232 @@ public class EngEqDataServiceImpl implements EngEqDataService { return queryIntervalGroupList(dataSourceRequest, loadOptions); } + @Override + public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryMsstbprptDetailList(dataSourceRequest, loadOptions); + } + return queryMsstbprptGroupList(dataSourceRequest, loadOptions); + } + + private DataSourceResult queryMsstbprptDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildMsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(buildMsstbprptViewSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildMsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildMsstbprptDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqMsstbprptVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryMsstbprptGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapMsstbprptColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapMsstbprptColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("t.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(String.join(", ", selectItems)) + .append(" FROM (") + .append(buildMsstbprptViewSql()) + .append(") t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildMsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapMsstbprptColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildMsstbprptGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult<>(); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal((long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildMsstbprptViewSql() { + return "SELECT " + + "eng.STCD AS id, " + + "eng.STCD AS stcd, " + + "eng.ENNM AS stnm, " + + "eng.ENNM AS ennm, " + + "'ENG' AS sttpCode, " + + "'电站' AS sttpName, " + + "eng.LGTD AS lgtd, " + + "eng.LTTD AS lttd, " + + "eng.ELEV AS elev, " + + "eng.ELEV AS dtmel, " + + "eng.STLC AS stlc, " + + "eng.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + + "eng.HBRVCD AS hbrvcd, " + + "hbrv.HBRVNM AS hbrvcdName, " + + "eng.RVCD AS rvcd, " + + "rv.RVNM AS rvcdName, " + + "eng.ADDVCD AS addvcd, " + + "addv.ADDVNM AS addvcdName, " + + "eng.COUNTRY AS country, " + + "country.COUNTRY_NAME AS countryName, " + + "eng.HYCD AS hycd, " + + "CAST(NULL AS VARCHAR2(200)) AS hynm, " + + "eng.TOP_HYCD AS topHycd, " + + "CAST(NULL AS VARCHAR2(200)) AS topHynm, " + + "eng.USFL AS usfl, " + + "eng.DTIN AS dtin, " + + "CASE NVL(eng.DTIN, 0) WHEN 1 THEN '是' WHEN 0 THEN '否' ELSE NULL END AS dtinName, " + + "eng.DTIN_TM AS dtinTm, " + + "eng.INTRODUCE AS introduce, " + + "eng.LOGO AS logo, " + + "eng.INFFILE AS inffile, " + + "eng.INFFILE AS url, " + + "eng.BLDSTT AS bldstt, " + + "CASE eng.BLDSTT_CODE WHEN 0 THEN '0' WHEN 1 THEN '1' WHEN 2 THEN '2' ELSE NULL END AS bldsttCcode, " + + "eng.BLDSTT_CODE AS bldsttCode, " + + "CASE eng.BLDSTT_CODE WHEN 0 THEN '未建/规划' WHEN 1 THEN '在建' WHEN 2 THEN '已建' ELSE NULL END AS bldsttCcodeName, " + + "eng.ORDER_INDEX AS orderIndex, " + + "eng.PRSC AS prsc, " + + "eng.ENGTP AS engtp, " + + "eng.SCRSC AS scrsc, " + + "eng.PRGR AS prgr, " + + "eng.TM AS tm " + + "FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "LEFT JOIN SD_COUNTRY_B country ON country.COUNTRY_ID = eng.COUNTRY AND NVL(country.ENABLED, 1) = 1 " + + "WHERE NVL(eng.IS_DELETED, 0) = 0"; + } + + private String buildMsstbprptDetailSelectSql(List selectFields) { + Map columns = msstbprptFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map msstbprptFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("id", "t.id AS id"); + columns.put("stcd", "t.stcd AS stcd"); + columns.put("stnm", "t.stnm AS stnm"); + columns.put("ennm", "t.ennm AS ennm"); + columns.put("sttpCode", "t.sttpCode AS sttpCode"); + columns.put("sttpName", "t.sttpName AS sttpName"); + columns.put("lgtd", "t.lgtd AS lgtd"); + columns.put("lttd", "t.lttd AS lttd"); + columns.put("elev", "t.elev AS elev"); + columns.put("dtmel", "t.dtmel AS dtmel"); + columns.put("stlc", "t.stlc AS stlc"); + columns.put("baseId", "t.baseId AS baseId"); + columns.put("baseName", "t.baseName AS baseName"); + columns.put("hbrvcd", "t.hbrvcd AS hbrvcd"); + columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName"); + columns.put("rvcd", "t.rvcd AS rvcd"); + columns.put("rvcdName", "t.rvcdName AS rvcdName"); + columns.put("addvcd", "t.addvcd AS addvcd"); + columns.put("addvcdName", "t.addvcdName AS addvcdName"); + columns.put("country", "t.country AS country"); + columns.put("countryName", "t.countryName AS countryName"); + columns.put("hycd", "t.hycd AS hycd"); + columns.put("hynm", "t.hynm AS hynm"); + columns.put("topHycd", "t.topHycd AS topHycd"); + columns.put("topHynm", "t.topHynm AS topHynm"); + columns.put("usfl", "t.usfl AS usfl"); + columns.put("dtin", "t.dtin AS dtin"); + columns.put("dtinName", "t.dtinName AS dtinName"); + columns.put("dtinTm", "t.dtinTm AS dtinTm"); + columns.put("introduce", "t.introduce AS introduce"); + columns.put("logo", "t.logo AS logo"); + columns.put("inffile", "t.inffile AS inffile"); + columns.put("url", "t.url AS url"); + columns.put("bldstt", "t.bldstt AS bldstt"); + columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode"); + columns.put("bldsttCode", "t.bldsttCode AS bldsttCode"); + columns.put("bldsttCcodeName", "t.bldsttCcodeName AS bldsttCcodeName"); + columns.put("orderIndex", "t.orderIndex AS orderIndex"); + columns.put("prsc", "t.prsc AS prsc"); + columns.put("engtp", "t.engtp AS engtp"); + columns.put("scrsc", "t.scrsc AS scrsc"); + columns.put("prgr", "t.prgr AS prgr"); + columns.put("tm", "t.tm AS tm"); + return columns; + } + @Override public DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -1931,6 +2158,74 @@ public class EngEqDataServiceImpl implements EngEqDataService { return columns; } + private String buildMsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + String column = mapMsstbprptColumn(filter.getField()); + if (StrUtil.isBlank(column)) { + return ""; + } + return buildGenericCondition(column, filter, paramMap, indexHolder, isEqDateField(filter.getField())); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildMsstbprptFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildMsstbprptDetailOrderBySql(List sortList) { + List orders = new ArrayList<>(); + if (CollUtil.isNotEmpty(sortList)) { + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapMsstbprptColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + orders.add(column + ("desc".equalsIgnoreCase(sort.getDir()) ? " DESC" : " ASC")); + } + } + if (orders.isEmpty()) { + orders.add("NVL(t.orderIndex, 999999) ASC"); + orders.add("t.stnm ASC"); + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildMsstbprptGroupOrderBySql(List groups) { + List orders = new ArrayList<>(); + if (CollUtil.isNotEmpty(groups)) { + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapMsstbprptColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + orders.add(column + ("desc".equalsIgnoreCase(descriptor.getDir()) ? " DESC" : " ASC")); + } + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, Map paramMap, int[] indexHolder) { @@ -3410,6 +3705,58 @@ public class EngEqDataServiceImpl implements EngEqDataService { }; } + private String mapMsstbprptColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "id" -> "t.id"; + case "stcd" -> "t.stcd"; + case "stnm" -> "t.stnm"; + case "ennm" -> "t.ennm"; + case "sttpCode" -> "t.sttpCode"; + case "sttpName" -> "t.sttpName"; + case "lgtd" -> "t.lgtd"; + case "lttd" -> "t.lttd"; + case "elev" -> "t.elev"; + case "dtmel" -> "t.dtmel"; + case "stlc" -> "t.stlc"; + case "baseId" -> "t.baseId"; + case "baseName" -> "t.baseName"; + case "hbrvcd" -> "t.hbrvcd"; + case "hbrvcdName" -> "t.hbrvcdName"; + case "rvcd" -> "t.rvcd"; + case "rvcdName" -> "t.rvcdName"; + case "addvcd" -> "t.addvcd"; + case "addvcdName" -> "t.addvcdName"; + case "country" -> "t.country"; + case "countryName" -> "t.countryName"; + case "hycd" -> "t.hycd"; + case "hynm" -> "t.hynm"; + case "topHycd" -> "t.topHycd"; + case "topHynm" -> "t.topHynm"; + case "usfl" -> "t.usfl"; + case "dtin" -> "t.dtin"; + case "dtinName" -> "t.dtinName"; + case "dtinTm" -> "t.dtinTm"; + case "introduce" -> "t.introduce"; + case "logo" -> "t.logo"; + case "inffile" -> "t.inffile"; + case "url" -> "t.url"; + case "bldstt" -> "t.bldstt"; + case "bldsttCcode" -> "t.bldsttCcode"; + case "bldsttCode" -> "t.bldsttCode"; + case "bldsttCcodeName" -> "t.bldsttCcodeName"; + case "orderIndex" -> "NVL(t.orderIndex, 999999)"; + case "prsc" -> "t.prsc"; + case "engtp" -> "t.engtp"; + case "scrsc" -> "t.scrsc"; + case "prgr" -> "t.prgr"; + case "tm" -> "t.tm"; + default -> null; + }; + } + private String mapWbsbColumn(String field) { if (StrUtil.isBlank(field)) { return null; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java index d258e690..8b5c1608 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/service/impl/FhHabitatServiceImpl.java @@ -496,7 +496,7 @@ public class FhHabitatServiceImpl implements FhHabitatService { " t.QXDBHFS AS qxdbhfs, " + " t.STSTDT AS ststdt, " + " t.ESSTDT AS esstdt, " + - " t.MWAY AS mway, " + + "CASE NVL(t.MWAY, 0) WHEN 1 THEN '人工' WHEN 2 THEN '自动' ELSE '未知' END AS mway , "+ " t.DTIN AS dtin, " + " t.VLSR AS vlsr, " + " t.DTIN_TYPE AS dtinType, " + From 45312c94928c91089debaf0ecd7b63da6dbfb509 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 4 Jun 2026 09:01:05 +0800 Subject: [PATCH 47/47] =?UTF-8?q?feat:=20=E7=94=B5=E7=AB=99=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java index 937c58f6..207f3872 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fh/entity/vo/HabitatVo.java @@ -74,7 +74,7 @@ public class HabitatVo { private Date esstdt; @Schema(description = "监测方式") - private Integer mway; + private String mway; @Schema(description = "是否接入") private Integer dtin;