源码获取:俺的博客首页 "资源" 里下载! 

项目介绍

基于Springboot+vue实现的员工绩效考核管理系统

系统包含员工和管理员两个角色

管理员:
部门管理:负责创建、修改和删除部门,以及为部门设置权限和角色。
岗位管理:定义和管理岗位信息,包括添加、修改和删除岗位,以及设置岗位的职责和要求。
员工管理:全面管理员工信息,包括基本信息、工作经历、培训记录以及绩效考核结果等。
绩效指标管理:根据公司的业务需求,设定、修改和删除绩效指标。
绩效考核管理:设定考核周期,制定评估标准和方法,对员工进行定期的绩效考核,并生成相应的评估报告。
公告信息管理:发布公司政策、通知、会议安排等公告信息,确保员工及时获取。

员工:
个人中心:查看和更新个人信息,如联系方式、工作经历等。
查看绩效考核:查看自己的绩效考核结果,包括目标完成情况、评估得分等。
接收反馈:查看系统或上级给出的绩效反馈和改进建议,了解自己的工作表现和不足。
公告查看:查看系统发布的公告信息,确保自己了解公司的最新政策和通知。
报表查看:查看并理解自己的绩效考核报表,了解自己的绩效趋势和改进方向。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;


技术栈

后端:SpringBoot+Mybaits

前端:Vue+elementui


使用说明

项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4.运行项目,在浏览器中输入地址:
后台登录页面
http://localhost:8080/springboot57n6g/admin/dist/index.html
管理员账户:abo 密码:abo
用户账户:员工1 密码:123456

文档结构展示:

系统登录展示:

公告管理展示:

部门展示:

岗位展示页面:

员工展示页面:

绩效指标展示:

绩效考核展示页面:

员工管理控制层:

@RestController
@RequestMapping("/employee")
@CrossOrigin
@Slf4j
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
    @Autowired
    private DepartmentService departmentService;
    @Autowired
    private JobService jobService;
    @Autowired
    private EduLevelMapper eduLevelMapper;
    @Autowired
    private EmployeeMapper employeeMapper;
    /**
     * 搜索接口
     */
    @GetMapping("/search")
    public Result search(@RequestParam(name = "name", required = false,defaultValue = "") String name,
                         @RequestParam(name = "current", required = false, defaultValue = "1") Integer current,
                         @RequestParam(name = "size", required = false, defaultValue = "10") Integer size) {
        return employeeService.list(current, size, name);
    }

    /**
     * 分页查询接口
     *
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/list")
    public Result list(@RequestParam(name = "current", required = false, defaultValue = "1") Integer current,
                       @RequestParam(name = "size", required = false, defaultValue = "10") Integer size) {
        return employeeService.list(current, size, null);
    }

    /**
     * 根据id获取员工具体信息
     * @param id
     * @return
     */
    @GetMapping("/getUserById")
    public EmployeeDTO getUserAllInfoById(@RequestParam(name = "id") Integer id) {
        return employeeService.getUserById(id);
    }

    /**
     * 根据员工获取信息
     * @param id
     * @return
     */
    @GetMapping("/getEmployeeById")
    public Employee getUserById(@RequestParam(name = "id") Integer id) {
        return employeeMapper.selectById(id);
    }
    /**
     * 增加员工接口
     *
     * @param employee
     * @return
     */
    @PostMapping("/add")
    public Map<String, Object> addUser(@RequestBody Employee employee) {
        log.info(employee.toString());
        return employeeService.add(employee);
    }

    /**
     * 更新用户
     * @param employee
     * @return
     */
    @PostMapping("/update")
    public Map<String, Object> updateUser(@RequestBody Employee employee) {
        log.info(employee.toString());
        return employeeService.update(employee);
    }

    /**
     * 删除用户
     * @param id
     * @return
     */
    @GetMapping("/delete")
    public Result deleteEmployeeById(@RequestParam(name = "id") Integer id) {
        return employeeService.deleteEmployeeById(id);
    }

    /**
     * 辞退员工
     *
     * @param id
     * @return
     */
    @GetMapping("/dismiss")
    public Map<String, Object> dismissEmployeeById(@RequestParam(name = "id") Integer id) {
        return employeeService.dismissEmployeeById(id);
    }

    /**
     * 得到所以工作,部门,学历信息
     *
     * @return
     */
    @GetMapping("/otherInfo")
    public Result getAllOtherInfo() {
        Map<String, Object> info = new HashMap<>();
        info.put("departments", departmentService.selectAll());
        info.put("jobs", jobService.selectAll());
        info.put("eduLevels", eduLevelMapper.selectList(null));
        return Result.success(info);
    }

    @GetMapping("/map")
    public Result getMap() {
        return employeeService.getMap();
    }
}

登录管理业务处理层:

@Service
public class AuthServiceImpl implements AuthService {
    @Autowired
    private EmployeeMapper employeeMapper;

    @Override
    public Result login(String email, String password) {

        //先用邮箱查询是否有这个员工
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getEmail, email);
//        queryWrapper.eq(Employee::getPassword, password);
        Employee employee = employeeMapper.selectOne(queryWrapper);
        //判断员工是否存在
        if (employee == null) {
            return Result.failure(ResponseCode.USER_NOT_FOUND);
        } else {
            //判断密码是否正确
            if (!employee.getPassword().equals(password)) {
                return Result.failure(ResponseCode.PASSWORD_ERROR);
            }
            // 生成token
            String token = UUID.randomUUID().toString();
            LoginDTO loginDTO = new LoginDTO();
            if (employee.getAuthority() == 1) {
                loginDTO.setSuper(true);
            } else {
                loginDTO.setSuper(false);
            }
            loginDTO.setToken(token);
            loginDTO.setUserId(employee.getId());
            return Result.success(loginDTO);
        }
    }
}

部门管理控制层: 

@Service
public class DepartmentServiceImpl implements DepartmentService {
    @Autowired
    private DepartmentMapper departmentMapper;
    @Autowired
    private DeptManagerMapper deptManagerMapper;
    @Autowired
    private EmployeeMapper employeeMapper;

    @Override
    public List<DepartmentDTO> selectAll() {
        List<DepartmentDTO> departmentDTOS = departmentMapper.selectAll();
        for (DepartmentDTO departmentDTO : departmentDTOS) {
            LambdaQueryWrapper<DeptManager> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(DeptManager::getDeptId, departmentDTO.getId());
            DeptManager deptManager = deptManagerMapper.selectOne(queryWrapper);
            // fixes bug  #空指针异常,  如果部门没有经理, 会抛出空指针异常
            if (deptManager != null) {
                EmployeeDTO manager = employeeMapper.getUserById(deptManager.getEmpId());
                departmentDTO.setManager(manager);
            }
        }
        return departmentDTOS;
    }

    @Override
    public Map<String, Object> add(Map<String, Object> map) {

        //先查询是否有部门
        String name = (String) map.get("name");
        Integer managerId = Integer.parseInt((String) map.get("managerId"));
        LambdaQueryWrapper<Department> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Department::getName, name);
        Integer count = departmentMapper.selectCount(wrapper);
        if (count != 0) {
            map.put("code", 511);
            map.put("message", "部门存在");
            return map;
        }
        //查询经理是否存在
        LambdaQueryWrapper<Employee> wrapper1 = new LambdaQueryWrapper<>();
        wrapper1.eq(Employee::getId, managerId);
        Integer count1 = employeeMapper.selectCount(wrapper1);
        if (count1 == 0) {
            map.put("code", 404);
            map.put("message", "用户不存在");
            return map;
        }
        //定义返回结果
        Map<String, Object> resultMap = new HashMap<>();
        Department department = new Department();
        department.setIntro((String) map.get("description"));
        department.setName((String) map.get("name"));
        //插入部门
        int i = departmentMapper.insert(department);
        //部门经理表
        DeptManager deptManager = new DeptManager();
        deptManager.setDeptId(department.getId());
        deptManager.setEmpId(managerId);
        int insert = deptManagerMapper.insert(deptManager);
        if (i !=0 ) {
            map.put("code", 200);
            map.put("message", "添加成功");
            return map;
        } else {
            map.put("code", 500);
            map.put("message", "添加失败");
            return map;
        }
    }
}

源码获取:俺的博客首页 "资源" 里下载!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐