项目名称:{gItem.ProjectName}
+事项编号:{gItem.GJSXID}
+责任单位:{gItem.UnitName}
+专业:{gItem.CNProfessionalName}
+事项类别:{gItem.GJSXTypeName}
+紧急程度:{gItem.QuestionTypeName}
+事项描述:{gItem.Detail}
+提出人:{gItem.UserName}
+责任人:{gItem.User_AcceptanceUserName}
+跟踪人:{gItem.User_ReceiveUserName}
+抄送人:{gItem.User_CsUsers}
+约定完成日期:{gItem.CompleteDate.ToShortDateString()}
+申请关闭说明:{detail}
+ +登录账号:{user.Account}
+登录密码:CWCEC.+身份证号后四位(示例:CWCEC.1234)
+ + +"; + //< p > 登录密码:{ user.RawPassword} p > + mail.Body = bodyStr; + + try + { + bool send = PushEmail(mail); + } + catch (Exception ex) + { + //ErrLogInfo.WriteLog($"关键事项申请关闭通知提醒责任人;项目名称:{gItem.ProjectName},事项编号:{gItem.GJSXID}", ex); + ErrLogInfo.WriteLog($"【申请关闭通知提醒责任人邮箱提醒异常】邮箱:{user.Email};项目名称:{gItem.ProjectName},事项编号:{gItem.GJSXID};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } + } + } + } + } + + ///项目名称:{gItem.ProjectName}
+事项编号:{gItem.GJSXID}
+责任单位:{gItem.UnitName}
+专业:{gItem.CNProfessionalName}
+事项类别:{gItem.GJSXTypeName}
+紧急程度:{gItem.QuestionTypeName}
+事项描述:{gItem.Detail}
+提出人:{gItem.UserName}
+责任人:{gItem.User_AcceptanceUserName}
+跟踪人:{gItem.User_ReceiveUserName}
+抄送人:{gItem.User_CsUsers}
+约定完成日期:{gItem.CompleteDate.ToShortDateString()}
+驳回申请关闭说明:{detail}
+ +登录账号:{user.Account}
+登录密码:CWCEC.+身份证号后四位(示例:CWCEC.1234)
+ + +"; + //< p > 登录密码:{ user.RawPassword} p > + mail.Body = bodyStr; + + try + { + bool send = PushEmail(mail); + } + catch (Exception ex) + { + //ErrLogInfo.WriteLog($"关键事项申请关闭驳回通知提醒责任人;项目名称:{gItem.ProjectName},事项编号:{gItem.GJSXID}", ex); + ErrLogInfo.WriteLog($"【驳回申请关闭通知提醒责任人邮箱提醒异常】邮箱:{user.Email};项目名称:{gItem.ProjectName},事项编号:{gItem.GJSXID};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } + } } } } @@ -168,11 +441,11 @@ namespace BLL ,a.CsUsers as User_CsUserIds ,User_CsUsers = STUFF((SELECT ',' + p2.UserName FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.CsUsers + ',') > 0 FOR XML PATH('')), 1, 1,'') --,User_CsUsersUserEmail = STUFF((SELECT ',' + p2.Email FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.CsUsers + ',') > 0 FOR XML PATH('')), 1, 1,'') - from GJSX as a + from GJSX as a left join Sys_User as b on a.UserId = b.UserId left join[dbo].[Base_Project] on a.ProjectId = Base_Project.ProjectId left join[dbo].[Base_Unit] on a.UnitId = Base_Unit.UnitId - where 1=1 and a.state<>'0' and GETDATE()>a.CompleteDate "; + where 1=1 and Base_Project.ProjectState=1 and a.state<>'0' and a.state<>'1' and (GETDATE()>a.CompleteDate or DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate()))=-7 or DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate()))=-6 or DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate()))=-1 ) "; List| 事项编号 | 事项描述 | 事项类别 | +紧急程度 | 发起人 | 责任人 | 约定完成时间 | @@ -315,15 +590,23 @@ namespace BLL mail.Body = bodyStr; if (index > 1) { - //allnum++; - bool send = PushEmail(mail); - //Thread.Sleep(1000); //暂停1秒 + try + { + //allnum++; + bool send = PushEmail(mail); + //Thread.Sleep(1000); //暂停1秒 + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"【邮箱提醒异常】邮箱:{user.Email};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } } } #endregion - #region 提醒项目主管和项目经理 + #region 事项逾期提醒项目主管和项目经理 var projectSupervisors = ProjectUserService.GetProjectUserByRoleId(Const.ProjectSupervisor); var projectManagers = ProjectUserService.GetProjectUserByRoleId(Const.ProjectManager); @@ -339,7 +622,7 @@ namespace BLL { MailMessage mail = new MailMessage(); //邮件主题 - mail.Subject = $"关键事项超期预警提醒——{projectName}"; + mail.Subject = $"关键事项逾期提醒——{projectName}"; mail.To.Add(user.Email); //mail.To.Add("test@test.com"); mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 @@ -349,20 +632,33 @@ namespace BLL int index = 0; if (projectManagerIds.Contains(user.UserId)) { - foreach (var item in lstProjectOverdue) + index = 0; + //超期当日提醒项目经理 + var lstProjectOverdue1 = lstProjectOverdue.Where(x => x.DateDiffDays == 0 || x.DateDiffDays == -1).ToList(); + //超期一周的重要、紧急事项提醒项目经理 + var lstProjectOverdue7 = lstProjectOverdue.Where(x => x.DateDiffDays >= 7 && x.QuestionTypeName != "一般").ToList(); + lstProjectOverdue1.AddRange(lstProjectOverdue7); + foreach (var item in lstProjectOverdue1) { - index++; - tbodyStr.Append($"||||
|---|---|---|---|---|---|---|---|---|---|---|
| {index} | 事项逾期 | {item.UnitName} | {item.GJSXID} | {item.Detail} | {item.GJSXTypeName} | {item.UserName} | {item.User_AcceptanceUserName} | {item.CompleteDate.ToShortDateString()} | {(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "半")} | |
| {index} | 事项逾期 | {item.UnitName} | {item.GJSXID} | {item.Detail} | {item.GJSXTypeName} | {item.QuestionTypeName} | {item.UserName} | {item.User_AcceptanceUserName} | {item.CompleteDate.ToShortDateString()} | {(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "半")} |
| {index} | 事项逾期 | {item.UnitName} | {item.GJSXID} | {item.Detail} | {item.GJSXTypeName} | {item.UserName} | {item.User_AcceptanceUserName} | {item.CompleteDate.ToShortDateString()} | {(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "半")} | |
| {index} | 事项逾期 | {item.UnitName} | {item.GJSXID} | {item.Detail} | {item.GJSXTypeName} | {item.QuestionTypeName} | {item.UserName} | {item.User_AcceptanceUserName} | {item.CompleteDate.ToShortDateString()} | {(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "半")} | 事项编号 | 事项描述 | 事项类别 | +紧急程度 | 发起人 | 责任人 | 约定完成时间 | @@ -403,9 +700,17 @@ namespace BLL mail.Body = bodyStr; if (index > 1) { - //allnum++; - bool send = PushEmail(mail); - //Thread.Sleep(1000); //暂停1秒 + try + { + //allnum++; + bool send = PushEmail(mail); + //Thread.Sleep(1000); //暂停1秒 + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"【邮箱提醒异常】邮箱:{user.Email};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } } } diff --git a/SGGL/BLL/SysManage/UserService.cs b/SGGL/BLL/SysManage/UserService.cs index 35131ad9..06d3b907 100644 --- a/SGGL/BLL/SysManage/UserService.cs +++ b/SGGL/BLL/SysManage/UserService.cs @@ -3,6 +3,7 @@ namespace BLL using System.Collections.Generic; using System.IO; using System.Linq; + using System.ServiceModel.Security; using System.Web.UI.WebControls; public static class UserService @@ -390,6 +391,27 @@ namespace BLL return result; } + ///