From b329d813e4d1e5ddf435e471a0e2fd48d4fbf586 Mon Sep 17 00:00:00 2001 From: jackchenyang <874821510@qq.com> Date: Sun, 12 May 2024 12:05:01 +0800 Subject: [PATCH] 1112 --- HJGL/.vs/HJGL/v17/.suo | Bin 829952 -> 961024 bytes HJGL/BLL/BLL.csproj | 1 + .../PMI/PMIDelegation_Service.cs | 61 ++++ HJGL/DataBase/版本日志/BSFDB_2024-05-10.sql | 34 +- .../App_GlobalResources/Lan.Designer.cs | 45 +++ .../App_GlobalResources/Lan.resx | 15 + HJGL/FineUIPro.Web/FineUIPro.Web.csproj | 9 + .../WeldingProcess/PMI/PMIDelegation.aspx | 22 +- .../WeldingProcess/PMI/PMIDelegation.aspx.cs | 6 +- .../PMI/PMIDelegation.aspx.designer.cs | 18 ++ .../WeldingProcess/PMI/PMIDelegationEdit.aspx | 171 +++++++++- .../PMI/PMIDelegationEdit.aspx.cs | 290 ++++++++++++++++- .../PMI/PMIDelegationEdit.aspx.designer.cs | 225 +++++++++++++ .../WeldingProcess/PMI/PMISelectList.aspx | 100 ++++++ .../WeldingProcess/PMI/PMISelectList.aspx.cs | 209 ++++++++++++ .../PMI/PMISelectList.aspx.designer.cs | 143 ++++++++ HJGL/Model/Model.cs | 305 ++++++++++++++++++ 17 files changed, 1638 insertions(+), 16 deletions(-) create mode 100644 HJGL/BLL/WeldingProcess/PMI/PMIDelegation_Service.cs create mode 100644 HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx create mode 100644 HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.cs create mode 100644 HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.designer.cs diff --git a/HJGL/.vs/HJGL/v17/.suo b/HJGL/.vs/HJGL/v17/.suo index 17c6f2c2ed4a716ecab2680a3f307a32ee55cf6b..f805997a465e03783e2fb49588b5600377c6d6b7 100644 GIT binary patch delta 97378 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 delta 57006 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 bH|f@}=Ei4+HrKxyOgA61jOza?Wyt>ms$#%c diff --git a/HJGL/BLL/BLL.csproj b/HJGL/BLL/BLL.csproj index 87fc54c..e26ba02 100644 --- a/HJGL/BLL/BLL.csproj +++ b/HJGL/BLL/BLL.csproj @@ -163,6 +163,7 @@ + diff --git a/HJGL/BLL/WeldingProcess/PMI/PMIDelegation_Service.cs b/HJGL/BLL/WeldingProcess/PMI/PMIDelegation_Service.cs new file mode 100644 index 0000000..1ce0380 --- /dev/null +++ b/HJGL/BLL/WeldingProcess/PMI/PMIDelegation_Service.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BLL +{ + public class PMIDelegation_Service + { + /// + /// 查找后返回集合增加到列表 + /// + /// + /// + public static List GetPMI_DelegationAddItem(string hdItemsString) + { + var jointInfos = from x in Funs.DB.View_Pipeline_WeldJoint select x; + List returnViewMatch = new List(); + if (!string.IsNullOrEmpty(hdItemsString)) + { + List jotIds = Funs.GetStrListByStr(hdItemsString, '|'); + foreach (var jotItem in jotIds) + { + string[] strs = jotItem.Split(','); + var jotInfo = jointInfos.FirstOrDefault(x => x.WeldJointId == strs[0]); + Model.View_PMI_DelegationDetails newItem = new Model.View_PMI_DelegationDetails(); + newItem.Id = SQLHelper.GetNewID(typeof(Model.View_PMI_DelegationDetails)); + newItem.WeldJointId = jotInfo.WeldJointId; + newItem.WeldJointCode = jotInfo.WeldJointCode; + newItem.PipelineCode = jotInfo.PipelineCode; + newItem.Specification = jotInfo.Specification; + newItem.MaterialCode = jotInfo.Material1Code; + newItem.QualityNo = string.Empty; + newItem.Acceptance = string.Empty; + newItem.Status = 0; + newItem.PMIId = string.Empty; + newItem.WorkAreaId = jotInfo.WorkAreaId; + newItem.CreatedTime = DateTime.Now; + newItem.DelegationDate= DateTime.Now; + newItem.DelegationNo = string.Empty; + returnViewMatch.Add(newItem); + } + } + return returnViewMatch; + } + /// + /// 返回视图列表集合 + /// + + public static List GetPMI_DelegationItem(string projectId, string pmiId) + { + List returnViewMatch = (from x in Funs.DB.View_PMI_DelegationDetails + where x.ProjectId == projectId && x.PMIId == pmiId + select x).ToList(); + return returnViewMatch; + } + + + } +} diff --git a/HJGL/DataBase/版本日志/BSFDB_2024-05-10.sql b/HJGL/DataBase/版本日志/BSFDB_2024-05-10.sql index 8af3c83..f6c4b0e 100644 --- a/HJGL/DataBase/版本日志/BSFDB_2024-05-10.sql +++ b/HJGL/DataBase/版本日志/BSFDB_2024-05-10.sql @@ -31,4 +31,36 @@ update Pipeline_WeldJoint set isPMI=0 -- PMIίв˵ insert into Sys_Menu values('A6FB44C3-0920-4F77-862F-D814FD5E5D23','PMI','PMI detection management','',21,0,3,NUll,1) insert into Sys_Menu values(NEWID(),'PMIί','PMI delegation','/WeldingProcess/PMI/PMIDelegation.aspx',0,'A6FB44C3-0920-4F77-862F-D814FD5E5D23',3,NULL,1) -insert into Sys_Menu values(NEWID(),'PMI¼','PMI detection entry','/WeldingProcess/PMI/PMIDetectionEntry.aspx',0,'A6FB44C3-0920-4F77-862F-D814FD5E5D23',3,NULL,1) \ No newline at end of file +insert into Sys_Menu values(NEWID(),'PMI¼','PMI detection entry','/WeldingProcess/PMI/PMIDetectionEntry.aspx',0,'A6FB44C3-0920-4F77-862F-D814FD5E5D23',3,NULL,1) + + + +CREATE VIEW [dbo].[View_PMI_DelegationDetails] +AS +/*******Ӳίϸ***********/ +SELECT +B.PMIId, +B.JointId, +B.QualityNo, +B.Acceptance, +B.CreatedTime, +B.status, +Pipeline.PipelineCode, +WeldJoint.WeldJointCode, +WeldJoint.Specification, +WeldJoint.Remark, +Pipeline.SingleNumber, +(CASE WHEN WeldJoint.CoverWelderCode IS NOT NULL AND WeldJoint.BackingWelderCode IS NOT NULL + THEN WeldJoint.CoverWelderCode + '/' + WeldJoint.BackingWelderCode + ELSE (ISNULL(WeldJoint.CoverWelderCode,'') + ISNULL(WeldJoint.BackingWelderCode,'')) END) AS WelderCode, -- + (CASE WHEN WeldJoint.Material1Code IS NOT NULL AND WeldJoint.Material2Code IS NOT NULL + THEN WeldJoint.Material1Code + '/' + WeldJoint.Material2Code + ELSE (ISNULL(WeldJoint.Material1Code,'') + ISNULL(WeldJoint.Material2Code,'')) END) AS MaterialCode -- +FROM PMI_Delegation AS A INNER JOIN +PMI_DelegationDetails AS B ON A.Id=B.PMIId +LEFT JOIN View_Pipeline_WeldJoint AS WeldJoint ON WeldJoint.WeldJointId=B.JointId +LEFT JOIN Pipeline_Pipeline AS Pipeline ON Pipeline.PipelineId=WeldJoint.PipelineId + +GO + + diff --git a/HJGL/FineUIPro.Web/App_GlobalResources/Lan.Designer.cs b/HJGL/FineUIPro.Web/App_GlobalResources/Lan.Designer.cs index 8a3af65..6fa9864 100644 --- a/HJGL/FineUIPro.Web/App_GlobalResources/Lan.Designer.cs +++ b/HJGL/FineUIPro.Web/App_GlobalResources/Lan.Designer.cs @@ -69,6 +69,15 @@ namespace Resources { } } + /// + /// 查找类似 制造/验收标准 的本地化字符串。 + /// + internal static string Acceptance { + get { + return ResourceManager.GetString("Acceptance", resourceCulture); + } + } + /// /// 查找类似 账号 的本地化字符串。 /// @@ -3678,6 +3687,33 @@ namespace Resources { } } + /// + /// 查找类似 PMI委托单号已存在 的本地化字符串。 + /// + internal static string PMICodeExists { + get { + return ResourceManager.GetString("PMICodeExists", resourceCulture); + } + } + + /// + /// 查找类似 PMI处理委托 的本地化字符串。 + /// + internal static string PMIDelegationTrust { + get { + return ResourceManager.GetString("PMIDelegationTrust", resourceCulture); + } + } + + /// + /// 查找类似 PMI委托单保存失败 的本地化字符串。 + /// + internal static string PMIError { + get { + return ResourceManager.GetString("PMIError", resourceCulture); + } + } + /// /// 查找类似 点口编号 的本地化字符串。 /// @@ -4146,6 +4182,15 @@ namespace Resources { } } + /// + /// 查找类似 质量证明文件编号 的本地化字符串。 + /// + internal static string QualityNo { + get { + return ResourceManager.GetString("QualityNo", resourceCulture); + } + } + /// /// 查找类似 返修原因 的本地化字符串。 /// diff --git a/HJGL/FineUIPro.Web/App_GlobalResources/Lan.resx b/HJGL/FineUIPro.Web/App_GlobalResources/Lan.resx index 26be42b..0a894d5 100644 --- a/HJGL/FineUIPro.Web/App_GlobalResources/Lan.resx +++ b/HJGL/FineUIPro.Web/App_GlobalResources/Lan.resx @@ -2115,4 +2115,19 @@ 检测标准 + + 制造/验收标准 + + + 质量证明文件编号 + + + PMI处理委托 + + + PMI委托单号已存在 + + + PMI委托单保存失败 + \ No newline at end of file diff --git a/HJGL/FineUIPro.Web/FineUIPro.Web.csproj b/HJGL/FineUIPro.Web/FineUIPro.Web.csproj index 50dbbd6..fc0f2db 100644 --- a/HJGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/HJGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -397,6 +397,7 @@ + @@ -4461,6 +4462,13 @@ PMIDelegationEdit.aspx + + PMISelectList.aspx + ASPXCodeBehind + + + PMISelectList.aspx + AItemEndCheck.aspx ASPXCodeBehind @@ -4887,6 +4895,7 @@ GlobalResourceProxyGenerator Lan.Designer.cs + Designer diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx index ef73095..fc21ad8 100644 --- a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx @@ -104,9 +104,9 @@ @@ -139,10 +139,24 @@ DataField="MaterialCode" SortField="MaterialCode" FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="120px"> - + + + + + + + + + + + + diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.cs b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.cs index 9df6bfa..2df785a 100644 --- a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.cs +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.cs @@ -144,12 +144,10 @@ namespace FineUIPro.Web.WeldingProcess.PMI if (result != null) { this.PMIDelegationId = result.Id; - strSql = @"SELECT * " - + @" FROM dbo.View_HotProess_TrustItem AS Trust" - + @" WHERE Trust.ProjectId= @ProjectId AND Trust.HotProessTrustId=@HotProessTrustId "; + strSql = @"SELECT *FROM [View_PMI_DelegationDetails] WHERE ProjectId= @ProjectId AND PMIID=@PMIDelegationId "; listStr.Add(new SqlParameter("@ProjectId", result != null ? result.ProjectId : this.CurrUser.LoginProjectId)); - listStr.Add(new SqlParameter("@HotProessTrustId", this.PMIDelegationId)); + listStr.Add(new SqlParameter("@PMIDelegationId", this.PMIDelegationId)); if (!string.IsNullOrEmpty(this.txtIsoNo.Text.Trim())) { diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.designer.cs b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.designer.cs index 7b36fc3..2e75263 100644 --- a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.designer.cs +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegation.aspx.designer.cs @@ -257,6 +257,24 @@ namespace FineUIPro.Web.WeldingProcess.PMI /// protected global::FineUIPro.ToolbarFill ToolbarFill2; + /// + /// tbxEditorQualityNo 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox tbxEditorQualityNo; + + /// + /// txtEditorAcceptance 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtEditorAcceptance; + /// /// ToolbarSeparator1 控件。 /// diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx index df49dbd..a31a5ac 100644 --- a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx @@ -1,16 +1,177 @@ <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PMIDelegationEdit.aspx.cs" Inherits="FineUIPro.Web.WeldingProcess.PMI.PMIDelegationEdit" %> - + - - + 编辑热处理委托及数据录入 + +
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.cs b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.cs index 5a0e2d7..844367e 100644 --- a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.cs +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.cs @@ -1,5 +1,9 @@ -using System; +using BLL; +using Model; +using Newtonsoft.Json.Linq; +using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Web; using System.Web.UI; @@ -7,11 +11,293 @@ using System.Web.UI.WebControls; namespace FineUIPro.Web.WeldingProcess.PMI { - public partial class PMIDelegationEdit : System.Web.UI.Page + public partial class PMIDelegationEdit : PageBase { + #region 定义项 + /// + /// PMI委托主键 + /// + public string PMIDelegationId + { + get + { + return (string)ViewState["PMIDelegationId"]; + } + set + { + ViewState["PMIDelegationId"] = value; + } + } + + + #endregion + + #region 加载页面 + /// + /// 加载页面 + /// + /// + /// protected void Page_Load(object sender, EventArgs e) { + if (!IsPostBack) + { + this.PMIDelegationId = Request.Params["PMIDelegationId"]; + BLL.Project_InstallationService.InitInstallationDropDownList(this.drpInstallationId, true, this.CurrUser.LoginProjectId, Resources.Lan.PleaseSelect);//装置 + BLL.Base_UnitService.InitUnitDropDownList(this.drpUnitId, true, BLL.Const.UnitType_5, Resources.Lan.PleaseSelect);//单位 + + this.PageInfoLoad(); ///加载页面 + this.txtDetectionMethod.Text = "PMI光谱分析"; + this.txtDetectionMethod.Enabled = false; + //this.BindGrid(result); ////初始化页面 + this.txtDelegationDate.Text = DateTime.Now.ToString("yyyy-MM-dd"); + } + } + + #endregion + + #region 加载页面输入提交信息 + /// + /// 加载页面输入提交信息 + /// + private void PageInfoLoad() + { + var trust = Funs.DB.PMI_Delegation.FirstOrDefault(t=>t.Id==this.PMIDelegationId); + if (trust != null) + { + //this.ProjectId = trust.ProjectId; + this.txtDelegationNo.Text = trust.DelegationNo; + if (trust.DelegationDate.HasValue) + { + this.txtDelegationDate.Text = string.Format("{0:yyyy-MM-dd}", trust.DelegationDate); + } + if (!string.IsNullOrEmpty(trust.InstallationId)) + { + this.drpInstallationId.SelectedValue = trust.InstallationId; + } + if (!string.IsNullOrEmpty(trust.UnitId)) + { + this.drpUnitId.SelectedValue = trust.UnitId; + } + this.txtDetectionMethod.Text = "PMI光谱分析"; + this.txtDetectionStandard.Text = trust.DetectionStandard; + if (!string.IsNullOrEmpty(trust.Tabler)) + { + this.txtTabler.Text = BLL.Sys_UserService.GetUserNameByUserId(trust.Tabler); + } + this.txtRemark.Text = trust.Remark; + } + else + { + this.txtTabler.Text = this.CurrUser.UserName; + this.SimpleForm1.Reset(); //重置所有字段 + } + } + #endregion + + #region 数据绑定 + + /// + /// 数据绑定 + /// + private void BindGrid(List lists) + { + DataTable tb = this.LINQToDataTable(lists); + Grid1.RecordCount = tb.Rows.Count; + tb = GetFilteredTable(Grid1.FilteredData, tb); + var table = this.GetPagedDataTable(Grid1, tb); + + Grid1.DataSource = table; + Grid1.DataBind(); + } + #endregion + + #region 查找需要热处理的焊口 + /// + /// 查找需要PMI处理的焊口 + /// + /// + /// + protected void ckSelect_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(this.drpUnitId.SelectedValue) && this.drpUnitId.SelectedValue != BLL.Const._Null) + { + string weldJointIds = string.Empty; + for (int i = 0; i < Grid1.Rows.Count; i++) + { + string jotId = Grid1.DataKeys[i][0].ToString(); + weldJointIds += jotId + "|"; + } + if (weldJointIds != string.Empty) + { + weldJointIds = weldJointIds.Substring(0, weldJointIds.Length - 1); + } + + //url查询 + string window = String.Format($"PMISelectList.aspx?unitId={this.drpUnitId.SelectedValue}&projectId={this.CurrUser.LoginProjectId}&weldJointIds={weldJointIds}", "编辑 - "); + PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hdItemsString.ClientID) + Window1.GetShowReference(window)); + } + else + { + Alert.ShowInTop(Resources.Lan.PleaseSelectCompany, MessageBoxIcon.Warning); + } + } + #endregion + + #region Grid 关闭弹出窗口事件 + /// + /// 关闭弹出窗口 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + string weldJointIds = string.Empty; + if (!string.IsNullOrEmpty(hdItemsString.Text)) + { + weldJointIds = hdItemsString.Text.Substring(0, hdItemsString.Text.LastIndexOf('|')); + + List lists = BLL.PMIDelegation_Service.GetPMI_DelegationAddItem(weldJointIds); + this.BindGrid(lists); + //获取单位 + string unitCode = Funs.DB.Base_Unit.FirstOrDefault(t => t.UnitId == drpUnitId.SelectedValue)?.UnitCode; + //获取区域code + var workdAreaIdList = lists.Select(t => t.WorkAreaId).ToList(); + + var workAreaCode = Funs.DB.Project_WorkArea.AsQueryable().Where(t => workdAreaIdList.Contains(t.WorkAreaId)).Distinct().FirstOrDefault()?.WorkAreaCode; + + this.txtDelegationNo.Text = $"PMI-{unitCode}-{workAreaCode}-PI-"; + } + } + #endregion + + #region PMI委托 提交事件 + /// + /// 编辑PMI委托 + /// + /// + /// + protected void btnSave_Click(object sender, EventArgs e) + { + if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.PMIDelegationId, Const.BtnSave)) + { + var isExists = Funs.DB.PMI_Delegation.Any(t => t.DelegationNo == this.txtDelegationNo.Text.Trim() && t.ProjectId == this.CurrUser.LoginProjectId); + if (isExists) + { + ShowNotify(Resources.Lan.PMICodeExists, MessageBoxIcon.Warning); + return; + } + try + { + var pmiModel = new Model.PMI_Delegation(); + pmiModel.Id = SQLHelper.GetNewID(typeof(Model.PMI_Delegation)); + pmiModel.DelegationNo = txtDelegationNo.Text.Trim(); + pmiModel.DelegationDate = !string.IsNullOrEmpty(txtDelegationDate.Text.Trim()) ? DateTime.Parse(txtDelegationDate.Text.Trim()) : DateTime.Now; + pmiModel.InstallationId = drpInstallationId.SelectedValue; + pmiModel.UnitId = drpUnitId.SelectedValue; + pmiModel.ProjectId = this.CurrUser.LoginProjectId; + pmiModel.Remark = txtRemark.Text.Trim(); + pmiModel.DetectionStandard=txtDetectionStandard.Text.Trim(); + pmiModel.CreatedTime = DateTime.Now; + pmiModel.Tabler = this.CurrUser.UserId; + this.PMIDelegationId = pmiModel.Id; + Funs.DB.PMI_Delegation.InsertOnSubmit(pmiModel); + //先删除明细表 + var deleteEntity= Funs.DB.PMI_DelegationDetails.Where(t => t.PMIId == pmiModel.Id).ToList(); + if (deleteEntity.Any()) + { + Funs.DB.PMI_DelegationDetails.DeleteAllOnSubmit(deleteEntity); + } + //再插入明细表 + this.CollectGridJointInfo(); + Funs.DB.SubmitChanges(); + } + catch (Exception ex) + { + BLL.ErrLogInfo.WriteLog(ex); + ShowNotify(Resources.Lan.PMIError, MessageBoxIcon.Error); + return; + } + + ShowNotify(Resources.Lan.SaveSuccessfully, MessageBoxIcon.Success); + PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(this.PMIDelegationId) + + ActiveWindow.GetHidePostBackReference()); + } + else + { + ShowNotify(Resources.Lan.NoPrivilegePrompt, MessageBoxIcon.Warning); + return; + } + } + #endregion + + #region 收集Grid页面信息,提交明细 + /// + /// 收集Grid页面信息,提交明细 + /// + /// + private void CollectGridJointInfo() + { + var listData = new List(); + JArray mergedData = Grid1.GetMergedData(); + foreach (JObject mergedRow in mergedData) + { + JObject values = mergedRow.Value("values"); + Model.PMI_DelegationDetails newTrustItem = new Model.PMI_DelegationDetails(); + newTrustItem.Id = SQLHelper.GetNewID(typeof(PMI_DelegationDetails)); + newTrustItem.JointId = values.Value("WeldJointId").ToString(); + newTrustItem.Acceptance = values.Value("Acceptance").ToString(); + newTrustItem.QualityNo = values.Value("QualityNo").ToString(); + newTrustItem.Status = 0; + newTrustItem.CreatedTime = DateTime.Now; + newTrustItem.PMIId = this.PMIDelegationId; + listData.Add(newTrustItem); + } + Funs.DB.PMI_DelegationDetails.InsertAllOnSubmit(listData); } + #endregion + + #region 右键删除事件 + /// + /// 右键删除事件 + /// + /// + /// + protected void btnMenuDelete_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(this.hdItemsString.Text)) + { + this.hdItemsString.Text = this.hdItemsString.Text.Substring(0, this.hdItemsString.Text.LastIndexOf('|')); + } + var trust = Funs.DB.PMI_Delegation.FirstOrDefault(t=>t.Id==this.PMIDelegationId); + if (Grid1.SelectedRowIndexArray.Length > 0) + { + List GetHotProessTrustItem = new List(); + if (!string.IsNullOrEmpty(this.hdItemsString.Text)) + { + GetHotProessTrustItem = BLL.PMIDelegation_Service.GetPMI_DelegationAddItem(this.hdItemsString.Text); + } + else if (string.IsNullOrEmpty(this.hdItemsString.Text) && this.PMIDelegationId != null) + { + GetHotProessTrustItem = BLL.PMIDelegation_Service.GetPMI_DelegationItem(this.CurrUser.LoginProjectId, this.PMIDelegationId); + } + foreach (int rowIndex in Grid1.SelectedRowIndexArray) + { + string rowID = Grid1.DataKeys[rowIndex][0].ToString(); + var item = GetHotProessTrustItem.FirstOrDefault(x => x.WeldJointId == rowID); + if (item != null) + { + if (string.IsNullOrEmpty(this.PMIDelegationId)) //新增记录可直接删除 + { + GetHotProessTrustItem.Remove(item); + } + } + } + BindGrid(GetHotProessTrustItem); + ShowNotify(Resources.Lan.DeletedSuccessfully, MessageBoxIcon.Success); + } + } + #endregion } } \ No newline at end of file diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.designer.cs b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.designer.cs index e801022..de5ebfd 100644 --- a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.designer.cs +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMIDelegationEdit.aspx.designer.cs @@ -22,5 +22,230 @@ namespace FineUIPro.Web.WeldingProcess.PMI /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelCenterRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// hdItemsString 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdItemsString; + + /// + /// ToolbarFill1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill1; + + /// + /// btnSave 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSave; + + /// + /// SimpleForm1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Form SimpleForm1; + + /// + /// txtDelegationNo 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtDelegationNo; + + /// + /// txtDelegationDate 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DatePicker txtDelegationDate; + + /// + /// drpInstallationId 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpInstallationId; + + /// + /// drpUnitId 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpUnitId; + + /// + /// txtDetectionMethod 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtDetectionMethod; + + /// + /// txtDetectionStandard 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtDetectionStandard; + + /// + /// txtTabler 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtTabler; + + /// + /// txtRemark 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtRemark; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// btnDelete 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnDelete; + + /// + /// ckSelect 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button ckSelect; + + /// + /// tbxEditorQualityNo 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox tbxEditorQualityNo; + + /// + /// txtEditorAcceptance 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtEditorAcceptance; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + + /// + /// Menu1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Menu Menu1; + + /// + /// btnMenuDelete 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.MenuButton btnMenuDelete; } } diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx new file mode 100644 index 0000000..1e4efae --- /dev/null +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx @@ -0,0 +1,100 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PMISelectList.aspx.cs" Inherits="FineUIPro.Web.WeldingProcess.PMI.PMISelectList" %> + + + + + + 查找管线焊口信息 + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.cs b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.cs new file mode 100644 index 0000000..a2e1580 --- /dev/null +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.cs @@ -0,0 +1,209 @@ +using BLL; +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace FineUIPro.Web.WeldingProcess.PMI +{ + public partial class PMISelectList : PageBase + { + string UnitId = string.Empty; + string ProjectId = string.Empty; + string PMIId = string.Empty; + string weldJointIds=string.Empty; + #region 加载页面 + /// + /// 加载页面 + /// + /// + /// + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.UnitId = Request.Params["unitId"] ??""; + this.ProjectId = this.CurrUser.LoginProjectId; + this.PMIId = Request.Params["PMIId"]??""; + this.weldJointIds = Request.Params["weldJointIds"] ?? ""; + this.InitTreeMenu();//加载树 + this.BindGrid(); + } + } + #endregion + + #region 加载管线信息 + /// + /// 加载树 + /// + private void InitTreeMenu() + { + this.tvControlItem.Nodes.Clear(); + TreeNode rootNode = new TreeNode(); + rootNode.Text = Resources.Lan.PipelineCode; + rootNode.NodeID = "0"; + rootNode.ToolTip = Resources.Lan.SeachTip; + rootNode.Expanded = true; + this.tvControlItem.Nodes.Add(rootNode); + + //排除已经委托过的 + var listData= (from a in Funs.DB.PMI_Delegation.AsQueryable() join + b in Funs.DB.PMI_DelegationDetails.AsQueryable() on + a.Id equals b.PMIId + select b.JointId + ).Distinct().ToList(); + + //查询带有PMI处理的管线数据 + var iso = from x in Funs.DB.View_Pipeline_WeldJoint + where x.ProjectId == this.ProjectId && x.IsPMI == true && x.UnitId == this.UnitId + select new { x.PipelineCode, x.PipelineId,x.WeldJointId }; //from x in Funs.DB.Pipeline_Pipeline where x.ProjectId == this.ProjectId && x.UnitId == this.UnitId select x; + + if (listData.Count > 0) + { + iso = iso.Where(e => !listData.Contains(e.WeldJointId)); + } + if (!string.IsNullOrEmpty(this.txtIsono.Text)) + { + iso = iso.Where(e => e.PipelineCode.Contains(this.txtIsono.Text.Trim())); + } + var isoList = iso.Select(x => new {x.PipelineId,x.PipelineCode }).OrderBy(x => x.PipelineCode).Distinct().ToList(); + if (isoList.Count > 0) + { + foreach (var q in isoList) + { + TreeNode newNode = new TreeNode(); + newNode.NodeID = q.PipelineId; + newNode.Text = q.PipelineCode; + newNode.EnableClickEvent = true; + rootNode.Nodes.Add(newNode); + } + } + } + #endregion + + #region 管线查询 + /// + /// 查询 + /// + /// + /// + protected void Tree_TextChanged(object sender, EventArgs e) + { + this.InitTreeMenu(); + } + protected void Tree2_TextChanged(object sender, EventArgs e) + { + this.BindGrid(); + } + + #endregion + + + #region 点击TreeView + /// + /// 点击TreeView + /// + /// + /// + protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) + { + this.BindGrid(); + } + #endregion + + #region 数据绑定 + /// + /// 数据绑定 + /// + private void BindGrid() + { + string sql = @"SELECT WeldJointId,ProjectId,PipelineId,WeldJointCode,WPQCode,DetectionType, + convert(int,dbo.Fun_GetParseInt(WeldJointCode)) AS ConvertJointNo, + dbo.Fun_GetParseString(WeldJointCode) AS PreJotNo, + PipingClassCode,PipeSegment,JointAttribute,PageNum, + ComponentsCode1,ComponentsCode2,Is_hjName,IsHotProessStr,Material1Code,Material2Code, + WeldTypeCode,Specification,HeartNo1,HeartNo2,Size,Dia,Thickness,GrooveTypeCode, + WeldingMethodCode,WeldSilkId,WeldMatCode,WeldingDate,WeldingDailyCode,DoneDin, + BackingWelderCode,CoverWelderCode,SystemNumber,TestPackageNo,Remark, + MaterialCode,WeldingDate, + (CASE WHEN IsCancel=1 THEN '是' ELSE '否' END) AS IsCancel,isPMI + FROM View_Pipeline_WeldJoint WHERE isPMI=1 "; + + List paramsList = new List(); + if (!string.IsNullOrEmpty(this.txtJointNo.Text)) + { + sql += @" and WeldJointCode=@WeldJointCode"; + paramsList.Add(new SqlParameter("@WeldJointCode", txtJointNo.Text.Trim())); + } + if (!string.IsNullOrEmpty(this.tvControlItem.SelectedNodeID)) + { + sql += @" and PipelineId=@PipelineId "; + paramsList.Add(new SqlParameter("@PipelineId", this.tvControlItem.SelectedNodeID)); + } + var dt = SQLHelper.GetDataTableRunText(sql, paramsList.ToArray()); + Grid1.DataSource = dt; + Grid1.DataBind(); + } + #endregion + + #region 排序 + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.BindGrid(); + } + #endregion + + #region 提交按钮 + /// + /// 提交按钮 + /// + /// + /// + protected void btnAccept_Click(object sender, EventArgs e) + { + string itemsString = ""; + string[] selectRowId = Grid1.SelectedRowIDArray; + int n = 0; + int j = 0; + int[] selections = new int[selectRowId.Count()]; + foreach (GridRow row in Grid1.Rows) + { + if (selectRowId.Contains(row.DataKeys[0])) + { + selections[n] = j; + n++; + } + j++; + } + var select = selections.Distinct(); + string jotIds = Request.Params["jotIds"]; + if (!string.IsNullOrEmpty(jotIds)) + { + string[] jots = jotIds.Split('|'); + foreach (string jotId in jots) + { + itemsString += jotId + "|"; + } + } + foreach (int i in select) + { + string rowID = Grid1.DataKeys[i][0].ToString(); + if (!itemsString.Contains(rowID)) + { + itemsString += rowID + "|"; + } + } + PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(itemsString) + + ActiveWindow.GetHidePostBackReference()); + } + #endregion + } +} \ No newline at end of file diff --git a/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.designer.cs b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.designer.cs new file mode 100644 index 0000000..067c153 --- /dev/null +++ b/HJGL/FineUIPro.Web/WeldingProcess/PMI/PMISelectList.aspx.designer.cs @@ -0,0 +1,143 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.WeldingProcess.PMI +{ + + + public partial class PMISelectList + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelLeftRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelLeftRegion; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// txtIsono 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtIsono; + + /// + /// tvControlItem 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Tree tvControlItem; + + /// + /// panelCenterRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// txtJointNo 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtJointNo; + + /// + /// ww 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Label ww; + + /// + /// ToolbarFill1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill1; + + /// + /// btnAccept 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnAccept; + } +} diff --git a/HJGL/Model/Model.cs b/HJGL/Model/Model.cs index 88e224c..c89fb8c 100644 --- a/HJGL/Model/Model.cs +++ b/HJGL/Model/Model.cs @@ -1070,6 +1070,14 @@ namespace Model } } + public System.Data.Linq.Table View_PMI_DelegationDetails + { + get + { + return this.GetTable(); + } + } + public System.Data.Linq.Table View_PTP_TestPackageAudit { get @@ -37258,6 +37266,8 @@ namespace Model private string _ProjectId; + private System.Nullable _IsPMI; + private string _PipelineCode; private string _PipelineId; @@ -37388,6 +37398,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="isPMI", Storage="_IsPMI", DbType="Bit")] + public System.Nullable IsPMI + { + get + { + return this._IsPMI; + } + set + { + if ((this._IsPMI != value)) + { + this._IsPMI = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PipelineCode", DbType="NVarChar(100)")] public string PipelineCode { @@ -40633,6 +40659,285 @@ namespace Model } } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_PMI_DelegationDetails")] + public partial class View_PMI_DelegationDetails + { + + private string _Id; + + private string _Acceptance; + + private System.Nullable _CreatedTime; + + private string _WeldJointId; + + private int _Status; + + private string _QualityNo; + + private string _PMIId; + + private string _ProjectId; + + private string _DelegationNo; + + private System.Nullable _DelegationDate; + + private string _WeldJointCode; + + private string _PipelineCode; + + private string _Specification; + + private string _MaterialCode; + + private string _WorkAreaId; + + public View_PMI_DelegationDetails() + { + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string Id + { + get + { + return this._Id; + } + set + { + if ((this._Id != value)) + { + this._Id = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Acceptance", DbType="NVarChar(255)")] + public string Acceptance + { + get + { + return this._Acceptance; + } + set + { + if ((this._Acceptance != value)) + { + this._Acceptance = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedTime", DbType="DateTime")] + public System.Nullable CreatedTime + { + get + { + return this._CreatedTime; + } + set + { + if ((this._CreatedTime != value)) + { + this._CreatedTime = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WeldJointId", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string WeldJointId + { + get + { + return this._WeldJointId; + } + set + { + if ((this._WeldJointId != value)) + { + this._WeldJointId = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="status", Storage="_Status", DbType="Int NOT NULL")] + public int Status + { + get + { + return this._Status; + } + set + { + if ((this._Status != value)) + { + this._Status = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_QualityNo", DbType="NVarChar(255)")] + public string QualityNo + { + get + { + return this._QualityNo; + } + set + { + if ((this._QualityNo != value)) + { + this._QualityNo = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PMIId", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string PMIId + { + get + { + return this._PMIId; + } + set + { + if ((this._PMIId != value)) + { + this._PMIId = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProjectId", DbType="NVarChar(50)")] + public string ProjectId + { + get + { + return this._ProjectId; + } + set + { + if ((this._ProjectId != value)) + { + this._ProjectId = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DelegationNo", DbType="NVarChar(50)")] + public string DelegationNo + { + get + { + return this._DelegationNo; + } + set + { + if ((this._DelegationNo != value)) + { + this._DelegationNo = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DelegationDate", DbType="DateTime")] + public System.Nullable DelegationDate + { + get + { + return this._DelegationDate; + } + set + { + if ((this._DelegationDate != value)) + { + this._DelegationDate = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WeldJointCode", DbType="NVarChar(50)")] + public string WeldJointCode + { + get + { + return this._WeldJointCode; + } + set + { + if ((this._WeldJointCode != value)) + { + this._WeldJointCode = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PipelineCode", DbType="NVarChar(100)")] + public string PipelineCode + { + get + { + return this._PipelineCode; + } + set + { + if ((this._PipelineCode != value)) + { + this._PipelineCode = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Specification", DbType="NVarChar(50)")] + public string Specification + { + get + { + return this._Specification; + } + set + { + if ((this._Specification != value)) + { + this._Specification = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MaterialCode", DbType="NVarChar(50)")] + public string MaterialCode + { + get + { + return this._MaterialCode; + } + set + { + if ((this._MaterialCode != value)) + { + this._MaterialCode = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaId", DbType="NVarChar(50)")] + public string WorkAreaId + { + get + { + return this._WorkAreaId; + } + set + { + if ((this._WorkAreaId != value)) + { + this._WorkAreaId = value; + } + } + } + } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_PTP_TestPackageAudit")] public partial class View_PTP_TestPackageAudit {