/// <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)); }
/// <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); } }