基于javaweb+mysql的springboot校园报修管理系统(java+springboot+bootstrap+jsp+maven+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot校园报修管理系统(java+springboot+bootstrap+jsp+maven+mysql)
项目介绍
本项目为后台管理系统,包括管理员与学生两种角色; 学生包含以下功能: 学生提交报修,添加维修,催单,水电缴费,登录页面等功能。
管理员包含以下功能: 查看所有报修单,催单,维修安排,学生管理,添加学生,维修人员管理等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:是;
技术栈
- 后端:SpringBoot 2. 前端:JSP+CSS+JavaScript+jquery+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
@RequestParam("file") MultipartFile file, HttpServletRequest httpServletRequest) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentById(id);
String picMD5 = "";
logger.info(detail);
logger.info(place);
logger.info(picMD5);
try {
logger.info(file.getInputStream().toString());
} catch (IOException e) {
e.printStackTrace();
}
if (file != null) {
try {
picMD5 = MD5.getMD5(id + String.valueOf(System.currentTimeMillis()) + file.getOriginalFilename());
} catch (Exception e) {
e.printStackTrace();
}
// 往数据库中插入维修单记录
repairService.submitRepair(detail, place, picMD5, student.getId());
// 保存现场照片
String path = httpServletRequest.getSession().getServletContext().getRealPath("/");
System.out.println("图片路径:" + path);
String fileName = picMD5;
File targetFile = new File(path, fileName);
try {
InputStream inputStream = file.getInputStream();
OutputStream outputStream = new FileOutputStream(targetFile);
byte[] buffer = new byte[2048];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
}
/**
* 获取个人信息的控制器
*
* @param httpServletRequest
* @param model
* @return
*/
@RequestMapping(value = "/info", method = RequestMethod.GET)
public String infomation(HttpServletRequest httpServletRequest, Model model) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentById(id);
StudentResult studentResult = new StudentResult(
student.getId(), student.getName(), student.getPassword(),
student.getSexual(), student.getSexual() == 0 ? "男" : "女",
student.getEmail(), student.getPhone(), student.getDoor());
model.addAttribute("student", studentResult);
return "student/info";
}
/**
* 修改密码的控制器
*
* @param password
* @param httpSession
* @param httpServletResponse
* @param httpServletRequest
* @return
*/
@RequestMapping(value = "/changepassword", method = RequestMethod.POST)
public
@ResponseBody
LoginResult changePassword(String password, HttpSession httpSession, HttpServletResponse httpServletResponse, HttpServletRequest httpServletRequest) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentByEmail(id);
studentService.changePassword(student.getId(), password);
* @param repairId
* @param httpServletRequest
* @return
*/
@RequestMapping(value = "/repair/{repairId}/urgent", method = RequestMethod.GET)
public String urgent(@PathVariable("repairId") int repairId, HttpServletRequest httpServletRequest) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentById(id);
urgentRepairService.submitUrgentRepair(repairId, student.getId());
return "redirect:/student/urgent";
}
/**
* 查看所有的催单
*
* @param httpServletRequest
* @param model
* @return
*/
@RequestMapping(value = "/urgent", method = RequestMethod.GET)
public String showUrgent(HttpServletRequest httpServletRequest, Model model) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentById(id);
List<UrgentRepair> urgentRepairs = urgentRepairService.getAllUrgentRepairByStudentId(student.getId());
List<StudentUrgentResult> studentUrgentResults = new ArrayList<StudentUrgentResult>();
String detail = "";
for (UrgentRepair urgentRepair : urgentRepairs) {
detail = repairService.getRepairById(urgentRepair.getRepairId()).getDetail();
studentUrgentResults.add(new StudentUrgentResult(
urgentRepair.getId(), urgentRepair.getStatus(), UrgentRepairEnum.stateOf(urgentRepair.getStatus()).getStateInfo(),
urgentRepair.getRepairId(), detail, urgentRepair.getStudentId(), urgentRepair.getCreateTime()));
}
model.addAttribute("studentUrgentResults", studentUrgentResults);
return "student/urgent";
}
/**
* 删除某条催单
*
* @param repairId
}
@RequestMapping(value = "/urgent", method = RequestMethod.GET)
public String urgent(Model model) {
List<UrgentRepair> urgentRepairs = urgentRepairService.getAllUrgentRepair();
List<UrgentRepairResult> urgentRepairResults = new ArrayList<UrgentRepairResult>();
Student student;
Repair repair;
for (UrgentRepair urgentRepair : urgentRepairs) {
repair = repairService.getRepairById(urgentRepair.getRepairId());
student = studentService.getStudentById(urgentRepair.getStudentId());
urgentRepairResults.add(
new UrgentRepairResult
(urgentRepair.getId(),
urgentRepair.getStatus(), UrgentRepairEnum.stateOf(urgentRepair.getStatus()).getStateInfo(),
urgentRepair.getRepairId(), repair.getDetail(),
urgentRepair.getStudentId(), student.getName(),
new Timestamp(System.currentTimeMillis())));
}
model.addAttribute("list", urgentRepairResults);
return "/admin/urgent";
}
@RequestMapping(value = "/urgent/{repairId}/delete", method = RequestMethod.GET)
public String deleteUrgent(@PathVariable("repairId") int repairId) {
urgentRepairService.checkUrgentRepair(repairId);
return "redirect:/admin/urgent";
}
@RequestMapping(value = "/arrange", method = RequestMethod.GET)
public String arrange(Model model) {
List<Maintenance> maintenances = maintenanceService.getAll();
List<MaintenanceResult> maintenanceResults = new ArrayList<MaintenanceResult>();
Repair repair;
Technician technician;
for (Maintenance maintenance : maintenances) {
repair = repairService.getRepairById(maintenance.getRepairId());
// 以下状态的报修单对应的维修记录就没必要显示了
// 1. 被学生删除
InputStream inputStream = file.getInputStream();
OutputStream outputStream = new FileOutputStream(targetFile);
byte[] buffer = new byte[2048];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 往数据库中插入维修单记录
repairService.submitRepair(detail, place, picMD5, student.getId());
}
return "redirect:/student/dashboard";
}
/**
* 获取显示的主页面
*
* @param model
* @return
*/
@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
public String board(Model model, HttpServletRequest httpServletRequest) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
List<Repair> repairs = repairService.getRepqirByStudentId(id);
List<RepairInfoVo> repairInfoVos = new ArrayList<>();
for(Repair repair: repairs){
repair.setPicMD5("/"+repair.getPicMD5());
RepairInfoVo repairInfoVo = new RepairInfoVo(repair);
repairInfoVo.setStatesInfo(RepairEnumCN.stateOf(repair.getStatus()).getStateInfo());
repairInfoVos.add(repairInfoVo);
}
model.addAttribute("repairInfoVos", repairInfoVos);
return "/student/dashboard";
}
/**
* 报修单详情
*
* @param repairId
* @param model
* @return
*/
@RequestMapping(value = "/repair/{repairId}/detail", method = RequestMethod.GET)
public String detail(@PathVariable("repairId") int repairId, Model model) {
* 获取所有待取消的报修单
*
* @param httpServletRequest
* @param model
* @return
*/
@RequestMapping(value = "/tobecanceled", method = RequestMethod.GET)
public String toBeCanceled(HttpServletRequest httpServletRequest, Model model) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
List<Repair> repairs = repairService.getAllToBeCanceledById(id);
List<RepairInfoVo> repairInfoVos = new ArrayList<>();
for(Repair repair:repairs){
repair.setPicMD5("/"+repair.getPicMD5());
RepairInfoVo repairInfoVo = new RepairInfoVo(repair);
repairInfoVo.setStatesInfo(RepairEnumCN.stateOf(repair.getStatus()).getStateInfo());
repairInfoVos.add(repairInfoVo);
}
model.addAttribute("repairInfoVos", repairInfoVos);
return "student/tobecanceled";
}
/**
* 同意取消报修单
*
* @param repairId
* @param httpServletRequest
* @return
*/
@RequestMapping(value = "/tobecanceled/{repairId}/agree", method = RequestMethod.GET)
public String agreeCanceled(@PathVariable("repairId") int repairId, HttpServletRequest httpServletRequest) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentByEmail(id);
repairService.agreeToBeCanceled(repairId);
return "redirect:/student/tobecanceled";
}
doorObject.setWater("100");
doorDao.add(doorObject);
}
return "redirect:/admin/student";
}
@RequestMapping(value = "/technician", method = RequestMethod.GET)
public String technician(Model model) {
List<Technician> techniciens = technicianService.getAllTechnician();
model.addAttribute("techniciens", techniciens);
return "admin/technician";
}
/**
* 添加维修人员 GET方法
* @param model
* @return
*/
@RequestMapping(value = "/addtechnician", method = RequestMethod.GET)
public String addTechnician(Model model) {
return "/admin/addTechnician";
}
/**
* 添加维修人员 POST方法
* @param model
* @return
*/
@RequestMapping(value = "/addtechnician", method = RequestMethod.POST)
public String addTechnician(@RequestParam("name") String name,@RequestParam("number") String number,@RequestParam("phone") String phone, Model model, HttpServletRequest httpServletRequest) {
technicianService.addTechnician(name,number,phone);
return "redirect:/admin/technician";
}
}
/**
* 用户的web层
*
*/
@Controller
@CrossOrigin(origins = {"http://localhost:18084", "null"})
@RequestMapping("/student")
public class StudentController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource
private StudentService studentService;
@Resource
private RepairService repairService;
@Resource
private UrgentRepairService urgentRepairService;
@Resource
private DoorDao doorDao;
// 以下状态的报修单对应的维修记录就没必要显示了
// 1. 被学生删除
// 2. 学生同意取消
// 3. 已经验收
if (repair.getStatus() == RepairEnum.DELETED_BY_STUDENT.getState()
|| repair.getStatus() == RepairEnum.CANCELED_AGREE.getState()
|| repair.getStatus() == RepairEnum.CONFIRM.getState())
{
continue;
}
technician = technicianService.getById(maintenance.getTechnicianId());
maintenanceResults.add(
new MaintenanceResult(
maintenance.getId(),
maintenance.getRepairId(), repair.getDetail(),
maintenance.getTechnicianId(), technician.getName(),
new Timestamp(System.currentTimeMillis())
)
);
}
model.addAttribute("list", maintenanceResults);
return "/admin/arrange";
}
@RequestMapping(value = "/arrange/{maintenanceId}/cancel", method = RequestMethod.GET)
public String cancelArrange(@PathVariable("maintenanceId") int maintenanceId) {
Maintenance maintenance = maintenanceService.getById(maintenanceId);
// 删除检修安排记录
maintenanceService.cancelMaintenance(maintenanceId);
// 同时也修改相应的维修单的状态
repairService.unArrangeRepair(maintenance.getRepairId());
return "redirect:/admin/arrange";
}
@RequestMapping(value = "/student", method = RequestMethod.GET)
public String student(Model model) {
List<Student> students = studentService.getAll();
List<StudentResult> studentResults = new ArrayList<StudentResult>();
for (Student student : students) {
int sex = sexual.equals("男") ? 0 : 1;
studentService.addStudent(System.currentTimeMillis()+"", name, password, sex, email, phone, door);
Door door2 = doorDao.queryByName(door);
if (door2==null) {
Door doorObject = new Door();
doorObject.setDate(new Date(System.currentTimeMillis()));
doorObject.setId(System.currentTimeMillis()+"");
doorObject.setName(door);
doorObject.setPower("100");
doorObject.setWater("100");
doorDao.add(doorObject);
}
return "redirect:/admin/student";
}
@RequestMapping(value = "/technician", method = RequestMethod.GET)
public String technician(Model model) {
List<Technician> techniciens = technicianService.getAllTechnician();
model.addAttribute("techniciens", techniciens);
return "admin/technician";
}
/**
* 添加维修人员 GET方法
* @param model
* @return
*/
@RequestMapping(value = "/addtechnician", method = RequestMethod.GET)
public String addTechnician(Model model) {
return "/admin/addTechnician";
}
/**
* 添加维修人员 POST方法
* @param model
* @return
*/
@RequestMapping(value = "/addtechnician", method = RequestMethod.POST)
public String addTechnician(@RequestParam("name") String name,@RequestParam("number") String number,@RequestParam("phone") String phone, Model model, HttpServletRequest httpServletRequest) {
technicianService.addTechnician(name,number,phone);
return "redirect:/admin/technician";
}
}
technicianId = new String(technicianId.getBytes("ISO-8859-1"), "utf8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
repairService.arrangeRepair(repairId, Integer.valueOf(technicianId));
return "redirect:/admin/dashboard";
}
@RequestMapping(value = "/finish", method = RequestMethod.GET)
public String finish(Model model) {
List<Repair> repairs = repairService.getAllFinish();
Student student;
List<RepairInfoVo> repairInfoVos = new ArrayList<>();
for(Repair repair: repairs){
student = studentService.getStudentById(repair.getStudentId());
RepairInfoVo repairInfoVo = new RepairInfoVo(student, repair);
repairInfoVo.setStatesInfo(RepairEnumCN.stateOf(repair.getStatus()).getStateInfo());
repairInfoVos.add(repairInfoVo);
}
model.addAttribute("repairInfoVos", repairInfoVos);
return "/admin/finish";
}
@RequestMapping(value = "/urgent", method = RequestMethod.GET)
public String urgent(Model model) {
List<UrgentRepair> urgentRepairs = urgentRepairService.getAllUrgentRepair();
List<UrgentRepairResult> urgentRepairResults = new ArrayList<UrgentRepairResult>();
Student student;
Repair repair;
for (UrgentRepair urgentRepair : urgentRepairs) {
repair = repairService.getRepairById(urgentRepair.getRepairId());
student = studentService.getStudentById(urgentRepair.getStudentId());
urgentRepairResults.add(
new UrgentRepairResult
(urgentRepair.getId(),
urgentRepair.getStatus(), UrgentRepairEnum.stateOf(urgentRepair.getStatus()).getStateInfo(),
urgentRepair.getRepairId(), repair.getDetail(),
urgentRepair.getStudentId(), student.getName(),
new Timestamp(System.currentTimeMillis())));
}
/**
* 用户的web层
*
*/
@Controller
@CrossOrigin(origins = {"http://localhost:18084", "null"})
@RequestMapping("/student")
public class StudentController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource
private StudentService studentService;
@Resource
private RepairService repairService;
@Resource
private UrgentRepairService urgentRepairService;
@Resource
model.addAttribute("list", maintenanceResults);
return "/admin/arrange";
}
@RequestMapping(value = "/arrange/{maintenanceId}/cancel", method = RequestMethod.GET)
public String cancelArrange(@PathVariable("maintenanceId") int maintenanceId) {
Maintenance maintenance = maintenanceService.getById(maintenanceId);
// 删除检修安排记录
maintenanceService.cancelMaintenance(maintenanceId);
// 同时也修改相应的维修单的状态
repairService.unArrangeRepair(maintenance.getRepairId());
return "redirect:/admin/arrange";
}
@RequestMapping(value = "/student", method = RequestMethod.GET)
public String student(Model model) {
List<Student> students = studentService.getAll();
List<StudentResult> studentResults = new ArrayList<StudentResult>();
for (Student student : students) {
studentResults.add(new StudentResult(
student.getId(), student.getName(), student.getPassword(),
student.getSexual(), student.getSexual() == 0 ? "男" : "女",
student.getEmail(), student.getPhone(), student.getDoor())
);
}
model.addAttribute("students", studentResults);
return "admin/student";
}
@RequestMapping(value = "/addstudent", method = RequestMethod.GET)
public String addStudent(Model model) {
return "/admin/addStudent";
}
@RequestMapping(value = "/addstudent", method = RequestMethod.POST)
e.printStackTrace();
}
if (file != null) {
try {
picMD5 = MD5.getMD5(id + String.valueOf(System.currentTimeMillis()) + file.getOriginalFilename());
} catch (Exception e) {
e.printStackTrace();
}
// 往数据库中插入维修单记录
repairService.submitRepair(detail, place, picMD5, student.getId());
// 保存现场照片
String path = httpServletRequest.getSession().getServletContext().getRealPath("/");
System.out.println("图片路径:" + path);
String fileName = picMD5;
File targetFile = new File(path, fileName);
try {
InputStream inputStream = file.getInputStream();
OutputStream outputStream = new FileOutputStream(targetFile);
byte[] buffer = new byte[2048];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 往数据库中插入维修单记录
repairService.submitRepair(detail, place, picMD5, student.getId());
}
return "redirect:/student/dashboard";
}
/**
* 获取显示的主页面
*
* @param model
repair = repairService.getRepairById(urgentRepair.getRepairId());
student = studentService.getStudentById(urgentRepair.getStudentId());
urgentRepairResults.add(
new UrgentRepairResult
(urgentRepair.getId(),
urgentRepair.getStatus(), UrgentRepairEnum.stateOf(urgentRepair.getStatus()).getStateInfo(),
urgentRepair.getRepairId(), repair.getDetail(),
urgentRepair.getStudentId(), student.getName(),
new Timestamp(System.currentTimeMillis())));
}
model.addAttribute("list", urgentRepairResults);
return "/admin/urgent";
}
@RequestMapping(value = "/urgent/{repairId}/delete", method = RequestMethod.GET)
public String deleteUrgent(@PathVariable("repairId") int repairId) {
urgentRepairService.checkUrgentRepair(repairId);
return "redirect:/admin/urgent";
}
@RequestMapping(value = "/arrange", method = RequestMethod.GET)
public String arrange(Model model) {
List<Maintenance> maintenances = maintenanceService.getAll();
List<MaintenanceResult> maintenanceResults = new ArrayList<MaintenanceResult>();
Repair repair;
Technician technician;
for (Maintenance maintenance : maintenances) {
repair = repairService.getRepairById(maintenance.getRepairId());
// 以下状态的报修单对应的维修记录就没必要显示了
// 1. 被学生删除
// 2. 学生同意取消
// 3. 已经验收
if (repair.getStatus() == RepairEnum.DELETED_BY_STUDENT.getState()
|| repair.getStatus() == RepairEnum.CANCELED_AGREE.getState()
|| repair.getStatus() == RepairEnum.CONFIRM.getState())
{
continue;
}
technician = technicianService.getById(maintenance.getTechnicianId());
maintenanceResults.add(
new MaintenanceResult(
maintenance.getId(),
maintenance.getRepairId(), repair.getDetail(),
maintenance.getTechnicianId(), technician.getName(),
@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
public String dashboard(Model model, HttpServletRequest httpServletRequest) {
List<Repair> repairs = repairService.getAllUnFinish();
Student student;
List<RepairInfoVo> repairInfoVos = new ArrayList<>();
for(Repair repair:repairs){
student = studentService.getStudentById(repair.getStudentId());
RepairInfoVo repairInfoVo = new RepairInfoVo(student, repair);
repairInfoVo.setStatesInfo(RepairEnumCN.stateOf(repair.getStatus()).getStateInfo());
repairInfoVos.add(repairInfoVo);
}
model.addAttribute("repairInfoVos", repairInfoVos);
return "/admin/dashboard";
}
@RequestMapping(value = "/repair/{repairId}/detail", method = RequestMethod.GET)
public String detailRepair(@PathVariable("repairId") int repairId, Model model) {
Repair repair;
repair = repairService.getRepairById(repairId);
repair.setPicMD5("/" + repair.getPicMD5());
RepairInfoVo repairInfoVo = new RepairInfoVo(repair);
repairInfoVo.setStatesInfo(RepairEnumCN.stateOf(repair.getStatus()).getStateInfo());
model.addAttribute("repairInfoVo", repairInfoVo);
return "admin/detail";
}
@RequestMapping(value = "/repair/{repairId}/cancel", method = RequestMethod.GET)
public String cancelRepair(@PathVariable("repairId") int repairId) {
repairService.cancelRepair(repairId);
return "redirect:/admin/dashboard";
}
@RequestMapping(value = "/repair/{repairId}/confirm", method = RequestMethod.GET)
public String confirmRepair(@PathVariable("repairId") int repairId) {
* @param repairId
* @return
*/
@RequestMapping(value = "/repair/{repairId}/acceptance", method = RequestMethod.GET)
public String acceptance(@PathVariable("repairId") int repairId) {
repairService.Acceptance(repairId);
return "redirect:/student/dashboard";
}
/**
* 将报修单标记为催单
*
* @param repairId
* @param httpServletRequest
* @return
*/
@RequestMapping(value = "/repair/{repairId}/urgent", method = RequestMethod.GET)
public String urgent(@PathVariable("repairId") int repairId, HttpServletRequest httpServletRequest) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentById(id);
urgentRepairService.submitUrgentRepair(repairId, student.getId());
return "redirect:/student/urgent";
}
/**
* 查看所有的催单
*
* @param httpServletRequest
* @param model
* @return
*/
@RequestMapping(value = "/urgent", method = RequestMethod.GET)
public String showUrgent(HttpServletRequest httpServletRequest, Model model) {
String id = httpServletRequest.getSession().getAttribute(StudentConst.STUDENT_ID).toString();
Student student = studentService.getStudentById(id);
List<UrgentRepair> urgentRepairs = urgentRepairService.getAllUrgentRepairByStudentId(student.getId());