基于javaweb+mysql的springboot企业员工绩效工资管理系统(java+springboot+freemarker+mysql+maven)

基于javaweb+mysql的springboot企业员工绩效工资管理系统(java+springboot+freemarker+mysql+maven)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SpringBoot企业员工绩效工资管理系统(java+springboot+freemarker+mysql+maven)

超级管理员等角色,除基础脚手架外,实现的功能有:

超级管理员:系统管理、用户管理(冻结等)、职称管理、部门管理(工资项)、岗位管理(考核指标管理,可指定部门)、工龄管理等。

普通员工:考勤管理(查看自己的考勤记录)、工资管理(查看自己的工资详情)。

HR人事:员工管理、考勤管理、工资管理。

部门经理:部门绩效考核管理、年度考核管理、考核指标管理。

运行环境:windows/Linux均可、jdk1.8、mysql5.7、idea/eclipse均可。

            Date setupTime = HSSFDateUtil.getJavaDate(Double.valueOf(month));

            Calendar cal = Calendar.getInstance();
            cal.setTime(setupTime);
            int monthOfDay = cal.get(Calendar.MONTH)+1;
            int year = cal.get(Calendar.YEAR);

            Staff byJobNumber = staffService.findByJobNumberAndIsStatus(jobNumber);
            if(byJobNumber == null){
                CodeMsg codeMsg = CodeMsg.ADMIN_JOB_NUMBER_EMPTY;
                codeMsg.setMsg("Excel第" + line + "行"+codeMsg.getMsg());
                return Result.error(codeMsg);
            }

            Date date= new Date();

            Date setDate = DateUtil.setDate(date, year, monthOfDay, 0, 0, 0, 0);

            if(setDate.getTime() > date.getTime()){
                CodeMsg codeMsg = CodeMsg.ADMIN_IMPORT_DATE_ERROR;
                codeMsg.setMsg("Excel第" + line + "行"+codeMsg.getMsg());
                return Result.error(codeMsg);
            }

            if(attendanceService.findByJobNumberAndYearAndMonthOfDay(jobNumber,year, monthOfDay)!= null){
                CodeMsg codeMsg = CodeMsg.ADMIN_ATTENDANCE_MONTH_EXIST;
                codeMsg.setMsg("Excel第" + line + "行"+codeMsg.getMsg());
                return Result.error(codeMsg);
            }
            double sick = 0;
            double personal = 0;
            double overtime = 0;
            double overtimeWeekends = 0;
            double holidayOvertime = 0;
            int later = 0;
            int leaveEarly = 0;
            double absence = 0;
            double travel = 0;

            try{
                sick = Double.parseDouble(daysSick);
                personal = Double.parseDouble(personalLeaveDays);
                overtime = Double.parseDouble(overtimeHours);
                overtimeWeekends = Double.parseDouble(overtimeOnWeekends);
                holidayOvertime = Double.parseDouble(holidayOvertimeHours);
                later = Integer.parseInt(lateNumber);
                leaveEarly = Integer.parseInt(leaveEarlyTimes);
                absence = Double.parseDouble(absenceDays);
     * @param model
     * @param pageBean
     * @param staff
     * @return
     */
    @RequestMapping("/list")
    public String list(Model model, PageBean<Staff> pageBean, Staff staff){
        model.addAttribute("title","考核列表");
        Staff loginedStaff = SessionUtil.getLoginedStaff();
        model.addAttribute("jobNumber",staff.getJobNumber());
        model.addAttribute("pageBean",staffService.findDepartmentList(staff, pageBean,loginedStaff));
        return "/admin/assessment/list";
    }

    /**
     * 绩效考核页面
     * @return
     */
    @RequestMapping("/achieve_add")
    public String add(@RequestParam("id")Long id,Model model){
        Staff staff = staffService.find(id);
        Long departmentId = staff.getDepartment().getId();
        Department department = departmentService.find(departmentId);
        List<AssessTarget> assessTargets = department.getAssessTargets();
        model.addAttribute("staff",staff);
        model.addAttribute("assessTargetList",assessTargets);
        return "/admin/assessment/add";
    }

    /**
     * 绩效考核添加提交处理
     * @param performanceAssessment
     * @return
     */
    @RequestMapping(value = "/achieve_add",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(PerformanceAssessment performanceAssessment,@RequestParam("assTarget")String assTarget){
        //判断员工是否存在
        Staff staff = performanceAssessment.getStaff();
        if(staff==null){
           return Result.error(CodeMsg.ADMIN_STAFF_NOT_EXIST_ERROR);
       }
       //年份判断
        Integer year = performanceAssessment.getYear();
     * @param month
     * @return
     */
    @RequestMapping("/personage_list")
    public String personageList(Model model, PageBean<Attendance> pageBean,Attendance attendance,
                       String month){
        model.addAttribute("title","个人考勤列表");
        model.addAttribute("month",month);
        model.addAttribute("pageBean",attendanceService.findPersonageList(attendance,pageBean));
        return "admin/attendance/personage_list";
    }

    /**
     * 添加页面
     * @return
     */
    @RequestMapping("/add")
    public String add(Model model){
        model.addAttribute("staffList",staffService.findByIsStatus(StaffStatus.ON_THE_JOB.getCode()));
        return "admin/attendance/add";
    }

    /**
     * 添加表单提交
     * @param attendance
     * @return
     */
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(Attendance attendance){
        CodeMsg validate = ValidateEntityUtil.validate(attendance);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }

        if(attendance.getMonth() == null){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_MONTH_EMPTY);
        }

        if(StringUtils.isEmpty(attendance.getJobNumber())){

/**
 * 系统控制器
 *
 */
@RequestMapping("/system")
@Controller
public class SystemController {

	
	
	@Autowired
	private OperaterLogService operaterLogService;
	
	@Autowired
	private UserService userService;

	@Autowired
	private StaffService staffService;
	@Autowired
	private OrderAuthService orderAuthService;

	private Logger log = LoggerFactory.getLogger(SystemController.class);
	
	/**
	 * 登录页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/login",method=RequestMethod.GET)
	public String login(Model model){
		model.addAttribute("loginTypes", LoginType.values());
		return "admin/system/login";
	}
	
	/**
	 * 用户登录提交表单处理方法
	 * @param request
	 * @param cpacha
	 * @return
	 */
	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	 * 删除菜单信息
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			menuService.delete(id);
		} catch (Exception e) {
			return Result.error(CodeMsg.ADMIN_MENU_DELETE_ERROR);
		}
		//数据库添加操作成功,记录日志
		operaterLogService.add("删除菜单信息,菜单ID【" + id + "】");
		return Result.success(true);
	}
}

/**
 * 后台部门管理Controller
 */
@Controller
@RequestMapping("/admin/department")
public class DepartmentController {

    @Autowired
    private DepartmentService departmentService;

    @Autowired
    private OperaterLogService operaterLogService;

    /**

    @Autowired
    private AssessTargetService assessTargetService;

    @Autowired
    private AttendanceService attendanceService;

    /**
     * 分页查询员工列表
     * @param model
     * @param pageBean
     * @param staff
     * @return
     */
    @RequestMapping("/list")
    public String list(Model model, PageBean<Staff> pageBean, Staff staff){
        model.addAttribute("title","考核列表");
        Staff loginedStaff = SessionUtil.getLoginedStaff();
        model.addAttribute("jobNumber",staff.getJobNumber());
        model.addAttribute("pageBean",staffService.findDepartmentList(staff, pageBean,loginedStaff));
        return "/admin/assessment/list";
    }

    /**
     * 绩效考核页面
     * @return
     */
    @RequestMapping("/achieve_add")
    public String add(@RequestParam("id")Long id,Model model){
        Staff staff = staffService.find(id);
        Long departmentId = staff.getDepartment().getId();
        Department department = departmentService.find(departmentId);
        List<AssessTarget> assessTargets = department.getAssessTargets();
        model.addAttribute("staff",staff);
        model.addAttribute("assessTargetList",assessTargets);
        return "/admin/assessment/add";
    }

    /**
     * 绩效考核添加提交处理
     * @param performanceAssessment
     * @return
     */
    @RequestMapping(value = "/achieve_add",method = RequestMethod.POST)
    @ResponseBody

    /**
     * 添加页面
     * @return
     */
    @RequestMapping("/add")
    public String add(){
        return "admin/job_title/add";
    }

    /**
     * 添加表单提交处理
     * @param jobTitle
     * @return
     */
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(JobTitle jobTitle){

        //统一验证法验证
        CodeMsg validate = ValidateEntityUtil.validate(jobTitle);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }

        //判断是否已有该名称
        if(jobTitleService.isExistName(jobTitle.getName(),0l)){
            return Result.error(CodeMsg.ADMIN_JOB_TITLE_NAME_EXIST);
        }

        if(jobTitleService.save(jobTitle) == null){
            return Result.error(CodeMsg.ADMIN_JOB_TITLE_SAVE_ERROR);
        }
        operaterLogService.add("添加职称,职称名:" + jobTitle.getName());
        return Result.success(true);
    }

    /**
     * 编辑页面
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/edit")
    public String edit(Model model, @RequestParam(value = "id",required = true)Long id){
        model.addAttribute("jobTitle",jobTitleService.find(id));
        return "admin/job_title/edit";
    }
        }
        //到这说明一切符合条件,进行数据库保存
        AssessTarget findById = assessTargetService.find(assessTarget.getId());
        //讲提交的用户信息指定字段复制到已存在的department对象中,该方法会覆盖新字段内容
        BeanUtils.copyProperties(assessTarget, findById, "id","createTime","updateTime");
        if(assessTargetService.save(findById) == null){
            return Result.error(CodeMsg.ADMIN_ASSESS_TARGET_EDIT_ERROR);
        }
        operaterLogService.add("编辑指标,指标名:" + assessTarget.getName());
        return Result.success(true);
    }
    /**
     * 根据id删除
     * @param id
     * @return
     */
    @RequestMapping(value = "delete",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
        try{
            assessTargetService.delete(id);
        }catch (Exception e){
            return Result.error(CodeMsg.ADMIN_ASSESS_TARGET_DELETE_ERROR);
        }
        operaterLogService.add("删除指标,指标ID:" + id);
        return Result.success(true);
    }
}

@RequestMapping("/admin/staff")
@Controller
public class StaffController {

	@Autowired
	private StaffService staffService;
	@Autowired
	private JobTitleService jobTitleService;
	@Autowired
	private RoleService roleService;

	@Autowired
	private PositionService positionService;

	@Autowired
	private DepartmentService departmentService;

	@Autowired
	private OperaterLogService operaterLogService;

	@Autowired
	private AttendanceService attendanceService;

	/**
	 * 员工列表页面
	 * @param model
	 * @param staff
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model, Staff staff, PageBean<Staff> pageBean){
        model.addAttribute("title", "员工列表");
		model.addAttribute("jobNumber", staff.getJobNumber()==null?"":staff.getJobNumber());
		model.addAttribute("pageBean", staffService.findList(staff, pageBean));
		return "admin/staff/list";
	}
	
	/**
	 * 新增员工页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		model.addAttribute("roles", roleService.findAll());
		model.addAttribute("educationEnum",EducationEnum.values());
		model.addAttribute("jobTitleList",jobTitleService.findAll());
		model.addAttribute("positionList",positionService.findAll());
		model.addAttribute("departmentList",departmentService.findAll());
		return "admin/staff/add";
	}
	
        return "admin/salary/list";
    }

    /**
     * 个人工资列表
     * @param model
     * @param pageBean
     * @param salary
     * @param month
     * @return
     */
    @RequestMapping("/personage_list")
    public String personageList(Model model, PageBean<Salary> pageBean, Salary salary,
                                String month){
        model.addAttribute("title","个人工资列表");
        model.addAttribute("month",month);
        model.addAttribute("pageBean",salaryService.findPersonageList(salary,pageBean));
        return "admin/salary/personage_list";
    }

    /**
     * 查看详情
     * @param id
     * @return
     */
    @RequestMapping("/show")
    public String show(@RequestParam(name="id",required=true)Long id,Model model){
        Salary salary = salaryService.find(id);
        model.addAttribute("salary",salary);
        return "admin/salary/show";
    }

    /**
     * 工资结算页面
     * @return
     */
    @RequestMapping("/calculation")
    public String calculation(Model model){
        model.addAttribute("staffList",staffService.findByIsStatus(StaffStatus.ON_THE_JOB.getCode()));
        return "admin/salary/calculation";
    }

    /**
     * 结算全体员工奖金
     * @param salary
     * @return
     */
    @RequestMapping(value = "/calculation_all",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> calculateAll(Salary salary){
        if(salary.getMonth() == null){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_MONTH_EMPTY);
    }

    /**
     * 根据id删除
     * @param id
     * @return
     */
    @RequestMapping(value = "delete",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
        try{
            departmentService.delete(id);
        }catch (Exception e){
            return Result.error(CodeMsg.ADMIN_DEPARTMENT_DELETE_ERROR);
        }
        operaterLogService.add("删除部门,部门ID:" + id);
        return Result.success(true);
    }
}

/**

/**
 * 登录拦截器
 *
 */
@Component
public class AdminLoginInterceptor implements HandlerInterceptor{

	private Logger log = LoggerFactory.getLogger(AdminLoginInterceptor.class);
	@Autowired
	private SiteConfig siteConfig;
	
	@Override
	public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
		String requestURI = request.getRequestURI();
		HttpSession session = request.getSession();
		session.setAttribute(SessionConstant.SESSION_USER_AUTH_KEY, AppConfig.ORDER_AUTH);
		Object loginType = session.getAttribute("loginType");
		Object attribute = null;
		if(loginType != null){
			if((Integer) loginType == LoginType.ADMINISTRATOR.getCode()){
				attribute = session.getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
			}else{
				attribute = session.getAttribute(SessionConstant.SESSION_STAFF_LOGIN_KEY);
			}
     */
    @RequestMapping("/list")
    public String list(Model model, PageBean<Position> pageBean,Position position){
        model.addAttribute("title","岗位列表");
        model.addAttribute("name",position.getName());
        model.addAttribute("pageBean",positionService.findList(position,pageBean));
        return "admin/position/list";
    }

    /**
     * 添加页面
     * @return
     */
    @RequestMapping("/add")
    public String add(){
        return "admin/position/add";
    }

    /**
     * 添加表单提交
     * @param position
     * @return
     */
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(Position position){
        //统一验证法验证
        CodeMsg validate = ValidateEntityUtil.validate(position);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }
        if(position.getNote().length() > 50){
            return Result.error(CodeMsg.POSITION_LENGTH_EXIST);
        }
        if(positionService.isExistName(position.getName(),0l)){
            return Result.error(CodeMsg.ADMIN_POSITION_NAME_EXIST);
        }
        if(positionService.save(position) == null){
            return Result.error(CodeMsg.ADMIN_POSITION_SAVE_ERROR);
        }
        operaterLogService.add("添加岗位,岗位名:" + position.getName());
        return Result.success(true);
    }

    /**
     * 编辑页面
     * @param model
     * @param id
     * @return
/**
 * 后台岗位管理Controller
 */
@RequestMapping("/admin/position")
@Controller
public class PositionController {

    @Autowired
    private PositionService positionService;

    @Autowired
    private OperaterLogService operaterLogService;

    /**
     * 分页查询岗位列表
     * @param model
     * @param pageBean
     * @param position
     * @return
     */
    @RequestMapping("/list")
    public String list(Model model, PageBean<Position> pageBean,Position position){
        model.addAttribute("title","岗位列表");
        model.addAttribute("name",position.getName());
        model.addAttribute("pageBean",positionService.findList(position,pageBean));
        return "admin/position/list";
    }

    /**
     * 添加页面
     * @return
     */
    @RequestMapping("/add")
    public String add(){
        return "admin/position/add";
    }

    /**
     * 添加表单提交
     * @param position
     * @return
     */
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(Position position){
     */
    @RequestMapping("/list")
    public String list(Model model){
        model.addAttribute("title","工资项列表");
        WageItem wageItem = wageItemService.findFirstByOrderByCreateTimeDesc();
        if(wageItem==null){
            //表示还没有添加
           return "/admin/wage_item/list";
        }else{
            //表示存在 编辑
            model.addAttribute("wageItem",wageItem);
            return "/admin/wage_item/edit";
        }
    }
    
    /**
     * 工资项添加提交处理
     * @param
     * @return
     */
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(WageItem wageItem){
        //用统一验证实体方法验证是否合法
        CodeMsg validate = ValidateEntityUtil.validate(wageItem);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }
        if(wageItemService.save(wageItem) == null){
            return Result.error(CodeMsg.ADMIN_WAGE_ITEM_ADD_ERROR);
        }
        operaterLogService.add("添加工资项,工资项Id:" + wageItem.getId());
        return Result.success(true);
    }

    /**
     * 工资项编辑
     * @param wageItem
     * @return
     */
    @RequestMapping(value = "/edit",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> edit(WageItem wageItem){

/**
 * 登录拦截器
 *
 */
@Component
public class AdminLoginInterceptor implements HandlerInterceptor{

	private Logger log = LoggerFactory.getLogger(AdminLoginInterceptor.class);
	@Autowired
	private SiteConfig siteConfig;
	
	@Override
	public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
		String requestURI = request.getRequestURI();
		HttpSession session = request.getSession();
		session.setAttribute(SessionConstant.SESSION_USER_AUTH_KEY, AppConfig.ORDER_AUTH);
		Object loginType = session.getAttribute("loginType");
		Object attribute = null;
		if(loginType != null){
			if((Integer) loginType == LoginType.ADMINISTRATOR.getCode()){
				attribute = session.getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
                return Result.error(codeMsg);
            }

            if(attendanceService.findByJobNumberAndYearAndMonthOfDay(jobNumber,year, monthOfDay)!= null){
                CodeMsg codeMsg = CodeMsg.ADMIN_ATTENDANCE_MONTH_EXIST;
                codeMsg.setMsg("Excel第" + line + "行"+codeMsg.getMsg());
                return Result.error(codeMsg);
            }
            double sick = 0;
            double personal = 0;
            double overtime = 0;
            double overtimeWeekends = 0;
            double holidayOvertime = 0;
            int later = 0;
            int leaveEarly = 0;
            double absence = 0;
            double travel = 0;

            try{
                sick = Double.parseDouble(daysSick);
                personal = Double.parseDouble(personalLeaveDays);
                overtime = Double.parseDouble(overtimeHours);
                overtimeWeekends = Double.parseDouble(overtimeOnWeekends);
                holidayOvertime = Double.parseDouble(holidayOvertimeHours);
                later = Integer.parseInt(lateNumber);
                leaveEarly = Integer.parseInt(leaveEarlyTimes);
                absence = Double.parseDouble(absenceDays);
                travel = Double.parseDouble(travelDays);
            }catch (Exception e){
                return  Result.error(CodeMsg.NUMBER_TYPE_ERROR);
            }

            attendance.setJobNumber(jobNumber);
            attendance.setYear(year);
            attendance.setMonthOfDay(monthOfDay);
            attendance.setDaysSick(sick);
            attendance.setPersonalLeaveDays(personal);
            attendance.setOvertimeHours(overtime);
            attendance.setOvertimeOnWeekends(overtimeWeekends);
            attendance.setHolidayOvertimeHours(holidayOvertime);
            attendance.setLateNumber(later);
            attendance.setLeaveEarlyTimes(leaveEarly);
            attendance.setAbsenceDays(absence);
            attendance.setTravelDays(travel);
            attendance.setStaff(byJobNumber);
            attendance.setDepartment(byJobNumber.getDepartment());

				SessionUtil.set(SessionConstant.SESSION_STAFF_LOGIN_KEY,null);
			}
		}
		return "redirect:login";
	}
	
	/**
	 * 无权限提示页面
	 * @return
	 */
	@RequestMapping(value="/no_right")
	public String noRight(){
		return "admin/system/no_right";
	}
	
	/**
	 * 修改用户个人信息
	 * @return
	 */
	@RequestMapping(value="/update_userinfo",method=RequestMethod.GET)
	public String updateUserInfo(){
		return "admin/system/update_userinfo";
	}
	
	/**
	 * 修改个人信息保存
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/update_userinfo",method=RequestMethod.POST)
	public String updateUserInfo(User user){
		User loginedUser = SessionUtil.getLoginedUser();
		loginedUser.setEmail(user.getEmail());
		loginedUser.setMobile(user.getMobile());
		loginedUser.setHeadPic(user.getHeadPic());
		//首先保存到数据库
		userService.save(loginedUser);
		//更新session里的值
		SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, loginedUser);
		return "redirect:update_userinfo";
	}
	
	/**
	 * 修改密码页面
	 * @return

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值