feat: 生态流量泄放设施描点

This commit is contained in:
tangwei 2026-07-06 09:05:54 +08:00
parent 35ae8e340f
commit f6e2d49558
5 changed files with 234 additions and 2 deletions

View File

@ -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));
}
}

View File

@ -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;
}

View File

@ -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<String> getDefaultYear(DataSourceRequest dataSourceRequest);
StcdInfoVo getStInfoByStcd(String stcd);
DataSourceResult<EngEqdsVo> getEqdsKendoListCust(DataSourceRequest dataSourceRequest);
}

View File

@ -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<EngEqdsVo> getEqdsKendoListCust(DataSourceRequest dataSourceRequest) {
DataSourceResult<EngEqdsVo> 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<EngEqdsVo> eqdsVoList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), new HashMap<>(), EngEqdsVo.class);
List<EngEqdsVo> resultList = new ArrayList<>();
for (EngEqdsVo eqdsVo : eqdsVoList) {
String sttpCode = eqdsVo.getSttp();
List<String> 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<String> stcdSplit = StrUtil.split(rstcd, ',');
eqdsVo.setRstcd(stcdSplit.get(0));
eqdsVoNew.setRstcd(stcdSplit.get(1));
String ennm = eqdsVo.getEnnm();
if (ennm != null && ennm.contains(",")) {
List<String> 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;
}
}

View File

@ -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: