细化隐患点类型
This commit is contained in:
@@ -18,9 +18,8 @@ public class XianHiddenDangerSpotsController extends BaseController{
|
||||
|
||||
@GetMapping("/base-points")
|
||||
public ApiResponse<List<XianHiddenDangerSpotsBasePointVo>> getBasePoints(
|
||||
@RequestParam String type,
|
||||
@RequestParam(required = false) String disasterType) {
|
||||
return ApiResponse.ok(xianHiddenDangerSpotsService.getBasePoints(type, disasterType));
|
||||
return ApiResponse.ok(xianHiddenDangerSpotsService.getBasePoints(disasterType));
|
||||
}
|
||||
|
||||
@GetMapping("point-detail/{id}")
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.gis.xian.entity;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 地质灾害隐患点
|
||||
* 隐患点(滑坡、泥石流、山洪、内涝)
|
||||
* @TableName xian_hidden_danger_spots
|
||||
*/
|
||||
@Data
|
||||
|
||||
@@ -4,11 +4,7 @@ import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum DisasterTypeEnum {
|
||||
// 第一级:灾害大类
|
||||
RAINSTORM("rainstorm", "暴雨"),
|
||||
EARTHQUAKE("earthquake", "地震"),
|
||||
|
||||
// 第二级:具体灾害类型(暴雨类)
|
||||
// 具体灾害类型
|
||||
LANDSLIDE("landslide", "滑坡"),
|
||||
DEBRIS_FLOW("debris_flow", "泥石流"),
|
||||
FLASH_FLOOD("flash_flood", "山洪"),
|
||||
|
||||
@@ -13,11 +13,10 @@ import java.util.List;
|
||||
public interface XianHiddenDangerSpotsMapper {
|
||||
/**
|
||||
* 获取所有基础点:滑坡、泥石流、山洪、内涝
|
||||
* @param type 灾害大类(rainstorm-暴雨, earthquake-地震)
|
||||
* @param disasterType 具体灾害类型(landslide-滑坡, debris_flow-泥石流, flash_flood-山洪, water_logging-内涝),可选
|
||||
* @return 基础点列表
|
||||
*/
|
||||
List<XianHiddenDangerSpots> getBasePoints(String type, String disasterType);
|
||||
List<XianHiddenDangerSpots> getBasePoints(String disasterType);
|
||||
|
||||
/**
|
||||
* 根据id获取隐患点详情
|
||||
|
||||
@@ -9,11 +9,10 @@ public interface XianHiddenDangerSpotsService {
|
||||
|
||||
/**
|
||||
* 获取所有基础点:滑坡、泥石流、山洪、内涝
|
||||
* @param type 灾害大类(rainstorm-暴雨, earthquake-地震)
|
||||
* @param disasterType 具体灾害类型(landslide-滑坡, debris_flow-泥石流, flash_flood-山洪, water_logging-内涝),可选
|
||||
* @return 基础点列表
|
||||
*/
|
||||
List<XianHiddenDangerSpotsBasePointVo> getBasePoints(String type, String disasterType);
|
||||
List<XianHiddenDangerSpotsBasePointVo> getBasePoints(String disasterType);
|
||||
|
||||
/**
|
||||
* 根据id获取隐患点详情
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.gis.xian.entity.XianHiddenDangerSpots;
|
||||
import com.gis.xian.vo.XianHiddenDangerSpotsBasePointVo;
|
||||
import com.gis.xian.vo.XianHiddenDangerSpotsPointDetailVo;
|
||||
import com.gis.xian.enums.DisasterTypeEnum;
|
||||
import com.gis.xian.mapper.XianHiddenDangerSpotsMapper;
|
||||
import com.gis.xian.service.XianHiddenDangerSpotsService;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -23,34 +22,25 @@ public class IXianHiddenDangerSpotsServiceImpl implements XianHiddenDangerSpotsS
|
||||
@Resource
|
||||
private XianHiddenDangerSpotsMapper xianHiddenDangerSpotsMapper;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm}")
|
||||
private String rainstormBasePointsKey;
|
||||
@Value("${init.data.base-points.hidden-danger.all}")
|
||||
private String allBasePointsKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-landslide}")
|
||||
private String rainstormLandslideKey;
|
||||
@Value("${init.data.base-points.hidden-danger.landslide}")
|
||||
private String landslideKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-debris-flow}")
|
||||
private String rainstormDebrisFlowKey;
|
||||
@Value("${init.data.base-points.hidden-danger.debris-flow}")
|
||||
private String debrisFlowKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-flash-flood}")
|
||||
private String rainstormMountainFloodKey;
|
||||
@Value("${init.data.base-points.hidden-danger.flash-flood}")
|
||||
private String flashFloodKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-water-logging}")
|
||||
private String rainstormWaterLoggingKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.earthquake}")
|
||||
private String earthquakeBasePointsKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.earthquake-landslide}")
|
||||
private String earthquakeLandslideKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.earthquake-debris-flow}")
|
||||
private String earthquakeDebrisFlowKey;
|
||||
@Value("${init.data.base-points.hidden-danger.water-logging}")
|
||||
private String waterLoggingKey;
|
||||
|
||||
@Override
|
||||
public List<XianHiddenDangerSpotsBasePointVo> getBasePoints(String type, String disasterType) {
|
||||
public List<XianHiddenDangerSpotsBasePointVo> getBasePoints(String disasterType) {
|
||||
// 构建Redis key
|
||||
String redisKey = buildRedisKey(type, disasterType);
|
||||
String redisKey = buildRedisKey(disasterType);
|
||||
|
||||
// 从redis中读取基础点信息
|
||||
Object data = redisTemplate.opsForValue().get(redisKey);
|
||||
@@ -58,7 +48,7 @@ public class IXianHiddenDangerSpotsServiceImpl implements XianHiddenDangerSpotsS
|
||||
if (data == null) {
|
||||
// 从数据库查询
|
||||
List<XianHiddenDangerSpotsBasePointVo> basePoints =
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(xianHiddenDangerSpotsMapper.getBasePoints(type, disasterType));
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(xianHiddenDangerSpotsMapper.getBasePoints(disasterType));
|
||||
|
||||
// 存入Redis
|
||||
redisTemplate.opsForValue().set(redisKey, JSON.toJSONString(basePoints));
|
||||
@@ -69,40 +59,24 @@ public class IXianHiddenDangerSpotsServiceImpl implements XianHiddenDangerSpotsS
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据type和disasterType构建Redis key
|
||||
* 根据disasterType构建Redis key
|
||||
*/
|
||||
private String buildRedisKey(String type, String disasterType) {
|
||||
if (DisasterTypeEnum.RAINSTORM.getType().equals(type)) {
|
||||
private String buildRedisKey(String disasterType) {
|
||||
if (disasterType == null || disasterType.isEmpty()) {
|
||||
return rainstormBasePointsKey;
|
||||
return allBasePointsKey;
|
||||
}
|
||||
switch (disasterType) {
|
||||
case "landslide":
|
||||
return rainstormLandslideKey;
|
||||
return landslideKey;
|
||||
case "debris_flow":
|
||||
return rainstormDebrisFlowKey;
|
||||
return debrisFlowKey;
|
||||
case "flash_flood":
|
||||
return rainstormMountainFloodKey;
|
||||
return flashFloodKey;
|
||||
case "waterlogging":
|
||||
return rainstormWaterLoggingKey;
|
||||
return waterLoggingKey;
|
||||
default:
|
||||
return rainstormBasePointsKey;
|
||||
return allBasePointsKey;
|
||||
}
|
||||
} else if (DisasterTypeEnum.EARTHQUAKE.getType().equals(type)) {
|
||||
if (disasterType == null || disasterType.isEmpty()) {
|
||||
return earthquakeBasePointsKey;
|
||||
}
|
||||
switch (disasterType) {
|
||||
case "landslide":
|
||||
return earthquakeLandslideKey;
|
||||
case "debris_flow":
|
||||
return earthquakeDebrisFlowKey;
|
||||
default:
|
||||
return earthquakeBasePointsKey;
|
||||
}
|
||||
}
|
||||
// 默认返回暴雨的key
|
||||
return rainstormBasePointsKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.gis.xian.task;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.gis.xian.enums.DisasterTypeEnum;
|
||||
import com.gis.xian.mapper.*;
|
||||
import com.gis.xian.vo.*;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -58,29 +57,20 @@ public class InitializeData {
|
||||
@Resource
|
||||
RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm}")
|
||||
private String rainstormBasePointsKey;
|
||||
@Value("${init.data.base-points.hidden-danger.all}")
|
||||
private String allBasePointsKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-landslide}")
|
||||
private String rainstormLandslideKey;
|
||||
@Value("${init.data.base-points.hidden-danger.landslide}")
|
||||
private String landslideKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-debris-flow}")
|
||||
private String rainstormDebrisFlowKey;
|
||||
@Value("${init.data.base-points.hidden-danger.debris-flow}")
|
||||
private String debrisFlowKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-flash-flood}")
|
||||
private String rainstormMountainFloodKey;
|
||||
@Value("${init.data.base-points.hidden-danger.flash-flood}")
|
||||
private String flashFloodKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.rainstorm-water-logging}")
|
||||
private String rainstormWaterLoggingKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.earthquake}")
|
||||
private String earthquakeBasePointsKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.earthquake-landslide}")
|
||||
private String earthquakeLandslideKey;
|
||||
|
||||
@Value("${init.data.base-points.hidden-danger.earthquake-debris-flow}")
|
||||
private String earthquakeDebrisFlowKey;
|
||||
@Value("${init.data.base-points.hidden-danger.water-logging}")
|
||||
private String waterLoggingKey;
|
||||
|
||||
@Value("${init.data.base-points.risk}")
|
||||
private String riskBasePointsKey;
|
||||
@@ -118,84 +108,54 @@ public class InitializeData {
|
||||
log.info("开始初始化数据");
|
||||
// 并行执行所有数据库查询和Redis写入
|
||||
|
||||
// 暴雨类隐患点 - 总体
|
||||
CompletableFuture<Void> rainstormFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(rainstormBasePointsKey, JSON.toJSONString(
|
||||
// 隐患点 - 总体
|
||||
CompletableFuture<Void> allFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(allBasePointsKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.RAINSTORM.getType(), null))
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(null))
|
||||
)
|
||||
);
|
||||
log.info("加载暴雨隐患点信息(总体)并写入redis完成");
|
||||
log.info("加载隐患点信息(总体)并写入redis完成");
|
||||
});
|
||||
|
||||
// 暴雨类隐患点 - 滑坡
|
||||
CompletableFuture<Void> rainstormLandslideFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(rainstormLandslideKey, JSON.toJSONString(
|
||||
// 隐患点 - 滑坡
|
||||
CompletableFuture<Void> landslideFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(landslideKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.RAINSTORM.getType(), "landslide"))
|
||||
xianHiddenDangerSpotsMapper.getBasePoints("landslide"))
|
||||
)
|
||||
);
|
||||
log.info("加载暴雨隐患点信息(滑坡)并写入redis完成");
|
||||
log.info("加载隐患点信息(滑坡)并写入redis完成");
|
||||
});
|
||||
|
||||
// 暴雨类隐患点 - 泥石流
|
||||
CompletableFuture<Void> rainstormDebrisFlowFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(rainstormDebrisFlowKey, JSON.toJSONString(
|
||||
// 隐患点 - 泥石流
|
||||
CompletableFuture<Void> debrisFlowFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(debrisFlowKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.RAINSTORM.getType(), "debris_flow"))
|
||||
xianHiddenDangerSpotsMapper.getBasePoints("debris_flow"))
|
||||
)
|
||||
);
|
||||
log.info("加载暴雨隐患点信息(泥石流)并写入redis完成");
|
||||
log.info("加载隐患点信息(泥石流)并写入redis完成");
|
||||
});
|
||||
|
||||
// 暴雨类隐患点 - 山洪
|
||||
CompletableFuture<Void> rainstormMountainFloodFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(rainstormMountainFloodKey, JSON.toJSONString(
|
||||
// 隐患点 - 山洪
|
||||
CompletableFuture<Void> flashFloodFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(flashFloodKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.RAINSTORM.getType(), "flash_flood"))
|
||||
xianHiddenDangerSpotsMapper.getBasePoints("flash_flood"))
|
||||
)
|
||||
);
|
||||
log.info("加载暴雨隐患点信息(山洪)并写入redis完成");
|
||||
log.info("加载隐患点信息(山洪)并写入redis完成");
|
||||
});
|
||||
|
||||
// 暴雨类隐患点 - 内涝
|
||||
CompletableFuture<Void> rainstormWaterLoggingFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(rainstormWaterLoggingKey, JSON.toJSONString(
|
||||
// 隐患点 - 内涝
|
||||
CompletableFuture<Void> waterLoggingFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(waterLoggingKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.RAINSTORM.getType(), "water_logging"))
|
||||
xianHiddenDangerSpotsMapper.getBasePoints("water_logging"))
|
||||
)
|
||||
);
|
||||
log.info("加载暴雨隐患点信息(内涝)并写入redis完成");
|
||||
});
|
||||
|
||||
// 地震类隐患点 - 总体
|
||||
CompletableFuture<Void> earthquakeFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(earthquakeBasePointsKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.EARTHQUAKE.getType(), null))
|
||||
)
|
||||
);
|
||||
log.info("加载地震隐患点信息(总体)并写入redis完成");
|
||||
});
|
||||
|
||||
// 地震类隐患点 - 滑坡
|
||||
CompletableFuture<Void> earthquakeLandslideFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(earthquakeLandslideKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.EARTHQUAKE.getType(), "landslide"))
|
||||
)
|
||||
);
|
||||
log.info("加载地震隐患点信息(滑坡)并写入redis完成");
|
||||
});
|
||||
|
||||
// 地震类隐患点 - 泥石流
|
||||
CompletableFuture<Void> earthquakeDebrisFlowFuture = CompletableFuture.runAsync(() -> {
|
||||
redisTemplate.opsForValue().set(earthquakeDebrisFlowKey, JSON.toJSONString(
|
||||
XianHiddenDangerSpotsBasePointVo.entity2Vo(
|
||||
xianHiddenDangerSpotsMapper.getBasePoints(DisasterTypeEnum.EARTHQUAKE.getType(), "debris_flow"))
|
||||
)
|
||||
);
|
||||
log.info("加载地震隐患点信息(泥石流)并写入redis完成");
|
||||
log.info("加载隐患点信息(内涝)并写入redis完成");
|
||||
});
|
||||
|
||||
CompletableFuture<Void> riskFuture = CompletableFuture.runAsync(() -> {
|
||||
@@ -290,9 +250,8 @@ public class InitializeData {
|
||||
|
||||
// 等待所有任务完成
|
||||
CompletableFuture.allOf(
|
||||
rainstormFuture, rainstormLandslideFuture, rainstormDebrisFlowFuture,
|
||||
rainstormMountainFloodFuture, rainstormWaterLoggingFuture,
|
||||
earthquakeFuture, earthquakeLandslideFuture, earthquakeDebrisFlowFuture,
|
||||
allFuture, landslideFuture, debrisFlowFuture,
|
||||
flashFloodFuture, waterLoggingFuture,
|
||||
riskFuture, hospitalsFuture,
|
||||
dangerousSourceFuture, emergencyShelterFuture, firefighterFuture, storePointsFuture, schoolFuture,
|
||||
bridgeFuture, reservoirFuture, subwayFuture
|
||||
|
||||
@@ -30,12 +30,7 @@
|
||||
SELECT id, disaster_name, lon, lat, disaster_type FROM xian_hidden_danger_spots
|
||||
<where>
|
||||
is_delete = 0
|
||||
<if test="type != null and type == 'rainstorm'">
|
||||
AND disaster_type IN('滑坡', '泥石流', '山洪', '内涝')
|
||||
</if>
|
||||
<if test="type != null and type == 'earthquake'">
|
||||
AND disaster_type IN('滑坡', '泥石流')
|
||||
</if>
|
||||
<if test="disasterType != null and disasterType != ''">
|
||||
<choose>
|
||||
<when test="disasterType == 'landslide'">
|
||||
|
||||
@@ -11,14 +11,11 @@ init:
|
||||
# 基础信息点数据:滑坡、泥石流、山洪、内涝
|
||||
base-points:
|
||||
hidden-danger:
|
||||
rainstorm: 'xian:init:data:base-points:hidden-danger:rainstorm'
|
||||
rainstorm-landslide: 'xian:init:data:base-points:hidden-danger:rainstorm:landslide'
|
||||
rainstorm-debris-flow: 'xian:init:data:base-points:hidden-danger:rainstorm:debris_flow'
|
||||
rainstorm-flash-flood: 'xian:init:data:base-points:hidden-danger:rainstorm:flash_flood'
|
||||
rainstorm-water-logging: 'xian:init:data:base-points:hidden-danger:rainstorm:water_logging'
|
||||
earthquake: 'xian:init:data:base-points:hidden-danger:earthquake'
|
||||
earthquake-landslide: 'xian:init:data:base-points:hidden-danger:earthquake:landslide'
|
||||
earthquake-debris-flow: 'xian:init:data:base-points:hidden-danger:earthquake:debris_flow'
|
||||
all: 'xian:init:data:base-points:hidden-danger:all'
|
||||
landslide: 'xian:init:data:base-points:hidden-danger:landslide'
|
||||
debris-flow: 'xian:init:data:base-points:hidden-danger:debris_flow'
|
||||
flash-flood: 'xian:init:data:base-points:hidden-danger:flash_flood'
|
||||
water-logging: 'xian:init:data:base-points:hidden-danger:water_logging'
|
||||
risk: 'xian:init:data:base-points:risk'
|
||||
hospitals: 'xian:init:data:base-points:hospitals'
|
||||
dangerous-source: 'xian:init:data:base-points:dangerous-source'
|
||||
|
||||
Reference in New Issue
Block a user