目 录
1引言………………………………………………………………………………1
1.1研发背景……………………………………………………………………………1
1.2研发的目的及意义………………………………………………………………1
1.3国内外研发现状……………………………………………………………………1
2项目概述………………………………………………………………………………1
3系统分析………………………………………………………………………………2
3.1系统可行性分析……………………………………………………………………2
3.2系统流程分析………………………………………………………………………3
4系统设计………………………………………………………………………………5
4.1系统功能模块设计………………………………………………………………5
4.2物理数据模型设计………………………………………………………………7
5系统实现………………………………………………………………………………8
5.1 公共模块…………………………………………………………………………9
5.2 员工资料…………………………………………………………………………10
5.3.人事管理…………………………………………………………………………11
5.4工资管理…………………………………………………………………………12
5.5统计管理…………………………………………………………………………13
5.6系统管理…………………………………………………………………………13
6系统测试…………………………………………………………………………16
6.1 软件测试的目的…………………………………………………………………16
6.2 功能测试…………………………………………………………………………16
6.3 测试结论…………………………………………………………………………17
结束语…………………………………………………………………………17
参考文献…………………………………………………………………………19
致 谢…………………………………………………………………………20
2项目概述
人事管理系统功能包括人事通讯,员工信息,人事考评,奖惩,培训管理,薪资管理,统计分析,和系统管理六大模块,对应人事工作基本流程:新员工入职档案建立,调动,辞职,员工信息的查询及工资管理等方面.系统管理可以根据不同的角色分配菜单权限设置,不同的用户授予不同角色,对人事结构,单位结构进行整体调配设置.在线聊天可以实现操作员之间讯息的及时通讯.
项目基于MVVM的前后端分离开发模式进行开发.MVVM即模型(Model)-视图(View)-视图模型(View Model),实现了数据视图的双向绑定.相对于MVC模式和MVP来说,MVVM是一个比较新的开发架构,它是一种将MVP模式与WPF相结合应用方式发展演变而成的新型开发架.[1]
前后端分离是指将前端和后端从之前的全部由后端负责中分离开来,不再共用一个Server,前端作为一个独立Serve存在.[2]前后端通过接口使用HTTP协议交互,本项目使用vu实体属性outer做前端路由处理.页面跳转不在由后端处理,前后端只是数据的交互.前后端分离的好处在于降低了前后端的耦合性.当面对不同的硬件场景时,需要构建不同的界面,前后端分离之后,只需要扩展前端项目即可,不需要修改后端服务.
在动态权限处理方面,使用安全框架Spring Security,基于RBAC(Role-Based Access Control )角色的访问控制模型,由该模型主要由鉴权和授权构成,鉴权基于Servlet中Filter原理处理,授权由系统管理员操作.RBAC 的主要思想是:权限是和角色相关的,而用户则被分配相应的角色作为其成员,这样就大大简化了权限的管理.[3]
package com.liruilong.hros.service;
import com.liruilong.hros.mapper.AppraiseMapper;
import com.liruilong.hros.model.Appraise;
import com.liruilong.hros.model.Employeetrain;
import com.liruilong.hros.service.utils.LogUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Author: Liruilong
*/
@Service
public class AppraiseService {
@Autowired
AppraiseMapper appraiseMapper;
@Autowired
OplogService oplogService;
public Integer addAppraise(Appraise appraise) {
oplogService.addOpLog(LogUtils.addLog((byte) 10,"添加员工考评eid:" + appraise.getEid()));
return appraiseMapper.insertSelective(appraise);
}
public Integer deleteAppraise(Integer eid, Integer id) {
oplogService.addOpLog(LogUtils.addLog((byte) 10,"删除员工考评eid:" + eid));
return appraiseMapper.deleteAppraise(eid, id);
}
public Integer updateAppraise(Appraise appraise) {
oplogService.addOpLog(LogUtils.addLog((byte) 10,"更新员工考评eid:" + appraise.getEid()));
return appraiseMapper.updateByPrimaryKeySelective(appraise);
}
public Integer addEmploteeaByPge(Appraise appraise, Integer[] ids) {
oplogService.addOpLog(LogUtils.addLog((byte) 10,"批量添加员工考评" ));
return appraiseMapper.addEmploteeaByPge(appraise, ids);
}
}