From 1b0eb339b12010b5aae0094519b98f2b80152e89 Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Mon, 22 Sep 2025 20:39:23 +0800 Subject: [PATCH] 1 --- SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs | 275 +++++++++++++++++- SGGL/BLL/SysManage/UserService.cs | 22 ++ .../PZHGL/GJSX/GJSXDetailEdit.aspx.cs | 8 +- .../PZHGL/GJSX/GJSXListEdit.aspx.cs | 87 ++++-- SGGL/WebAPI/Controllers/IDP/IDPController.cs | 2 +- SGGL/WebAPI/Filter/TestPermissionAttribute.cs | 1 + .../PublishProfiles/FolderProfile.pubxml.user | 14 +- SGGL/WebAPI/WebAPI.csproj.user | 2 +- 8 files changed, 370 insertions(+), 41 deletions(-) diff --git a/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs b/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs index d73ae068..04246056 100644 --- a/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs +++ b/SGGL/BLL/PZHGL/GJSX/GJSXMonitorService.cs @@ -24,12 +24,12 @@ namespace BLL //public static Model.SGGLDB db = Funs.DB; /// - /// 关键事项通知提醒责任人、抄送人 + /// 关键事项新增通知提醒责任人、抄送人 /// - /// /// - public static void GJSXNoticeSendEmail(List userIds, string gjsxId) + public static void GJSXNoticeSendEmail(string gjsxId) { + List userIds = new List(); 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 @@ -89,6 +89,11 @@ namespace BLL var gItem = lstOverdue.FirstOrDefault(); if (gItem != null) { + userIds.Add(gItem.User_AcceptanceUserId); + if (!string.IsNullOrWhiteSpace(gItem.User_CsUserIds)) + { + userIds.AddRange(gItem.User_CsUserIds.Split(',')); + } foreach (var userId in userIds) { var user = UserService.GetUserByUserId(userId); @@ -152,6 +157,255 @@ namespace BLL } } + /// + /// 关键事项申请关闭通知提醒提出人和跟踪人 + /// + /// + /// + public static void GJSXApplyCloseNoticeSendEmail(string gjsxId, string detail) + { + List userIds = new List(); + 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 + ,CNProfessionalName = STUFF((SELECT ',' + Base_CNProfessional.ProfessionalName FROM dbo.Base_CNProfessional where PATINDEX('%,' + RTRIM(Base_CNProfessional.CNProfessionalId) + ',%', ',' + a.CNProfessional_ID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,QuestionTypeName = STUFF((SELECT ',' + Base_QuestionType.QuestionTypeName FROM dbo.Base_QuestionType where PATINDEX('%,' + RTRIM(Base_QuestionType.QuestionTypeID) + ',%', ',' + a.QuestionTypeID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,GJSXTypeName = STUFF((SELECT ',' + Base_GJSXType.GJSXTypeName FROM dbo.Base_GJSXType where PATINDEX('%,' + RTRIM(Base_GJSXType.GJSXTypeID) + ',%', ',' + a.GJSXTypeID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,a.UserID,b.UserName + --,b.Email as UserEmail + ,a.User_ReceiveID as User_ReceiveUserId + ,User_ReceiveUserName = STUFF((SELECT ',' + p2.UserName FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.User_ReceiveID + ',') > 0 FOR XML PATH('')), 1, 1,'') + --,User_ReceiveUserEmail = STUFF((SELECT ',' + p2.Email FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.User_ReceiveID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,a.user_Acceptance as User_AcceptanceUserId + ,User_AcceptanceUserName = STUFF((SELECT ',' + p2.UserName FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.user_Acceptance + ',') > 0 FOR XML PATH('')), 1, 1,'') + --,User_AcceptanceUserEmail = STUFF((SELECT ',' + p2.Email FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.user_Acceptance + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,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 + 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.GJSXID = '{gjsxId}' "; + + List listStr = new List(); + SqlParameter[] parameter = listStr.ToArray(); + + DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter); + // 使用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(); + + var gItem = lstOverdue.FirstOrDefault(); + if (gItem != null) + { + userIds.Add(gItem.UserID); + userIds.Add(gItem.User_ReceiveUserId); + foreach (var userId in userIds) + { + var user = UserService.GetUserByUserId(userId); + if (!string.IsNullOrWhiteSpace(user.Email)) + { + MailMessage mail = new MailMessage(); + //邮件主题 + mail.Subject = $"有新的事项申请关闭——{gItem.ProjectName}"; + mail.To.Add(user.Email); + //mail.To.Add("test@test.com"); + mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 + //邮件正文 + string bodyStr = $@" + + + + +

事项申请关闭

+

项目名称:{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} + mail.Body = bodyStr; + + try + { + bool send = PushEmail(mail); + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"关键事项申请关闭通知提醒责任人;项目名称:{gItem.ProjectName},事项编号:{gItem.GJSXID}", ex); + } + } + } + } + } + + /// + /// 关键事项驳回申请关闭通知提醒责任人 + /// + /// + /// + public static void GJSXRejectApplyCloseNoticeSendEmail(string gjsxId, string detail) + { + List userIds = new List(); + 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 + ,CNProfessionalName = STUFF((SELECT ',' + Base_CNProfessional.ProfessionalName FROM dbo.Base_CNProfessional where PATINDEX('%,' + RTRIM(Base_CNProfessional.CNProfessionalId) + ',%', ',' + a.CNProfessional_ID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,QuestionTypeName = STUFF((SELECT ',' + Base_QuestionType.QuestionTypeName FROM dbo.Base_QuestionType where PATINDEX('%,' + RTRIM(Base_QuestionType.QuestionTypeID) + ',%', ',' + a.QuestionTypeID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,GJSXTypeName = STUFF((SELECT ',' + Base_GJSXType.GJSXTypeName FROM dbo.Base_GJSXType where PATINDEX('%,' + RTRIM(Base_GJSXType.GJSXTypeID) + ',%', ',' + a.GJSXTypeID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,a.UserID,b.UserName + --,b.Email as UserEmail + ,a.User_ReceiveID as User_ReceiveUserId + ,User_ReceiveUserName = STUFF((SELECT ',' + p2.UserName FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.User_ReceiveID + ',') > 0 FOR XML PATH('')), 1, 1,'') + --,User_ReceiveUserEmail = STUFF((SELECT ',' + p2.Email FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.User_ReceiveID + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,a.user_Acceptance as User_AcceptanceUserId + ,User_AcceptanceUserName = STUFF((SELECT ',' + p2.UserName FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.user_Acceptance + ',') > 0 FOR XML PATH('')), 1, 1,'') + --,User_AcceptanceUserEmail = STUFF((SELECT ',' + p2.Email FROM dbo.Sys_User as p2 where PATINDEX('%,' + RTRIM(p2.UserId) + ',%', ',' + a.user_Acceptance + ',') > 0 FOR XML PATH('')), 1, 1,'') + ,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 + 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.GJSXID = '{gjsxId}' "; + + List listStr = new List(); + SqlParameter[] parameter = listStr.ToArray(); + + DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter); + // 使用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(); + + var gItem = lstOverdue.FirstOrDefault(); + if (gItem != null) + { + userIds.Add(gItem.User_AcceptanceUserId); + foreach (var userId in userIds) + { + var user = UserService.GetUserByUserId(userId); + if (!string.IsNullOrWhiteSpace(user.Email)) + { + MailMessage mail = new MailMessage(); + //邮件主题 + mail.Subject = $"有事项申请关闭被驳回了——{gItem.ProjectName}"; + mail.To.Add(user.Email); + //mail.To.Add("test@test.com"); + mail.IsBodyHtml = true;//确保邮件正文被当作HTML解析 + //邮件正文 + string bodyStr = $@" + + + + +

事项申请关闭被驳回

+

项目名称:{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} + mail.Body = bodyStr; + + try + { + bool send = PushEmail(mail); + } + catch (Exception ex) + { + ErrLogInfo.WriteLog($"关键事项申请关闭通知提醒责任人;项目名称:{gItem.ProjectName},事项编号:{gItem.GJSXID}", ex); + } + } + } + } + } + /// /// 关键事项超期预警定时提醒发送邮箱 @@ -181,11 +435,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 a.state<>'1' and (GETDATE()>a.CompleteDate or DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate()))=-7 or DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate()))=-6 ) "; + where 1=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(); @@ -224,6 +478,7 @@ namespace BLL //获取有邮箱的用户 var userIds = BLL.UserService.GetUserHaveEmailList(); + userIds = userIds.Where(x => x.UserName == "张邦兴").ToList(); if (userIds.Any() && lstOverdue.Any()) { //int allnum = 0; @@ -256,12 +511,12 @@ namespace BLL { 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 < 0 ? "还有一周就逾期了" : "半")}"); + 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).OrderByDescending(x => x.DateDiffDays).ToList(); + 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) @@ -271,7 +526,7 @@ namespace BLL } } //跟踪人为本人--x.User_ReceiveUserId != null && x.User_ReceiveUserId != "" && - var receiveItems = lstProjectOverdue.Where(x => x.User_ReceiveUserId.Contains(user.UserId)).OrderByDescending(x => x.DateDiffDays).ToList(); + var receiveItems = lstProjectOverdue.Where(x => x.User_ReceiveUserId.Contains(user.UserId) && x.DateDiffDays > -1).OrderByDescending(x => x.DateDiffDays).ToList(); if (receiveItems.Any()) { foreach (var item in receiveItems) @@ -286,7 +541,7 @@ namespace BLL { 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 < 0 ? "还有一周就逾期了" : "半")}"); + 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++; } } @@ -365,7 +620,7 @@ namespace BLL { index = 0; //超期当日提醒项目经理 - var lstProjectOverdue1 = lstProjectOverdue.Where(x => x.DateDiffDays == 0).ToList(); + 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); 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; } + /// + /// ûIdжûǷά䣬 + /// + /// + /// + public static bool IsUserHaveEmail(string userId, out string userName) + { + bool result = false; + userName = string.Empty; + if (!string.IsNullOrWhiteSpace(userId)) + { + var user = (from x in Funs.DB.Sys_User where x.UserId == userId select x).FirstOrDefault(); + if (user != null) + { + result = !string.IsNullOrWhiteSpace(user.Email); + userName = user.UserName; + } + } + return result; + } + /// /// ûIdȡû /// diff --git a/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXDetailEdit.aspx.cs b/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXDetailEdit.aspx.cs index 9d9faaec..f2c89920 100644 --- a/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXDetailEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXDetailEdit.aspx.cs @@ -112,12 +112,13 @@ namespace FineUIPro.Web.PZHGL.GJSX protected void SaveData() { var progressStatus = this.ddlProgressStatus.SelectedValue; + var progress_detail = this.txtProgress_detail.Text.Trim(); Model.SGGLDB db = Funs.DB; var model = new Model.GJSX_detail { GJSXID = this.GJSXID, //Cuid = this.GJSXDetailId, - Progress_detail = this.txtProgress_detail.Text.Trim(), + Progress_detail = progress_detail, ProgressStatus = progressStatus, Progress_user = this.CurrUser.UserId, Date = DateTime.Now, @@ -150,6 +151,11 @@ namespace FineUIPro.Web.PZHGL.GJSX } db.SubmitChanges(); + if (progressStatus == "申请关闭") + { + //申请关闭邮件提醒:提出人和跟踪人 + GJSXMonitorService.GJSXApplyCloseNoticeSendEmail(this.GJSXID, progress_detail); + } //ShowNotify("保存成功", MessageBoxIcon.Success); //PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } diff --git a/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXListEdit.aspx.cs b/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXListEdit.aspx.cs index 2a6c4fdf..729c92f0 100644 --- a/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXListEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/PZHGL/GJSX/GJSXListEdit.aspx.cs @@ -11,6 +11,7 @@ using System.Web.UI; using System.Web.UI.WebControls; using static System.Runtime.CompilerServices.RuntimeHelpers; using System.Xml.Linq; +using RestSharp.Extensions; namespace FineUIPro.Web.PZHGL.GJSX { @@ -745,22 +746,60 @@ namespace FineUIPro.Web.PZHGL.GJSX return; } + //跟踪人 + var DropUser_ReceiveID = this.DropUser_ReceiveID.SelectedValue; + string rNotice = this.rblNotice.SelectedValue; //勾选邮件即时通知责任人,先判断责任人是否已维护邮箱 if (rNotice == "1") { - if (!BLL.UserService.IsUserHaveEmail(DropUser_AcceptanceId)) + //if (!BLL.UserService.IsUserHaveEmail(this.CurrUser.UserId)) + //{ + // Alert.ShowInParent("请先给提出人维护邮箱!", MessageBoxIcon.Warning); + // return; + //} + //if (!BLL.UserService.IsUserHaveEmail(DropUser_AcceptanceId)) + //{ + // Alert.ShowInParent("请先给责任人维护邮箱!", MessageBoxIcon.Warning); + // return; + //} + //if (!BLL.UserService.IsUserHaveEmail(DropUser_ReceiveID)) + //{ + // Alert.ShowInParent("请先给跟踪人维护邮箱!", MessageBoxIcon.Warning); + // return; + //} + List verifyUser = new List(); + verifyUser.Add(this.CurrUser.UserId); + verifyUser.Add(DropUser_AcceptanceId); + verifyUser.Add(DropUser_ReceiveID); + if (!string.IsNullOrEmpty(drpCsUsers.Value)) { - Alert.ShowInParent("请先给责任人维护邮箱!", MessageBoxIcon.Warning); + //抄送人 + var sendUserIds = string.Join(",", drpCsUsers.Values); + var sendUserId = sendUserIds.Split(','); + verifyUser.AddRange(sendUserId); + } + string verifyMsg = string.Empty; + foreach (var verify in verifyUser) + { + string verUserName = string.Empty; + if (!BLL.UserService.IsUserHaveEmail(verify, out verUserName)) + { + verifyMsg = !string.IsNullOrWhiteSpace(verifyMsg) ? $"{verifyMsg}、{verUserName}" : verUserName; + } + } + if (!string.IsNullOrWhiteSpace(verifyMsg)) + { + Alert.ShowInParent($"请先给{verifyMsg}维护邮箱!", MessageBoxIcon.Warning); return; } } #endregion - List userIds = new List(); - userIds.Add(DropUser_AcceptanceId); - userIds.AddRange(drpCsUsers.Values); + //List userIds = new List(); + //userIds.Add(DropUser_AcceptanceId); + //userIds.AddRange(drpCsUsers.Values); string EditType = Request.Params["EditType"]; string ID = Request.Params["ID"]; if (string.IsNullOrEmpty(ID)) @@ -769,7 +808,7 @@ namespace FineUIPro.Web.PZHGL.GJSX //勾选邮件即时通知责任人,邮箱通知提醒关键事项 if (rNotice == "1") { - GJSXMonitorService.GJSXNoticeSendEmail(userIds, this.txtGJSXID.Text.Trim()); + GJSXMonitorService.GJSXNoticeSendEmail(this.txtGJSXID.Text.Trim()); //if (BLL.UserService.IsUserHaveEmail(DropUser_AcceptanceId)) //{ // GJSXMonitorService.GJSXNoticeSendEmail(DropUser_AcceptanceId, this.txtGJSXID.Text.Trim()); @@ -786,7 +825,7 @@ namespace FineUIPro.Web.PZHGL.GJSX //勾选邮件即时通知责任人,邮箱通知提醒关键事项 if (rNotice == "1") { - GJSXMonitorService.GJSXNoticeSendEmail(userIds, this.txtGJSXID.Text.Trim()); + GJSXMonitorService.GJSXNoticeSendEmail(this.txtGJSXID.Text.Trim()); //if (BLL.UserService.IsUserHaveEmail(DropUser_AcceptanceId)) //{ // GJSXMonitorService.GJSXNoticeSendEmail(DropUser_AcceptanceId, this.txtGJSXID.Text.Trim()); @@ -838,6 +877,12 @@ namespace FineUIPro.Web.PZHGL.GJSX ProgressStatus = $"{(progressResult == "0" ? "同意" : "驳回")}申请", }; GJSXItemService.AddGJSXMX(detail); + + //事项申请关闭被驳回,邮箱提醒 + if (progressResult == "1") + { + GJSXMonitorService.GJSXRejectApplyCloseNoticeSendEmail(detail.GJSXID, progressReason); + } } } } @@ -1001,22 +1046,22 @@ namespace FineUIPro.Web.PZHGL.GJSX string sortField = Grid4.SortField; string sortDirection = Grid4.SortDirection; - /* var userList = (from x in Funs.DB.Sys_User - join y in Funs.DB.Project_ProjectUnit - on x.UnitId equals y.UnitId - join p in Funs.DB.Project_ProjectUser - on x.UserId equals p.UserId - where p.ProjectId == CurrUser.LoginProjectId && - y.ProjectId == CurrUser.LoginProjectId - orderby x.UserCode - select x);*/ + /* var userList = (from x in Funs.DB.Sys_User + join y in Funs.DB.Project_ProjectUnit + on x.UnitId equals y.UnitId + join p in Funs.DB.Project_ProjectUser + on x.UserId equals p.UserId + where p.ProjectId == CurrUser.LoginProjectId && + y.ProjectId == CurrUser.LoginProjectId + orderby x.UserCode + select x);*/ var userList = (from x in Funs.DB.Project_ProjectUser - join y in Funs.DB.Sys_User on x.UserId equals y.UserId - where x.ProjectId == CurrUser.LoginProjectId - orderby y.UserCode - select y); + join y in Funs.DB.Sys_User on x.UserId equals y.UserId + where x.ProjectId == CurrUser.LoginProjectId + orderby y.UserCode + select y); DataTable table2 = LINQToDataTable(userList); - if (table2 == null|| table2.Rows.Count==0) return table2; + if (table2 == null || table2.Rows.Count == 0) return table2; DataView view2 = table2.DefaultView; view2.Sort = String.Format("{0} {1}", sortField, sortDirection); diff --git a/SGGL/WebAPI/Controllers/IDP/IDPController.cs b/SGGL/WebAPI/Controllers/IDP/IDPController.cs index 6f4942ae..4f76ba0c 100644 --- a/SGGL/WebAPI/Controllers/IDP/IDPController.cs +++ b/SGGL/WebAPI/Controllers/IDP/IDPController.cs @@ -50,7 +50,7 @@ namespace WebAPI.Controllers /// /// [HttpPost] - public Model.ResponeData SynDateIDPDesignDrawingData([FromBody] List dates) + public Model.ResponeData SynIDPDesignDrawingDataByDate([FromBody] List dates) { var responeData = new Model.ResponeData(); try diff --git a/SGGL/WebAPI/Filter/TestPermissionAttribute.cs b/SGGL/WebAPI/Filter/TestPermissionAttribute.cs index 248be49f..17361a1a 100644 --- a/SGGL/WebAPI/Filter/TestPermissionAttribute.cs +++ b/SGGL/WebAPI/Filter/TestPermissionAttribute.cs @@ -90,6 +90,7 @@ namespace WebAPI.Filter "HazardRegister*getHazardRegisterByProjectIdStates", "PMP*SynPMPProjectData", "IDP*SynIDPDesignDrawingData", + "IDP*SynIDPDesignDrawingDataByDate", "IDP*SynIDPPreRunData", "IDP*SynOADesignDrawingDataBlueprintInfo", "IDP*SynOADesignDrawingDataPrintInfo", diff --git a/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user b/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user index 4a028af8..dd0774cd 100644 --- a/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -6,7 +6,7 @@ <_PublishTargetUrl>G:\发布\五环WebApi - True|2025-09-22T06:54:19.5237685Z||;True|2025-09-18T09:53:17.9300539+08:00||;True|2025-09-16T19:11:12.4383069+08:00||;True|2025-09-02T11:14:00.9580707+08:00||;True|2025-09-02T10:52:20.0445598+08:00||;True|2025-08-29T17:56:01.6245615+08:00||;True|2025-08-29T17:55:41.2802685+08:00||;True|2025-08-09T21:27:40.2103961+08:00||;True|2025-08-06T15:31:52.1166645+08:00||;True|2025-08-04T18:56:13.9675910+08:00||;True|2025-07-23T11:12:18.0134770+08:00||;True|2025-07-23T10:36:09.9990536+08:00||;True|2025-07-23T10:35:51.8814789+08:00||;True|2025-07-21T17:46:45.4620710+08:00||;True|2025-07-21T17:40:43.9871097+08:00||;True|2025-07-21T17:29:11.9275869+08:00||;True|2025-07-21T17:05:21.7763763+08:00||;True|2025-07-18T17:55:59.4892329+08:00||;True|2025-07-18T11:08:56.2628896+08:00||;True|2025-07-18T10:53:44.2534260+08:00||;True|2025-07-18T10:27:52.6751668+08:00||;True|2025-07-18T10:03:09.1785776+08:00||;True|2025-07-18T10:02:38.1252107+08:00||;True|2025-07-17T18:19:07.5837609+08:00||;True|2025-07-17T15:40:11.9126705+08:00||;True|2025-07-11T17:54:03.0298703+08:00||;True|2025-07-11T16:19:50.3283029+08:00||;True|2025-07-11T15:49:22.5920473+08:00||;True|2025-07-02T14:39:27.0436873+08:00||;True|2025-07-02T11:18:29.1208369+08:00||;True|2025-07-01T15:52:16.6767496+08:00||;True|2025-07-01T10:14:59.0471052+08:00||;True|2025-06-28T11:40:36.0544739+08:00||;True|2025-06-27T15:10:24.4628086+08:00||;True|2025-06-27T10:31:14.8332810+08:00||;True|2025-06-27T10:13:13.3022394+08:00||;True|2025-06-26T23:51:04.1304509+08:00||;True|2025-06-26T23:34:06.4223762+08:00||;True|2025-06-26T22:42:08.9018138+08:00||;True|2025-06-26T22:16:01.8954571+08:00||;True|2025-06-26T21:19:42.2638204+08:00||;True|2025-06-25T23:22:39.7267591+08:00||;True|2025-06-25T23:19:33.2378458+08:00||;True|2025-06-25T22:18:16.2863303+08:00||;True|2025-06-25T22:10:29.2540175+08:00||;True|2025-06-25T22:00:58.5212166+08:00||;True|2025-06-25T22:00:31.2531214+08:00||;True|2025-06-25T18:33:01.5770030+08:00||;True|2025-06-25T17:47:33.7779622+08:00||;True|2025-06-25T17:40:26.9905954+08:00||;True|2025-06-20T11:24:58.4099232+08:00||;True|2025-06-19T16:42:45.2358810+08:00||;True|2025-06-16T19:28:10.6447738+08:00||;True|2025-06-12T11:00:02.3559090+08:00||;True|2025-06-12T10:40:29.0324520+08:00||;True|2025-06-04T23:24:01.0324973+08:00||;True|2025-06-04T18:39:41.7304136+08:00||;True|2025-06-04T11:23:17.3803405+08:00||;True|2025-06-04T11:04:32.4212196+08:00||;True|2025-05-26T19:19:09.7246357+08:00||;True|2025-05-26T19:16:39.1283077+08:00||;True|2025-05-26T19:09:24.1561616+08:00||;True|2025-04-07T16:11:44.5172315+08:00||;True|2025-04-02T18:10:22.8695984+08:00||;True|2025-04-02T17:59:51.2978116+08:00||;True|2025-04-02T17:50:55.8630437+08:00||;True|2025-04-02T17:49:22.5114405+08:00||;True|2025-04-02T17:47:11.0650205+08:00||;True|2025-04-02T17:39:09.8576853+08:00||;True|2025-04-02T17:38:15.3079030+08:00||;True|2025-04-02T17:22:03.6735964+08:00||;True|2025-04-02T17:19:04.4220913+08:00||;True|2025-04-02T17:17:14.0244636+08:00||;True|2025-04-02T17:11:09.6583011+08:00||;True|2025-04-02T17:07:23.6330597+08:00||;True|2025-04-02T16:58:45.4070649+08:00||;True|2025-04-02T16:50:20.5907511+08:00||;True|2025-04-02T16:44:18.5351224+08:00||;True|2025-04-02T16:31:11.1297141+08:00||;True|2025-04-02T16:18:43.1126995+08:00||;True|2025-04-02T14:50:42.5384021+08:00||;True|2025-04-01T10:53:08.9403414+08:00||;True|2025-04-01T10:52:08.7646389+08:00||;True|2025-04-01T09:52:56.3095742+08:00||;True|2025-03-13T16:44:25.3220313+08:00||;True|2025-03-13T15:31:10.3223071+08:00||;True|2025-03-13T10:58:17.1401575+08:00||;True|2025-01-23T23:10:37.9664637+08:00||;True|2024-09-24T09:51:10.8028974+08:00||;True|2024-09-20T17:30:59.6144803+08:00||;True|2024-09-20T15:28:40.2547949+08:00||;True|2024-09-19T16:30:51.3047517+08:00||;True|2024-09-19T15:53:23.2431713+08:00||;True|2024-09-19T15:48:55.0571748+08:00||;True|2024-09-19T15:06:29.5748482+08:00||;True|2024-09-19T14:55:42.1477578+08:00||;True|2024-09-19T10:07:53.8666329+08:00||;True|2024-09-03T16:26:17.4985546+08:00||;True|2024-07-17T10:29:15.9472548+08:00||; + True|2025-09-22T07:14:22.9602725Z||;True|2025-09-22T15:08:27.5989706+08:00||;True|2025-09-22T14:54:19.5237685+08:00||;True|2025-09-18T09:53:17.9300539+08:00||;True|2025-09-16T19:11:12.4383069+08:00||;True|2025-09-02T11:14:00.9580707+08:00||;True|2025-09-02T10:52:20.0445598+08:00||;True|2025-08-29T17:56:01.6245615+08:00||;True|2025-08-29T17:55:41.2802685+08:00||;True|2025-08-09T21:27:40.2103961+08:00||;True|2025-08-06T15:31:52.1166645+08:00||;True|2025-08-04T18:56:13.9675910+08:00||;True|2025-07-23T11:12:18.0134770+08:00||;True|2025-07-23T10:36:09.9990536+08:00||;True|2025-07-23T10:35:51.8814789+08:00||;True|2025-07-21T17:46:45.4620710+08:00||;True|2025-07-21T17:40:43.9871097+08:00||;True|2025-07-21T17:29:11.9275869+08:00||;True|2025-07-21T17:05:21.7763763+08:00||;True|2025-07-18T17:55:59.4892329+08:00||;True|2025-07-18T11:08:56.2628896+08:00||;True|2025-07-18T10:53:44.2534260+08:00||;True|2025-07-18T10:27:52.6751668+08:00||;True|2025-07-18T10:03:09.1785776+08:00||;True|2025-07-18T10:02:38.1252107+08:00||;True|2025-07-17T18:19:07.5837609+08:00||;True|2025-07-17T15:40:11.9126705+08:00||;True|2025-07-11T17:54:03.0298703+08:00||;True|2025-07-11T16:19:50.3283029+08:00||;True|2025-07-11T15:49:22.5920473+08:00||;True|2025-07-02T14:39:27.0436873+08:00||;True|2025-07-02T11:18:29.1208369+08:00||;True|2025-07-01T15:52:16.6767496+08:00||;True|2025-07-01T10:14:59.0471052+08:00||;True|2025-06-28T11:40:36.0544739+08:00||;True|2025-06-27T15:10:24.4628086+08:00||;True|2025-06-27T10:31:14.8332810+08:00||;True|2025-06-27T10:13:13.3022394+08:00||;True|2025-06-26T23:51:04.1304509+08:00||;True|2025-06-26T23:34:06.4223762+08:00||;True|2025-06-26T22:42:08.9018138+08:00||;True|2025-06-26T22:16:01.8954571+08:00||;True|2025-06-26T21:19:42.2638204+08:00||;True|2025-06-25T23:22:39.7267591+08:00||;True|2025-06-25T23:19:33.2378458+08:00||;True|2025-06-25T22:18:16.2863303+08:00||;True|2025-06-25T22:10:29.2540175+08:00||;True|2025-06-25T22:00:58.5212166+08:00||;True|2025-06-25T22:00:31.2531214+08:00||;True|2025-06-25T18:33:01.5770030+08:00||;True|2025-06-25T17:47:33.7779622+08:00||;True|2025-06-25T17:40:26.9905954+08:00||;True|2025-06-20T11:24:58.4099232+08:00||;True|2025-06-19T16:42:45.2358810+08:00||;True|2025-06-16T19:28:10.6447738+08:00||;True|2025-06-12T11:00:02.3559090+08:00||;True|2025-06-12T10:40:29.0324520+08:00||;True|2025-06-04T23:24:01.0324973+08:00||;True|2025-06-04T18:39:41.7304136+08:00||;True|2025-06-04T11:23:17.3803405+08:00||;True|2025-06-04T11:04:32.4212196+08:00||;True|2025-05-26T19:19:09.7246357+08:00||;True|2025-05-26T19:16:39.1283077+08:00||;True|2025-05-26T19:09:24.1561616+08:00||;True|2025-04-07T16:11:44.5172315+08:00||;True|2025-04-02T18:10:22.8695984+08:00||;True|2025-04-02T17:59:51.2978116+08:00||;True|2025-04-02T17:50:55.8630437+08:00||;True|2025-04-02T17:49:22.5114405+08:00||;True|2025-04-02T17:47:11.0650205+08:00||;True|2025-04-02T17:39:09.8576853+08:00||;True|2025-04-02T17:38:15.3079030+08:00||;True|2025-04-02T17:22:03.6735964+08:00||;True|2025-04-02T17:19:04.4220913+08:00||;True|2025-04-02T17:17:14.0244636+08:00||;True|2025-04-02T17:11:09.6583011+08:00||;True|2025-04-02T17:07:23.6330597+08:00||;True|2025-04-02T16:58:45.4070649+08:00||;True|2025-04-02T16:50:20.5907511+08:00||;True|2025-04-02T16:44:18.5351224+08:00||;True|2025-04-02T16:31:11.1297141+08:00||;True|2025-04-02T16:18:43.1126995+08:00||;True|2025-04-02T14:50:42.5384021+08:00||;True|2025-04-01T10:53:08.9403414+08:00||;True|2025-04-01T10:52:08.7646389+08:00||;True|2025-04-01T09:52:56.3095742+08:00||;True|2025-03-13T16:44:25.3220313+08:00||;True|2025-03-13T15:31:10.3223071+08:00||;True|2025-03-13T10:58:17.1401575+08:00||;True|2025-01-23T23:10:37.9664637+08:00||;True|2024-09-24T09:51:10.8028974+08:00||;True|2024-09-20T17:30:59.6144803+08:00||;True|2024-09-20T15:28:40.2547949+08:00||;True|2024-09-19T16:30:51.3047517+08:00||;True|2024-09-19T15:53:23.2431713+08:00||;True|2024-09-19T15:48:55.0571748+08:00||;True|2024-09-19T15:06:29.5748482+08:00||;True|2024-09-19T14:55:42.1477578+08:00||;True|2024-09-19T10:07:53.8666329+08:00||;True|2024-09-03T16:26:17.4985546+08:00||; @@ -86,10 +86,10 @@ 10/28/2024 14:02:50 - 09/22/2025 14:54:17 + 09/22/2025 15:14:22 - 09/22/2025 14:54:17 + 09/22/2025 15:14:22 12/06/2024 20:13:58 @@ -389,13 +389,13 @@ 02/09/2013 00:42:28 - 09/22/2025 14:53:56 + 09/22/2025 15:14:12 - 09/22/2025 14:53:56 + 09/22/2025 15:14:12 - 09/22/2025 14:53:56 + 09/22/2025 15:14:12 01/23/2014 21:57:34 @@ -479,7 +479,7 @@ 10/28/2024 14:02:50 - 09/22/2025 14:53:58 + 09/22/2025 15:14:13 10/28/2024 14:02:50 diff --git a/SGGL/WebAPI/WebAPI.csproj.user b/SGGL/WebAPI/WebAPI.csproj.user index 1a1a9a6c..17978b44 100644 --- a/SGGL/WebAPI/WebAPI.csproj.user +++ b/SGGL/WebAPI/WebAPI.csproj.user @@ -1,7 +1,7 @@  - Release|Any CPU + Debug|Any CPU true