Java项目:公司企业OA管理系统(java+SSM+JSP+JavaScript+Mysql)

源码获取:俺的博客首页 "资源" 里下载!

项目介绍

OA办公管理系统,这是一款由JSP+SSM(spring+springmvc+mybatis)+MySQL实现的简单的OA办公管理系统,
主要实现的功能有员工注册登录,自动计算当前月迟到、早退、加班、缺勤天数并根据图表展示,
任务管理(任务发布、更新、删除、进度条展示完成度),通知管理(通知发布、更新、删除),
站内信发布、回复、删除等,发布公告和任务及站内信时可上传图片等。

环境需要

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


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/OAManagerSys 登录 注意:路径必须为/OAManagerSys,否则会有图片加载不出来
管理员账号/密码:admin/admin
账号/密码:zhangtao/123

 

 

 

 

 

邮箱管理控制层: 

@Controller
@RequestMapping("/mail")
@SuppressWarnings("all")
public class MailController {

	@Autowired
	private MailService mailService;

	@Autowired
	private EmployeeService employeeService;

	@Autowired
	private SysService sysService;

	// 展示收到的邮件
	@RequestMapping("")
	public String showMailPage(Model model, HttpSession session, HttpServletRequest request) throws Exception {

		List<MailCustom> mailList = new ArrayList<MailCustom>();

		switch ((String) request.getParameter("view")) {
		case "all":
			mailList = mailService.findMailToMe((EmployeeCustom) session.getAttribute("activeEmp"));
			model.addAttribute("isSend", false);
			break;
		case "unread":
			mailList = mailService.findUnreadMailToMe((EmployeeCustom) session.getAttribute("activeEmp"));
			model.addAttribute("isSend", false);
			break;
		case "read":
			mailList = mailService.findReadMailToMe((EmployeeCustom) session.getAttribute("activeEmp"));
			model.addAttribute("isSend", false);
			break;
		case "send":
			mailList = mailService.findMailSendByMe((EmployeeCustom) session.getAttribute("activeEmp"));
			model.addAttribute("isSend", true);
			break;

		default:
			mailList = mailService.findMailToMe((EmployeeCustom) session.getAttribute("activeEmp"));
			model.addAttribute("isSend", false);
			break;
		}
		model.addAttribute("mailList", mailList);
		model.addAttribute("isInbox", true);// mail_common中右上角的的按钮

		return "mail/mail_inbox";
	}

	@RequestMapping("/mail_view")
	public String showMailDetail(Model model, HttpServletRequest request) throws Exception {

		MailCustom mailDetail = mailService.showMailDetail(Integer.parseInt(request.getParameter("mail_id")),
				Integer.parseInt(request.getParameter("otherside_id")));

		model.addAttribute("mail", mailDetail);
		model.addAttribute("isSend", Boolean.parseBoolean(request.getParameter("isSend")));

		return "mail/mail_view";
	}

	@RequestMapping("/send_mail.action")
	public String sendMail(Mail mail, MultipartFile mail_pic) throws Exception {

		// 上传图片
		// 原始名称
		String originalFilename = null;
		if (mail_pic != null) {
			originalFilename = mail_pic.getOriginalFilename();
		} 
		
		if (mail_pic != null && originalFilename != null && originalFilename.trim() != "") {

			mail.setPic(sysService.uploadPic("mail", mail_pic));
		}

		// 将新图片名称写入
		mail.setText(mail.getText().replaceAll("\r\n", "<br>"));
		mailService.sendMail(mail);

		return "redirect:/mail?view=all";
	}

	@RequestMapping("/mail_compose")
	public String showComposeForm(Model model, Integer receiver) throws Exception {

		if (receiver != null) {
			model.addAttribute("receiver", employeeService.findEmployeeById(receiver));
		}

		return "mail/mail_compose";
	}

}

员工管理控制层:

@Controller
public class EmployeeController {

	@Autowired
	private EmployeeService employeeService;

	@Autowired
	private SysService sysService;

	@RequestMapping(value = "/changeStage")
	public void changeState(Model model, HttpRequest request, HttpSession session, Integer state) throws Exception {

	}

	@RequestMapping(value = "/search_emp")
	public String showSearchPage(Model model, String name, Integer depId, Integer state) throws Exception {

		List<EmployeeCustom> employeeList = new ArrayList<EmployeeCustom>();

		if ((name != null && name.trim() != "") || depId != null || state != null) {
			Employee condition = new Employee();
			if (name != null && name.trim() != "") {
				condition.setName(name);
				model.addAttribute("name", name);
			}
			if (depId != null) {
				condition.setDepartmentId(depId);
				model.addAttribute("depId", depId);
			}
			if (state != null) {
				condition.setWorkingState(state);
				model.addAttribute("state", state);
			}
			employeeList = employeeService.findEmployee(condition);
		} else {
			// show all employee
			employeeList = employeeService.findEmployee(new Employee());

		}
		model.addAttribute("employeeList", employeeList);
		model.addAttribute("allDepartment", sysService.getAllDepartment());

		return "search/search_emp";

	}

}

登录管理控制层:

@Controller
public class AccountController {

	@Autowired
	private EmployeeService employeeService;

	@Autowired
	private SysService sysService;

	EmployeeCustom activeEmp;

	@RequestMapping("/login")
	public String login(Model model, HttpServletRequest request) throws Exception {

		String exceptionClassName = (String) request.getAttribute("shiroLoginFailure");
		if (exceptionClassName != null) {
			if (UnknownAccountException.class.getName().equals(exceptionClassName)) {
				// 最终会抛给异常处理器

				model.addAttribute("message", "账号不存在");
			} else if (IncorrectCredentialsException.class.getName().equals(exceptionClassName)) {
				model.addAttribute("message", "用户名/密码错误");
				// throw new CustomException("用户名/密码错误");
			} else {
				model.addAttribute("message", "未知错误");
				// throw new Exception();// 最终在异常处理器生成未知错误
			}
		}

		// 访问/login时, 自动进行认证,认证成功后直接跳转出去
		// 初次访问时exceptionClassName== null直接到这里
		// 认证失败时exceptionClassName!= null , 传递信息后又回到这里
		return "misc/login";
	}

	@RequestMapping(value = "/signup", method = RequestMethod.GET)
	public String showSignupPage(Model model) throws Exception {
		return "misc/signup";
	}

	@RequestMapping(value = "/signup", method = RequestMethod.POST)
	public String checkUsername(Model model, Employee employee) throws Exception {

		try {
			employeeService.checkUsername(employee);
			model.addAttribute("employee", employee);

			model.addAttribute("positionList", sysService.getAbleToRegPos());

			return "misc/signup_detail";

		} catch (CustomException e) {
			model.addAttribute("message", e.getMessage());
		}

		return "misc/signup";
	}

	@RequestMapping(value = "/signup2", method = RequestMethod.POST)
	public String confirmPosition(Model model, Employee employee, MultipartFile employee_pic) throws Exception {

		// 上传图片
		String originalFilename = employee_pic.getOriginalFilename();
		if (employee_pic != null && originalFilename != null && originalFilename.trim() != "") {
			employee.setPic(sysService.uploadPic("employee", employee_pic));
		}

		model.addAttribute("employee", employee);
		model.addAttribute("departmentList", sysService.getAbleToRegDep(employee.getPositionId()));

		return "misc/signup_dep";
	}

	@RequestMapping(value = "/formal_signup", method = RequestMethod.POST)
	public String register(Model model, Employee employee) throws Exception {
		try {

			employeeService.register(employee);

			UsernamePasswordToken token = new UsernamePasswordToken(employee.getUsername(), employee.getPassword());
			SecurityUtils.getSubject().login(token);
			return "redirect:home";

		} catch (CustomException e) {
			model.addAttribute("message", e.getMessage());
		}
		// 注册失败
		return "misc/signup_detail";

	}

	@RequestMapping("/logout")
	public String logout(HttpSession session) throws Exception {
		activeEmp = (EmployeeCustom) session.getAttribute("activeEmp");
		employeeService.logout(activeEmp);
		session.removeAttribute("activeEmp");
		session.invalidate();
		return "redirect:/login";
	}

	@RequestMapping("/refuse")
	public String refuse() throws Exception {
		return "misc/refuse";
	}

}

源码获取:俺的博客首页 "资源" 里下载!

猜你喜欢

转载自blog.csdn.net/m0_66863468/article/details/125551450