基于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等框架。
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);
}else{
return "common/proce";
}
return "redirect:/flowmanage";
}
//出差申请
@RequestMapping("evection")
public String evection(Model model, @SessionAttribute("userId") Long userId,HttpServletRequest request,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size){
//查找类型
List<SystemTypeList> outtype=tydao.findByTypeModel("aoa_evection");
@Controller
@RequestMapping("/")
public class MailController {
@Autowired
private MailnumberDao mndao;
@Autowired
private StatusDao sdao;
@Autowired
private TypeDao tydao;
@Autowired
private UserDao udao;
@Autowired
private DeptDao ddao;
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;
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;
if (!(getZero)) {
sb.insert(0, CN_UPPER_NUMBER[numUnit]);
@Autowired
private InformRelationDao informrelationDao;
@Autowired
private InformRelationService informrelationservice;
@Autowired
private NoticeMapper nm;
/**
* 通知管理面板
*
* @return
*/
@RequestMapping("infrommanage")
public String inform(@RequestParam(value = "page", defaultValue = "0") int page,@SessionAttribute("userId") Long userId,Model model) {
Page<NoticesList> page2 = informService.pageThis(page,userId);
List<NoticesList> noticeList=page2.getContent();
List<Map<String, Object>> list=informService.fengZhuang(noticeList);
model.addAttribute("list", list);
model.addAttribute("page", page2);
//设置变量,需要load的url;
model.addAttribute("url", "infrommanagepaging");
return "inform/informmanage";
}
@RequestMapping("forwardother")
public String forwardOther(@SessionAttribute("userId")Long userId,@RequestParam(value="noticeId")Long noticeId){
List<User> users=uDao.findByFatherId(userId);
NoticesList nl=informDao.findOne(noticeId);
List<NoticeUserRelation> nurs=new ArrayList<>();
for (User user : users) {
nurs.add(new NoticeUserRelation(nl, user, false));
}
informrelationservice.saves(nurs);
return "redirect:/infromlist";
}
// demo
// @RequestMapping("cccc")
// public @ResponseBody Page<NoticesList> ddd(@RequestParam(value = "page", defaultValue = "0") int page,
// @RequestParam(value = "size", defaultValue = "10") int size,
// @RequestParam(value = "baseKey", required = false) String baseKey, @SessionAttribute("userId") Long userId,
// Model model) {
}
// 如果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();
}
}
package cn.gson.oasys.controller.chat;
attend.setStatusId(47L);
}
adao.save(attend);
}
}
}
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())){
StringTokenizer st = new StringTokenizer(shareuser, ";");
while (st.hasMoreElements()) {
users.add(udao.findByUserName(st.nextToken()));
}
scheduleList.setUser(user);
if(users.size()>0){
scheduleList.setUsers(users);
}
System.out.println(scheduleList);
daydao.save(scheduleList);
return "/daymanage";
}
@RequestMapping("dayremove")
public String dayremove(@RequestParam(value="rcid") Long rcid){
ScheduleList rc = daydao.findOne(rcid);
daydao.delete(rc);
return "/daymanage";
}
/**
* 一下是日历controller
* @return
*/
@RequestMapping("daycalendar")
private String daycalendar() {
return "daymanage/daycalendar";
}
// @RequestMapping("mycalendarload")
// public void mycalendarload(@SessionAttribute("userId") Long userid,HttpServletResponse response) throws IOException{
// List<ScheduleList> se = dayser.aboutmeschedule(userid);
//
// for (ScheduleList scheduleList : se) {
// System.out.println(scheduleList);
// }
//
// String json = JSONObject.toJSONString(se);
// response.setHeader("Cache-Control", "no-cache");
// response.setContentType("text/json;charset=UTF-8");
// response.getWriter().write(json);
//
// }
@Controller
@RequestMapping("/")
public class MailController {
@Autowired
private MailnumberDao mndao;
@Autowired
private StatusDao sdao;
@Autowired
private TypeDao tydao;
@Autowired
private UserDao udao;
@Autowired
private DeptDao ddao;
@Autowired
private RoleDao rdao;
@Autowired
private PositionDao pdao;
@Autowired
private InMailDao imdao;
@Autowired
private MailreciverDao mrdao;
@Autowired
private AttachmentDao AttDao;
@Autowired
private MailServices mservice;
@Autowired
}
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()];
IOUtils.readFully(input, data);
// 将文件流输出到浏览器
IOUtils.write(data, sos);
input.close();
sos.close();
}
model.addAttribute("files", fileLists);
model.addAttribute("isload",1);
break;
case "trash":
filePaths = fpdao.findByPathUserIdAndPathIstrash(userid, 1L);
fileLists = fldao.findByUserAndFileIstrash(user, 1L);
model.addAttribute("paths", filePaths);
model.addAttribute("files", fileLists);
model.addAttribute("istrash", 1);
model.addAttribute("isload",1);
break;
case "share":
fileLists = fldao.findByFileIsshareAndFileIstrash(1L, 0L);
model.addAttribute("files", fileLists);
model.addAttribute("isshare", 1);
model.addAttribute("isload",1);
model.addAttribute("userid",userid);
break;
default:
break;
}
model.addAttribute("type", type);
return "file/filetypeload";
}
@RequestMapping("findfileandpath")
public String findfileandpath(@SessionAttribute("userId") Long userid,
@RequestParam(value = "findfileandpath",required=false) String findfileandpath,
@RequestParam(value = "type",defaultValue="all") String type,
Model model){
System.out.println("查找!~~~~~~");
String findlike = "%" +findfileandpath+ "%";
User user = udao.findOne(userid);
FilePath fpath = fpdao.findByParentIdAndPathUserId(1L, userid);
String contenttype;
List<FileList> fileLists = null;
List<FilePath> filePaths = null;
System.out.println(type);
switch (type) {
case "document":
fileLists = fldao.finddocumentlike(user, findlike);
model.addAttribute("mailnum", mailnum);
return "mail/wirtemail";
}
/**
* 发送邮件
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping("pushmail")
public String push(@RequestParam("file")MultipartFile file,HttpServletRequest request,@Valid Inmaillist mail,BindingResult br,@SessionAttribute("userId") Long userId) throws IllegalStateException, IOException{
User tu=udao.findOne(userId);
String name=null;
Attachment attaid=null;
Mailnumber number=null;
StringTokenizer st =null;
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());
}else{
if(!StringUtil.isEmpty(request.getParameter("fasong"))){
name=request.getParameter("fasong");
}
if(!StringUtil.isEmpty(name)){
if(!StringUtil.isEmpty(file.getOriginalFilename())){
attaid=mservice.upload(file, tu);
attaid.setModel("mail");
AttDao.save(attaid);
}
//发送成功
mail.setPush(true);
}else{
//存草稿
mail.setInReceiver(null);
}
mail.setMailFileid(attaid);
mail.setMailCreateTime(new Date());
mail.setMailUserid(tu);
if(!mail.getInmail().equals(0)){
number=mndao.findOne(mail.getInmail());
mail.setMailNumberid(number);
}
//存邮件
Inmaillist imail=imdao.save(mail);
if(!StringUtil.isEmpty(name)){
if(mservice.isContainChinese(mail.getInReceiver())){
BindingResult br) throws IllegalStateException, IOException {
service.addConverter(new StringtoDate());
// 格式化开始日期和结束日期
Date start = service.convert(plan2.getStartTime(), Date.class);
Date end = service.convert(plan2.getEndTime(), Date.class);
Attachment att = null;
Long attid = null;
Plan plan = null;
HttpSession session = req.getSession();
long userid = Long.valueOf(session.getAttribute("userId") + "");
User user = userDao.findOne(userid);
// 获取到类型和状态id
String type = req.getParameter("type");
String status = req.getParameter("status");
long typeid = typeDao.findByTypeModelAndTypeName("aoa_plan_list", type).getTypeId();
long statusid = statusDao.findByStatusModelAndStatusName("aoa_plan_list", status).getStatusId();
long pid = Long.valueOf(req.getParameter("pid") + "");
// 这里返回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());
}
// 校验通过,下面写自己的逻辑业务
else {
if (!StringUtils.isEmpty(session.getAttribute("getId"))) {
System.out.println("验证通过,进入狗太了");
}
// 新建
if (pid == -1) {
if (!file.isEmpty()) {
att = (Attachment) fServices.savefile(file, user, null, false);
attid = att.getAttachmentId();
} else if (file.isEmpty())
attid = null;
plan = new Plan(typeid, statusid, attid, start, end, new Date(), plan2.getTitle(), plan2.getLabel(),
plan2.getPlanContent(), plan2.getPlanSummary(), null, user);
planDao.save(plan);
}
if (pid > 0) {
@Controller
@RequestMapping("/")
public class AttendceController {
Logger log = LoggerFactory.getLogger(getClass());
@Autowired
AttendceDao attenceDao;
@Autowired
AttendceService attendceService;
@Autowired
UserDao uDao;
@Autowired
UserService userService;
@Autowired
TypeDao typeDao;
@Autowired
StatusDao statusDao;
List<Attends> alist;
while (st.hasMoreElements()) {
users.add(udao.findByUserName(st.nextToken()));
}
scheduleList.setUser(user);
if(users.size()>0){
scheduleList.setUsers(users);
}
System.out.println(scheduleList);
daydao.save(scheduleList);
return "/daymanage";
}
@RequestMapping("dayremove")
public String dayremove(@RequestParam(value="rcid") Long rcid){
ScheduleList rc = daydao.findOne(rcid);
daydao.delete(rc);
return "/daymanage";
}
/**
* 一下是日历controller
* @return
*/
@RequestMapping("daycalendar")
private String daycalendar() {
return "daymanage/daycalendar";
}
// @RequestMapping("mycalendarload")
// public void mycalendarload(@SessionAttribute("userId") Long userid,HttpServletResponse response) throws IOException{
// List<ScheduleList> se = dayser.aboutmeschedule(userid);
//
// for (ScheduleList scheduleList : se) {
// System.out.println(scheduleList);
// }
//
// String json = JSONObject.toJSONString(se);
// response.setHeader("Cache-Control", "no-cache");
// response.setContentType("text/json;charset=UTF-8");
// response.getWriter().write(json);
//
// }
}
informrelationservice.deleteOne(relation);
return "forward:/infromlist";
}
/**
* 通知列表
*
* @return
*/
@RequestMapping("infromlist")
public String infromList(HttpSession session, HttpServletRequest req, Model model,
@RequestParam(value="pageNum",defaultValue="1") int page) {
Long userId = Long.parseLong(session.getAttribute("userId") + "");
PageHelper.startPage(page, 10);
List<Map<String, Object>> list = nm.findMyNotice(userId);
PageInfo<Map<String, Object>> pageinfo=new PageInfo<Map<String, Object>>(list);
List<Map<String, Object>> list2=informrelationservice.setList(list);
for (Map<String, Object> map : list2) {
System.out.println(map);
}
model.addAttribute("url", "informlistpaging");
model.addAttribute("list", list2);
model.addAttribute("page", pageinfo);
System.out.println(pageinfo);
return "inform/informlist";
}
/**
* 编辑通知界面
*/
@RequestMapping("informedit")
public String infromEdit(HttpServletRequest req, HttpSession session, Model model) {
session.removeAttribute("noticeId");
List<SystemTypeList> typeList = typeDao.findByTypeModel("inform");
List<SystemStatusList> statusList = statusDao.findByStatusModel("inform");
if (!StringUtils.isEmpty(req.getAttribute("errormess"))) {
req.setAttribute("errormess", req.getAttribute("errormess"));
}
if (!StringUtils.isEmpty(req.getAttribute("success"))) {
req.setAttribute("success", "数据保存成功");
}
req.setAttribute("typeList", typeList);
req.setAttribute("statusList", statusList);
if (!StringUtils.isEmpty(req.getParameter("id"))) {
Long noticeId = Long.parseLong(req.getParameter("id"));
NoticesList noticeList = informDao.findOne(noticeId);
model.addAttribute("noticeList", noticeList);
Page<User> userspage=null;
Pageable pa=new PageRequest(page, size);
if(StringUtils.isEmpty(baseKey)){
if("ALL".equals(alph)){
userspage=uDao.findAll(pa);
}else{
userspage=uDao.findByPinyinLike(alph+"%",pa);
}
}else{
if("ALL".equals(alph)){
userspage=uDao.findUsers("%"+baseKey+"%",baseKey+"%", pa);
}else{
userspage=uDao.findSelectUsers("%"+baseKey+"%", alph+"%",pa);
}
}
if(!StringUtils.isEmpty(baseKey)){
model.addAttribute("baseKey", baseKey);
model.addAttribute("sort", "&alph="+alph+"&baseKey="+baseKey);
}else{
model.addAttribute("sort", "&alph="+alph);
}
List<User> users=userspage.getContent();
model.addAttribute("users", users);
model.addAttribute("page", userspage);
model.addAttribute("url", "inaddresspaging");
return "address/inaddrss";
}
}
package cn.gson.oasys.controller.attendce;
}
adao.save(attend);
}
}
}
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);
}
if(u.getPosition().getId().equals(7L)){