监控方案解析插件消息接收人增加工作流角色原创
金蝶云社区-赵伟5161
赵伟5161
9人赞赏了该文章 193次浏览 未经作者许可,禁止转载编辑于2023年08月22日 08:51:09

业务背景:某单据有三级部门和二级部门字段,业务提醒需求如下:三级部门的提醒人与部门领导不一致,二级部门的提醒人与部门领导不一致。

实现方案:创建工作流角色,不同部门配置对应的接收人;监控方案解析插件中动态增加消息接收人及对应的明细消息(由于监控方案配置页面使用工作流角色会报错,因此只能使用插件开发方式)

  1. 为监控对象编写监控方案解析插件

    1. 继承AbstractWarnServicePlugIn类

    2. 重写BeforeSendWarnMessage

      1. 获取所有的明细信息,按照三级部门分组,组成Dictionary

      2. 获取对应的工作流角色,根据部门查找对应的接收人,并在e.WarnMessage.UserWarnMessageCollection添加接收人(注意事项:UserWarnMessageCollection是个Dictionary,key不能重复,对应的Value是个消息明细数组,也不能重复

    //根据部门负责人员工找到用户id

                                        UserWarnMessage userW = new     UserWarnMessage(long.Parse(DeptUtil.GetUserIDByYg(this.Context, fzr["F_Emp_Emp_ID"].ToString())));


                                        

                                        if (!e.WarnMessage.UserWarnMessageCollection.ContainsKey(userW.UserId))

                                        {

            //如果接收人不在集合中,添加记录

                                            //为用户增加预警消息

                                            foreach (var item in items)

                                            {

                                                userW.Add(item);

                                            }

                                            e.WarnMessage.UserWarnMessageCollection.Add(userW.UserId, userW);

                                        }

                                        else

                                        {

    //如果接收人在集合中,补充明细消息

                                            userW = e.WarnMessage.UserWarnMessageCollection[userW.UserId];

                                            foreach (var item in items)

                                            {

                                                if (!userW.GetMessageItems().Contains(item))

                                                {

                                                    userW.Add(item);

                                                }


                                            }

                                        }


    2. 注册插件

    3. 将插件放到服务器bin中,测试。        

赞 9