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.Feeding { public partial class SubInspectTerm : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.InitTreeMenu();//加载树 PageInit(); } } #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 list = Funs.DB.PreRun_SysDevice.Where(a => a.ProjectId == this.CurrUser.LoginProjectId && a.PreRunLevel == 1).OrderBy(a => a.Sort); if (list.Count() > 0) { foreach (var item in list) { TreeNode rootOneNode = new TreeNode(); rootOneNode.NodeID = item.PreRunId; rootOneNode.Text = item.PreRunName; rootOneNode.ToolTip = item.PreRunName; rootOneNode.CommandName = ""; rootOneNode.EnableClickEvent = true; rootOneNode.EnableExpandEvent = false; rootNode.Nodes.Add(rootOneNode); rootOneNode.Expanded = true; } } } /// /// 点击TreeView /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.BindGrid(); } #endregion #region 数据绑定 /// /// 绑定下拉框 /// public void PageInit() { //检查人绑定 var userList = from user in Funs.DB.Sys_User join projectrole in Funs.DB.Project_ProjectUser on user.UserId equals projectrole.UserId where projectrole.ProjectId == this.CurrUser.LoginProjectId select user; var userids = new List() { Const.sysglyId, Const.hfnbdId, Const.sedinId }; var addUserList = Funs.DB.Sys_User.Where(x => userids.Contains(x.UserId)); var users = userList.ToList(); if (addUserList.Count() > 0) { users.AddRange(addUserList); } if (users.Count() > 0) { ddlDriverCharge.DataTextField = "UserName"; ddlDriverCharge.DataValueField = "UserId"; ddlDriverCharge.DataSource = users; ddlDriverCharge.DataBind(); ddlDrivingManager.DataTextField = "UserName"; ddlDrivingManager.DataValueField = "UserId"; ddlDrivingManager.DataSource = users; ddlDrivingManager.DataBind(); ddlProjectManager.DataTextField = "UserName"; ddlProjectManager.DataValueField = "UserId"; ddlProjectManager.DataSource = users; ddlProjectManager.DataBind(); } } /// /// 绑定数据 /// public void BindGrid(List ulist = null) { var result = new List(); if (ulist != null) { #region 新增修改检查项 var groups = ulist.GroupBy(x => x.GroupName); int gnum = 1; foreach (var itemGroup in groups) { //添加一级节点 var firstModel = new FeedingRun_SubInspectTermItemData(); firstModel.TermItemId = itemGroup.Key; firstModel.GroupName = itemGroup.Key; firstModel.Sort = gnum; firstModel.GroupSort = gnum; firstModel.Level = 1; result.Add(firstModel); gnum++; //获取此分组的检查项 var groupTermItems = ulist.Where(x => x.GroupName == itemGroup.Key); foreach (var itemTerm in groupTermItems) { var model = new FeedingRun_SubInspectTermItemData(); model.TermItemId = itemTerm.TermItemId; model.ParentId = itemGroup.Key; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = itemTerm.WorkInspectId; model.WorkInspectName = itemTerm.WorkInspectName; model.InspectedUser = itemTerm.InspectedUser; model.InspectedUser = itemTerm.InspectedUser; model.InspectionIllustrate = itemTerm.InspectionIllustrate; model.GroupName = itemTerm.GroupName; model.Sort = itemTerm.Sort; model.GroupSort = itemTerm.GroupSort; model.Level = 2; result.Add(model); } } #endregion } else { var list = Funs.DB.FeedingRun_SubInspectTermItem.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.InstallationId == this.tvControlItem.SelectedNodeID).OrderBy(x => x.Sort); if (list.Count() > 0) { var groups = list.GroupBy(x => new { x.GroupName }); int firstnum = 1; foreach (var itemGroup in groups) { //添加一级节点 var firstModel = new FeedingRun_SubInspectTermItemData(); firstModel.TermItemId = itemGroup.Key.GroupName; firstModel.GroupName = itemGroup.Key.GroupName; firstModel.Sort = firstnum; firstModel.GroupSort = firstnum; firstModel.Level = 1; result.Add(firstModel); firstnum++; //获取此分组的检查项 var groupTermItems = list.Where(x => x.GroupName == itemGroup.Key.GroupName); foreach (var itemTerm in groupTermItems) { var model = new FeedingRun_SubInspectTermItemData(); model.TermItemId = itemTerm.TermItemId; model.ParentId = itemGroup.Key.GroupName; model.ProjectId = itemTerm.ProjectId; model.WorkInspectId = itemTerm.WorkInspectId; model.WorkInspectName = itemTerm.WorkInspectName; model.InspectedUser = itemTerm.InspectedUser; model.InspectedUser = itemTerm.InspectedUser; model.GroupName = itemTerm.GroupName; model.Sort = itemTerm.Sort.Value; model.GroupSort = itemTerm.Sort.Value; model.InspectionIllustrate = itemTerm.InspectionIllustrate; model.Level = 2; result.Add(model); } } var itemModel = list.FirstOrDefault(); ddlDriverCharge.SelectedValue = itemModel.DriverCharge; ddlDrivingManager.SelectedValue = itemModel.DrivingManager; ddlProjectManager.SelectedValue = itemModel.ProjectManager; } else { ddlDriverCharge.SelectedValue = ""; ddlDrivingManager.SelectedValue = ""; ddlProjectManager.SelectedValue = ""; var defaultDatas = Funs.DB.FeedingRun_WorkInspectTemplate.OrderBy(x => x.Sort); if (defaultDatas.Count() > 0) { var groups = defaultDatas.GroupBy(x => x.GroupName); int firstnum = 1; foreach (var itemGroup in groups) { //添加一级节点 var firstModel = new FeedingRun_SubInspectTermItemData(); firstModel.TermItemId = itemGroup.Key; firstModel.GroupName = itemGroup.Key; firstModel.Sort = firstnum; firstModel.GroupSort = firstnum; firstModel.Level = 1; result.Add(firstModel); firstnum++; //获取此分组的检查项 var groupTermItems = defaultDatas.Where(x => x.GroupName == itemGroup.Key); foreach (var itemTerm in groupTermItems) { var model = new FeedingRun_SubInspectTermItemData(); model.TermItemId = Guid.NewGuid().ToString(); model.ParentId = itemGroup.Key; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = itemTerm.WorkInspectId; model.WorkInspectName = itemTerm.WorkInspectName; model.GroupName = itemTerm.GroupName; model.Sort = itemTerm.Sort.Value; model.GroupSort = itemTerm.Sort.Value; model.Level = 2; result.Add(model); } } } } } Grid1.DataSource = result; Grid1.DataBind(); //检查人绑定 var userList = from user in Funs.DB.Sys_User join projectrole in Funs.DB.Project_ProjectUser on user.UserId equals projectrole.UserId where projectrole.ProjectId == this.CurrUser.LoginProjectId select user; var userids = new List() { Const.sysglyId, Const.hfnbdId, Const.sedinId }; var addUserList = Funs.DB.Sys_User.Where(x => userids.Contains(x.UserId)); var data = userList.ToList(); if (addUserList.Count() > 0) { data.AddRange(addUserList); } DropDownList ddlInspectedUser = Grid1.FindColumn("InspectedUser").FindControl("ddlInspectedUser") as DropDownList; ddlInspectedUser.DataTextField = "UserName"; ddlInspectedUser.DataValueField = "UserId"; ddlInspectedUser.DataSource = data; ddlInspectedUser.DataBind(); } /// /// 行按钮事件 /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var level = int.Parse(this.Grid1.Rows[e.RowIndex].DataKeys[4].ToString()); if (level == 1) { var groupName = this.Grid1.Rows[e.RowIndex].DataKeys[3].ToString(); var deletelist = Funs.DB.FeedingRun_SubInspectTermItem.Where(p => p.GroupName == groupName && p.InstallationId == this.tvControlItem.SelectedNodeID); if (deletelist.Count() > 0) { Funs.DB.FeedingRun_SubInspectTermItem.DeleteAllOnSubmit(deletelist); Funs.DB.SubmitChanges(); BindGrid(); ShowNotify("删除成功!"); } else { var list = gvList(); list.RemoveAll(x => x.GroupName == groupName); Grid1.DataSource = list; Grid1.DataBind(); ShowNotify("删除成功!"); } } else { var model = Funs.DB.FeedingRun_SubInspectTermItem.FirstOrDefault(p => p.TermItemId == rowID); if (model != null) { if (model.InspectionResults != null) { ShowNotify("已存在检查结果,无法删除!", MessageBoxIcon.Warning); return; } Funs.DB.FeedingRun_SubInspectTermItem.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); BindGrid(); ShowNotify("删除成功!"); } else { var list = gvList(); list.RemoveAll(x => x.TermItemId == rowID); Grid1.DataSource = list; Grid1.DataBind(); ShowNotify("删除成功!"); } } } } #endregion /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(ddlDriverCharge.SelectedValue)) { ShowNotify("请选择装置开车负责人!", MessageBoxIcon.Warning); return; } if (string.IsNullOrWhiteSpace(ddlDrivingManager.SelectedValue)) { ShowNotify("请选择开车经理!", MessageBoxIcon.Warning); return; } if (string.IsNullOrWhiteSpace(ddlProjectManager.SelectedValue)) { ShowNotify("请选择项目经理!", MessageBoxIcon.Warning); return; } List subTrems = new List(); List subTremItems = new List(); var subTrem = Funs.DB.FeedingRun_SubInspectTerm.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId && x.InstallationId == this.tvControlItem.SelectedNodeID); var termItems = Funs.DB.FeedingRun_SubInspectTermItem.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.InstallationId == this.tvControlItem.SelectedNodeID).ToList(); if (termItems.Count > 0 && termItems.Count(x => x.InspectionResults == null) == 0) { ShowNotify("所有检查项已存在检查结果,无法保存!", MessageBoxIcon.Warning); return; } int itemnum = 1; 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 termItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); var workInspectId = IsNullStr(this.Grid1.Rows[i].DataKeys[1]); var groupName = IsNullStr(this.Grid1.Rows[i].DataKeys[3]); var level = IsNullStr(this.Grid1.Rows[i].DataKeys[4]); if (level == "1") continue; //获取系统信息 var list = new List(); //检查表 if (subTrem == null) { subTrem = new FeedingRun_SubInspectTerm(); subTrem.SubInspectId = Guid.NewGuid().ToString(); subTrem.ProjectId = this.CurrUser.LoginProjectId; subTrem.DriverCharge = ddlDriverCharge.SelectedValue; subTrem.DrivingManager = ddlDrivingManager.SelectedValue; subTrem.ProjectManager = ddlProjectManager.SelectedValue; subTrem.InstallationId = this.tvControlItem.SelectedNodeID; subTrem.AddUser = this.CurrUser.UserId; subTrem.AddTime = DateTime.Now; subTrems.Add(subTrem); } else { subTrem.DriverCharge = ddlDriverCharge.SelectedValue; subTrem.DrivingManager = ddlDrivingManager.SelectedValue; subTrem.ProjectManager = ddlProjectManager.SelectedValue; Funs.DB.SubmitChanges(); } //检查项表 var model = Funs.DB.FeedingRun_SubInspectTermItem.FirstOrDefault(x => x.TermItemId == termItemId); if (model == null) { model = new FeedingRun_SubInspectTermItem(); model.TermItemId = termItemId; model.SubInspectId = subTrem.SubInspectId; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = workInspectId; model.WorkInspectName = values.Value("WorkInspectName"); model.InspectedUser = values.Value("InspectedUser"); model.GroupName = groupName; model.DriverCharge = ddlDriverCharge.SelectedValue; model.DrivingManager = ddlDrivingManager.SelectedValue; model.ProjectManager = ddlProjectManager.SelectedValue; model.InstallationId = this.tvControlItem.SelectedNodeID; model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = itemnum; subTremItems.Add(model); itemnum++; } else { model.GroupName = groupName; model.InspectedUser = IsNullStr(values.Value("InspectedUser")); model.WorkInspectName = values.Value("WorkInspectName"); Funs.DB.SubmitChanges(); } } if (subTrems != null) Funs.DB.FeedingRun_SubInspectTerm.InsertAllOnSubmit(subTrems); if (subTremItems.Count > 0) Funs.DB.FeedingRun_SubInspectTermItem.InsertAllOnSubmit(subTremItems); Funs.DB.SubmitChanges(); if (Funs.DB.FeedingRun_SubInspectTermItem.Count(x => x.SubInspectId == subTrem.SubInspectId && x.InspectionResults.GetValueOrDefault() != 1) == 0) { subTrem.InspectionIsAllPass = 1; } else { subTrem.InspectionIsAllPass = 0; } Funs.DB.SubmitChanges(); ShowNotify("保存成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } /// /// 新增 /// protected void btnAdd_Click(object sender, EventArgs e) { this.hidRequestNodeID.Text = string.Empty; PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hidRequestNodeID.ClientID) + Window1.GetShowReference($"SubInspectTermEdit.aspx?TermItemId=&WorkInspectId=&InstallationId=" + this.tvControlItem.SelectedNodeID + "", "新增")); } /// /// 修改 /// protected void btnModify_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; } var level = int.Parse(this.Grid1.Rows[Grid1.SelectedRowIndex].DataKeys[4].ToString()); if (level == 1) { Alert.ShowInTop("一级节点无法修改!", MessageBoxIcon.Warning); return; } var workInspectId = IsNullStr(this.Grid1.Rows[Grid1.SelectedRowIndex].DataKeys[1]); var groupName = IsNullStr(this.Grid1.Rows[Grid1.SelectedRowIndex].DataKeys[3]); var workInspectName = IsNullStr(this.Grid1.Rows[Grid1.SelectedRowIndex].DataKeys[6]); this.hidRequestNodeID.Text = string.Empty; PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hidRequestNodeID.ClientID) + Window1.GetShowReference($"SubInspectTermEdit.aspx?TermItemId={Grid1.SelectedRowID}&WorkInspectId={workInspectId}&GroupName={groupName}&WorkInspectName={workInspectName}&InstallationId={this.tvControlItem.SelectedNodeID}", "编辑")); } /// /// 右击新增 /// protected void btnMenuParentAdd_Click(object sender, EventArgs e) { btnAdd_Click(sender, e); } /// /// 右击修改 /// protected void btnMenuModify_Click(object sender, EventArgs e) { btnModify_Click(sender, e); } /// /// 获取集合 /// private List gvList() { List list = new List(); 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 termItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); var workInspectId = IsNullStr(this.Grid1.Rows[i].DataKeys[1]); var subInspectId = IsNullStr(this.Grid1.Rows[i].DataKeys[2]); var groupName = IsNullStr(this.Grid1.Rows[i].DataKeys[3]); var level = IsNullStr(this.Grid1.Rows[i].DataKeys[4]); var parentId = IsNullStr(this.Grid1.Rows[i].DataKeys[5]); var groupSort = IsNullStr(this.Grid1.Rows[i].DataKeys[7]); var inspectionResults = IsNullStr(this.Grid1.Rows[i].DataKeys[8]); var inspectionIllustrate = IsNullStr(this.Grid1.Rows[i].DataKeys[9]); var model = new FeedingRun_SubInspectTermItemData(); model.TermItemId = termItemId; model.SubInspectId = subInspectId; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = workInspectId; model.WorkInspectName = values.Value("WorkInspectName"); model.InstallationId = this.tvControlItem.SelectedNodeID; model.GroupName = groupName; model.GroupSort = !string.IsNullOrWhiteSpace(groupSort) ? int.Parse(groupSort) : 0; model.Level = !string.IsNullOrWhiteSpace(level) ? int.Parse(level) : 0; model.ParentId = parentId; model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; if (!string.IsNullOrWhiteSpace(inspectionResults)) { model.InspectionResults = int.Parse(inspectionResults); } model.InspectionIllustrate = inspectionIllustrate; model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = i + 1; list.Add(model); } return list; } /// /// 检测结果 /// /// public string Results(object value) { var result = string.Empty; if (value != null) { var intVal = int.Parse(value.ToString()); if (intVal == 1) { result = "通过"; } else if (intVal == 0) { result = "未通过"; } } return result; } /// /// 数据绑定实体 /// public class FeedingRun_SubInspectTermItemData : FeedingRun_SubInspectTermItem { /// /// 上级主键 /// public string ParentId { get; set; } /// /// 分组排序 /// public int GroupSort { get; set; } /// /// 级别 /// public int Level { get; set; } } /// /// 关闭 /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { if (!string.IsNullOrWhiteSpace(hidRequestNodeID.Text)) { var list = gvList(); string termItemId = hidRequestNodeID.Text.Split('|')[0]; string workInspectName = hidRequestNodeID.Text.Split('|')[1]; string groupName = hidRequestNodeID.Text.Split('|')[2]; string installationId = hidRequestNodeID.Text.Split('|')[3]; var model = new FeedingRun_SubInspectTermItemData(); model.TermItemId = Guid.NewGuid().ToString(); model.ParentId = groupName; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = string.Empty; model.WorkInspectName = workInspectName; model.GroupName = groupName; model.InstallationId = installationId; model.Sort = list.Count + 1; model.Level = 2; list.Add(model); list.RemoveAll(x => x.Level == 1); list = list.OrderBy(x => x.Sort).ToList(); BindGrid(list); } } /// /// 行加载事件 /// protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) { var level = int.Parse(this.Grid1.Rows[e.RowIndex].DataKeys[4].ToString()); RenderField InspectedUser = Grid1.FindColumn("InspectedUser") as RenderField; if (level == 1) { e.CellAttributes[InspectedUser.ColumnIndex]["data-color"] = "color"; } } /// /// 字符串处理 /// /// private string IsNullStr(object value) { var result = string.Empty; if (value == null) return result; return value.ToString(); } } }