系统的采用Java语言、Windows10操作系统、Idea开发环境、MySQL数据库等。系统采用了较为成熟的spring+sprigMVC+mybatis框架技术;
该系统主要以系统管理员及普通用户两部分组成,其规划系统主要功能模块如下:
员工管理模块、部门管理模块、考勤管理模块、薪资管理模块、防疫管理模块、系统公告模块、招聘管理等模块;
员工管理模块、考勤管理模块、薪资管理模块、系统公告等模块;
主页
本模块主要是给所有员工登录后一个展示页面,登录后可在本页面进行快速签到打卡、快速请假、填写防疫报表、查看公司公告以及人员分布等情况,也可通过本页面进行密码修改。
以管理员身份登录以后即可进入管理员主页可在系统中管理的模块可分为员工管理、部门管理、变动档案、考勤管理、权限管理、薪资管理、防疫管理系统公告、招聘管理等模块。
以普通员工登录后仅可进行对部分模块的查询浏览操作,包括员工管理、考勤管理、薪资管理以及系统公告,如图5.2、图5.3所示。
图5.2 管理员主页
图5.3 普通员工主页
部分代码展示:
if (sysCode.equalsIgnoreCase(formCode) && formCode != null) {
try {
subject.login(token);
session.setAttribute("user", userByName);
session.setAttribute("role", roleName);
return "redirect:/main";
} catch (UnknownAccountException e) {
model.addAttribute("msg", "用户名错误");
return "forward:/user/toLogin";
} catch (IncorrectCredentialsException e) {
model.addAttribute("msg", "密码错误");
return "forward:/user/toLogin";
}
}
(3)员工管理
员工管理功能模块主要实现了系统管理员和普通员工在该模块后对员工管理模块进行不同的操作,系统管理员在本模块实现对现有在职员工信息的查询、修改、添加、删除以及批量删除等操作,员工基本信息包括用户名、密码、住址、邮箱、手机号、生日、部门ID,职务和权限角色等信息;对已离职员工信息仅支持删除操作;普通员工在本模块仅支持查询浏览操作,如图5.4所示。
图5.4 员工管理
部分代码展示:
int pageSize = 10;
PageInfo<User> pageInfo = userService.getUsersByPage(pageNum1,pageSize);
List<UserVo> userVos = pubService.changeVo(pageInfo);
model.addAttribute("state",1);
model.addAttribute("page1",pageInfo);
model.addAttribute("users",userVos);
return "emp/empsList"
(4)部门管理
系统管理员可以通过本功能实现对部门的管理,以供录入员工信息时提供数据支持,如图5.5所示。
图5.5 部门管理
部分代码展示:
List<Dept> list= new ArrayList<>();
if (redisUtil.hasKey(ALL_DEPT)){
log.info("从redis中获取数据.");
list = (List<Dept>) redisString.get(ALL_DEPT);
}else{
log.info("从mysql中获取数据.");
list= deptMapper.getDeptData();
log.info("将数据存入redis...");
redisString.set(ALL_DEPT, list);
}
return list
(5)变动档案
系统管理员可以通过本功能根据情况为员工办理离职操作;已离职员工在员工信息被删除前仍可登录系统,用于查看自己的考勤信息和工资发放情况等信息,如图5.6所示。
图5.6 变动档案页面
部分代码展示:
int pageSize = 10;
PageInfo<File> filePageInfo = adminService.getAllFiles(pageNum, pageSize);
List<FileDto> files = pubService.changeFileDto(filePageInfo);
model.addAttribute("filePage",filePageInfo);
model.addAttribute("files",files);
return "file/fileList";
(6)考勤管理
考勤管理模块分为签到管理和请假管理两个子模块,签到管理模块主要实现了系统管理员和普通员工在该模块进行快速签到操作以及对该模块进行不同出勤信息的查询,系统管理员可以不仅可以查询自己的出勤记录,也可查询所有出勤记录及所有迟到记录,普通员工则只能浏览和查询自己的出勤记录。请假管理模块主要实现了系统管理员和普通员工在该模块的请假程序,系统管理员或普通员工可在系统中提出请假申请单,并填写请假时间及请假事由,然后系统管理员可以对提出的请假申请进行审核批示。如图5.7、图5.8、图5.9所示。
图5.7 签到管理页面
图5.8 请假管理页面
图5.9 管理员请假审批页面
部分代码展示:
//管理端
PageInfo<Leave> pageInfo = timeService.getAllLeaves(pageNum, pageSize);
List<LeaveVo> leaveVos = pubService.changeLeaveVo(pageInfo);
PageInfo<Leave> leaveByState = timeService.getLeaveByState(pageNum, pageSize, 0);
model.addAttribute("leaves",leaveVos);
model.addAttribute("page",pageInfo);
model.addAttribute("unreadNum",leaveByState.getList().size())
(7)权限管理
权限管理模块主要实现了系统管理员在该模块对所有员工的角色信息进行一个快速的变更操作,可以把系统管理员降级为普通员工,普通员工也可晋升成为系统管理员,如图5.10所示。
图5.10 权限管理页面
部分代码展示:
int pageSize = 10;
PageInfo<Role> adminPage = adminService.getRolesByName(pageNum1,pageSize,"admin");
List<RoleDto> roleDtos = pubService.changeRoleDto(adminPage);
PageInfo<Role> userPage = adminService.getRolesByName(pageNum2, pageSize, "user");
List<RoleDto> roleDtos1 = pubService.changeRoleDto(userPage);
model.addAttribute("adminList",roleDtos);
model.addAttribute("userList",roleDtos1);
model.addAttribute("adminPage",adminPage);
model.addAttribute("userPage",userPage);
return "role/roleList"
(8)薪资管理
薪资管理模块主要实现了系统管理员和普通员工对工资管理模块进行不同的操作,系统管理员可以对所有员工的薪资信息进行添加、删除、查询等操作,其中包括基本工资,福利补贴,惩罚扣款等款项并可对其做出合计,以供每位员工自己查询操作。普通员工仅能浏览和查询自己薪资信息的功能,如图5.11、图5.12所示。
图5.11 薪资管理页面
图5.12 薪资添加页面
部分代码展示:
int pageSize = 10;
PageInfo<Wages> pageInfo = wagesService.getAll(pageNum, pageSize);
List<WagesDto> wagesDtos = pubService.changeWagesDto(pageInfo);
model.addAttribute("page",pageInfo);
model.addAttribute("wages",wagesDtos);
User user = (User) request.getSession().getAttribute("user");
List<WagesDto> self = wagesService.getSelf(user.getId());
model.addAttribute("self",self);
return "wages/wagesList";
(9)防疫管理
防疫管理模块主要实现了管理员和普通员工在系统主页可填写防疫报表来登记自己的体温,活动轨迹,身体状态等信息,管理员可通过本页面对所有员工登记的信息进行查询和浏览,如图5.13所示。
图5.13 防疫管理页面
部分代码展示:
PageInfo<Health> pageInfo;
Map<String, Object> data;
if (date == null){
pageInfo= healthService.getListByDate(pageNum, pageSize,new Date());
data= healthService.getDayData(new Date());
}else {
pageInfo= healthService.getListByDate(pageNum, pageSize,date);
data= healthService.getDayData(date);
}
List<HealthVo> healthVos = pubService.changeHealthVo(pageInfo);
model.addAttribute("page",pageInfo);
model.addAttribute("healths",healthVos);
model.addAttribute("params",data);
return "health/healthMain";
(10)系统公告
系统公告模块主要实现了系统管理员和普通员工在本模块对系统公告进行不同的操作,管理员可以对系统公告信息进行修改、发布、删除、查询等操作,系统管理员可根据公司安排按时发布一些公司的发展状况信息,节假日放假通知,考核通知以及疫情防范通知等内容供公司员工查阅和浏览;普通员工仅能对系统中发布的公告通知进行查阅和浏览,如图5.14、图5.15、图5.16所示。
图5.14 系统公告页面
图5.15 系统公告发布页面
图5.16 浏览系统公告页面
部分代码展示:
int pageSize = 10;
PageInfo<Notice> allNotice = adminService.getAllNotice(pageNum,pageSize);
List<NoticeVo> noticeVos = pubService.changeNoticeVo(allNotice);
model.addAttribute("notices",noticeVos);
model.addAttribute("page",allNotice);
return "notice/noticeList";
(11)招聘管理
招聘管理模块分为待招聘列表和人才库两个子模块,待招聘列表主要实现了管理员对求职者向本公司投递的求职信息进行一个登记,管理员会记录求职者的个人信息,求职岗位,期望薪资等信息以及可以对该求职者的面试状态进行操作,分为待面试,面试通过,面试未通过三个选项,面试结果可根据求职者所留的联系方式通知,未通过的求职信息将录入人才库;人才库主要是记录向公司投递了求职信息但是没通过面试的求职者信息,如图5.17、图5.18、图5.19所示。
图5.17 待招聘列表页面
图5.18 添加求职者信息页面
图5.19 人才库页面