using BLL; using Model; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.TestRun.BeforeTestRun { public partial class SubWorkInspect : PageBase { 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 userSubInspects = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.InspectedUser == this.CurrUser.UserId).ToList(); if (userSubInspects.Count == 0) return; var subSystemIds = userSubInspects.ConvertAll(x => x.SubSystemId); var workPackIds = userSubInspects.ConvertAll(x => x.WorkPackId); var list = from a in Funs.DB.PreRun_SysDevice join b in Funs.DB.PreRun_SubSysWorkPackage on a.PreRunId equals b.SubSystemId join c in Funs.DB.PreRun_WorkPackage on b.WorkPackId equals c.WorkPackId where a.ProjectId == this.CurrUser.LoginProjectId && subSystemIds.Contains(a.PreRunId) && workPackIds.Contains(c.WorkPackId) select new { a.PreRunId, a.SystemId, a.PreRunCode, a.PreRunName, a.ProjectId, c.WorkPackId, c.WorkPackName, b.WorkPackCode }; if (list.Count() > 0) { var selectlist = YscInspectItems(workPackIds, subSystemIds); var systemIds = list.Select(x => x.SystemId).ToList(); var syslist = Funs.DB.PreRun_SysDevice.Where(x => systemIds.Contains(x.PreRunId)); foreach (var itemSys in syslist) { TreeNode rootFirstNode = new TreeNode();//定义根节点 rootFirstNode.NodeID = itemSys.PreRunId; rootFirstNode.Text = itemSys.PreRunName; rootFirstNode.ToolTip = itemSys.PreRunName; rootFirstNode.CommandName = ""; rootFirstNode.EnableClickEvent = false; rootFirstNode.EnableExpandEvent = false; rootNode.Nodes.Add(rootFirstNode); rootFirstNode.Expanded = true; var subList = list.Where(g => g.SystemId == itemSys.PreRunId).GroupBy(x => new { x.PreRunId, x.SystemId, x.PreRunCode, x.PreRunName }); foreach (var item in subList) { TreeNode rootUnitNode = new TreeNode();//定义根节点 rootUnitNode.NodeID = item.Key.PreRunId; rootUnitNode.Text = item.Key.PreRunName; rootUnitNode.ToolTip = item.Key.PreRunName; rootUnitNode.CommandName = ""; rootUnitNode.EnableClickEvent = false; rootUnitNode.EnableExpandEvent = false; rootFirstNode.Nodes.Add(rootUnitNode); rootUnitNode.Expanded = true; var worklist = list.Where(a => a.PreRunId == item.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 + "|" + item.Key.PreRunId; newNode.ToolTip = itemWork.Key.WorkPackName; newNode.CommandName = ""; newNode.EnableClickEvent = false; newNode.EnableExpandEvent = false; rootUnitNode.Nodes.Add(newNode); newNode.Expanded = true; if (selectlist.Count > 0) { var workselects = selectlist.Where(x => x.SubSystemId == item.Key.PreRunId && x.WorkPackId == itemWork.Key.WorkPackId); foreach (var itemSelect in workselects) { TreeNode newNodeSelect = new TreeNode(); newNodeSelect.Text = itemSelect.Code.Length > 10 ? $"{itemSelect.Code.Substring(0, 10)}......" : itemSelect.Code; newNodeSelect.NodeID = itemWork.Key.WorkPackId + "|" + item.Key.PreRunId + "|" + itemSelect.Id; newNodeSelect.ToolTip = itemSelect.Code; newNodeSelect.CommandName = ""; newNodeSelect.EnableClickEvent = true; newNodeSelect.EnableExpandEvent = true; newNode.Nodes.Add(newNodeSelect); newNodeSelect.Expanded = true; } } } } } } } } /// /// 点击TreeView /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.BindGrid(); } #endregion #region 数据绑定 /// /// 绑定数据 /// public void BindGrid() { var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); var subSystemId = this.tvControlItem.SelectedNodeID.Split('|')[1]; var subInspectId = string.Empty; if (this.tvControlItem.SelectedNodeID.Split('|').Length > 2) { subInspectId = this.tvControlItem.SelectedNodeID.Split('|').Last(); } //获取子系统 var list = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.SubInspectId == subInspectId).OrderBy(x => x.Sort).ToList(); Grid1.DataSource = list; Grid1.DataBind(); } /// /// 排序 /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); } #endregion #region 保存 /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { try { JArray mergedData = Grid1.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var subItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); //获取子系统信息 var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(x => x.TermItemId == subItemId); if (model != null) { //model.SubInspectId model.InspectionIllustrate = !string.IsNullOrWhiteSpace(values.Value("InspectionIllustrate")) ? values.Value("InspectionIllustrate") : string.Empty; if (!string.IsNullOrWhiteSpace(values.Value("InspectionResults"))) { model.InspectionResults = int.Parse(values.Value("InspectionResults")); } Funs.DB.SubmitChanges(); } } var subInspectId = this.Grid1.Rows[0].DataKeys[3].ToString(); var subModel = Funs.DB.PreRun_SubInspectTerm.FirstOrDefault(x => x.SubInspectId == subInspectId); if (subModel != null) { if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == subInspectId && x.InspectionResults.GetValueOrDefault() != 1) == 0) { subModel.InspectionIsAllPass = 1; } else { subModel.InspectionIsAllPass = 0; } } Funs.DB.SubmitChanges(); BindGrid(); ShowNotify("保存成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } #endregion /// /// 子系统选择的管道/设备 /// public class SelectPropertyTechnology { /// /// 主键 /// public string Id { get; set; } /// /// 编码 /// public string Code { get; set; } /// /// 工作包主键 /// public string WorkPackId { get; set; } /// /// 子系统主键 /// public string SubSystemId { get; set; } } /// /// 已生成检查表的管道/设备 /// private List YscInspectItems(List workPackIds, List subSystemIds) { List yczData = new List(); var yscInspectItems = Funs.DB.PreRun_SubInspectTerm.Where(x => workPackIds.Contains(x.WorkPackId) && subSystemIds.Contains(x.SubSystemId)).ToList(); if (yscInspectItems.Count > 0) { var selectPtids = string.Join(",", yscInspectItems.ConvertAll(x => x.PropertyTechnologyId)).Split(',').ToList(); var listPros = Funs.DB.PreRun_PropertySysPiping.Where(x => selectPtids.Contains(x.PropertyId)).ToList(); var listTechno = Funs.DB.PreRun_TechnologySysPiping.Where(x => selectPtids.Contains(x.TechnologyId)).ToList(); foreach (var itemYsc in yscInspectItems) { var codeStr = string.Empty; var ids = itemYsc.PropertyTechnologyId.Split(','); var itemPros = listPros.Where(x => ids.Contains(x.PropertyId)).ToList(); if (itemPros.Count > 0) { codeStr = $"管道:{string.Join(",", itemPros.ConvertAll(x => x.PipingCode))}"; yczData.Add(new SelectPropertyTechnology() { Id = itemYsc.SubInspectId, Code = codeStr, WorkPackId = itemYsc.WorkPackId, SubSystemId = itemYsc.SubSystemId }); } var itemTechno = listTechno.Where(x => ids.Contains(x.TechnologyId)).ToList(); if (itemTechno.Count > 0) { codeStr = $"设备:{string.Join(",", itemTechno.ConvertAll(x => x.TagNumber))}"; yczData.Add(new SelectPropertyTechnology() { Id = itemYsc.SubInspectId, Code = codeStr, WorkPackId = itemYsc.WorkPackId, SubSystemId = itemYsc.SubSystemId }); } } } return yczData; } /// /// 行内按钮事件 /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "TailTerm") { var inspectionResults = Grid1.DataKeys[e.RowIndex][2] != null ? int.Parse(Grid1.DataKeys[e.RowIndex][2].ToString()) : -1; if (inspectionResults == 0) { var termItemId = Grid1.DataKeys[e.RowIndex][0].ToString(); var tailModel = Funs.DB.PreRun_InspectTailTerm.FirstOrDefault(x => x.TermItemId == termItemId); if (tailModel != null) { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectTailTermEdit.aspx?TailTermId={0}&TermItemId={1}", tailModel.TailTermId, tailModel.TermItemId, "编辑 - "))); } else { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectTailTermEdit.aspx?TailTermId={0}&TermItemId={1}", "", termItemId, "新增 - "))); } } else { ShowNotify("仅未通过检查项才可填写!", MessageBoxIcon.Warning); } } } /// /// 窗口关闭 /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { BindGrid(); } /// /// 行绑定 /// protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) { //System.Data.DataRowView row = e.DataItem as System.Data.DataRowView; //LinkButtonField TailTerm = Grid1.FindColumn("TailTerm") as LinkButtonField; //var inspectionResults = Grid1.DataKeys[e.RowIndex][2] != null ? int.Parse(Grid1.DataKeys[e.RowIndex][2].ToString()) : -1; //if (inspectionResults != 0) //{ // TailTerm.Enabled = true; //} //else //{ // TailTerm.Enabled = false; //} } } }