基于javaweb+mysql的springbootoa办公自动化系统设计和实现(java+springboot+freemarker+mysql+maven+mybatis+jpa)

基于javaweb+mysql的springbootoa办公自动化系统设计和实现(java+springboot+freemarker+mysql+maven+mybatis+jpa)

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SpringBootoa办公自动化系统设计和实现(java+springboot+freemarker+mysql+maven+mybatis+jpa)

java springbootOA办公自动化系统:

主要功能模块:系统、用户、角色、考勤、流程、公告、邮件、任务、日程、计划、文件、笔记、通讯录、讨论区等多个模块管理

使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。

			}
			
		}else{
			System.out.println("222");
			if(StringUtil.isEmpty(name)){
				//查看用户并分页
				pageuser=udao.findAll(pa);
			}else{
				pageuser=udao.findbyUserNameLike(name, pa);
			}
		}
		userlist=pageuser.getContent();
		// 查询部门表
		Iterable<Dept> deptlist = ddao.findAll();
		// 查职位表
		Iterable<Position> poslist = pdao.findAll();
		model.addAttribute("emplist", userlist);
		model.addAttribute("page", pageuser);
		model.addAttribute("deptlist", deptlist);
		model.addAttribute("poslist", poslist);
		model.addAttribute("url", "names");
		
		return "common/recivers";
		
	}
	
	/**
	 * 最近邮件
	 */
	@RequestMapping("amail")
	public  String index3(HttpServletRequest req,@SessionAttribute("userId") Long userId,Model model,
			@RequestParam(value = "page", defaultValue = "0") int page,
			@RequestParam(value = "size", defaultValue = "10") int size) {
		Pageable pa=new PageRequest(page, size);
		User mu=udao.findOne(userId);
		String mess=req.getParameter("title");
		
		Page<Pagemail> pagelist=null;
		Page<Inmaillist> pagemail=null;
		List<Map<String, Object>> maillist=null;
		if(("收件箱").equals(mess)){
			//分页及查找
			pagelist=mservice.recive(page, size, mu, null,mess);
			maillist=mservice.mail(pagelist);
		}else if(("发件箱").equals(mess)){
			pagemail=mservice.inmail(page, size, mu, null,mess);
			maillist=mservice.maillist(pagemail);
		}else if(("草稿箱").equals(mess)){
			pagemail=mservice.inmail(page, size,mu, null,mess);
			maillist=mservice.maillist(pagemail);
		}else{
			//垃圾箱
			//分页及查找
			}else if(("草稿箱").equals(title)){
				StringTokenizer st = new StringTokenizer(ids, ",");
				while (st.hasMoreElements()) {
					//找到该邮件
					Inmaillist  inmail=imdao.findByMailUseridAndMailId(user,Long.parseLong(st.nextToken()));
					if(inmail.getStar().equals(false)){
						inmail.setStar(true);
					}else{
						inmail.setStar(false);
					}
					imdao.save(inmail);
				}
				pagemail=mservice.inmail(page, size, user, null,title);
				maillist=mservice.maillist(pagemail);
			}else{
				//垃圾箱
				StringTokenizer st = new StringTokenizer(ids, ",");
				while (st.hasMoreElements()) {
					//找到该用户联系邮件的中间记录
					Mailreciver	mailr=mrdao.findbyReciverIdAndmailId(user,Long.parseLong(st.nextToken()));
					if(mailr.getStar().equals(false)){
						mailr.setStar(true);
					}else{
						mailr.setStar(false);
					}
					mrdao.save(mailr);
				}
				//分页及查找
				pagelist=mservice.recive(page, size, user, null,title);
				maillist=mservice.mail(pagelist);
			}
				
			if(!Objects.isNull(pagelist)){
				model.addAttribute("page", pagelist);
			}else{
				model.addAttribute("page", pagemail);
			}
				model.addAttribute("maillist",maillist);
				model.addAttribute("url","mailtitle");
				model.addAttribute("mess",title);
		    return "mail/mailbody";
	}
	/**
	 *邮箱条件查找
	 */
	@RequestMapping("mailtitle")
	public String serch(@SessionAttribute("userId") Long userId, Model model,HttpServletRequest req,
			@RequestParam(value = "page", defaultValue = "0") int page,
			@RequestParam(value = "size", defaultValue = "10") int size){
		User user=udao.findOne(userId);
		String title=req.getParameter("title");
		}
		
		model.addAttribute("type", type);
		return "file/filetypeload";
		
	}
	
	@RequestMapping("fileloadshare")
	public String fileloadshare(@RequestParam("type") String type,
			@RequestParam(value="checkfileids[]",required=false) List<Long> checkfileids,
			Model model
			){
		if (checkfileids!=null) {
			fs.doshare(checkfileids);
		}
		
		model.addAttribute("message","分享成功");
		model.addAttribute("type", type);
		return "forward:/filetypeload";
	}
	
	/**
	 * load删除controller
	 * @param type
	 * @param checkpathids
	 * @param checkfileids
	 * @param model
	 * @return
	 */
	@RequestMapping("fileloaddeletefile")
	public String fileloaddeletefile(@RequestParam("type") String type,
			@RequestParam(value="checkpathids[]",required=false) List<Long> checkpathids,
			@RequestParam(value="checkfileids[]",required=false) List<Long> checkfileids,
			Model model){
		
		System.out.println(type+checkpathids+checkfileids);
		if (checkfileids!=null) {
			// 删除文件
			fs.deleteFile(checkfileids);
		}
		if (checkpathids!=null) {
			// 删除文件夹
			fs.deletePath(checkpathids);
		}
		
		model.addAttribute("type", type);
		return "forward:/filetypeload";
	}
	/**
	 * 将文件放入回收战
	 * @param userid
	 * @param type
				Long getAdd = menuObj.getMenuId();
				String getName=menuObj.getMenuName();
				req.setAttribute("getAdd", getAdd);
				req.setAttribute("getName", getName);
				log.info("getAdd:{}", getAdd);
			} else {
				session.setAttribute("getId", getId);
				log.info("getId:{}", getId);
				req.setAttribute("menuObj", menuObj);
			}
		}
		return "systemcontrol/menuedit";
	}
	
	/**
	 * 系统管理表单验证
	 * @param req
	 * @param menu
	 * @param br
	 * 后台校验表单数据,不通过则回填数据,显示错误信息;通过则直接执行业务,例如新增、编辑等;
	 * @return
	 */
	@RequestMapping("test111")
	public String testMess(HttpServletRequest req, @Valid SystemMenu menu, BindingResult br) {
		HttpSession session = req.getSession();
		Long menuId = null;
		req.setAttribute("menuObj", menu);

		// 这里返回ResultVO对象,如果校验通过,ResultEnum.SUCCESS.getCode()返回的值为200;否则就是没有通过;
		ResultVO res = BindingResultVOUtil.hasErrors(br);
		// 校验失败
		if (!ResultEnum.SUCCESS.getCode().equals(res.getCode())) {
			List<Object> list = new MapToList<>().mapToList(res.getData());
			req.setAttribute("errormess", list.get(0).toString());
			// 代码调试阶段,下面是错误的相关信息;
			System.out.println("list错误的实体类信息:" + menu);
			System.out.println("list错误详情:" + list);
			System.out.println("list错误第一条:" + list.get(0));
			System.out.println("啊啊啊错误的信息——:" + list.get(0).toString());
			// 下面的info信息是打印出详细的信息
			log.info("getData:{}", res.getData());
			log.info("getCode:{}", res.getCode());
			log.info("getMsg:{}", res.getMsg());
		}
	public String evemoney(Model model, @SessionAttribute("userId") Long userId,HttpServletRequest req,
			@RequestParam(value = "page", defaultValue = "0") int page,
			@RequestParam(value = "size", defaultValue = "10") int size){
		Long proid=Long.parseLong(req.getParameter("id"));//出差申请的id
		ProcessList prolist=prodao.findbyuseridandtitle(userId, proid);//找这个用户的出差申请
		proservice.index6(model, userId, page, size);
		model.addAttribute("prolist", prolist);
		return "process/evectionmoney";
	}
	/**
	 * 出差费用表单接收
	 * @param model
	 * @param session
	 * @param request
	 * @param page
	 * @param size
	 * @return
	 */
	@RequestMapping("moneyeve")
	public String moneyeve(@RequestParam("filePath")MultipartFile filePath,HttpServletRequest req,@Valid EvectionMoney eve,BindingResult br,
			@SessionAttribute("userId") Long userId,Model model) throws IllegalStateException, IOException{
			User lu=udao.findOne(userId);//申请人
			User shen=udao.findByUserName(eve.getShenname());//审核人
			Long roleid=lu.getRole().getRoleId();//申请人角色id
			Long fatherid=lu.getFatherId();//申请人父id
			Long userid=shen.getUserId();//审核人userid
			String val=req.getParameter("val");
			Double allmoney=0.0;
			if(roleid>=3L && Objects.equals(fatherid, userid)){
						List<Traffic> ss=eve.getTraffic();
						for (Traffic traffic : ss) {
							allmoney+=traffic.getTrafficMoney();
							User u=udao.findByUserName(traffic.getUsername());
							traffic.setUser(u);
							traffic.setEvection(eve);
							
						}
						List<Stay> mm=eve.getStay();
						for (Stay stay : mm) {
							allmoney+=stay.getStayMoney()*stay.getDay();
							User u=udao.findByUserName(stay.getNameuser());
							stay.setUser(u);
							stay.setEvemoney(eve);
						}
						
						eve.setMoney(allmoney);
						//set主表
						ProcessList pro=eve.getProId();
						System.out.println(pro+"mmmmmm");
						proservice.index5(pro, val, lu, filePath,shen.getUserName());
						emdao.save(eve);
						//存审核表
						proservice.index7(shen, pro);
	      * @param numberOfMoney
	      *            输入的金额
	      * @return 对应的汉语大写
	      */
	    public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {
	         StringBuffer sb = new StringBuffer();
	        // -1, 0, or 1 as the value of this BigDecimal is negative, zero, or
	       // positive.
	        int signum = numberOfMoney.signum();
	        // 零元整的情况
	         if (signum == 0) {
	             return CN_ZEOR_FULL;
	       }
	        //这里会进行金额的四舍五入
	         long number = numberOfMoney.movePointRight(MONEY_PRECISION)
	                .setScale(0, 4).abs().longValue();
	        // 得到小数点后两位值
	         long scale = number % 100;
	        int numUnit = 0;
	        int numIndex = 0;
	        boolean getZero = false;
	        // 判断最后两位数,一共有四中情况:00 = 0, 01 = 1, 10, 11
	        if (!(scale > 0)) {
	            numIndex = 2;
	             number = number / 100;
	             getZero = true;
	        }
	        if ((scale > 0) && (!(scale % 10 > 0))) {
	             numIndex = 1;
	            number = number / 10;
	             getZero = true;
	        }
	        int zeroSize = 0;
	        while (true) {
	             if (number <= 0) {
	                break;
	            }
	           // 每次获取到最后一个数
	           numUnit = (int) (number % 10);
	             if (numUnit > 0) {
	                 if ((numIndex == 9) && (zeroSize >= 3)) {
	                     sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);
	                }
	               if ((numIndex == 13) && (zeroSize >= 3)) {
	                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);
	              }
	                sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
	                 sb.insert(0, CN_UPPER_NUMBER[numUnit]);
	                getZero = false;
	                zeroSize = 0;
	            } else {
	                ++zeroSize;
		List<ScheduleList> aboutmenotice = dayser.aboutmeschedule(userId);
		for (ScheduleList scheduleList : aboutmenotice) {
			if(scheduleList.getIsreminded()!=null&&!scheduleList.getIsreminded()){
				System.out.println(scheduleList.getStartTime());
				
				SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");//24小时制 
//				simpleDateFormat.parse(scheduleList.getStartTime()).getTime();  
				String start = simpleDateFormat.format(scheduleList.getStartTime());
				String now = simpleDateFormat.format(new Date());
				try {
					long now2 = simpleDateFormat.parse(now).getTime();
					long start2 = simpleDateFormat.parse(start).getTime();  
					long cha = start2-now2;
					if(0<cha && cha <86400000){
						NoticesList remindnotices = new NoticesList();
						remindnotices.setTypeId(11l);
						remindnotices.setStatusId(15l);
						remindnotices.setTitle("您有一个日程即将开始");
						remindnotices.setUrl("/daycalendar");
						remindnotices.setUserId(userId);
						remindnotices.setNoticeTime(new Date());
						
						NoticesList remindnoticeok = informService.save(remindnotices);
						
						informrelationservice.save(new NoticeUserRelation(remindnoticeok, user, false));
						
						scheduleList.setIsreminded(true);
						daydao.save(scheduleList);
					}
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		List<NoticeUserRelation> notice=irdao.findByReadAndUserId(false,user);//通知
		List<Mailreciver> mail=mdao.findByReadAndDelAndReciverId(false, false, user);//邮件
		List<Taskuser>  task=tadao.findByUserIdAndStatusId(user, 3);//新任务
		model.addAttribute("notice", notice.size());
	public String testMess(HttpServletRequest req, @Valid NoticesList menu, BindingResult br) {
		HttpSession session = req.getSession();
		Long menuId = null;
		req.setAttribute("menuObj", menu);
		Long userId = Long.parseLong(session.getAttribute("userId") + "");
		menu.setUserId(userId);

		// 这里返回ResultVO对象,如果校验通过,ResultEnum.SUCCESS.getCode()返回的值为200;否则就是没有通过;
		ResultVO res = BindingResultVOUtil.hasErrors(br);
		// 校验失败
		if (!ResultEnum.SUCCESS.getCode().equals(res.getCode())) {
			List<Object> list = new MapToList<>().mapToList(res.getData());
			req.setAttribute("errormess", list.get(0).toString());
			// 代码调试阶段,下面是错误的相关信息;
			System.out.println("list错误的实体类信息:" + menu);
			System.out.println("list错误详情:" + list);
			System.out.println("list错误第一条:" + list.get(0));
			System.out.println("啊啊啊错误的信息——:" + list.get(0).toString());
			// 下面的info信息是打印出详细的信息
			log.info("getData:{}", res.getData());
			log.info("getCode:{}", res.getCode());
			log.info("getMsg:{}", res.getMsg());
		}
		// 校验通过,下面写自己的逻辑业务
		else {
			// 判断是否从编辑界面进来的,前面有"session.setAttribute("getId",getId);",在这里获取,并remove掉;
			if (!StringUtils.isEmpty(session.getAttribute("noticeId"))) {
				menuId = (Long) session.getAttribute("noticeId"); // 获取进入编辑界面的menuID值
				NoticesList inform = informDao.findOne(menuId);
				menu.setNoticeTime(inform.getNoticeTime());
				menu.setNoticeId(menuId);
				session.removeAttribute("noticeId");
				informService.save(menu);
			} else {
				menu.setNoticeTime(new Date());
				menu.setUserId(userId);
				NoticesList noticeList = informService.save(menu);
				List<User> userList = uDao.findByFatherId(userId);
				for (User user : userList) {
					informrelationservice.save(new NoticeUserRelation(noticeList, user, false));
				}
			}
			// 执行业务代码
			System.out.println("此操作是正确的");
			req.setAttribute("success", "后台验证成功");
		}
		System.out.println("是否进入最后的实体类信息:" + menu);
		return "forward:/informedit";
			
		}
		
		
		if(("费用报销").equals(typename)){
			Bursement  bu=budao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				bu.setManagerAdvice(reviewed.getAdvice());
				budao.save(bu);
			}
			if(u.getPosition().getId()==5){
				bu.setFinancialAdvice(reviewed.getAdvice());
				bu.setBurseTime(new Date());
				bu.setOperation(u);
				budao.save(bu);
			}
		}else if(("出差费用").equals(typename)){
			EvectionMoney emoney=emdao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				emoney.setManagerAdvice(reviewed.getAdvice());
				emdao.save(emoney);
			}
			if(u.getPosition().getId()==5){
				emoney.setFinancialAdvice(reviewed.getAdvice());
				emdao.save(emoney);
			}
		}else if(("出差申请").equals(typename)){
			Evection ev=edao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				ev.setManagerAdvice(reviewed.getAdvice());
				edao.save(ev);
			}
			if(u.getPosition().getId().equals(7L)){
				ev.setPersonnelAdvice(reviewed.getAdvice());
				edao.save(ev);
			}
		}else if(("加班申请").equals(typename)){
			 Overtime over=odao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				over.setManagerAdvice(reviewed.getAdvice());
				// 判断是否共享
				if (request.getParameter("receiver") != null && (request.getParameter("receiver").trim().length() > 0)) {
					userss = new HashSet<>();
					String receivers = request.getParameter("receiver");
					note.setReceiver(receivers);

					String[] receiver = receivers.split(";");
					// 先绑定自己再
					userss.add(user);
					// 再绑定其他人
					for (String re : receiver) {
						System.out.println(re);
						User user2 = userDao.findid(re);
						if (user2 == null) {
						} else
							userss.add(user2);
					}

				} else {
					// 保存为该用户的笔记 绑定用户id
					userss = new HashSet<>();
					userss.add(user);
				}
			}
			// nid大于0就是修改某个对象
			if (nid > 0) {
				note = noteDao.findOne(nid);
				if (note.getAttachId() == null) {
					if (!file.isEmpty()) {
						att = (Attachment) fs.savefile(file, user, null, false);
						attid = att.getAttachmentId();
						note.setAttachId(attid);
						noteDao.save(note);
					}
				}
				if (note.getAttachId() != null)
					fs.updateatt(file, user, null, note.getAttachId());

			// 判断是否共享
			if (request.getParameter("receiver") != null && (request.getParameter("receiver").trim().length() > 0)) {
				userss = new HashSet<>();
				String receivers = request.getParameter("receiver");
				note.setReceiver(receivers);

				String[] receiver = receivers.split(";");
				// 先绑定自己再
		}
		
		
		if(("费用报销").equals(typename)){
			Bursement  bu=budao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				bu.setManagerAdvice(reviewed.getAdvice());
				budao.save(bu);
			}
			if(u.getPosition().getId()==5){
				bu.setFinancialAdvice(reviewed.getAdvice());
				bu.setBurseTime(new Date());
				bu.setOperation(u);
				budao.save(bu);
			}
		}else if(("出差费用").equals(typename)){
			EvectionMoney emoney=emdao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				emoney.setManagerAdvice(reviewed.getAdvice());
				emdao.save(emoney);
			}
			if(u.getPosition().getId()==5){
				emoney.setFinancialAdvice(reviewed.getAdvice());
				emdao.save(emoney);
			}
		}else if(("出差申请").equals(typename)){
			Evection ev=edao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				ev.setManagerAdvice(reviewed.getAdvice());
				edao.save(ev);
			}
			if(u.getPosition().getId().equals(7L)){
				ev.setPersonnelAdvice(reviewed.getAdvice());
				edao.save(ev);
			}
		}else if(("加班申请").equals(typename)){
			 Overtime over=odao.findByProId(pro);
			if(shen.getFatherId().equals(u.getUserId())){
				over.setManagerAdvice(reviewed.getAdvice());
				odao.save(over);
			}
		users.setUserTel(user.getUserTel());
		users.setEamil(user.getEamil());
		users.setAddress(user.getAddress());
		users.setUserEdu(user.getUserEdu());
		users.setSchool(user.getSchool());
		users.setIdCard(user.getIdCard());
		users.setBank(user.getBank());
		users.setSex(user.getSex());
		users.setThemeSkin(user.getThemeSkin());
		users.setBirth(user.getBirth());
		if(!StringUtil.isEmpty(user.getUserSign())){
			users.setUserSign(user.getUserSign());
		}
		if(!StringUtil.isEmpty(user.getPassword())){
			users.setPassword(user.getPassword());
		}
		if(!StringUtil.isEmpty(imgpath)){
			users.setImgPath(imgpath);
			
		}
		
		request.setAttribute("users", users);
		
		ResultVO res = BindingResultVOUtil.hasErrors(br);
		if (!ResultEnum.SUCCESS.getCode().equals(res.getCode())) {
			List<Object> list = new MapToList<>().mapToList(res.getData());
			request.setAttribute("errormess", list.get(0).toString());
			
			System.out.println("list错误的实体类信息:" + user);
			System.out.println("list错误详情:" + list);
			System.out.println("list错误第一条:" + list.get(0));
			System.out.println("啊啊啊错误的信息——:" + list.get(0).toString());
			
		}else{
			udao.save(users);
			request.setAttribute("success", "执行成功!");
		}
		return "forward:/userpanel";
		
	}
	@RequestMapping("image/**")
	public void image(Model model, HttpServletResponse response, @SessionAttribute("userId") Long userId, HttpServletRequest request)
			throws Exception {
		String projectPath = ClassUtils.getDefaultClassLoader().getResource("").getPath();
		System.out.println(projectPath);
		String startpath = new String(URLDecoder.decode(request.getRequestURI(), "utf-8"));
		
//		String path = startpath.replace("/image", "");
//
//		File f = new File(rootpath, path);
		File f = new File(request.getRequestURI().substring("/image".length()));
		ServletOutputStream sos = response.getOutputStream();
		FileInputStream input = new FileInputStream(f.getPath());
		byte[] data = new byte[(int) f.length()];
	             number = number / 10;
	            ++numIndex;
	         }
	        // 如果signum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负
	         if (signum == -1) {
	            sb.insert(0, CN_NEGATIVE);
	        }
	        // 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整
	       if (!(scale > 0)) {
	           sb.append(CN_FULL);
	       }
	        return sb.toString();
	    }
	 
	    public static String numbertocn(Double money){
	    	BigDecimal numberOfMoney = new BigDecimal(money);
	        String s = number2CNMontrayUnit(numberOfMoney);
	        System.out.println("你输入的金额为:【"+ money +"】   #--# [" +s.toString()+"]");
	          return s.toString();
	    }	

	
	
}

		if (nId.contains("cata")) {
			//从目录编辑那里进来的
			String newnid = nId.substring(4, nId.length());
			long ca = Long.valueOf(newnid);
			Catalog cate = catalogDao.findOne(ca);
			Request.setAttribute("cata", cate);
			Request.setAttribute("note", null);
			Request.setAttribute("id", -3);
		} else {
			Long nid = Long.valueOf(nId);
			// 新建
			if (nid == -1) {
				Request.setAttribute("note", null);
				// 新建id
				Request.setAttribute("id", nid);
			}

			// 修改
			else if (nid > 0) {
				Note note = noteDao.findOne(nid);
				long ca = Long.valueOf(note.getCatalogId());
				Catalog cate = catalogDao.findOne(ca);
				Request.setAttribute("cata", cate);
				Request.setAttribute("note", note);
				// 修改id
				Request.setAttribute("id", nid);
			}
			// Request.setAttribute("id", nid);
		}
		userget(page, size, model);
		
		Request.setAttribute("users", users);
		Request.setAttribute("calist", cataloglist);
		typestatus(Request);
		return "note/noteedit";
	}
	
	public void userget(int page,int size,Model model){
		Pageable pa=new PageRequest(page, size);
		//查看用户并分页
		Page<User> pageuser=userDao.findAll(pa);
		List<User> userlist=pageuser.getContent();
		// 查询部门表
		Iterable<Dept> deptlist = ddao.findAll();
		// 查职位表
		Iterable<Position> poslist = pdao.findAll();
		model.addAttribute("page", pageuser);
		model.addAttribute("emplist", userlist);
		model.addAttribute("deptlist", deptlist);
		model.addAttribute("poslist", poslist);
		model.addAttribute("url", "namereceive");
	}
	
		}
		return "redirect:/noteview";
	}

	// 笔记删除
	@RequestMapping("notedelete")
	public String testrw(Model model, HttpServletRequest request, HttpSession session) {
		long realuserId = Long.valueOf(session.getAttribute("userId") + "");
		String nid = request.getParameter("nid");
		long noteid = Long.valueOf(nid);
		Noteuser u = noteDao.finduserid(noteid, realuserId);
		if (u != null) {
			notedelete(realuserId, noteid);
			return "redirect:/noteview";
		} else {
			System.out.println("权限不匹配,不能删除");
			return "redirect:/notlimit";

		}

	}

	

	// 目录删除
	@RequestMapping("catadelete")
	public String testrwd(Model model, HttpServletRequest request, HttpSession session) {
		long realuserId = Long.valueOf(session.getAttribute("userId") + "");
		String cid = request.getParameter("cid");
		long catalogid = Long.valueOf(cid);
//		Page<Note> upage= NoteService.paging(page, null, null, null, catalogid, null);
//		paging(model, upage);
		noteList=noteDao.findByCatalogId(catalogid, realuserId);
		// 没有做级联删除 先删除目录下的笔记 再删除目录
		for (Note note : noteList) {
			NoteService.delete(note.getNoteId());
		}
		catalogService.delete(catalogid);

		return "redirect:/noteview";
	}

	// 笔记主界面
	@RequestMapping(value = "noteview", method = RequestMethod.GET)
	public String test(Model model, HttpServletRequest request, HttpSession session,
			@RequestParam(value = "page", defaultValue = "0") int page,
			@RequestParam(value = "baseKey", required = false) String baseKey,
			@RequestParam(value = "type", required = false) String type,
			@RequestParam(value = "status", required = false) String status,
			@RequestParam(value = "time", required = false) String time,
			@RequestParam(value = "icon", required = false) String icon) {
		Long userid = Long.parseLong(session.getAttribute("userId") + "");
			num=dis.getDiscussId();
		}else{
			Reply replyyy=replyDao.findOne(discussId);
			dis=replyyy.getDiscuss();
			num=dis.getDiscussId();
		}
		if(!StringUtils.isEmpty(req.getParameter("comment"))){
		String comment=req.getParameter("comment");
		System.out.println(comment);
		
		if("discuss".equals(module)){
			//说明是回复-楼主
			System.out.println("回复-楼主");
			Discuss discuss=discussDao.findOne(discussId);
			Reply reply=new Reply(new Date(), comment, user, discuss);
			num=discuss.getDiscussId();
			replyService.save(reply);
		}else{ //说明是回复-评论
			System.out.println("回复-评论");
			Reply reply=replyDao.findOne(discussId);
			Comment comment2=new Comment(new Date(), comment, user, reply);
			commentservice.save(comment2);
			num=reply.getDiscuss().getDiscussId();
		}
		Discuss discuss=discussDao.findOne(num);
		if(user.getSuperman()){
			model.addAttribute("manage", "具有管理权限");
		}else{
			if(Objects.equals(user.getUserId(), discuss.getUser().getUserId())){
				model.addAttribute("manage", "具有管理权限");
			}
		}
		}
		disService.setDiscussMess(model, num,userId,page,size);
		return "chat/replytable";
	}
	
	//点赞处理
	@RequestMapping("likethis")
	public void likeThis(HttpServletRequest req,HttpServletResponse resp,@SessionAttribute("userId") Long userId){
		resp.setCharacterEncoding("utf-8");
		PrintWriter out = null;

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【项目介绍】 基于Java开发的OA办公审批系统源码+项目详细说明.zip 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 OA工程 一、项目概述 办公系统是一套自动办公系统系统主要包含:管理端和员工端 管理端包含:权限管理、审批管理、公众号菜单管理 员工端采用微信公众号操作,包含:办公审批、微信授权登录、消息推送等功能 项目服务器端架构:SpringBoot + MyBatisPlus + SpringSecurity + Redis + Activiti+ MySQL 前端架构:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios 二、核心技术 | 基础框架:SpringBoot | | ------------------------------------------------------------ | | 数据缓存:Redis | | 数据库:MySQL | | 权限控制:SpringSecurity | | 工作流引擎:Activiti | | 前端技术:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios | | 微信公众号:公众号菜单 + 微信授权登录 + 消息推送 | 三、项目模块 - oa-parent:根目录,管理子模块: - common:公共类父模块 - common-util:核心工具类 - service-util:service模块工具类 - spring-security:spring-security业务模块 - model:实体类模块 - service-oa系统服务模块 四、接口汇总 1. 角色管理--获取所有角色:/admin/system/sysRole/findAll 2. 角色管理--分页查询:/admin/system/sysRole/{page}/{limit} 3. 角色管理--根据id获取角色信息:/admin/system/sysRole/get/{id} 4. 角色管理--新增角色:/admin/system/sysRole/save 5. 角色管理--修改角色:/admin/system/sysRole/update 6. 角色管理--删除角色:/admin/system/sysRole/remove/{id} 7. 角色管理--根据id列表删除角色:/admin/system/sysRole/batchRemove 8. 后台管理--登录:/admin/system/index/login 9. 后台管理--获取信息:/admin/system/index/info 10. 后台管理--登出:/admin/system/index/logout 11. 用户管理--分页查询:/admin/system/sysUser/{page}/{limit} 12. 用户管理--根据id获取用户信息:/admin/system/sysUser/get/{id} 13. 用户管理--保存用户信息:/admin/system/sysUser/save 14. 用户管理--更新用户信息:/admin/system/sysUser/update 15. 用户管理--根据id删除用户信息:/admin/system/sysUser/remove/{id} 16. 用户管理--批量删除用户信息:/admin/system/sysUser/batchRemove 17. 用户管理--获取用户的角色信息:/admin/system/sysUser/toAssign/{userId} 18. 用户管理--给用户分配角色:/admin/system/sysUser/doAssi

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值