水库基本信息

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/**", "/impactZoneInfo/**",
"/auditProcess/**", "/auditProcess/**",
"/warningRule/**", "/warningRule/**",
"/reservoirDemarcationInfo/**", "/attResBuilding/**"
"/safety/degradeScrapLedger/**"
}; };
return GroupedOpenApi.builder() return GroupedOpenApi.builder()
.group("ss") .group("ss")

View File

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

View File

@ -1,6 +1,5 @@
package com.gunshi.project.ss.model; package com.gunshi.project.ss.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -11,99 +10,194 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* : * :
* author: xusan * author: xusan
* date: 2024-07-08 17:34:26 * date: 2024-07-08 17:34:26
*/ */
@Schema(description="水库基本信息表") @Schema(description="水库基本信息表")
@Data @Data
@TableName("public.att_res_building") @TableName("public.att_res_building")
public class AttResBuilding implements Serializable { public class AttResBuilding implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* *
*/ */
@Schema(description="水库代码")
@TableId(value = "id", type = IdType.INPUT) @TableId(value = "id", type = IdType.INPUT)
private Integer id; private Integer id;
// 主坝字段 (prefix: main_) 挡水建筑物(大坝) // 主坝字段 (prefix: main_) 挡水建筑物(大坝)
private String mainType; // 主坝-坝型 建筑物型式 @Schema(description="主坝-坝型 建筑物型式")
private String mainFoundation; //主坝-地基特性 private String mainType;
private String mainBasicIntensityOfAnEarthQuake; //主坝-地震基本烈度
private BigDecimal mainCrestElevation; // 主坝-坝顶高程(m) @Schema(description="主坝-地基特性")
private BigDecimal mainCrestLength; // 主坝-坝顶长度(m) private String mainFoundation;
private BigDecimal mainCrestWidth; // 主坝-坝顶宽度(m)
private BigDecimal mainMaxHeight; // 主坝-最大坝高(m) @Schema(description="主坝-最大坝高(m)")
private BigDecimal mainEarthquakeAcceleration;// 主坝-地震峰值加速度 private BigDecimal mainMaxHeight;
private BigDecimal mainTopOfWaveBarrierElevation;// 主坝-防浪墙顶高程
@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_) // 副坝字段 (prefix: aux_)
private String auxType; // 副坝-坝型 @Schema(description="副坝-坝型")
private BigDecimal auxCrestElevation; // 副坝-坝顶高程(m) private String auxType;
private BigDecimal auxCrestLength; // 副坝-坝顶长度(m)
private BigDecimal auxCrestWidth; // 副坝-坝顶宽度(m) @Schema(description="副坝-地基特性")
private BigDecimal auxMaxHeight; // 副坝-最大坝高(m) 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_) 泄水建筑物 // 溢洪道字段 (prefix: spillway_) 泄水建筑物
private String spillwayType; // 溢洪道-型式 @Schema(description="溢洪道-型式")
private String spillwayCrestType; // 溢洪道-堰顶型式 private String spillwayType;
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 spillwayFoundation;
// 灌溉发电洞字段 (prefix: irrigation_) @Schema(description="溢洪道-堰顶型式")
private String irrigationType; // 灌溉发电洞-型式 private String spillwayCrestType;
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; // 灌溉发电洞-进口启闭机型式
// 放空洞字段 (prefix: emptying_) @Schema(description="溢洪道-进口底高程(m)")
private String emptyingType; // 放空洞-型式 private BigDecimal spillwayInBottomElevation;
private String emptyingLiningType; // 放空洞-衬砌型式
private String emptyingFoundation; // 放空洞-地基特性 @Schema(description="溢洪道-底宽(m)")
private BigDecimal emptyingInletElevation; // 放空洞-进口底板高程(m) private BigDecimal spillwayBottomWidth;
private String emptyingCrossSection; // 放空洞-断面尺寸(m)
private BigDecimal emptyingLength; // 放空洞-洞长(m) @Schema(description="溢洪道-渠深(m)")
private BigDecimal emptyingDesignFlow; // 放空洞-设计流量(m³/s) private BigDecimal spillwayCanalDepth;
private String emptyingGateType; // 放空洞-进口闸门型式
private String emptyingHoistType; // 放空洞-进口启闭机型式 @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_) // 拦洪坝字段 (prefix: flood_control_)
private String floodControlType; // 拦洪坝-坝型 @Schema(description="拦洪坝-坝型")
private BigDecimal floodControlCrestElevation; // 拦洪坝-坝顶高程(m) private String floodControlType;
private BigDecimal floodControlCrestLength; // 拦洪坝-坝顶长度(m)
private BigDecimal floodControlCrestWidth; // 拦洪坝-坝顶宽度(m) @Schema(description="拦洪坝-坝顶高程(m)")
private BigDecimal floodControlMaxHeight; // 拦洪坝-最大坝高(m) private BigDecimal floodControlCrestElevation;
@Schema(description="拦洪坝-坝顶长度(m)")
private BigDecimal floodControlCrestLength;
@Schema(description="拦洪坝-坝顶宽度(m)")
private BigDecimal floodControlCrestWidth;
@Schema(description="拦洪坝-最大坝高(m)")
private BigDecimal floodControlMaxHeight;
// 防汛道路字段 (prefix: road_) // 防汛道路字段 (prefix: road_)
private BigDecimal roadLength; // 防汛道路-防汛路长度(m) @Schema(description="防汛道路-防汛路长度(m)")
private BigDecimal roadWidth; // 防汛道路-路面宽度(m) private BigDecimal roadLength;
//输水建筑物 (prefix: water_conveyance ) @Schema(description="防汛道路-路面宽度(m)")
private BigDecimal waterConveyanceFlow;//输水建筑物-设计流量 private BigDecimal roadWidth;
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;//输水建筑物-衬砌型式
}
//东输水隧洞 (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) { public String publish(WarningRuleInfo warningRuleInfo) {
warningRuleInfo.setStatus(2); warningRuleInfo.setStatus(1);
Integer warningLevel = warningRuleInfo.getWarningLevel(); Integer warningLevel = warningRuleInfo.getWarningLevel();
LambdaQueryWrapper<AuditProcess> queryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<AuditProcess> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(AuditProcess::getWarningLevel,warningLevel); queryWrapper.eq(AuditProcess::getWarningLevel,warningLevel);
@ -68,6 +68,7 @@ public class WarningRuleInfoService extends ServiceImpl<WarningRuleInfoMapper,Wa
warningRuleInfo.setFirstAuditUserId(auditProcess.getFirstAuditUserId()); warningRuleInfo.setFirstAuditUserId(auditProcess.getFirstAuditUserId());
warningRuleInfo.setFirstAuditUserName(auditProcess.getFirstAuditUserName()); warningRuleInfo.setFirstAuditUserName(auditProcess.getFirstAuditUserName());
this.updateById(warningRuleInfo); this.updateById(warningRuleInfo);
objService.saveOrUpdateBatch(warningRuleInfo.getObjs()); objService.saveOrUpdateBatch(warningRuleInfo.getObjs());
return "发布成功"; return "发布成功";
} }

View File

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