• 基于SSM开发实现校园疫情防控管理系统


    项目编号:BS-XX-122

    一,项目简介

    本项目基于java开发语言,采用SSM框架+MYSQL数据库开发的校园疫情管理系统,系统包含超级管理员,系统管理员、学生角色,功能如下:

    超级管理员:管理员管理;学生管理;风险地区管理;行程管理;健康管理;请假管理、疫情通告;个人信息修改、修改密码;

    系统管理员:功能和超级管理员基本一致,只是少了一个管理员管理;

    学生:首页图表统计(柱状图、饼状图);行程上报(可上传行程码和健康码);健康上报(上传核算检测报告);请假管理;疫情通告;个人信息修改、修改密码;

    系统界面美观大方,功能及其丰富,使用了ssm、jquery、ajax、layui、echart等技术栈,适合作为毕业设计、课程设计。

    二,环境介绍

    语言环境:Java:  jdk1.8

    数据库:Mysql: mysql5.7

    应用服务器:Tomcat:  tomcat8.5.31

    开发工具:IDEA或eclipse

    后台开发技术:SSM框架+SpringTask定时任务

    前端开发技术:Layui+Jquery+AjAX+Echart

    三,系统展示

    登陆界面

    管理员登陆操作:

    学生管理

    风险地区管理:

    行程管理:

    健康信息管理:

    请假管理:

    疫情通告管理

    消息提醒:

    学生登陆系统:主要是个人的行程和健康信息的上报以及请假等学生用相关功能

    不再一一展示

    四,核心代码展示

    1. package com.xiaoniucr.controller;
    2. import com.xiaoniucr.dto.PageQueryDto;
    3. import com.xiaoniucr.entity.Admin;
    4. import com.xiaoniucr.vo.JSONReturn;
    5. import com.xiaoniucr.vo.LoginSession;
    6. import com.xiaoniucr.vo.PageVo;
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.web.bind.annotation.*;
    9. import java.util.Map;
    10. /**
    11. * 管理员控制器
    12. */
    13. @Controller
    14. @RequestMapping(value = "/admin")
    15. public class AdminController extends BaseController {
    16. /**
    17. * 管理员查询分页
    18. * @return
    19. */
    20. @RequestMapping(value = "/list")
    21. @ResponseBody
    22. public PageVo findAdmin(@RequestParam Map map){
    23. PageQueryDto queryDto = new PageQueryDto(map);
    24. return adminService.page(queryDto);
    25. }
    26. /**
    27. * 根据ID查询管理员
    28. * @param id
    29. * @return
    30. */
    31. @RequestMapping(value = "/{id}")
    32. @ResponseBody
    33. public JSONReturn selectById(@PathVariable(value = "id")Integer id){
    34. Admin admin = adminService.selectById(id);
    35. return JSONReturn.success("查询成功!",admin);
    36. }
    37. /**
    38. * 添加管理员
    39. * @param admin
    40. * @return
    41. */
    42. @RequestMapping(value = "/add")
    43. @ResponseBody
    44. public JSONReturn add(@RequestBody Admin admin){
    45. return adminService.add(admin);
    46. }
    47. /**
    48. * 更新管理员
    49. * @param admin
    50. * @return
    51. */
    52. @RequestMapping(value = "/update")
    53. @ResponseBody
    54. public JSONReturn update(@RequestBody Admin admin){
    55. Integer rows = adminService.update(admin);
    56. return rows > 0 ? JSONReturn.success("更新成功!") : JSONReturn.fail("操作失败!");
    57. }
    58. /**
    59. * 删除管理员
    60. * @param admin
    61. * @return
    62. */
    63. @RequestMapping(value = "/del")
    64. @ResponseBody
    65. public JSONReturn del(@RequestBody Admin admin){
    66. Integer rows = adminService.del(admin);
    67. return rows > 0 ? JSONReturn.success("删除成功!") : JSONReturn.fail("删除失败!");
    68. }
    69. /**
    70. * 获取当前管理员个人信息
    71. * @return
    72. */
    73. @RequestMapping(value = "/info")
    74. @ResponseBody
    75. public JSONReturn info(){
    76. LoginSession session = (LoginSession) getSession("user");
    77. Admin admin = adminService.selectById(session.getId());
    78. return JSONReturn.success("查询成功!",admin);
    79. }
    80. /**
    81. * 更新个人信息
    82. * @param admin
    83. * @return
    84. */
    85. @RequestMapping(value = "/updateInfo")
    86. @ResponseBody
    87. public JSONReturn updateInfo(@RequestBody Admin admin){
    88. return adminService.updateInfo(admin);
    89. }
    90. }

    1. package com.xiaoniucr.controller;
    2. import com.xiaoniucr.dto.PageQueryDto;
    3. import com.xiaoniucr.entity.AreaRisk;
    4. import com.xiaoniucr.vo.JSONReturn;
    5. import com.xiaoniucr.vo.PageVo;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.*;
    8. import java.util.List;
    9. import java.util.Map;
    10. /**
    11. *
    12. * 风险地区管理控制器
    13. */
    14. @Controller
    15. @RequestMapping(value = "/area")
    16. public class AreaRiskController extends BaseController {
    17. /**
    18. * 地区查询分页
    19. * @return
    20. */
    21. @RequestMapping(value = "/list")
    22. @ResponseBody
    23. public PageVo findArea(@RequestParam Map map){
    24. PageQueryDto queryDto = new PageQueryDto(map);
    25. return areaRiskService.page(queryDto);
    26. }
    27. /**
    28. * 根据ID查询记录
    29. * @param id
    30. * @return
    31. */
    32. @RequestMapping(value = "/{id}")
    33. @ResponseBody
    34. public JSONReturn selectById(@PathVariable(value = "id")Integer id){
    35. AreaRisk areaRisk = areaRiskService.selectById(id);
    36. return JSONReturn.success("查询成功!",areaRisk);
    37. }
    38. /**
    39. * 添加地区
    40. * @param areaRisk
    41. * @return
    42. */
    43. @RequestMapping(value = "/add")
    44. @ResponseBody
    45. public JSONReturn add(@RequestBody AreaRisk areaRisk){
    46. Integer rows = areaRiskService.add(areaRisk);
    47. return rows > 0 ? JSONReturn.success("添加成功!") : JSONReturn.fail("添加失败!");
    48. }
    49. /**
    50. * 更新地区
    51. * @param areaRisk
    52. * @return
    53. */
    54. @RequestMapping(value = "/update")
    55. @ResponseBody
    56. public JSONReturn update(@RequestBody AreaRisk areaRisk){
    57. Integer rows = areaRiskService.update(areaRisk);
    58. return rows > 0 ? JSONReturn.success("更新成功!") : JSONReturn.fail("操作失败!");
    59. }
    60. /**
    61. * 删除地区
    62. * @param areaRisk
    63. * @return
    64. */
    65. @RequestMapping(value = "/del")
    66. @ResponseBody
    67. public JSONReturn del(@RequestBody AreaRisk areaRisk){
    68. Integer rows = areaRiskService.del(areaRisk.getId());
    69. return rows > 0 ? JSONReturn.success("删除成功!") : JSONReturn.fail("删除失败!");
    70. }
    71. /**
    72. * 查询所有地区
    73. * @return
    74. */
    75. @RequestMapping(value = "/findAll")
    76. @ResponseBody
    77. public JSONReturn findAll(){
    78. List users = areaRiskService.findAll();
    79. return JSONReturn.success("查询成功!",users);
    80. }
    81. }

    1. package com.xiaoniucr.controller;
    2. import com.xiaoniucr.dto.PageQueryDto;
    3. import com.xiaoniucr.entity.HealthReport;
    4. import com.xiaoniucr.util.PropertiesUtils;
    5. import com.xiaoniucr.vo.JSONReturn;
    6. import com.xiaoniucr.vo.LoginSession;
    7. import com.xiaoniucr.vo.PageVo;
    8. import org.apache.commons.io.FileUtils;
    9. import org.springframework.http.HttpHeaders;
    10. import org.springframework.http.HttpStatus;
    11. import org.springframework.http.MediaType;
    12. import org.springframework.http.ResponseEntity;
    13. import org.springframework.stereotype.Controller;
    14. import org.springframework.web.bind.annotation.*;
    15. import org.springframework.web.multipart.MultipartFile;
    16. import org.springframework.web.multipart.MultipartHttpServletRequest;
    17. import sun.rmi.runtime.Log;
    18. import javax.servlet.http.HttpServletRequest;
    19. import java.io.File;
    20. import java.io.IOException;
    21. import java.text.SimpleDateFormat;
    22. import java.util.Date;
    23. import java.util.List;
    24. import java.util.Map;
    25. /**
    26. * 健康上报控制器
    27. */
    28. @Controller
    29. @RequestMapping(value = "/hr")
    30. public class HealthReportController extends BaseController {
    31. /**
    32. * 健康上报记录查询分页
    33. * @return
    34. */
    35. @RequestMapping(value = "/list")
    36. @ResponseBody
    37. public PageVo findHealthReport(@RequestParam Map map){
    38. LoginSession loginSession = (LoginSession) getSession("user");
    39. PageQueryDto queryDto = new PageQueryDto(map);
    40. if(loginSession.getRole() == 2){
    41. queryDto.put("userId",loginSession.getId());
    42. }
    43. return healthReportService.page(queryDto);
    44. }
    45. /**
    46. * 根据ID查询健康上报记录
    47. * @param id
    48. * @return
    49. */
    50. @RequestMapping(value = "/{id}")
    51. @ResponseBody
    52. public JSONReturn selectById(@PathVariable(value = "id")Integer id){
    53. HealthReport report = healthReportService.selectById(id);
    54. return JSONReturn.success("查询成功!",report);
    55. }
    56. /**
    57. * 添加健康上报记录
    58. * @param report
    59. * @return
    60. */
    61. @RequestMapping(value = "/add")
    62. @ResponseBody
    63. public JSONReturn add(@RequestBody HealthReport report){
    64. LoginSession session = (LoginSession) getSession("user");
    65. report.setUserId(session.getId());
    66. Integer rows = healthReportService.add(report);
    67. return rows > 0 ? JSONReturn.success("添加成功!") : JSONReturn.fail("添加失败!");
    68. }
    69. /**
    70. * 更新健康上报记录
    71. * @param report
    72. * @return
    73. */
    74. @RequestMapping(value = "/update")
    75. @ResponseBody
    76. public JSONReturn update(@RequestBody HealthReport report){
    77. Integer rows = healthReportService.update(report);
    78. return rows > 0 ? JSONReturn.success("更新成功!") : JSONReturn.fail("操作失败!");
    79. }
    80. /**
    81. * 删除健康上报记录
    82. * @param report
    83. * @return
    84. */
    85. @RequestMapping(value = "/del")
    86. @ResponseBody
    87. public JSONReturn del(@RequestBody HealthReport report){
    88. Integer rows = healthReportService.del(report);
    89. return rows > 0 ? JSONReturn.success("删除成功!") : JSONReturn.fail("删除失败!");
    90. }
    91. /**
    92. * 上传体检报告
    93. * @param request
    94. * @return
    95. */
    96. @RequestMapping(value = "/uploadReport",method = RequestMethod.POST )
    97. @ResponseBody
    98. public JSONReturn uploadHealthCode(HttpServletRequest request) {
    99. Integer id = Integer.parseInt(request.getParameter("id"));
    100. //得到文件的列表
    101. List files = ((MultipartHttpServletRequest) request).getFiles("file");
    102. // 创建年月文件夹
    103. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    104. String dateDirs = sdf.format(new Date());
    105. //这里的地址文件上传到的地方
    106. for (int i = 0; i < files.size(); i++) {
    107. MultipartFile file = files.get(i);
    108. if (file.isEmpty()) {
    109. return JSONReturn.fail("上传第" + (i++) + "个文件失败");
    110. }
    111. String originalFilename = file.getOriginalFilename();
    112. // 新的文件名称
    113. String newFileName = System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
    114. // 新文件
    115. File dest = new File(PropertiesUtils.getValue("file.path") + File.separator + dateDirs + File.separator + newFileName);
    116. // 判断目标文件所在的目录是否存在
    117. if (!dest.getParentFile().exists()) {
    118. // 如果目标文件所在的目录不存在,则创建父目录
    119. dest.getParentFile().mkdirs();
    120. }
    121. try {
    122. HealthReport healthReport = healthReportService.selectById(id);
    123. healthReport.setReportFileName(originalFilename);
    124. healthReport.setReportFilePath("/"+dateDirs+"/"+newFileName);
    125. healthReportService.update(healthReport);
    126. file.transferTo(dest);
    127. } catch (IOException e) {
    128. return JSONReturn.fail("上传第" + (i++) + "个文件失败:"+e.getMessage());
    129. }
    130. }
    131. return JSONReturn.success("文件上传成功!");
    132. }
    133. @RequestMapping(value="/downloadReport")
    134. public ResponseEntity<byte[]> download(@RequestParam Integer id)throws Exception {
    135. //服务器中下载文件的路径
    136. String filePath = PropertiesUtils.getValue("file.path");
    137. HealthReport hr = healthReportService.selectById(id);
    138. File file = new File(filePath + hr.getReportFilePath());
    139. HttpHeaders headers = new HttpHeaders();
    140. //下载显示的文件名,解决中文名称乱码问题
    141. String downloadFielName = new String(hr.getReportFileName().getBytes("UTF-8"),"iso-8859-1");
    142. //通知浏览器以attachment(下载方式)打开图片
    143. headers.setContentDispositionFormData("attachment", downloadFielName);
    144. //application/octet-stream : 二进制流数据(最常见的文件下载)。
    145. headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    146. //通过fileutils的工具输入输出下载的文件
    147. return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
    148. headers, HttpStatus.CREATED);
    149. }
    150. }
    1. package com.xiaoniucr.controller;
    2. import com.xiaoniucr.dto.LoginDto;
    3. import com.xiaoniucr.dto.UpdtPwdDto;
    4. import com.xiaoniucr.entity.Admin;
    5. import com.xiaoniucr.entity.Message;
    6. import com.xiaoniucr.entity.User;
    7. import com.xiaoniucr.vo.JSONReturn;
    8. import com.xiaoniucr.vo.LoginSession;
    9. import org.springframework.stereotype.Controller;
    10. import org.springframework.ui.ModelMap;
    11. import org.springframework.web.bind.annotation.RequestBody;
    12. import org.springframework.web.bind.annotation.RequestMapping;
    13. import org.springframework.web.bind.annotation.ResponseBody;
    14. import javax.servlet.http.HttpSession;
    15. import java.util.List;
    16. /**
    17. * 登录相关接口
    18. */
    19. @Controller
    20. public class LoginController extends BaseController{
    21. @RequestMapping("/login.html")
    22. public String login(){
    23. return "login";
    24. }
    25. @RequestMapping("/register.html")
    26. public String register(){
    27. return "register";
    28. }
    29. /**
    30. * 桌面页,统计以下数据信息
    31. * @param map
    32. * @return
    33. */
    34. @RequestMapping("/welcome.html")
    35. public String welcome(ModelMap map){
    36. Integer totalNum = userService.countTotal();
    37. Integer isolateNum = userService.countByHealth(1);
    38. Integer definiteNum = userService.countByHealth(2);
    39. map.put("totalNum",totalNum);
    40. map.put("isolateNum",isolateNum);
    41. map.put("definiteNum",definiteNum);
    42. return "admin/welcome";
    43. }
    44. /**
    45. * 首页
    46. * @return
    47. */
    48. @RequestMapping("/index.html")
    49. public String index(ModelMap map){
    50. LoginSession loginSession = (LoginSession) getSession("user");
    51. if(loginSession == null){
    52. return "login";
    53. }
    54. Integer latestNum = messageService.countLatestNum(loginSession.getId());
    55. List messageList = messageService.selectLatestTopList(loginSession.getId(),4);
    56. map.put("latestNum",latestNum);
    57. map.put("messageList",messageList);
    58. return "index";
    59. }
    60. /**
    61. * 登录验证
    62. * @param loginDto
    63. * @return
    64. */
    65. @RequestMapping("/login")
    66. @ResponseBody
    67. public JSONReturn login(@RequestBody LoginDto loginDto, HttpSession session){
    68. return userService.login(loginDto,session);
    69. }
    70. /**
    71. * 管理员修改密码
    72. * @param updtPwdDto
    73. * @return
    74. */
    75. @RequestMapping(value = "/updtpwd")
    76. @ResponseBody
    77. public JSONReturn updtpwd(@RequestBody UpdtPwdDto updtPwdDto) {
    78. LoginSession session = (LoginSession) getSession("user");
    79. Integer role = session.getRole();
    80. if(role == 0 || role == 1){
    81. Admin admin = adminService.selectById(session.getId());
    82. if (!admin.getPassword().equals(updtPwdDto.getOpassword())) {
    83. return JSONReturn.fail("原始密码错误!");
    84. }
    85. admin.setPassword(updtPwdDto.getNpassword());
    86. Integer rows = adminService.update(admin);
    87. return rows > 0 ? JSONReturn.success("更新成功!") : JSONReturn.fail("操作失败!");
    88. }else{
    89. User user = userService.selectById(session.getId());
    90. if(!user.getPassword().equals(updtPwdDto.getOpassword())){
    91. return JSONReturn.fail("原始密码错误!");
    92. }
    93. user.setPassword(updtPwdDto.getNpassword());
    94. Integer rows = userService.update(user);
    95. return rows > 0 ? JSONReturn.success("更新成功!") : JSONReturn.fail("操作失败!");
    96. }
    97. }
    98. /**
    99. * 退出系统
    100. * @return
    101. */
    102. @RequestMapping("/logout")
    103. public String logout(){
    104. removeSession("user");
    105. return "login";
    106. }
    107. /**
    108. * 学生比例
    109. * @return
    110. */
    111. @RequestMapping(value = "/statis")
    112. @ResponseBody
    113. public JSONReturn statis(){
    114. return userService.statis();
    115. }
    116. }

    五,项目总结

  • 相关阅读:
    如何在SAP GUI中快速执行新的事务代码
    leetcode每日一题复盘(11.6~11.12)
    [100天算法】-给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合(day 80)
    MATLAB中的setdiff函数:查找两个数组的差异
    c语言-自研定时器计划任务语法
    小侃设计模式(八)-装饰者模式
    聊聊jedis连接池的预热
    美团面试:如何实现线程任务编排?
    Unity物理系统(一)物理系统相关组件
    vue3 teleport的使用
  • 原文地址:https://blog.csdn.net/BS009/article/details/126062328