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.YLRQ.EntrustedManagement { public partial class WeldingConfirmation : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { hidNowUser.Text = CurrUser.UserId; BridProjectGrid(); BindGrid(); } } #region 绑定数据 /// /// 绑定项目 /// public void BridProjectGrid() { GridProject.DataSource = BLL.Base_ProjectService.GetYlrqProjectListByUserId(this.CurrUser.UserId, "2"); GridProject.DataBind(); drpProject.Value = this.CurrUser.LoginProjectId; } /// /// 绑定数据 /// public void BindGrid() { if (string.IsNullOrEmpty(drpProject.Value)) { Grid1.DataSource = null; Grid1.DataBind(); return; } string strSql = @"select a.WeldingId,a.ProjectId,a.WeldingCode,a.TextureMaterial1,c.STE_Code as TextureMaterial1Name,a.WeldLength,a.Thickness,(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Name) FROM (select Welder.WED_Name from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(a.BackingWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a)+','+(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Name) FROM (select Welder.WED_Name from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(a.CoverWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a) as WelderNo,a.QualifiedStatus,a.QualifiedDate,a.QualifiedClerkId,a.SortField from PV_WeldInformation as a left join HJGL_BS_Steel as c on a.TextureMaterial1=c.STE_ID where a.ProjectId=@ProjectId and a.Confirmation=1"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", drpProject.Value)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); // 2.获取当前分页数据 Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } /// /// 关闭弹出框执行 /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { this.BindGrid(); } /// /// 绑定数据 /// public void BindGrid1(string weldingId) { var glyUser = Funs.DB.Sys_User.FirstOrDefault(p => p.UserId == Const.GlyId); var pvdt = Funs.DB.PV_DetectionTime; string strSql = @"select a.MethodId,a.NdtCode,a.WeldingId,a.EntrustStatus,a.FilmingLocation,a.Remarks,a.EntrustData,a.DetectionStatus,a.DetectionTimeId,b.DetectionTime,c.UserId as EntrustPeople,c.UserName as EntrustPeopleName,d.ProjectId from PV_ManagementMethod as a left join PV_DetectionTime as b on a.DetectionTimeId=b.Id left join Sys_User as c on c.UserId=a.EntrustPeople left join PV_WeldInformation as d on d.WeldingId=a.WeldingId where 1=1 and a.WeldingId=@WeldingId"; List listStr = new List(); listStr.Add(new SqlParameter("@WeldingId", weldingId)); SqlParameter[] parameter = listStr.ToArray(); DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter); // 2.获取当前分页数据 Grid2.DataSource = dt; Grid2.DataBind(); for (int i = 0; i < Grid2.Rows.Count; i++) { //待检测 CheckBoxField State1 = (CheckBoxField)Grid2.FindColumn("State1"); //检测合格 CheckBoxField State2 = (CheckBoxField)Grid2.FindColumn("State2"); //待重拍 CheckBoxField State3 = (CheckBoxField)Grid2.FindColumn("State3"); //待返修 CheckBoxField State4 = (CheckBoxField)Grid2.FindColumn("State4"); if (dt.Rows[i]["DetectionStatus"] != null) { var detectionStatus = dt.Rows[i]["DetectionStatus"].ToString(); if (detectionStatus == "1") { State1.SetCheckedState(i, true); } else if (detectionStatus == "2") { State2.SetCheckedState(i, true); } else if (detectionStatus == "3") { State3.SetCheckedState(i, true); } else if (detectionStatus == "4") { State4.SetCheckedState(i, true); } } //检测时机 DropDownList ddlDetectionTime = Grid2.FindColumn("DetectionTimeId").FindControl("ddlDetectionTime") as DropDownList; ddlDetectionTime.DataTextField = "DetectionTime"; ddlDetectionTime.DataValueField = "Id"; ddlDetectionTime.DataSource = pvdt; ddlDetectionTime.DataBind(); //委托人 var projectId = dt.Rows[i]["ProjectId"].ToString(); var userList = Funs.DB.View_Common_Project_UserList.Where(p => p.ProjectId == projectId).ToList(); if (glyUser != null) { userList.Add(new View_Common_Project_UserList() { ProjectUserId = glyUser.UserId, UserId = glyUser.UserId, ProjectId = drpProject.Value, RoleId = glyUser.RoleId, Account = glyUser.Account, UserName = glyUser.UserName, UserCode = glyUser.UserCode, }); } DropDownList ddlEntrustPeople = Grid2.FindColumn("EntrustPeople").FindControl("ddlEntrustPeople") as DropDownList; ddlEntrustPeople.DataTextField = "UserName"; ddlEntrustPeople.DataValueField = "UserId"; ddlEntrustPeople.DataSource = userList; ddlEntrustPeople.DataBind(); if (userList != null) { hidNowUser.Text = userList.Count(p => p.UserId == CurrUser.UserId) > 0 ? CurrUser.UserId : userList.FirstOrDefault().UserId; } } } /// /// 施工号下拉框 /// protected void drpProject_TextChanged(object sender, EventArgs e) { BindGrid(); } #endregion #region 分页排序 /// /// 页索引改变事件 /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { BindGrid(); } /// /// 排序 /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { BindGrid(); } /// /// 分页选择下拉改变事件 /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } #endregion #region 按钮操作 /// /// 点击行事件 /// /// /// protected void Grid1_RowClick(object sender, GridRowClickEventArgs e) { if (!string.IsNullOrEmpty(this.Grid1.SelectedRowID)) { BindGrid1(this.Grid1.SelectedRowID); } } /// /// 提交 /// protected void btnSubmit_Click(object sender, EventArgs e) { try { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.PV_WeldingConfirmation, Const.BtnSave)) { var weldingId = this.Grid1.SelectedRowID; var weldInfo = Funs.DB.PV_WeldInformation.FirstOrDefault(p => p.WeldingId == weldingId); if (weldInfo == null) { Alert.ShowInTop("传递焊缝主键存在错误!", MessageBoxIcon.Warning); return; } if (weldInfo.QualifiedStatus != 1) { Alert.ShowInTop("检验合格未勾选,请勾选检合格!", MessageBoxIcon.Warning); return; } //获取检测标准列表 var testMethods = Funs.DB.PV_TestMethod.Where(p => p.Ndt_ProjectSoft == "4"); var manageMethods = Funs.DB.PV_ManagementMethod.Where(p => p.WeldingId == weldingId).ToList(); JArray mergedData = Grid2.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var manageMethod = manageMethods.FirstOrDefault(p => p.MethodId == Grid2.DataKeys[i][0].ToString()); if (manageMethod == null) continue; if (manageMethod.DetectionStatus == 2 || manageMethod.DetectionStatus == 3 || manageMethod.DetectionStatus == 4) continue; //筛选当前检测方法 var testMethod = testMethods.FirstOrDefault(p => p.Ndt_Id == manageMethod.NdtId); if (!string.IsNullOrEmpty(values.Value("EntrustStatus"))) { manageMethod.EntrustStatus = values.Value("EntrustStatus"); } else { manageMethod.EntrustStatus = 0; } if (manageMethod.EntrustStatus == 1) { //检测时机主键 manageMethod.DetectionTimeId = !string.IsNullOrWhiteSpace(values.Value("DetectionTimeId")) ? values.Value("DetectionTimeId") : manageMethod.DetectionTimeId; //委托人 manageMethod.EntrustPeople = !string.IsNullOrWhiteSpace(values.Value("EntrustPeople")) ? values.Value("EntrustPeople") : (string.IsNullOrWhiteSpace(manageMethod.EntrustPeople) ? CurrUser.UserId : manageMethod.EntrustPeople); //委托时间 manageMethod.EntrustData = !string.IsNullOrWhiteSpace(values.Value("EntrustData")) ? values.Value("EntrustData") : DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //判断委托单是否生成 var entrustRecord = Funs.DB.PV_EntrustRecord.FirstOrDefault(p => p.ProjectId == weldInfo.ProjectId && p.EntrustData == manageMethod.EntrustData && p.NdtId == manageMethod.NdtId && p.WmeId == weldInfo.WmeId && p.GrooveType == weldInfo.GrooveType && p.TestStandardId == testMethod.Ndt_TestStandardId); if (entrustRecord != null) { manageMethod.EntrustCode = string.Format("{0}_{1}_{2}", manageMethod.EntrustData.Value.ToString("yyyy-MM-dd"), manageMethod.NdtCode, string.Format("{0:D3}", entrustRecord.EntrustNo)); manageMethod.EntrustId = entrustRecord.Id; } else { var entrustNo = Funs.DB.PV_EntrustRecord.Count(p => p.EntrustData == manageMethod.EntrustData && p.NdtId == manageMethod.NdtId) + 1; manageMethod.EntrustCode = string.Format("{0}_{1}_{2}", manageMethod.EntrustData.Value.ToString("yyyy-MM-dd"), manageMethod.NdtCode, string.Format("{0:D3}", entrustNo)); PV_EntrustRecord entrustModel = new PV_EntrustRecord(); entrustModel.Id = Guid.NewGuid().ToString(); entrustModel.ProjectId = weldInfo.ProjectId;//施工号ID entrustModel.EntrustData = manageMethod.EntrustData;//委托日期 entrustModel.NdtId = manageMethod.NdtId;//检测方法ID entrustModel.WmeId = weldInfo.WmeId;//焊接方法ID entrustModel.GrooveType = weldInfo.GrooveType;//坡口形式ID entrustModel.TestStandardId = testMethod.Ndt_TestStandardId;//检测标准ID entrustModel.EntrustType = 1;//1:焊缝委托单 2:返修焊口委托单 entrustModel.EntrustNo = entrustNo; entrustModel.EntrustCode = manageMethod.EntrustCode; entrustModel.CreateId = CurrUser.Account; entrustModel.CreateTime = DateTime.Now; Funs.DB.PV_EntrustRecord.InsertOnSubmit(entrustModel); manageMethod.EntrustId = entrustModel.Id; } //检测状态 manageMethod.DetectionStatus = 1; } else { //检测状态 manageMethod.DetectionStatus = null; //委托时间 manageMethod.EntrustData = null; //是否委托 manageMethod.EntrustStatus = null; //委托单号主键 manageMethod.EntrustId = string.Empty; //委托单号 manageMethod.EntrustCode = string.Empty; //委托人 manageMethod.EntrustPeople = string.Empty; } manageMethod.CreateId = CurrUser.Account; manageMethod.CreateTime = DateTime.Now; Funs.DB.SubmitChanges(); } #region 注释 ////修改键值集合 //Dictionary> modifiedDict = Grid2.GetModifiedDict(); //for (int i = 0; i < Grid2.Rows.Count; i++) //{ // var manageMethod = manageMethods.FirstOrDefault(p => p.MethodId == Grid2.DataKeys[i][0].ToString()); // if (manageMethod == null) continue; // if (manageMethod.DetectionStatus == 2 || manageMethod.DetectionStatus == 3 || manageMethod.DetectionStatus == 4) continue; // //筛选当前检测方法 // var testMethod = testMethods.FirstOrDefault(p => p.Ndt_Id == manageMethod.NdtId); // if (modifiedDict.ContainsKey(i)) // { // if (modifiedDict[i].ContainsKey("EntrustStatus")) // { // manageMethod.EntrustStatus = bool.Parse(modifiedDict[i]["EntrustStatus"].ToString()) ? 1 : 0; // } // else // { // manageMethod.EntrustStatus = 0; // } // } // if (manageMethod.EntrustStatus == 1) // { // if (modifiedDict.ContainsKey(i)) // { // //检测时机主键 // manageMethod.DetectionTimeId = modifiedDict[i].ContainsKey("DetectionTimeId") ? modifiedDict[i]["DetectionTimeId"].ToString() : manageMethod.DetectionTimeId; // //委托人 // manageMethod.EntrustPeople = modifiedDict[i].ContainsKey("EntrustPeople") ? modifiedDict[i]["EntrustPeople"].ToString() : manageMethod.EntrustPeople; // //委托时间 // if (manageMethod.EntrustData == null) // { // manageMethod.EntrustData = modifiedDict[i].ContainsKey("EntrustData") ? DateTime.Parse(modifiedDict[i]["EntrustData"].ToString()) : DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); // } // } // else // { // //委托时间 // manageMethod.EntrustData = manageMethod.EntrustData == null ? DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")) : manageMethod.EntrustData; // //委托人 // manageMethod.EntrustPeople = string.IsNullOrEmpty(manageMethod.EntrustPeople) ? CurrUser.UserId : manageMethod.EntrustPeople; // } // //判断委托单是否生成 // var entrustRecord = Funs.DB.PV_EntrustRecord.FirstOrDefault(p => p.ProjectId == weldInfo.ProjectId && p.EntrustData == manageMethod.EntrustData && p.NdtId == manageMethod.NdtId && p.WmeId == weldInfo.WmeId && p.GrooveType == weldInfo.GrooveType && p.TestStandardId == testMethod.Ndt_TestStandardId); // if (entrustRecord != null) // { // manageMethod.EntrustCode = string.Format("{0}_{1}_{2}", manageMethod.EntrustData.Value.ToString("yyyy-MM-dd"), manageMethod.NdtCode, string.Format("{0:D3}", entrustRecord.EntrustNo)); // manageMethod.EntrustId = entrustRecord.Id; // } // else // { // var entrustNo = Funs.DB.PV_EntrustRecord.Count(p => p.EntrustData == manageMethod.EntrustData && p.NdtId == manageMethod.NdtId) + 1; // manageMethod.EntrustCode = string.Format("{0}_{1}_{2}", manageMethod.EntrustData.Value.ToString("yyyy-MM-dd"), manageMethod.NdtCode, string.Format("{0:D3}", entrustNo)); // PV_EntrustRecord entrustModel = new PV_EntrustRecord(); // entrustModel.Id = Guid.NewGuid().ToString(); // entrustModel.ProjectId = weldInfo.ProjectId;//施工号ID // entrustModel.EntrustData = manageMethod.EntrustData;//委托日期 // entrustModel.NdtId = manageMethod.NdtId;//检测方法ID // entrustModel.WmeId = weldInfo.WmeId;//焊接方法ID // entrustModel.GrooveType = weldInfo.GrooveType;//坡口形式ID // entrustModel.TestStandardId = testMethod.Ndt_TestStandardId;//检测标准ID // entrustModel.EntrustType = 1;//1:焊缝委托单 2:返修焊口委托单 // entrustModel.EntrustNo = entrustNo; // entrustModel.EntrustCode = manageMethod.EntrustCode; // entrustModel.CreateId = CurrUser.Account; // entrustModel.CreateTime = DateTime.Now; // Funs.DB.PV_EntrustRecord.InsertOnSubmit(entrustModel); // manageMethod.EntrustId = entrustModel.Id; // } // //检测状态 // manageMethod.DetectionStatus = 1; // } // else // { // //检测状态 // manageMethod.DetectionStatus = null; // //委托时间 // manageMethod.EntrustData = null; // //是否委托 // manageMethod.EntrustStatus = null; // //委托单号主键 // manageMethod.EntrustId = string.Empty; // //委托单号 // manageMethod.EntrustCode = string.Empty; // //委托人 // manageMethod.EntrustPeople = string.Empty; // } // manageMethod.CreateId = CurrUser.Account; // manageMethod.CreateTime = DateTime.Now; // Funs.DB.SubmitChanges(); //} #endregion BindGrid1(weldInfo.WeldingId); ShowNotify("操作成功!", MessageBoxIcon.Success); } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); } /// /// 取消委托 /// /// /// protected void btnCancelEntrust_Click(object sender, EventArgs e) { try { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.PV_WeldingConfirmation, Const.BtnCancelEntrust)) { if (Grid2.SelectedRowIndexArray.Length == 0) { Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning); return; } int row = Grid2.SelectedRowIndexArray[0]; var manageMethod = Funs.DB.PV_ManagementMethod.FirstOrDefault(p => p.MethodId == Grid2.DataKeys[row][0].ToString()); if (manageMethod != null) { if (manageMethod.DetectionStatus != 1) { Alert.ShowInTop("非待检测状态不能取消委托!", MessageBoxIcon.Warning); return; } //检测状态 manageMethod.DetectionStatus = null; //委托时间 manageMethod.EntrustData = null; //是否委托 manageMethod.EntrustStatus = null; //委托单号主键 manageMethod.EntrustId = string.Empty; //委托单号 manageMethod.EntrustCode = string.Empty; //委托人 manageMethod.EntrustPeople = string.Empty; Funs.DB.SubmitChanges(); } BindGrid1(manageMethod.WeldingId); ShowNotify("操作成功!", MessageBoxIcon.Success); } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); } /// /// 列选中时间Grid1 /// /// /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { var inspectionCount = Funs.DB.PV_WeldAppearanceRecord.Count(p => p.WeldingId == Grid1.DataKeys[e.RowIndex][0].ToString()); if (inspectionCount == 0) { //委托状态 CheckBoxField QualifiedStatus = (CheckBoxField)Grid1.FindColumn("QualifiedStatus"); string msg = QualifiedStatus.GetCheckedState(e.RowIndex) ? "焊缝外观检查记录未录入,是否确认操作?" : "是否确认取消外观检查?"; var ckStatus = QualifiedStatus.GetCheckedState(e.RowIndex) ? "1" : "0"; PageContext.RegisterStartupScript(Confirm.GetShowReference(msg, String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK|" + Grid1.DataKeys[e.RowIndex][0].ToString() + "|" + ckStatus), // 第一个参数 false 用来指定当前不是AJAX请求 PageManager1.GetCustomEventReference("Confirm_Cancel|" + Grid1.DataKeys[e.RowIndex][0].ToString() + "|" + ckStatus))); } else { //确认是否需要提示 //委托状态 CheckBoxField QualifiedStatus = (CheckBoxField)Grid1.FindColumn("QualifiedStatus"); string msg = QualifiedStatus.GetCheckedState(e.RowIndex) ? "是否确认操作?" : "是否确认取消外观检查?"; var ckStatus = QualifiedStatus.GetCheckedState(e.RowIndex) ? "1" : "0"; PageContext.RegisterStartupScript(Confirm.GetShowReference(msg, String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK|" + Grid1.DataKeys[e.RowIndex][0].ToString() + "|" + ckStatus), // 第一个参数 false 用来指定当前不是AJAX请求 PageManager1.GetCustomEventReference("Confirm_Cancel|" + Grid1.DataKeys[e.RowIndex][0].ToString() + "|" + ckStatus))); } } /// /// 确认和取消保存执行事件 /// /// /// protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) { //确认 if (e.EventArgument.Split('|').First() == "Confirm_OK") { var keyId = e.EventArgument.Split('|')[1].ToString(); var weldInfo = Funs.DB.PV_WeldInformation.FirstOrDefault(p => p.WeldingId == keyId); if (weldInfo == null) { ShowNotify("数据错误!", MessageBoxIcon.Warning); return; } //1:勾选 2::未勾选 if (e.EventArgument.Split('|')[2].ToString() == "1") { //更新合格状态 weldInfo.QualifiedStatus = 1; Funs.DB.SubmitChanges(); } else { //更新合格状态 weldInfo.QualifiedStatus = 0; var manageMethods = Funs.DB.PV_ManagementMethod.Where(p => p.WeldingId == keyId).ToList(); if (manageMethods.Count > 0) { foreach (var item in manageMethods) { if (item.DetectionStatus == 1) { //检测状态 item.DetectionStatus = null; //委托时间 item.EntrustData = null; //是否委托 item.EntrustStatus = null; //委托单号主键 item.EntrustId = string.Empty; //委托单号 item.EntrustCode = string.Empty; //委托人 item.EntrustPeople = string.Empty; } } Funs.DB.SubmitChanges(); } return; } } } /// /// 列加载 /// protected void Grid2_RowDataBound(object sender, GridRowEventArgs e) { DataRowView row = e.DataItem as DataRowView; RenderCheckField EntrustStatus = (RenderCheckField)Grid2.FindColumn("EntrustStatus"); var detectionStatus = Grid2.DataKeys[e.RowIndex][1].ToString(); if (row["EntrustStatus"].ToString() == "1") { e.CellCssClasses[EntrustStatus.ColumnIndex] = "f-grid-cell-uneditable"; if (detectionStatus == "2") { e.RowCssClass = "color2"; } else { e.RowCssClass = "color3"; } } else { e.RowCssClass = "color1"; } } #endregion } }