文末获取联系
开发语言:Java
使用框架:spring boot
前端技术:Vue 、css、element-ui、js
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven:apache-maven 3.8.1-bin
项目介绍:
该系统采用Java技术,而idea则是利用MySQL进行数据库的选择,在数据库的开发中,SQL是最高效、最简洁的,在这个体系中,idea是最安全、最稳定的。由于它的使用方便,无论是开发者,还是管理员,都可以轻松地使用它们。综合来看,解决技术上的问题是切实可行的。
员工主要的功能为:首页,个人中心,奖惩信息管理,晋升信息管理,员工薪资管理,员工绩效管理,员工考勤管理,请假申请管理等功能进行操作。
管理员主要功能为:首页,个人中心,员工管理,公告信息管理,奖惩信息管理,晋升信息管理,员工薪资管理,员工绩效管理,员工考勤管理,请假申请管理等功能。
功能介绍:
企业内部人员绩效量化管理系统在设计与实施时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能,减少各组件之间的联系,从而达到减少相互影响的目的。
系统主要功能是:首页,个人中心,员工管理,公告信息管理,奖惩信息管理,晋升信息管理,员工薪资管理,员工绩效管理,员工考勤管理,请假申请管理等功能。系统总体功能结构图如图3-1所示。
部分截图说明:
管理员功能模块实现
管理员进入主页面,主要功能包括对首页,个人中心,员工管理,公告信息管理,奖惩信息管理,晋升信息管理,员工薪资管理,员工绩效管理,员工考勤管理,请假申请管理等功能进行操作。管理员主页面如图4-1所示:
图4-1 管理员主界面
管理员点击员工管理。在员工页面输入工号,姓名和部门进行查询,新增或删除员工列表和统计报表;并根据需要对员工详细信息进行详情、修改或删除操作。如图4-2所示:
图4-2员工管理界面
管理员点击公告信息管理。在公告信息页面输入公告标题和公告类型进行查询,新增或删除公告信息列表;并根据需要对公告详细信息进行详情、修改或删除操作,如图4-3所示:
图4-3公告信息管理界面
管理员点击奖罚信息管理。在奖罚信息页面输入工号,姓名和奖罚项目进行查询,新增或删除奖罚信息列表;并根据需要对奖罚详细信息进行详情、修改或删除操作。如图4-4所示:
图4-4奖罚信息管理界面
管理员点击晋升信息管理。在晋升信息页面输入工号和姓名进行查询,新增或删除晋升信息列表;并根据需要对晋升详细信息进行详情,修改或删除操作。如图4-5所示:
图4-5晋升信息管理界面
管理员点击员工薪资管理。在员工薪资页面输入工号,姓名和工资月份进行查询,新增或删除员工薪资列表;并根据需要对员工薪资详细信息进行详情,修改或删除操作。如图4-6所示:
图4-6员工薪资管理界面
管理员点击员工绩效管理。在员工绩效页面输入选择工号和姓名进行查询,新增或删除员工绩效列表;并根据需要对员工绩效详细信息进行详情、修改或删除操作。如图4-7所示:
图4-7员工绩效管理界面
管理员点击员工考勤管理。在员工考勤页面输入选择工号,姓名和考勤月份进行查询,新增或删除员工考勤列表;并根据需要对员工考勤详细信息进行详情、修改或删除操作。如图4-8所示:
图4-8员工考勤管理界面
员工功能模块实现
员工进入主页面,主要功能包括首页,个人中心,奖惩信息管理,晋升信息管理,员工薪资管理,员工绩效管理,员工考勤管理,请假申请管理等。员工主页面如图4-9所示:
图4-9员工主界面
部分代码:
/**
* 上传文件映射表
*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
@Autowired
private ConfigService configService;
/**
* 上传文件
*/
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
/**
* 下载文件
*/
@IgnoreAuth
@RequestMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam String fileName) {
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = new File(upload.getAbsolutePath()+"/"+fileName);
if(file.exists()){
/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
getResponse().sendError(403);
}*/
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
} catch (IOException e) {
e.printStackTrace();
}
return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}