💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
目录
- 户外救援管理系统介绍
- 户外救援管理系统演示视频
- 户外救援管理系统演示图片
- 户外救援管理系统代码展示
- 户外救援管理系统文档展示
户外救援管理系统介绍
基于Spring Boot的户外救援管理系统是一个面向户外救援信息管理的B/S系统,同时保留Java和Python两个版本。Java版后端采用Spring Boot、SpringMVC和MyBatis,Python版采用Django;前端使用Vue、ElementUI和HTML,数据库使用MySQL,开发工具可按版本选择IDEA或PyCharm。系统功能包括系统首页、用户管理、救助员管理、知识类型管理、科普知识管理、灾情类型管理、救援信息管理、申请救援管理、救援分配管理、出警记录管理、物资捐赠管理、留言反馈、系统管理、关于我们、系统简介、轮播图管理、公告信息、公告信息分类、个人中心、修改密码等。它把救援申请、救援信息发布、管理员分配、救助员出警、物资捐赠和科普公告这些环节集中到一个平台里,用户能查看信息并提交申请,管理员能维护基础数据和分配任务,救助员能查看任务并登记出警结果。整体上,这个系统技术栈常见,功能边界清晰,适合作为大四计算机专业毕业设计,在现有基础上继续补充统计、导出或权限细分等功能。
户外救援管理系统演示视频
点击观看项目演示视频
户外救援管理系统演示图片

户外救援管理系统代码展示
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
@Service
public class OutdoorRescueCoreService {
private final SparkSession spark = SparkSession.builder().appName("outdoorRescueAnalysis").master("local[*]").getOrCreate();
@Autowired private RescueApplyMapper applyMapper;
@Autowired private RescueInfoMapper rescueInfoMapper;
@Autowired private RescueAssignMapper assignMapper;
@Autowired private RescueOfficerMapper officerMapper;
@Autowired private OutRecordMapper outRecordMapper;
public Map<String,Object> submitRescueApply(Long userId, Long disasterTypeId, String address, String content, String contact) {
Map<String,Object> result = new HashMap<>();
if (userId == null || disasterTypeId == null || address == null || address.trim().isEmpty()) {
result.put("code", 400);
result.put("msg", "用户、灾情类型和地址不能为空");
return result;
}
RescueApply apply = new RescueApply();
apply.setUserId(userId);
apply.setDisasterTypeId(disasterTypeId);
apply.setApplyAddress(address.trim());
apply.setApplyContent(content);
apply.setContactPhone(contact);
apply.setApplyStatus("待审核");
apply.setCreateTime(LocalDateTime.now());
int rows = applyMapper.insertApply(apply);
if (rows <= 0) {
result.put("code", 500);
result.put("msg", "救援申请提交失败");
return result;
}
RescueInfo info = new RescueInfo();
info.setApplyId(apply.getId());
info.setRescueTitle("户外救援申请-" + address);
info.setRescueStatus("待分配");
info.setPublishTime(LocalDateTime.now());
rescueInfoMapper.insertRescueInfo(info);
Dataset<Row> df = spark.createDataFrame(applyMapper.selectRecentApplyList(), RescueApply.class);
long todayCount = df.filter("applyStatus = '待审核'").count();
result.put("code", 200);
result.put("msg", "申请已提交");
result.put("applyId", apply.getId());
result.put("todayPending", todayCount);
return result;
}
public Map<String,Object> assignRescueTask(Long rescueInfoId, Long officerId, Long adminId, String remark) {
Map<String,Object> result = new HashMap<>();
RescueInfo info = rescueInfoMapper.selectById(rescueInfoId);
if (info == null) {
result.put("code", 404);
result.put("msg", "救援信息不存在");
return result;
}
RescueOfficer officer = officerMapper.selectById(officerId);
if (officer == null || !"可出警".equals(officer.getOfficerStatus())) {
result.put("code", 400);
result.put("msg", "救助员不存在或当前不可出警");
return result;
}
RescueAssign assign = new RescueAssign();
assign.setRescueInfoId(rescueInfoId);
assign.setOfficerId(officerId);
assign.setAdminId(adminId);
assign.setAssignRemark(remark);
assign.setAssignStatus("已分配");
assign.setAssignTime(LocalDateTime.now());
int rows = assignMapper.insertAssign(assign);
if (rows <= 0) {
result.put("code", 500);
result.put("msg", "救援分配失败");
return result;
}
info.setRescueStatus("已分配");
info.setOfficerId(officerId);
info.setUpdateTime(LocalDateTime.now());
rescueInfoMapper.updateRescueInfo(info);
officer.setOfficerStatus("出警中");
officerMapper.updateOfficer(officer);
Dataset<Row> assignDf = spark.createDataFrame(assignMapper.selectTodayAssignList(), RescueAssign.class);
long assignedCount = assignDf.filter("assignStatus = '已分配'").count();
result.put("code", 200);
result.put("msg", "分配成功");
result.put("assignId", assign.getId());
result.put("todayAssigned", assignedCount);
return result;
}
public Map<String,Object> addOutRecord(Long assignId, Long officerId, String outResult, String outAddress, String remark) {
Map<String,Object> result = new HashMap<>();
RescueAssign assign = assignMapper.selectById(assignId);
if (assign == null || !"已分配".equals(assign.getAssignStatus())) {
result.put("code", 400);
result.put("msg", "分配记录不存在或状态不允许出警");
return result;
}
if (officerId == null || !officerId.equals(assign.getOfficerId())) {
result.put("code", 403);
result.put("msg", "当前救助员与分配记录不匹配");
return result;
}
OutRecord record = new OutRecord();
record.setAssignId(assignId);
record.setOfficerId(officerId);
record.setOutAddress(outAddress);
record.setOutResult(outResult);
record.setOutRemark(remark);
record.setOutStatus("已完成");
record.setOutTime(LocalDateTime.now());
int rows = outRecordMapper.insertOutRecord(record);
if (rows <= 0) {
result.put("code", 500);
result.put("msg", "出警记录保存失败");
return result;
}
assign.setAssignStatus("已完成");
assignMapper.updateAssign(assign);
RescueInfo info = rescueInfoMapper.selectById(assign.getRescueInfoId());
if (info != null) {
info.setRescueStatus("已完成");
info.setUpdateTime(LocalDateTime.now());
rescueInfoMapper.updateRescueInfo(info);
}
RescueOfficer officer = officerMapper.selectById(officerId);
officer.setOfficerStatus("可出警");
officerMapper.updateOfficer(officer);
Dataset<Row> outDf = spark.createDataFrame(outRecordMapper.selectTodayOutList(), OutRecord.class);
long finishCount = outDf.filter("outStatus = '已完成'").count();
result.put("code", 200);
result.put("msg", "出警记录已保存");
result.put("recordId", record.getId());
result.put("todayFinished", finishCount);
return result;
}
}
户外救援管理系统文档展示

💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目



