OA系统开发(十六)

234 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

开发审批消息通知

1.定义mapper

image.png

<insert id="insert" parameterType="com.imooc.oa.entity.Notice" useGeneratedKeys="true" keyProperty="noticeId" keyColumn="notice_id" >
    INSERT INTO sys_notice
        ( receiver_id, content, create_time)
        VALUES
        ( #{receiverId}, #{content}, #{createTime});

</insert>

<select id="getListByReceiveId" parameterType="Long" resultType="com.imooc.oa.entity.Notice">
    select * from sys_notice where receiver_id = #{receiveId} order by notice_id desc
</select>

代码说明:定义查询和新增方法

2.定义service

image.png

public List<Notice> getListByReceiveId(Long receiveId) {
    return  (List)MybatisUtils.executeQuery(sqlSession -> {
        NoticeDao noticeDao = sqlSession.getMapper(NoticeDao.class);
       return noticeDao.getListByReceiveId(receiveId);
    });

}

3.定义controller

image.png

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("login_user");
    List<Notice> noticeList = noticeService.getListByReceiveId(user.getEmployeeId());
    Map result = new HashMap<>();
    result.put("code","0");
    result.put("success","");
    result.put("count",noticeList.size());
    result.put("data",noticeList);
    String json = JSON.toJSONString(result);
    response.getWriter().println(json);
}

4.请假单新增消息

image.png 普通员工提交请假单:推送给自己和直接上级领导

String content = String.format("您的请假申请%s-%s已经提交,等待上级领导审核",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(employee.getEmployeeId(),content));

//上级领导
String noticeContent = String.format("%s申请%s-%s已经提交,请审核",employee.getName()+employee.getTitle(),sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(leader.getEmployeeId(),noticeContent));

部门领导提交请假单:推送给自己和总经理 image.png

String content = String.format("您的请假申请%s-%s已经提交,等待上级领导审核",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(employee.getEmployeeId(),content));
//上级领导
String noticeContent = String.format("%s申请%s-%s已经提交,请审核",employee.getName()+employee.getTitle(),sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(manager.getEmployeeId(),noticeContent));

总经理提交请假单:直接推送给自己 image.png

String content = String.format("您的请假申请%s-%s已经提交,自动审核通过",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(leader.getEmployeeId(),content));

5.审批消息

当前节点是最后一个节点:推送给自己和直属领导 image.png

if(result.equals("approved")){
    str="同意";
}else{
    str="驳回";
}
String content = String.format("您的请假申请%s-%s已%s",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()),str);
noticeDao.insert(new Notice(employee.getEmployeeId(),content));
//直属领导
String noticeContent = String.format("%s申请%s-%s已%s,流程已结束",employee.getTitle(),sdf.format(form.getStartTime()),sdf.format(form.getEndTime()),str);
noticeDao.insert(new Notice(operatorId,noticeContent));

当前节点不是最后一个节点且同意:推送给自己,直属领导和总经理审批 image.png

//提交人
String noticeContent = String.format("您申请%s-%s已通过,请等待上级领导审核",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(employee.getEmployeeId(),noticeContent));
//领导
String dNoticeContent = String.format("您同意了%s-%s-%s审批",employee.getName(),sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(operatorId,dNoticeContent));
//总经理
String mNoticeContent = String.format("%s申请-%s-%s,请尽快审批",employee.getName(),sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(flow3.getOperatorId(),mNoticeContent));

当前节点不是最后一个节点且驳回:推送给自己和经办人 image.png

//申请人
String noticeContent = String.format("您申请%s-%s被驳回,流程结束",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(employee.getEmployeeId(),noticeContent));
//经办人
String noticeContents = String.format("您驳回申请%s-%s,流程结束",sdf.format(form.getStartTime()),sdf.format(form.getEndTime()));
noticeDao.insert(new Notice(operatorId,noticeContents));