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

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

062024052711

112024052711

182024052711

222024052711

252024052711

282024052711

332024052711

362024052711

392024052711

432024052711

462024052711

492024052711

532124033108

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

java springbootOA办公自动化系统:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
	out.close();
}

private void likeThisFun(HttpServletRequest req, Long userId) {
Long replyId=Long.parseLong(req.getParameter("replyId"));
String module=req.getParameter("module");
int number=0;
int likenum=0;
User user=uDao.findOne(userId);
if("discuss".equals(module)){
Discuss discuss=discussDao.findOne(replyId);
Set<User> users=discuss.getUsers();
likenum=discuss.getUsers().size();
if(!discuss.getUsers().contains(user)){
System.out.println("保存一个讨论点赞记录");
users.add(user);
number=1;
}else{
System.out.println("删除掉一个讨论点赞记录");
users.remove(user);
number =-1;
}
discuss.setUsers(users);
disService.save(discuss);
}else if("reply".equals(module)){
Reply reply=replyDao.findOne(replyId);
Set<User> users=reply.getUsers();
likenum=reply.getUsers().size();
if(!reply.getUsers().contains(user)){
System.out.println("保存一个回复点赞记录");
users.add(user);
number=1;
}else{
System.out.println("删除掉一个回复点赞记录");
users.remove(user);
number =-1;
}
reply.setUsers(users);
replyService.save(reply);
}
}

//回复分页处理
@RequestMapping("/replypaging")
public String replyPaging(HttpServletRequest req,
@RequestParam(value="selecttype") Long selecttype,
@RequestParam(value="selectsort") Long selectsort,
@RequestParam(value="page",defaultValue="0") int page,
@RequestParam(value="size",defaultValue="5") int size,
@SessionAttribute("userId") Long userId,Model model){
System.out.println(size);
System.out.println(page);
System.out.println("selecttype:"+selecttype);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 */
public void index5(ProcessList pro,String val,User lu,MultipartFile filePath,String name) throws IllegalStateException, IOException{

pro.setTypeNmae(val);
pro.setApplyTime(new Date());
pro.setUserId(lu);
pro.setStatusId(23L);
pro.setShenuser(name);
Attachment attaid=null;
if(!StringUtil.isEmpty(filePath.getOriginalFilename())){
attaid=mservice.upload(filePath, lu);
attaid.setModel("aoa_bursement");
AttDao.save(attaid);
pro.setProFileid(attaid);
}
}
public void index8(ProcessList pro,String val,User lu,String name) {
pro.setTypeNmae(val);
pro.setApplyTime(new Date());
pro.setUserId(lu);
pro.setStatusId(23L);
pro.setShenuser(name);
}
/**
* 存主表
*/
public void save(Long proid,User u,Reviewed reviewed,ProcessList pro,User u2){
Reviewed re=redao.findByProIdAndUserId(proid,u);
re.setAdvice(reviewed.getAdvice());
re.setStatusId(reviewed.getStatusId());
re.setReviewedTime(new Date());
re.setStatusId(reviewed.getStatusId());
redao.save(re);


Reviewed re2=new Reviewed();
re2.setProId(pro);
re2.setUserId(u2);
re2.setStatusId(23L);
redao.save(re2);

pro.getShenuser();
pro.setShenuser(pro.getShenuser()+";"+u2.getUserName());
pro.setStatusId(24L);//改变主表的状态
prodao.save(pro);
}
/**
* 存审核表
*/
public void index7(User reuser,ProcessList pro){
Reviewed revie=new Reviewed();
revie.setUserId(reuser);
revie.setStatusId(23L);
revie.setProId(pro);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
		model.addAttribute("mail", mail);
model.addAttribute("mess", title);
model.addAttribute("file", mail.getMailFileid());

return "mail/seemail";
}

/**
*
*/
@RequestMapping("refresh")
public String refresh(HttpServletRequest req,@SessionAttribute("userId") Long userId,Model model,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size){
//查找用户
User user=udao.findOne(userId);
String title=req.getParameter("title");
Page<Pagemail> pagelist=null;
List<Map<String, Object>> maillist=null;
//得到恢复删除id
String ids=req.getParameter("ids");

StringTokenizer st = new StringTokenizer(ids, ",");
while (st.hasMoreElements()) {
//找到该用户联系邮件的中间记录
Mailreciver mailr=mrdao.findbyReciverIdAndmailId(user,Long.parseLong(st.nextToken()));
if(!Objects.isNull(mailr)){
mailr.setDel(false);
mrdao.save(mailr);
}else{
return "redirect:/notlimit";
}
}
//分页及查找
pagelist=mservice.recive(page, size, user, null,title);
maillist=mservice.mail(pagelist);

model.addAttribute("page", pagelist);
model.addAttribute("maillist",maillist);
model.addAttribute("url","mailtitle");
model.addAttribute("mess", title);

return "mail/mailbody";

}
}
package cn.gson.oasys.controller.note;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public String dele(HttpServletRequest req,@SessionAttribute("userId") Long userId,Model model){
User lu=udao.findOne(userId);//审核人
Long proid=Long.parseLong(req.getParameter("id"));
Reviewed rev=redao.findByProIdAndUserId(proid, lu);
if(!Objects.isNull(rev)){
rev.setDel(true);
redao.save(rev);
}else{
return "common/proce";
}
return "redirect:/audit";

}

/**
* 下载文件
* @param response
* @param fileid
*/
@RequestMapping("file")
public void downFile(HttpServletResponse response, @RequestParam("fileid") Long fileid) {
try {
Attachment attd = AttDao.findOne(fileid);
File file = new File(rootpath,attd.getAttachmentPath());
response.setContentLength(attd.getAttachmentSize().intValue());
response.setContentType(attd.getAttachmentType());
response.setHeader("Content-Disposition","attachment;filename=" + new String(attd.getAttachmentName().getBytes("UTF-8"), "ISO8859-1"));
proservice.writefile(response, file);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 图片预览
* @param response
* @param fileid
*/
@RequestMapping("show/**")
public void image(Model model, HttpServletResponse response, @SessionAttribute("userId") Long userId, HttpServletRequest request)
throws IOException {

String startpath = new String(URLDecoder.decode(request.getRequestURI(), "utf-8"));

String path = startpath.replace("/show", "");

File f = new File(rootpath, path);
System.out.println(f.getAbsolutePath());
ServletOutputStream sos = response.getOutputStream();
FileInputStream input = new FileInputStream(f.getPath());
byte[] data = new byte[(int) f.length()];
IOUtils.readFully(input, data);
// 将文件流输出到浏览器
IOUtils.write(data, sos);
input.close();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
			}
}
}
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;
likeThisFun(req, userId);
// try {
// out = resp.getWriter();
// if(number==1){
// out.println("已赞("+(likenum+1)+")");
// }else{
// out.println("赞("+(likenum-1)+")");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
out.flush();
out.close();
}

private void likeThisFun(HttpServletRequest req, Long userId) {
Long replyId=Long.parseLong(req.getParameter("replyId"));
String module=req.getParameter("module");
int number=0;
int likenum=0;
User user=uDao.findOne(userId);
if("discuss".equals(module)){
Discuss discuss=discussDao.findOne(replyId);
Set<User> users=discuss.getUsers();
likenum=discuss.getUsers().size();
if(!discuss.getUsers().contains(user)){
System.out.println("保存一个讨论点赞记录");
users.add(user);
number=1;
}else{
System.out.println("删除掉一个讨论点赞记录");


项目链接:
https://javayms.github.io?id=251422302105200ge
https://javayms.pages.dev?id=251422302105200ge