Browse Source

--增加气象预警预防建议工具类

develop
mengff 1 month ago
parent
commit
9caf442291
  1. 130
      zc-business/src/main/java/com/zc/business/utils/WeatherTrafficProposeUtil.java

130
zc-business/src/main/java/com/zc/business/utils/WeatherTrafficProposeUtil.java

@ -0,0 +1,130 @@
package com.zc.business.utils;
import lombok.Getter;
public class WeatherTrafficProposeUtil {
// 定义天气条件的等级
@Getter
public enum WeatherCondition {
RAIN_LEVEL_1(3, "1"),
RAIN_LEVEL_2(2, "1"),
RAIN_LEVEL_3(1, "1"),
RAIN_LEVEL_4(0, "1"),
FOG_LEVEL_1(3, "5,11,12"),
FOG_LEVEL_2(2, "5,11,12"),
FOG_LEVEL_3(1, "5,11,12"),
FOG_LEVEL_4(0, "5,11,12"),
SNOW_LEVEL_1(3, "2,9,10,13"),
SNOW_LEVEL_2(2, "2,9,10,13"),
SNOW_LEVEL_3(1, "2,9,10,13"),
SNOW_LEVEL_4(0, "2,9,10,13");
private final int level;
private final String description;
WeatherCondition(int level, String description) {
this.level = level;
this.description = description;
}
public static WeatherCondition fromLevelAndDescription(int level, String description) {
for (WeatherCondition condition : WeatherCondition.values()) {
if (condition.getLevel() == level && condition.getDescription().contains(description)) {
return condition;
}
}
throw new IllegalArgumentException("No matching WeatherCondition found for level: " + level + " and description: " + description);
}
}
// 获取限速建议
public static int getSpeedLimit(WeatherCondition condition) {
switch (condition) {
case RAIN_LEVEL_4:
case FOG_LEVEL_4:
case SNOW_LEVEL_4:
return 80; // 四级
case RAIN_LEVEL_3:
case FOG_LEVEL_3:
case SNOW_LEVEL_3:
return 60; // 三级
case RAIN_LEVEL_2:
case FOG_LEVEL_2:
case SNOW_LEVEL_2:
return 40; // 二级
case RAIN_LEVEL_1:
case FOG_LEVEL_1:
case SNOW_LEVEL_1:
return 20; // 一级(带队通行)
default:
throw new IllegalArgumentException("Unknown weather condition: " + condition);
}
}
// 获取流量控制建议
public static String getTrafficControlAdvice(WeatherCondition condition) {
switch (condition) {
case RAIN_LEVEL_4:
case FOG_LEVEL_4:
case SNOW_LEVEL_4:
case RAIN_LEVEL_3:
case FOG_LEVEL_3:
case SNOW_LEVEL_3:
case RAIN_LEVEL_2:
case FOG_LEVEL_2:
case SNOW_LEVEL_2:
return "建议局部封闭、间断放行。";
case RAIN_LEVEL_1:
case FOG_LEVEL_1:
case SNOW_LEVEL_1:
return "建议全线封闭收费站、必要时可带队通行的控制措施。全线封闭时,正在高速公路通行的车辆应以不大于 20km/h 的速度就近驶出高速公路或驶入服务区。带队通行时,应保障交通有序通行。";
default:
throw new IllegalArgumentException("Unknown weather condition: " + condition);
}
}
// 获取车型控制建议
public static String getVehicleControlAdvice(WeatherCondition condition) {
switch (condition) {
case RAIN_LEVEL_4:
case FOG_LEVEL_4:
case SNOW_LEVEL_4:
return "所有车型均可通行。";
case RAIN_LEVEL_3:
case FOG_LEVEL_3:
return "禁止“两客一危”车辆通行。";
case RAIN_LEVEL_2:
case FOG_LEVEL_2:
return "禁止七座以上(不含七座)客车、危险品运输车辆和黄牌货车通行。";
case RAIN_LEVEL_1:
case FOG_LEVEL_1:
case SNOW_LEVEL_1:
return "全线封闭;必要时可带队通行。";
case SNOW_LEVEL_2:
return "仅间隔放行黄牌货车。";
case SNOW_LEVEL_3:
return "禁止七座以上(不含七座)客车、危险品运输车辆通行。";
default:
throw new IllegalArgumentException("Unknown weather condition: " + condition);
}
}
public static void main(String[] args) {
int warningLevelStringNumber = 3;
String earlyWarningTypeStringNumber= "1";
try {
WeatherCondition condition = WeatherCondition.fromLevelAndDescription(warningLevelStringNumber, earlyWarningTypeStringNumber);
System.out.println("Weather Condition: " + condition.name() + ", Level: " + condition.getLevel() + ", Description: " + condition.getDescription());
int speedLimit = getSpeedLimit(condition);
String trafficAdvice = getTrafficControlAdvice(condition);
String vehicleAdvice = getVehicleControlAdvice(condition);
System.out.println("限速建议: " + speedLimit + " km/h");
System.out.println("流量控制建议: " + trafficAdvice);
System.out.println("车型控制建议: " + vehicleAdvice);
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage());
}
}
}
Loading…
Cancel
Save