基础环境:
1. JDK:1.8
2. MySQL:5.7
3. Maven3.0
1. 核心框架:Spring Boot 2.2.13.RELEASE
2. ORM框架:MyBatisPlus 3.1.2
3. 数据库连接池:Druid 1.2.8
4. 安全框架:Apache Shiro 1.8.0
5. 日志:SLF4J ,Log4j
6. 前端框架:VUE2.2.6,LayUI,Ztree,jQuery,Bootstrap
# 人事管理系统
## 一、系统介绍
本系统为人事管理系统,系统分为七大模块:绩效考核,招聘管理,档案管理,工资管理,考勤管理,培训管理,系统管理。
可满足小企业日常办公。本系统最大特色是有强大和灵活的权限控制功能,所有菜单,按钮功能均可由管理通过配置来控制。
系统默认有四个角色:管理员,财务专员,人事专员,普通用户
- 管理员(admin/admin):可以操作所有功能
- 财务专员(cw/cw):可查看工资管理,考勤管理,培训管理等内容
- 人事专员(rs/rs):可查看和管理招聘管理,档案管理,培训管理等内容
- 普通用户(wdc/wdc):只可查看工资,打卡考勤,参加培训等
所有功能介绍
### 1.绩效考核
绩效考核目前只做了简单的考核设置,后期可扩展更多功能与工资和培训挂钩。后期会从以下几个方面扩展:
1. 季度考核不达标需要参加培训;
2. 考核不达标影响绩效;
3. 在公司做培训增加绩效;
### 2.招聘管理
招聘管理子模块:招聘需求和面试计划。招聘需求是为各个部门需要人才时到招聘需求申请,申请成功后,由人事部门和招聘部门协商面试时间添加面试计划,并跟踪面试结果。
#### (1)招聘需求
可由人事部门或有招聘需求部门填写招聘需求。
#### (2)面试计划
人事专员看到各个部门的招聘需求后,联系候选人并和用人部门协商面试时间,并将面试计划提交,等面试结束再将面试结果同步到系统。招聘结束后结束流程。
### 3.档案管理
档案管理子模块:员工档案和合同管理。
#### (1)员工档案
员工档案是“系统管理-账号管理”的延伸,即“系统管理-账号管理”是系统的登录账号信息,而员工档案是对账号信息的补充。必须由管理员先创建好账户,才能添加员工档案
#### (2)合同档案
公司商业合同管理
### 4.工资管理
工资管理目前有工资查询子模块。普通用户可查看自己工资记录,财务专员可增加员工工资记录。
### 5.考勤管理
考勤管理目前有出勤记录子模块。普通用户可每日打卡,查看出勤记录,后期可扩展与工资计算挂钩。
### 6.培训管理
培训管理子模块:个人计划,工作日报,转正申请和工作日报。
#### (1)个人计划
员工可写当日工作计划
#### (2)工作日报
员工可写当日工作日报
#### (3)转正申请
员工到了转正日期可申请转正由其领导进行审批。后期可与工资和绩效挂钩进行扩展,扩展内容如下:
1. 转正前工资按合同80%计算,转正后100%;
2. 转正后绩效不达标则绩效奖金按百分比算
#### (4)培训计划
可添加新员工培训计划,新技能培训计划,新业务培训计划,后期可扩展会议室管理功能
### 7.系统管理
系统管理子模块:员工管理,部门管理,角色管理,菜单管理和字典管理。
#### (1)账号管理
可为新员工增加系统登录账号,为离职员工删除账号。后期可扩展员工忘记密码后,重置密码功能,通常只有人事专员和管理员可用
#### (2)部门管理
可增加新部门或新成立子公司,通常只有管理员和高级管理领导可用
#### (3)角色管理
可新增角色,并为角色赋予相应权限,如招聘专员只能操作系统管理模块以外的其他模块功能,从财务专员只能进行工资记录添加等,通常只有管理员和高级管理领导可用
#### (4)菜单管理
管理系统左侧的菜单树,只有管理员可用
#### (5)字典管理
管理系统常用字典值,只有管理员可用
![](https://img-blog.csdnimg.cn/img_convert/3d4f36b2229b25f2e7aec1e86c1e6913.png)
![](https://img-blog.csdnimg.cn/img_convert/07973e0f0329b853b8c2d50bbd585c18.png)
![](https://img-blog.csdnimg.cn/img_convert/2698e7c058d0431c77fbc923e7723678.png)
![](https://img-blog.csdnimg.cn/img_convert/0b8a2811a1b8d2a167dfe0534cac7cf3.png)
![](https://img-blog.csdnimg.cn/img_convert/96f524369d69636e9d68d738ce86c382.png)
![](https://img-blog.csdnimg.cn/img_convert/8d2a6a5ab8dd66089fa927124e0596c3.png)
![](https://img-blog.csdnimg.cn/img_convert/6b54bde0614be5a309a0485e1aad87ee.png)
![](https://img-blog.csdnimg.cn/img_convert/c0b0237fe33709415518c36326d62783.png)
![](https://img-blog.csdnimg.cn/img_convert/a229ab56c51ef42dfcbb1735cfb11c41.png)
![](https://img-blog.csdnimg.cn/img_convert/2d6c3ba0dd7a78fd0710ebb2bebabf8e.png)
![](https://img-blog.csdnimg.cn/img_convert/b509ab302e4702371f06d17347cb318f.png)
![](https://img-blog.csdnimg.cn/img_convert/efe68ea6638342ae7f539e5d25f47277.png)
![](https://img-blog.csdnimg.cn/img_convert/bb1dac153743350a4f05b5ea300c35d1.png)
![](https://img-blog.csdnimg.cn/img_convert/7af316a8fbbe8f58491724ad99d06cec.png)
![](https://img-blog.csdnimg.cn/img_convert/a16e734d4bbd7f10f547da9b113dd811.png)
![](https://img-blog.csdnimg.cn/img_convert/e658abbbc3b761213e595e63327781cb.png)
![](https://img-blog.csdnimg.cn/img_convert/f86d52340e446d868b4c26b3442502d3.png)
![](https://img-blog.csdnimg.cn/img_convert/10dd6cf88dba2051901f98e232340827.png)
![](https://img-blog.csdnimg.cn/img_convert/064a92a1539469400d6e8248badea54f.png)
![](https://img-blog.csdnimg.cn/img_convert/6b603cd9b18b77fb8539d911d738b94e.png)
![](https://img-blog.csdnimg.cn/img_convert/78afdd4209f5b21eb4c5340e6795349f.png)
![](https://img-blog.csdnimg.cn/img_convert/00cc0153cd0897c1d55401bf8578855e.png)
![](https://img-blog.csdnimg.cn/img_convert/1c420064d83f56721ab2f55ef8faf749.png)
![](https://img-blog.csdnimg.cn/img_convert/d68c36e504fd15607e3fa16e2b6a6cfd.png)
![](https://img-blog.csdnimg.cn/img_convert/45f1292f90355b36ba016d2899b057f7.png)
![](https://img-blog.csdnimg.cn/img_convert/7e50688c44ec363f04a945d4b367283d.png)
![](https://img-blog.csdnimg.cn/img_convert/52a78e38f0d4d3e953e4c5dec7f61336.png)
![](https://img-blog.csdnimg.cn/img_convert/f86fce7672cca28d08e2399ad7fbc291.png)
![](https://img-blog.csdnimg.cn/img_convert/5cbf21121a76be1b86fec751b2da2f65.png)
![](https://img-blog.csdnimg.cn/img_convert/0701158defeaff85688ca3cf00aaf405.png)
![](https://img-blog.csdnimg.cn/img_convert/e3cb3e3dccc33e9a7459ac337ffbb912.png)
![](https://img-blog.csdnimg.cn/img_convert/71509b573fa27b4e3a25958ed471bf00.png)
![](https://img-blog.csdnimg.cn/img_convert/82706b4b994f7e33026b67c0904987a9.png)
![](https://img-blog.csdnimg.cn/img_convert/f8fe8e95d518055790dc10a92dde371d.png)
![](https://img-blog.csdnimg.cn/img_convert/bff6a2748cbbaed6e55155ac6ab5bd0c.png)
免费领取下载链接-关注底部gongzhonghao:032
/**
*
*
*
*
*
*/
package com.person.modules.person.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.person.common.annotation.SysLog;
import com.person.common.utils.DateUtils;
import com.person.common.utils.PageUtils;
import com.person.common.utils.R;
import com.person.common.validator.ValidatorUtils;
import com.person.modules.person.entity.SalaryRecordEntity;
import com.person.modules.person.entity.UserDocEntity;
import com.person.modules.person.service.UserDocService;
import com.person.modules.sys.controller.AbstractController;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 员工档案
*
* @author
*/
@RestController
@RequestMapping("/person/doc")
public class UserDocController extends AbstractController {
@Autowired
private UserDocService userDocService;
/**
* 所有员工档案列表
*/
@RequestMapping("/list")
@RequiresPermissions("person:doc:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = userDocService.queryPage(params);
return R.ok().put("page", page);
}
/**
* 员工档案信息
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("person:doc:info")
@ResponseBody
public R info(@PathVariable("id") Long id){
UserDocEntity doc = userDocService.getById(id);
return R.ok().put("doc", doc);
}
/**
* 保存员工档案
*/
@SysLog("保存员工档案")
@RequestMapping("/save")
@RequiresPermissions("person:doc:save")
public R save(@RequestBody UserDocEntity doc){
ValidatorUtils.validateEntity(doc);
doc.setCreateTime(DateUtils.currentTimeFormat() );
//查询是否已存在
UserDocEntity d = new UserDocEntity();
d.setUserId(doc.getUserId());
QueryWrapper q = new QueryWrapper();
q.setEntity(d);
UserDocEntity one = userDocService.getOne(q);
if (null != one) {
return R.error( "该员工已有档案,请勿重复添加");
}
doc.setUserNo(StringUtils.leftPad(doc.getUserId().toString(),4,"0"));
userDocService.save(doc);
return R.ok();
}
/**
* 修改员工档案
*/
@SysLog("修改员工档案")
@RequestMapping("/update")
@RequiresPermissions("person:doc:update")
public R update(@RequestBody UserDocEntity doc){
ValidatorUtils.validateEntity(doc);
userDocService.update(doc);
return R.ok();
}
/**
* 删除员工档案
*/
@SysLog("删除员工档案")
@RequestMapping("/delete")
@RequiresPermissions("person:doc:delete")
public R delete(@RequestBody Long[] ids){
userDocService.deleteBatch(ids);
return R.ok();
}
}