SendEmailToChairmanJob.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Quartz;
  2. using Entity=Sugar.Enties;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using WebAPIBase.Utils;
  9. namespace WebAPIBase.Service
  10. {
  11. /// <summary>
  12. /// 当有新的待审审批流到达董事长时向王帅发一个通知邮件
  13. /// </summary>
  14. public class SendEmailToChairmanJob : IJob
  15. {
  16. NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
  17. /// <summary>
  18. /// 当有新的待审审批流到达董事长时向王帅发一个通知邮件
  19. /// </summary>
  20. /// <param name="context"></param>
  21. /// <returns></returns>
  22. public Task Execute(IJobExecutionContext context)
  23. {
  24. return Task.Run(() =>
  25. {
  26. try
  27. {
  28. //NlogHelper.quartzLogger.Info("开始");
  29. 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')";
  30. //logger.Info($"主项计划sql:{sql}");
  31. var manager = new WorkFlowActManager();
  32. var unitManager = new UnitManager();
  33. var list = manager.Db.Ado.SqlQuery<Entity.WorkFlowAct>(sql);
  34. foreach (var item in list)
  35. {
  36. sql = $"SELECT * FROM dbo.WorkFlowCaseProperty WHERE WorkFlowCaseCode='{item.CaseCode}' AND (WorkFlowProcedurePropertyName='流水号' OR WorkFlowProcedurePropertyName='主题' OR WorkFlowProcedurePropertyName='项目代码')";
  37. var list1 = manager.Db.Ado.SqlQuery<Entity.WorkFlowCaseProperty>(sql);
  38. string liushui = "";
  39. string zhuti = "";
  40. string projectCode = "";
  41. string projectName = "";
  42. string procedureName = "";
  43. foreach(var item1 in list1)
  44. {
  45. if(item1.WorkFlowProcedurePropertyName=="流水号")
  46. {
  47. liushui = item1.WorkFlowProcedurePropertyValue;
  48. }
  49. else if(item1.WorkFlowProcedurePropertyName == "主题")
  50. {
  51. zhuti = item1.WorkFlowProcedurePropertyValue;
  52. }
  53. else if (item1.WorkFlowProcedurePropertyName == "项目代码")
  54. {
  55. projectCode = item1.WorkFlowProcedurePropertyValue;
  56. }
  57. }
  58. sql = $"SELECT ProjectName FROM dbo.Project WHERE ProjectCode='{projectCode}'";
  59. projectName = manager.Db.Ado.GetString(sql);
  60. sql = $"SELECT Description FROM dbo.WorkFlowProcedure WHERE ProcedureCode='{item.ProcedureCode}'";
  61. procedureName = manager.Db.Ado.GetString(sql);
  62. #region 给王帅发邮件
  63. var username = "王帅";
  64. var mailBox = "shuai.wang@chinahonden.com";
  65. NlogHelper.quartzLogger.Info($"给{username}发邮件开始");
  66. EmailHelper helper = new EmailHelper();
  67. helper.Title = $"新审批流程需要董事长审批";
  68. helper.Cont = $"流水号为{liushui},项目名称为{projectName},主题为{zhuti},流程名称为{procedureName},需要董事长审批,请查收";
  69. helper.ReceiveEmail = mailBox;
  70. helper.SendMail(helper);
  71. NlogHelper.quartzLogger.Info($"给{username}发邮件结束");
  72. #endregion
  73. #region 发邮件后做发邮件记录,防止重复发送
  74. var emailHistory = new Entity.EmailHistory();
  75. emailHistory.EmailHistoryCode = unitManager.GetSysCodeValue("EmailHistory");
  76. emailHistory.EmailType = "WorkFlowAct";
  77. emailHistory.MasterCode = item.ActCode;
  78. emailHistory.EmailTitle = helper.Title;
  79. emailHistory.EmailContent = helper.Cont;
  80. emailHistory.Sender = helper.SendEMail;
  81. emailHistory.Receiver = helper.ReceiveEmail;
  82. emailHistory.SendDate = DateTime.Now;
  83. manager.Db.Insertable(emailHistory).ExecuteCommand();
  84. #endregion
  85. }
  86. }
  87. catch (Exception ero)
  88. {
  89. NlogHelper.quartzLogger.Error(" 给王帅发邮件执行出错:" + ero, true);
  90. }
  91. });
  92. }
  93. }
  94. }