using Aspose.Words.Lists; using BLL; using Model; 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.Report { public partial class PreRunSchedule : PageBase { /// /// 点击树状主键 /// public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } } /// /// 子系统主键 /// public string SsubSystemId { get { return (string)ViewState["SsubSystemId"]; } set { ViewState["SsubSystemId"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.InitTreeMenu();//加载树 TabStrip1.ActiveTabIndex = 0; } } #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 allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList(); var onePreRunLs = allPreRunLs.Where(p => p.PreRunLevel == 1).OrderBy(x => x.Sort); foreach (var item in onePreRunLs) { TreeNode rootUnitNode = new TreeNode();//定义根节点 rootUnitNode.NodeID = item.PreRunId; rootUnitNode.Text = item.PreRunName; rootUnitNode.ToolTip = item.PreRunName; rootUnitNode.CommandName = ""; rootUnitNode.EnableClickEvent = true; rootUnitNode.EnableExpandEvent = true; rootNode.Nodes.Add(rootUnitNode); rootUnitNode.Expanded = true; var otherPreRunls = allPreRunLs.Where(p => p.PreRunLevel != 1).ToList(); this.BindNodes(rootUnitNode, otherPreRunls, item.PreRunId); } } /// /// 绑定树节点 /// private void BindNodes(TreeNode node, List list, string parentId) { var itemList = list.Where(p => p.ParentId == parentId).OrderBy(x => x.Sort).ToList(); if (itemList.Count > 0) { foreach (var item in itemList) { TreeNode newNode = new TreeNode(); newNode.Text = item.PreRunName; newNode.NodeID = item.PreRunId; newNode.ToolTip = item.PreRunName; newNode.CommandName = ""; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); BindNodes(newNode, list, item.PreRunId); } } } /// /// 数加载 /// protected void tvControlItem_NodeExpand(object sender, TreeNodeEventArgs e) { if (e.Node.Nodes != null) { e.Node.Nodes.Clear(); } var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList(); this.BindNodes(e.Node, allPreRunLs, e.NodeID); } /// /// 点击TreeView /// /// /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.TreePreRunId = tvControlItem.SelectedNodeID != "0" ? tvControlItem.SelectedNodeID : string.Empty; if (TabStrip1.ActiveTabIndex == 0) { PreRunBrid(); } else if (TabStrip1.ActiveTabIndex == 1) { FourDecisionBrid(); } } #endregion #region 数据绑定 /// /// 预试车绑定 /// public void PreRunBrid() { var result = new List(); string strSql = "select a.WorkPackId,b.WorkPackName,b.Sort,SUM(case ISNULL(a.InspectIsClose,0) when 1 then 1 else 0 end) as ygbnum,SUM(case ISNULL(a.InspectIsClose,0) when 0 then 1 else 0 end) as wgbnum,COUNT(1) as allnum from PreRun_SubInspectTerm as a inner join PreRun_WorkPackage as b on a.WorkPackId=b.WorkPackId where 1=1 and a.ProjectId=@ProjectId "; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); string installationName = "-"; string processesName = "-"; string systemName = "-"; string subsystemName = "-"; string columnames = string.Empty; if (!string.IsNullOrWhiteSpace(this.TreePreRunId)) { var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId); if (model.PreRunLevel == 1) { installationName = model.PreRunName; columnames = "a.InstallationId"; } else if (model.PreRunLevel == 2) { processesName = model.PreRunName; columnames = "a.ProcessesId"; } else if (model.PreRunLevel == 3) { systemName = model.PreRunName; columnames = "a.SystemId"; } else if (model.PreRunLevel == 4) { subsystemName = model.PreRunName; columnames = "a.SubsystemId"; } strSql += $"and {columnames}='{model.PreRunId}'"; } strSql += "group by a.WorkPackId,b.WorkPackName,b.Sort order by b.Sort asc"; SqlParameter[] parameter = listStr.ToArray(); var dt = SQLHelper.GetDataTableRunText(strSql, parameter); if (dt != null) { foreach (DataRow item in dt.Rows) { result.Add(new ScheduleBridDto() { WorkPackId = item["WorkPackId"].ToString(), WorkName = item["WorkPackName"].ToString(), InstallationName = installationName, ProcessesName = processesName, SystemName = systemName, SubsystemName = subsystemName, AllNum = item["allnum"].ToString(), NoCloseNum = item["wgbnum"].ToString(), CloseNum = item["ygbnum"].ToString() }); } } GridPreRun.DataSource = result; GridPreRun.DataBind(); } /// /// 三查四定绑定 /// public void FourDecisionBrid() { var result = new List(); string strSql = "select b.PreRunId,b.InstallationId,b.ProcessesId,b.SystemId,b.SubsystemId,b.Sort,SUM(case ISNULL(a.DecisionIsClose,0) when 1 then 1 else 0 end) as ygbnum,SUM(case ISNULL(a.DecisionIsClose,0) when 0 then 1 else 0 end) as wgbnum,COUNT(1) as allnum from PreRun_SubThreeChecksFourDecision as a inner join PreRun_SysDevice as b on a.SubSystemId=b.PreRunId where 1=1 and a.ProjectId=@ProjectId "; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); string installationName = "-"; string processesName = "-"; string systemName = "-"; string subsystemName = "-"; string columnames = string.Empty; if (!string.IsNullOrWhiteSpace(this.TreePreRunId)) { var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId); if (model.PreRunLevel == 1) { installationName = model.PreRunName; columnames = "b.InstallationId"; } else if (model.PreRunLevel == 2) { processesName = model.PreRunName; columnames = "b.ProcessesId"; } else if (model.PreRunLevel == 3) { systemName = model.PreRunName; columnames = "b.SystemId"; } else if (model.PreRunLevel == 4) { subsystemName = model.PreRunName; columnames = "b.SubsystemId"; } strSql += $"and {columnames}='{model.PreRunId}'"; } strSql += "group by b.PreRunId,b.InstallationId,b.ProcessesId,b.SystemId,b.SubsystemId,b.Sort order by b.Sort asc"; SqlParameter[] parameter = listStr.ToArray(); var dt = SQLHelper.GetDataTableRunText(strSql, parameter); if (dt != null) { foreach (DataRow item in dt.Rows) { result.Add(new ScheduleBridDto() { PreRunId = item["PreRunId"].ToString(), InstallationName = installationName, ProcessesName = processesName, SystemName = systemName, SubsystemName = subsystemName, AllNum = item["allnum"].ToString(), NoCloseNum = item["wgbnum"].ToString(), CloseNum = item["ygbnum"].ToString() }); } } GridFourDecision.DataSource = result; GridFourDecision.DataBind(); } #endregion #region 私有方法 /// /// 点击tab /// protected void TabStrip1_TabIndexChanged(object sender, EventArgs e) { if (TabStrip1.ActiveTabIndex == 0) { PreRunBrid(); } else if (TabStrip1.ActiveTabIndex == 1) { FourDecisionBrid(); } } /// /// 预试车统计实体 /// public class ScheduleBridDto { /// /// 工作包主键 /// public string PreRunId { get; set; } /// /// 工作包主键 /// public string WorkPackId { get; set; } /// /// 工作包名称 /// public string WorkName { get; set; } /// /// 装置名称 /// public string InstallationName { get; set; } /// /// 工序名称 /// public string ProcessesName { get; set; } /// /// 系统名称 /// public string SystemName { get; set; } /// /// 子系统名称 /// public string SubsystemName { get; set; } /// /// 工作包数量 /// public string AllNum { get; set; } /// /// 未关闭任务单数量 /// public string NoCloseNum { get; set; } /// /// 已关闭任务单数量 /// public string CloseNum { get; set; } } #endregion } }