SpringBoot OA自动化办公系统

OA办公系统源码及需求文档https://download.csdn.net/download/Zyw907155124/64741549

1、产品介绍

       OA系统是将现代办公和计算机网络的功能相结合的一中新型办公方式,是针对日常工作,改变传统手工办公效率低下现状的一种变革。omation的简称。

OFFIC :

       AUTOMATION的缩写,本意为利用技术的手段提高办公的效率,进而实现办公的自动化处理。采用Internet/Intranet技术,基于工作流的概念,使企业内部人员方便快捷地共享信息,高效地协同工作;改变过去复杂、低效的手工办公方式,实现迅速、全方位的信息采集、信息处理,为企业的管理和决策提供科学的依据。

强调三点:

       利用先进的科学技术和现代办公设备;

       办公人员和办公设备构成的人机信息处理系统;

       提高效率和改进质量是OA的目的。

2、系统概述

系统逻辑架构图 :

 系统技术架构图:

相关技术

 oss:本项目中所有涉及上传文件的模块,均使用了oss存储技术。申请和邮件的附件、云端文件的管理,都不需要再在项目的相对路径下操作,大大降低了项目在本地的内存占用。

 3、项目演示及功能介绍

(1)登录页面

 本系统整体根据登录用户的职位权限进行相应的业务功能分配。

系统默认的权限等级从上至下依次为超级管理员、CEO、总经理、部门经理、普通员工...

可在用户管理中对职位名称以及权限等级进行自定义设置。

(2)主页: 

主页的控制面板通过可视化工具,依次展示了本周登录用户的登录统计记录、员工任务完成排行榜、个人的公告通知、个人行事历、个人流程管理、个人工作计划以及我的便签。

本系统的功能模块非常繁多,涵盖了当下职场上所需要的大部分需求。

 (3)用户管理:

 部门管理:

 

 在线用户:

 

 职位管理:

 

 用户管理:

 

 

(4)角色列表

 

 角色管理:查询所有职位对应的角色,新增角色,修改角色名称,删除角色,设定角色的访问菜单权限

 设定:设定角色的访问菜单权限

 (5)考勤管理

 签到打卡:登录后可在控制面板进行快捷签到打卡

 考前列表:签到打卡记录可在此处查看

 考勤周报表/月报表

 

 直系下属的考勤状态记录可以在这里查看到。

考勤管理:

(7)流程管理:

新建流程

我的申请:申请人提交自己的申请之后可以再我的申请中,查询提交的申请详情,同时可以时刻关注自己的审核进度

流程审核:公司领导收到下级员工提交的流程申请后,可以在流程审核中浏览、查询审批过和未被处理过的流程,并可以选择指定流程进行审核和查看详情的操作。

 对指定流程进行审核,可以观看到所有审核过该流程的审核记录,并可选择自己对其的审核结果,中层领导可选择审核并拒绝批准或审核并流转,总经理和CEO则可以在选择审核的状态后最终结案。

 注意:1、整个审核过程中,只要有一位审核者选择了拒绝审核,则整个审核以未批准结束,已经流转出去的审核,也将自动判定为为通过。            2、高层领导在收到流转后的审核时,若中层领导未审核完,则只可观看,不能进行审核操作。

 

 (8)公告管理

 通知管理:

 

 通知列表:

 (9)邮件管理

 

写信:

 

 查看邮件:

 (10)任务管理:

 任务管理:

 我的任务:

 (11)日程管理

 日程管理:

 我的日历:

(12) 工作计划

 计划管理:

 

 计划报表:

 

 (13)文件管理

可以对文件夹、文件进行复制、转移、删除、分享...

 (14)笔记管理

 (15)通讯录

 

(16)讨论区

 4、业务难点

本系统最复杂的业务模块是流程审核

流程审核后端代码:

package com.hopu.oa.controller.process;

import com.hopu.oa.dao.process.BursementDao;
import com.hopu.oa.entity.management.AoaTypeList;
import com.hopu.oa.entity.process.*;
import com.hopu.oa.entity.user.AoaUser;
import com.hopu.oa.service.impl.process.BursementServiceImpl;
import com.hopu.oa.service.impl.process.auditServiceImpl;

import com.hopu.oa.until.MoneyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.*;


@Controller
public class auditController {
    @Autowired
    private auditServiceImpl auditService;

    @Autowired
    private BursementDao bursementDao;

    @Autowired
    private BursementServiceImpl bursementService;

    @RequestMapping("/xinxeng")
    public String xinXeng(Model model){
        return "process/procedure";
    }

    @RequestMapping("/audit")
    public String audit(String find,Model model, HttpSession session, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "size", defaultValue = "10") int size){
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        int totalElements = auditService.findAll(aoaUser.getUserId(),find,0,0).size();
        //有几页
        int totalPages = totalElements % size ==0 ? totalElements / size : totalElements / size + 1;
        List<ProcessAll> all = auditService.findAll(aoaUser.getUserId(), find, (page - 1) * size, size);
        HashMap<String, Integer> map1 = new HashMap<>();
        map1.put("totalElements", totalElements);
        map1.put("totalPages", totalPages);
        map1.put("number", page);
        map1.put("size", size);

        model.addAttribute("page", map1);
        model.addAttribute("prolist",all);
        model.addAttribute("find",find);
        model.addAttribute("url", "audtable");
        return "process/auditing";
    }

    @RequestMapping("/audtable")
    public String audtable(String find,Model model, HttpSession session, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "size", defaultValue = "10") int size){
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        int totalElements = auditService.findAll(aoaUser.getUserId(),find,0,0).size();
        //有几页
        int totalPages = totalElements % size ==0 ? totalElements / size : totalElements / size + 1;
        List<ProcessAll> all = auditService.findAll(aoaUser.getUserId(), find, (page - 1) * size, size);
        HashMap<String, Integer> map1 = new HashMap<>();
        map1.put("totalElements", totalElements);
        map1.put("totalPages", totalPages);
        map1.put("number", page);
        map1.put("size", size);

        model.addAttribute("page", map1);
        model.addAttribute("prolist",all);
        model.addAttribute("find",find);
        model.addAttribute("url", "audtable");
        return "process/audtable";
    }


    @RequestMapping("particular")
    public String particular(Model model,Integer processId,Integer page,String typeName,String remove){
        System.out.println("processId = " + processId);
        System.out.println("typeName = " + typeName);
        System.out.println("remove = " + remove);
        model.addAttribute("remove",remove);
        model.addAttribute("page",page);
        model.addAttribute("processId",processId);

        //查询全部
        AoaProcessList aoaProcessList = bursementService.selectById(processId);
        HashMap<String, Object> maps = new HashMap<>();

//        预览图片,获取路径
        Integer proFileId = aoaProcessList.getProFileId();
        if (!Objects.isNull(proFileId)){
            AoaAttachmentList aoaAttachmentList = bursementDao.selectAoaAttachmentList(proFileId);
            maps.put("file",aoaAttachmentList);
            maps.put("filePath",aoaAttachmentList.getAttachmentPath());
            System.out.println(aoaAttachmentList.getAttachmentPath());
            maps.put("fileType","img");

        }else{
            maps.put("file","file");
            maps.put("fileType","bigImg");
        }
        HashMap<String, String> map = new HashMap<>();

        if (typeName.equals("费用报销")==true){
            AoaBursement aoaBursement = bursementService.selectAllBursement(processId);

            AoaUser aoaUser = bursementService.selectByProcessUserIdAfter(aoaBursement.getUserName());//证明人

            AoaTypeList aoaTypeList = bursementService.selectByTypeId(aoaBursement.getAoaProcessList().getDeeplyId());
            AoaUser aoaUser1 = bursementService.selectByProcessUserIdAfter(aoaBursement.getOperationName());
            List<AoaDetailsburse> aoaDetailsburses = bursementService.selectByBursementIdAfter(aoaBursement.getBursementId());

            map.put("typename",typeName);
            map.put("processName",aoaBursement.getAoaProcessList().getProcessName());
            map.put("harryname",aoaTypeList.getTypeName());//紧急程度
            map.put("username",aoaBursement.getAoaUser().getUserName());//申请人、报销人员
            map.put("deptname",aoaBursement.getAoaDept().getDeptName());
            map.put("applytime",aoaBursement.getAoaProcessList().getApplyTime());
            map.put("zhengmingren",aoaUser.getUserName());//证明人
            map.put("name",aoaBursement.getName());
            map.put("type",aoaBursement.getAoaTypeList().getTypeName());
            map.put("audit",aoaUser1.getUserName());
            map.put("burseTime",aoaBursement.getBurseTime());//报销日期
            map.put("allinvoices",aoaBursement.getAllinvoices().toString());//票据总数
            map.put("managerAdvice",aoaBursement.getManagerAdvice());
            map.put("financialAdvice",aoaBursement.getFinancialAdvice());
            map.put("allMoney",aoaBursement.getAllMoney().toString());
            map.put("money", MoneyUtil.toChinese(aoaBursement.getAllMoney().toString()));
            map.put("processDescribe",aoaBursement.getAoaProcessList().getProcessDes());

            model.addAttribute("maps",maps);
            model.addAttribute("map",map);
            model.addAttribute("detaillist",aoaDetailsburses);
            return "process/serch";//费用报销单

        }else if (typeName.equals("出差申请")==true){
            AoaEvection aoaEvection = bursementService.selectEvectionByProcessId(processId);
            AoaTypeList aoaTypeList = bursementService.selectByTypeId(aoaEvection.getAoaProcessList().getDeeplyId());

            map.put("typename",typeName);
            map.put("processName",aoaEvection.getAoaProcessList().getProcessName());
            map.put("harryname",aoaTypeList.getTypeName());//紧急程度
            map.put("username",aoaEvection.getAoaUser().getUserName());
            map.put("deptname",aoaEvection.getAoaDept().getDeptName());
            map.put("applytime",aoaEvection.getAoaProcessList().getApplyTime());
            map.put("startime",aoaEvection.getAoaProcessList().getStartTime());
            map.put("endtime",aoaEvection.getAoaProcessList().getEndTime());
            if (aoaEvection.getAoaProcessList().getProcseeDays()!=null){
                map.put("tianshu",aoaEvection.getAoaProcessList().getProcseeDays().toString());
            }
            map.put("processDescribe",aoaEvection.getAoaProcessList().getProcessDes());
            map.put("managerAdvice",aoaEvection.getManagerAdvice());
            map.put("personnelAdvice",aoaEvection.getPersonnelAdvice());
            map.put("name",aoaEvection.getAoaProcessList().getTypeName());

            model.addAttribute("maps",maps);
            model.addAttribute("map",map);
            model.addAttribute("statusid",aoaEvection.getAoaProcessList().getStatusId());
            return "process/eveserach";//出差申请单

        }else if (typeName.equals("出差费用")==true){

            AoaEvectionmoney aoaEvectionmoney = bursementService.selectEvectionmoneyByProcessId(processId);
            AoaTypeList aoaTypeList = bursementService.selectByTypeId(aoaEvectionmoney.getAoaProcessList().getDeeplyId());
            List<AoaStay> aoaStay = bursementService.selectStayByEvectionmoneyId(aoaEvectionmoney.getEvectionmoneyId());
            List<AoaTraffic> aoaTraffic = bursementService.selectTrafficBy(aoaEvectionmoney.getEvectionmoneyId());
            Integer staymoney = 0;
            Integer tramoney = 0;

            for (int i = 0; i < aoaStay.size(); i++) {
                staymoney+=aoaStay.get(i).getStayMoney();
            }
            System.out.println("staymoney = " + staymoney);
            for (int i = 0; i < aoaTraffic.size(); i++) {
                tramoney+=aoaTraffic.get(i).getTrafficMoney();
            }
            System.out.println("tramoney = " + tramoney);
            map.put("typename",typeName);
            map.put("processName",aoaEvectionmoney.getAoaProcessList().getProcessName());
            map.put("harryname",aoaTypeList.getTypeName());//紧急程度
            map.put("username",aoaEvectionmoney.getAoaUser().getUserName());
            map.put("deptname",aoaEvectionmoney.getAoaDept().getDeptName());
            map.put("applytime",aoaEvectionmoney.getAoaProcessList().getApplyTime());
            map.put("startime",aoaEvectionmoney.getAoaProcessList().getStartTime());
            map.put("endtime",aoaEvectionmoney.getAoaProcessList().getEndTime());
            map.put("tianshu",aoaEvectionmoney.getAoaProcessList().getProcseeDays().toString());
            map.put("processDescribe",aoaEvectionmoney.getAoaProcessList().getProcessDes());
            map.put("name",aoaEvectionmoney.getAoaProcessList().getTypeName());
            map.put("managerAdvice",aoaEvectionmoney.getManagerAdvice());
            map.put("financialAdvice",aoaEvectionmoney.getFinancialAdvice());
            if (aoaEvectionmoney.getPro()!=null){
                map.put("pro",aoaEvectionmoney.getPro().toString());
            }
            Integer allmoney = staymoney+tramoney;
            model.addAttribute("staymoney",staymoney);
            model.addAttribute("tramoney",tramoney);

            model.addAttribute("allmoney",MoneyUtil.toChinese(allmoney.toString()));
            model.addAttribute("staylist",aoaStay);
            model.addAttribute("tralist",aoaTraffic);
            model.addAttribute("map",map);
            model.addAttribute("maps",maps);
            return "process/evemonserch";//出差费用表

        }else if (typeName.equals("离职申请")==true){
            AoaResign aoaResign = bursementService.selectResignByByProcessId(processId);
            AoaTypeList aoaTypeList = bursementService.selectByTypeId(aoaResign.getAoaProcessList().getDeeplyId());
            AoaUser aoaUser = bursementService.selectByProcessUserIdAfter(aoaResign.getHandUser());//证明人

            map.put("typename",typeName);
            map.put("processName",aoaResign.getAoaProcessList().getProcessName());
            map.put("harryname",aoaTypeList.getTypeName());//紧急程度
            map.put("username",aoaResign.getAoaUser().getUserName());
            map.put("deptname",aoaResign.getAoaDept().getDeptName());
            map.put("applytime",aoaResign.getAoaProcessList().getApplyTime());
            map.put("handUser",aoaUser.getUserName());
            map.put("nofinish",aoaResign.getNofinish());
            map.put("processDescribe",aoaResign.getAoaProcessList().getProcessDes());
            map.put("managerAdvice",aoaResign.getManagerAdvice());
            map.put("financialAdvice",aoaResign.getFinancialAdvice());
            map.put("personnelAdvice",aoaResign.getPersonnelAdvice());
            System.out.println(aoaResign.getPersonnelAdvice());
            model.addAttribute("finish",aoaResign.getIsFinish());
            model.addAttribute("statusId",aoaResign.getAoaProcessList().getStatusId());
            model.addAttribute("map",map);
            return "process/resserch";

        } else if (typeName.equals("请假申请")==true) {
            AoaHoliday holiday= bursementService.selectByID(processId);

            AoaHoliday aoaHoliday = bursementService.selectByProID(processId);

            model.addAttribute("maps",maps);
            model.addAttribute("map", aoaProcessList);
            model.addAttribute("type", aoaHoliday);
            model.addAttribute("eve",holiday);
            model.addAttribute("statusId",aoaProcessList.getStatusId());
            return "process/holiserch";

        }else if (typeName.equals("转正申请")==true){
            AoaRegular aoaRegular = bursementService.selectRegularByProcessId(processId);
            AoaTypeList aoaTypeList = bursementService.selectByTypeId(aoaRegular.getAoaProcessList().getDeeplyId());

            map.put("typename",typeName);
            map.put("processName",aoaRegular.getAoaProcessList().getProcessName());
            map.put("harryname",aoaTypeList.getTypeName());//紧急程度
            map.put("username",aoaRegular.getAoaUser().getUserName());
            map.put("deptname",aoaRegular.getAoaDept().getDeptName());
            map.put("applytime",aoaRegular.getAoaProcessList().getApplyTime());
            map.put("startime",aoaRegular.getAoaProcessList().getStartTime());
            map.put("endtime",aoaRegular.getAoaProcessList().getEndTime());
            map.put("tianshu",aoaRegular.getAoaProcessList().getProcseeDays().toString());
            map.put("experience",aoaRegular.getExperience());
            map.put("understand",aoaRegular.getUnderstand());
            map.put("pullulate",aoaRegular.getPullulate());
            map.put("deficiency",aoaRegular.getDeficiency());
            map.put("dobetter",aoaRegular.getDobetter());
            map.put("advice",aoaRegular.getAdvice());
            map.put("managerAdvice",aoaRegular.getManagerAdvice());
            map.put("personnelAdvice",aoaRegular.getPersonnelAdvice());
            map.put("processDescribe",aoaRegular.getAoaProcessList().getProcessDes());

            model.addAttribute("statusId",aoaRegular.getAoaProcessList().getStatusId());
            model.addAttribute("map",map);
            return "process/reguserch";

        }else if (typeName.equals("加班申请")==true){
            AoaOvertime overtime = bursementService.selectByProId(processId);
            AoaOvertime aoaOvertime = bursementService.selectOverAndTypeById(processId);
            String type = aoaOvertime.getAoaTypeList().getTypeName();//加班类型

            model.addAttribute("type", type);
            model.addAttribute("eve", overtime);
            model.addAttribute("map", aoaProcessList);
            model.addAttribute("statusId",aoaProcessList.getStatusId());
            return "process/overserch";
        }
        return "process/evemonserch";
    }

    @RequestMapping("sdelete")
    public String sdelete(Model model,String processId,Integer page){
        System.out.println("processId = " + processId);
        System.out.println("page = " + page);
        int i = auditService.deleteProcess(Integer.parseInt(processId));
        System.out.println("i = " + i);
        return "redirect:audit?page="+page;
    }


    /**
     * 审核
     * @param processId
     * @param model
     * @param session
     * @param userName
     * @param page
     * @param size
     * @return
     */
    @RequestMapping("auditing")
    public String auditing(Integer processId,Model model,HttpSession session,
                           String userName,Integer nowpage,
                           @RequestParam(value = "page", defaultValue = "1") int page,
                           @RequestParam(value = "size", defaultValue = "5") int size){
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        int id = processId;
        AoaUser user = (AoaUser) session.getAttribute("user");
        int totalElements = auditService.findUserInfoByName(aoaUser.getUserId(),userName, page, 0,user.getRoleId()).size();
        int totalPages = totalElements % size == 0 ? totalElements / size : totalElements / size + 1;
        List<AoaUser> userInfoo = auditService.findUserInfoByName( aoaUser.getUserId(),userName, (page-1)*size,size,user.getRoleId() );
        System.out.println(userName);
        System.out.println("processId = " + processId);

        HashMap<String, Integer> map = new HashMap<>();
        map.put("totalElements", totalElements);
        map.put("totalPages", totalPages);
        map.put("number", page);
        map.put("size", size);
        model.addAttribute("id",id);
        model.addAttribute("page", map);
        model.addAttribute("userName",userName);
        model.addAttribute("userInfo",userInfoo);
        model.addAttribute("nowpage",nowpage);
        model.addAttribute("url", "auditingg");
         model.addAttribute("positionId",user.getPositionId());
        AoaProcessList processList = auditService.selectOneById(id);
        List<AoaReviewed> revieweds = auditService.selectReviewedByid(id);
        AoaReviewed aoaReviewed = auditService.selectByid(processId, user.getUserId());
        //总经理登录时,判断之前的人是否审核完
        List<AoaReviewed> list = auditService.selectReviewedStatusId(processId);
        List<Integer> aoaReviewedStatusId = new ArrayList<>();
        System.out.println(list);
        if (aoaUser.getPositionId()==3){
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getUserId()==3){
                    list.remove(list.get(i));
                }
            }
            for (int i = 0; i < list.size(); i++) {
                aoaReviewedStatusId.add(list.get(i).getStatusId());
            }

            if (aoaReviewedStatusId.contains(23)==true){
                //之前有人未处理
                model.addAttribute("Deal",0);
                System.out.println("前人未处理完");
            }else {
                //前人已处理完
                model.addAttribute("Deal",1);
                System.out.println("前人已处理完");
            }
        }
        System.out.println(processList);
        System.out.println("processList.getStatusId()="+processList.getStatusId());
        model.addAttribute("statusid",processList.getStatusId());
        String typename=processList.getTypeName().trim();
        if(("费用报销").equals(typename)){
            AoaBursement bursement = auditService.selectBursementById(processList.getProcessId());
            model.addAttribute("bu", bursement);
        }else if(("出差费用").equals(typename)){
            AoaEvectionmoney evectionMoney = auditService.selectEvectionMoneyById(processList.getProcessId());
            System.out.println(evectionMoney);
            model.addAttribute("bu", evectionMoney);
        }

        model.addAttribute("revie",revieweds);
        model.addAttribute("typename",typename);
        model.addAttribute("process",processList);

        model.addAttribute("statusid",aoaReviewed.getStatusId());
        model.addAttribute("positionid",user.getPositionId());
        return "process/audetail";
    }
    @RequestMapping("auditingg")
    public String auditingg(int processId,Model model,HttpSession session,
                            String userName,
                            @RequestParam(value = "page", defaultValue = "1") int page,
                            @RequestParam(value = "size", defaultValue = "5") int size){
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        int id = processId;
        AoaUser user = (AoaUser) session.getAttribute("user");
        int totalElements = auditService.findUserInfoByName( aoaUser.getUserId(),userName, page, 0,user.getRoleId()).size();
        int totalPages = totalElements % size == 0 ? totalElements / size : totalElements / size + 1;
        List<AoaUser> userInfoo = auditService.findUserInfoByName( aoaUser.getUserId(),userName, (page-1)*size,size,aoaUser.getRoleId() );
        System.out.println(userName);

        HashMap<String, Integer> map = new HashMap<>();
        map.put("totalElements", totalElements);
        map.put("totalPages", totalPages);
        map.put("number", page);
        map.put("size", size);
        model.addAttribute("id",id);
        model.addAttribute("page", map);
        model.addAttribute("userName",userName);
        model.addAttribute("userInfo",userInfoo);
        model.addAttribute("url", "auditingg");
        model.addAttribute("positionId",user.getPositionId());
        System.out.println("processId = " + processId);
        AoaProcessList processList = auditService.selectOneById(id);
        List<AoaReviewed> revieweds = auditService.selectReviewedByid(id);
        AoaReviewed aoaReviewed = auditService.selectByid(processId, user.getUserId());


        //总经理登录时,判断之前的人是否审核完
        List<Integer> aoaReviewedStatusId = new ArrayList<>();
        if (aoaUser.getPositionId()==3){
            for (int i = 0; i < revieweds.size(); i++) {
                aoaReviewedStatusId.add(revieweds.get(i).getStatusId());
            }
            if (aoaReviewedStatusId.contains(23)==true){
                //之前有人未处理
                model.addAttribute("Deal",0);
                System.out.println("之前有人未处理");
            }else {
                //前人已处理完
                model.addAttribute("Deal",1);
                System.out.println("前人已处理完");
            }
        }


        System.out.println(processList);
        String typename=processList.getTypeName().trim();
        System.out.println("processList.getStatusId()="+processList.getStatusId());
        if(("费用报销").equals(typename)){
            AoaBursement bursement = auditService.selectBursementById(processList.getProcessId());
            model.addAttribute("bu", bursement);
        }else if(("出差费用").equals(typename)){
            AoaEvectionmoney evectionMoney = auditService.selectEvectionMoneyById(processList.getProcessId());
            System.out.println(evectionMoney);
            model.addAttribute("bu", evectionMoney);
        }

        model.addAttribute("revie",revieweds);
        model.addAttribute("typename",typename);
        model.addAttribute("process",processList);

        model.addAttribute("statusid",aoaReviewed.getStatusId());
        model.addAttribute("positionid",user.getPositionId());
        return "common/recivers";
    }


    @RequestMapping("susave")
    public String susave(Integer nowpage,int statusId,String username,String  advice,int proId,String type,HttpSession session){
        AoaUser user = (AoaUser)session.getAttribute("user");
        System.out.println("username = " + username);
        System.out.println(statusId+"statusId"+username+"username"+advice+"advice"+"proId"+proId+"type"+type);
        Integer positionId = user.getPositionId();//审核人的职位编号
        String typeName = auditService.selectProcess(proId).getTypeName();

        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);

        if (positionId==3){//总经理
            if (typeName.equals("费用报销")==true){
                bursementService.ManagerAdviceBursement(proId,advice);
            }else if (typeName.equals("出差申请")==true){
                bursementService.ManagerAdviceEvection(proId,advice);
            }else if (typeName.equals("转正申请")==true){
                bursementService.ManagerAdviceRegular(proId,advice);
            }else if (typeName.equals("加班申请")==true){
                bursementService.ManagerAdviceOvertime(proId,advice);
            }else if (typeName.equals("离职申请")==true){
                bursementService.ManagerAdviceResign(proId,advice);
            }else if (typeName.equals("请假申请")==true){
                bursementService.ManagerAdviceHoliday(proId,advice);
            }else if (typeName.equals("出差费用")==true){
                bursementService.ManagerAdviceEvectionMoney(proId,advice);
            }
        }else if (positionId==5){//财务部经理
            if (typeName.equals("费用报销")==true) {
                bursementService.FinancialAdviceBursement(proId, advice);
            }else if (typeName.equals("离职申请")==true){
                bursementService.FinancialAdviceResign(proId,advice);
            }else if (typeName.equals("出差费用")==true){
                bursementService.FinancialAdviceEvectionMoney(proId,advice);
            }
        }else if (positionId==7){//人事部经理
            if (typeName.equals("加班申请")==true){
                bursementService.personneAdviceOvertime(proId,advice);
            }else if (typeName.equals("出差申请")==true){
                bursementService.personneAdviceEvection(proId,advice);
            }else if (typeName.equals("离职申请")==true){
                bursementService.personneAdviceResign(proId,advice);
            }else if (typeName.equals("转正申请")==true){
                bursementService.personneAdviceRegular(proId,advice);
            }else if (typeName.equals("请假申请")==true){
                bursementService.personneAdviceHoliday(proId,advice);
            }
        }

        if (username!=null && username!=""){
            //审核流转

            auditService.updateReviewed(advice,dateString,statusId,proId, user.getUserId());
            if (statusId==26){//未通过
                auditService.updateProcessByid(26,proId);
                //若其他审批人已流转,则删除未处理的
                auditService.deleteReviewedByNoDeal(proId);
            }else {//通过
                auditService.updateProcessByid(24,proId);
                int id = auditService.selectIDByName(username);
                System.out.println(id);

                if (auditService.selectReviewedYN(proId,id)!=null){
                    //已流转过
                    System.out.println("已流转过");
                    //无操作
                }else {
                    auditService.insertIntoReviewed(proId,id);
                }
            }

        }else {
            //审核结案
            //判断其他人是否都处理完

            auditService.updateReviewed(advice,dateString,statusId,proId, user.getUserId());
            auditService.updateReviewedAllUser(statusId,proId);

            auditService.updateProcessByid(statusId,proId);
        }
        return "redirect:audit?page="+nowpage;
    }

}

新建流程后端代码 

package com.hopu.oa.controller.process;




import com.hopu.oa.dao.process.NewProcessDao2;
import com.hopu.oa.entity.management.AoaTypeList;
import com.hopu.oa.entity.process.*;

import com.hopu.oa.entity.user.AoaUser;
import com.hopu.oa.service.process.NewProcessService2;
import com.hopu.oa.service.process.auditService;
import com.hopu.oa.until.OosUtil;
import com.hopu.oa.until.data.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName: NewProcessController
 * @Description:
 * @Date: 2021/11/22 19:18
 */

@Controller
public class NewProcessController
{


    //工具类,文件上传
    @Autowired
    private OosUtil oosUtil;

    //service
    @Autowired
    private NewProcessService2 newProcessService2;

    //张佑威的(通讯录)
    @Autowired
    private auditService  auditService;

    @Autowired
    private NewProcessDao2 newProcessDao2;





/*

 ########################       1.费用报销       ####################################

*/

    @RequestMapping("burse")
    public String burse(HttpSession session,Model model)
    {


        //  紧急程度
        List<AoaTypeList> status = newProcessService2.queryType("紧急程度");
        model.addAttribute("harrylist",status);

        //用户名
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        model.addAttribute("username",aoaUser.getUserName());

        //Type
        List<AoaTypeList> status2 = newProcessService2.queryType("报销");
        model.addAttribute("uplist",status2);



        //通讯录
        addressList(model,session);


        //查询费用科目
        List<AoaSubject> aoaSubjects = newProcessService2.querySubject();
        model.addAttribute("second",aoaSubjects);


        return "process/bursement";
    }


    /*
      @Description : 报销
      @Date   :  2021/11/24
      @Param  : [session, proId_processName, proId_deeply, shenuser, proId_processDescribe, bursement, file, produceTime, subject, descript, invoices, detailmoney]
      @return : java.lang.String
     */
    @RequestMapping("apply")
    public String apply
    (       HttpSession session,
            String proId_processName,
            String proId_deeply  ,
            String  shenuser,
            String proId_processDescribe,
            AoaBursement bursement,
            String name,
            String namemoney,
            @RequestParam("filePath") MultipartFile file    //资料

    )
    {
        AoaUser aoaUser = (AoaUser)session.getAttribute("user");
        AoaProcessList process = new AoaProcessList();

        if (file.getSize()!=0)
        {
            //url
            String  shuffix = oosUtil.getPicSuffix(file.getOriginalFilename());
            long size =  file.getSize();
            String type =  file.getContentType();
            AoaAttachmentList  attachment =  new AoaAttachmentList();
            attachment.setAttachmentName(file.getOriginalFilename());
            attachment.setAttachmentPath( oosUtil.getImgUrl(oosUtil.uploadImg2Oss(file)));
            attachment.setAttachmentSize(size+"");
            attachment.setAttachmentType(type);
            attachment.setAttachmentShuffix(shuffix);
            attachment.setModel("note");
            attachment.setUploadTime(DateUtils.getDateTimeString());
            attachment.setUserId(aoaUser.getUserId()+"");
            newProcessService2.inertAttachment(attachment);
            System.out.println(attachment.getAttachmentId());
            process.setProFileId(attachment.getAttachmentId());
            System.out.println("ppID = "+process.getProFileId());

        }




        Integer money = 0;
        Integer invoice = 0;

       /*
         获取总金额
       */
        for (Details d: bursement.getDetails()
        )
        {
            money += Integer.parseInt(d.getDetailmoney()) ;
            invoice += Integer.parseInt(d.getInvoices());
        }


        System.out.println(proId_processName);
        System.out.println(proId_deeply);
        System.out.println(shenuser);
        System.out.println(proId_processDescribe);
        System.out.println(bursement);










        String[]  shenuserName=shenuser.split(";");



        //总表
        process.setApplyTime(DateUtils.getDateTimeString());
        process.setDeeplyId(Integer.parseInt(proId_deeply));
        process.setProcessName(proId_processName);
        process.setProcessDes(proId_processDescribe);
        process.setIsChecked(0);
        process.setStatusId(23);
        process.setTypeName("费用报销");
        process.setProcessUserId(aoaUser.getUserId());
        process.setShenuser(shenuser);
        newProcessService2.insertProcess(process);

        //报销表
        bursement.setAllMoney(money);
        bursement.setAllinvoices(invoice);
        bursement.setBurseTime(DateUtils.getDateTimeString());
        bursement.setManagerAdvice("");
        bursement.setOperationName(aoaUser.getUserId());
        bursement.setProId(process.getProcessId());
        bursement.setUserName(newProcessDao2.queryUserIdByName(namemoney));
         bursement.setName(name);
        newProcessService2.inertBursement(bursement);


        AoaReviewed reviewed = new AoaReviewed();
        reviewed.setAdvice("");
        reviewed.setReviewedTime(DateUtils.getDateTimeString());
        reviewed.setStatusId(23  );
        reviewed.setProId(process.getProcessId());

        for (int j = 0; j < shenuserName.length; j++)
        {
            int shenuserId = newProcessService2.queryUserIdByName(shenuserName[j]);
            reviewed.setUserId(shenuserId);
            newProcessService2.insertReviewed(reviewed);
        }






        //细节表
        for (int i = 0; i <bursement.getDetails().size() ; i++)
        {
            Details details =  bursement.getDetails().get(i);

            details.setBursmentId(bursement.getBursementId());

            newProcessService2.insertDetails(details);
        }




        return  "redirect:/xinxeng";
    }





/*
 #########################        2.出差        ###################################
 */

    @RequestMapping("evection")
    public String evection(HttpSession session, Model model)
    {

        //  紧急程度
        List<AoaTypeList> status = newProcessService2.queryType("紧急程度");
        model.addAttribute("harrylist",status);

        //用户名
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        model.addAttribute("username",aoaUser.getUserName());

        //Type
        List<AoaTypeList> status2 = newProcessService2.queryType("出差");
        model.addAttribute("outtype",status2);


        //通讯录
        addressList(model,session);
        return "process/evection";

    }

    /*
      @Description :出差
      @Date   :  2021/11/24
      @Param  : [session, proId_processName, proId_deeply, typeId, proId_startTime, proId_endTime, proId_processDescribe, shenuser, file]
      @return : java.lang.String
     */
    @RequestMapping("evec")
    public String evec(HttpSession session,
                       String proId_processName,
                       String proId_deeply,
                       String typeId,
                       String proId_startTime,
                       String proId_endTime,
                       String proId_processDescribe,
                       String shenuser,
                       @RequestParam("filePath") MultipartFile file     //资料
    )
    {
        System.out.println(proId_processName);
        System.out.println(proId_deeply);
        System.out.println(typeId);
        System.out.println( proId_startTime);
        System.out.println(proId_endTime);
        System.out.println(proId_processDescribe);
        System.out.println(shenuser);


        //总表pojo
        AoaProcessList process = new AoaProcessList();

        //当前用户
        AoaUser aoaUser = (AoaUser)session.getAttribute("user");

        //出差pojo
        AoaEvection evection = new AoaEvection();




        //审核表
        AoaReviewed reviewed =    new  AoaReviewed();




        /*
            附件上传
        */

        if (file.getSize()!=0)
        {
            // 文件上传并获取 url
            String url =  oosUtil.getImgUrl(oosUtil.uploadImg2Oss(file));
            // String url =  oosUtil.getUrl(oosUtil.uploadImg2Oss(file));
            String  shuffix = oosUtil.getPicSuffix(file.getOriginalFilename());
            long size =  file.getSize();
            String type =  file.getContentType();
            AoaAttachmentList  attachment =  new AoaAttachmentList();
            attachment.setAttachmentName(file.getOriginalFilename());
            attachment.setAttachmentPath(url);
            attachment.setAttachmentSize(size+"");
            attachment.setAttachmentType(type);
            attachment.setAttachmentShuffix(shuffix);
            attachment.setModel("note");
            attachment.setUploadTime(DateUtils.getDateTimeString());
            attachment.setUserId(aoaUser.getUserId()+"");
            newProcessService2.inertAttachment(attachment);
            System.out.println(attachment.getAttachmentId());
            process.setProFileId(attachment.getAttachmentId());
            System.out.println("ppID = "+process.getProFileId());

        }



        /*
         表单插入
        */

        //总表
        process.setApplyTime(DateUtils.getDateTimeString());
        process.setDeeplyId(Integer.parseInt(proId_deeply));
        process.setEndTime(proId_endTime);
        process.setProcessName(proId_processName);
        process.setProcessDes(proId_processDescribe);
        process.setIsChecked(0);
        process.setStartTime(proId_startTime);
        process.setStatusId(23);
        process.setTypeName("出差申请");
        process.setProcessUserId(aoaUser.getUserId());
        process.setShenuser(shenuser);
        newProcessService2.insertProcess(process);


        //出差表
        evection.setProId(process.getProcessId());
        evection.setTypeId(Integer.parseInt(typeId));
        newProcessService2.insertEvection(evection);


        //审批表
        reviewed.setAdvice("");
        reviewed.setReviewedTime(DateUtils.getDateTimeString());
        reviewed.setStatusId(23);
        reviewed.setProId(process.getProcessId());
        String[]  shenuserName=shenuser.split(";");

        for (int j = 0; j < shenuserName.length; j++)
        {
            int shenuserId = newProcessService2.queryUserIdByName(shenuserName[j]);
            reviewed.setUserId(shenuserId);
            newProcessService2.insertReviewed(reviewed);
        }


        return  "redirect:/xinxeng";
    }


      /*
 ##############################   3.加班    ################################
 */

    @RequestMapping("overtime")
    public String overTime(Model model,HttpSession session)
    {
        //  紧急程度
        List<AoaTypeList> status = newProcessService2.queryType("紧急程度");
        model.addAttribute("harrylist",status);


        //用户名
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        model.addAttribute("username",aoaUser.getUserName());

        //Type
        List<AoaTypeList> status2 = newProcessService2.queryType("加班");
        model.addAttribute("overtype",status2);


        //通讯录
        addressList(model,session);

        return "process/overtime";

    }


    @RequestMapping("over")
    public String over( HttpSession session,
                        String proId_processName,
                        String proId_deeply,
                        String typeId,
                        String proId_startTime,
                        String proId_endTime,
                        String proId_processDescribe,
                        String shenuser
    )
    {
        System.out.println(proId_processName);
        System.out.println(proId_deeply);
        System.out.println(typeId);
        System.out.println(proId_startTime);
        System.out.println(proId_endTime);
        System.out.println(proId_processDescribe);
        System.out.println(shenuser);


        AoaProcessList process = new  AoaProcessList();
        AoaOvertime overtime = new AoaOvertime();
        AoaReviewed reviewed = new AoaReviewed();
        AoaUser aoaUser = (AoaUser)session.getAttribute("user");



        //总表
        process.setApplyTime(DateUtils.getDateTimeString());
        process.setDeeplyId(Integer.parseInt(proId_deeply));
        process.setEndTime(proId_endTime);
        process.setProcessName(proId_processName);
        process.setProcessDes(proId_processDescribe);
        process.setIsChecked(0);
        process.setStartTime(proId_startTime);
        process.setStatusId(23);
        process.setTypeName("加班申请");
        //process.setShenuser(proId_shenuser);
        process.setProcessUserId(aoaUser.getUserId());
        process.setShenuser(shenuser);

        newProcessService2.insertProcess(process);


        // overtime
        overtime.setTypeId(Integer.parseInt(typeId) );
        overtime.setProId(process.getProcessId());
        newProcessService2.insertOvertime(overtime);


        //审批表
        reviewed.setAdvice("");
        reviewed.setReviewedTime(DateUtils.getDateTimeString());
        reviewed.setStatusId(23  );
        reviewed.setProId(process.getProcessId());
        String[]  shenuserName=shenuser.split(";");

        for (int j = 0; j < shenuserName.length; j++)
        {
            int shenuserId = newProcessService2.queryUserIdByName(shenuserName[j]);
            reviewed.setUserId(shenuserId);
            newProcessService2.insertReviewed(reviewed);
        }



        return  "redirect:/xinxeng";
    }
















 /*
    #########################      4.转正    ###################################
 */


    @RequestMapping("regular")
    public String regular(Model model , HttpSession session)
    {
        // 状态
        List<AoaTypeList> status = newProcessService2.queryType("紧急程度");

        //重要程度
        model.addAttribute("harrylist",status);

        //通讯录
        addressList(model,session);

        //获取当前用户,用户名输入到页面
        AoaUser aoaUser =  (AoaUser) session.getAttribute("user");
        model.addAttribute("username",aoaUser.getUserName());

        return "process/regular";
    }


    /*
      @Description :  转正申请
      @Date   :  2021/11/23
      @Param  : [user]
      @return : java.lang.String
     */
    @RequestMapping("regu")
    private String regu(PositiveUser user,HttpSession session)
    {

        System.out.println(user);
       /*
            process表:
               processName=小李转正, deeplyId=22, startTime=null, endTime=2021-11-23 09:01:52,
               processUserId=null,shenuser=张天怿;黄熙锋

        */
        //总表
        AoaProcessList process = new AoaProcessList();
        process.setApplyTime(DateUtils.getDateTimeString());
        process.setDeeplyId(user.getDeeplyId());
        process.setEndTime(user.getEndTime());
        process.setProcessName(user.getProcessName());
        process.setProcseeDays(DateUtils.between_days(user.getEndTime(),user.getStartTime()).intValue());
        process.setIsChecked(0);
        process.setStatusId(23);
        AoaUser aoaUser = (AoaUser)session.getAttribute("user");
        process.setProcessUserId(aoaUser.getUserId());
        process.setStartTime(user.getStartTime());
        process.setTypeName("转正申请");
        process.setShenuser(user.getShenuser());

        //获取process主键
        newProcessService2.insertProcess(process);

        System.out.println("processId===="+process.getProcessId());



       /*

        regular:表
            understand=职责理解, experience=心得, pullulate=成长, deficiency=不足, dobetter=做的更好, advice=建议加薪)

        */
        //转正表
        AoaRegular regular = new AoaRegular();
        regular.setProId(process.getProcessId());
        regular.setExperience(user.getExperience());
        regular.setAdvice(user.getAdvice());
        regular.setUnderstand(user.getUnderstand());
        regular.setPullulate(user.getPullulate());
        regular.setDeficiency(user.getDeficiency());
        regular.setDobetter(user.getDobetter());
        regular.setDays(DateUtils.between_days(user.getStartTime(), user.getEndTime()).intValue());
        newProcessService2.insertRegular(regular);



        AoaReviewed reviewed = new AoaReviewed();





        //审批表
        reviewed.setAdvice("");
        reviewed.setReviewedTime(DateUtils.getDateTimeString());
        reviewed.setStatusId(23 );
        reviewed.setProId(process.getProcessId());
        String[]  shenuserName=user.getShenuser().split(";");

        for (int j = 0; j < shenuserName.length; j++)
        {
            int shenuserId = newProcessService2.queryUserIdByName(shenuserName[j]);
            reviewed.setUserId(shenuserId);
            newProcessService2.insertReviewed(reviewed);
        }

        return  "redirect:/xinxeng";
    }


/*
 ############################     5.请假      #####################################
 */

    @RequestMapping("holiday")
    public String holiday(Model model,HttpSession session)
    {
        //  紧急程度
        List<AoaTypeList> status = newProcessService2.queryType("紧急程度");
        model.addAttribute("harrylist",status);

        //Type
        List<AoaTypeList> status2 = newProcessService2.queryType("请假");
        model.addAttribute("overtype",status2);

        //用户名
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        model.addAttribute("username",aoaUser.getUserName());



        //通讯录
        addressList(model,session);


        return "process/holiday";
    }


    //请假表单
    @RequestMapping("holi")
    public String  holi(AoaHoliday holiday, HttpSession session,
                        String proId_deeply,
                        String proId_processName,
                        String proId_startTime,
                        String proId_endTime,
                        String proId_shenuser,
                        String proId_processDescribe,
                        @RequestParam("filePath") MultipartFile file     //证明
    )
    {
        System.out.println(holiday);
        System.out.println(proId_deeply);
        System.out.println(proId_processName);
        System.out.println(proId_startTime);
        System.out.println(proId_endTime);
        System.out.println(proId_shenuser);
        System.out.println(proId_processDescribe);


        //获取用户
        AoaUser aoaUser = (AoaUser)session.getAttribute("user");


        //总表
        AoaProcessList process = new AoaProcessList();




         /*

         附件上传

        */
        if (file.getSize()!=0)
        {
            //url
            String url =  oosUtil.getImgUrl(oosUtil.uploadImg2Oss(file));
            String  shuffix = oosUtil.getPicSuffix(file.getOriginalFilename());
            long size =  file.getSize();
            String type =  file.getContentType();
            AoaAttachmentList attachment =  new AoaAttachmentList();
            attachment.setAttachmentName(file.getOriginalFilename());
            attachment.setAttachmentPath(url);
            attachment.setAttachmentSize(size+"");
            attachment.setAttachmentType(type);
            attachment.setAttachmentShuffix(shuffix);
            attachment.setModel("note");
            attachment.setUploadTime(DateUtils.getDateTimeString());
            attachment.setUserId(aoaUser.getUserId()+"");
            newProcessService2.inertAttachment(attachment);
            System.out.println(attachment.getAttachmentId());
            process.setProFileId(attachment.getAttachmentId());
            System.out.println("ppID = "+process.getProFileId());

        }





        process.setProcessName(proId_processName);
        process.setDeeplyId(Integer.parseInt(proId_deeply));
        process.setStartTime(proId_startTime);
        process.setEndTime(proId_endTime);
        process.setShenuser(proId_shenuser);
        process.setProcessDes(proId_processDescribe);
        process.setApplyTime(DateUtils.getDateTimeString());
        process.setStatusId(23);
        process.setTypeName("请假申请");
        process.setIsChecked(0);
        process.setProcseeDays(holiday.getLeaveDays());

        process.setProcessUserId(aoaUser.getUserId());
        process.setShenuser(proId_shenuser);

        newProcessService2.insertProcess(process);
        System.out.println("id===="+process.getProcessId());


        //请假
        holiday.setProId(process.getProcessId());
        newProcessService2.insertHoliday(holiday);



        AoaReviewed reviewed = new AoaReviewed();
        //审批表
        reviewed.setAdvice("");
        reviewed.setReviewedTime(DateUtils.getDateTimeString());
        reviewed.setStatusId(23 );
        reviewed.setProId(process.getProcessId());
        String[]  shenuserName=proId_shenuser.split(";");

        for (int j = 0; j < shenuserName.length; j++)
        {
            int shenuserId = newProcessService2.queryUserIdByName(shenuserName[j]);
            reviewed.setUserId(shenuserId);
            newProcessService2.insertReviewed(reviewed);
        }



        //holidayId=null, leaveDays=0, typeId=37, proId=null, managerAdvice=null, personnelAdvice=null)


        return  "redirect:/xinxeng";

    }


/*
 ##########################     离职      #######################################
 */

    @RequestMapping("resign")
    private String resign(Model model,HttpSession session)
    {

        //  紧急程度
        List<AoaTypeList> status = newProcessService2.queryType("紧急程度");
        model.addAttribute("harrylist",status);


        //用户名
        AoaUser aoaUser = (AoaUser) session.getAttribute("user");
        model.addAttribute("username",aoaUser.getUserName());




        //通讯录
        addressList(model,session);
        return "process/resign";
    }


    @RequestMapping("res")
    public String res(AoaResign resign, HttpSession session,
                      String proId_processName,
                      String proId_deeply,
                      String proId_processDescribe,
                      String finish,
                      String shenuser,
                      String handuser)
    {

        System.out.println(shenuser);

        System.out.println(resign);


        System.out.println(proId_processName);
        System.out.println(proId_deeply);
        System.out.println(proId_processDescribe);
        System.out.println(finish);
        System.out.println(shenuser);

        //总表
        AoaProcessList process = new AoaProcessList();
        process.setProcessName(proId_processName);
        process.setDeeplyId(Integer.parseInt(proId_deeply));

        process.setStartTime(DateUtils.getDateTimeString());

        process.setProcessDes(proId_processDescribe);
        process.setApplyTime(DateUtils.getDateTimeString());
        process.setStatusId(23);
        process.setTypeName("离职申请");
        process.setIsChecked(0);
        AoaUser aoaUser = (AoaUser)session.getAttribute("user");
        process.setProcessUserId(aoaUser.getUserId());
        process.setShenuser(shenuser);

        int id =  newProcessService2.insertProcess(process);

        System.out.println(process.getProcessId());
        //查询用户id
        int userId =  newProcessService2.queryUserIdByName(handuser);

        resign.setIsFinish( finish == null?0:1);
        resign.setHandUser(userId);

        resign.setProId(process.getProcessId());
        int i = newProcessService2.insertResign(resign);
        System.out.println("i = " + i);

        AoaReviewed reviewed = new AoaReviewed();


        reviewed.setAdvice("");
        reviewed.setReviewedTime(DateUtils.getDateTimeString());
        reviewed.setStatusId(23 );
        reviewed.setProId(process.getProcessId());
        String[]  shenuserName=shenuser.split(";");

        for (int j = 0; j < shenuserName.length; j++)
        {
            int shenuserId = newProcessService2.queryUserIdByName(shenuserName[j]);
            reviewed.setUserId(shenuserId);
            newProcessService2.insertReviewed(reviewed);
        }


        return  "redirect:/xinxeng";

    }







    /*
      @Description : 第一次通讯录
      @Date   :  2021/11/24
      @Param  : [model]
      @return : void
     */
    public void addressList(Model model,HttpSession session)
    {

        AoaUser aoaUser = (AoaUser)session.getAttribute("user");

        /*
              通讯录
        */
        int page = 1,size = 5;
        String baseKey = "";
        //计数
        int totalElements = newProcessDao2.findUserInfoByName(baseKey,aoaUser.getUserId(),page,0,aoaUser.getRoleId()).size();
        //页数
        int totalPages = totalElements % size == 0 ? totalElements / size : totalElements / size + 1;
        List<AoaUser> users =  newProcessDao2.findUserInfoByName(baseKey,aoaUser.getUserId(),page,size,aoaUser.getRoleId());
        Map<String,Object> mapPage = new HashMap<>();
        mapPage.put("totalElements", totalElements);
        mapPage.put("totalPages", totalPages);
        mapPage.put("number", page);
        mapPage.put("size", size);
        model.addAttribute("page", mapPage);
        model.addAttribute("url", "recivers");
        model.addAttribute("userInfo",users);
    }


    /*
   @Description : 通讯录
   @Date   :  2021/11/24
   @Param  : [model, baseKey, page, size]
   @return : java.lang.String
  */
    @RequestMapping("recivers")
    public String reciver(Model model,HttpSession session,
                          @RequestParam(value = "baseKey", defaultValue = "")  String baseKey,
                          @RequestParam(value = "page", defaultValue = "1") int page,
                          @RequestParam(value = "size", defaultValue = "5") int size)
    {

        AoaUser aoaUser = (AoaUser)session.getAttribute("user");






        int totalElements = newProcessDao2.findUserInfoByName(baseKey,aoaUser.getUserId(),page,0,aoaUser.getRoleId()).size();
        int totalPages = totalElements % size == 0 ? totalElements / size : totalElements / size + 1;

        List<AoaUser> userInfos = newProcessDao2.findUserInfoByName(baseKey, aoaUser.getUserId(),(page-1)*size, size,aoaUser.getRoleId());
        model.addAttribute("userInfo",userInfos);

        Map<String,Object> mapPage = new HashMap<>();
        mapPage.put("totalElements", totalElements);
        mapPage.put("totalPages", totalPages);
        mapPage.put("number", page);
        mapPage.put("size", size);
        model.addAttribute("page", mapPage);
        model.addAttribute("url", "recivers");
        return "common/recivers";

    }

}

  • 17
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
OA办公系统是基于SpringBoot框架开发的一种办公自动化系统。它使用Maven进行项目管理,底层数据库是MySQL,前端采用了Freemarker模板引擎和Bootstrap作为前端UI框架。同时,该系统还集成了JPA、Mybatis等框架。 具体的技术栈包括: - 前端:Freemarker模板引擎、Bootstrap UI框架、JQuery、Kindeditor HTML可视化编辑器、My97 DatePicker时间选择器。 - 后端:Spring Boot框架、Spring Data JPA、Mybatis、Fastjson、Pagehelper Mybatis分页插件。 部署流程如下: 1. 下载项目并导入本地数据库。 2. 修改application.properties文件,配置数据源信息。 3. 修改相关路径,包括图片路径、文件路径、附件路径。 4. 运行OasysApplication.java中的main方法,确保控制台没有报错信息。 5. 在浏览器中输入localhost:8088/logins即可访问系统。 你可以通过演示地址来查看实际的系统效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [springbootoa自动化办公系统](https://blog.csdn.net/qq_45601069/article/details/118456171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于springboot框架开发的OA办公自动化系统](https://blog.csdn.net/m0_53194451/article/details/110948282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚几哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值