个人开发5
应急预案管理模块开发日记
关键词:Spring Boot、MySQL、Excel模板解析、多版本控制
一、需求分析与技术选型
需求核心:
- 预案模板标准化:支持下载模板后批量导入,需兼容Excel格式(基于用户提供的演练项目分类,如客票系统、机房供配电等)。
- 版本管理:每个预案需记录版本号,支持历史版本追溯与回滚。
- 权限控制:仅管理员可编辑/删除预案,普通用户可查看与下载模板。
技术方案:
后端框架:Spring Boot 3.x(集成Apache POI处理Excel)
数据库:MySQL 8.0,表结构设计参考emergency_plan(预案主表)与plan_template(模板表)
文件存储:预案文档采用OSS对象存储,模板文件存于本地/templates目录
前端交互:Vue3 + Element Plus(弹窗表单、文件上传组件)
sql
-- 应急预案表(新增版本控制字段)
CREATE TABLE emergency_plan (
plan_id INT AUTO_INCREMENT PRIMARY KEY,
plan_name VARCHAR(200) NOT NULL COMMENT '预案名称',
plan_type ENUM('客票系统','旅服系统','机房供配电/UPS') NOT NULL,
version VARCHAR(20) NOT NULL COMMENT '版本号(格式:v1.0.0)',
file_path VARCHAR(255) NOT NULL COMMENT 'OSS存储路径',
is_latest TINYINT(1) DEFAULT 1 COMMENT '是否为最新版本',
creator_id INT NOT NULL
);
-- 预案模板表(增加下载计数统计)
CREATE TABLE plan_template (
template_id INT AUTO_INCREMENT PRIMARY KEY,
template_name VARCHAR(200) NOT NULL,
applicable_type VARCHAR(50) NOT NULL COMMENT '适用预案类型',
download_count INT DEFAULT 0 COMMENT '下载次数',
file_path VARCHAR(255) NOT NULL
);
@GetMapping("/template/download/{type}")
public ResponseEntity<Resource> downloadTemplate(@PathVariable String type) {
String filePath = templateService.getPathByType(type);
File file = new File(filePath);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"")
.body(new FileSystemResource(file));
}
- 批量导入接口(含事务管理):
@Transactional
public void batchImport(MultipartFile file) {
List<EmergencyPlanDTO> plans = ExcelParser.parse(file); // 使用POI解析Excel
plans.forEach(plan -> {
if (!planTypeValidator.isValid(plan.getType())) {
throw new InvalidTemplateException("无效的预案类型");
}
planRepository.save(convertToEntity(plan));
});
}
- 在`plan_type`字段增加枚举约束,前端下拉框动态加载类型。
- 后端解析时通过`JSR-303`校验,返回详细错误定位(如“第5行:机房UPS不属于有效类型”)。
- 新增数据时自动生成语义化版本号(如v1.2.3),`is_latest`字段标记最新版本。
- 使用乐观锁(`@Version`注解)控制并发修改。
- 前端采用分片上传(每片5MB),后端通过MD5校验合并文件。
- 异步线程处理OSS上传,避免阻塞主线程。
为`plan_type`和`creator_id`添加联合索引。
模板文件列表缓存至Redis,有效期2小时。
当前进展:已完成核心功能开发并通过冒烟测试,代码覆盖率85%。
遗留问题:
- 移动端适配尚未完成(计划使用Vant UI重构表单页)。
- 审计日志模块待接入(记录预案修改历史)。
1. 与“演练评估反馈”模块联动,支持根据评估结果自动推荐预案更新。
2. 集成Markdown编辑器,支持预案内容富文本编辑。
浙公网安备 33010602011771号