From f6e2d49558eaee4559bdd22946cbd1dcacc22477 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 6 Jul 2026 09:05:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=9F=E6=80=81=E6=B5=81=E9=87=8F?= =?UTF-8?q?=E6=B3=84=E6=94=BE=E8=AE=BE=E6=96=BD=E6=8F=8F=E7=82=B9?= 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/EngEqdsVo.java | 101 +++++++++++++++ .../qgc_eng/eq/service/EngEqDataService.java | 3 + .../eq/service/impl/EngEqDataServiceImpl.java | 121 ++++++++++++++++++ .../src/main/resources/application-prod.yml | 5 +- 5 files changed, 234 insertions(+), 2 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqdsVo.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 962d0667..1773f5d0 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 @@ -181,4 +181,10 @@ public class EngEqDataController { StcdInfoVo result = engEqDataService.getStInfoByStcd(stcd); return ResponseResult.successData(result); } + + @PostMapping("/eqds/GetKendoListCust") + @Operation(summary = "生态流量泄放设施描点") + public ResponseResult getEqdsKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getEqdsKendoListCust(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqdsVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqdsVo.java new file mode 100644 index 00000000..043eb2c0 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqdsVo.java @@ -0,0 +1,101 @@ +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 = "生态流量泄放设施描点VO") +public class EngEqdsVo { + + @Schema(description = "设施编码") + private String stcd; + + @Schema(description = "设施名称") + private String stnm; + + @Schema(description = "电站编码") + private String rstcd; + + @Schema(description = "电站名称") + private String ennm; + + @Schema(description = "生态流量泄放方式") + private Integer eqtp; + + @Schema(description = "孔口尺寸") + private String flksz; + + @Schema(description = "进水口地板高程") + private BigDecimal jskdbgc; + + @Schema(description = "出水口地板高程") + private BigDecimal cskdbgc; + + @Schema(description = "死水位时保证流量") + private BigDecimal ddzgq; + + @Schema(description = "基荷发电工况") + private BigDecimal jhfdgk; + + @Schema(description = "最大泄放流量") + private String flkq; + + @Schema(description = "基地") + private String baseId; + + @Schema(description = "流域") + private String rvcd; + + @Schema(description = "行政区") + private String addvcd; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal dtmel; + + @Schema(description = "工程类型") + private String sttp; + + @Schema(description = "工程类型名称") + private String sttpName; + + @Schema(description = "锚点类型") + private String sttpMap; + + @Schema(description = "设施类型") + private String sttpCode; + + @Schema(description = "图例编码") + private String anchoPointState; + + @Schema(description = "弹窗名称") + private String titleName; + + @Schema(description = "生态流量限值") + private BigDecimal qecLimit; + + @Schema(description = "地图避让") + private Integer distance; + + @Schema(description = "建设状态 0=规划,1=在建,2=已建") + private String bldsttCode; + + @Schema(description = "沿程排序") + private Integer siteStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "基地排序") + private Integer baseStepSort; +} \ No newline at end of file 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 f2fbf60c..260c2bba 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 @@ -7,6 +7,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqdsVo; 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.EngEqLimitQueryVo; @@ -65,4 +66,6 @@ public interface EngEqDataService { DataSourceResult getDefaultYear(DataSourceRequest dataSourceRequest); StcdInfoVo getStInfoByStcd(String stcd); + + DataSourceResult getEqdsKendoListCust(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 ce231794..6cc84b77 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 @@ -18,6 +18,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqdsVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitQueryVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitVo; import com.yfd.platform.qgc_eng.eq.entity.vo.EngFidVo; @@ -36,6 +37,7 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo; import com.yfd.platform.qgc_eng.eq.entity.vo.StBaseInfo; import com.yfd.platform.qgc_eng.eq.entity.vo.StcdInfoVo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import com.yfd.platform.qgc_env.wt.utils.SiteAvoidanceUtils; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -5889,4 +5891,123 @@ public class EngEqDataServiceImpl implements EngEqDataService { } return dataSourceResult; } + + @Override + public DataSourceResult getEqdsKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceResult dataSourceResult = new DataSourceResult<>(); + dataSourceResult.setAggregates(new HashMap<>()); + + if (dataSourceRequest == null) { + dataSourceResult.setData(new ArrayList<>()); + dataSourceResult.setTotal(0L); + return dataSourceResult; + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("a.STCD AS stcd, ") + .append("a.STNM AS stnm, ") + .append("a.RSTCD AS rstcd, ") + .append("eng.ENNM AS ennm, ") + .append("a.STTP AS sttp, ") + .append("a.BASE_ID AS baseId, ") + .append("a.LGTD AS lgtd, ") + .append("a.LTTD AS lttd, ") + .append("a.ELEV AS dtmel, ") + .append("a.BLDSTT_CODE AS bldsttCode, ") + .append("a.RVCD AS rvcd, ") + .append("a.ADDVCD AS addvcd, ") + .append("NVL(siteSort.SORT, 999999) AS siteStepSort, ") + .append("NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, ") + .append("NVL(rstSort.SORT, 999999) AS rstcdStepSort, ") + .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort ") + .append("FROM SD_EQ_B_H a ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = a.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 MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN ( ") + .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" FROM MS_ALONGDET_B det ") + .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") + .append(" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' ") + .append(") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = a.RSTCD ") + .append("LEFT JOIN ( ") + .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" FROM MS_ALONGDET_B det ") + .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") + .append(" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' ") + .append(") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = a.STCD ") + .append("WHERE NVL(a.IS_DELETED, 0) = 0 ") + .append("AND NVL(a.USFL, 1) = 1 ") + .append("AND a.LGTD IS NOT NULL ") + .append("AND a.LTTD IS NOT NULL ") + .append("AND a.STTP IN (SELECT STTP_CODE FROM SD_STTP_B WHERE DESCRIPTION = 'EQ') ") + .append("AND a.RSTCD IS NOT NULL ") + .append("ORDER BY NVL(siteSort.SORT, 999999), NVL(along.ORDER_INDEX, 999999), NVL(rstSort.SORT, 999999), NVL(hb.ORDER_INDEX, 999999), a.STNM "); + + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List eqdsVoList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), new HashMap<>(), EngEqdsVo.class); + + List resultList = new ArrayList<>(); + for (EngEqdsVo eqdsVo : eqdsVoList) { + String sttpCode = eqdsVo.getSttp(); + List sttpCodeSplit = StrUtil.split(sttpCode, "_"); + eqdsVo.setSttpMap(sttpCodeSplit.get(0)); + eqdsVo.setEqtp(Integer.valueOf(sttpCodeSplit.get(1))); + eqdsVo.setSttp(sttpCodeSplit.get(0)); + eqdsVo.setTitleName(eqdsVo.getStnm()); + + String bldsttCode = eqdsVo.getBldsttCode(); + if ("2".equals(bldsttCode)) { + eqdsVo.setAnchoPointState(sttpCode); + } else { + eqdsVo.setAnchoPointState(sttpCode + "_incomplete"); + } + + eqdsVo.setSttpCode("EQ"); + + String rstcd = eqdsVo.getRstcd(); + if (rstcd != null && rstcd.contains(",")) { + EngEqdsVo eqdsVoNew = new EngEqdsVo(); + eqdsVoNew.setStcd(eqdsVo.getStcd()); + eqdsVoNew.setStnm(eqdsVo.getStnm()); + eqdsVoNew.setSttp(eqdsVo.getSttp()); + eqdsVoNew.setSttpMap(eqdsVo.getSttpMap()); + eqdsVoNew.setSttpCode(eqdsVo.getSttpCode()); + eqdsVoNew.setEqtp(eqdsVo.getEqtp()); + eqdsVoNew.setAnchoPointState(eqdsVo.getAnchoPointState()); + eqdsVoNew.setTitleName(eqdsVo.getTitleName()); + eqdsVoNew.setLgtd(eqdsVo.getLgtd()); + eqdsVoNew.setLttd(eqdsVo.getLttd()); + eqdsVoNew.setDtmel(eqdsVo.getDtmel()); + eqdsVoNew.setBaseId(eqdsVo.getBaseId()); + eqdsVoNew.setBldsttCode(eqdsVo.getBldsttCode()); + + List stcdSplit = StrUtil.split(rstcd, ','); + eqdsVo.setRstcd(stcdSplit.get(0)); + eqdsVoNew.setRstcd(stcdSplit.get(1)); + + String ennm = eqdsVo.getEnnm(); + if (ennm != null && ennm.contains(",")) { + List ennmSplit = StrUtil.split(ennm, ','); + eqdsVo.setEnnm(ennmSplit.get(0)); + eqdsVoNew.setEnnm(ennmSplit.get(1)); + } + resultList.add(eqdsVoNew); + } + resultList.add(eqdsVo); + } + + SiteAvoidanceUtils.calcSiteMapLev(resultList, + EngEqdsVo::getStcd, + EngEqdsVo::getLgtd, + EngEqdsVo::getLttd, + EngEqdsVo::getAnchoPointState, + EngEqdsVo::setDistance); + + dataSourceResult.setData(resultList); + dataSourceResult.setTotal(page == null ? resultList.size() : page.getTotal()); + return dataSourceResult; + } } diff --git a/backend/src/main/resources/application-prod.yml b/backend/src/main/resources/application-prod.yml index 294c61ea..48e5a037 100644 --- a/backend/src/main/resources/application-prod.yml +++ b/backend/src/main/resources/application-prod.yml @@ -111,9 +111,10 @@ spring: matching-strategy: ant_path_matcher data: redis: - host: ${REDIS_HOST:localhost} + host: ${REDIS_HOST:172.16.21.142} port: ${REDIS_PORT:6379} - password: ${REDIS_PASSWORD:} + password: ${REDIS_PASSWORD:zny5678} + database: ${REDIS_DATABASE:15} timeout: 10000ms lettuce: pool: