namespace FineUIPro.Web { using BLL; using Model; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Configuration; using System.Globalization; using System.Linq; using System.Text; using System.Web; using System.Data; using System.Data.SqlClient; public class Global : System.Web.HttpApplication { /// /// 自动启用插件标志文件路径 /// private static string applicationActiveFlagFilePhysicalPath = String.Empty; protected void Application_Start(object sender, EventArgs e) { Application["OnlineUserCount"] = 0; try { Funs.RootPath = Server.MapPath("~/"); // 日志文件所在目录 ErrLogInfo.DefaultErrLogFullPath = Server.MapPath("~/ErrLog.txt"); //Funs.ConnString = ConfigurationManager.AppSettings["ConnectionString"]; Funs.SystemName = ConfigurationManager.AppSettings["SystemName"]; Funs.LdapUrl = ConfigurationManager.AppSettings["LdapUrl"]; Funs.ConnString = ConfigurationManager.ConnectionStrings["EProjectDBConnectionString"].ConnectionString; } catch (Exception ex) { ErrLogInfo.WriteLog(ex); AppDomain.Unload(AppDomain.CurrentDomain); } //每年1月份邮件提醒前一年项目状态为MC的项目,同时PM / EM编辑器的Pressure Piping打勾 if (DateTime.Now.Month == 1 && DateTime.Now.Day == 1) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(PressurePiping); } //当Const.Kick - off Meeting不为空时,每月20号发送提醒邮件给CM,当MC不为空时,停止发送提醒邮件。 if (DateTime.Now.Day == 20) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(ConstInfoMaintenance); } //计划:邮件26号自动发送提醒,下月5号冻结 if (DateTime.Now.Day == 26) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(PlanProject); } //实际:邮件21号自动发送提醒,当月25号冻结。 if (DateTime.Now.Day == 21) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(ActualProject); } //项目状态MC之后1个月时(由5个月改为1个月) if (DateTime.Now.Hour == 10) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(MCEmial); } //填写第二张资源时,第一张资源预留一个月的时候填写人工时 if (DateTime.Now.Hour == 10) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000 ; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(UpdateManHourDisabled); } // MC证书提醒 if ((DateTime.Now.Day == 1 || DateTime.Now.Day == 16) && DateTime.Now.Hour == 10) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(MCSigned_AutoSend); } // FC证书提醒 if ((DateTime.Now.Day == 1 || DateTime.Now.Day == 16) && DateTime.Now.Hour == 10) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 3600000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(FCSigned_AutoSend); } // Punch_Check_Send if (DateTime.Now.Hour == 10) { System.Timers.Timer aTimer = new System.Timers.Timer(); //1小时执行一次 aTimer.Interval = 60 * 60 * 1000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Punch_Check_Send); } // Design Input if (DateTime.Now.Hour == 9) { System.Timers.Timer aTimer = new System.Timers.Timer(); //2小时执行一次 aTimer.Interval = 120 * 60 * 1000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Design_Input_Send); } // 项目达到条件自动关闭 if (DateTime.Now.Hour == 16) { System.Timers.Timer aTimer = new System.Timers.Timer(); //2小时执行一次 aTimer.Interval = 120 * 60 * 1000; aTimer.Enabled = true; aTimer.Start(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Auto_Close); } } #region 压力管道注册提醒 /// /// 每年1月份邮件提醒前一年项目状态为MC的项目,同时PM/EM编辑器的Pressure Piping打勾 /// /// /// private void PressurePiping(object sender, System.Timers.ElapsedEventArgs e) { int m = DateTime.Now.Month; int d = DateTime.Now.Day; int h = DateTime.Now.Hour; if (m == 1 && d == 1 && h == 10) { int y = Convert.ToInt32(DateTime.Now.ToString("yy")) - 1; List eplist = new List(); eplist = (from x in Funs.DB.Editor_EProject where x.PM_PressurePipingChecked == true && x.ProjectControl_JobStatus == "MC" && x.ProjectControl_JobNo.Substring(0, 2) == y.ToString() select x).ToList(); if (eplist.Count > 0) { for (int i = 0; i < eplist.Count; i++) { if (eplist[i].PM_PressurePipingChecked == true) { PageBase bg = new PageBase(); NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", eplist[i].ProjectControl_JobNo.ToString()); nameValue.Add("projectName", eplist[i].ProjectControl_JobTitle.ToString()); bg.EmailSendMessage(eplist[i], BLL.Const.PPRRString, nameValue, BLL.Const.CustomString, BLL.Const.NoprojectString); //Pressure Piping的PLAN自动 = 次年3月1日 Editor_EProject editor_EProject = BLL.EProjectService.GeteProjectById(eplist[i].EProjectId); if (editor_EProject != null) { editor_EProject = eplist[i]; editor_EProject.PM_PP_PressurePiping = Funs.GetNewDateTime(DateTime.Now.Year + "-03-01"); BLL.EProjectService.UpdateProject(editor_EProject, "PM"); } } } } } } #endregion #region 施工信息维护提醒 /// /// 当Const.Kick - off Meeting不为空时,每月20号发送提醒邮件给CM,当MC不为空时,停止发送提醒邮件 /// /// /// private void ConstInfoMaintenance(object sender, System.Timers.ElapsedEventArgs e) { int d = DateTime.Now.Day; int h = DateTime.Now.Hour; if (d == 20 && h == 9) { List eplist = new List(); eplist = (from x in Funs.DB.Editor_EProject where x.CM_KickOffMetting.HasValue && !x.CM_MA_MC.HasValue select x).ToList(); if (eplist.Count > 0) { for (int i = 0; i < eplist.Count; i++) { PageBase bg = new PageBase(); NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", eplist[i].ProjectControl_JobNo.ToString()); nameValue.Add("projectName", eplist[i].ProjectControl_JobTitle.ToString()); bg.EmailSendMessage(eplist[i], BLL.Const.CIMRString, nameValue, BLL.Const.CustomString, BLL.Const.projectString); } } } } #endregion #region 计划:邮件26号自动发送提醒,下月5号冻结 /// /// 计划:邮件26号自动发送提醒,下月5号冻结 /// /// /// private void PlanProject(object sender, System.Timers.ElapsedEventArgs e) { int d = DateTime.Now.Day; int h = DateTime.Now.Hour; if (d == 26 && h == 9) { PageBase bg = new PageBase(); bg.EmailSendMessage(null, BLL.Const.SASString, null, BLL.Const.NoCustomString, BLL.Const.NoprojectString); } } #endregion #region 实际:邮件21号自动发送提醒,当月25号冻结。 /// /// 实际:邮件21号自动发送提醒,当月25号冻结。 /// /// /// private void ActualProject(object sender, System.Timers.ElapsedEventArgs e) { int d = DateTime.Now.Day; int h = DateTime.Now.Hour; if (d == 21 && h == 9) { PageBase bg = new PageBase(); bg.EmailSendMessage(null, BLL.Const.AASString, null, BLL.Const.NoCustomString, BLL.Const.NoprojectString); } } #endregion #region 项目状态MC之后3个月时发邮件,4个月人工时填写关闭 /// /// 项目状态MC之后1个月时(由5个月改为1个月) /// /// /// private void MCEmial(object sender, System.Timers.ElapsedEventArgs e) { var eplist = (from x in Funs.DB.Editor_EProject where x.CM_MA_MC.Value.AddMonths(3).Year == DateTime.Now.Year && x.CM_MA_MC.Value.AddMonths(3).Month == DateTime.Now.Month && x.CM_MA_MC.Value.AddMonths(3).Day == DateTime.Now.Day select x).ToList(); if (eplist.Count > 0) { for (int i = 0; i < eplist.Count; i++) { PageBase bg = new PageBase(); NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectName", eplist[i].ProjectControl_JobTitle.ToString().Trim()); nameValue.Add("projectNo", eplist[i].ProjectControl_JobNo.ToString().Trim()); nameValue.Add("CM_MA_MC", Convert.ToDateTime(eplist[i].CM_MA_MC).AddMonths(4).ToString("yyyy-MM-dd")); nameValue.Add("BUCode", eplist[i].ProjectControl_BUCode); bg.EmailSendMessage(eplist[i], BLL.Const.FIRILHString, nameValue, BLL.Const.CustomString, BLL.Const.projectString2); } } //项目的人员的人工时自动关闭(MC时间 + 4个月-- >> 项目成员的人工时disable置为1)(由原来的6个月改为4个月) var eplist1 = (from x in Funs.DB.Editor_EProject where x.CM_MA_MC.Value.AddMonths(4).Year == DateTime.Now.Year && x.CM_MA_MC.Value.AddMonths(4).Month == DateTime.Now.Month && x.CM_MA_MC.Value.AddMonths(4).Day == DateTime.Now.Day select x).ToList(); if (eplist1.Count > 0) { for (int i = 0; i < eplist1.Count; i++) { List manHours_Plans = (from x in Funs.DB.ManHours_Plan where x.EProjectId == eplist1[i].EProjectId select x).ToList(); if (manHours_Plans.Count > 0) { for (int a = 0; a < manHours_Plans.Count; a++) { var manHours_Plan = Funs.DB.ManHours_Plan.FirstOrDefault(x => x.ManHoursPlanId == manHours_Plans[i].ManHoursPlanId); if (manHours_Plan != null) { manHours_Plan.AccountDisabled = 1; Funs.DB.SubmitChanges(); } } } } } } #endregion #region 1、填写第二张资源时,第一张资源预留一个月的时候填写人工时 2、Cancelled或Hold也预留一个月 /// /// 填写第二张资源时,第一张资源预留一个月的时候填写人工时 /// /// /// private void UpdateManHourDisabled(object sender, System.Timers.ElapsedEventArgs e) { var eprojects = (from x in Funs.DB.Resource_Plan select x).GroupBy(x => x.EProjectId).ToList(); if (eprojects != null) { foreach (var epr in eprojects) { var planLists = (from x in Funs.DB.Resource_Plan where x.EProjectId == epr.Key orderby x.CreateDate descending select x).ToList(); if (planLists.Count() == 2) { if (planLists[0].CreateDate.Value.AddMonths(1).ToShortDateString() == DateTime.Now.ToShortDateString()) { var manHours_Plan = Funs.DB.ManHours_Plan.FirstOrDefault(x => x.ResourcePlanId == planLists[1].ResourcePlanId); if (manHours_Plan != null) { manHours_Plan.AccountDisabled = 1; Funs.DB.SubmitChanges(); } } } } } var epList=from x in Funs.DB.Editor_EProject where (x.ProjectControl_PC_CancelDate.HasValue && x.ProjectControl_PC_CancelDate.Value.AddMonths(1) <= DateTime.Now && x.ProjectControl_PC_CancelDate.Value.AddMonths(2) >= DateTime.Now) || (x.Job_Hold.HasValue && x.Job_Hold.Value.AddMonths(1)<= DateTime.Now && x.Job_Hold.Value.AddMonths(2) >= DateTime.Now) select x; foreach (var ep in epList) { var manHours_Plan = Funs.DB.ManHours_Plan.FirstOrDefault(x => x.EProjectId == ep.EProjectId); if (manHours_Plan != null) { manHours_Plan.AccountDisabled = 1; Funs.DB.SubmitChanges(); } } } #endregion #region MC证书提醒 private void MCSigned_AutoSend(object sender, System.Timers.ElapsedEventArgs e) { string strSql = @"SELECT pro.EProjectId,pro.ProjectControl_JobNo,pro.ProjectControl_JobTitle,pro.ProjectControl_ConstManagerId FROM dbo.Editor_EProject pro WHERE pro.CM_MA_MC IS NOT NULL AND DATEDIFF(DAY,pro.CM_MA_MC,GETDATE())>30 AND (pro.ProjectControl_JobType='Projects' OR pro.ProjectControl_JobType='Small Invest') AND pro.ProjectControl_JobStatus='MC' AND (SELECT COUNT(*) FROM dbo.Editor_TDC tdc WHERE tdc.EProjectId=pro.EProjectId AND tdc.[Type]='D11_MC' AND tdc.ReceiveHC IS NOT NULL)=0"; DataTable dt = BLL.SQLHelper.GetDataTableRunText(strSql, null); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Model.Editor_EProject ep = new Editor_EProject(); ep.EProjectId = dt.Rows[i]["EProjectId"].ToString(); ep.ProjectControl_JobNo = dt.Rows[i]["ProjectControl_JobNo"].ToString(); if (dt.Rows[i]["ProjectControl_ConstManagerId"] != null) { ep.ProjectControl_ConstManagerId = dt.Rows[i]["ProjectControl_ConstManagerId"].ToString(); } else { ep.ProjectControl_ConstManagerId = string.Empty; } PageBase bg = new PageBase(); NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString()); nameValue.Add("projectName", dt.Rows[i]["ProjectControl_JobTitle"].ToString()); bg.EmailSendMessage(ep, BLL.Const.MCSigned, nameValue, BLL.Const.CustomString, BLL.Const.projectString4); } } } #endregion #region FC证书提醒 private void FCSigned_AutoSend(object sender, System.Timers.ElapsedEventArgs e) { string strSql = @"SELECT pro.EProjectId,pro.ProjectControl_JobNo,pro.ProjectControl_JobTitle,pro.ProjectControl_ProjectManagerId FROM dbo.Editor_EProject pro WHERE pro.CM_MA_MC IS NOT NULL AND DATEDIFF(DAY,pro.CM_MA_MC,GETDATE())>83 AND pro.ProjectControl_JobType='Projects' AND pro.ProjectControl_OrginalBudget>1000000 AND pro.ProjectControl_JobStatus='MC' AND (SELECT COUNT(*) FROM dbo.Editor_TDC tdc WHERE tdc.EProjectId=pro.EProjectId AND tdc.[Type]='D30_FC' AND tdc.ReceiveHC IS NOT NULL)=0"; DataTable dt = BLL.SQLHelper.GetDataTableRunText(strSql, null); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Model.Editor_EProject ep = new Editor_EProject(); ep.EProjectId = dt.Rows[i]["EProjectId"].ToString(); ep.ProjectControl_JobNo = dt.Rows[i]["ProjectControl_JobNo"].ToString(); if (dt.Rows[i]["ProjectControl_ProjectManagerId"] != null) { ep.ProjectControl_ConstManagerId = dt.Rows[i]["ProjectControl_ProjectManagerId"].ToString(); } else { ep.ProjectControl_ConstManagerId = string.Empty; } PageBase bg = new PageBase(); NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString()); nameValue.Add("projectName", dt.Rows[i]["ProjectControl_JobTitle"].ToString()); bg.EmailSendMessage(ep, BLL.Const.FCSigned, nameValue, BLL.Const.CustomString, BLL.Const.projectString4); } } } #endregion #region Punch_Check_Send private void Punch_Check_Send(object sender, System.Timers.ElapsedEventArgs e) { PageBase bg = new PageBase(); // 发送给CTECheckerName var punchCTEList = from x in Funs.DB.Editor_Punch join y in Funs.DB.Editor_EProject on x.EProjectId equals y.EProjectId where !x.CTECheckDate.HasValue && x.PlanedFinishDate.HasValue && (x.CTECheckerId != null && x.CTECheckerId != "") && (DateTime.Now.AddDays(7).Date == x.PlanedFinishDate.Value.Date || DateTime.Now.AddDays(3).Date == x.PlanedFinishDate.Value.Date) select new { y.ProjectControl_JobNo, y.ProjectControl_JobTitle, x.CTECheckerId, x.CTECheckerName, x.TagNo, x.Description }; if (punchCTEList.Count() > 0) { foreach (var p in punchCTEList) { NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", p.ProjectControl_JobNo.ToString().Trim()); nameValue.Add("projectName", p.ProjectControl_JobTitle.ToString().Trim()); nameValue.Add("CheckName", p.CTECheckerName.Trim()); nameValue.Add("TagNo", p.TagNo.Trim()); nameValue.Add("Description", p.Description.Trim()); Model.Sys_User sys_User = new Model.Sys_User(); sys_User = BLL.Sys_UserService.GetUsersByUserId(p.CTECheckerId); List list = new List(); list.Add(sys_User); bg.EmailSendMessage(BLL.Const.CCOCString, nameValue, BLL.Const.CustomString, list, "CTE Check"); } } // 发送给OwnerCheckerName 去掉 //var punchOwnerList = from x in Funs.DB.Editor_Punch // join y in Funs.DB.Editor_EProject on x.EProjectId equals y.EProjectId // where !x.OwnerCheckDate.HasValue && x.CTECheckDate.HasValue // && (x.OwnerCheckerId != null && x.OwnerCheckerId != "") // && x.CTECheckDate.Value.AddDays(7).Date == DateTime.Now.Date // select new // { // y.ProjectControl_JobNo, // y.ProjectControl_JobTitle, // x.OwnerCheckerId, // x.OwnerCheckerName, // x.TagNo, // x.Description // }; //if (punchOwnerList.Count() > 0) //{ // foreach (var p in punchOwnerList) // { // NameValueCollection nameValue = new NameValueCollection(); // nameValue.Add("projectNo", p.ProjectControl_JobNo.ToString().Trim()); // nameValue.Add("projectName", p.ProjectControl_JobTitle.ToString().Trim()); // nameValue.Add("CheckName", p.OwnerCheckerName.Trim()); // nameValue.Add("TagNo", p.TagNo.Trim()); // nameValue.Add("Description", p.Description.Trim()); // Model.Sys_User sys_User = new Model.Sys_User(); // sys_User = BLL.Sys_UserService.GetUsersByUserId(p.OwnerCheckerId); // List list = new List(); // list.Add(sys_User); // bg.EmailSendMessage(BLL.Const.CCOCString, nameValue, BLL.Const.CustomString, list, "CTE Check"); // } //} } #endregion #region 设计输入二次邮件提醒 private void Design_Input_Send(object sender, System.Timers.ElapsedEventArgs e) { PageBase bg = new PageBase(); // 1、 系统在项目计划(改为实际)批准当天自动给项目经理发送提醒邮件,提醒项目经理完成设计输入策划工作,并只适用于CTE设计的项目。 var eprojectList = from x in BLL.Funs.DB.Editor_EProject where x.PM_General_CDI== "CTE" && x.PM_MA_ProjectApproval.HasValue && x.PM_MA_ProjectApproval.Value.Date == DateTime.Now.Date && x.DesignInputMailIsSend == null select x; if (eprojectList.Count() > 0) { foreach (var eproject in eprojectList) { BLL.DesignInputService.DesignInputMailSend(eproject.EProjectId, true); NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", eproject.ProjectControl_JobNo); nameValue.Add("IssuedDiscOrNo", eproject.ProjectControl_JobNo + "-" + eproject.ProjectControl_JobTitle); nameValue.Add("Person_Ch", ""); nameValue.Add("Person_En", ""); if (!string.IsNullOrEmpty(eproject.ProjectControl_ProjectManagerId)) { Model.Sys_User sys_User = new Model.Sys_User(); sys_User = BLL.Sys_UserService.GetUsersByUserId(eproject.ProjectControl_ProjectManagerId); nameValue.Add("UserName", sys_User.UserName); List list = new List(); list.Add(sys_User); bg.EmailSendMessage(BLL.Const.DesignInputString, nameValue, BLL.Const.CustomString, list, ""); } } } string strSql = @"SELECT p.ProjectControl_JobNo,p.ProjectControl_JobTitle,u.UserName,u.ChineseName, d.DesignInputId,d.DesignInputNo,d.DesignInputChName,d.DesignInputEnName,d.IssuedMan FROM dbo.Design_Input d LEFT JOIN dbo.Editor_EProject p ON p.EProjectId = d.EProjectId LEFT JOIN dbo.Sys_User u ON u.UserId =p.ProjectControl_ProjectManagerId WHERE (SELECT COUNT(*) FROM dbo.Design_Notice n WHERE d.DesignInputId=n.DesignInputId)=0 AND DATEADD(dd,5,d.PlanStartDate) list = new List(); list.Add(sys_User); bg.EmailSendMessage(BLL.Const.DesignInputString, nameValue, BLL.Const.CustomString, list, ""); } } // 待办人二次邮件提醒 string noticeSql = @"SELECT p.ProjectControl_JobNo,p.ProjectControl_JobTitle, input.DesignInputNo,input.DesignInputChName, input.DesignInputEnName,n.MutualIssuedNo,flow.DesignNoticeId,flow.NoticeFlowId,flow.SubmitMan FROM dbo.Design_NoticeFlow flow LEFT JOIN dbo.Design_Notice n ON n.DesignNoticeId = flow.DesignNoticeId LEFT JOIN dbo.Design_Input input ON input.DesignInputId = n.DesignInputId LEFT JOIN dbo.Editor_EProject p ON p.EProjectId = input.EProjectId WHERE flow.HandleState='待办理' AND flow.MailIsWarn IS NULL AND DATEADD(dd,-5,input.PlanEndDate) 0) { var user = from x in BLL.Funs.DB.Sys_User where x.UserId == noticeFlow.First().SubmitMan select x; if (user.Count() > 0) { person_Ch = user.First().ChineseName; person_En = user.First().UserName; } } NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString()); nameValue.Add("IssuedDiscOrNo", dt.Rows[i]["ProjectControl_JobNo"].ToString() + "-" + dt.Rows[i]["ProjectControl_JobTitle"].ToString() + "," + dt.Rows[i]["DesignInputChName"].ToString() + " " + dt.Rows[i]["DesignInputEnName"].ToString() + " " + dt.Rows[i]["DesignInputNo"].ToString()+" "+ dt.Rows[i]["MutualIssuedNo"].ToString()); nameValue.Add("Person_Ch", person_Ch); nameValue.Add("Person_En", person_En); if (dt2.Rows[i]["SubmitMan"].ToString() != "") { // 更新已提醒 BLL.DesignInputService.NoticeEmailIsWarn(dt2.Rows[i]["NoticeFlowId"].ToString(), true); Model.Sys_User sys_User = new Model.Sys_User(); sys_User = BLL.Sys_UserService.GetUsersByUserId(dt2.Rows[i]["SubmitMan"].ToString()); nameValue.Add("UserName", sys_User.UserName); List list = new List(); list.Add(sys_User); bg.EmailSendMessage(BLL.Const.DesignInputString, nameValue, BLL.Const.CustomString, list, ""); } } } #endregion #region 项目达到条件自动关闭 private void Auto_Close(object sender, System.Timers.ElapsedEventArgs e) { var projectList = (from x in Funs.DB.Editor_EProject select x).ToList(); foreach (var eproject in projectList) { if ((eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue && eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue) || (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue && !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue) || (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue && eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue && !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue) || (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue) || (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue && eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue) || (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue) || (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue && !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue)) { #region MOC项目 //MOC项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④剩余材料登记 if (eproject.ProjectControl_JobType == "MOC") { List closeDateLists = new List(); var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");//竣工图接收日期 if (built != null) { if (built.ReceiveHC.HasValue) { closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC)); } } var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");//主控文档更新日期 if (md != null) { if (md.ReceivePDF.HasValue) { closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF)); } } if (eproject.ProjectControl_BC_CloseDate.HasValue) { closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期 } if (eproject.CM_Date_of_Registration.HasValue) { closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记 } closeDateLists.Sort(); if (closeDateLists.Count == 4) { eproject.ProjectControl_ClosedDate = closeDateLists[3]; eproject.ProjectControl_JobStatus = "Closed"; } } #endregion #region 类型为项目和小型投资 //类型为项目和小型投资:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④C类尾项消项日期⑤机械竣工签署日期⑥剩余材料登记⑦计划具备开车条件日期⑧大于100万需要FC签署日期 else if (eproject.ProjectControl_JobType == "Small Invest" || eproject.ProjectControl_JobType == "Projects") { List closeDateLists = new List(); var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT"); if (built != null) { if (built.ReceiveHC.HasValue) { closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期 } } if (eproject.ProjectControl_BC_CloseDate.HasValue) { closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期 } var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD"); if (md != null) { if (md.ReceivePDF.HasValue) { closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期 } } if (eproject.CM_Punch_CKilledDate.HasValue) { closeDateLists.Add(Convert.ToDateTime(eproject.CM_Punch_CKilledDate));//C类尾项消项日期 } var mc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D11_MC"); if (mc != null) { if (mc.ReceiveHC.HasValue) { closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//机械竣工签署日期 } } if (eproject.CM_Date_of_Registration.HasValue) { closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记 } var rfsu = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D12_RFSU"); if (rfsu != null) { if (rfsu.ReceiveHC.HasValue) { closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//计划具备开车条件日期 } } // 大于1000000需要FC签署日期 if (eproject.ProjectControl_OrginalBudget != null && eproject.ProjectControl_OrginalBudget > 1000000) { var fc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D30_FC"); if (fc != null) { if (fc.ReceiveHC.HasValue) { closeDateLists.Add(Convert.ToDateTime(fc.ReceiveHC));//FC签署日期 } } closeDateLists.Sort(); if (closeDateLists.Count == 8) { eproject.ProjectControl_ClosedDate = closeDateLists[7]; eproject.ProjectControl_JobStatus = "Closed"; } } else { closeDateLists.Sort(); if (closeDateLists.Count == 7) { eproject.ProjectControl_ClosedDate = closeDateLists[6]; eproject.ProjectControl_JobStatus = "Closed"; } } } #endregion #region 其他类项目 //其他类项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期 else if (eproject.ProjectControl_JobType == "Other") { List closeDateLists = new List(); var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT"); if (built != null) { if (built.ReceiveHC.HasValue) { closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期 } } if (eproject.ProjectControl_BC_CloseDate.HasValue) { closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期 } var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD"); if (md != null) { if (md.ReceivePDF.HasValue) { closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期 } } closeDateLists.Sort(); if (closeDateLists.Count == 3) { eproject.ProjectControl_ClosedDate = closeDateLists[2]; eproject.ProjectControl_JobStatus = "Closed"; } } #endregion } } } #endregion protected void Session_Start(object sender, EventArgs e) { Session.Timeout = 720; // 这种统计在线人数的做法会有一定的误差 Application.Lock(); Application["OnlineUserCount"] = (int)Application["OnlineUserCount"] + 1; Application.UnLock(); // https访问secure设置为true if (Request.IsSecureConnection) { Response.Cookies["ASP.NET_SessionId"].Secure = true; } } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { StringBuilder errLog = null; Exception ex = null; try { // 获取错误类 ex = Server.GetLastError().InnerException; if (ex == null) { ex = Server.GetLastError().GetBaseException(); } errLog = new StringBuilder(); errLog.Append(String.Format(CultureInfo.InvariantCulture, "出错文件:{0}\r\n", Request.Url.AbsoluteUri)); if (Request.UserHostAddress != null) { errLog.Append(String.Format(CultureInfo.InvariantCulture, "IP地址:{0}\r\n", Request.UserHostAddress)); } if (Session != null && Session["CurrUser"] != null) { errLog.Append(String.Format(CultureInfo.InvariantCulture, "操作人员:{0}\r\n", BLL.Sys_UserService.GetUsersByUserId(((Model.Sys_User)Session["CurrUser"]).UserId).UserName)); } else { PageBase.ZXRefresh(Request.ApplicationPath + "/LogOff.aspx"); } if (ex is HttpRequestValidationException) { PageBase.ZXRefresh(Request.ApplicationPath + "/Wrong.aspx?Message=0"); } else if (ex is FriendlyException) { PageBase.ZXRefresh(Request.ApplicationPath + "/Wrong.aspx?MessageText=" + ex.Message); } } catch { try { PageBase.ZXRefresh(Request.ApplicationPath + "/OperationError.aspx"); } catch { } } finally { ErrLogInfo.WriteLog(ex, errLog == null ? null : errLog.ToString()); Server.ClearError(); PageBase.ZXRefresh(Request.ApplicationPath + "/OperationError.aspx"); } } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } } }