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

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

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

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

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

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

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

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

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

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

		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(role);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		Role existRole = roleService.find(role.getId());
		if(existRole == null){
			return Result.error(CodeMsg.ADMIN_ROLE_NO_EXIST);
		}
		existRole.setName(role.getName());
		existRole.setRemark(role.getRemark());
		existRole.setStatus(role.getStatus());
		existRole.setAuthorities(role.getAuthorities());
		if(roleService.save(existRole) == null){
			return Result.error(CodeMsg.ADMIN_ROLE_EDIT_ERROR);
		}
		log.info("编辑角色【"+role+"】");
		operaterLogService.add("编辑角色【"+role.getName()+"】");
		return Result.success(true);
	}
	
	/**
	 * 删除角色
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			roleService.delete(id);
		} catch (Exception e) {
			// TODO: handle exception
			return Result.error(CodeMsg.ADMIN_ROLE_DELETE_ERROR);
		}
		log.info("编辑角色ID【"+id+"】");
		operaterLogService.add("删除角色ID【"+id+"】");
		return Result.success(true);
	}
}
package com.yuanlrc.base.controller.admin;

     * @return
     */
    @RequestMapping("/edit")
    public String edit(Model model,@RequestParam(name="id",required=true)Long id){
        AssessTarget assessTarget = assessTargetService.find(id);
        model.addAttribute("assessTarget",assessTarget);
        model.addAttribute("targetClassifyList",TargetClassify.values());
        model.addAttribute("departmentList",departmentService.findAll());
        List<Department> departments = assessTarget.getDepartments();
        List<Long> departmentIds = departments.stream().map(Department::getId).collect(Collectors.toList());
        String departmentIdList = JSONArray.toJSONString(departmentIds);
        model.addAttribute("departments",departmentIdList);
        model.addAttribute("departmentIds",departmentIds);
        return "/admin/assess_target/edit";
    }

    /**
     * 指标编辑表单提交处理
     * @param assessTarget
     * @return
     */
    @RequestMapping(value = "/edit",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> edit(AssessTarget assessTarget){
        //用统一验证实体方法验证是否合法
        CodeMsg validate = ValidateEntityUtil.validate(assessTarget);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }
        if(assessTarget.getTargetClassify().getCode()==-1){
            return Result.error(CodeMsg.ADMIN_ASSESS_TARGET_CATEGORY_ERROR);
        }
        if(assessTargetService.isExistName(assessTarget.getName(),assessTarget.getId())){
            return Result.error(CodeMsg.ADMIN_ASSESS_TARGET_NAME_EXIST_ERROR);
        }
        //到这说明一切符合条件,进行数据库保存
        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);
			request.setAttribute("siteUrl", siteConfig.getSiteUrl());
		}
		return true;
	}
}
package com.yuanlrc.base.controller.admin;

/**
 * 后台工资项管理Controller
 */
@Controller
@RequestMapping("/admin/wage_item")
public class WageItemController {

    @Autowired
    private OperaterLogService operaterLogService;

    @Autowired
    private WageItemService wageItemService;

    /**
        staff.setJobNumber(jobNumber);
        //到这说明一切符合条件,进行数据库新增
		if(staffService.save(staff) == null){
			return Result.error(CodeMsg.ADMIN_STAFF_ADD_ERROR);
		}
		operaterLogService.add("添加员工,员工名:" + staff.getName());
		return Result.success(true);
	}

	@RequestMapping(value="/edit_self",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit_self(Staff staff, HttpServletRequest request){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(staff);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		if(!StringUtil.isMobile(staff.getMobile())){
			return Result.error(CodeMsg.ADMIN_STAFF_MOBILE_ERROR);
		}
		if(!StringUtil.isMobile(staff.getEmergencyMobile())){
			return Result.error(CodeMsg.ADMIN_STAFF_EMERGENCY_MOBILE_ERROR);
		}
		if(staff.getId() == null || staff.getId().longValue() <= 0){
			return Result.error(CodeMsg.ADMIN_STAFF_NOT_EXIST_ERROR);
		}
		//到这说明一切符合条件,进行数据库保存
		Staff findById = staffService.find(staff.getId());
		//讲提交的员工信息指定字段复制到已存在的staff对象中,该方法会覆盖新字段内容
		BeanUtils.copyProperties(staff, findById, "id","createTime","updateTime","jobNumber",
				"role","educationEnum","jobTitle",
				"position","department","entryTime");
		Staff saveStaff = staffService.save(findById);
		if(saveStaff == null){
			return Result.error(CodeMsg.ADMIN_STAFF_EDIT_ERROR);
		}
		Staff loginedStaff = SessionUtil.getLoginedStaff();
		if(loginedStaff != null){
			if(loginedStaff.getId().longValue() == findById.getId().longValue()){
				loginedStaff.setHeadPic(saveStaff.getHeadPic());
				loginedStaff.setName(saveStaff.getName());
				loginedStaff.setMobile(saveStaff.getMobile());
	
	@Autowired
	private MenuService menuService;
	
	@Autowired
	private OperaterLogService operaterLogService;
	
	@Autowired
	private RoleService roleService;
	
	/**
	 * 分页搜索角色列表
	 * @param model
	 * @param role
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model,Role role,PageBean<Role> pageBean){
		model.addAttribute("title", "角色列表");
		model.addAttribute("name", role.getName());
		model.addAttribute("pageBean", roleService.findByName(role, pageBean));
		return "admin/role/list";
	}
	
	/**
	 * 角色添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		List<Menu> findAll = menuService.findAll();
		model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));
		model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));
		model.addAttribute("thirdMenus",MenuUtil.getThirdMenus(findAll));
		return "admin/role/add";
	}
	
	/**
	 * 角色添加表单提交处理
	 * @param role
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> add(Role role){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(role);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}

        if(attendance.getMonth().getTime() > new Date().getTime()){
            return Result.error(CodeMsg.ADMIN_DATE_ERROR);
        }

        Calendar cal = Calendar.getInstance();
        cal.setTime(attendance.getMonth());
        int month = cal.get(Calendar.MONTH)+1;
        int year = cal.get(Calendar.YEAR);

        if(attendanceService.findByJobNumberAndYearAndMonthOfDay(attendance.getJobNumber(),year,month)!= null){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_MONTH_EXIST);
        }

        int daysByYearMonth = DateUtil.getDaysByYearMonth(year, month);
        if(daysOver(attendance,daysByYearMonth)){
            return Result.error(CodeMsg.ADMIN_DAYS_ERROR);
        }

        if(attendance.getDaysSick() == 0 && attendance.getPersonalLeaveDays() == 0 && attendance.getLateNumber() == 0
            && attendance.getLeaveEarlyTimes() == 0 && attendance.getAbsenceDays() == 0){
            attendance.setIsStatus(IsStatus.IS_ATTENDANCE);
        }

        attendance.setYear(year);
        attendance.setMonthOfDay(month);
        attendance.setLeaveDays(attendance.getDaysSick() + attendance.getPersonalLeaveDays());
        attendance.setStaff(byJobNumber);
        attendance.setDepartment(byJobNumber.getDepartment());

        if(attendanceService.save(attendance) == null){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_SAVE_ERROR);
        }

        return Result.success(true);
    }

    /**
     * 编辑页面
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/edit")
    public String edit(Model model,@RequestParam(value = "id",required = true)Long id){
        Attendance attendance = attendanceService.find(id);
        model.addAttribute("attendance",attendance);
        return "admin/attendance/edit";
    }

    /**

	/**
	 * 员工编辑页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		model.addAttribute("staff", staffService.find(id));
		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/edit";
	}
	
	/**
	 * 编辑员工信息表单提交处理
	 * @param staff
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(Staff staff, HttpServletRequest request){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(staff);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}

		if(staff.getRole() == null || staff.getRole().getId() == null){
			return Result.error(CodeMsg.ADMIN_STAFF_ROLE_ERROR);
		}
		if(!StringUtil.isMobile(staff.getMobile())){
			return Result.error(CodeMsg.ADMIN_STAFF_MOBILE_ERROR);
		}
		if(!StringUtil.isMobile(staff.getEmergencyMobile())){
			return Result.error(CodeMsg.ADMIN_STAFF_EMERGENCY_MOBILE_ERROR);
		}
		if(staff.getId() == null || staff.getId().longValue() <= 0){
			return Result.error(CodeMsg.ADMIN_STAFF_NOT_EXIST_ERROR);
		}
		//到这说明一切符合条件,进行数据库保存
		Staff findById = staffService.find(staff.getId());
		//讲提交的员工信息指定字段复制到已存在的staff对象中,该方法会覆盖新字段内容
		BeanUtils.copyProperties(staff, findById, "id","createTime","updateTime","jobNumber");
		Staff saveStaff = staffService.save(findById);
		if(saveStaff == null){
			return Result.error(CodeMsg.ADMIN_STAFF_EDIT_ERROR);
        int year = cal.get(Calendar.YEAR);

        Salary byStaffIdAndYearAndMonthOfDay = salaryService.findByStaffIdAndYearAndMonthOfDay(salary.getStaff().getId(), year, monthOfDay);
        if(byStaffIdAndYearAndMonthOfDay != null){
            return Result.error(CodeMsg.ADMIN_SALARY_MONTH_EXIST);
        }

        salary.setMonthOfDay(monthOfDay);
        salary.setYear(year);
        salary.setStaff(staff);
        salary.setDepartment(staff.getDepartment());

        setSalary(salary);

        if(salaryService.save(salary) == null){
            return Result.error(CodeMsg.ADMIN_SALARY_SAVE_ERROR);
        }

        return Result.success(true);
    }

    public Salary setSalary(Salary salary){

        BigDecimal basicWage = salary.getStaff().getSalary();

        int daysByYearMonth = DateUtil.getDaysByYearMonth(salary.getYear(), salary.getMonthOfDay());

        //该月平均每日工资
        BigDecimal dayBasicWage = basicWage.divide(BigDecimal.valueOf(daysByYearMonth),4,BigDecimal.ROUND_HALF_UP);

        //查询工资项
        WageItem wageItem = wageItemService.findFirstByOrderByCreateTimeDesc();
        //餐饮补贴
        BigDecimal foodSubsidy = BigDecimal.ZERO;
        //交通补贴
        BigDecimal travelAllowance = BigDecimal.ZERO;
        //出差补贴
        BigDecimal missionAllowance = BigDecimal.ZERO;
        //加班奖金
        BigDecimal overTimeBonus = BigDecimal.ZERO;
        //全勤奖金
        BigDecimal attendanceBonus = BigDecimal.ZERO;
        Department findById = departmentService.find(department.getId());
        //讲提交的用户信息指定字段复制到已存在的department对象中,该方法会覆盖新字段内容
        BeanUtils.copyProperties(department, findById, "id","createTime","updateTime");

        if(departmentService.save(findById) == null){
            return Result.error(CodeMsg.ADMIN_DEPARTMENT_EDIT_ERROR);
        }

        operaterLogService.add("编辑部门,部门名:" + department.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{
            departmentService.delete(id);
        }catch (Exception e){
            return Result.error(CodeMsg.ADMIN_DEPARTMENT_DELETE_ERROR);
        }
        operaterLogService.add("删除部门,部门ID:" + id);
        return Result.success(true);
    }
}
package com.yuanlrc.base.controller.admin;

        }

        attendanceList = attendanceList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
                () -> new TreeSet<>(Comparator.comparing(f -> f.getJobNumber() + f.getYear() + f.getMonthOfDay()))), ArrayList::new));

        try
        {
            attendanceService.saveAll(attendanceList);
        }catch (Exception e)
        {
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_LIST_ADD_ERROR);
        }

        return Result.success(true);
    }

}
package com.yuanlrc.base.controller.admin;

/**
 * 系统控制器

	@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";
	}
	
	/**
	 * 员工添加表单提交处理
	 * @param staff
	 * @return
     * @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);
        }

        int daysByYearMonth = DateUtil.getDaysByYearMonth(salary.getYear(), salary.getMonthOfDay());

        //该月平均每日工资
        BigDecimal dayBasicWage = basicWage.divide(BigDecimal.valueOf(daysByYearMonth),4,BigDecimal.ROUND_HALF_UP);

        //查询工资项
        WageItem wageItem = wageItemService.findFirstByOrderByCreateTimeDesc();
        //餐饮补贴
        BigDecimal foodSubsidy = BigDecimal.ZERO;
        //交通补贴
        BigDecimal travelAllowance = BigDecimal.ZERO;
        //出差补贴
        BigDecimal missionAllowance = BigDecimal.ZERO;
        //加班奖金
        BigDecimal overTimeBonus = BigDecimal.ZERO;
        //全勤奖金
        BigDecimal attendanceBonus = BigDecimal.ZERO;
        //迟到罚金
        BigDecimal latePenalty = BigDecimal.ZERO;
        //早退罚金
        BigDecimal leaveEarlyFine = BigDecimal.ZERO;
        //病假罚金
        BigDecimal sick = BigDecimal.ZERO;
        //事假罚金
        BigDecimal personalLeave = BigDecimal.ZERO;
        //缺勤罚金
        BigDecimal absence = BigDecimal.ZERO;
        //绩效奖金
        BigDecimal performance = BigDecimal.ZERO;
        //年度考核奖金
        BigDecimal annualAssessmentBonus = BigDecimal.ZERO;

        if(wageItem != null){
            foodSubsidy = wageItem.getFoodSubsidy();
            travelAllowance = wageItem.getTravelAllowance();
            missionAllowance = wageItem.getMissionAllowance();
            overTimeBonus = wageItem.getOverTimeAllowance();
            attendanceBonus = wageItem.getAttendanceBonus();
            latePenalty = wageItem.getLatePenalty().negate();//转为负数
            leaveEarlyFine = wageItem.getLeaveEarlyFine().negate();//转为负数
            performance = wageItem.getPerformance();
            annualAssessmentBonus = wageItem.getAnnualAssessmentBonus();
        }

	{
		String checkIdCard = "^(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9]|X)$";
		Pattern c = Pattern.compile(checkIdCard);
		Matcher m2 = c.matcher(card);
		if (m2.matches()){
			return true;
		}
		return false;
	}

	public static String getMac(){
		String mac = "";
		try {
			InetAddress localHost = InetAddress.getLocalHost();
			byte[] hardwareAddress = NetworkInterface.getByInetAddress(localHost).getHardwareAddress();
			StringBuffer sb = new StringBuffer("");
			for(int i=0; i<hardwareAddress.length; i++) {
				//字节转换为整数
				int temp = hardwareAddress[i]&0xff;
				String str = Integer.toHexString(temp);
				//System.out.println("每8位:"+str);
				if(str.length()==1) {
					sb.append("0"+str);
				}else {
					sb.append(str);
				}
			}
			mac = sb.toString();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return mac.toUpperCase();
	}

}
package com.yuanlrc.base.interceptor.admin;

        }

        //基本工资
        salary.setBasicWage(basicWage.setScale(2,BigDecimal.ROUND_HALF_UP));
        //餐饮补贴
        salary.setFoodSubsidy(foodSubsidy.setScale(2,BigDecimal.ROUND_HALF_UP));
        //岗位补贴
        salary.setPositionSubsidy((salary.getStaff().getPosition().getSubsidy()).setScale(2,BigDecimal.ROUND_HALF_UP));
        //交通补贴
        salary.setTravelAllowance(travelAllowance.setScale(2,BigDecimal.ROUND_HALF_UP));
        //出差补贴
        salary.setMissionAllowance(missionAllowance.setScale(2,BigDecimal.ROUND_HALF_UP));

        //工龄奖金
        BigDecimal yearsBonus = BigDecimal.ZERO;

        //获取工龄
        int year = DateUtil.getYear(salary.getStaff().getEntryTime());
        WorkingYears workingYears = workingYearsService.findByYears(year);
        if(workingYears != null){
            yearsBonus = workingYears.getSubsidy();
        }
        //工龄奖金
        salary.setYearsBonus(yearsBonus.setScale(2,BigDecimal.ROUND_HALF_UP));

        //职称奖金
        salary.setJobTitleBonus((salary.getStaff().getJobTitle().getBonus()).setScale(2,BigDecimal.ROUND_HALF_UP));
        //加班奖金
        salary.setOverTimeBonus(overTimeBonus.setScale(2,BigDecimal.ROUND_HALF_UP));
        //全勤奖金
        salary.setAttendanceBonus(attendanceBonus.setScale(2,BigDecimal.ROUND_HALF_UP));
        //迟到罚金
        salary.setLatePenalty(latePenalty.setScale(2,BigDecimal.ROUND_HALF_UP));
        //早退罚金
        salary.setLeaveEarlyFine(leaveEarlyFine.setScale(2,BigDecimal.ROUND_HALF_UP));
        //病假
        salary.setSick(sick.setScale(2,BigDecimal.ROUND_HALF_UP));
        //事假
        salary.setPersonalLeave(personalLeave.setScale(2,BigDecimal.ROUND_HALF_UP));
        //缺勤
        salary.setAbsence(absence.setScale(2,BigDecimal.ROUND_HALF_UP));

        //查询绩效
        PerformanceAssessment performanceAssessment = peranceAssmentService.findByYearAndMonthAndStaffId(salary.getYear(), salary.getMonthOfDay(), salary.getStaff().getId());
        if(performanceAssessment != null){
            Double rate = performanceAssessment.getGrade().getRate();
            performance = BigDecimalUtil.multiply(performance,rate);
	private MenuService menuService;
	
	@Autowired
	private OperaterLogService operaterLogService;
	
	@Autowired
	private RoleService roleService;
	
	/**
	 * 分页搜索角色列表
	 * @param model
	 * @param role
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model,Role role,PageBean<Role> pageBean){
		model.addAttribute("title", "角色列表");
		model.addAttribute("name", role.getName());
		model.addAttribute("pageBean", roleService.findByName(role, pageBean));
		return "admin/role/list";
	}
	
	/**
	 * 角色添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		List<Menu> findAll = menuService.findAll();
		model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));
		model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));
		model.addAttribute("thirdMenus",MenuUtil.getThirdMenus(findAll));
		return "admin/role/add";
	}
	
	/**
	 * 角色添加表单提交处理
	 * @param role
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
            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());

            CodeMsg validate = ValidateEntityUtil.validate(attendance);
            if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
                return Result.error(validate);
            }

            attendance.setLeaveDays(attendance.getDaysSick() + attendance.getPersonalLeaveDays());

            int daysByYearMonth = DateUtil.getDaysByYearMonth(year, monthOfDay);
            if(daysOver(attendance,daysByYearMonth)){
                CodeMsg codeMsg = CodeMsg.ADMIN_DAYS_ERROR;
                codeMsg.setMsg("Excel第" + line + "行"+codeMsg.getMsg());
                return Result.error(codeMsg);
            }
     * 添加页面
     * @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";
    }
    @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())){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_JOB_NUMBER_EMPTY);
        }

        Staff byJobNumber = staffService.findByJobNumberAndIsStatus(attendance.getJobNumber());
        if(byJobNumber == null){
            return Result.error(CodeMsg.ADMIN_JOB_NUMBER_EMPTY);
        }

        if(attendance.getMonth().getTime() > new Date().getTime()){
            return Result.error(CodeMsg.ADMIN_DATE_ERROR);
        }

        Calendar cal = Calendar.getInstance();
        cal.setTime(attendance.getMonth());
        int month = cal.get(Calendar.MONTH)+1;
        int year = cal.get(Calendar.YEAR);

        if(attendanceService.findByJobNumberAndYearAndMonthOfDay(attendance.getJobNumber(),year,month)!= null){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_MONTH_EXIST);
            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);
                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);
        Integer month = performanceAssessment.getMonth();
        if(month<=0){
           return Result.error(CodeMsg.ADMIN_PERFORMANCE_MONTH_ERROR);
       }
        PerformanceAssessment assessment = peranceAssmentService.findByYearAndMonthAndStaffId(year, month,staff.getId());
        if(assessment!=null){
            return Result.error(CodeMsg.ADMIN_PERFORMANCE_EXIST_ERROR);
        }
        JSONArray array = JSONObject.parseArray(assTarget);
        double totalScore=0;
        double weight=0;
        for(int i=0;i<array.size();i++){
            Object  assessmentTarget =  array.getJSONObject(i);
            Object targetId = ((com.alibaba.fastjson.JSONObject) assessmentTarget).get("targetId");
            Object currentScore = ((com.alibaba.fastjson.JSONObject) assessmentTarget).get("score");
            String idl = targetId.toString();
            AssessTarget assessTarget = assessTargetService.find(Long.valueOf(idl));
            Integer targetScore = assessTarget.getScore();
            String score = currentScore.toString();
            totalScore += Double.parseDouble(score) *targetScore.doubleValue();
            weight+=targetScore.doubleValue();
        }
        double finalScore = totalScore / weight;
        BigDecimal bigDecimal = new BigDecimal(0.0d);
        try {
            bigDecimal = new BigDecimal(finalScore);
        } catch (Exception e) {
            e.printStackTrace();
        }
        performanceAssessment.setPercentage(bigDecimal);
        GradeEnum gradeEnum = GradeEnum.countGrade(finalScore);
        performanceAssessment.setGrade(gradeEnum);
        if(peranceAssmentService.save(performanceAssessment)==null){
            return Result.error(CodeMsg.ADMIN_PERFORMANCE_ADD_ERROR);
        }
        return Result.success(true);
    }

    /**
     * 添加年度考核
     * @param id
     * @return
     */
    @RequestMapping("/annual_add")
    public String annualAdd(Model model,@RequestParam(name="id",required=true)Long id){
        Staff staff = staffService.findByIdAndIsStatus(id, StaffStatus.ON_THE_JOB.getCode());
        if(staff == null){
                && attendance.getLeaveEarlyTimes() == 0 && attendance.getAbsenceDays() == 0){
            attendance.setIsStatus(IsStatus.IS_ATTENDANCE);
        }else{
            attendance.setIsStatus(IsStatus.NOT_ATTENDANCE);
        }
        attendance.setLeaveDays(attendance.getDaysSick() + attendance.getPersonalLeaveDays());
        BeanUtils.copyProperties(attendance,findById,"id","createTime","updateTime","staff","year","monthOfDay","department","jobNumber");

        if(attendanceService.save(findById) == null){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_EDIT_ERROR);
        }

        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{
            attendanceService.delete(id);
        }catch (Exception e){
            return Result.error(CodeMsg.ADMIN_ATTENDANCE_DELETE_ERROR);
        }
        return Result.success(true);
    }

    /**
     * 判断天数是否超出
     * @param attendance
     * @param daysByYearMonth
     * @return
     */
    public Boolean daysOver(Attendance attendance,int daysByYearMonth){
        if(attendance.getDaysSick() + attendance.getPersonalLeaveDays() + attendance.getAbsenceDays() +
                attendance.getTravelDays() > daysByYearMonth){
            return true;
        }
        return false;
    }

    /**
     */
    @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
     */
    @RequestMapping("/edit")
    public String edit(Model model, @RequestParam("id")Long id){
        model.addAttribute("position",positionService.find(id));

/**
 * 后台岗位管理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")

/**
 * 后台岗位管理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
		if(maxId<10){
            jobNumber=jobNumber+"0"+maxId;
        }else{
            jobNumber=jobNumber+maxId;
        }
        staff.setJobNumber(jobNumber);
        //到这说明一切符合条件,进行数据库新增
		if(staffService.save(staff) == null){
			return Result.error(CodeMsg.ADMIN_STAFF_ADD_ERROR);
		}
		operaterLogService.add("添加员工,员工名:" + staff.getName());
		return Result.success(true);
	}

	@RequestMapping(value="/edit_self",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit_self(Staff staff, HttpServletRequest request){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(staff);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		if(!StringUtil.isMobile(staff.getMobile())){
			return Result.error(CodeMsg.ADMIN_STAFF_MOBILE_ERROR);
		}
		if(!StringUtil.isMobile(staff.getEmergencyMobile())){
			return Result.error(CodeMsg.ADMIN_STAFF_EMERGENCY_MOBILE_ERROR);
		}
		if(staff.getId() == null || staff.getId().longValue() <= 0){
			return Result.error(CodeMsg.ADMIN_STAFF_NOT_EXIST_ERROR);
		}
		//到这说明一切符合条件,进行数据库保存
		Staff findById = staffService.find(staff.getId());
		//讲提交的员工信息指定字段复制到已存在的staff对象中,该方法会覆盖新字段内容
		BeanUtils.copyProperties(staff, findById, "id","createTime","updateTime","jobNumber",
				"role","educationEnum","jobTitle",
				"position","department","entryTime");
		Staff saveStaff = staffService.save(findById);
		if(saveStaff == null){
			return Result.error(CodeMsg.ADMIN_STAFF_EDIT_ERROR);
		}
		Staff loginedStaff = SessionUtil.getLoginedStaff();
		if(loginedStaff != null){
			if(loginedStaff.getId().longValue() == findById.getId().longValue()){
				loginedStaff.setHeadPic(saveStaff.getHeadPic());
				loginedStaff.setName(saveStaff.getName());
				loginedStaff.setMobile(saveStaff.getMobile());
				loginedStaff.setEmergencyContact(saveStaff.getEmergencyContact());
				loginedStaff.setEmergencyMobile(saveStaff.getEmergencyMobile());
				loginedStaff.setAge(saveStaff.getAge());
				loginedStaff.setSex(saveStaff.getSex());
				SessionUtil.set(SessionConstant.SESSION_STAFF_LOGIN_KEY,loginedStaff);
			}
		}
    @ResponseBody
    public Result<Boolean> add(Department department){

        //用统一验证实体方法验证是否合法
        CodeMsg validate = ValidateEntityUtil.validate(department);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }

        if(department.getNote().length() > 50){
            return Result.error(CodeMsg.DEPARTMENT_LENGTH_EXIST);
        }

        if(departmentService.isExistName(department.getName(),0l)){
            return Result.error(CodeMsg.ADMIN_DEPARTMENT_NAME_EXIST);
        }

        if(departmentService.save(department) == null){
            return Result.error(CodeMsg.ADMIN_DEPARTMENT_SAVE_ERROR);
        }
        operaterLogService.add("添加部门,部门名:" + department.getName());

        return Result.success(true);
    }

    /**
     * 编辑页面
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/edit")
    public String edit(Model model,@RequestParam(name="id",required=true)Long id){
        model.addAttribute("department",departmentService.find(id));
        return "/admin/department/edit";
    }

    /**
     * 编辑表单提交处理
     * @param department
     * @return
     */
    @RequestMapping(value = "/edit",method = RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> edit(Department department){
        //用统一验证实体方法验证是否合法

请添加图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值