作者主页:Java毕设网
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
一、相关文档
人事管理在政府机关和企事业单位中占有极其重要的地位,各部门岗位之间协作和工效的提高,是人事管理的基本要求.本设计旨在实现微型人事管理信息系统,功能主要由人事在线通信、员工资料、人事信息管理、薪资调整分配、统计分析管理和系统设置管理系统构成.系统实现了员工信息编辑、人事信息入库展示分析、工资套帐处理及系统的设置、点对点在线讯息等功能.本设计在技术方面采用了较前沿的技术,应用端基于java EE体系中开源应用框架Spring Boot(集成IOC, MVC, ORM),Spring Security (安全框架),内嵌Tomcat服务器;前端基于javaScript的渐进式框架Vue.js;页面设计基于Element UI库;路由处理基于 vue-router.数据库端使用MySQL数据库;系统架构基于当前主流的MVVM(Model-View-View Model)模式,前后端分离的SPA(single page web application),即单页富应用程序。
访问控制基于RBAC0模型.由于之相对应的数据实体构成.由用户表,角色映射表,角色表,权限表,权限映射表构成.用户登录之后首先进行身份验证,成功之后获取当前用户的所有角色,之后根据角色加载对应的权限菜单, 前端为了良好的用户体验,这里默认不加载没有权限的菜单.当存在直接输入URL路径的情况时,对于登录用户的每一个请求,都会通过鉴权处理,分析角色.最后通过权限的判断分析是否可以访问菜单资源.
二、项目介绍
人事管理系统功能包括人事通讯,员工信息,人事考评,奖惩,培训管理,薪资管理,统计分析,和系统管理六大模块,对应人事工作基本流程:新员工入职档案建立,调动,辞职,员工信息的查询及工资管理等方面.系统管理可以根据不同的角色分配菜单权限设置,不同的用户授予不同角色,对人事结构,单位结构进行整体调配设置.在线聊天可以实现操作员之间讯息的及时通讯.
项目基于MVVM的前后端分离开发模式进行开发.MVVM即模型(Model)-视图(View)-视图模型(View Model),实现了数据视图的双向绑定.相对于MVC模式和MVP来说,MVVM是一个比较新的开发架构,它是一种将MVP模式与WPF相结合应用方式发展演变而成的新型开发架[1] .
前后端分离是指将前端和后端从之前的全部由后端负责中分离开来,不再共用一个Server,前端作为一个独立Serve存在[2].前后端通过接口使用HTTP协议交互,本项目使用vu实体属性outer做前端路由处理.页面跳转不在由后端处理,前后端只是数据的交互.前后端分离的好处在于降低了前后端的耦合性.当面对不同的硬件场景时,需要构建不同的界面,前后端分离之后,只需要扩展前端项目即可,不需要修改后端服务.
在动态权限处理方面,使用安全框架Spring Security,基于RBAC(Role-Based Access Control )角色的访问控制模型,由该模型主要由鉴权和授权构成,鉴权基于Servlet中Filter原理处理,授权由系统管理员操作.RBAC 的主要思想是:权限是和角色相关的,而用户则被分配相应的角色作为其成员,这样就大大简化了权限的管理。
三、环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
5.数据库:MySql 5.7、8.0等版本;
四、技术栈
1. 后端:Spring Boot,Spring Security, MyBatis+Redis+RabbitMQ
2. 前端:Vue, ElementUI, axios,Web Socket
五、使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置;
3. 使用IDEA/Eclipse/MyEclipse导入后端项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
注:前端页面已经编译后打包到项目中,通常只执行后端代码即可;
4. 运行项目,输入http://localhost:8083/index.html 登录
六、运行截图
七、相关代码
奖惩处理管理控制器
package com.liruilong.hros.controller.personnel;
import com.liruilong.hros.model.*;
import com.liruilong.hros.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
* @Description : 奖惩处理
* @Author: Liruilong
* @Date: 2020/1/8 20:25
*/
@RestController
@RequestMapping("/personnel/ec")
public class EmployeeecController {
@Autowired
EmployeeecService employeeecService;
@Autowired
JobLevelService jobLevelService;
@Autowired
PositionService positionService;
@Autowired
EmployeeService employeeService;
@Autowired
RwardsPunishmentsSevice rwardsPunishmentsSevice;
@GetMapping("/")
public RespBean addEmployeeec(Employeeec employeeec, Integer[] ids){
if (employeeecService.addEmployeeec(employeeec, ids) == ids.length){
return RespBean.ok("添加成功");
}else {
return RespBean.error("添加失败");
}
}
@GetMapping("/init")
public RespPageBean getEmploteeByPge(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size,Employee employee, Date[] beginDateScope) {
return employeeService.getEmploteeByPge(page, size, employee, beginDateScope);
}
@GetMapping("/rp")
public List<RwardsPunishments> getAllRwardsPunishments() {
return rwardsPunishmentsSevice.getAllRwardsPunishments();
}
@GetMapping("/ec")
public RespPageBean getEmploteecByPge(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "100") Integer size, Employee employee, Date[] beginDateScope) {
return employeeService.getEmploteecByPge(page, size, employee, beginDateScope);
}
@DeleteMapping("/{eid}/{id}")
public RespBean deleteEmpByEidc(@PathVariable Integer eid, @PathVariable Integer id) {
if (employeeecService.deleteEmpByEidc(eid,id) == 1) {
return RespBean.ok("删除成功!");
}
return RespBean.error("删除失败!");
}
@GetMapping("/joblevels")
public List<JobLevel> getAllJobLevels() {
return jobLevelService.getAllJobLevels();
}
@GetMapping("/positions")
public List<Position> getAllPositions() {
return positionService.getAllPositions();
}
}
部门管理控制器
package com.liruilong.hros.controller.system.basic;
import com.liruilong.hros.model.Department;
import com.liruilong.hros.model.RespBean;
import com.liruilong.hros.service.DepartmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author Liruilong
* @Description
* @Date 23:31 2019/12/28
* @Param
* @return
**/
@RestController
@RequestMapping("/system/basic/department")
public class DepartmentController {
@Autowired
DepartmentService departmentService;
@GetMapping("/")
public List<Department> getAllDepartments() {
return departmentService.getAllDepartments();
}
@PostMapping("/")
public RespBean addDep(@RequestBody Department dep) {
departmentService.addDep(dep);
if (dep.getResult() == 1) {
return RespBean.ok("添加成功", dep);
}
return RespBean.error("添加失败");
}
@DeleteMapping("/{id}")
public RespBean deleteDepById(@PathVariable Integer id) {
Department dep = new Department();
dep.setId(id);
departmentService.deleteDepById(dep);
if (dep.getResult() == -2) {
return RespBean.error("该部门下有子部门,删除失败");
} else if (dep.getResult() == -1) {
return RespBean.error("该部门下有员工,删除失败");
} else if (dep.getResult() == 1) {
return RespBean.ok("删除成功");
}
return RespBean.error("删除失败");
}
}