基于javaweb+mysql的ssm+maven企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

基于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项目:是;

技术栈

  1. 后端:Spring SpringMVC MyBatis 2. 前端:JSP+css+javascript+bootstrap+jQuery

使用说明

  1. 使用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.

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值