diff --git a/EProject/FineUIPro.Web/Global.asax.cs b/EProject/FineUIPro.Web/Global.asax.cs new file mode 100644 index 0000000..36b8f74 --- /dev/null +++ b/EProject/FineUIPro.Web/Global.asax.cs @@ -0,0 +1,949 @@ +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("~/"); + Funs.ClientId = ConfigurationManager.AppSettings["clientId"]; + Funs.ClientSecret = ConfigurationManager.AppSettings["clientSecret"]; + Funs.Redirect_url = ConfigurationManager.AppSettings["redirect_url"]; + + // 日志文件所在目录 + 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); + } + + //填写第二张资源时,第一张资源预留一个月的时候填写人工时(不用了) + //以Phase为Study/Concept Planning且PM_MA_ProjectApproval+一个月≤当前时间,人工时Disabled + 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(UpdateManHourDisabled); + } + + // MC证书提醒 + if ((DateTime.Now.Day == 1 || DateTime.Now.Day == 16) && DateTime.Now.Hour == 14) + { + 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) + { + if (DateTime.Now.Hour == 10) + { + 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[a].ManHoursPlanId); + if (manHours_Plan != null) + { + manHours_Plan.AccountDisabled = 1; + Funs.DB.SubmitChanges(); + } + } + } + } + } + } + #endregion + + #region 1、填写第二张资源时,第一张资源预留一个月的时候填写人工时 2、Cancelled或Hold也预留一个月 + /// + /// --填写第二张资源时,第一张资源预留一个月的时候填写人工时 + /// MOC和Projects项目,第一张资源Phase为Study/Concept Planning时PM_MA_ProjectApproval+一个月≤当前时间AccountDisabled为1 + /// MOC和Projects项目 + /// + /// + /// + 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 + // join y in Funs.DB.Editor_EProject on x.EProjectId equals y.EProjectId + // where x.EProjectId == epr.Key && (y.ProjectControl_JobType == "Projects" || y.ProjectControl_JobType == "MOC") + // && x.Phase == "Study/Concept Planning" + // orderby x.CreateDate ascending + // select new { x.ResourcePlanId, y.PM_MA_ProjectApproval, x.WO }).ToList(); + // //if (planLists.Count == 2) + // //{ + // if (planLists[0].PM_MA_ProjectApproval.HasValue && planLists[0].PM_MA_ProjectApproval.Value.AddMonths(1) <= DateTime.Now) + // { + // string resourcePlanId = planLists[0].ResourcePlanId.ToString(); + // List manHours_Plan = (from x in Funs.DB.ManHours_Plan where x.EProjectId == epr.Key && x.ResourcePlanId == resourcePlanId select x).ToList(); + // foreach (var item in manHours_Plan) + // { + // item.AccountDisabled = 1; + // Funs.DB.SubmitChanges(); + // } + // } + // //} + // } + //} + //Phase为Study/Concept Planning的人工时Disabled + var eprojectLists = (from x in Funs.DB.Editor_EProject + where (x.ProjectControl_JobType == "Projects" || x.ProjectControl_JobType == "MOC") + && x.PM_MA_ProjectApproval.HasValue && x.PM_MA_ProjectApproval.Value.AddMonths(1) <= DateTime.Now + select x).ToList(); + foreach (var pro in eprojectLists) + { + List manHours_Plan = (from x in Funs.DB.ManHours_Plan where x.EProjectId == pro.EProjectId && x.Phase.Contains("Study/Concept Planning") select x).ToList(); + foreach (var item in manHours_Plan) + { + item.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 = (from x in Funs.DB.ManHours_Plan where x.EProjectId == ep.EProjectId && x.AccountDisabled != 1 select x).ToList(); + if (manHours_Plan.Count > 0) + { + foreach (var item in manHours_Plan) + { + item.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.ProjectControl_MS_Approval.HasValue && + x.ProjectControl_MS_Approval.Value.Date == DateTime.Now.Date + 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.DesignPlanString, nameValue, BLL.Const.NoCustomString, 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) + { + + } + } +} diff --git a/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx b/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx index b909a0f..946e656 100644 --- a/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx +++ b/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx @@ -4,55 +4,68 @@ - +
- + - + - - <%-- + + <%-- --%> - + - + - + - + + + + + + + + + + + + + + - + @@ -67,5 +80,15 @@ + diff --git a/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.cs b/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.cs index 1f6b42c..77b2bc6 100644 --- a/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.cs +++ b/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.cs @@ -60,13 +60,15 @@ namespace FineUIPro.Web.ManHours if (p.AccountDisabled == 1) { cbNotApplicable1.Checked = true; } + if (!string.IsNullOrEmpty(p.Phase)) + { + checkPhase.SelectedValueArray = p.Phase.Split(','); + } } } } } - - /// /// 提交按钮 /// diff --git a/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.designer.cs b/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.designer.cs index c999560..4b7b3a7 100644 --- a/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.designer.cs +++ b/EProject/FineUIPro.Web/ManHours/AccountDisabled.aspx.designer.cs @@ -86,6 +86,15 @@ namespace FineUIPro.Web.ManHours /// protected global::FineUIPro.TextBox txtManHours; + /// + /// checkPhase 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.CheckBoxList checkPhase; + /// /// Label1 控件。 /// diff --git a/EProject/FineUIPro.Web/ManHours/AddManHours.aspx b/EProject/FineUIPro.Web/ManHours/AddManHours.aspx index d766431..3ee492d 100644 --- a/EProject/FineUIPro.Web/ManHours/AddManHours.aspx +++ b/EProject/FineUIPro.Web/ManHours/AddManHours.aspx @@ -49,10 +49,10 @@ - + <%-- - + --%> diff --git a/EProject/FineUIPro.Web/ManHours/AddManHours.aspx.cs b/EProject/FineUIPro.Web/ManHours/AddManHours.aspx.cs index b4612c3..69df581 100644 --- a/EProject/FineUIPro.Web/ManHours/AddManHours.aspx.cs +++ b/EProject/FineUIPro.Web/ManHours/AddManHours.aspx.cs @@ -36,7 +36,32 @@ namespace FineUIPro.Web.ManHours { this.txtAccount.Text = p.ProjectControl_Account; } - + if (p.ProjectControl_JobType == "Projects" || p.ProjectControl_JobType == "MOC") + { + var plans = BLL.ResourcePlanService.GetResourcePlanByEProjectId(eProjectId); + if (plans.Count > 0 && plans.Count < 2 && plans.FirstOrDefault().Phase == "Study/Concept Planning") + { + checkPhase.Items.Clear(); + List lists = new List(); + lists.Add("Study/Concept Planning"); + checkPhase.DataSource = lists; + checkPhase.DataBind(); + checkPhase.SelectedValueArray = lists[0].Split(','); + } + else + { + checkPhase.Items.Clear(); + List lists = new List(); + lists.Add("Study/Concept Planning"); + lists.Add("Execution"); + checkPhase.DataSource = lists; + checkPhase.DataBind(); + } + } + else + { + checkPhase.Hidden = true; + } } } else @@ -147,9 +172,13 @@ namespace FineUIPro.Web.ManHours pm.IsClose = 0; } - if (checkPhase.SelectedValueArray != null) + var epr = BLL.EProjectService.GeteProjectById(eProjectId); + if (epr.ProjectControl_JobType == "Projects" || epr.ProjectControl_JobType == "MOC") { - pm.Phase = checkPhase.SelectedValueArray[0]; + if (checkPhase.SelectedValueArray != null) + { + pm.Phase = checkPhase.SelectedValueArray[0]; + } } BLL.PlanService.AddPlan(pm); diff --git a/EProject/FineUIPro.Web/ManHours/ManHours.aspx b/EProject/FineUIPro.Web/ManHours/ManHours.aspx index 1330785..45e12e8 100644 --- a/EProject/FineUIPro.Web/ManHours/ManHours.aspx +++ b/EProject/FineUIPro.Web/ManHours/ManHours.aspx @@ -125,7 +125,7 @@ @@ -220,7 +220,7 @@ - + @@ -625,10 +625,10 @@ FieldType="String" HeaderText="Sch.(Days)" HeaderTextAlign="Center"> + FieldType="String" HeaderText="Initiator" HeaderTextAlign="Center"> + FieldType="String" HeaderText="category" HeaderTextAlign="Center"> diff --git a/EProject/Model/Model.cs b/EProject/Model/Model.cs index 66586f5..12e159c 100644 --- a/EProject/Model/Model.cs +++ b/EProject/Model/Model.cs @@ -27681,6 +27681,8 @@ namespace Model private System.Nullable _ActHours; + private string _Phase; + public View_NewManHours_Plan() { } @@ -28116,6 +28118,22 @@ namespace Model } } } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Phase", DbType="NVarChar(50)")] + public string Phase + { + get + { + return this._Phase; + } + set + { + if ((this._Phase != value)) + { + this._Phase = value; + } + } + } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_Project_Closure_Report")]