using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Data; using System.Linq; namespace FineUIPro.Web.EditorManage { public partial class TDCEditorEdit : PageBase { private bool AppendToEnd = false; #region 加载 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string view = Request.Params["view"]; if (view == "1") { this.btnNew.Hidden = true; this.btnDelete.Hidden = true; this.btnSave.Hidden = true; } else { GetButtonPower();//权限设置 } this.btnClose.OnClientClick = ActiveWindow.GetHideReference(); string eProjectId = Request.Params["eProjectId"]; BLL.ConstService.InitConstValueDropDownList(this.ddType, BLL.Const.TDC_Type, false); //BLL.ConstService.InitConstValueDropDownList(this.ddDisc, BLL.Const.TDC_Disc, false); this.ddDisc.DataTextField = "ConstText"; this.ddDisc.DataValueField = "ConstValue"; this.ddDisc.DataSource = BLL.TDCService.GetTDCDiscByEprojectId(eProjectId); this.ddDisc.DataBind(); //Funs.FineUIPleaseSelect(this.ddDisc); // 删除选中单元格的客户端脚本 string deleteScript = GetDeleteScript(); JObject defaultObj = new JObject(); defaultObj.Add("Type", ""); defaultObj.Add("Disc", ""); defaultObj.Add("A1Pages", ""); defaultObj.Add("ReceiveHC", ""); defaultObj.Add("ReceivePDF", ""); defaultObj.Add("ReceiveNative", ""); defaultObj.Add("PublishPDF", ""); defaultObj.Add("PublishNative", ""); //defaultObj.Add("ToPlant", ""); //defaultObj.Add("ToCHA", ""); defaultObj.Add("Remarks", ""); // 在第一行新增一条数据 btnNew.OnClientClick = Grid1.GetAddNewRecordReference(defaultObj, AppendToEnd); // 删除选中行按钮 btnDelete.OnClientClick = Grid1.GetNoSelectionAlertReference("Please select at least one record!") + deleteScript; if (!string.IsNullOrEmpty(eProjectId)) { BindGrid(eProjectId); } //this.DatePicker1.MaxDate = DateTime.Now; //this.DatePicker2.MaxDate = DateTime.Now; //this.DatePicker3.MaxDate = DateTime.Now; //this.DatePicker4.MaxDate = DateTime.Now; //this.DatePicker5.MaxDate = DateTime.Now; } } #endregion #region 绑定Grid private void BindGrid(string eProjectId) { DataTable table = BLL.TDCService.GetDataTable(eProjectId); Grid1.DataSource = table; Grid1.DataBind(); } #endregion protected void Grid1_RowSelect(object sender, GridRowSelectEventArgs e) { string tdcId = this.Grid1.SelectedRowID; if (!string.IsNullOrEmpty(tdcId)) { var tdc = from x in Funs.DB.Editor_TDC where x.TDCId == tdcId select x; if (tdc.Count() > 0 && tdc.First().Type == "D21_Construction" && tdc.First().IsSync == true) { btnDelete.Hidden = true; } else { btnDelete.Hidden = false; } } } #region 删除选中行脚本 // 删除选中行的脚本 private string GetDeleteScript() { //ShowNotify("表格数据没有变化!"); return Confirm.GetShowReference("Make sure to delete the current data?", String.Empty, MessageBoxIcon.Question, Grid1.GetDeleteSelectedRowsReference(), String.Empty); } #endregion #region 保存 /// /// 提交按钮 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { try { List list = new List(); JArray EditorTDCArr = Grid1.GetMergedData(); if (EditorTDCArr.Count > 0) { Model.Editor_TDC model = null; for (int i = 0; i < EditorTDCArr.Count; i++) { JObject objects = (JObject)EditorTDCArr[i]; model = new Model.Editor_TDC(); model.TDCId = Guid.NewGuid().ToString(); model.EProjectId = Request.Params["eProjectId"]; model.Type = objects["values"]["Type"] != null ? objects["values"]["Type"].ToString() : null; model.Disc = objects["values"]["Disc"] != null ? objects["values"]["Disc"].ToString() : null; model.A1Pages = objects["values"]["A1Pages"] != null ? objects["values"]["A1Pages"].ToString() : null; model.ReceiveHC = Funs.GetNewDateTime(objects["values"]["ReceiveHC"].ToString()); model.ReceivePDF = Funs.GetNewDateTime(objects["values"]["ReceivePDF"].ToString()); model.ReceiveNative = Funs.GetNewDateTime(objects["values"]["ReceiveNative"].ToString()); model.PublishPDF = Funs.GetNewDateTime(objects["values"]["PublishPDF"].ToString()); model.PublishNative = Funs.GetNewDateTime(objects["values"]["PublishNative"].ToString()); if (objects["values"]["InputDate"] != null && objects["values"]["InputDate"].ToString() != "") { model.InputDate = Funs.GetNewDateTime(objects["values"]["InputDate"].ToString()); } else { model.InputDate = Funs.GetNewDateTime(DateTime.Now.ToShortDateString()); } model.Remarks = objects["values"]["Remarks"] != null ? objects["values"]["Remarks"].ToString() : null; list.Add(model); } } // 先删除再保存 BLL.TDCService.DeleteEditorTDC(Request.Params["eProjectId"]); BLL.TDCService.AddEditorTDC(list); // 同步到CM HTD foreach (var item in list) { if (item.Type == "D21_Construction") { var cmHtd = from x in Funs.DB.Editor_CM_HTD where x.EProjectId == item.EProjectId && x.Discipline == item.Disc select x; if (cmHtd.Count() > 0 && (item.ReceiveHC.HasValue || item.ReceivePDF.HasValue)) { string status = null; DateTime? receiveDate = null; if (item.ReceiveHC.HasValue && item.ReceivePDF.HasValue) { if (item.ReceiveHC.Value > item.ReceivePDF.Value) { receiveDate = item.ReceiveHC.Value; } else { receiveDate = item.ReceivePDF.Value; } status = "Completed"; } else if (item.ReceiveHC.HasValue && !item.ReceivePDF.HasValue) { receiveDate = item.ReceiveHC.Value; } else { receiveDate = item.ReceivePDF.Value; } foreach (var t in cmHtd) { t.ReceiveDate = receiveDate; t.Status = status; Funs.DB.SubmitChanges(); } } } } BindGrid(Request.Params["eProjectId"]); var eproject = BLL.EProjectService.GeteProjectById(Request.Params["eProjectId"]); if (eproject != null) { #region 更新项目关闭或Detail Design 状态 #region Detail Design 和 In Procurement //去掉 同时满足Today小于Design Civil_Revised End Date和Design Mech.E&I_Revised End Date的最大值时, //var civilRevisedEnd = BLL.PMService.GetCivil(eproject.EProjectId); //var mechEIRevisedEnd = BLL.PMService.GetMechEI(eproject.EProjectId); // 后加条件 //当PM中Milestone(Actual)的Project Approval不为空并且IFC ALL的ReceiveHC为空,状态为Detail Design var all = from x in Funs.DB.Editor_TDC where x.EProjectId == eproject.EProjectId && x.Type == "D01_IFC" && x.Disc == "00_ALL" && x.ReceiveHC == null select x; if (eproject.PM_MA_ProjectApproval.HasValue && all.Count() > 0) { if (eproject.ProjectControl_JobStatus == null || eproject.ProjectControl_JobStatus == "" || eproject.ProjectControl_JobStatus == "On Going" || eproject.ProjectControl_JobStatus == "Study" || eproject.ProjectControl_JobStatus == "Not Start") { eproject.ProjectControl_JobStatus = "Detail Design"; } } // 后加:当PM中Milestone(Actual)的Project Approval不为空并且IFC ALL的ReceiveHC不为空,状态为In Procurement var con_all = from x in Funs.DB.Editor_TDC where x.EProjectId == eproject.EProjectId && x.Type == "D01_IFC" && x.Disc == "00_ALL" && x.ReceiveHC.HasValue select x; if (eproject.PM_MA_ProjectApproval.HasValue && con_all.Count() > 0) { if (eproject.ProjectControl_JobStatus == null || eproject.ProjectControl_JobStatus == "" || eproject.ProjectControl_JobStatus == "Detail Design" || eproject.ProjectControl_JobStatus == "On Going" || eproject.ProjectControl_JobStatus == "Study" || eproject.ProjectControl_JobStatus == "Not Start") { eproject.ProjectControl_JobStatus = "In Procurement"; } } #endregion 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 不用了 //大于100万的项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④C类尾项消项日期⑤机械竣工签署日期⑥FC签署日期⑦剩余材料登记⑧计划具备开车条件日期 //else if (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));//机械竣工签署日期 // } // } // var fc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D30_FC"); // if (fc != null) // { // if (fc.ReceiveHC.HasValue) // { // closeDateLists.Add(Convert.ToDateTime(fc.ReceiveHC));//FC签署日期 // } // } // 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));//计划具备开车条件日期 // } // } // closeDateLists.Sort(); // if (closeDateLists.Count == 8) // { // eproject.ProjectControl_ClosedDate = closeDateLists[7]; // 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 } eproject.EProjectId = eproject.EProjectId; BLL.EProjectService.UpdateProjectJobStatus(eproject); #endregion #region 发送邮件 //发送邮件:当MOC状态为closed状态时,项目关闭,文件整理提醒 string closeEmailTitle = eproject.ProjectControl_JobNo + "-项目关闭"; var closeem = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(closeEmailTitle) select x; if (closeem.Count() == 0) { if (eproject.ProjectControl_JobType == "MOC" && eproject.ProjectControl_JobStatus == "Closed") { NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectName", eproject.ProjectControl_JobTitle.ToString().Trim()); nameValue.Add("projectNo", eproject.ProjectControl_JobNo.ToString().Trim()); EmailSendMessage(eproject, BLL.Const.PCFSRString, nameValue, BLL.Const.CustomString, "3"); } } // D21项:ReceiveHC,ReceivePDF(2个同时都不为空),发送邮件提醒CM,PM foreach (var t in list) { if (t.Type == "D21_Construction" && t.ReceiveHC.HasValue && t.ReceivePDF.HasValue) { var cmHtd = from x in Funs.DB.Editor_CM_HTD where x.EProjectId == eproject.EProjectId && x.Discipline == t.Disc select x; string cmTDCEmailTitle = eproject.ProjectControl_JobNo + "-" + t.Disc + "项目交工技术文件归档信息"; var cmTDCLog = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(cmTDCEmailTitle) && x.EmailStatus== "发送成功" select x; if (cmTDCLog.Count() == 0) { NameValueCollection nameValue = new NameValueCollection(); nameValue.Add("projectNo", eproject.ProjectControl_JobNo.ToString().Trim()); nameValue.Add("projectName", eproject.ProjectControl_JobTitle.ToString().Trim()); nameValue.Add("discipline", t.Disc.ToString().Trim()); if (cmHtd.Count() > 0) { var con = BLL.ContractorService.GetContractorById(cmHtd.First().ContractorId); nameValue.Add("contractor", con.ContractorShortName.Trim()); nameValue.Add("contractorCN", con.ContractorName.Trim()); } else { nameValue.Add("contractor", ""); nameValue.Add("contractorCN", ""); } EmailSendMessage(eproject, BLL.Const.CMTDCString, nameValue, BLL.Const.CustomString, "5"); } } } #endregion } ShowNotify("Save Successfully!", MessageBoxIcon.Success); PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } catch (Exception ex) { Alert.ShowInParent(ex.ToString()); return; } } #endregion protected void ddType_OnSelectedIndexChanged(object sender, EventArgs e) { if (ddType.SelectedValue != "D12_RFSU") { this.DatePicker1.MaxDate = DateTime.Now; this.DatePicker2.MaxDate = DateTime.Now; this.DatePicker3.MaxDate = DateTime.Now; this.DatePicker4.MaxDate = DateTime.Now; this.DatePicker5.MaxDate = DateTime.Now; } else { this.DatePicker1.MaxDate = DateTime.Now.AddYears(100); this.DatePicker2.MaxDate = DateTime.Now.AddYears(100); this.DatePicker3.MaxDate = DateTime.Now.AddYears(100); this.DatePicker4.MaxDate = DateTime.Now.AddYears(100); this.DatePicker5.MaxDate = DateTime.Now.AddYears(100); } } #region 权限设置 /// /// 菜单按钮权限 /// private void GetButtonPower() { var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.TDCEditorMenuId); if (buttonList.Count > 0) { if (buttonList.Contains(BLL.Const.BtnSave)) { this.btnNew.Hidden = false; this.btnDelete.Hidden = false; this.btnSave.Hidden = false; } } } #endregion } }