SpringBoot+Vue实现前后端分离的企业人事管理系统

news/2024/7/24 6:30:56 标签: spring boot, vue.js, java, 企业人事管理系统, spring

文末获取源码

开发语言:Java

使用框架:spring boot>spring boot

前端技术:JavaScript、Vue.js 、css3

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:Java jdk8

Maven:apache-maven 3.8.1-bin

目录

一、前言介绍 

二、功能需求分析

2.1前台用户功能 

2.2后台管理员功能

三、前台员工功能

3.1前台登录模块

3.2企业资讯模块

3.3培训信息详细模块

3.4个人信息模块 

四、管理员功能模块

4.1员工管理模块

4.2企业资讯管理模块

4.3培训信息管理模块

4.4部门管理模块 

4.5离职信息管理模块 

五、员工功能模块 

5.1考勤信息管理模块 

5.2薪资信息管理模块 

六、部分核心代码 

6.1员工管理的逻辑代码 

6.2考勤信息界面逻辑代码 

6.3合同信息管理界面逻辑代码

6.4薪资信息管理界面关键代码

6.5用户登录的逻辑代码


一、前言介绍 

企业人事管理系统主要功能模块包括员工管理、考勤管理、工资管理、离职管理、培训管理等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用Springboot框架、B/S架构进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对企业人事管理系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现企业人事管理系统的部署与运行。

二、功能需求分析

企业人事管理系统的功能主要分为前台用户根据自己的需求进行注册登录:培训信息、合同信息、考勤信息、薪资信息、离职信息、奖罚信息查询操作。后台系统管理员主要对注册用户,员工管理,薪资管理,考勤管理,奖惩管理,离职管理等。 

2.1前台用户功能 

注册登录:用户填写个人信息,并验证手机号码进行账户注册,注册成功后方可登录系统。

考勤信息:员工可以在线上查看日常考勤信息。

薪资信息:员工的薪资发放明细。

培训信息:查看培训安排信息等。

企业资讯:可以进行企业资讯浏览。

个人信息:用户可以修改个人信息。

2.2后台管理员功能

修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。

员工管理:对企业员工信息进行维护管理等。

部门管理:对部门信息进行维护,添加、删除、修改信息。

考勤信息管理:对员工考勤数据项进行维护管理。

奖惩信息管理:对员工奖惩信息项进行维护管理。

培训信息管理:对员工培训信息进行维护管理。

企业资讯进行发布。

三、前台员工功能

3.1前台登录模块

3.2企业资讯模块

3.3培训信息详细模块

3.4个人信息模块 

 

四、管理员功能模块

4.1员工管理模块

4.2企业资讯管理模块

4.3培训信息管理模块

4.4部门管理模块 

4.5离职信息管理模块 

五、员工功能模块 

5.1考勤信息管理模块 

5.2薪资信息管理模块 

六、部分核心代码 

6.1员工管理的逻辑代码 

<%

String lb=request.getParameter("lb");

HashMap ext = new HashMap();  

new CommDAO().insert(request,response,"xinwentongzhi",ext,true,false,"xinwentongzhi_add.jsp?lb="+lb);

%>

6.2考勤信息界面逻辑代码 

<mapper namespace="com.project.demo.dao.base.BaseMapper">

    <select id="selectBaseList" resultType="java.util.LinkedHashMap">

        ${select}

    </select>

    <select id="selectBaseCount" resultType="Integer">

        ${count}

    </select>

    <select id="selectBaseOne" resultType="Object">

        ${select}

    </select>

    <update id="updateBaseSql">

        ${sql}

    </update>

    <delete id="deleteBaseSql">

        ${sql}

    </delete>

</mapper>

6.3合同信息管理界面逻辑代码

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

}

6.4薪资信息管理界面关键代码

@RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

6.5用户登录的逻辑代码

 * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

http://www.niftyadmin.cn/n/4553.html

相关文章

Linux基础IO(上)

这里写目录标题基础IO预备小知识文件封装的特性系统接口与封装文件封装的跨平台性文件与进程的关系什么叫做文件&#xff1f;回顾C语言相关文件IO什么叫做当前路径&#xff1f;C语言输出函数与文件打开方式以"w"的方式打开文件以"a"的方式打开文件以"…

异常的分类、产生、传递和处理(JAVA基础十)

目录一、异常1.1 概念1.2 异常的必要性二、异常分类2.1 错误2.2 异常三、异常产生和传递3.1 异常产生3.2 异常传递(这个其实是在打印信息中显示)四、异常处理【重点】4.1 try...catch...4.2 try...catch...finally...4.3 多重catch4.4 try…finally...4.5 小结五、声明、抛出异…

细说js变量、作用域和垃圾回收

基本类型和引用类型 在 JavaScript 中&#xff0c;数据类型可分为基本类型和引用类型&#xff0c; 基本类型有六种&#xff1a;Null&#xff0c;Undefined&#xff0c;String&#xff0c;Boolean&#xff0c;Number&#xff0c;Symbol&#xff1b; 而引用类型就是传说中的 Ob…

Python美化桌面—自制桌面宠物

前言 嗨嗨&#xff0c;最近就喜欢搞一些花里胡哨的东西 这不就开始折腾我的电脑了吗 浅浅搞个桌面小挂件&#xff08;桌面宠物&#xff09; 前期准备 开发工具 Python版本&#xff1a;3.6.4 相关模块&#xff1a; PyQt5模块&#xff1b; 以及一些Python自带的模块。 …

web前端期末大作业:基于html化妆品购物商城项目的设计与实现——化妆品官方网站设计与实现(HTML+CSS+JS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇

项目持续更新中&#xff1a; 仿抖音短视频APP专栏 目录 系统消息入库保存 MongoDB分页查询系统消息列表 删除系统消息 系统消息入库保存 这里还剩下最后一个点赞评论没有完成 这里如果点赞了你的评论&#xff0c;你们视频的封面是会被传回来的 找到CommentController的like…

Day795.监测上下文切换异常的命令排查工具BlockingQueue -Java 性能调优实战

监测上下文切换异常的命令排查工具&BlockingQueue Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于监测上下文切换异常的命令排查工具&BlockingQueue的内容。 一、使用系统命令查看上下文切换 1、Linux 命令行工具之 vmstat 命令 vmstat 是一款指定 采样周…

互联网热门词汇-媒体经常说的热门词

互联网热门词汇,媒体经常说的热门词: 下沉:开拓农村市场 天使轮:拉投资,骗到钱了 私域流量:就是朋友圈 KOL:关键意见领袖,有话语权,月入百万 KOC:微商,200个粉丝,到处发广告 B2C:开淘宝店 P2C:厂家直销 B2B:不卖给个人,卖个其他公司 C2C:自己卖点东西…