ZHJA_HJGL/HJGL_ZH/FineUIPro.Web/YLRQ/EntrustedManagement/ReworkConfirmation.aspx.cs

493 lines
25 KiB
C#

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
/// <summary>
/// 绑定项目
/// </summary>
public void BridProjectGrid()
{
GridProject.DataSource = BLL.Base_ProjectService.GetYlrqProjectListByUserId(this.CurrUser.UserId, "2");
GridProject.DataBind();
drpProject.Value = this.CurrUser.LoginProjectId;
}
/// <summary>
/// 绑定数据
/// </summary>
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<SqlParameter> listStr = new List<SqlParameter>();
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();
}
/// <summary>
/// 绑定数据
/// </summary>
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<SqlParameter> listStr = new List<SqlParameter>();
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;
}
}
}
/// <summary>
/// 施工号下拉框
/// </summary>
protected void drpProject_TextChanged(object sender, EventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 页索引改变事件
/// </summary>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
/// 排序
/// </summary>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
BindGrid();
}
/// <summary>
/// 分页选择下拉改变事件
/// </summary>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
#endregion
#region
/// <summary>
/// 点击行事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowClick(object sender, GridRowClickEventArgs e)
{
if (!string.IsNullOrEmpty(this.Grid1.SelectedRowID))
{
BindGrid1(this.Grid1.SelectedRowID);
}
}
/// <summary>
/// 提交
/// </summary>
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<string>("status");
JObject values = mergedRow.Value<JObject>("values");
int i = mergedRow.Value<int>("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<string>("EntrustStatus")))
{
reworkMethod.EntrustStatus = values.Value<int>("EntrustStatus");
}
else
{
reworkMethod.EntrustStatus = 0;
}
if (reworkMethod.EntrustStatus == 1)
{
//检测时机主键
reworkMethod.DetectionTimeId = !string.IsNullOrWhiteSpace(values.Value<string>("DetectionTimeId")) ? values.Value<string>("DetectionTimeId") : reworkMethod.DetectionTimeId;
//委托人
reworkMethod.EntrustPeople = !string.IsNullOrWhiteSpace(values.Value<string>("EntrustPeople")) ? values.Value<string>("EntrustPeople") : (string.IsNullOrWhiteSpace(reworkMethod.EntrustPeople) ? CurrUser.UserId : reworkMethod.EntrustPeople);
//委托时间
reworkMethod.EntrustData = !string.IsNullOrWhiteSpace(values.Value<string>("EntrustData")) ? values.Value<DateTime>("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<int, Dictionary<string, object>> 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());
}
/// <summary>
/// 取消委托
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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());
}
/// <summary>
/// 行加载
/// </summary
protected void Grid2_RowDataBound(object sender, GridRowEventArgs e)
{
DataRowView row = e.DataItem as DataRowView;
var detectionStatus = Grid2.DataKeys[e.RowIndex][1].ToString();
RenderCheckField EntrustStatus = (RenderCheckField)Grid2.FindColumn("EntrustStatus");
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
}
}