using Quartz; using Entity=Sugar.Enties; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WebAPIBase.Utils; namespace WebAPIBase.Service { /// /// 当有新的待审审批流到达董事长时向王帅发一个通知邮件 /// public class SendEmailToChairmanJob : IJob { NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); /// /// 当有新的待审审批流到达董事长时向王帅发一个通知邮件 /// /// /// public Task Execute(IJobExecutionContext context) { return Task.Run(() => { try { //NlogHelper.quartzLogger.Info("开始"); var sql = $"SELECT * FROM dbo.WorkFlowAct WHERE ToTaskName LIKE '%董事长%' AND SignDate IS NULL AND FinishDate IS NULL AND NOT EXISTS(SELECT EmailHistoryCode FROM dbo.EmailHistory WHERE MasterCode=WorkFlowAct.actcode and EmailType='WorkFlowAct')"; //logger.Info($"主项计划sql:{sql}"); var manager = new WorkFlowActManager(); var unitManager = new UnitManager(); var list = manager.Db.Ado.SqlQuery(sql); foreach (var item in list) { sql = $"SELECT * FROM dbo.WorkFlowCaseProperty WHERE WorkFlowCaseCode='{item.CaseCode}' AND (WorkFlowProcedurePropertyName='流水号' OR WorkFlowProcedurePropertyName='主题' OR WorkFlowProcedurePropertyName='项目代码')"; var list1 = manager.Db.Ado.SqlQuery(sql); string liushui = ""; string zhuti = ""; string projectCode = ""; string projectName = ""; string procedureName = ""; foreach(var item1 in list1) { if(item1.WorkFlowProcedurePropertyName=="流水号") { liushui = item1.WorkFlowProcedurePropertyValue; } else if(item1.WorkFlowProcedurePropertyName == "主题") { zhuti = item1.WorkFlowProcedurePropertyValue; } else if (item1.WorkFlowProcedurePropertyName == "项目代码") { projectCode = item1.WorkFlowProcedurePropertyValue; } } sql = $"SELECT ProjectName FROM dbo.Project WHERE ProjectCode='{projectCode}'"; projectName = manager.Db.Ado.GetString(sql); sql = $"SELECT Description FROM dbo.WorkFlowProcedure WHERE ProcedureCode='{item.ProcedureCode}'"; procedureName = manager.Db.Ado.GetString(sql); #region 给王帅发邮件 var username = "王帅"; var mailBox = "shuai.wang@chinahonden.com"; NlogHelper.quartzLogger.Info($"给{username}发邮件开始"); EmailHelper helper = new EmailHelper(); helper.Title = $"新审批流程需要董事长审批"; helper.Cont = $"流水号为{liushui},项目名称为{projectName},主题为{zhuti},流程名称为{procedureName},需要董事长审批,请查收"; helper.ReceiveEmail = mailBox; helper.SendMail(helper); NlogHelper.quartzLogger.Info($"给{username}发邮件结束"); #endregion #region 发邮件后做发邮件记录,防止重复发送 var emailHistory = new Entity.EmailHistory(); emailHistory.EmailHistoryCode = unitManager.GetSysCodeValue("EmailHistory"); emailHistory.EmailType = "WorkFlowAct"; emailHistory.MasterCode = item.ActCode; emailHistory.EmailTitle = helper.Title; emailHistory.EmailContent = helper.Cont; emailHistory.Sender = helper.SendEMail; emailHistory.Receiver = helper.ReceiveEmail; emailHistory.SendDate = DateTime.Now; manager.Db.Insertable(emailHistory).ExecuteCommand(); #endregion } } catch (Exception ero) { NlogHelper.quartzLogger.Error(" 给王帅发邮件执行出错:" + ero, true); } }); } } }