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 ReworkConfirmation : 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() { string strSql = @"select a.RepairItemRecordId,a.ProjectId,a.WeldingId,b.WeldingCode,a.FilmNum,a.RepairMark,a.DefectNature,(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.ProjectId,a.SerialNumber from PV_CH_RepairItemRecord as a left join PV_WeldInformation as b on a.WeldingId=b.WeldingId 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(); } /// /// 绑定数据 /// public void BindGrid1(string repairItemRecordId) { var pvdt = Funs.DB.PV_DetectionTime; var glyUser = Funs.DB.Sys_User.FirstOrDefault(p => p.UserId == Const.GlyId); string strSql = @"select a.ReworkId,a.NdtCode,a.RepairItemRecordId,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_ReworkManagementMethod 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.RepairItemRecordId=@RepairItemRecordId "; List listStr = new List(); listStr.Add(new SqlParameter("@RepairItemRecordId", repairItemRecordId)); 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_ReworkConfirmation, Const.BtnSubmit)) { var repairItemRecordId = this.Grid1.SelectedRowID; //返修通知单信息 var repairRecord = Funs.DB.PV_CH_RepairItemRecord.FirstOrDefault(p => p.RepairItemRecordId == repairItemRecordId); if (repairRecord == null) { Alert.ShowInTop("传递返修底片主键存在错误!", MessageBoxIcon.Warning); return; } //获取焊缝信息(仅用坡口形式) var weldInfo = Funs.DB.PV_WeldInformation.FirstOrDefault(p => p.WeldingId == repairRecord.WeldingId); //获取检测标准列表 var testMethods = Funs.DB.PV_TestMethod.Where(p => p.Ndt_ProjectSoft == "4"); //返修焊接与检测方法选择子表 var reworkMethods = Funs.DB.PV_ReworkManagementMethod.Where(p => p.RepairItemRecordId == repairItemRecordId).ToList(); Funs.DB.SubmitChanges(); 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 reworkMethod = reworkMethods.FirstOrDefault(p => p.ReworkId == Grid2.DataKeys[i][0].ToString()); if (reworkMethod == null) continue; if (reworkMethod.DetectionStatus == 2 || reworkMethod.DetectionStatus == 3 || reworkMethod.DetectionStatus == 4) continue; //筛选当前检测方法 var testMethod = testMethods.FirstOrDefault(p => p.Ndt_Id == reworkMethod.NdtId); if (!string.IsNullOrEmpty(values.Value("EntrustStatus"))) { reworkMethod.EntrustStatus = values.Value("EntrustStatus"); } else { reworkMethod.EntrustStatus = 0; } if (reworkMethod.EntrustStatus == 1) { //检测时机主键 reworkMethod.DetectionTimeId = !string.IsNullOrWhiteSpace(values.Value("DetectionTimeId")) ? values.Value("DetectionTimeId") : reworkMethod.DetectionTimeId; //委托人 reworkMethod.EntrustPeople = !string.IsNullOrWhiteSpace(values.Value("EntrustPeople")) ? values.Value("EntrustPeople") : (string.IsNullOrWhiteSpace(reworkMethod.EntrustPeople) ? CurrUser.UserId : reworkMethod.EntrustPeople); //委托时间 reworkMethod.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 == repairRecord.ProjectId && p.EntrustData == reworkMethod.EntrustData && p.NdtId == reworkMethod.NdtId && p.WmeId == repairRecord.WmeId && p.GrooveType == weldInfo.GrooveType && p.TestStandardId == testMethod.Ndt_TestStandardId); if (entrustRecord != null) { reworkMethod.EntrustCode = string.Format("{0}_{1}_{2}", reworkMethod.EntrustData.Value.ToString("yyyy-MM-dd"), reworkMethod.NdtCode, string.Format("{0:D3}", entrustRecord.EntrustNo)); reworkMethod.EntrustId = entrustRecord.Id; } else { var entrustNo = Funs.DB.PV_EntrustRecord.Count(p => p.EntrustData == reworkMethod.EntrustData && p.NdtId == reworkMethod.NdtId) + 1; reworkMethod.EntrustCode = string.Format("{0}_{1}_{2}", reworkMethod.EntrustData.Value.ToString("yyyy-MM-dd"), reworkMethod.NdtCode, string.Format("{0:D3}", entrustNo)); //添加委托单信息 PV_EntrustRecord entrustModel = new PV_EntrustRecord(); entrustModel.Id = Guid.NewGuid().ToString(); entrustModel.ProjectId = repairRecord.ProjectId;//施工号ID entrustModel.EntrustData = reworkMethod.EntrustData;//委托日期 entrustModel.NdtId = reworkMethod.NdtId;//检测方法ID entrustModel.WmeId = repairRecord.WmeId;//焊接方法ID entrustModel.GrooveType = weldInfo.GrooveType;//坡口形式ID entrustModel.TestStandardId = testMethod.Ndt_TestStandardId;//检测标准ID entrustModel.EntrustType = 2;//1:焊缝委托单 2:返修焊口委托单 entrustModel.EntrustNo = entrustNo; entrustModel.EntrustCode = reworkMethod.EntrustCode; entrustModel.CreateId = CurrUser.Account; entrustModel.CreateTime = DateTime.Now; Funs.DB.PV_EntrustRecord.InsertOnSubmit(entrustModel); reworkMethod.EntrustId = entrustModel.Id; } //检测状态 reworkMethod.DetectionStatus = 1; } else { //检测状态 reworkMethod.DetectionStatus = null; //委托时间 reworkMethod.EntrustData = null; //是否委托 reworkMethod.EntrustStatus = null; //委托单号主键 reworkMethod.EntrustId = string.Empty; //委托单号 reworkMethod.EntrustCode = string.Empty; //委托人 reworkMethod.EntrustPeople = string.Empty; } reworkMethod.CreateId = CurrUser.Account; reworkMethod.CreateTime = DateTime.Now; Funs.DB.SubmitChanges(); } #region 注释 ////修改键值集合 //Dictionary> modifiedDict = Grid2.GetModifiedDict(); //for (int i = 0; i < Grid2.Rows.Count; i++) //{ // var reworkMethod = reworkMethods.FirstOrDefault(p => p.ReworkId == Grid2.DataKeys[i][0].ToString()); // if (reworkMethod == null) continue; // if (reworkMethod.DetectionStatus == 2 || reworkMethod.DetectionStatus == 3 || reworkMethod.DetectionStatus == 4) continue; // //筛选当前检测方法 // var testMethod = testMethods.FirstOrDefault(p => p.Ndt_Id == reworkMethod.NdtId); // if (modifiedDict.ContainsKey(i)) // { // if (modifiedDict[i].ContainsKey("EntrustStatus")) // { // reworkMethod.EntrustStatus = bool.Parse(modifiedDict[i]["EntrustStatus"].ToString()) ? 1 : 0; // } // else // { // reworkMethod.EntrustStatus = 0; // } // } // if (reworkMethod.EntrustStatus == 1) // { // if (modifiedDict.ContainsKey(i)) // { // //测时机主键 // reworkMethod.DetectionTimeId = modifiedDict[i].ContainsKey("DetectionTimeId") ? modifiedDict[i]["DetectionTimeId"].ToString() : reworkMethod.DetectionTimeId; // //委托人 // reworkMethod.EntrustPeople = modifiedDict[i].ContainsKey("EntrustPeople") ? modifiedDict[i]["EntrustPeople"].ToString() : reworkMethod.EntrustPeople; // //委托时间 // if (reworkMethod.EntrustData == null) // { // reworkMethod.EntrustData = modifiedDict[i].ContainsKey("EntrustData") ? DateTime.Parse(modifiedDict[i]["EntrustData"].ToString()) : DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); // } // } // else // { // //委托人 // reworkMethod.EntrustPeople = string.IsNullOrEmpty(reworkMethod.EntrustPeople) ? CurrUser.UserId : reworkMethod.EntrustPeople; // //委托时间 // reworkMethod.EntrustData = reworkMethod.EntrustData == null ? DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")) : reworkMethod.EntrustData; // } // //判断委托单是否生成 // var entrustRecord = Funs.DB.PV_EntrustRecord.FirstOrDefault(p => p.ProjectId == repairRecord.ProjectId && p.EntrustData == reworkMethod.EntrustData && p.NdtId == reworkMethod.NdtId && p.WmeId == repairRecord.WmeId && p.GrooveType == weldInfo.GrooveType && p.TestStandardId == testMethod.Ndt_TestStandardId); // if (entrustRecord != null) // { // reworkMethod.EntrustCode = string.Format("{0}_{1}_{2}", reworkMethod.EntrustData.Value.ToString("yyyy-MM-dd"), reworkMethod.NdtCode, string.Format("{0:D3}", entrustRecord.EntrustNo)); // reworkMethod.EntrustId = entrustRecord.Id; // } // else // { // var entrustNo = Funs.DB.PV_EntrustRecord.Count(p => p.EntrustData == reworkMethod.EntrustData && p.NdtId == reworkMethod.NdtId) + 1; // reworkMethod.EntrustCode = string.Format("{0}_{1}_{2}", reworkMethod.EntrustData.Value.ToString("yyyy-MM-dd"), reworkMethod.NdtCode, string.Format("{0:D3}", entrustNo)); // //添加委托单信息 // PV_EntrustRecord entrustModel = new PV_EntrustRecord(); // entrustModel.Id = Guid.NewGuid().ToString(); // entrustModel.ProjectId = repairRecord.ProjectId;//施工号ID // entrustModel.EntrustData = reworkMethod.EntrustData;//委托日期 // entrustModel.NdtId = reworkMethod.NdtId;//检测方法ID // entrustModel.WmeId = repairRecord.WmeId;//焊接方法ID // entrustModel.GrooveType = weldInfo.GrooveType;//坡口形式ID // entrustModel.TestStandardId = testMethod.Ndt_TestStandardId;//检测标准ID // entrustModel.EntrustType = 2;//1:焊缝委托单 2:返修焊口委托单 // entrustModel.EntrustNo = entrustNo; // entrustModel.EntrustCode = reworkMethod.EntrustCode; // entrustModel.CreateId = CurrUser.Account; // entrustModel.CreateTime = DateTime.Now; // Funs.DB.PV_EntrustRecord.InsertOnSubmit(entrustModel); // reworkMethod.EntrustId = entrustModel.Id; // } // //检测状态 // reworkMethod.DetectionStatus = 1; // } // else // { // //检测状态 // reworkMethod.DetectionStatus = null; // //委托时间 // reworkMethod.EntrustData = null; // //是否委托 // reworkMethod.EntrustStatus = null; // //委托单号主键 // reworkMethod.EntrustId = string.Empty; // //委托单号 // reworkMethod.EntrustCode = string.Empty; // //委托人 // reworkMethod.EntrustPeople = string.Empty; // } // reworkMethod.CreateId = CurrUser.Account; // reworkMethod.CreateTime = DateTime.Now; // Funs.DB.SubmitChanges(); //} #endregion BindGrid1(repairRecord.RepairItemRecordId); 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 (Grid2.SelectedRowIndexArray.Length == 0) { Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning); return; } int row = Grid2.SelectedRowIndexArray[0]; var reworkMethod = Funs.DB.PV_ReworkManagementMethod.FirstOrDefault(p => p.ReworkId == Grid2.DataKeys[row][0].ToString()); if (reworkMethod != null) { if (reworkMethod.DetectionStatus != 1) { Alert.ShowInTop("非待检测状态不能取消委托!", MessageBoxIcon.Warning); return; } //检测状态 reworkMethod.DetectionStatus = null; //委托时间 reworkMethod.EntrustData = null; //是否委托 reworkMethod.EntrustStatus = null; //委托单号主键 reworkMethod.EntrustId = string.Empty; //委托单号 reworkMethod.EntrustCode = string.Empty; //委托人 reworkMethod.EntrustPeople = string.Empty; Funs.DB.SubmitChanges(); } BindGrid1(reworkMethod.RepairItemRecordId); ShowNotify("操作成功!", MessageBoxIcon.Success); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); } /// /// 行加载 ///