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 @@
-
+
+
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 @@
+ Width="600px" Height="400px">
-
-
+
+
@@ -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")]