水库基本信息

master
wany 2026-03-10 13:14:44 +08:00
parent 51a0155568
commit 27e8981b9a
5 changed files with 179 additions and 94 deletions

View File

@ -23,8 +23,7 @@ public class OpenApiConfig {
"/impactZoneInfo/**",
"/auditProcess/**",
"/warningRule/**",
"/reservoirDemarcationInfo/**",
"/safety/degradeScrapLedger/**"
"/attResBuilding/**"
};
return GroupedOpenApi.builder()
.group("ss")

View File

@ -46,7 +46,7 @@ public class AttResBuildingController extends AbstractCommonFileController {
return R.ok(result ? dto : null);
}
@Operation(summary = "修改")
@Operation(summary = "信息查询")
@GetMapping("/info")
public R<AttResBuilding> info() {
List<AttResBuilding> list = attResBuildingService.list();

View File

@ -1,6 +1,5 @@
package com.gunshi.project.ss.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@ -20,90 +19,185 @@ import java.math.BigDecimal;
@TableName("public.att_res_building")
public class AttResBuilding implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@Schema(description="水库代码")
@TableId(value = "id", type = IdType.INPUT)
private Integer id;
// 主坝字段 (prefix: main_) 挡水建筑物(大坝)
private String mainType; // 主坝-坝型 建筑物型式
private String mainFoundation; //主坝-地基特性
private String mainBasicIntensityOfAnEarthQuake; //主坝-地震基本烈度
private BigDecimal mainCrestElevation; // 主坝-坝顶高程(m)
private BigDecimal mainCrestLength; // 主坝-坝顶长度(m)
private BigDecimal mainCrestWidth; // 主坝-坝顶宽度(m)
private BigDecimal mainMaxHeight; // 主坝-最大坝高(m)
private BigDecimal mainEarthquakeAcceleration;// 主坝-地震峰值加速度
private BigDecimal mainTopOfWaveBarrierElevation;// 主坝-防浪墙顶高程
@Schema(description="主坝-坝型 建筑物型式")
private String mainType;
@Schema(description="主坝-地基特性")
private String mainFoundation;
@Schema(description="主坝-最大坝高(m)")
private BigDecimal mainMaxHeight;
@Schema(description="主坝-坝顶高程(m)")
private BigDecimal mainCrestElevation;
@Schema(description="主坝-心墙顶高程")
private BigDecimal mainHeartWallCrestElevation;
@Schema(description="主坝-坝顶长度(m)")
private BigDecimal mainCrestLength;
@Schema(description="主坝-坝顶宽度(m)")
private BigDecimal mainCrestWidth;
@Schema(description="主坝-坝基防渗型式")
private String mainFoundControlType;
@Schema(description="主坝-防浪墙顶高程")
private BigDecimal mainTopOfWaveBarrierElevation;
// 副坝字段 (prefix: aux_)
private String auxType; // 副坝-坝型
private BigDecimal auxCrestElevation; // 副坝-坝顶高程(m)
private BigDecimal auxCrestLength; // 副坝-坝顶长度(m)
private BigDecimal auxCrestWidth; // 副坝-坝顶宽度(m)
private BigDecimal auxMaxHeight; // 副坝-最大坝高(m)
@Schema(description="副坝-坝型")
private String auxType;
@Schema(description="副坝-地基特性")
private String auxFoundation;
@Schema(description="副坝-最大坝高(m)")
private BigDecimal auxMaxHeight;
@Schema(description="副坝-坝顶高程(m)")
private BigDecimal auxCrestElevation;
@Schema(description="副坝-心墙顶高程")
private BigDecimal auxHeartWallCrestElevation;
@Schema(description="副坝-坝顶长度(m)")
private BigDecimal auxCrestLength;
@Schema(description="副坝-坝顶宽度(m)")
private BigDecimal auxCrestWidth;
@Schema(description="副坝-坝基防渗型式")
private String auxFoundControlType;
// 溢洪道字段 (prefix: spillway_) 泄水建筑物
private String spillwayType; // 溢洪道-型式
private String spillwayCrestType; // 溢洪道-堰顶型式
private String spillwayFoundation; // 溢洪道-地基特性
private BigDecimal spillwayCrestElevation; // 溢洪道-溢流堰顶高程(m)
private BigDecimal spillwayNetWidth; // 溢洪道-溢流堰净宽(m)
private String spillwayEnergyDissipation; // 溢洪道-消能型式
private BigDecimal spillwayCheckFloodDischarge; // 溢洪道-校核洪水下泄流量(m³/s)
private BigDecimal spillwayDesignFloodDischarge; // 溢洪道-设计洪水下泄流量(m³/s)
private BigDecimal spillwayScouringDischarge; // 溢洪道-消能防冲下泄流量(m³/s)
private BigDecimal spillwayMaxSingleWidthFlow;//溢洪道-最大单宽流量
@Schema(description="溢洪道-型式")
private String spillwayType;
@Schema(description="溢洪道-地基特性")
private String spillwayFoundation;
// 灌溉发电洞字段 (prefix: irrigation_)
private String irrigationType; // 灌溉发电洞-型式
private String irrigationLiningType; // 灌溉发电洞-衬砌型式
private String irrigationFoundation; // 灌溉发电洞-地基特性
private BigDecimal irrigationInletElevation; // 灌溉发电洞-进口底板高程(m)
private String irrigationCrossSection; // 灌溉发电洞-断面尺寸(m)
private BigDecimal irrigationLength; // 灌溉发电洞-洞长(m)
private BigDecimal irrigationDesignFlow; // 灌溉发电洞-设计流量(m³/s)
private String irrigationGateType; // 灌溉发电洞-进口闸门型式
private String irrigationHoistType; // 灌溉发电洞-进口启闭机型式
@Schema(description="溢洪道-堰顶型式")
private String spillwayCrestType;
// 放空洞字段 (prefix: emptying_)
private String emptyingType; // 放空洞-型式
private String emptyingLiningType; // 放空洞-衬砌型式
private String emptyingFoundation; // 放空洞-地基特性
private BigDecimal emptyingInletElevation; // 放空洞-进口底板高程(m)
private String emptyingCrossSection; // 放空洞-断面尺寸(m)
private BigDecimal emptyingLength; // 放空洞-洞长(m)
private BigDecimal emptyingDesignFlow; // 放空洞-设计流量(m³/s)
private String emptyingGateType; // 放空洞-进口闸门型式
private String emptyingHoistType; // 放空洞-进口启闭机型式
@Schema(description="溢洪道-进口底高程(m)")
private BigDecimal spillwayInBottomElevation;
@Schema(description="溢洪道-底宽(m)")
private BigDecimal spillwayBottomWidth;
@Schema(description="溢洪道-渠深(m)")
private BigDecimal spillwayCanalDepth;
@Schema(description="溢洪道-最大泄量1%(m³/s)")
private BigDecimal spillwayMaxDischarge;
@Schema(description="溢洪道-最大泄量0.1%(m³/s)")
private BigDecimal spillwayZeroMaxDischarge;
@Schema(description="溢洪道-消能型式")
private String spillwayEnergyDissipation;
// 主坝输水管字段 (prefix: mwater_)
@Schema(description="主坝输水管-型式")
private String mwaterType;
@Schema(description="主坝输水管-断面尺寸(m)")
private String mwaterCrossSection;
@Schema(description="主坝输水管-进口底部高程(m)")
private BigDecimal mwaterInletElevation;
@Schema(description="主坝输水管-长度(m)")
private BigDecimal mwaterLength;
@Schema(description="主坝输水管-设计流量(m³/s)")
private BigDecimal mwaterDesignFlow;
@Schema(description="主坝输水管-进水口型式")
private String mwaterLiningType;
// 副坝输水管字段 (prefix: awater_)
@Schema(description="副坝输水管-型式")
private String awaterType;
@Schema(description="副坝输水管-地基特性")
private String awaterFoundation;
@Schema(description="副坝输水管-断面尺寸(m)")
private String awaterCrossSection;
@Schema(description="副坝输水管-进口底板高程(m)")
private BigDecimal awaterInletElevation;
@Schema(description="副坝输水管-长度(m)")
private BigDecimal awaterLength;
@Schema(description="副坝输水管-壁厚(m)")
private BigDecimal awaterThick;
@Schema(description="副坝输水管-最大流量(m³/s)")
private BigDecimal awaterMaxFlow;
@Schema(description="副坝输水管-进水口型式")
private String awaterLiningType;
// 拦洪坝字段 (prefix: flood_control_)
private String floodControlType; // 拦洪坝-坝型
private BigDecimal floodControlCrestElevation; // 拦洪坝-坝顶高程(m)
private BigDecimal floodControlCrestLength; // 拦洪坝-坝顶长度(m)
private BigDecimal floodControlCrestWidth; // 拦洪坝-坝顶宽度(m)
private BigDecimal floodControlMaxHeight; // 拦洪坝-最大坝高(m)
@Schema(description="拦洪坝-坝型")
private String floodControlType;
@Schema(description="拦洪坝-坝顶高程(m)")
private BigDecimal floodControlCrestElevation;
@Schema(description="拦洪坝-坝顶长度(m)")
private BigDecimal floodControlCrestLength;
@Schema(description="拦洪坝-坝顶宽度(m)")
private BigDecimal floodControlCrestWidth;
@Schema(description="拦洪坝-最大坝高(m)")
private BigDecimal floodControlMaxHeight;
// 防汛道路字段 (prefix: road_)
private BigDecimal roadLength; // 防汛道路-防汛路长度(m)
private BigDecimal roadWidth; // 防汛道路-路面宽度(m)
@Schema(description="防汛道路-防汛路长度(m)")
private BigDecimal roadLength;
//输水建筑物 (prefix: water_conveyance )
private BigDecimal waterConveyanceFlow;//输水建筑物-设计流量
private String waterConveyanceType;//输水建筑物-进水口形式
private String waterConveyanceWaterIntakeType;//输水建筑物-取水方式
private String waterConveyanceFoundation;//输水建筑物-地基特性
private BigDecimal waterConveyanceInletBottomHigh;//输水建筑物-进口底槛高程
private String waterConveyanceOrificeSize;//输水建筑物-孔口尺寸
private String waterConveyanceGateType;//输水建筑物-闸门型式
private Integer waterConveyanceHoistNum;//输水建筑物-启闭机型式容量及数量
private String waterConveyanceTunnelType;//输水建筑物-引水隧洞型式
private BigDecimal waterConveyanceLength;//输水建筑物-长度
private String waterConveyanceLiningType;//输水建筑物-衬砌型式
@Schema(description="防汛道路-路面宽度(m)")
private BigDecimal roadWidth;
//东输水隧洞 (prefix: water_conveyance )
@Schema(description="东输水隧洞-进水口形式")
private String waterConveyanceType;
@Schema(description="东输水隧洞-地基特性")
private String waterConveyanceFoundation;
@Schema(description="东输水隧洞-断面尺寸(m)")
private String waterConveyanceCrossSection;
@Schema(description="东输水隧洞-进口底板高程(m)")
private BigDecimal waterConveyanceInletElevation;
@Schema(description="东输水隧洞-长度")
private BigDecimal waterConveyanceLength;
@Schema(description="东输水隧洞-壁厚(m)")
private BigDecimal waterConveyanceThick;
@Schema(description="东输水隧洞-最大流量(m³/s)")
private BigDecimal waterConveyanceMaxFlow;
@Schema(description="东输水隧洞-进水口型式")
private String waterConveyanceLiningType;
}

View File

@ -54,7 +54,7 @@ public class WarningRuleInfoService extends ServiceImpl<WarningRuleInfoMapper,Wa
}
public String publish(WarningRuleInfo warningRuleInfo) {
warningRuleInfo.setStatus(2);
warningRuleInfo.setStatus(1);
Integer warningLevel = warningRuleInfo.getWarningLevel();
LambdaQueryWrapper<AuditProcess> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(AuditProcess::getWarningLevel,warningLevel);
@ -68,6 +68,7 @@ public class WarningRuleInfoService extends ServiceImpl<WarningRuleInfoMapper,Wa
warningRuleInfo.setFirstAuditUserId(auditProcess.getFirstAuditUserId());
warningRuleInfo.setFirstAuditUserName(auditProcess.getFirstAuditUserName());
this.updateById(warningRuleInfo);
objService.saveOrUpdateBatch(warningRuleInfo.getObjs());
return "发布成功";
}

View File

@ -76,8 +76,9 @@ public class WarningRuleTask {
}).collect(Collectors.toList());
for (WarningRule warningRule : warningRules) {
//获取预警类型
String warningType = warningRule.getWarningType();
//获取预警对象
Integer warningObj = warningRule.getWarningObj();
String relStcd = warningRule.getRelStcd();
//获取预警的规则细节
List<WarningCondition> conditions = warningRule.getConditions();
@ -87,7 +88,7 @@ public class WarningRuleTask {
// 为每个条件计算实际值并设置是否满足
for (WarningCondition condition : conditions) {
BigDecimal actualValue = calculateActualValue(condition, warningType);
BigDecimal actualValue = calculateActualValue(condition, warningObj,relStcd);
condition.setIsEnjoy(compareValue(actualValue, condition));
}
@ -98,12 +99,8 @@ public class WarningRuleTask {
if (isRuleSatisfied) {
log.info("预警规则 {} 满足条件,触发预警", warningRule.getId());
// 生成规则信息
String ruleInfo = generateRuleInfo(conditions);
WarningRuleInfo warningRuleInfo = new WarningRuleInfo();
warningRuleInfo.setRuleId(warningRule.getId());
warningRuleInfo.setConditions(conditions);
warningRuleInfo.setCreateTime(LocalDateTime.now());
warningRuleInfo.setStatus(0);
warningRuleInfoService.save(warningRuleInfo);
@ -182,23 +179,17 @@ public class WarningRuleTask {
/**
*
*/
private BigDecimal calculateActualValue(WarningCondition condition, String warningType) {
// String indicatorType = condition.getIndicatorType();
// String stcd = condition.getStcd();
String indicatorType = null;
String stcd = null;
private BigDecimal calculateActualValue(WarningCondition condition, Integer warningObj,String stcd) {
Integer durationHours = condition.getDurationHours();
switch (indicatorType) {
case "REAL_WATER_LEVEL":
switch (warningObj) {
case 1:
return getRzByStcd(stcd);
case "PEAK_FLOW":
return getFloowMaxQ(durationHours);
case "RAINFALL":
case 2:
return getRealRainFall(stcd, durationHours);
case "WATER_STORAGE":
// return getWaterStorage(condition.getYear());
case "FORECAST_RAINFALL":
case 9:
return getFloowMaxQ(durationHours);
case 8:
return getForecastRainFall(stcd, durationHours);
default:
return BigDecimal.ZERO;