基础环境:
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)字典管理
管理系统常用字典值,只有管理员可用
免费领取下载链接-关注底部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();
}
}