基于javaweb+mysql的ssm+maven企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql)
项目介绍
本项目包含管理员与员工两种角色; 管理员角色包含以下功能: 个人信息查看,出勤管理,员工管理,奖励与罚款,工资设置,管理员登录,缴税设置,部门管理,银行工资发放等功能。
员工角色包含以下功能: 登录、公告管理、绩效查看、首页、修改密码、意见反馈、周报信息等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:是;
技术栈
- 后端:Spring SpringMVC MyBatis 2. 前端:JSP+css+javascript+bootstrap+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ssm_qyjxkhsys
/**
* 查看证件详细证件
*
* @param id 证件ID
* @return 结果
*/
@Deprecated
@ResponseBody
@RequestMapping("informationInfo")
public RemoteResult informationInfo(String id) {
Information information = this.informationService.findInformationInfo(id);
return ResultUtils.createDefResult(information);
}
}
/**
* 拦截所有RestController异常
*/
@ControllerAdvice(annotations = RestController.class)
public class MonitorAdvice {
public static final Logger logger = LoggerFactory.getLogger(MonitorAdvice.class);
@RequestMapping("/toList")
public String toEvalList(Model model) {
model.addAttribute("items", this.itemDao.getItems());
model.addAttribute("users", this.sysUserService.findAll());
return "page/jx/evalList";
}
/**
* 系统管理=公告管理主界面
*
* @return
*/
@RequestMapping("/toList2")
public String toEvalList2(Model model) {
return "page/jx/evalList2";
}
/**
* 数据列表
*
* @param query 分页数据
* @return 结果
*/
@ResponseBody
@RequestMapping("findEvals")
public RemoteResult findEval(EvalQuery query) {
if(super.getLoginer().getAdmin() != SysUser.ADMINISTRATOR){
query.setUserId(super.getLoginerId());
}
Pagination pagination = this.evalService.findEvals(query);
return ResultUtils.createDefResult(pagination);
}
/**
* 添加考核评估
*
* @param eval 考核评估
* @return
*/
@ResponseBody
@RequestMapping("createEval")
public RemoteResult createUser(Eval eval) {
this.evalService.createEval(eval);
return ResultUtils.createNullResult();
if (logger.isInfoEnabled()) {
logger.info("getIpAddress(HttpServletRequest) - getRemoteAddr - String ip=" + ip);
}
}
} else if (ip.length() > 15) {
String[] ips = ip.split(",");
for (int index = 0; index < ips.length; index++) {
String strIp = (String) ips[index];
if (!("unknown".equalsIgnoreCase(strIp))) {
ip = strIp;
break;
}
}
}
return ip;
}
}
/**
* 意见反馈的controller
*/
@Controller
@RequestMapping("/opinion")
public class OpinionController extends BaseController {
@Autowired
private OpinionService opinionService;
/**
* 系统管理=公告管理主界面
*
* @return
public RemoteResult createInformation(Information information) {
return ResultUtils.createNullResult();
}
/**
* 修改证件
*
* @param information 证件
* @return
*/
@ResponseBody
@RequestMapping("updateInformation")
public RemoteResult updateInformation(Information information) {
if (StringUtils.isEmpty(information.getId())) {
throw new CiBizException("请选择需要修改的证件");
}
return ResultUtils.createNullResult();
}
/**
* 统计原来公司名称
*
* @param query 关键字
* @return
*/
@ResponseBody
@RequestMapping("originalCompany")
public List<String> originalCompany(String query) {
return this.informationService.originalCompany(query);
}
/**
* 统计新公司名称
*
* @param query 关键字
* @return
*/
@ResponseBody
@RequestMapping("company")
public List<String> company(String query) {
return this.informationService.company(query);
}
/**
* 查看证件详细证件
*
* @param id 证件ID
* @return 结果
// RequestDelegate requestDelegate = RequestDelegate.create(request);
// //
// Class<?> clazz = ClassUtils.getUserClass(handler);
// if(clazz==HandlerMethod.class){
//
// HandlerMethod handlerMethod = (HandlerMethod) handler;
// Object controllerBean = handlerMethod.getBean();
// Class<? extends Object> controllerclazz = controllerBean.getClass();
//
// Grant controllerGrant=controllerclazz.getDeclaredAnnotation(Grant.class);
// Grant methodGrant = handlerMethod.getMethodAnnotation(Grant.class);
// if(controllerGrant!=null&&controllerGrant.force()){
// //全部强制授权
// if(methodGrant!=null&&methodGrant.force()){
// String[] properties = methodGrant.properties();
// if(ArrayUtils.getLength(properties)>0){
// return this.verify(requestDelegate, properties);//按指定属性签名
// }else{
// return this.verify(requestDelegate);//全部签名
// }
// }else{//全部签名
// return this.verify(requestDelegate);
// }
// }else{
// if(controllerGrant==null){
// if(methodGrant!=null&&methodGrant.force()){//签名当个方法
// String[] properties = methodGrant.properties();
// if(ArrayUtils.getLength(properties)>0){
// return this.verify(requestDelegate, properties);//按指定属性签名
// }else{
// //全部签名
// return this.verify(requestDelegate);
// }
// }
// }
//
// }
//
//
// }
return super.preHandle(request, response, handler);
}
public boolean verify(RequestDelegate requestDelegate,String... properties){
return false;
}
public boolean isSkipVerify() {
return skipVerify;
/**
* Whether to raise a {@link MethodArgumentNotValidException} on validation errors.
* @param binder the data binder used to perform data binding
* @param parameter the method argument
* @return {@code true} if the next method argument is not of type {@link Errors}.
*/
private boolean isBindExceptionRequired(WebDataBinder binder, MethodParameter parameter) {
int i = parameter.getParameterIndex();
Class<?>[] paramTypes = parameter.getMethod().getParameterTypes();
boolean hasBindingResult = (paramTypes.length > (i + 1) && Errors.class.isAssignableFrom(paramTypes[i + 1]));
return !hasBindingResult;
}
@Override
protected <T> Object readWithMessageConverters(NativeWebRequest webRequest,
MethodParameter methodParam, Type paramType) throws IOException, HttpMediaTypeNotSupportedException {
final HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
HttpInputMessage inputMessage = new ServletServerHttpRequest(servletRequest);
InputStream inputStream = inputMessage.getBody();
if (inputStream == null) {
return handleEmptyBody(methodParam);
}
else if (inputStream.markSupported()) {
inputStream.mark(1);
if (inputStream.read() == -1) {
return handleEmptyBody(methodParam);
}
inputStream.reset();
}
else {
final PushbackInputStream pushbackInputStream = new PushbackInputStream(inputStream);
int b = pushbackInputStream.read();
if (b == -1) {
return handleEmptyBody(methodParam);
}
else {
pushbackInputStream.unread(b);
}
inputMessage = new ServletServerHttpRequest(servletRequest) {
@Override
public InputStream getBody() throws IOException {
// Form POST should not get here
return pushbackInputStream;
}
};
}
return super.readWithMessageConverters(inputMessage, methodParam, paramType);
}
private Object handleEmptyBody(MethodParameter param) {
@RequestMapping("/sysRole")
public class SysRoleController extends BaseController {
@Autowired
private SysRoleService sysRoleService;
/**
* 系统管理=角色管理主界面
*
* @return
*/
@RequestMapping("/toList")
public String toSysRoleList() {
return "page/system/sysRoleList";
}
/**
* 数据列表
*
* @param query 分页数据
* @return 结果
*/
@ResponseBody
@RequestMapping("findSysRoles")
public RemoteResult findSysRole(SysRoleQuery query) {
Pagination pagination = this.sysRoleService.findSysRoles(query);
return ResultUtils.createDefResult(pagination);
}
/**
* 添加平台角色
*
* @param sysRole 平台角色
* @return
*/
@ResponseBody
@RequestMapping("createSysRole")
public RemoteResult createUser(SysRole sysRole) {
this.sysRoleService.createSysRole(sysRole);
return ResultUtils.createNullResult();
}
/**
* 修改平台角色
*
* @param sysRole 平台角色
* @return
@Autowired
private DeptItemDao deptItemDao;
@Autowired
private ItemDao itemDao;
@Autowired
private DeptDao deptDao;
@Autowired
private SysUserDao sysUserDao;
/**
* 系统管理=部门指标管理主界面
*
* @return
*/
@RequestMapping("/toList")
public String toDeptItemList(Model model) {
model.addAttribute("items", this.itemDao.getItems());
return "page/jx/deptItemList";
}
/**
* 系统管理=部门指标管理主界面
*
* @return
*/
@RequestMapping("/deptItemInfo")
public String deptItemInfo(Model model, String id) {
model.addAttribute("dept", this.deptDao.findById(id));
model.addAttribute("items", this.deptItemDao.findDeptItem(id));
return "page/jx/deptItemInfo";
}
/**
* 数据列表
*
* @return 结果
*/
@ResponseBody
@RequestMapping("find")
public RemoteResult find(String dept, String user) {
if (user != null) {
dept = this.sysUserDao.findSysUserById(user).getDept();
}
List<DeptItem> items = this.deptItemDao.findDeptItem(dept);
return ResultUtils.createDefResult(items);
}
if (!f.exists()) {
f.mkdirs();// 目录不存在的情况下,会抛出异常
}
//定义上传路径
String path1 = filePath + fileName;
//创建文件
File localFile = new File(path1);
upload.transferTo(localFile);
path = "/ckeditor/"+fileName;
}
}
// 返回“图像”选项卡并显示图片
out.println("<script type=\"text/javascript\">");
out.println("window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ",'" + path + "','')");
out.println("</script>");
} catch (RuntimeException e) {
out.println("<script type=\"text/javascript\">");
out.println("window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ",'','" +e.getMessage()+ "');");
out.println("</script>");
}
}
}
@RequestMapping("informationInfo")
public RemoteResult informationInfo(String id) {
Information information = this.informationService.findInformationInfo(id);
return ResultUtils.createDefResult(information);
}
}
/**
* 拦截所有RestController异常
} catch (CiBizException e) {
session.removeAttribute(SessionConstant.RANDOM_CODE);
throw e;
}
return ResultUtils.createNullResult();
}
/**
* 修改密码
*
* @param passwordOld 旧密码
* @param password 新密码
* @param passwordConfirm 确认密码
* @param session session
* @return
*/
@ResponseBody
@RequestMapping("changePassword")
public RemoteResult changePassword(String passwordOld, String password, String passwordConfirm, HttpSession session) {
SysUser loginer = (SysUser) session.getAttribute(SessionConstant.LOGINER);
if (loginer == null) {
return ResultUtils.createErrorResult("登录已失效,请刷新界面");
}
this.sysUserService.changePassword(loginer.getAccount(), passwordOld, password, passwordConfirm);
return ResultUtils.createNullResult();
}
/**
* 登出
*
* @return
*/
@RequestMapping("logout")
public String logout(HttpSession session) {
session.invalidate();
return "redirect:login";
}
}
this.itemService.deleteItem(ids);
return ResultUtils.createNullResult();
}
}
/**
* 部门的controller
*/
@Controller
@RequestMapping("/dept")
public class DeptController extends BaseController {
@Autowired
private DeptService deptService;
/**
* 系统管理=部门管理主界面
*
* @return
*/
@RequestMapping("/toList")
public String toDeptList() {
return "page/jx/deptList";
}
/**
* 数据列表
*
* @param query 分页数据
* @return 结果
try {
// //先验证randomCode
// String currentRandomCode = (String) session.getAttribute(SessionConstant.RANDOM_CODE);
// if (!currentRandomCode.toUpperCase().equals(randomCode.toUpperCase())) {
// throw new CiBizException("验证码错误");
// }
//获取IP地址
String ip = NetworkUtil.getIpAddress(request);
SysUser sysUser = this.sysUserService.sysUserLogin(name, password, ip);
session.setAttribute(SessionConstant.LOGINER, sysUser);
session.setAttribute(SessionConstant.LOGINER_ID, sysUser.getId());
session.setAttribute(SessionConstant.LOGINER_NAME, sysUser.getName());
} catch (CiBizException e) {
session.removeAttribute(SessionConstant.RANDOM_CODE);
throw e;
}
return ResultUtils.createNullResult();
}
/**
* 修改密码
*
* @param passwordOld 旧密码
* @param password 新密码
* @param passwordConfirm 确认密码
* @param session session
* @return
*/
@ResponseBody
@RequestMapping("changePassword")
public RemoteResult changePassword(String passwordOld, String password, String passwordConfirm, HttpSession session) {
SysUser loginer = (SysUser) session.getAttribute(SessionConstant.LOGINER);
if (loginer == null) {
return ResultUtils.createErrorResult("登录已失效,请刷新界面");
}
this.sysUserService.changePassword(loginer.getAccount(), passwordOld, password, passwordConfirm);
return ResultUtils.createNullResult();
}
/**
* 登出
*
* @return
*/
@RequestMapping("logout")
public String logout(HttpSession session) {
@ResponseBody
@RequestMapping("findSysUsers")
public RemoteResult findSysUsers(SysUserQuery query) {
Pagination pagination = this.sysUserService.findSysUsers(query);
return ResultUtils.createDefResult(pagination);
}
/**
* 删除平台用户管理
*
* @param ids 平台用户管理ID
* @return
*/
@ResponseBody
@RequestMapping("deleteSysUser")
public RemoteResult deleteSysUser(@RequestParam(value = "ids[]") String[] ids) {
this.sysUserService.deleteSysUser(ids);
return ResultUtils.createNullResult();
}
/**
* 添加平台用户管理证件人
*
* @param sysUser 平台用户管理
* @return
*/
@ResponseBody
@RequestMapping("createSysUser")
public RemoteResult createSysUser(SysUser sysUser) {
this.sysUserService.createSysUser(sysUser);
return ResultUtils.createNullResult();
}
/**
* 修改平台用户管理证件人
*
* @param sysUser 平台用户管理
* @return
*/
@ResponseBody
@RequestMapping("updateSysUser")
public RemoteResult updateSysUser(SysUser sysUser) {
}
Map<String, String[]> parameterMap = req.getParameterMap();
String parameters = gson.toJson(parameterMap);
logger.debug("REQUEST PARAMETERS:");
logger.debug(">>>" + parameters);
logger.debug("PROCESSING>>>>>>>>>>>>");
chain.doFilter(request, response);
long endtime = System.currentTimeMillis();
logger.debug("RequestUri->" + req.getRequestURI() + ",QueryString-->" + req.getQueryString() + ",Method->"
+ req.getMethod() + ",Cost-->" + (endtime - starttime) + "ms");
logger.debug("********************END:[" + endtime + "]****************************");
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
/**
* 平台角色的controller
*/
@Controller
@RequestMapping("/sysRole")
public class SysRoleController extends BaseController {
@Autowired
private SysRoleService sysRoleService;
/**
* 平台角色的controller
*/
@Controller
@RequestMapping("/sysRole")
public class SysRoleController extends BaseController {
@Autowired
private SysRoleService sysRoleService;
/**
* 系统管理=角色管理主界面
*
* @return
*/
@RequestMapping("/toList")
public String toSysRoleList() {
return "page/system/sysRoleList";
}
/**
* 数据列表
*
* @param query 分页数据
* @return 结果
*/
@ResponseBody
@RequestMapping("findSysRoles")
public RemoteResult findSysRole(SysRoleQuery query) {
Pagination pagination = this.sysRoleService.findSysRoles(query);
return ResultUtils.createDefResult(pagination);
}
/**
* 添加平台角色
*
* @param sysRole 平台角色
* @return
*/
@ResponseBody
@RequestMapping("createSysRole")
public RemoteResult createUser(SysRole sysRole) {
this.sysRoleService.createSysRole(sysRole);
public RemoteResult resetPassword(SysUser sysUser) {
this.sysUserService.resetPassword(sysUser);
return ResultUtils.createNullResult();
}
@RequestMapping("/print")
public String print(Model model, String id) {
model.addAttribute("user", this.sysUserDao.findSysUserById(id));
return "page/system/sysUserPrint";
}
}
/**
* Servlet Filter implementation class RequestTimeFilter
*/
@WebFilter(description = "请求时间记录", urlPatterns = { "/*" })
public class RequestTimeFilter implements Filter {
public static final Logger logger = LoggerFactory.getLogger(RequestTimeFilter.class);
/**
* Default constructor.