Java项目:40 springboot月度员工绩效考核管理系统009

作者主页:舒克日记

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

项目介绍

本系统的功能分为管理员和员工两个角色

管理员的功能有:

(1)个人中心管理功能,添加管理员账号和修改登录密码;

(2)部门信息管理功能,对企业中的部门进行合理安排;

(3)员工信息管理功能,对企业中的员工的基本资料进行维护;

(4)绩效考核管理功能,发布员工的绩效考核,修改和删除不正确的绩效考核;

(5)岗位信息管理功能,对员工的岗位进行分配;

(6)公告信息管理功能,发布公告和管理公告;

(7)绩效绩效指标管理功能,需要考核的指标进行设置。

员工的功能有:

(1)个人资料管理功能,对本人基本信息进行维护;

(2)公告信息管理功能,实现在线查询公告;

(3)绩效考核管理功能,查询自己的考核信息;

(4)绩效指标管理功能,查询考核的指标。

环境要求

1.运行环境:最好是java jdk1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.tomcat环境:Tomcat7.x,8.X,9.x版本均可

4.硬件环境:windows7/8/10 4G内存以上;或者Mac OS;

5.是否Maven项目:是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven.项目

6.数据库:MySql5.7/8.0等版本均可;

技术栈

运行环境:jdk8 + tomcat9 + mysql5.7 + windows10

服务端技术:Spring Boot+ Mybatis +VUE

使用说明

1.使用Navicati或者其它工具,在mysql中创建对应sq文件名称的数据库,并导入项目的sql文件;

2.使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;

3.将项目中config-propertiesi配置文件中的数据库配置改为自己的配置,然后运行;

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码地址:http://codegym.top

运行截图

文档截图

image-20240305230741306

项目截图

1

6

5

4

3

2

8

代码

package com.controller;import com.alibaba.fastjson.JSONObject;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.FuzerenEntity;
import com.entity.view.FuzerenView;
import com.service.DictionaryService;
import com.service.FuzerenService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;/*** 负责人* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/fuzeren")
public class FuzerenController {private static final Logger logger = LoggerFactory.getLogger(FuzerenController.class);@Autowiredprivate FuzerenService fuzerenService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service/*** 后端列表*/@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"));}params.put("orderBy","id");PageUtils page = fuzerenService.queryPage(params);//字典表数据转换List<FuzerenView> list =(List<FuzerenView>)page.getList();for(FuzerenView c:list){//修改对应字典表字段dictionaryService.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);FuzerenEntity fuzeren = fuzerenService.selectById(id);if(fuzeren !=null){//entity转viewFuzerenView view = new FuzerenView();BeanUtils.copyProperties( fuzeren , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody FuzerenEntity fuzeren, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,fuzeren:{}",this.getClass().getName(),fuzeren.toString());Wrapper<FuzerenEntity> queryWrapper = new EntityWrapper<FuzerenEntity>().eq("username", fuzeren.getUsername()).or().eq("fuzeren_phone", fuzeren.getFuzerenPhone()).or().eq("fuzeren_id_number", fuzeren.getFuzerenIdNumber());;logger.info("sql语句:"+queryWrapper.getSqlSegment());FuzerenEntity fuzerenEntity = fuzerenService.selectOne(queryWrapper);if(fuzerenEntity==null){fuzeren.setCreateTime(new Date());fuzeren.setPassword("123456");//  String role = String.valueOf(request.getSession().getAttribute("role"));//  if("".equals(role)){//      fuzeren.set//  }fuzerenService.insert(fuzeren);return R.ok();}else {return R.error(511,"账户或者身份证号或者手机号已经被使用");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody FuzerenEntity fuzeren, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,fuzeren:{}",this.getClass().getName(),fuzeren.toString());//根据字段查询是否有相同数据Wrapper<FuzerenEntity> queryWrapper = new EntityWrapper<FuzerenEntity>().notIn("id",fuzeren.getId()).andNew().eq("username", fuzeren.getUsername()).or().eq("fuzeren_phone", fuzeren.getFuzerenPhone()).or().eq("fuzeren_id_number", fuzeren.getFuzerenIdNumber());;logger.info("sql语句:"+queryWrapper.getSqlSegment());FuzerenEntity fuzerenEntity = fuzerenService.selectOne(queryWrapper);if("".equals(fuzeren.getFuzerenPhoto()) || "null".equals(fuzeren.getFuzerenPhoto())){fuzeren.setFuzerenPhoto(null);}if(fuzerenEntity==null){//  String role = String.valueOf(request.getSession().getAttribute("role"));//  if("".equals(role)){//      fuzeren.set//  }fuzerenService.updateById(fuzeren);//根据id更新return R.ok();}else {return R.error(511,"账户或者身份证号或者手机号已经被使用");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());fuzerenService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {FuzerenEntity fuzeren = fuzerenService.selectOne(new EntityWrapper<FuzerenEntity>().eq("username", username));if(fuzeren==null || !fuzeren.getPassword().equals(password)) {return R.error("账号或密码不正确");}//  // 获取监听器中的字典表// ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();// Map<String, Map<Integer, String>> dictionaryMap= (Map<String, Map<Integer, String>>) servletContext.getAttribute("dictionaryMap");// Map<Integer, String> role_types = dictionaryMap.get("role_types");// role_types.get(yonghu.getRoleTypes());String token = tokenService.generateToken(fuzeren.getId(),username, "fuzeren", "负责人");R r = R.ok();r.put("token", token);r.put("role","负责人");r.put("username",fuzeren.getFuzerenName());r.put("tableName","fuzeren");r.put("userId",fuzeren.getId());return r;}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody FuzerenEntity fuzeren){//    	ValidatorUtils.validateEntity(user);if(fuzerenService.selectOne(new EntityWrapper<FuzerenEntity>().eq("username", fuzeren.getUsername()).orNew().eq("fuzeren_phone",fuzeren.getFuzerenPhone()).orNew().eq("fuzeren_id_number",fuzeren.getFuzerenIdNumber())) !=null) {return R.error("账户已存在或手机号或身份证号已经被使用");}fuzeren.setCreateTime(new Date());fuzerenService.insert(fuzeren);return R.ok();}/*** 重置密码*/@GetMapping(value = "/resetPassword")public R resetPassword(Integer  id){FuzerenEntity fuzeren = new FuzerenEntity();fuzeren.setPassword("123456");fuzeren.setId(id);fuzerenService.updateById(fuzeren);return R.ok();}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrFuzeren(HttpServletRequest request){Integer id = (Integer)request.getSession().getAttribute("userId");FuzerenEntity fuzeren = fuzerenService.selectById(id);return R.ok().put("data", fuzeren);}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/518709.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter高效组织接口自动化用例

1、善用“逻辑控制器”中的“简单控制器”。可以把简单控制器像文件夹一样使用&#xff0c;通过它来对用例进行分类归档&#xff0c;方便后续用例的调试和执行。 2、同编写测试用例一样&#xff0c;这里的接口测试用例应该进行唯一性编号&#xff0c;这样在运行整个用例计划出现…

【ts-node】基于Typescript开发Node项目的tsconfig.json文件的配置【根据不同的Node版本配置】

第一步&#xff1a;安装对应Node版本的tsconfig.js文件 第二步&#xff1a;添加到自己的tsconfig.json: "extends": "tsconfig/node16/tsconfig.json" 最终的配置如下&#xff1a; {"extends": "tsconfig/node16/tsconfig.json",…

【CSP试题回顾】201703-2-学生排队

CSP-201703-2-学生排队 解题思路 初始化队列&#xff1a; 初始时&#xff0c;学生按照学号从小到大顺序排队&#xff0c;即学号1的学生在最前面&#xff0c;学号n的学生在最后面。使用一个向量&#xff08;vector&#xff09;myQueue来模拟这个队列&#xff0c;初始填充为1, 2…

Android Framework 通过脚本动态修改应用私有文件执行权限

你只活一次 要悦己 脚本配置 Android_source/device/sprd/***/test/test_chmod.rc service test_chmod /vendor/bin/test_chmod.shuser rootdisabledoneshoton property:sys.test_chmodtruestart test_chmodAndroid_source/device/sprd/***/test/test_chmod.sh #!/system/bin/…

第一套试卷大题

1.邻接矩阵和邻接表的写法&#xff1a; **介绍&#xff1a;**该图是一个无向图&#xff0c;所以邻接矩阵一定是对称的&#xff0c;而邻接表某节点的边数为无向图某节点的连接数 无向图的邻接矩阵&#xff1a; 无向图的邻接表&#xff08;不唯一&#xff09;&#xff1a; 根据无…

【CSP试题回顾】201703-1-分蛋糕

CSP-201703-1-分蛋糕 解题代码 #include <iostream> using namespace std;int n, k, sumCake, cake, friendNum;int main() {cin >> n >> k;for (int i 0; i < n; i){cin >> cake;sumCake cake;if (sumCake > k || i n - 1) {friendNum;sum…

2024/3/7打卡公共子序列---动态规划问题

题目&#xff1a; 给定两个长度分别为 N 和 M 的字符串 A 和 B&#xff0c;求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为 N 的字符串&#xff0c;表示字符串 A。 第三行包含一个长度为 M 的字符串&am…

HiWoo Box数据远程采集模块

在数字化浪潮中&#xff0c;数据远程采集模块成为了推动工业转型升级的关键力量。作为工业物联网边缘网关&#xff0c;HiWoo Box网关的数据远程采集模块以其卓越的性能和可靠性&#xff0c;正助力企业实现数字化转型和智能化升级。下面&#xff0c;我们将从以下几个方面来探讨H…

✅图片上传组件使用

简述 图片压缩、图片预览、图片多图上传、默认高清压缩 前情提示 暂仅支持:bmp, gif, jpg, jpeg, png格式,暂不支持svg、webp等格式【升级后支持】 一只哈基米~~ 截图 使用方式(主打一个代码可直接复制) 单张图:缩略图、头像、营业执照 <a-form-model-item label=…

Jellyfin影音站点搭建并结合内网穿透实现远程观看本地影视资源

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

OPCUA 学习笔记-程序模型

无论是边缘控制器&#xff0c;还是PLC 中&#xff0c;除了信息模型之外&#xff0c;还有应用程序&#xff0c;这些程序可能是IEC61131-3 编写的程序&#xff0c;也可能是其它程序开发的可执行程序。 尽管OPCUA 描述模型能力很强&#xff0c;但是它缺乏算法的描述方式。但是OPCU…

如何将虚拟机设置成固定IP

问题描述&#xff1a; 在VMware虚拟机上部署的项目ip地址和数据库ip地址发生变动&#xff0c;导致mysql,nginx,redis等无法访问&#xff0c;要改配置又特别麻烦&#xff0c;而且下次可能还会变动。 解决方法&#xff1a; 将虚拟机ip地址配置成固定ip 关闭虚拟机&#xff0c;找…