基于jeecgboot的OA日程安排开发(三)

简介: 基于jeecgboot的OA日程安排开发(三)

 今天主要是增加日程安排的消息推送功能,同时对增加修改删除等都对相应的消息推送数据进行更新。

   1、日程添加完整代码

@Override
  @Transactional(rollbackFor=Exception.class)
  public void saveAndAddSchedule(OaSchedule oaSchedule) {
    SysUser loginUser = iEstarThirdService.getLoginUser();
        String userId = loginUser.getUsername();
        if(StringUtils.isEmpty(oaSchedule.getTaker())){
          oaSchedule.setTaker(userId);
        }
        if(StringUtils.isEmpty(oaSchedule.getOwner())){
          oaSchedule.setOwner(userId);
        }
    oaScheduleService.save(oaSchedule);
    if (oaSchedule.getRemind() != 0) {//要提醒
      SysMessageVo sysMessageVo= new SysMessageVo();
      sysMessageVo.setEsContent(oaSchedule.getContent());
      sysMessageVo.setEsTitle(oaSchedule.getTitle());
      sysMessageVo.setEsReceiver(oaSchedule.getTaker());
      sysMessageVo.setEsType(oaSchedule.getRemindType());
      String reminddate = DateUtil.getPreTime(DateUtil.getDateString(oaSchedule.getStartTime(), "yyyy-MM-dd HH:mm:ss") ,String.valueOf(0-oaSchedule.getRemind()));
      sysMessageVo.setEsSendTime(DateUtil.stringToDate(reminddate));
      sysMessageVo.setEsSendStatus("0"); //SendMsgStatusEnum.WAIT.getCode()
      sysMessageVo.setEsSendNum(0);   
      String sysMsgId = iEstarThirdService.saveSysMessage(sysMessageVo);
      oaSchedule.setMsgId(sysMsgId);
      oaScheduleService.updateById(oaSchedule);
    }
    
  }

  2、日程删除

@Override
  @Transactional(rollbackFor=Exception.class)
  public boolean removeSchedule(String id) {
    OaSchedule oaSchedule = oaScheduleService.getById(id);
    String msgId = oaSchedule.getMsgId();
    String sendStatus = iEstarThirdService.getMsgSendStatus(msgId);
    if (oaSchedule.getRemind() != 0 ) {//有消息提醒
      if(StringUtils.equals(sendStatus,"0")) {
        oaScheduleService.removeById(id);
        iEstarThirdService.removeSysMessage(msgId);
        return true;
      }
      else {
        return false;
      } 
    }
    else {
      oaScheduleService.removeById(id);
      return true;
    }
    
  }

3、日程更新

@Override
  @Transactional(rollbackFor=Exception.class)
  public boolean updateSchedule(OaSchedule oaSchedule) {
    String msgId = oaSchedule.getMsgId();
    String sendStatus = iEstarThirdService.getMsgSendStatus(msgId);
    if (oaSchedule.getRemind() != 0) {//有消息提醒
      if(StringUtils.equals(sendStatus,"0")) {
        oaScheduleService.updateById(oaSchedule);
        SysMessageVo sysMessageVo= new SysMessageVo();
        sysMessageVo.setId(msgId);
        sysMessageVo.setEsContent(oaSchedule.getContent());
        sysMessageVo.setEsTitle(oaSchedule.getTitle());
        sysMessageVo.setEsReceiver(oaSchedule.getTaker());
        sysMessageVo.setEsType(oaSchedule.getRemindType());
        String reminddate = DateUtil.getPreTime(DateUtil.getDateString(oaSchedule.getStartTime(), "yyyy-MM-dd HH:mm:ss") ,String.valueOf(0-oaSchedule.getRemind()));
        sysMessageVo.setEsSendTime(DateUtil.stringToDate(reminddate));
        iEstarThirdService.updateSysMessage(sysMessageVo);
        return true;
      }
      else {
        return false;
      }
    }
    return true;
  }

4、发送消息调整如下:

/**
 * @Description: 发送websocket消息job
 * @author: nbacheng
 * @date: 2023-05-08
 * @version: V1.0
 */
@Slf4j
public class SendWebMsgJob implements Job {
  @Autowired
  private ISysMessageService sysMessageService;
  
  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    log.info(String.format(" Nbcio-Boot 发送消息任务 SendWebMsgJob !  时间:" + DateUtils.getTimestamp()));
    // 1.读取消息中心数据,只查询未发送的和发送失败不超过次数的
    QueryWrapper<SysMessage> queryWrapper = new QueryWrapper<SysMessage>();
    queryWrapper.eq("es_send_status", SendMsgStatusEnum.WAIT.getCode())
        .or(i -> i.eq("es_send_status", SendMsgStatusEnum.FAIL.getCode()).lt("es_send_num", 6));
    List<SysMessage> sysMessages = sysMessageService.list(queryWrapper);
    System.out.println(sysMessages);
    // 2.根据不同的类型走不通的发送实现类
    for (SysMessage sysMessage : sysMessages) {
      ISendMsgHandle sendMsgHandle = null;
      try {
        if (sysMessage.getEsType().equals(SendMsgTypeEnum.WEBMSG.getType())) {//目前只发送websocket消息
          sendMsgHandle = (ISendMsgHandle) Class.forName(SendMsgTypeEnum.WEBMSG.getImplClass()).newInstance();
        } 
      } catch (Exception e) {
        log.error(e.getMessage(),e);
      }
      Integer sendNum = sysMessage.getEsSendNum();
      try {
        sendMsgHandle.SendMsg(sysMessage.getEsReceiver(), sysMessage.getEsTitle(),
            sysMessage.getEsContent().toString(),sysMessage.getCreateBy());
        // 发送消息成功
        sysMessage.setEsSendStatus(SendMsgStatusEnum.SUCCESS.getCode());
      } catch (Exception e) {
        e.printStackTrace();
        // 发送消息出现异常
        sysMessage.setEsSendStatus(SendMsgStatusEnum.FAIL.getCode());
      }
      sysMessage.setEsSendNum(++sendNum);
      // 发送结果回写到数据库
      sysMessageService.updateById(sysMessage);
    }
  }
}

5、效果图

目录
打赏
0
0
0
0
84
分享
相关文章
基于jeecg-boot的OA日程安排开发(五)
基于jeecg-boot的OA日程安排开发(五)
198 0
基于jeecg-boot的OA日程安排开发(四)
基于jeecg-boot的OA日程安排开发(四)
96 0
|
11月前
基于jeecgboot的OA日程安排开发(二)
基于jeecgboot的OA日程安排开发(二)
107 0
基于jeecgboot的OA日程安排开发(一)
基于jeecgboot的OA日程安排开发(一)
119 0
微信小程序开发的OA会议之会议,个人中心的页面搭建及模板以及自定义组件
微信小程序开发的OA会议之会议,个人中心的页面搭建及模板以及自定义组件
103 0
微信小程序开发之会议OA首页后台数据交互(内带新知识点分享)
微信小程序开发之会议OA首页后台数据交互(内带新知识点分享)
142 0
企业数字化转型的关键:如何利用OA系统实现自动化与智能决策
在数字化时代,传统办公系统已无法满足现代企业的需求。通过将RPA(机器人流程自动化)和AI(人工智能)技术与OA系统结合,企业能实现业务流程自动化、智能决策支持,大幅提升工作效率和资源配置优化,推动数字化转型。RPA可自动处理重复任务,如审批、数据同步等;AI则提供智能数据分析、预测和决策支持,两者协同作用,助力财务管理、人力资源管理、项目管理和客户服务等多个领域实现智能化升级。未来,智能化OA系统将进一步提升个性化服务、数据安全和协作能力,成为企业发展的关键驱动力。
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
65 17
点晴OA系统:无缝集成,打造高效办公生态圈
在数字化转型浪潮中,企业办公效率的提升已成为决定竞争力的关键因素。点晴OA系统以其卓越的无缝集成能力,正在重塑现代企业的办公生态,为组织带来前所未有的效率提升。
42 5
点晴OA系统:用户体验至上,操作简单易上手
在数字化转型的浪潮中,企业选择办公自动化(OA)系统时,除了关注功能强大与否,更看重系统的用户体验。一个操作复杂、学习成本高的系统,不仅会降低员工的工作效率,还可能影响企业的整体运营。点晴OA系统以“用户体验至上”为核心理念,致力于打造操作简单、易上手的办公平台,帮助企业快速实现高效办公。
37 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等