using BLL; using Model; using Newtonsoft.Json.Linq; 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.BeforeTestRun { public partial class SubSysWorkPackage : 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();//加载树 } } #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); 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).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; this.PageBase(); } /// /// 数据显示 /// public void PageBase() { var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId); if (model != null) { var ids = new List(); if (!string.IsNullOrWhiteSpace(model.InstallationId)) ids.Add(model.InstallationId); if (!string.IsNullOrWhiteSpace(model.ProcessesId)) ids.Add(model.ProcessesId); if (!string.IsNullOrWhiteSpace(model.SystemId)) ids.Add(model.SystemId); if (!string.IsNullOrWhiteSpace(model.SubsystemId)) ids.Add(model.SubsystemId); var list = Funs.DB.PreRun_SysDevice.Where(p => ids.Contains(p.PreRunId)).ToList(); if (list.Count(p => p.PreRunLevel == 1) > 0) { zz.Hidden = false; lblzzbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 1).PreRunCode; lblzzmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 1).PreRunName; } if (list.Count(p => p.PreRunLevel == 2) > 0) { gx.Hidden = false; lblgxmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunCode; lblgxbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunName; } if (list.Count(p => p.PreRunLevel == 3) > 0) { sxt.Hidden = false; lblsxtmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 3).PreRunName; lblsxtbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 3).PreRunCode; } if (list.Count(p => p.PreRunLevel == 4) > 0) { sszxt.Hidden = false; gzb.Hidden = false; BridWorkPackGrid(); lblszxtmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunName; lblszxtbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunCode; this.SsubSystemId = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunId; var workPackages = Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == this.SsubSystemId).ToList(); if (workPackages.Count > 0) { var workIds = workPackages.ConvertAll(p => p.WorkPackId); BridSelectWorkPack(workIds); drpWorkPack.Values = workIds.ToArray(); } else { Grid1.DataSource = null; Grid1.DataBind(); } } } } #endregion /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { var prerunModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId); if (prerunModel != null) { if (prerunModel.PreRunLevel == 4) { var deleteLs = Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == prerunModel.PreRunId); Funs.DB.PreRun_SubSysWorkPackage.DeleteAllOnSubmit(deleteLs); Funs.DB.SubmitChanges(); JArray mergedData = Grid1.GetMergedData(); int[] selections = Grid1.SelectedRowIndexArray; foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var workId = Grid1.DataKeys[i][0].ToString(); var model = new PreRun_SubSysWorkPackage(); model.SubSysId = Guid.NewGuid().ToString(); model.SubSystemId = prerunModel.PreRunId; model.WorkPackId = workId; model.WorkPackCode = !string.IsNullOrWhiteSpace(values.Value("WorkPackCode")) ? values.Value("WorkPackCode") : "WP"; model.Remark = values.Value("Remark"); model.AddTime = DateTime.Now; model.AddUser = this.CurrUser.UserId; model.Sort = Funs.DB.PreRun_SubSysWorkPackage.Count(); Funs.DB.PreRun_SubSysWorkPackage.InsertOnSubmit(model); } Funs.DB.SubmitChanges(); ShowNotify("保存成功!", MessageBoxIcon.Success); } } } /// /// 绑定工作包 /// public void BridWorkPackGrid() { GridWorkPack.DataSource = Funs.DB.PreRun_WorkPackage.OrderBy(p => p.Sort).ToList(); GridWorkPack.DataBind(); } /// /// 绑定选择的工作包 /// public void BridSelectWorkPack(List workPackIds) { if (!string.IsNullOrWhiteSpace(this.SsubSystemId)) { var data = from a in Funs.DB.PreRun_WorkPackage.Where(p => workPackIds.Contains(p.WorkPackId)) join b in Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == this.SsubSystemId) on a.WorkPackId equals b.WorkPackId into bb from t in bb.DefaultIfEmpty() select new WorkData() { WorkPackId = a.WorkPackId, WorkPackCode = a.WorkPackCode, WorkPackName = a.WorkPackName, Sort = a.Sort, Remark = t.Remark }; //var list = data.ToList(); //if (list.Count > 0) //{ // int i = 1; // list.ForEach(a => // { // var num = Funs.DB.SubSys_WorkPackage.Count(p => p.SubSystemId == this.SsubSystemId) + i; // a.WorkPackCode = string.Format("WP{0}", string.Format("{0:d2}", num)); // i++; // }); //} if (data.Count() > 0) { var list = data.OrderBy(p => p.Sort).ToList(); Grid1.DataSource = list; Grid1.DataBind(); } else { Grid1.DataSource = null; Grid1.DataBind(); } } } /// /// 工作包选择 /// /// /// protected void drpWorkPack_TextChanged(object sender, EventArgs e) { if (drpWorkPack.Values.Length > 0) { BridSelectWorkPack(drpWorkPack.Values.ToList()); } else { Grid1.DataSource = null; Grid1.DataBind(); } } /// /// 行点击事件 /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.PreRun_SubSysWorkPackage.FirstOrDefault(p => p.WorkPackId == rowID); if (model != null) { Funs.DB.PreRun_SubSysWorkPackage.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); } var workPackages = Funs.DB.PreRun_SubSysWorkPackage.Where(p => p.SubSystemId == this.SsubSystemId).ToList(); var workIds = workPackages.ConvertAll(p => p.WorkPackId); BridSelectWorkPack(workIds); drpWorkPack.Values = workIds.ToArray(); ShowNotify("删除成功!"); } } public class WorkData { public string WorkPackId { get; set; } public string WorkPackName { get; set; } public int? Sort { get; set; } public string Remark { get; set; } public string WorkPackCode { get; set; } } } }