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 SubInspectTerm : 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 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 select new { a.PreRunId, a.PreRunCode, a.PreRunName, a.ProjectId, c.WorkPackId, c.WorkPackName }; if (list.Count() > 0) { var subList = list.GroupBy(x => new { x.PreRunId, 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 = true; rootUnitNode.EnableExpandEvent = true; rootNode.Nodes.Add(rootUnitNode); rootUnitNode.Expanded = true; var worklist = list.Where(a => a.PreRunId == item.Key.PreRunId).GroupBy(x => new { x.WorkPackId, x.WorkPackName }).ToList(); if (worklist.Count > 0) { foreach (var itemWork in worklist) { 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 = true; rootUnitNode.Nodes.Add(newNode); } } } } } /// /// 点击TreeView /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.BindGrid(); } #endregion #region 数据绑定 /// /// 绑定数据 /// public void BindGrid() { var result = new List(); var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); //获取子系统 var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); var list = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.WorkPackId == workPackId && x.SubSystemId == subSystemId).OrderBy(x => x.Sort).ToList(); if (list.Count > 0) { foreach (var item in list) { var model = new Brid_SubInspectTermItem(); model.SubItemId = item.SubItemId; model.ProjectId = item.ProjectId; model.WorkPackId = item.WorkPackId; model.WorkInspectId = item.WorkInspectId; model.WorkInspectName = item.WorkInspectName; model.InstallationId = subSysModel.InstallationId; model.ProcessesId = subSysModel.ProcessesId; model.SystemId = subSysModel.SystemId; model.SubSystemId = subSysModel.PreRunId; model.InspectedUser = item.InspectedUser; model.Sort = item.Sort; model.isChick = true; result.Add(model); } } //获取预加载的数据 var defaultDatas = Funs.DB.PreRun_WorkInspectTemplate.Where(s => s.WorkPackId == workPackId).OrderBy(x => x.Sort).ToList(); if (defaultDatas.Count > 0) { int index = list.Count + 1; foreach (var item in defaultDatas) { if (list.Count(x => x.WorkInspectName == item.WorkInspectName) == 0) { var model = new Brid_SubInspectTermItem(); model.SubItemId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.WorkPackId = item.WorkPackId; model.WorkInspectId = item.WorkInspectId; model.WorkInspectName = item.WorkInspectName; model.InstallationId = subSysModel.InstallationId; model.ProcessesId = subSysModel.ProcessesId; model.SystemId = subSysModel.SystemId; model.SubSystemId = subSysModel.PreRunId; model.Sort = index + 1; model.isChick = false; result.Add(model); index++; } } } Grid1.DataSource = result; Grid1.DataBind(); if(result.Count(x => x.isChick)>0) { //默认选中行 var checkids = result.Where(x => x.isChick).Select(a => a.SubItemId); Grid1.SelectedRowIDArray = checkids.ToArray(); } //检查人绑定 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(); #region 注释 //var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); //var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); ////获取子系统 //var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); //var list = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.WorkPackId == workPackId && x.SubSystemId == subSystemId).OrderBy(x => x.Sort).ToList(); //if (list.Count == 0) //{ // list = new List(); // var defaultDatas = Funs.DB.PreRun_WorkInspectTemplate.Where(s => s.WorkPackId == workPackId).OrderBy(x=>x.Sort).ToList(); // if (defaultDatas.Count > 0) // { // int index = 0; // foreach (var item in defaultDatas) // { // var model = new PreRun_SubInspectTermItem(); // model.SubItemId = Guid.NewGuid().ToString(); // model.ProjectId = this.CurrUser.LoginProjectId; // model.WorkPackId = item.WorkPackId; // model.WorkInspectId = item.WorkInspectId; // model.WorkInspectName = item.WorkInspectName; // model.InstallationId = subSysModel.InstallationId; // model.ProcessesId = subSysModel.ProcessesId; // model.SystemId = subSysModel.SystemId; // model.SubSystemId = subSysModel.PreRunId; // model.Sort = index + 1; // list.Add(model); // index++; // } // } //} //Grid1.DataSource = list; //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(); #endregion } /// /// 排序 /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); } /// /// 行按钮事件 /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(p => p.SubItemId == rowID); if (model != null) { Funs.DB.PreRun_SubInspectTermItem.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); BindGrid(); ShowNotify("删除成功!"); } else { var list = gvList(); list.RemoveAll(x => x.SubItemId == rowID); Grid1.DataSource = list; Grid1.DataBind(); ShowNotify("删除成功!"); } } } #endregion /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { try { if (Grid1.SelectedRowIndexArray.Length == 0) { ShowNotify("请选择一条数据!", MessageBoxIcon.Warning); return; } var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); var subTrem = Funs.DB.PreRun_SubInspectTerm.FirstOrDefault(x => x.SubSystemId == subSystemId && x.WorkPackId == workPackId); 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 workInspectId = this.Grid1.Rows[i].DataKeys[1].ToString(); if (!Grid1.SelectedRowIndexArray.Contains(i)) continue; //获取子系统信息 var list = new List(); var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); if (subSysModel != null) { //获取子系统工作包检查表,如果不存在则添加 if (subTrem == null) { subTrem = new PreRun_SubInspectTerm(); subTrem.SubInspectId = Guid.NewGuid().ToString(); subTrem.WorkPackId = workPackId; subTrem.ProjectId = this.CurrUser.LoginProjectId; subTrem.InstallationId = subSysModel.InstallationId; subTrem.ProcessesId = subSysModel.ProcessesId; subTrem.SystemId = subSysModel.SystemId; subTrem.SubSystemId = subSysModel.PreRunId; subTrem.AddUser = this.CurrUser.UserId; subTrem.AddTime = DateTime.Now; Funs.DB.PreRun_SubInspectTerm.InsertOnSubmit(subTrem); } var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(x => x.SubItemId == subItemId); if (model == null) { model = new PreRun_SubInspectTermItem(); model.SubItemId = subItemId; model.SubInspectId = subTrem.SubInspectId; model.WorkPackId = workPackId; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = workInspectId; model.WorkInspectName = values.Value("WorkInspectName"); model.InstallationId = subSysModel.InstallationId; model.ProcessesId = subSysModel.ProcessesId; model.SystemId = subSysModel.SystemId; model.SubSystemId = subSysModel.PreRunId; model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = i + 1; Funs.DB.PreRun_SubInspectTermItem.InsertOnSubmit(model); } else { model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; model.WorkInspectName = values.Value("WorkInspectName"); Funs.DB.SubmitChanges(); } } Funs.DB.SubmitChanges(); } BindGrid(); ShowNotify("保存成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } /// /// 新增 /// protected void btnAdd_Click(object sender, EventArgs e) { var list = gvList(); var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); //获取子系统 var subSysModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.PreRunId == subSystemId); if (subSysModel != null) { var model = new PreRun_SubInspectTermItem(); model.SubItemId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.WorkPackId = workPackId; model.WorkInspectId = string.Empty; model.WorkInspectName = string.Empty; model.InstallationId = subSysModel.InstallationId; model.ProcessesId = subSysModel.ProcessesId; model.SystemId = subSysModel.SystemId; model.SubSystemId = subSysModel.PreRunId; model.Sort = list.Count + 1; list.Add(model); } Grid1.DataSource = list; Grid1.DataBind(); } /// /// 入场人员培训及特种作业报验人数集合 /// 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 subItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); var workInspectId = this.Grid1.Rows[i].DataKeys[1] != null ? this.Grid1.Rows[i].DataKeys[1].ToString() : string.Empty; ; var subInspectId = this.Grid1.Rows[i].DataKeys[2] != null ? this.Grid1.Rows[i].DataKeys[2].ToString() : string.Empty; var workPackId = this.Grid1.Rows[i].DataKeys[3].ToString(); var installationId = this.Grid1.Rows[i].DataKeys[4].ToString(); var processesId = this.Grid1.Rows[i].DataKeys[4].ToString(); var systemId = this.Grid1.Rows[i].DataKeys[4].ToString(); var subSystemId = this.Grid1.Rows[i].DataKeys[4].ToString(); var model = new PreRun_SubInspectTermItem(); model = new PreRun_SubInspectTermItem(); model.SubItemId = subItemId; model.SubInspectId = subInspectId; model.WorkPackId = workPackId; model.ProjectId = this.CurrUser.LoginProjectId; model.WorkInspectId = workInspectId; model.WorkInspectName = values.Value("WorkInspectName"); model.InstallationId = installationId; model.ProcessesId = processesId; model.SystemId = systemId; model.SubSystemId = subSystemId; model.InspectedUser = !string.IsNullOrWhiteSpace(values.Value("InspectedUser")) ? values.Value("InspectedUser") : string.Empty; 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 Brid_SubInspectTermItem : PreRun_SubInspectTermItem { /// /// 是否选中 /// public bool isChick { get; set; } } } }