| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  | using BLL; | 
					
						
							|  |  |  |  | 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.TestRunManage | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     public partial class SubWorkInspect : PageBase | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         protected void Page_Load(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (!IsPostBack) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.InitTreeMenu();//加载树 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 树绑定 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 加载树 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         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 userTermItems = from a in Funs.DB.TestRun_TermItemInspectedUser | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                                 join b in Funs.DB.TestRun_SubInspectTermItem on a.TermItemId equals b.TermItemId | 
					
						
							|  |  |  |  |                                 where a.InspectedUser == this.CurrUser.UserId && a.ProjectId == this.CurrUser.LoginProjectId | 
					
						
							|  |  |  |  |                                 select new { a, b }; | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |             if (userTermItems.Count() == 0) return; | 
					
						
							|  |  |  |  |             var systemIds = userTermItems.Select(x => x.b.SystemId); | 
					
						
							|  |  |  |  |             var workPackIds = userTermItems.Select(x => x.b.WorkPackId); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |             var list = from a in Funs.DB.PreRun_SysDevice | 
					
						
							|  |  |  |  |                        join b in Funs.DB.TestRun_SubSysWorkPackage on a.PreRunId equals b.SystemId | 
					
						
							|  |  |  |  |                        join c in Funs.DB.TestRun_WorkPackage on b.WorkPackId equals c.WorkPackId | 
					
						
							|  |  |  |  |                        where a.ProjectId == this.CurrUser.LoginProjectId && systemIds.Contains(a.PreRunId) && workPackIds.Contains(c.WorkPackId) | 
					
						
							|  |  |  |  |                        select new { a.PreRunId, a.ProcessesId, a.SystemId, a.PreRunCode, a.PreRunName, a.ProjectId, c.WorkPackId, c.WorkPackName, b.WorkPackCode }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (list.Count() > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 var ids = list.Select(x => x.ProcessesId).ToList(); | 
					
						
							|  |  |  |  |                 ids.AddRange(list.Select(x => x.PreRunId).ToList()); | 
					
						
							|  |  |  |  |                 ids = ids.Distinct().ToList(); | 
					
						
							|  |  |  |  |                 var syslist = Funs.DB.PreRun_SysDevice.Where(x => ids.Contains(x.PreRunId)).ToList(); | 
					
						
							|  |  |  |  |                 if (syslist.Count > 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     var oneIds = syslist.ConvertAll(x => x.ProcessesId).Distinct().ToList(); | 
					
						
							|  |  |  |  |                     foreach (var itemOne in oneIds) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         var itemOneModel = syslist.FirstOrDefault(x => x.PreRunId == itemOne); | 
					
						
							|  |  |  |  |                         TreeNode rootOneNode = new TreeNode(); | 
					
						
							|  |  |  |  |                         rootOneNode.NodeID = itemOneModel.PreRunId; | 
					
						
							|  |  |  |  |                         rootOneNode.Text = itemOneModel.PreRunName; | 
					
						
							|  |  |  |  |                         rootOneNode.ToolTip = itemOneModel.PreRunName; | 
					
						
							|  |  |  |  |                         rootOneNode.CommandName = ""; | 
					
						
							|  |  |  |  |                         rootOneNode.EnableClickEvent = false; | 
					
						
							|  |  |  |  |                         rootOneNode.EnableExpandEvent = false; | 
					
						
							|  |  |  |  |                         rootNode.Nodes.Add(rootOneNode); | 
					
						
							|  |  |  |  |                         rootOneNode.Expanded = true; | 
					
						
							|  |  |  |  |                         var subTwoList = syslist.Where(g => g.ParentId == itemOneModel.PreRunId).GroupBy(x => new { x.PreRunId, x.ProcessesId, x.PreRunCode, x.PreRunName }); | 
					
						
							|  |  |  |  |                         foreach (var itemTwo in subTwoList) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             TreeNode rootTwoNode = new TreeNode(); | 
					
						
							|  |  |  |  |                             rootTwoNode.NodeID = itemTwo.Key.PreRunId; | 
					
						
							|  |  |  |  |                             rootTwoNode.Text = itemTwo.Key.PreRunName; | 
					
						
							|  |  |  |  |                             rootTwoNode.ToolTip = itemTwo.Key.PreRunName; | 
					
						
							|  |  |  |  |                             rootTwoNode.CommandName = ""; | 
					
						
							|  |  |  |  |                             rootTwoNode.EnableClickEvent = false; | 
					
						
							|  |  |  |  |                             rootTwoNode.EnableExpandEvent = false; | 
					
						
							|  |  |  |  |                             rootOneNode.Nodes.Add(rootTwoNode); | 
					
						
							|  |  |  |  |                             rootTwoNode.Expanded = true; | 
					
						
							|  |  |  |  |                             var worklist = list.Where(a => a.PreRunId == itemTwo.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 + "|" + itemTwo.Key.PreRunId; | 
					
						
							|  |  |  |  |                                     newNode.ToolTip = itemWork.Key.WorkPackName; | 
					
						
							|  |  |  |  |                                     newNode.CommandName = ""; | 
					
						
							|  |  |  |  |                                     newNode.Expanded = true; | 
					
						
							|  |  |  |  |                                     newNode.EnableClickEvent = true; | 
					
						
							|  |  |  |  |                                     newNode.EnableExpandEvent = true; | 
					
						
							|  |  |  |  |                                     rootTwoNode.Nodes.Add(newNode); | 
					
						
							|  |  |  |  |                                 } | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 点击TreeView | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             this.BindGrid(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 数据绑定 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 绑定数据 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public void BindGrid(bool istail = false) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var workPackId = this.tvControlItem.SelectedNodeID.Split('|').First(); | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |             var subSystemId = this.tvControlItem.SelectedNodeID.Split('|').Last(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             var data = from termuser in Funs.DB.TestRun_TermItemInspectedUser | 
					
						
							|  |  |  |  |                        join termitem in Funs.DB.TestRun_SubInspectTermItem on termuser.TermItemId equals termitem.TermItemId | 
					
						
							|  |  |  |  |                        join b in Funs.DB.TestRun_InspectTailTerm.Where(x => x.InspectUser == this.CurrUser.UserId) on termitem.TermItemId equals b.TermItemId into t | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                        from tail in t.DefaultIfEmpty() | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                        where termitem.WorkPackId == workPackId | 
					
						
							|  |  |  |  |                        && termitem.SystemId == subSystemId | 
					
						
							|  |  |  |  |                        && termuser.InspectedUser == this.CurrUser.UserId | 
					
						
							|  |  |  |  |                        group new { termitem.TermItemId, termitem.SubInspectId, termitem.WorkPackId, termitem.ProjectId, termitem.WorkInspectId, termitem.WorkInspectName, termitem.InstallationId, termitem.ProcessesId, termitem.SystemId, termitem.InspectedUser, termuser.InspectionResults, termuser.InspectionIllustrate, termitem.Subcontractor, termitem.Contractor, termitem.Supervision, termitem.Owner, termitem.SubcontractorIsPass, termitem.ContractorIsPass, termitem.SupervisionIsPass, termitem.OwnerIsPass, termitem.SubcontractorRemark, termitem.ContractorRemark, termitem.SupervisionRemark, termitem.OwnerRemark, termitem.Remark, termitem.AddUser, termitem.AddTime, termitem.Sort, IsTailTerm = tail.TailTermId == null ? 0 : 1 } | 
					
						
							|  |  |  |  |                        by new { termitem.TermItemId, termitem.SubInspectId, termitem.WorkPackId, termitem.ProjectId, termitem.WorkInspectId, termitem.WorkInspectName, termitem.InstallationId, termitem.ProcessesId, termitem.SystemId, termitem.InspectedUser, termuser.InspectionResults, termuser.InspectionIllustrate, termitem.Subcontractor, termitem.Contractor, termitem.Supervision, termitem.Owner, termitem.SubcontractorIsPass, termitem.ContractorIsPass, termitem.SupervisionIsPass, termitem.OwnerIsPass, termitem.SubcontractorRemark, termitem.ContractorRemark, termitem.SupervisionRemark, termitem.OwnerRemark, termitem.Remark, termitem.AddUser, termitem.AddTime, termitem.Sort, IsTailTerm = tail.TailTermId == null ? 0 : 1 } into gt | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                        orderby gt.Key.Sort | 
					
						
							|  |  |  |  |                        select new TermItemBridDto() | 
					
						
							|  |  |  |  |                        { | 
					
						
							|  |  |  |  |                            TermItemId = gt.Key.TermItemId, | 
					
						
							|  |  |  |  |                            SubInspectId = gt.Key.SubInspectId, | 
					
						
							|  |  |  |  |                            WorkPackId = gt.Key.WorkPackId, | 
					
						
							|  |  |  |  |                            ProjectId = gt.Key.ProjectId, | 
					
						
							|  |  |  |  |                            WorkInspectId = gt.Key.WorkInspectId, | 
					
						
							|  |  |  |  |                            WorkInspectName = gt.Key.WorkInspectName, | 
					
						
							|  |  |  |  |                            InstallationId = gt.Key.InstallationId, | 
					
						
							|  |  |  |  |                            ProcessesId = gt.Key.ProcessesId, | 
					
						
							|  |  |  |  |                            SystemId = gt.Key.SystemId, | 
					
						
							|  |  |  |  |                            InspectedUser = gt.Key.InspectedUser, | 
					
						
							|  |  |  |  |                            InspectionResults = gt.Key.InspectionResults, | 
					
						
							|  |  |  |  |                            InspectionIllustrate = gt.Key.InspectionIllustrate, | 
					
						
							|  |  |  |  |                            Subcontractor = gt.Key.Subcontractor, | 
					
						
							|  |  |  |  |                            Contractor = gt.Key.Contractor, | 
					
						
							|  |  |  |  |                            Supervision = gt.Key.Supervision, | 
					
						
							|  |  |  |  |                            Owner = gt.Key.Owner, | 
					
						
							|  |  |  |  |                            SubcontractorIsPass = gt.Key.SubcontractorIsPass, | 
					
						
							|  |  |  |  |                            ContractorIsPass = gt.Key.ContractorIsPass, | 
					
						
							|  |  |  |  |                            SupervisionIsPass = gt.Key.SupervisionIsPass, | 
					
						
							|  |  |  |  |                            OwnerIsPass = gt.Key.OwnerIsPass, | 
					
						
							|  |  |  |  |                            SubcontractorRemark = gt.Key.SubcontractorRemark, | 
					
						
							|  |  |  |  |                            ContractorRemark = gt.Key.ContractorRemark, | 
					
						
							|  |  |  |  |                            SupervisionRemark = gt.Key.SupervisionRemark, | 
					
						
							|  |  |  |  |                            OwnerRemark = gt.Key.OwnerRemark, | 
					
						
							|  |  |  |  |                            Remark = gt.Key.Remark, | 
					
						
							|  |  |  |  |                            AddUser = gt.Key.AddUser, | 
					
						
							|  |  |  |  |                            AddTime = gt.Key.AddTime, | 
					
						
							|  |  |  |  |                            Sort = gt.Key.Sort, | 
					
						
							|  |  |  |  |                            IsTailTerm = gt.Key.IsTailTerm | 
					
						
							|  |  |  |  |                        }; | 
					
						
							|  |  |  |  |             var list = data.ToList(); | 
					
						
							|  |  |  |  |             if (istail) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 JArray mergedData = Grid1.GetMergedData(); | 
					
						
							|  |  |  |  |                 list.ForEach(a => | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     var itemRow = mergedData.FirstOrDefault(x => x.Value<string>("id") == a.TermItemId); | 
					
						
							|  |  |  |  |                     JObject values = itemRow.Value<JObject>("values"); | 
					
						
							|  |  |  |  |                     var inspectionResults = !string.IsNullOrWhiteSpace(values.Value<string>("InspectionResults")) ? values.Value<string>("InspectionResults") : string.Empty; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrWhiteSpace(inspectionResults)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         a.InspectionResults = int.Parse(inspectionResults); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 }); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             Grid1.DataSource = list; | 
					
						
							|  |  |  |  |             Grid1.DataBind(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 排序 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         protected void Grid1_Sort(object sender, GridSortEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Grid1.SortDirection = e.SortDirection; | 
					
						
							|  |  |  |  |             Grid1.SortField = e.SortField; | 
					
						
							|  |  |  |  |             BindGrid(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 保存 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 保存 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         protected void btnSave_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                 var subInspectId = this.Grid1.Rows[0].DataKeys[2].ToString(); | 
					
						
							|  |  |  |  |                 if (Funs.DB.TestRun_SubInspectTermItem.Count(x => x.SubInspectId == subInspectId && (x.SubcontractorIsPass != null || x.ContractorIsPass != null || x.SupervisionIsPass != null || x.OwnerIsPass != null)) > 0) | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ShowNotify("已进入检查表流转,无法修改检查结果!", MessageBoxIcon.Warning); | 
					
						
							|  |  |  |  |                     return; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 JArray mergedData = Grid1.GetMergedData(); | 
					
						
							|  |  |  |  |                 foreach (JObject mergedRow in mergedData) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     string status = mergedRow.Value<string>("status"); | 
					
						
							|  |  |  |  |                     JObject values = mergedRow.Value<JObject>("values"); | 
					
						
							|  |  |  |  |                     int i = mergedRow.Value<int>("index"); | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                     var termItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                     if (values.Value<string>("InspectionResults") == "0") | 
					
						
							|  |  |  |  |                     { | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                         if (Funs.DB.TestRun_InspectTailTerm.Count(x => x.TermItemId == termItemId) == 0) | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                         { | 
					
						
							|  |  |  |  |                             ShowNotify("未通过的检查项请填写尾项!", MessageBoxIcon.Warning); | 
					
						
							|  |  |  |  |                             return; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 foreach (JObject mergedRow in mergedData) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     string status = mergedRow.Value<string>("status"); | 
					
						
							|  |  |  |  |                     JObject values = mergedRow.Value<JObject>("values"); | 
					
						
							|  |  |  |  |                     int i = mergedRow.Value<int>("index"); | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                     var termItemId = this.Grid1.Rows[i].DataKeys[0].ToString(); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                     //获取子系统信息 | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                     var model = Funs.DB.TestRun_TermItemInspectedUser.FirstOrDefault(x => x.TermItemId == termItemId && x.InspectedUser == this.CurrUser.UserId); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                     if (model != null) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         model.InspectionIllustrate = !string.IsNullOrWhiteSpace(values.Value<string>("InspectionIllustrate")) ? values.Value<string>("InspectionIllustrate") : string.Empty; | 
					
						
							|  |  |  |  |                         if (!string.IsNullOrWhiteSpace(values.Value<string>("InspectionResults"))) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             model.InspectionResults = int.Parse(values.Value<string>("InspectionResults")); | 
					
						
							|  |  |  |  |                         } | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                         //检查项表 | 
					
						
							|  |  |  |  |                         var subItemModel = Funs.DB.TestRun_SubInspectTermItem.FirstOrDefault(x => x.TermItemId == model.TermItemId); | 
					
						
							|  |  |  |  |                         if (subItemModel != null) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             if (Funs.DB.TestRun_TermItemInspectedUser.Count(x => x.InspectionResults.GetValueOrDefault() != 1 && x.TermItemId == model.TermItemId && x.InspectedUser != model.InspectedUser) == 0 && model.InspectionResults == 1) | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 subItemModel.AllUserInspectionPass = 1; | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                             else | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 subItemModel.AllUserInspectionPass = 0; | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                         } | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                         Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                 //检查表 | 
					
						
							| 
									
										
										
										
											2024-02-15 14:53:34 +08:00
										 |  |  |  |                 var subModel = Funs.DB.TestRun_SubInspectTerm.FirstOrDefault(x => x.SubInspectId == subInspectId); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                 if (subModel != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                     if (Funs.DB.TestRun_TermItemInspectedUser.Count(x => x.SubInspectId == subInspectId && x.InspectionResults.GetValueOrDefault() != 1) == 0) | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                     { | 
					
						
							|  |  |  |  |                         subModel.InspectionIsAllPass = 1; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         subModel.InspectionIsAllPass = 0; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                 Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |                 BindGrid(); | 
					
						
							|  |  |  |  |                 ShowNotify("保存成功!"); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 ShowNotify(ex.Message, MessageBoxIcon.Error); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 尾项数据绑定实体 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public class TermItemBridDto | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string TermItemId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 检查项主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string SubItemId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 检查表主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string SubInspectId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 工作包主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string WorkPackId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 项目主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string ProjectId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 工作包模板项主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string WorkInspectId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 检查事项名称 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string WorkInspectName { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 装置主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string InstallationId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 工序主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string ProcessesId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 系统主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string SystemId { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 检查人主键 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string InspectedUser { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 检查结果0:未通过 1:通过 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int? InspectionResults { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 检查说明 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string InspectionIllustrate { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 分包商 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string Subcontractor { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 承包商 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string Contractor { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 监理 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string Supervision { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 业主 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string Owner { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 分包商是否通过0/null:未通过 1:通过 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int? SubcontractorIsPass { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 承包商是否通过0/null:未通过 1:通过 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int? ContractorIsPass { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 监理是否通过0/null:未通过 1:通过 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int? SupervisionIsPass { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 业主是否通过0/null:未通过 1:通过 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int? OwnerIsPass { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 分包商备注 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string SubcontractorRemark { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 承包商备注 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string ContractorRemark { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 监理备注 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string SupervisionRemark { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 业主备注 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string OwnerRemark { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 备注 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string Remark { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 添加人 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public string AddUser { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 添加日期 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public DateTime? AddTime { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 排序 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int? Sort { get; set; } | 
					
						
							|  |  |  |  |             /// <summary> | 
					
						
							|  |  |  |  |             /// 是否存在尾项0:不存在1:存在 | 
					
						
							|  |  |  |  |             /// </summary> | 
					
						
							|  |  |  |  |             public int IsTailTerm { get; set; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 行内按钮事件 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //尾项申请 | 
					
						
							|  |  |  |  |             if (e.CommandName == "TailTerm") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 var termItemId = Grid1.DataKeys[e.RowIndex][0].ToString(); | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                 var inspectionResults = Grid1.DataKeys[e.RowIndex][1] != null ? int.Parse(Grid1.DataKeys[e.RowIndex][1].ToString()) : -1; | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                 if (inspectionResults == 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectTailTermEdit.aspx?TailTermId={0}&TermItemId={1}", "", termItemId, "新增 - "))); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     JArray mergedData = Grid1.GetMergedData(); | 
					
						
							|  |  |  |  |                     var itemRow = mergedData[e.RowIndex].Value<JObject>("values"); | 
					
						
							|  |  |  |  |                     if (itemRow.Value<string>("InspectionResults") == "0") | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectTailTermEdit.aspx?TailTermId={0}&TermItemId={1}", "", termItemId, "新增 - "))); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         ShowNotify("仅未通过检查项才可填写!", MessageBoxIcon.Warning); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             //尾项修改 | 
					
						
							|  |  |  |  |             if (e.CommandName == "TailTermUpdate") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 var termItemId = Grid1.DataKeys[e.RowIndex][0].ToString(); | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                 var inspectionResults = Grid1.DataKeys[e.RowIndex][1] != null ? int.Parse(Grid1.DataKeys[e.RowIndex][1].ToString()) : -1; | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                 if (inspectionResults == 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                     var tails = Funs.DB.TestRun_InspectTailTerm.Where(x => x.TermItemId == termItemId && x.InspectUser == this.CurrUser.UserId).ToList(); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                     if (tails.Count > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         if (tails.Count(x => x.ApproveState == 0) == 0) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             ShowNotify("申请的尾项非“待提交处理”状态,无法修改!", MessageBoxIcon.Warning); | 
					
						
							|  |  |  |  |                             return; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                         if (tails.Count(x => x.ApproveState == 0) > 1) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             string window = $"SelectTailTermList.aspx?TermItemId={termItemId}"; | 
					
						
							|  |  |  |  |                             PageContext.RegisterStartupScript(Window2.GetSaveStateReference(this.hidTailTermId.ClientID) + Window2.GetShowReference(window)); | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                         else | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             var tailModel = tails.FirstOrDefault(); | 
					
						
							|  |  |  |  |                             PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectTailTermEdit.aspx?TailTermId={0}&TermItemId={1}", tailModel.TailTermId, tailModel.TermItemId, "编辑 - "))); | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         ShowNotify("请填写尾项申请!", MessageBoxIcon.Warning); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ShowNotify("请填写尾项申请!", MessageBoxIcon.Warning); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 窗口关闭 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         protected void Window1_Close(object sender, WindowCloseEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             BindGrid(true); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 行绑定 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |             var isTailTerm = Grid1.DataKeys[e.RowIndex][3].ToString(); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |             LinkButtonField TailTermUpdate = Grid1.FindColumn("TailTermUpdate") as LinkButtonField; | 
					
						
							|  |  |  |  |             if (isTailTerm == "0") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 e.CellCssClasses[TailTermUpdate.ColumnIndex] = "hidethis"; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 尾项选择关闭 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="sender"></param> | 
					
						
							|  |  |  |  |         /// <param name="e"></param> | 
					
						
							|  |  |  |  |         protected void Window2_Close(object sender, WindowCloseEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (!string.IsNullOrWhiteSpace(hidTailTermId.Text)) | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2024-01-05 09:40:50 +08:00
										 |  |  |  |                 var model = Funs.DB.TestRun_InspectTailTerm.FirstOrDefault(x => x.TailTermId == hidTailTermId.Text); | 
					
						
							| 
									
										
										
										
											2023-11-23 09:28:55 +08:00
										 |  |  |  |                 if (model != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InspectTailTermEdit.aspx?TailTermId={0}&TermItemId={1}", hidTailTermId.Text, model.TermItemId, "编辑 - "))); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |