Beispiel #1
0
        /// <summary>
        /// 流程执行过程中,发送消息
        /// </summary>
        /// <param name="activityIns">活动实例</param>
        /// <param name="wfTask">任务</param>
        public void SendMessageWhenProcessing(WfActivityInstance activityIns, WfTask wfTask)
        {
            //$"{{'approver':1,'applicant':1,'mail':1,'message':1}";
            string messageSetting = activityIns.MessageSetting;
            bool noticeApplicant = false;//通知申请人
            bool noticeApprover = false;//通知审批人
            bool sendMessage = false;//发消息
            bool sendMail = false;//发邮件
            if (messageSetting.IsPresent())
            {
                var jmset = JObject.Parse(messageSetting);
                noticeApplicant = jmset.GetValue("applicant").ToBool();
                noticeApprover = jmset.GetValue("approver").ToBool();
                sendMail = jmset.GetValue("mail").ToBool();
                sendMessage = jmset.GetValue("message").ToBool();
            }
            //通知申请人
            if (noticeApplicant && activityIns.AppEmpUid.IsPresent())
            {
                Employee employee = _dataAccessor.Get<Employee>(activityIns.AppEmpUid);
                if (employee == null)
                {
                    return;
                }
                if (sendMail)
                {
                    string title = $"您的{activityIns.AppName}已经审批到[{wfTask.ExecutorEmpName}],请知晓。";
                    string content = title + "详情请登录系统查看。";
                    SendMailToAssignee(title, employee.EmpName, $"{employee.EmpName}<{employee.Mailbox}>", content);

                }
                if (sendMessage)
                {
                    SendInmsgToAssignee(employee.Fid, $"您的{activityIns.AppName}已经审批到[{wfTask.ExecutorEmpName}],请知晓。");
                }
            }
            //通知审批人
            if (noticeApprover && wfTask.ExecutorEmpUid.IsPresent())
            {
                Employee employee = _dataAccessor.Get<Employee>(wfTask.ExecutorEmpUid);
                if (employee == null)
                {
                    return;
                }
                if (sendMail)
                {
                    var biz = _dataAccessor.Get<WfBusiness>(activityIns.BusinessUid, false);
                    string title = $"有一份\"{activityIns.AppName}\"的待处理任务需要您处理!";
                    string where = "TableName='" + biz.BillEntity + "' and Enabled=1 and ModuleUid='BillMailTmpl'";
                    var emailTemplates = _dataAccessor.QueryWhere<CfgEmailTemplate>(where, null, false);
                    //流程中通知业务处理人模板
                    CfgEmailTemplate emailTemplate = emailTemplates.Where(t => t.Code == "NoticeApprover").FirstOrDefault();
                    string content = string.Empty;
                    if (emailTemplate != null)
                    {
                        var process = _dataAccessor.Get<WfProcessInstance>(activityIns.ProcessInsUid, true);

                        //内容
                        content = emailTemplate.TemplateContent;

                        content = BuildeMessageContent(process, content);

                        if (content.Contains("${业务处理时间}"))
                        {
                            content = content.Replace("${业务处理时间}", activityIns.StartTime);
                        }

                        if (content.Contains("${业务流程状态}"))
                        {
                            content = content.Replace("${业务流程状态}", process.ProcessStateMC);
                        }

                        if (content.Contains("${业务审批结论}"))
                        {
                            content = content.Replace("${业务审批结论}", "");
                        }

                        if (content.Contains("${业务审批意见}"))
                        {
                            content = content.Replace("${业务审批意见}", "");
                        }
                        if (content.Contains("${业务处理人}"))
                        {
                            content = content.Replace("${业务处理人}", "");
                        }
                    }
                    else
                    {
                        content = $"有一份\"{activityIns.AppName}\"的待处理任务需要您处理!请登录系统操作。";
                    }
                    SendMailToAssignee(title, employee.EmpName, $"{employee.EmpName}<{employee.Mailbox}>", content);
                }
                if (sendMessage)
                {
                    string content = $"有一份\"{activityIns.AppName}\"的待处理任务需要您处理!";
                    SendInmsgToAssignee(employee.Fid, content);
                }
            }
        }
        public JsonResult GetMailTemplate(string fid)
        {
            CfgEmailTemplate model = _dbContext.Get <CfgEmailTemplate>(fid);

            return(Json(model));
        }
Beispiel #3
0
        /// <summary>
        /// 流程结束后,发送消息
        /// </summary>
        /// <param name="processIns">流程实例</param>
        /// <param name="approveResult">审批结果(通过or驳回)</param>
        public void SendMessageWhenProcessCompleted(WfProcessInstance processIns, string approveResult)
        {
            //发送消息
            //{'notice':1,'suspend':1,'mail':1,'message':1}
            string messageSetting = processIns.MessageSetting;
            bool sendNotice = false;
            bool sendMail = false;
            bool sendMessage = false;
            if (messageSetting.IsPresent())
            {
                var jmset = JObject.Parse(messageSetting);
                sendNotice = jmset.GetValue("notice").ToBool();
                sendMail = jmset.GetValue("mail").ToBool();
                sendMessage = jmset.GetValue("message").ToBool();
            }
            if (!sendNotice || processIns.AppEmpUid.IsMissing())
            {
                return;
            }
            //收件人 
            Employee employee = _dataAccessor.Get<Employee>(processIns.AppEmpUid);

            if (sendMail)
            {
                //流程完成通知业务申请人模板
                CfgEmailTemplate emailTemplate = _dataAccessor.QueryFirstOrDefaultWhere<CfgEmailTemplate>("Code='CompleteNoticeApplier' and Enabled=1 order by Id des");

                //标题
                string title = $"申请单[{processIns.ProcessName}],单号:{processIns.BizName},已经审批完成,审批结果:{approveResult}";
                string content = string.Empty;
                if (emailTemplate != null)
                {
                    //邮件内容
                    content = emailTemplate.TemplateContent;
                    content = BuildeMessageContent(processIns, content);

                    if (content.Contains("${业务处理时间}"))
                    {
                        content = content.Replace("${业务处理时间}", processIns.EndTime);
                    }

                    if (content.Contains("${业务流程状态}"))
                    {
                        content = content.Replace("${业务流程状态}", "完成");
                    }

                    if (content.Contains("${业务审批结论}"))
                    {
                        content = content.Replace("${业务审批结论}", approveResult);
                    }
                    if (content.Contains("${业务审批意见}") || content.Contains("${业务处理人}"))
                    {
                        IEnumerable<WfTask> tasks = _dataAccessor.QueryWhere<WfTask>($" ProcessInsUid='{processIns.Fid}' and TaskState='Completed'").OrderBy(c => c.ExecuteTime);
                        StringBuilder suggestion = new StringBuilder();
                        foreach (var task in tasks)
                        {
                            suggestion.Append(task.ExecutorEmpName).Append(" : \"").Append(task.Suggestion).Append("\"");
                            suggestion.AppendLine("<br/>");
                        }
                        content = content.Replace("${业务审批意见}", suggestion.ToString());
                        content = content.Replace("${业务处理人}", suggestion.ToString());
                    }
                }
                else
                {
                    //邮件内容
                    content = $"申请单[{processIns.ProcessName}],单号:{processIns.BizName},已经审批完成,审批结果:{approveResult}。具体情况请登录系统查看。";

                }
                SendMailToAssignee(title, employee.EmpName, $"{employee.EmpName}<{employee.Mailbox}>", content);
            }

            if (sendMessage)
            {
                //消息内容
                string content = $"申请单[{processIns.ProcessName}],单号:{processIns.BizName},已经审批完成,审批结果:{approveResult}";
                SendInmsgToAssignee(employee.Fid, content);
            }

        }