ssm人事管理信息系统源码和文档046
开发工具:idea
数据库mysql5.7+
数据库链接工具:navcat,小海豚等
技术:ssm
(一)课题目的及意义(含国内外的研究现状分析)
(1)人事管理系统的国外的发展
人事管理系统的发展经过三个阶段的发展。
人事管理系统的发展历史可以追溯到20世纪60年代末期。由于当时计算机技术已经进入实用阶段,同时大型企业用手工来计算和发放薪资既费时费力又容易出差错,为了解决这个矛盾,第一代人事管理系统应运而生。
第二代的人事管理系统出现于20世纪70年代末。由于计算机技术的飞速发展,无论是计算机的普及性,还是计算机系统工具和数据库技术的发展,都为HRMS的阶段性发展提供了可能[2]。
人事管理系统的革命性变革出现在20世纪90年代末。第三代HRMS的特点是从人力资源管理的角度出发,用集中的数据库将几乎所有与人力资源相关的数据统一管理起来。友好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得人力资源管理人员得以摆脱繁重的日常工作。
(2)人事管理系统的国内的发展
随着我国企业的规模不断扩大,员工数量急剧增加,有员工的各种信息也成倍增长。面对庞大的信息量,有必要开发人事管理信息系统来进行满足用户和管理员的需求。通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。
中国是世界上人口最多的国家,目前有近14亿人口,劳动力人口有近8亿,约占界劳动人口的25%(《中国统计年鉴》2008数据)。而对于如此庞大的劳动力人口,企业人事管理信息数字化已经成为趋势。
我国的管理信息系统大发展是在80年代末90年代初,国家相继建立起了“金卡”、“金关”、“金桥”工程,多数企事业单位建立了局域网和广域网管理信息系统。随着世界经济和我国经济逐步向知识经济迈进,无论是基于工业经济的管理信息系统,还有面向少数专家和管理人员的专家系统(ES)或决策支持系统(SS),其处理对象、服务对象、自身的系统结构及处理能力都有了进一步的发展[3]。
(3)人事管理系统的研究现状
人事管理信息系统是进行信息的采集、存储、加工、维护和使用的系统。它是随着管理科学和技术科学的发展而形成的。人事管理信息系统的发展与计算机网络技术的发展是紧密相关的,随着Internet/Intranet技术的广泛应用,人事管理信息系统的体系结构也发生很大的变化,从以往基于数据访问及安全体系发展到当前的人事管理信息系统,其系统开发主要包括数据库的规划设计与维护和网站首页应用程序的开发两个方面。对于前者要求建立起的数据库具有完整性和一致性,且具有一定的数据安全性,而对于后者则要求程序界面友好、功能完备,容易使用,具有流行软件的操作习惯等特点。
进入21世纪,伴随着信息化的普及和互联网的快速发展,IT技术更广泛的应用于企业人事管理,如何提高人事部门的效率,降低人工成本,成为企业管理者重点关心的问题。目前,国内人事管理系统的开发技术相当成熟,主要原因在于人事管理系统本身具有业务清晰、数据处理规范等许多优点,为其实现计算机信息化提供了必要的优越条件。加上近十年来计算机技术的飞跃发展,以及国内各企业的高度重视,人事管理系统在国内基本上已进入了普及应用的阶段。国内近90%以上的公司和单位均开发并运行了人事管理信息系统,其他没有和正准备开发计算机应用或开发管理信息系统的公司和单位,也把人事管理系统作为其应用与开发的首要目标[4]。加上国家人事主管部门及国内计算机应用开发商的共同努力,国内目前己有多种通用的人事管理系统软件供企业单位选择使用。应该说,人事管理信息系统的开发与应用在国内已经进入了相对成熟期。
(4)研究目的意义
社会经济的迅速发展和科学技术的全面进步,计算机技术的飞速发展,以及计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。在信息技术快速发展的时代,企业发展与信息技术的关系日益密切,企业创新日益加快,信息化规划无疑将成为企业创新和发展过程中最重要的工作,也是企业发展的助推剂。各种信息化管理层出不穷,以前全是由人工管理的方法管理企业人事信息,这样存在很多缺点,和漏洞。随着企业的不断发展,企业员工数量大大的增加,为了很方便的管理好人才信息,使用人事管理软件来规范管理人事信息,大大提高了工作效率,节约了企业管理成本。
随着我们改革开发的不断深入,经济的飞速发展,企业要想生存发展,想在激烈的市场竞争中立于不败之地,没有现代化的管理万万不行的,人事管理信息系统的全面自动化、信息化,则是其中最重要的部分。为了加快企业信息化管理的步伐,提高内部人事管理的处理效率,建立人事管理信息系统已经变得十分必要。因此,有必要建立一个人事管理信息系统,使企业人事管理工作更规范,系统化,程序化,提高信息处理的速度,能够及时,准确,有效的管理人才信息。
本人事管理信息系统作为本次毕业设计的选题,在开发过程中可以提高本人的程序开发的实践能力,将理论知识运用到实践当中,掌握大学所学专业知识,为以后踏入社会做准备。
package com.controller;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.QingjiaEntity;
import com.service.QingjiaService;
import com.entity.view.QingjiaView;
import com.service.YonghuService;
import com.entity.YonghuEntity;
import com.utils.PageUtils;
import com.utils.R;
/**
* 请假
* 后端接口
* @author
* @email
* @date 2023-03-01
*/
@RestController
@Controller
@RequestMapping("/qingjia")
public class QingjiaController {
private static final Logger logger = LoggerFactory.getLogger(QingjiaController.class);
@Autowired
private QingjiaService qingjiaService;
@Autowired
private TokenService tokenService;
//级联表service
@Autowired
private YonghuService yonghuService;
//字典表map
Map<String, Map<Integer, String>> dictionaryMap;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
PageUtils page = qingjiaService.queryPage(params);
//字典表数据转换
List<QingjiaView> list =(List<QingjiaView>)page.getList();
ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
dictionaryMap = (Map<String, Map<Integer, String>>) servletContext.getAttribute("dictionaryMap");
for(QingjiaView c:list){
this.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
QingjiaEntity qingjia = qingjiaService.selectById(id);
if(qingjia !=null){
//entity转view
QingjiaView view = new QingjiaView();
BeanUtils.copyProperties( qingjia , view );//把实体数据重构到view中
//级联表
YonghuEntity yonghu = yonghuService.selectById(qingjia.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//字典表字典转换
ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
dictionaryMap = (Map<String, Map<Integer, String>>) servletContext.getAttribute("dictionaryMap");
this.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody QingjiaEntity qingjia, HttpServletRequest request) {
try {
logger.debug("save方法:,,Controller:{},,qingjia:{}", this.getClass().getName(), qingjia.toString());
qingjia.setCreateTime(new Date());
String role = String.valueOf(request.getSession().getAttribute("role"));
if ("用户".equals(role)) {
Integer userId = (Integer) request.getSession().getAttribute("userId");
qingjia.setYonghuId(userId);
qingjia.setQingjiaTypes(1);
}else if("管理员".equals(role)){
if(qingjia.getQingjiaTypes().intValue()!=1){
qingjia.setUpdateTime(new Date());
}
}
// 获取相差的天数
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(format.parse(qingjia.getOnday()));
long timeInMillis1 = calendar.getTimeInMillis();
calendar.setTime(format.parse(qingjia.getDownday()));
long timeInMillis2 = calendar.getTimeInMillis();
if (timeInMillis2 < timeInMillis1) {
return R.error("请假结束时间不得小于开始时间");
}
qingjia.setCreateTime(new Date());
Long betweenDays = (timeInMillis2 - timeInMillis1) / (1000L * 3600L * 24L);
qingjia.setQingjiaNumber(betweenDays.intValue());
qingjiaService.insert(qingjia);
} catch (ParseException e) {
e.printStackTrace();
}
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody QingjiaEntity qingjia, HttpServletRequest request) {
try {
logger.debug("update方法:,,Controller:{},,qingjia:{}", this.getClass().getName(), qingjia.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if ("用户".equals(role)) {
qingjia.setYonghuId((Integer) request.getSession().getAttribute("userId"));
}else{
qingjia.setUpdateTime(new Date());
}
// 获取相差的天数
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(format.parse(qingjia.getOnday()));
long timeInMillis1 = calendar.getTimeInMillis();
calendar.setTime(format.parse(qingjia.getDownday()));
long timeInMillis2 = calendar.getTimeInMillis();
if (timeInMillis2 < timeInMillis1) {
return R.error("请假结束时间不得小于开始时间");
}
Long betweenDays = (timeInMillis2 - timeInMillis1) / (1000L * 3600L * 24L);
qingjia.setQingjiaNumber(betweenDays.intValue());
qingjiaService.updateById(qingjia);
} catch (ParseException e) {
e.printStackTrace();
}
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
qingjiaService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
*字典表数据转换
*/
public void dictionaryConvert(QingjiaView qingjiaView){
//当前表的字典字段
if(StringUtil.isNotEmpty(String.valueOf(qingjiaView.getQingjiaTypes()))){
qingjiaView.setQingjiaValue(dictionaryMap.get("qingjia_types").get(qingjiaView.getQingjiaTypes()));
}
//级联表的字典字段
if(StringUtil.isNotEmpty(String.valueOf(qingjiaView.getBumenTypes()))){
qingjiaView.setBumenValue(dictionaryMap.get("bumen_types").get(qingjiaView.getBumenTypes()));
}
if(StringUtil.isNotEmpty(String.valueOf(qingjiaView.getZhiweiTypes()))){
qingjiaView.setZhiweiValue(dictionaryMap.get("zhiwei_types").get(qingjiaView.getZhiweiTypes()));
}
if(StringUtil.isNotEmpty(String.valueOf(qingjiaView.getSexTypes()))){
qingjiaView.setSexValue(dictionaryMap.get("sex_types").get(qingjiaView.getSexTypes()));
}
if(StringUtil.isNotEmpty(String.valueOf(qingjiaView.getPoliticsTypes()))){
qingjiaView.setPoliticsValue(dictionaryMap.get("politics_types").get(qingjiaView.getPoliticsTypes()));
}
}
}