第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

【學(xué)習(xí)打卡】第8天 線下會議管理

標(biāo)簽:
Java

课程名称: SpringBoot+Vue3 项目实战,打造企业级在线办公系统
课程章节: 第4章 线下会议管理
主讲老师: 神思者

课程内容

当已经有了线下会议室之后,就可以发起会议申请。然后申请人,可以选择对应的会议室。但会议室比较紧张,为了统一管理。需要由人力对会议室的申请进行审批。避免有多人同时申请会议室的情况。

大概的后端处理时序图如下:
图片描述
应该先写线程任务类(MeetingWorkflowTask),后面写MeetingService的时候正好可以调用这个任务类。那咱们就在com.example.emos.api.task包中创建MeetingWorkflowTask.java类。

因为如果系统引入工作流,并对工作流进行设计与开发。其工作量比较庞大。这里讲师提供了一个封装好的工作流子系统。我们可以直接去引用工作流的能力,实现会议室审批。

线程任务类发送HTTP请求给工作流项目,提交的数据中包括了会议申请人的userId、姓名、部门经理的userId,以及总经理的userId,那么这些数据都是要经过SQL语句查询的。包括线程任务类拿到instanceId之后,要更新tb_meeting表中的记录,所以还需要定义UPDATE语句。
图片描述

我们按照时序图写程序,思路就清晰多了,看来时序图的作用还真挺重要。

课程收获

application.yml文件中,定义接收会议审批结果的URL地址。目前这个URL对应的Web方法还没有创建,一会儿我们去创建这个Web方法。

emos:
  ……
  recieveNotify: http://本机ID地址:8090/emos-api/meeting/recieveNotify

com.example.emos.api.task包中创建MeetingWorkflowTask.java类,代码如下:

@Component
@Slf4j
public class MeetingWorkflowTask {

    @Autowired
    private TbUserDao userDao;

    @Autowired
    private TbMeetingDao meetingDao;

    @Value("${emos.recieveNotify}")
    private String recieveNotify;

    @Value("${emos.code}")
    private String code;

    @Value("${emos.tcode}")
    private String tcode;

    @Value("${workflow.url}")
    private String workflow;

    @Async("AsyncTaskExecutor")
    public void startMeetingWorkflow(String uuid, int creatorId,String title, String date, String start,String meetingType) {
        //查询申请人基本信息
        HashMap info = userDao.searchUserInfo(creatorId);
        
        JSONObject json = new JSONObject();
        json.set("url", recieveNotify);
        json.set("uuid", uuid);
        json.set("creatorId",creatorId);
        json.set("creatorName",info.get("name").toString());
        json.set("code", code);
        json.set("tcode", tcode);
        json.set("title",title);
        json.set("date", date);
        json.set("start", start);
        json.set("meetingType",meetingType);
        
        String[] roles = info.get("roles").toString().split(",");
        //判断用户角色是不是总经理,总经理创建的会议不需要审批,所以不需要查询总经理userId和部门经理userId
        if (!ArrayUtil.contains(roles, "总经理")) {
            //查询部门经理userId
            Integer managerId = userDao.searchDeptManagerId(creatorId);
            json.set("managerId", managerId);
            
            //查询总经理userId
            Integer gmId = userDao.searchGmId();
            json.set("gmId", gmId);
            
            //查询参会人是否为同一个部门
            boolean bool = meetingDao.searchMeetingMembersInSameDept(uuid);
            json.set("sameDept", bool);
        }
        
        String url = workflow + "/workflow/startMeetingProcess";
        HttpResponse resp = HttpRequest.post(url).header("Content-Type", "application/json")
                .body(json.toString()).execute();
        if (resp.getStatus() == 200) {
            json = JSONUtil.parseObj(resp.body());
            String instanceId = json.getStr("instanceId");
            HashMap param = new HashMap();
            param.put("uuid", uuid);
            param.put("instanceId", instanceId);
            //更新会议记录的instance_id字段
            int row = meetingDao.updateMeetingInstanceId(param);
            if (row != 1) {
                throw new EmosException("保存会议工作流实例ID失败");
            }
        } else {
            log.error(resp.body());
        }
    }
}

课程截屏

图片描述
图片描述
图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1
獲贊與收藏
3

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消