基于javaweb+mysql的ssm公司企业oa管理系统(java+ssm+jsp+javascript+mysql)

基于javaweb+mysql的ssm公司企业oa管理系统(java+ssm+jsp+javascript+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SSM公司企业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
	public String deleteAnnouce(HttpSession session,Integer delete_id) throws Exception{
		announcementService.deleteAnnouncement(delete_id);
		return "redirect:/home";
	}
	
}

@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);

	@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";
	}

}


			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";
		List<AnnouncementCustom> announceList = announcementService.showAllAnnouncement(activeEmp);
		model.addAttribute("announceList", announceList);
		
		//可发布公告的对象
		model.addAttribute("departmentList", sysService.getAbleToAnnounceDeps());
		
		return "/home/home";
	}
	
	@RequestMapping("/announce.action")
	@RequiresPermissions(value={"announce:create:all","announce:create:main","announce:create:sub"},logical=Logical.OR)
	public String annouce(HttpSession session,String target,Announcement announcement) throws Exception{
		activeEmp = (EmployeeCustom)session.getAttribute("activeEmp");

		announcement.setText(announcement.getText().replaceAll("\r\n", "<br>"));
		announcementService.announce(announcement, activeEmp);
		
		return "redirect:/home";
	}
	
	@RequestMapping("/delete_announce.action")
	public String deleteAnnouce(HttpSession session,Integer delete_id) throws Exception{
		announcementService.deleteAnnouncement(delete_id);
		return "redirect:/home";
	}
	
}


@Controller
public class HomeController {
	
	@Autowired
	EmployeeService employeeService;
	
	@Autowired
	AttendanceService attendanceService;
	
	@Autowired
	AnnouncementService announcementService;
	
	@Autowired
	SysService sysService;
	
	EmployeeCustom activeEmp;
	

	@RequestMapping("/home")
	public String showHome(Model model,HttpSession session) throws Exception{

		
		activeEmp = (EmployeeCustom) SecurityUtils.getSubject().getPrincipal();
		session.setAttribute("activeEmp", activeEmp);
		
	
		//展示出勤率,[0]正常 [1]加班 [2]迟到早退 [3]缺席[4]剩余天数
		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 HomeController {
	@Autowired
	private SysService sysService;
	
	EmployeeCustom activeEmp;

	@RequestMapping("")
	public String showMissionPage(Model model, HttpSession session,String view) throws Exception {
		List<MissionCustom> missionList = null;
		activeEmp= (EmployeeCustom) session.getAttribute("activeEmp");
		switch (view) {
		case "all":
			missionList = missionService.showAllMission(activeEmp);
			break;
		case "overall":
			missionList = missionService.filterMission(0);
			break;
		case "main":
			missionList = missionService.filterMission((activeEmp.getDepartmentId()/10)*10);
			break;
		case "sub":
			missionList = missionService.filterMission(activeEmp.getDepartmentId());
			break;
		default:
			missionList = missionService.showAllMission(activeEmp);
			break;
		}

		model.addAttribute("missionList", missionList);
		model.addAttribute("isInbox",true);
		return "mission/mission_inbox";
	}
	
	@RequestMapping(value="/mission_view" ,method=RequestMethod.GET)
	public String showMissionDetail(Model model,Integer mission_id,Integer updateProgress) throws Exception{
		if (updateProgress!=null) {
			missionService.updateProgress(mission_id, updateProgress);
		}
		model.addAttribute("mission", missionService.missionDetail(mission_id));

		return "mission/mission_view";
		
	}
	
	@RequestMapping(value="/mission_view" ,method=RequestMethod.POST)
		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";
	}

}


@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 {
		}
		
		activeEmp = (EmployeeCustom) session.getAttribute("activeEmp");
		mission.setAutherId(activeEmp.getId());
		
		mission.setText(mission.getText().replaceAll("\r\n", "<br>"));
		missionService.postMission(mission, activeEmp);
		
		return "redirect:/mission?view=all";
	}
	@RequestMapping("/delete_mission.action")
	public String deleteMission(Integer delete_id) throws Exception{
		missionService.deleteMission(delete_id);
		
		return "redirect:/mission?view=all";
	}
	
	@RequestMapping(value="/delete_comment.action",method=RequestMethod.POST)
	public String deleteMission(Integer mission_id,Integer comment_emp,String comment,String all_comment) throws Exception{
		
		missionService.deleteComment(mission_id, comment_emp, comment, all_comment);
		
		return "redirect:/mission/mission_view?mission_id="+mission_id;
	}
	
	
}

	public String postMission(HttpSession session,Mission mission,MultipartFile mission_pic) throws Exception{
		
		//图片上传
		String originalFilename = null;
		if (mission_pic != null) {
			originalFilename = mission_pic.getOriginalFilename();
		} 
		if (mission_pic!=null && originalFilename!=null && originalFilename.trim()!="") {
			mission.setPic(sysService.uploadPic("mission", mission_pic));
		}
		
		activeEmp = (EmployeeCustom) session.getAttribute("activeEmp");
		mission.setAutherId(activeEmp.getId());
		
		mission.setText(mission.getText().replaceAll("\r\n", "<br>"));
		missionService.postMission(mission, activeEmp);
		
		return "redirect:/mission?view=all";
	}
	@RequestMapping("/delete_mission.action")
	public String deleteMission(Integer delete_id) throws Exception{
		missionService.deleteMission(delete_id);
		
		return "redirect:/mission?view=all";
	}
	
	@RequestMapping(value="/delete_comment.action",method=RequestMethod.POST)
	public String deleteMission(Integer mission_id,Integer comment_emp,String comment,String all_comment) throws Exception{
		
		missionService.deleteComment(mission_id, comment_emp, comment, all_comment);
		
		return "redirect:/mission/mission_view?mission_id="+mission_id;
	}
	
	
}

	@RequestMapping("/delete_announce.action")
	public String deleteAnnouce(HttpSession session,Integer delete_id) throws Exception{
		announcementService.deleteAnnouncement(delete_id);
		return "redirect:/home";
	}
	
}

@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();

@Controller
public class HomeController {
	
	@Autowired
	EmployeeService employeeService;
	
	@Autowired
	AttendanceService attendanceService;
	
	@Autowired
	AnnouncementService announcementService;
	
	@Autowired
	SysService sysService;
	
	EmployeeCustom activeEmp;
	

	@RequestMapping("/home")
		//可发布公告的对象
		model.addAttribute("departmentList", sysService.getAbleToAnnounceDeps());
		
		return "/home/home";
	}
	
	@RequestMapping("/announce.action")
	@RequiresPermissions(value={"announce:create:all","announce:create:main","announce:create:sub"},logical=Logical.OR)
	public String annouce(HttpSession session,String target,Announcement announcement) throws Exception{
		activeEmp = (EmployeeCustom)session.getAttribute("activeEmp");

		announcement.setText(announcement.getText().replaceAll("\r\n", "<br>"));
		announcementService.announce(announcement, activeEmp);
		
		return "redirect:/home";
	}
	
	@RequestMapping("/delete_announce.action")
	public String deleteAnnouce(HttpSession session,Integer delete_id) throws Exception{
		announcementService.deleteAnnouncement(delete_id);
		return "redirect:/home";
	}
	
}

@Controller
public class EmployeeController {

	@Autowired
	private EmployeeService employeeService;

	@Autowired
	private SysService sysService;

	@RequestMapping(value = "/changeStage")
			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";

		return "redirect:/mission/mission_view?mission_id="+mission_id;
	}
	
	
}

@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", "账号不存在");
		
		return "redirect:/mission?view=all";
	}
	
	@RequestMapping(value="/delete_comment.action",method=RequestMethod.POST)
	public String deleteMission(Integer mission_id,Integer comment_emp,String comment,String all_comment) throws Exception{
		
		missionService.deleteComment(mission_id, comment_emp, comment, all_comment);
		
		return "redirect:/mission/mission_view?mission_id="+mission_id;
	}
	
	
}

@Controller
public class AccountController {

	@Autowired
	private EmployeeService employeeService;

	@Autowired
	private SysService sysService;

	EmployeeCustom activeEmp;

	@RequestMapping("/login")

		// 将新图片名称写入
		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 HomeController {
	
	@Autowired

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值