From b889ca30acba97c84713aaa6352b8f4bace9a7d9 Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Wed, 19 Nov 2025 20:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs | 418 ++++++++++-------- SGGL/WebAPI/ErrLog.txt | 17 +- .../PublishProfiles/FolderProfile.pubxml.user | 18 +- SGGL/WebAPI/WebAPI.csproj.user | 2 +- 4 files changed, 255 insertions(+), 200 deletions(-) diff --git a/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs b/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs index 73d9a321..1fb11917 100644 --- a/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs +++ b/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs @@ -109,8 +109,16 @@ namespace BLL { mail.Subject = $"有新的关键事项抄送你了——{gItem.ProjectName}"; } - mail.To.Add(user.Email); - //mail.To.Add("test@test.com"); + try + { + mail.To.Add(user.Email); + //mail.To.Add("test@test.com"); + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"【邮箱提醒异常】{user.UserName}邮箱:{user.Email};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 //邮件正文 string bodyStr = $@" @@ -235,8 +243,16 @@ namespace BLL MailMessage mail = new MailMessage(); //邮件主题 mail.Subject = $"有新的事项申请关闭——{gItem.ProjectName}"; - mail.To.Add(user.Email); - //mail.To.Add("test@test.com"); + try + { + mail.To.Add(user.Email); + //mail.To.Add("test@test.com"); + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"【邮箱提醒异常】{user.UserName}邮箱:{user.Email};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 //邮件正文 string bodyStr = $@" @@ -361,8 +377,16 @@ namespace BLL MailMessage mail = new MailMessage(); //邮件主题 mail.Subject = $"有事项申请关闭被驳回了——{gItem.ProjectName}"; - mail.To.Add(user.Email); - //mail.To.Add("test@test.com"); + try + { + mail.To.Add(user.Email); + //mail.To.Add("test@test.com"); + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"【邮箱提醒异常】{user.UserName}邮箱:{user.Email};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 //邮件正文 string bodyStr = $@" @@ -418,12 +442,12 @@ namespace BLL /// public static void OverdueWarningSendEmail() { - try - { - Model.SGGLDB db = Funs.DB; - //取未关闭且已经超期的数据 + //try + //{ + Model.SGGLDB db = Funs.DB; + //取未关闭且已经超期的数据 - string strSql = @"select + string strSql = @"select DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate())) AS DateDiffDays ,a.GJSXID,a.ProjectId,a.Detail,a.createDate,Base_Project.ProjectName,Base_Unit.UnitName,a.CloseDate,a.IsManypeople,a.CompleteDate,a.AttachUrl ,case a.state when 2 then '正在进行' when 3 then '待办' when 0 then '已关闭' when 1 then '开放' end as state @@ -447,112 +471,121 @@ namespace BLL left join[dbo].[Base_Unit] on a.UnitId = Base_Unit.UnitId 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 listStr = new List(); - SqlParameter[] parameter = listStr.ToArray(); + List listStr = new List(); + SqlParameter[] parameter = listStr.ToArray(); - DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter); + DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter); - // 使用LINQ将DataTable转换为List - var lstOverdue = table.AsEnumerable().Select(row => new GJSXItem + // 使用LINQ将DataTable转换为List + var lstOverdue = table.AsEnumerable().Select(row => new GJSXItem + { + DateDiffDays = Convert.ToInt32(row["DateDiffDays"]), + GJSXID = row["GJSXID"].ToString(), + ProjectId = row["ProjectId"].ToString(), + ProjectName = row["ProjectName"].ToString(), + UnitName = row["UnitName"].ToString(), + Detail = row["Detail"].ToString(), + CNProfessionalName = row["CNProfessionalName"].ToString(), + QuestionTypeName = row["QuestionTypeName"].ToString(), + GJSXTypeName = row["GJSXTypeName"].ToString(), + UserID = row["UserID"].ToString(), + UserName = row["UserName"].ToString(), + //UserEmail = row["UserEmail"].ToString(), + User_ReceiveUserId = row["User_ReceiveUserId"].ToString(), + User_ReceiveUserName = row["User_ReceiveUserName"].ToString(), + //User_ReceiveUserEmail = row["User_ReceiveUserEmail"].ToString(), + User_AcceptanceUserId = row["User_AcceptanceUserId"].ToString(), + User_AcceptanceUserName = row["User_AcceptanceUserName"].ToString(), + //User_AcceptanceUserEmail = row["User_AcceptanceUserEmail"].ToString(), + User_CsUserIds = row["User_CsUserIds"].ToString(), + User_CsUsers = row["User_CsUsers"].ToString(), + //User_CsUsersUserEmail = row["User_CsUsersUserEmail"].ToString(), + CompleteDate = Convert.ToDateTime(row["CompleteDate"].ToString()) + }).ToList(); + + #region 根据用户聚合推送,多个事项合并推送 + + //获取有邮箱的用户 + var userIds = BLL.UserService.GetUserHaveEmailList(); + + //userIds = userIds.Where(x => x.UserName == "张小松" || x.UserName == "詹佩佩").ToList(); + //userIds = userIds.Where(x => x.UserName == "申银行").ToList(); + if (userIds.Any() && lstOverdue.Any()) + { + //int allnum = 0; + var lstProject = lstOverdue.Select(x => new { x.ProjectId, x.ProjectName }).Distinct().ToList(); + foreach (var pro in lstProject) { - DateDiffDays = Convert.ToInt32(row["DateDiffDays"]), - GJSXID = row["GJSXID"].ToString(), - ProjectId = row["ProjectId"].ToString(), - ProjectName = row["ProjectName"].ToString(), - UnitName = row["UnitName"].ToString(), - Detail = row["Detail"].ToString(), - CNProfessionalName = row["CNProfessionalName"].ToString(), - QuestionTypeName = row["QuestionTypeName"].ToString(), - GJSXTypeName = row["GJSXTypeName"].ToString(), - UserID = row["UserID"].ToString(), - UserName = row["UserName"].ToString(), - //UserEmail = row["UserEmail"].ToString(), - User_ReceiveUserId = row["User_ReceiveUserId"].ToString(), - User_ReceiveUserName = row["User_ReceiveUserName"].ToString(), - //User_ReceiveUserEmail = row["User_ReceiveUserEmail"].ToString(), - User_AcceptanceUserId = row["User_AcceptanceUserId"].ToString(), - User_AcceptanceUserName = row["User_AcceptanceUserName"].ToString(), - //User_AcceptanceUserEmail = row["User_AcceptanceUserEmail"].ToString(), - User_CsUserIds = row["User_CsUserIds"].ToString(), - User_CsUsers = row["User_CsUsers"].ToString(), - //User_CsUsersUserEmail = row["User_CsUsersUserEmail"].ToString(), - CompleteDate = Convert.ToDateTime(row["CompleteDate"].ToString()) - }).ToList(); - - #region 根据用户聚合推送,多个事项合并推送 - - //获取有邮箱的用户 - var userIds = BLL.UserService.GetUserHaveEmailList(); - - //userIds = userIds.Where(x => x.UserName == "申银行").ToList(); - if (userIds.Any() && lstOverdue.Any()) - { - //int allnum = 0; - var lstProject = lstOverdue.Select(x => new { x.ProjectId, x.ProjectName }).Distinct().ToList(); - foreach (var pro in lstProject) + //if (allnum > 50) { break; } + var lstProjectOverdue = lstOverdue.Where(x => x.ProjectId == pro.ProjectId).ToList(); + if (lstProjectOverdue.Any()) { - //if (allnum > 50) { break; } - var lstProjectOverdue = lstOverdue.Where(x => x.ProjectId == pro.ProjectId).ToList(); - if (lstProjectOverdue.Any()) + string projectName = pro.ProjectName; + + #region 事项预警提醒相关人员 + + foreach (var user in userIds) { - string projectName = pro.ProjectName; - - #region 事项预警提醒相关人员 - - foreach (var user in userIds) + //if (allnum > 100) { break; } + MailMessage mail = new MailMessage(); + //邮件主题 + mail.Subject = $"关键事项预警提醒——{projectName}"; + try { - //if (allnum > 100) { break; } - MailMessage mail = new MailMessage(); - //邮件主题 - mail.Subject = $"关键事项预警提醒——{projectName}"; mail.To.Add(user.Email); //mail.To.Add("test@test.com"); - mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"【邮箱提醒异常】{user.UserName}邮箱:{user.Email};时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")};异常信息:{ex.Message}"); + continue; + } + mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 - StringBuilder tbodyStr = new StringBuilder(); - int index = 1; - //责任人为本人 - var acceptanceItems = lstProjectOverdue.Where(x => !string.IsNullOrWhiteSpace(x.User_AcceptanceUserId) && x.User_AcceptanceUserId.Contains(user.UserId)).OrderByDescending(x => x.DateDiffDays).ToList(); - if (acceptanceItems.Any()) + StringBuilder tbodyStr = new StringBuilder(); + int index = 1; + //责任人为本人 + var acceptanceItems = lstProjectOverdue.Where(x => !string.IsNullOrWhiteSpace(x.User_AcceptanceUserId) && x.User_AcceptanceUserId.Contains(user.UserId)).OrderByDescending(x => x.DateDiffDays).ToList(); + if (acceptanceItems.Any()) + { + foreach (var item in acceptanceItems) { - foreach (var item in acceptanceItems) - { - tbodyStr.Append($"{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() : item.DateDiffDays < -1 ? "还有一周就逾期了" : "半")}"); - index++; - } + tbodyStr.Append($"{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() : item.DateDiffDays < -1 ? "还有一周就逾期了" : "半")}"); + index++; } - //发起人为本人 - var userItems = lstProjectOverdue.Where(x => x.UserID == user.UserId && x.DateDiffDays > -1).OrderByDescending(x => x.DateDiffDays).ToList(); - if (userItems.Any()) + } + //发起人为本人 + var userItems = lstProjectOverdue.Where(x => x.UserID == user.UserId && x.DateDiffDays > -1).OrderByDescending(x => x.DateDiffDays).ToList(); + if (userItems.Any()) + { + foreach (var item in userItems) { - foreach (var item in userItems) - { - tbodyStr.Append($"{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++; - } + tbodyStr.Append($"{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++; } - //跟踪人为本人--x.User_ReceiveUserId != null && x.User_ReceiveUserId != "" && - var receiveItems = lstProjectOverdue.Where(x => !string.IsNullOrWhiteSpace(x.User_ReceiveUserId) && x.User_ReceiveUserId.Contains(user.UserId) && x.DateDiffDays > -1).OrderByDescending(x => x.DateDiffDays).ToList(); - if (receiveItems.Any()) + } + //跟踪人为本人--x.User_ReceiveUserId != null && x.User_ReceiveUserId != "" && + var receiveItems = lstProjectOverdue.Where(x => !string.IsNullOrWhiteSpace(x.User_ReceiveUserId) && x.User_ReceiveUserId.Contains(user.UserId) && x.DateDiffDays > -1).OrderByDescending(x => x.DateDiffDays).ToList(); + if (receiveItems.Any()) + { + foreach (var item in receiveItems) { - foreach (var item in receiveItems) - { - tbodyStr.Append($"{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++; - } + tbodyStr.Append($"{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++; } - //抄送人为本人 - var csUserItems = lstProjectOverdue.Where(x =>!string.IsNullOrWhiteSpace(x.User_CsUserIds)&& x.User_CsUserIds.Contains(user.UserId)).OrderByDescending(x => x.DateDiffDays).ToList(); - if (csUserItems.Any()) + } + //抄送人为本人 + var csUserItems = lstProjectOverdue.Where(x => !string.IsNullOrWhiteSpace(x.User_CsUserIds) && x.User_CsUserIds.Contains(user.UserId)).OrderByDescending(x => x.DateDiffDays).ToList(); + if (csUserItems.Any()) + { + foreach (var item in csUserItems) { - foreach (var item in csUserItems) - { - tbodyStr.Append($"{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() : item.DateDiffDays < -1 ? "还有一周就逾期了" : "半")}"); - index++; - } + tbodyStr.Append($"{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() : item.DateDiffDays < -1 ? "还有一周就逾期了" : "半")}"); + index++; } - //邮件正文 - string bodyStr = @" + } + //邮件正文 + string bodyStr = @"