using BLL; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.TestRun.TestRunManage { public partial class InspectWanderAboutList : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { InitTreeMenu(); } } #region 数加载 /// /// 加载树 /// private void InitTreeMenu() { this.tvControlItem.Nodes.Clear(); TreeNode rootNode = new TreeNode(); rootNode.Text = "检查表"; rootNode.NodeID = "0"; rootNode.Expanded = true; rootNode.ToolTip = ""; rootNode.EnableClickEvent = true; this.tvControlItem.Nodes.Add(rootNode); var inspectTerms = Funs.DB.TestRun_SubInspectTerm.Where(x => (x.Subcontractor == this.CurrUser.UserId && x.InspectionIsAllPass == 1) || (x.Contractor == this.CurrUser.UserId && x.ContractorIsAllPass == 1) || (x.Supervision == this.CurrUser.UserId && x.SupervisionIsAllPass == 1) || (x.Owner == this.CurrUser.UserId && x.OwnerIsAllPass == 1)).ToList(); if (inspectTerms.Count == 0) return; var systemIds = inspectTerms.ConvertAll(x => x.SystemId); var workPackIds = inspectTerms.ConvertAll(x => x.WorkPackId); var list = from a in Funs.DB.PreRun_SysDevice join b in Funs.DB.TestRun_SubSysWorkPackage on a.PreRunId equals b.SystemId join c in Funs.DB.TestRun_WorkPackage on b.WorkPackId equals c.WorkPackId where a.ProjectId == this.CurrUser.LoginProjectId && systemIds.Contains(a.PreRunId) && workPackIds.Contains(c.WorkPackId) select new { a.PreRunId, a.ProcessesId, a.SystemId, a.PreRunCode, a.PreRunName, a.ProjectId, c.WorkPackId, c.WorkPackName, b.WorkPackCode }; if (list.Count() > 0) { var ids = list.Select(x => x.ProcessesId).ToList(); ids.AddRange(list.Select(x => x.PreRunId).ToList()); ids = ids.Distinct().ToList(); var syslist = Funs.DB.PreRun_SysDevice.Where(x => ids.Contains(x.PreRunId)).ToList(); if (syslist.Count > 0) { var oneIds = syslist.ConvertAll(x => x.ProcessesId).Distinct().ToList(); foreach (var itemOne in oneIds) { var itemOneModel = syslist.FirstOrDefault(x => x.PreRunId == itemOne); TreeNode rootOneNode = new TreeNode(); rootOneNode.NodeID = itemOneModel.PreRunId; rootOneNode.Text = itemOneModel.PreRunName; rootOneNode.ToolTip = itemOneModel.PreRunName; rootOneNode.CommandName = ""; rootOneNode.EnableClickEvent = false; rootOneNode.EnableExpandEvent = false; rootNode.Nodes.Add(rootOneNode); rootOneNode.Expanded = true; var subTwoList = syslist.Where(g => g.ParentId == itemOneModel.PreRunId).GroupBy(x => new { x.PreRunId, x.ProcessesId, x.PreRunCode, x.PreRunName }); foreach (var itemTwo in subTwoList) { TreeNode rootTwoNode = new TreeNode(); rootTwoNode.NodeID = itemTwo.Key.PreRunId; rootTwoNode.Text = itemTwo.Key.PreRunName; rootTwoNode.ToolTip = itemTwo.Key.PreRunName; rootTwoNode.CommandName = ""; rootTwoNode.EnableClickEvent = false; rootTwoNode.EnableExpandEvent = false; rootOneNode.Nodes.Add(rootTwoNode); rootTwoNode.Expanded = true; var worklist = list.Where(a => a.PreRunId == itemTwo.Key.PreRunId).GroupBy(x => new { x.WorkPackId, x.WorkPackName, x.WorkPackCode }).ToList(); if (worklist.Count > 0) { foreach (var itemWork in worklist.OrderBy(o => o.Key.WorkPackCode)) { TreeNode newNode = new TreeNode(); newNode.Text = itemWork.Key.WorkPackName; newNode.NodeID = itemWork.Key.WorkPackId + "|" + itemTwo.Key.PreRunId; newNode.ToolTip = itemWork.Key.WorkPackName; newNode.CommandName = ""; newNode.Expanded = true; newNode.EnableClickEvent = true; newNode.EnableExpandEvent = true; rootTwoNode.Nodes.Add(newNode); } } } } } } } /// /// 树点击 /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { BindGrid(); } #endregion #region 数据绑定 /// /// 绑定数据 /// public void BindGrid() { //分包商 string subcontractorStr = $"select NEWID() as Id,a.SubInspectId,a.ProjectId,b.ProjectName,b.ProjectCode,a.Subcontractor,a.Contractor,a.Supervision,a.Owner,1 as ConfirmType,'分包商' as ConfirmName,(select count (1) from PreRun_SubInspectTermItem as t where t.SubInspectId=a.SubInspectId and t.SubcontractorIsPass is null) as WaitConfirmNum,(select count (1) from PreRun_SubInspectTermItem as t where t.SubInspectId=a.SubInspectId and t.SubcontractorIsPass=1) as PassConfirmNum,(select count (1) from PreRun_SubInspectTermItem as t where t.SubInspectId=a.SubInspectId and t.SubcontractorIsPass=0) as FailConfirmNum,a.AddUser,a.AddTime,a.IsUnifyWanderAbout,(case IsUnifyWanderAbout when 1 then '是' else '否' end) as IsUnifyWanderAboutName,a.SystemId from TestRun_SubInspectTerm as a inner join Base_Project as b on a.ProjectId=b.ProjectId where 1=1 and a.InspectionIsAllPass=1 and a.ProjectId='{this.CurrUser.LoginProjectId}' and a.Subcontractor='{this.CurrUser.UserId}' "; //承包商 string contractorStr = $"select NEWID() as Id,a.SubInspectId,a.ProjectId,b.ProjectName,b.ProjectCode,a.Subcontractor,a.Contractor,a.Supervision,a.Owner,2 as ConfirmType,'承包商' as ConfirmName,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.ContractorIsPass is null) as WaitConfirmNum,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.ContractorIsPass = 1) as PassConfirmNum,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.ContractorIsPass = 0) as FailConfirmNum,a.AddUser,a.AddTime,a.IsUnifyWanderAbout,(case IsUnifyWanderAbout when 1 then '是' else '否' end) as IsUnifyWanderAboutName,a.SystemId from TestRun_SubInspectTerm as a inner join Base_Project as b on a.ProjectId = b.ProjectId where 1 = 1 and a.InspectionIsAllPass = 1 and a.ProjectId = '{this.CurrUser.LoginProjectId}' and a.Contractor = '{this.CurrUser.UserId}' "; //监理 string supervisionStr = $"select NEWID() as Id,a.SubInspectId,a.ProjectId,b.ProjectName,b.ProjectCode,a.Subcontractor,a.Contractor,a.Supervision,a.Owner,3 as ConfirmType,'监理' as ConfirmName,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.SupervisionIsPass is null) as WaitConfirmNum,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.SupervisionIsPass = 1) as PassConfirmNum,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.SupervisionIsPass = 0) as FailConfirmNum,a.AddUser,a.AddTime,a.IsUnifyWanderAbout,(case IsUnifyWanderAbout when 1 then '是' else '否' end) as IsUnifyWanderAboutName,a.SystemId from TestRun_SubInspectTerm as a inner join Base_Project as b on a.ProjectId = b.ProjectId where 1 = 1 and a.InspectionIsAllPass = 1 and a.InspectionIsAllPass = 1 and a.ProjectId = '{this.CurrUser.LoginProjectId}' and a.Supervision = '{this.CurrUser.UserId}' "; //业主 string ownerStr = $"select NEWID() as Id,a.SubInspectId,a.ProjectId,b.ProjectName,b.ProjectCode,a.Subcontractor,a.Contractor,a.Supervision,a.Owner,4 as ConfirmType,'业主' as ConfirmName,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.OwnerIsPass is null) as WaitConfirmNum,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.OwnerIsPass = 1) as PassConfirmNum,(select count(1) from PreRun_SubInspectTermItem as t where t.SubInspectId = a.SubInspectId and t.OwnerIsPass = 0) as FailConfirmNum,a.AddUser,a.AddTime,a.IsUnifyWanderAbout,(case IsUnifyWanderAbout when 1 then '是' else '否' end) as IsUnifyWanderAboutName,a.SystemId from TestRun_SubInspectTerm as a inner join Base_Project as b on a.ProjectId = b.ProjectId where 1 = 1 and a.InspectionIsAllPass = 1 and a.InspectionIsAllPass = 1 and a.ProjectId = '{this.CurrUser.LoginProjectId}' and a.Owner = '{this.CurrUser.UserId}' "; if (this.tvControlItem.SelectedNodeID.Split('|').Length > 0) { var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); subcontractorStr += $"and a.WorkPackId='{workPackId}'"; contractorStr += $"and a.WorkPackId='{workPackId}'"; supervisionStr += $"and a.WorkPackId='{workPackId}'"; ownerStr += $"and a.WorkPackId='{workPackId}'"; } if (this.tvControlItem.SelectedNodeID.Split('|').Length > 1) { var systemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); subcontractorStr += $"and a.SystemId='{systemId}'"; contractorStr += $"and a.SystemId='{systemId}'"; supervisionStr += $"and a.SystemId='{systemId}'"; ownerStr += $"and a.SystemId='{systemId}'"; } var allSql = $"select * from ({subcontractorStr} union all {contractorStr} union all {supervisionStr} union all {ownerStr}) as t order by t.ConfirmType asc"; List listStr = new List(); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(allSql); Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } /// /// 分页 /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { Grid1.PageIndex = e.NewPageIndex; BindGrid(); } /// /// 双击事件 /// protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) { btnMenuConfirmation_Click(null, null); } /// /// 分页下拉框 /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } /// /// 排序 /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { BindGrid(); } #endregion #region 按钮和事件 /// /// 查询 /// protected void btnQuery_Click(object sender, EventArgs e) { BindGrid(); } /// /// 检查确认 /// protected void btnConfirmation_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInTop("请选择记录!", MessageBoxIcon.Warning); return; } if (Grid1.SelectedRowIndexArray.Length > 1) { Alert.ShowInTop("只可选择一条记录!", MessageBoxIcon.Warning); return; } PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectWanderAboutConfirm.aspx?SubInspectId={0}&ConfirmType={1}", Grid1.DataKeys[Grid1.SelectedRowIndex][1].ToString(), Grid1.DataKeys[Grid1.SelectedRowIndex][2].ToString(), "编辑 - "))); } /// /// 右击检查确认 /// protected void btnMenuConfirmation_Click(object sender, EventArgs e) { btnConfirmation_Click(null, null); } /// /// 关闭 /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { BindGrid(); } #endregion } }