优化
This commit is contained in:
@@ -18,176 +18,6 @@ namespace BLL
|
||||
{
|
||||
public static Model.SGGLDB db = Funs.DB;
|
||||
|
||||
#region 启动监视器 定时清理推送日志
|
||||
/// <summary>
|
||||
/// 监视组件
|
||||
/// </summary>
|
||||
private static Timer messageTimer1;
|
||||
|
||||
/// <summary>
|
||||
/// 关键事项超期预警定时提醒邮箱
|
||||
/// </summary>
|
||||
public static void StartMonitorOverdueWarningPushEmail()
|
||||
{
|
||||
int adTimeJ = 60 * 4;
|
||||
if (messageTimer1 != null)
|
||||
{
|
||||
messageTimer1.Stop();
|
||||
messageTimer1.Dispose();
|
||||
messageTimer1 = null;
|
||||
}
|
||||
if (adTimeJ > 0)
|
||||
{
|
||||
messageTimer1 = new Timer
|
||||
{
|
||||
AutoReset = true
|
||||
};
|
||||
messageTimer1.Elapsed += new ElapsedEventHandler(OverdueWarningPushEmail);
|
||||
messageTimer1.Interval = 1000 * 60 * adTimeJ;// 60分钟 60000 * adTimeJ;
|
||||
messageTimer1.Start();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 流程确认 定时执行 系统启动5分钟
|
||||
/// </summary>
|
||||
/// <param name="sender">Timer组件</param>
|
||||
/// <param name="e">事件参数</param>
|
||||
private static void OverdueWarningPushEmail(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Model.SGGLDB db = Funs.DB;
|
||||
//取未关闭且已经超期的数据
|
||||
|
||||
string strSql = @"select
|
||||
DATEDIFF(DAY, CompleteDate, isnull(CloseDate,getdate())) AS DateDiffDays
|
||||
,a.GJSXID,a.ProjectId,a.Detail,a.UserID,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,'')
|
||||
,b.UserName,b.Email as UserEmail
|
||||
,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,'')
|
||||
,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,'')
|
||||
,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.state<>'0' and GETDATE()>a.CompleteDate ";
|
||||
|
||||
List<SqlParameter> listStr = new List<SqlParameter>();
|
||||
SqlParameter[] parameter = listStr.ToArray();
|
||||
|
||||
DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||||
|
||||
// 使用LINQ将DataTable转换为List<GJSXItem>
|
||||
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(),
|
||||
UserName = row["UserName"].ToString(),
|
||||
//UserEmail = row["UserEmail"].ToString(),
|
||||
User_ReceiveUserName = row["User_ReceiveUserName"].ToString(),
|
||||
//User_ReceiveUserEmail = row["User_ReceiveUserEmail"].ToString(),
|
||||
User_AcceptanceUserName = row["User_AcceptanceUserName"].ToString(),
|
||||
//User_AcceptanceUserEmail = row["User_AcceptanceUserEmail"].ToString(),
|
||||
User_CsUsers = row["User_CsUsers"].ToString(),
|
||||
//User_CsUsersUserEmail = row["User_CsUsersUserEmail"].ToString(),
|
||||
CompleteDate = Convert.ToDateTime(row["CompleteDate"].ToString())
|
||||
})
|
||||
.ToList();
|
||||
|
||||
////超期一周
|
||||
//var allItems1 = from x in db.GJSX
|
||||
// join a in db.Base_Project on x.ProjectId equals a.ProjectId
|
||||
// join b in db.Base_Unit on x.UnitId equals b.UnitId
|
||||
// where x.State != "0" && x.CloseDate == null && DateTime.Now > Convert.ToDateTime(x.CompleteDate).AddDays(7)
|
||||
// && DateTime.Now < Convert.ToDateTime(x.CompleteDate).AddDays(14)
|
||||
// select x;
|
||||
|
||||
////超期两周
|
||||
//var allItems2 = from x in db.GJSX
|
||||
// where x.State != "0" && x.CloseDate == null && DateTime.Now > Convert.ToDateTime(x.CompleteDate).AddDays(14)
|
||||
// && DateTime.Now < Convert.ToDateTime(x.CompleteDate).AddDays(21)
|
||||
// select x;
|
||||
|
||||
////超期三周
|
||||
//var allItems3 = from x in db.GJSX
|
||||
// where x.State != "0" && x.CloseDate == null && DateTime.Now > Convert.ToDateTime(x.CompleteDate).AddDays(21)
|
||||
// select x;
|
||||
|
||||
|
||||
if (lstOverdue.Any())
|
||||
{
|
||||
foreach (var item in lstOverdue)
|
||||
{
|
||||
if (item.DateDiffDays > 6)
|
||||
{//超期一周
|
||||
MailMessage mail = new MailMessage();
|
||||
//邮件主题
|
||||
mail.Subject = "关键事项超期预警提醒";
|
||||
//邮件正文
|
||||
mail.Body = $@"责任单位:{item.UnitName}
|
||||
项目名称:{item.ProjectName}
|
||||
事项ID:{item.GJSXID}
|
||||
事项描述:{item.Detail}
|
||||
事项类别:{item.GJSXTypeName}
|
||||
紧急程度:{item.QuestionTypeName}
|
||||
专业:{item.CNProfessionalName}
|
||||
约定完成时间:{item.CompleteDate.ToShortDateString()}";
|
||||
|
||||
|
||||
mail.To.Add("1923421292@qq.com");
|
||||
mail.To.Add("765289303@qq.com");
|
||||
mail.CC.Add("1784803958@qq.com");
|
||||
//if (!string.IsNullOrWhiteSpace(item.UserEmail))
|
||||
//{//提出人
|
||||
// mail.To.Add(item.UserEmail);
|
||||
//}
|
||||
//if (!string.IsNullOrWhiteSpace(item.User_AcceptanceUserEmail))
|
||||
//{//责任人
|
||||
// mail.To.Add(item.User_AcceptanceUserEmail);
|
||||
//}
|
||||
//if (!string.IsNullOrWhiteSpace(item.User_ReceiveUserEmail))
|
||||
//{//跟踪人
|
||||
// mail.To.Add(item.User_ReceiveUserEmail);
|
||||
//}
|
||||
//if (!string.IsNullOrWhiteSpace(item.User_CsUsersUserEmail))
|
||||
//{//抄送人
|
||||
// //mail.CC.Add("765289303@qq.com");
|
||||
// mail.CC.Add(item.User_CsUsersUserEmail);
|
||||
//}
|
||||
if (item.DateDiffDays > 21)
|
||||
{//超期三周——增加抄送主管
|
||||
|
||||
}
|
||||
else if (item.DateDiffDays > 13)
|
||||
{//超期两周——增加项目经理、部门主管
|
||||
|
||||
}
|
||||
PushEmail(mail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关键事项超期预警定时提醒发送邮箱
|
||||
/// </summary>
|
||||
@@ -334,6 +164,7 @@ namespace BLL
|
||||
</head>
|
||||
<body>
|
||||
<h2>关键事项超期预警提醒</h2>
|
||||
<a href='https://zhgd.cwcec.com/'>中国五环智慧施工管理信息系统</a>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -397,7 +228,5 @@ namespace BLL
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user