feat: 完善材料管理与焊接业务功能

This commit is contained in:
2026-08-06 15:33:11 +08:00
parent e418b60fdb
commit 1de898812e
49 changed files with 2566 additions and 555 deletions
@@ -70,6 +70,9 @@
<f:RenderField Width="90px" ColumnID="MaterialUnit" DataField="MaterialUnit" FieldType="String" HeaderText="单位"
HeaderTextAlign="Center" TextAlign="Left" SortField="MaterialUnit" >
</f:RenderField>
<f:RenderField Width="180px" ColumnID="DesignInstitute" DataField="DesignInstitute" FieldType="String" HeaderText="所属设计院"
HeaderTextAlign="Center" TextAlign="Left" SortField="DesignInstitute">
</f:RenderField>
<f:RenderField Width="260px" ColumnID="MaterialDef" DataField="MaterialDef" FieldType="String"
HeaderText="材料描述" HeaderTextAlign="Center" TextAlign="Left"
ExpandUnusedSpace="true">
@@ -55,13 +55,20 @@
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtMaterialUnit" runat="server" Label="单位"
LabelWidth="100px">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtDesignInstitute" runat="server" Label="所属设计院"
MaxLength="200" LabelWidth="100px">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea ID="txtMaterialDef" runat="server" Label="描述" MaxLength="300" LabelWidth="100px">
@@ -31,6 +31,7 @@ namespace FineUIPro.Web.HJGL.BaseInfo
txtMaterialSpec.Text = lib.MaterialSpec;
txtMaterialDef.Text = lib.MaterialDef;
txtMaterialUnit.Text = lib.MaterialUnit;
txtDesignInstitute.Text = lib.DesignInstitute;
//txtMaterialCode.Enabled = false;
}
else
@@ -71,7 +72,10 @@ namespace FineUIPro.Web.HJGL.BaseInfo
MaterialMade = this.txtMaterialMade.Text.Trim(),
MaterialDef = this.txtMaterialDef.Text.Trim(),
MaterialUnit = txtMaterialUnit.Text.Trim(),
Code = this.txtCode.Text.Trim()
Code = this.txtCode.Text.Trim(),
DesignInstitute = string.IsNullOrWhiteSpace(txtDesignInstitute.Text)
? null
: txtDesignInstitute.Text.Trim()
};
if (!string.IsNullOrEmpty(materialCode))
@@ -91,4 +95,4 @@ namespace FineUIPro.Web.HJGL.BaseInfo
}
#endregion
}
}
}
@@ -101,6 +101,11 @@ namespace FineUIPro.Web.HJGL.BaseInfo {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtMaterialUnit;
/// <summary>
/// txtDesignInstitute 控件。
/// </summary>
protected global::FineUIPro.TextBox txtDesignInstitute;
/// <summary>
/// txtMaterialDef 控件。
@@ -153,6 +153,9 @@ namespace FineUIPro.Web.HJGL.BaseInfo
// item.MaterialMade = dv[i]["材质"].ToString();
item.MaterialUnit = rows[i].MaterialUnit;
item.MaterialName = rows[i].MaterialName;
item.DesignInstitute = string.IsNullOrWhiteSpace(rows[i].DesignInstitute)
? null
: rows[i].DesignInstitute.Trim();
//item.PipeGrade = dv[i]["管道等级"].ToString();
//item.ProjectId = CurrUser.LoginProjectId;
//= SQLHelper.GetNewID(typeof(Model.Editor_CostReport));
@@ -236,6 +239,7 @@ namespace FineUIPro.Web.HJGL.BaseInfo
MaterialSpec = x.MaterialSpec,
MaterialUnit = x.MaterialUnit,
MaterialName = x.MaterialName,
DesignInstitute = x.DesignInstitute,
}).DistinctBy(temp => new
{
@@ -243,7 +247,8 @@ namespace FineUIPro.Web.HJGL.BaseInfo
temp.MaterialDef,
temp.MaterialSpec,
temp.MaterialUnit,
temp.MaterialName
temp.MaterialName,
temp.DesignInstitute
}).ToList();
codeLib_update = (from x in codeLib_update
select new HJGL_MaterialCodeLib
@@ -253,6 +258,7 @@ namespace FineUIPro.Web.HJGL.BaseInfo
MaterialSpec = x.MaterialSpec,
MaterialUnit = x.MaterialUnit,
MaterialName = x.MaterialName,
DesignInstitute = x.DesignInstitute,
}).DistinctBy(temp => new
{
@@ -260,7 +266,8 @@ namespace FineUIPro.Web.HJGL.BaseInfo
temp.MaterialDef,
temp.MaterialSpec,
temp.MaterialUnit,
temp.MaterialName
temp.MaterialName,
temp.DesignInstitute
}).ToList();
foreach (var item in codeLib_update)
{
@@ -281,4 +288,4 @@ namespace FineUIPro.Web.HJGL.BaseInfo
}
#endregion
}
}
}
@@ -88,13 +88,7 @@
</f:Button>
<f:Button ID="btnPrint" Text="打印" Icon="Printer" runat="server"
OnClick="btnPrint_Click">
</f:Button>
<f:Button ID="btnImport" Text="导入" ToolTip="导入" Icon="PackageIn" runat="server" Hidden="true" OnClick="btnImport_Click">
</f:Button>
<f:Button ID="btnUpdateImport" Text="更新导入" ToolTip="更新导入" Icon="PackageIn" runat="server" Hidden="true" OnClick="btnUpdateImport_Click">
</f:Button>
<f:Button ID="btnPDMSImport" Text="PDMS导入" ToolTip="PDMS导入" Icon="PackageIn" runat="server" OnClick="btnPDMSImport_Click" Hidden="true">
</f:Button>
</f:Button>
<f:Button ID="btnMatImport" Text="材料导入" ToolTip="材料导入" Icon="PackageIn" runat="server" OnClick="btnMatImport_Click">
</f:Button>
@@ -156,6 +150,9 @@
FieldType="String" HeaderText="数量" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="PipeAreaText" DataField="PipeAreaText"
FieldType="String" HeaderText="材料用途" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
FieldType="String" HeaderText="单位" HeaderTextAlign="Center"
TextAlign="Left">
@@ -218,6 +215,9 @@
FieldType="String" HeaderText="数量" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="PipeAreaText" DataField="PipeAreaText"
FieldType="String" HeaderText="材料用途" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
FieldType="String" HeaderText="单位" HeaderTextAlign="Center"
TextAlign="Left">
@@ -279,6 +279,9 @@
FieldType="String" HeaderText="数量" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="PipeAreaText" DataField="PipeAreaText"
FieldType="String" HeaderText="材料用途" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
FieldType="String" HeaderText="单位" HeaderTextAlign="Center"
TextAlign="Left">
@@ -327,13 +327,15 @@ namespace FineUIPro.Web.HJGL.DataImport
ISNULL(lib.MaterialSpec, libCode.MaterialSpec) AS MaterialSpec,
ISNULL(lib.MaterialMade, libCode.MaterialMade) AS MaterialMade,
ISNULL(lib.MaterialDef, libCode.MaterialDef) AS MaterialDef,
pipe.Number,pipe.PrefabricatedComponents,weld.WeldJointCode
pipe.Number,pipe.PrefabricatedComponents,
CASE pipe.PipeArea WHEN '1' THEN N'工厂预制' WHEN '2' THEN N'现场安装' END AS PipeAreaText,
weld.WeldJointCode
FROM dbo.HJGL_PipeLineMat pipe
LEFT JOIN dbo.HJGL_MaterialCodeLib lib ON lib.MaterialCode = pipe.MaterialCode
LEFT JOIN HJGL_Pipeline line ON pipe.PipelineId=line.PipelineId
OUTER APPLY (SELECT TOP 1 * FROM dbo.HJGL_MaterialCodeLib codeLib WHERE codeLib.ProjectId=line.ProjectId AND codeLib.Code=pipe.MaterialCode2 ORDER BY codeLib.MaterialCode) libCode
LEFT JOIN dbo.HJGL_WeldJoint weld ON weld.WeldJointId = pipe.WeldJointId
WHERE line.UnitWorkId=@UnitWorkId and line.PipeArea='1' and pipe.PrefabricatedComponents !='' ";
WHERE line.UnitWorkId=@UnitWorkId and pipe.PipeArea='1' and pipe.PrefabricatedComponents !='' ";
List<SqlParameter> listStr = new List<SqlParameter>();
//if (!string.IsNullOrEmpty(txtMaterialCode.Text.Trim()))
//{
@@ -369,13 +371,15 @@ namespace FineUIPro.Web.HJGL.DataImport
ISNULL(lib.MaterialSpec, libCode.MaterialSpec) AS MaterialSpec,
ISNULL(lib.MaterialMade, libCode.MaterialMade) AS MaterialMade,
ISNULL(lib.MaterialDef, libCode.MaterialDef) AS MaterialDef,
pipe.Number,weld.WeldJointCode
pipe.Number,
CASE pipe.PipeArea WHEN '1' THEN N'工厂预制' WHEN '2' THEN N'现场安装' END AS PipeAreaText,
weld.WeldJointCode
FROM dbo.HJGL_PipeLineMat pipe
LEFT JOIN dbo.HJGL_MaterialCodeLib lib ON lib.MaterialCode = pipe.MaterialCode
LEFT JOIN HJGL_Pipeline line ON pipe.PipelineId=line.PipelineId
OUTER APPLY (SELECT TOP 1 * FROM dbo.HJGL_MaterialCodeLib codeLib WHERE codeLib.ProjectId=line.ProjectId AND codeLib.Code=pipe.MaterialCode2 ORDER BY codeLib.MaterialCode) libCode
LEFT JOIN dbo.HJGL_WeldJoint weld ON weld.WeldJointId = pipe.WeldJointId
WHERE line.UnitWorkId=@UnitWorkId and line.PipeArea='2' ";
WHERE line.UnitWorkId=@UnitWorkId and pipe.PipeArea='2' ";
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(pipelineId))
{
@@ -407,13 +411,15 @@ namespace FineUIPro.Web.HJGL.DataImport
ISNULL(lib.MaterialSpec, libCode.MaterialSpec) AS MaterialSpec,
ISNULL(lib.MaterialMade, libCode.MaterialMade) AS MaterialMade,
ISNULL(lib.MaterialDef, libCode.MaterialDef) AS MaterialDef,
pipe.Number,pipe.PrefabricatedComponents,weld.WeldJointCode
pipe.Number,pipe.PrefabricatedComponents,
CASE pipe.PipeArea WHEN '1' THEN N'工厂预制' WHEN '2' THEN N'现场安装' END AS PipeAreaText,
weld.WeldJointCode
FROM dbo.HJGL_PipeLineMat pipe
LEFT JOIN dbo.HJGL_MaterialCodeLib lib ON lib.MaterialCode = pipe.MaterialCode
LEFT JOIN HJGL_Pipeline line ON pipe.PipelineId=line.PipelineId
OUTER APPLY (SELECT TOP 1 * FROM dbo.HJGL_MaterialCodeLib codeLib WHERE codeLib.ProjectId=line.ProjectId AND codeLib.Code=pipe.MaterialCode2 ORDER BY codeLib.MaterialCode) libCode
LEFT JOIN dbo.HJGL_WeldJoint weld ON weld.WeldJointId = pipe.WeldJointId
WHERE line.UnitWorkId=@UnitWorkId and line.PipeArea='1' and (pipe.PrefabricatedComponents is null or pipe.PrefabricatedComponents='') ";
WHERE line.UnitWorkId=@UnitWorkId and pipe.PipeArea='1' and (pipe.PrefabricatedComponents is null or pipe.PrefabricatedComponents='') ";
List<SqlParameter> listStr = new List<SqlParameter>();
//if (!string.IsNullOrEmpty(txtMaterialCode.Text.Trim()))
//{
@@ -1006,64 +1012,10 @@ namespace FineUIPro.Web.HJGL.DataImport
this.BindGrid2(this.tvControlItem.SelectedNodeID, this.hdUnitWorkId.Text);
}
#region
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
Model.WBS_UnitWork unitWork = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(this.tvControlItem.SelectedNodeID);
if (unitWork != null)
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("PipelineListIn.aspx?UnitWorkId={0}", this.tvControlItem.SelectedNodeID, "导入 - ")));
}
else
{
ShowNotify("请先选择单位工程!", MessageBoxIcon.Warning);
}
}
#endregion
#region
/// <summary>
/// 更新导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpdateImport_Click(object sender, EventArgs e)
{
Model.WBS_UnitWork unitWork = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(this.tvControlItem.SelectedNodeID);
if (unitWork != null)
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("PipelineListUpdateIn.aspx?UnitWorkId={0}", this.tvControlItem.SelectedNodeID, "更新导入 - ")));
}
else
{
ShowNotify("请先选择单位工程!", MessageBoxIcon.Warning);
}
}
#endregion
#region PDMS导入
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnPDMSImport_Click(object sender, EventArgs e)
{
Model.WBS_UnitWork unitWork = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(this.tvControlItem.SelectedNodeID);
if (unitWork != null)
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("PipelineListPDMSIn.aspx?UnitWorkId={0}", this.tvControlItem.SelectedNodeID, "导入 - ")));
}
else
{
ShowNotify("请先选择单位工程!", MessageBoxIcon.Warning);
}
}
#region 线
/// <summary>
/// 管线材料导入
@@ -185,33 +185,6 @@ namespace FineUIPro.Web.HJGL.DataImport
/// </remarks>
protected global::FineUIPro.Button btnPrint;
/// <summary>
/// btnImport 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnImport;
/// <summary>
/// btnUpdateImport 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnUpdateImport;
/// <summary>
/// btnPDMSImport 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPDMSImport;
/// <summary>
/// btnMatImport 控件。
/// </summary>
@@ -44,6 +44,15 @@
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownList ID="drpPipeArea" runat="server" Label="材料用途" Required="true"
ShowRedStar="true" LabelWidth="100px">
<f:ListItem Text="工厂预制" Value="1" />
<f:ListItem Text="现场安装" Value="2" />
</f:DropDownList>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
@@ -44,6 +44,9 @@ namespace FineUIPro.Web.HJGL.DataImport
? Const._Null
: pipeLineMat.MaterialCode;
this.txtMaterialCode.Text = pipeLineMat.MaterialCode2;
this.drpPipeArea.SelectedValue = string.IsNullOrEmpty(pipeLineMat.PipeArea)
? PipelineService.PipeArea_SHOP
: pipeLineMat.PipeArea;
BindMaterialDetails(pipeLineMat.MaterialCode, false);
}
}
@@ -118,6 +121,7 @@ namespace FineUIPro.Web.HJGL.DataImport
this.PipeLineMatId,
mainMaterialCode,
this.txtMaterialCode.Text.Trim());
PipelineMatService.UpdatePipeArea(this.PipeLineMatId, this.drpPipeArea.SelectedValue);
ShowNotify("保存成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
@@ -77,6 +77,11 @@ namespace FineUIPro.Web.HJGL.DataImport
/// </remarks>
protected global::FineUIPro.TextBox txtBatchNo;
/// <summary>
/// drpPipeArea 控件。
/// </summary>
protected global::FineUIPro.DropDownList drpPipeArea;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@@ -674,7 +674,7 @@ namespace FineUIPro.Web.HJGL.HotProcessHard
string initTemplatePath = "";
string rootPath = Server.MapPath("~/");
initTemplatePath = "File\\Fastreport\\管道焊热处理委托单NoPic.frx";
initTemplatePath = "File\\Fastreport\\管道焊热处理委托_附件5.frx";
if (File.Exists(rootPath + initTemplatePath))
{
@@ -233,11 +233,10 @@
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10" />
<f:ListItem Text="15" Value="15" />
<f:ListItem Text="20" Value="20" />
<f:ListItem Text="25" Value="25" />
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="50" Value="50" />
<f:ListItem Text="100" Value="100" />
<f:ListItem Text="200" Value="200" />
</f:DropDownList>
</PageItems>
</f:Grid>
@@ -77,7 +77,7 @@
OnClick="btnDelete_Click">
</f:Button>
<f:Button ID="btnPrint" Text="打印" Icon="Printer" runat="server"
OnClick="btnPrint_Click" Hidden="true">
MenuID="MenuPrint" ShowMenuIcon="true" Hidden="true">
</f:Button>
</Items>
</f:Toolbar>
@@ -115,7 +115,7 @@
<f:Button ID="btnBack" Text="退回" Icon="ArrowLeft" runat="server" OnClick="btnBack_Click">
</f:Button>
<f:Button ID="Button1" Text="打印" Icon="Printer" runat="server"
OnClick="btnPrint_Click">
MenuID="MenuPrint" ShowMenuIcon="true">
</f:Button>
</Items>
</f:FormRow>
@@ -200,6 +200,10 @@
<f:MenuButton ID="btnPointAudit" EnablePostBack="true" runat="server" Text="委托" Icon="ArrowNsew" OnClick="btnPointAudit_Click">
</f:MenuButton>
</f:Menu>
<f:Menu ID="MenuPrint" runat="server">
<f:MenuButton ID="btnPrintAttachment4" EnablePostBack="true" runat="server" Text="附件4:管道焊口检测委托单" Icon="Printer" OnClick="btnPrintAttachment4_Click" />
<f:MenuButton ID="btnPrintAttachment6" EnablePostBack="true" runat="server" Text="附件6:无损检测委托单" Icon="Printer" OnClick="btnPrintAttachment6_Click" />
</f:Menu>
</form>
<script type="text/javascript">
var menuID1 = '<%= Menu1.ClientID %>';
@@ -598,6 +598,21 @@ namespace FineUIPro.Web.HJGL.PointTrust
return;
}
}
protected void btnPrintAttachment4_Click(object sender, EventArgs e)
{
ViewState["TrustPrintTemplate"] = "附件4";
btnPrint_Click(sender, e);
}
protected void btnPrintAttachment6_Click(object sender, EventArgs e)
{
ViewState["TrustPrintTemplate"] = "附件6";
btnPrint_Click(sender, e);
}
/// <summary>
/// 按所选模板打印检测委托单。附件4为主单,附件6为无损检测附页,两者共用当前委托数据源。
/// </summary>
protected void btnPrint_Click(object sender, EventArgs e)
{
// string reportId = this.tvControlItem.SelectedNode.NodeID;
@@ -629,6 +644,11 @@ namespace FineUIPro.Web.HJGL.PointTrust
// Model.View_Batch_BatchTrust trust = BLL.Batch_BatchTrustService.GetBatchTrustViewByPointBatchId(this.tvControlItem.SelectedNodeID);
// Model.HJGL_Batch_PointBatch batch = BLL.PointBatchService.GetPointBatchById(this.tvControlItem.SelectedNodeID);
var trust = BLL.Batch_BatchTrustService.GetBatchTrustViewByPointBatchId(reportId);
if (trust == null)
{
Alert.ShowInTop("请选择要打印的委托单!", MessageBoxIcon.Warning);
return;
}
var CH_WeldMethod = (from batch in Funs.DB.View_Batch_BatchTrustItem
join joint in Funs.DB.View_HJGL_WeldJoint on batch.WeldJointId equals joint.WeldJointId
where batch.TrustBatchId == trust.TrustBatchId
@@ -723,7 +743,9 @@ namespace FineUIPro.Web.HJGL.PointTrust
// Session["CH_TrustID"] = reportId;
string initTemplatePath = "";
string rootPath = Server.MapPath("~/");
initTemplatePath = "File\\Fastreport\\管道焊口检测委托单NoPic.frx";
initTemplatePath = (ViewState["TrustPrintTemplate"] as string) == "附件6"
? "File\\Fastreport\\无损检测委托单_附件6.frx"
: "File\\Fastreport\\管道焊口检测委托单_附件4.frx";
if (File.Exists(rootPath + initTemplatePath))
{
+67 -38
View File
@@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HJGL.PointTrust {
public partial class TrustBatch {
namespace FineUIPro.Web.HJGL.PointTrust
{
public partial class TrustBatch
{
/// <summary>
/// form1 控件。
/// </summary>
@@ -20,7 +22,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@@ -29,7 +31,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
@@ -38,7 +40,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// panelLeftRegion 控件。
/// </summary>
@@ -47,7 +49,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelLeftRegion;
/// <summary>
/// Toolbar2 控件。
/// </summary>
@@ -56,7 +58,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// drpUnit 控件。
/// </summary>
@@ -65,7 +67,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpUnit;
/// <summary>
/// Toolbar4 控件。
/// </summary>
@@ -74,7 +76,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar4;
/// <summary>
/// txtWelderCode 控件。
/// </summary>
@@ -83,7 +85,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtWelderCode;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@@ -92,7 +94,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// txtTrustDateMonth 控件。
/// </summary>
@@ -101,7 +103,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtTrustDateMonth;
/// <summary>
/// tvControlItem 控件。
/// </summary>
@@ -110,7 +112,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tree tvControlItem;
/// <summary>
/// panelCenterRegion 控件。
/// </summary>
@@ -119,7 +121,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelCenterRegion;
/// <summary>
/// Toolbar3 控件。
/// </summary>
@@ -128,7 +130,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar3;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
@@ -137,7 +139,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnAudit 控件。
/// </summary>
@@ -146,7 +148,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnAudit;
/// <summary>
/// btnDelete 控件。
/// </summary>
@@ -155,7 +157,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnDelete;
/// <summary>
/// btnPrint 控件。
/// </summary>
@@ -164,7 +166,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPrint;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
@@ -173,7 +175,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtTrustBatchCode 控件。
/// </summary>
@@ -182,7 +184,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label txtTrustBatchCode;
/// <summary>
/// txtTrustDate 控件。
/// </summary>
@@ -191,7 +193,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label txtTrustDate;
/// <summary>
/// txtDetectionTypeCode 控件。
/// </summary>
@@ -200,7 +202,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label txtDetectionTypeCode;
/// <summary>
/// lbNDEUnit 控件。
/// </summary>
@@ -209,7 +211,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbNDEUnit;
/// <summary>
/// lbIsTrust 控件。
/// </summary>
@@ -218,7 +220,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbIsTrust;
/// <summary>
/// lbIsAudit 控件。
/// </summary>
@@ -227,7 +229,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbIsAudit;
/// <summary>
/// btnBack 控件。
/// </summary>
@@ -236,7 +238,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnBack;
/// <summary>
/// Button1 控件。
/// </summary>
@@ -245,7 +247,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button Button1;
/// <summary>
/// Grid1 控件。
/// </summary>
@@ -254,7 +256,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@@ -263,7 +265,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
@@ -272,7 +274,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
@@ -281,7 +283,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
@@ -290,7 +292,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Window2 控件。
/// </summary>
@@ -299,7 +301,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window2;
/// <summary>
/// Menu1 控件。
/// </summary>
@@ -308,7 +310,7 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnPointAudit 控件。
/// </summary>
@@ -317,5 +319,32 @@ namespace FineUIPro.Web.HJGL.PointTrust {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnPointAudit;
/// <summary>
/// MenuPrint 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu MenuPrint;
/// <summary>
/// btnPrintAttachment4 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnPrintAttachment4;
/// <summary>
/// btnPrintAttachment6 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnPrintAttachment6;
}
}
@@ -67,7 +67,7 @@
OnClick="btnDelete_Click">
</f:Button>
<f:Button ID="btnPrint" Text="打印" Icon="Printer" runat="server"
OnClick="btnPrint_Click">
MenuID="MenuPrint" ShowMenuIcon="true">
</f:Button>
</Items>
</f:Toolbar>
@@ -182,6 +182,10 @@
EnableMaximize="true" Target="Top" EnableResize="false" runat="server"
IsModal="true" Width="1010px" Height="660px">
</f:Window>
<f:Menu ID="MenuPrint" runat="server">
<f:MenuButton ID="btnPrintAttachment4" EnablePostBack="true" runat="server" Text="附件4:管道焊口检测委托单" Icon="Printer" OnClick="btnPrintAttachment4_Click" />
<f:MenuButton ID="btnPrintAttachment6" EnablePostBack="true" runat="server" Text="附件6:无损检测委托单(附页)" Icon="Printer" OnClick="btnPrintAttachment6_Click" />
</f:Menu>
</form>
<script type="text/javascript">
function reloadGrid() {
@@ -449,6 +449,21 @@ namespace FineUIPro.Web.HJGL.RepairAndExpand
}
}
protected void btnPrintAttachment4_Click(object sender, EventArgs e)
{
ViewState["TrustPrintTemplate"] = "附件4";
btnPrint_Click(sender, e);
}
protected void btnPrintAttachment6_Click(object sender, EventArgs e)
{
ViewState["TrustPrintTemplate"] = "附件6";
btnPrint_Click(sender, e);
}
/// <summary>
/// 按所选模板打印返修委托单。两个模板均保留返修页面的当前明细数据源。
/// </summary>
protected void btnPrint_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable("Table1");
@@ -548,7 +563,9 @@ namespace FineUIPro.Web.HJGL.RepairAndExpand
// Session["CH_TrustID"] = reportId;
string initTemplatePath = "";
string rootPath = Server.MapPath("~/");
initTemplatePath = "File\\Fastreport\\管道焊口返修委托单NoPic.frx";
initTemplatePath = (ViewState["TrustPrintTemplate"] as string) == "附件6"
? "File\\Fastreport\\无损检测委托单_附件6.frx"
: "File\\Fastreport\\管道焊口检测委托单_附件4.frx";
if (File.Exists(rootPath + initTemplatePath))
{
@@ -290,5 +290,20 @@ namespace FineUIPro.Web.HJGL.RepairAndExpand {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window2;
/// <summary>
/// MenuPrint 控件。
/// </summary>
protected global::FineUIPro.Menu MenuPrint;
/// <summary>
/// btnPrintAttachment4 控件。
/// </summary>
protected global::FineUIPro.MenuButton btnPrintAttachment4;
/// <summary>
/// btnPrintAttachment6 控件。
/// </summary>
protected global::FineUIPro.MenuButton btnPrintAttachment6;
}
}
@@ -37,6 +37,7 @@
<f:Toolbar ID="Toolbar1" runat="server">
<Items>
<f:Label ID="lbVersion2" runat="server" Text="预制散件导入时无需编辑组件"></f:Label>
<f:Label ID="lbVersion3" runat="server" Text="模板末列材料用途必填:工厂预制或现场安装"></f:Label>
</Items>
</f:Toolbar>
@@ -59,11 +60,11 @@
<Rows>
<f:FormRow>
<Items>
<f:Grid ID="Grid2" ShowBorder="true" ShowHeader="false" Title="历史记录" IsFluid="true" ForceFit="true"
<f:Grid ID="Grid2" ShowBorder="true" ShowHeader="false" Title="历史记录" IsFluid="true" ForceFit="true"
EnableCollapse="false" runat="server" BoxFlex="1" DataKeyNames="DesignBasisDataImportId"
AllowColumnLocking="true" EnableColumnLines="true" DataIDField="DesignBasisDataImportId"
EnableColumnLines="true" DataIDField="DesignBasisDataImportId"
AllowSorting="true" SortField="CreateDate" SortDirection="ASC" EnableMultiSelect="false" Height="250"
IsDatabasePaging="false" AllowPaging="true" PageSize="300" EnableBigDataRowTip="false" EnableBigData="true">
IsDatabasePaging="false" AllowPaging="true" PageSize="300" >
<Columns>
<f:RowNumberField EnablePagingNumber="true" HeaderText="编号"
Width="60px" HeaderTextAlign="Center" TextAlign="Center" />
@@ -138,7 +138,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
Model.ResponeData responeData = new Model.ResponeData();
List<string> result = new List<string>();
bool includeBatch = ckIncludeBatch.Checked;
int minColumnCount = includeBatch ? 7 : 5;
int minColumnCount = includeBatch ? 8 : 6;
matList.Clear();
if (count < minColumnCount)
@@ -159,8 +159,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
string unitworkId = string.Empty;
unitworkId = Request.Params["UnitWorkId"];
string PipeArea = string.Empty;//管线划分 1工厂预制 2现场施工
if (pds[i].A != null && !string.IsNullOrEmpty(pds[i].A.ToString()))
{
string pipelineCode = pds[i].A.ToString();
@@ -168,7 +166,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
if (pipeline.Count() > 0)
{
item.PipelineId = pipeline.First().PipelineId;
PipeArea = pipeline.First().PipeArea;
}
else
{
@@ -182,6 +179,14 @@ namespace FineUIPro.Web.HJGL.WeldingManage
result.Add((i + 2) + "Line, [管线号] 不能为空</br>");
}
// 材料用途由 Excel 显式填写,不再从所属管线区域推断。
object pipeAreaValue = includeBatch ? pds[i].H : pds[i].F;
item.PipeArea = GetPipeArea(pipeAreaValue == null ? null : pipeAreaValue.ToString());
if (string.IsNullOrEmpty(item.PipeArea))
{
result.Add("第" + (i + 2).ToString() + "行, [材料用途] 必须填写“工厂预制”或“现场安装”</br>");
}
if (pds[i].C != null && !string.IsNullOrEmpty(pds[i].C.ToString()))
{
@@ -264,7 +269,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
result.Add((i + 2) + "Line, [数量] 不能为空</br>");
}
if (PipeArea == "1")
if (item.PipeArea == PipelineService.PipeArea_SHOP)
{
if (pds[i].B != null && !string.IsNullOrEmpty(pds[i].B.ToString()))
{
@@ -280,8 +285,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
var model = includeBatch
? matList.Where(x => x.PipelineId == item.PipelineId && x.MaterialCode == item.MaterialCode && x.WeldJointId == item.WeldJointId && x.PrefabricatedComponents == item.PrefabricatedComponents)
: matList.Where(x => x.PipelineId == item.PipelineId && x.MaterialCode2 == item.MaterialCode2 && x.WeldJointId == item.WeldJointId && x.PrefabricatedComponents == item.PrefabricatedComponents);
? matList.Where(x => x.PipelineId == item.PipelineId && x.MaterialCode == item.MaterialCode && x.WeldJointId == item.WeldJointId && x.PrefabricatedComponents == item.PrefabricatedComponents && x.PipeArea == item.PipeArea)
: matList.Where(x => x.PipelineId == item.PipelineId && x.MaterialCode2 == item.MaterialCode2 && x.WeldJointId == item.WeldJointId && x.PrefabricatedComponents == item.PrefabricatedComponents && x.PipeArea == item.PipeArea);
if (model.Count() == 0)
{
matList.Add(item);
@@ -517,6 +522,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
&& x.WeldJointId == item.WeldJointId
&& x.PipelineId == item.PipelineId
&& x.PrefabricatedComponents == item.PrefabricatedComponents
&& x.PipeArea == item.PipeArea
&& (string.IsNullOrEmpty(item.MaterialCode) || x.MaterialCode == item.MaterialCode)
select x;
if (pipeLineMat.Count() == 0 || pipeLineMat == null)
@@ -537,5 +543,23 @@ namespace FineUIPro.Web.HJGL.WeldingManage
BLL.HJGL_PipelineComponentService.SyncPipelineComponentByMatId(item.PipeLineMatId);
}
}
/// <summary>
/// 将导入模板中的材料用途转换为数据库编码。
/// </summary>
private static string GetPipeArea(string value)
{
string text = value == null ? string.Empty : value.Trim();
if (string.Equals(text, "工厂预制", StringComparison.OrdinalIgnoreCase))
{
return PipelineService.PipeArea_SHOP;
}
if (string.Equals(text, "现场安装", StringComparison.OrdinalIgnoreCase)
|| string.Equals(text, "现场施工", StringComparison.OrdinalIgnoreCase))
{
return PipelineService.PipeArea_FIELD;
}
return null;
}
}
}
@@ -122,6 +122,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.Label lbVersion2;
/// <summary>
/// lbVersion3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbVersion3;
/// <summary>
/// Toolbar3 控件。
/// </summary>
@@ -90,7 +90,11 @@
EnablePostBack="true" OnClick="btnTreeFind_Click" runat="server">
</f:Button>
<f:Button ID="btnStatisticsMat" ToolTip="匹配材料" Icon="TabGo" runat="server" OnClick="btnStatisticsMat_Click" Hidden="true">
</f:Button>
</f:Button>
<f:Button ID="btnExportPartialComponents" Text="导出部分已焊组件" ToolTip="按当前区域导出所选单位工程的部分已焊组件"
Icon="TableGo" runat="server" OnClick="btnExportPartialComponents_Click" EnableAjax="false"
DisableControlBeforePostBack="true" EnablePostBack="true">
</f:Button>
</Items>
</f:Toolbar>
@@ -163,7 +167,7 @@
<Items>
<f:Grid ID="Grid2" ShowBorder="true" ShowHeader="false" Title="材料匹配"
EnableCollapse="true" runat="server" BoxFlex="1" DataKeyNames="PipelineId" ForceFit="true"
EnableColumnLines="true" DataIDField="PipelineId" AllowSorting="true"
EnableColumnLines="true" DataIDField="PipelineId" AllowSorting="true" EnableTextSelection="true"
SortField="MatchRate" SortDirection="DESC" EnableCheckBoxSelect="true">
<Columns>
<f:RenderField Width="150px" ColumnID="UnitWorkName" DataField="UnitWorkName" SortField="UnitWorkName"
@@ -189,7 +193,7 @@
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="材料匹配明细" EnableRowClickEvent="true"
EnableCollapse="true" runat="server" BoxFlex="1" DataKeyNames="Id,PipelineId,PrefabricatedComponents,WeldJointId" ForceFit="true"
EnableColumnLines="true" DataIDField="Id" AllowSorting="true" FixedRowHeight="true" RowHeight="46"
EnableColumnLines="true" DataIDField="Id" AllowSorting="true" FixedRowHeight="true" RowHeight="46" EnableTextSelection="true"
SortField="PipelineCode" SortDirection="ASC" OnSort="Grid1_Sort" EnableCheckBoxSelect="true" EnableSummary="true" SummaryPosition="Bottom" >
<Columns>
<f:RenderField Width="200px" ColumnID="PipelineCode" DataField="PipelineCode" SortField="PipelineCode"
@@ -200,6 +204,10 @@
FieldType="String" HeaderText="预制组件号" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="ComponentMatchRateString" DataField="ComponentMatchRateString" SortField="ComponentMatchRate"
FieldType="String" HeaderText="组件匹配率" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="WeldJointCode" DataField="WeldJointCode" SortField="WeldJointCode"
FieldType="String" HeaderText="焊口号" HeaderTextAlign="Center"
TextAlign="Left">
@@ -236,9 +244,10 @@
FieldType="String" HeaderText="匹配率" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="dataload" Handler="onMaterialDetailDataLoad" />
</Listeners>
</f:Grid>
</Items>
</f:Panel>
@@ -262,6 +271,13 @@
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
function onMaterialDetailDataLoad(event) {
// 逐级依赖管线和组件合并,避免同名组件跨管线或相同匹配率跨组件合并。
this.mergeColumns(['PipelineCode', 'PrefabricatedComponents', 'ComponentMatchRateString'], {
depends: true
});
}
</script>
</body>
</html>
@@ -1,10 +1,12 @@
using BLL;
using FineUIPro.Web.DataShow;
using MiniExcelLibs;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace FineUIPro.Web.HJGL.WeldingManage
@@ -13,6 +15,19 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
public int pageSize = PipelineService.pageSize;
private const string TreeCommandBuilding = "建筑工程";
private const string TreeCommandInstallation = "安装工程";
private const string TreeCommandUnitWork = "单位工程";
private const string TreeCommandPipeline = "管线";
private const string TreeCommandLoad = "加载";
private const string PrefabricationJointAttribute = "预制口";
private const string InstallationJointAttribute = "安装口";
private const string WeldingRodConsumablesType = "2";
private const string WeldingWireConsumablesType = "1";
private const string ManualWeldingMode = "手动";
private const string CoverMaterialClassFe1 = "Fe-1";
private const string CoverMaterialClassFe3 = "Fe-3";
public string WarehouseId
{
get
@@ -89,29 +104,61 @@ namespace FineUIPro.Web.HJGL.WeldingManage
//ctlAuditFlow.Url = BLL.Project_SysSetService.GetAvevaNetUrl(this.CurrUser.LoginProjectId);
if (!IsPostBack)
{
tw_PipeMatMatchOutputs = new List<Model.Tw_PipeMatMatchOutput>();
PipeArea = Request.Params["PipeArea"];
drpWarehouse.DataTextField = "Key";
drpWarehouse.DataValueField = "Value";
drpWarehouse.DataSource = BLL.TwInOutplanmasterService.GetWarehouseCode(this.CurrUser.LoginProjectId);
drpWarehouse.DataBind();
drpWarehouse_SelectedIndexChanged(null, null);
HJGL_MaterialService.materialStockItems_FIELD = new List<Model.MaterialStockItem>();
HJGL_MaterialService.materialStockItems_SHOP = new List<Model.MaterialStockItem>();
dicSeclectPipeLine = new Dictionary<string, string>();
priorityWeldJoints = new Dictionary<string, HashSet<string>>();
var pipeline = (from x in Funs.DB.HJGL_Pipeline
where x.ProjectId == this.CurrUser.LoginProjectId
select x.FlowingSection).Distinct().ToList();
this.drpFlowingSection.DataTextField = "Value";
this.drpFlowingSection.DataValueField = "Value";
this.drpFlowingSection.DataSource = pipeline;
this.drpFlowingSection.DataBind();
Funs.FineUIPleaseSelect(drpFlowingSection);
this.InitTreeMenu();//加载树
InitializePage();
}
}
/// <summary>
/// 初始化页面状态、筛选项和左侧管线树。
/// </summary>
private void InitializePage()
{
tw_PipeMatMatchOutputs = new List<Model.Tw_PipeMatMatchOutput>();
PipeArea = Request.Params["PipeArea"];
BindWarehouseOptions();
ResetMaterialStockCache();
dicSeclectPipeLine = new Dictionary<string, string>();
priorityWeldJoints = new Dictionary<string, HashSet<string>>();
BindFlowingSectionOptions();
InitTreeMenu();
}
/// <summary>
/// 绑定当前项目可用仓库,并触发仓库切换后的树刷新。
/// </summary>
private void BindWarehouseOptions()
{
drpWarehouse.DataTextField = "Key";
drpWarehouse.DataValueField = "Value";
drpWarehouse.DataSource = BLL.TwInOutplanmasterService.GetWarehouseCode(this.CurrUser.LoginProjectId);
drpWarehouse.DataBind();
drpWarehouse_SelectedIndexChanged(null, null);
}
/// <summary>
/// 清空材料库存缓存,避免首次加载沿用其他入口的区域缓存。
/// </summary>
private void ResetMaterialStockCache()
{
HJGL_MaterialService.materialStockItems_FIELD = new List<Model.MaterialStockItem>();
HJGL_MaterialService.materialStockItems_SHOP = new List<Model.MaterialStockItem>();
}
/// <summary>
/// 绑定当前项目的流水段筛选项。
/// </summary>
private void BindFlowingSectionOptions()
{
var flowingSections = (from x in Funs.DB.HJGL_Pipeline
where x.ProjectId == this.CurrUser.LoginProjectId
select x.FlowingSection).Distinct().ToList();
drpFlowingSection.DataTextField = "Value";
drpFlowingSection.DataValueField = "Value";
drpFlowingSection.DataSource = flowingSections;
drpFlowingSection.DataBind();
Funs.FineUIPleaseSelect(drpFlowingSection);
}
#region --
/// <summary>
@@ -121,20 +168,10 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
this.tvControlItem.Nodes.Clear();
TreeNode rootNode1 = new TreeNode();
rootNode1.NodeID = "1";
rootNode1.Text = "建筑工程";
rootNode1.CommandName = "建筑工程";
rootNode1.Selectable = false;
rootNode1.EnableCheckBox = false;
TreeNode rootNode1 = CreateRootNode("1", TreeCommandBuilding, false, false);
this.tvControlItem.Nodes.Add(rootNode1);
TreeNode rootNode2 = new TreeNode();
rootNode2.NodeID = "2";
rootNode2.Text = "安装工程";
rootNode2.CommandName = "安装工程";
rootNode2.Expanded = true;
rootNode2.EnableCheckBox = false;
TreeNode rootNode2 = CreateRootNode("2", TreeCommandInstallation, true, null);
this.tvControlItem.Nodes.Add(rootNode2);
var unitWorkList = (from x in Funs.DB.WBS_UnitWork
@@ -143,57 +180,54 @@ namespace FineUIPro.Web.HJGL.WeldingManage
orderby x.UnitWorkCode
select x).ToList();
List<Model.WBS_UnitWork> unitWork1 = null;
List<Model.WBS_UnitWork> unitWork2 = null;
BindUnitWorkNodes(rootNode1, unitWorkList.Where(x => x.ProjectType == "1"), false);
BindUnitWorkNodes(rootNode2, unitWorkList.Where(x => x.ProjectType == "2"), true);
}
unitWork1 = (from x in unitWorkList where x.ProjectType == "1" select x).ToList();
unitWork2 = (from x in unitWorkList where x.ProjectType == "2" select x).ToList();
if (unitWork1.Count() > 0)
/// <summary>
/// 创建建筑工程或安装工程根节点。
/// </summary>
private TreeNode CreateRootNode(string nodeId, string text, bool expanded, bool? selectable)
{
var rootNode = new TreeNode
{
foreach (var q in unitWork1)
{
int a = GetUnitWorkTestPackagePipelineCount(q.UnitWorkId);
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
TreeNode tn1 = new TreeNode();
tn1.NodeID = q.UnitWorkId;
tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
tn1.ToolTip = "施工单位:" + unitNamesUnitIds;
tn1.CommandName = "单位工程";
tn1.EnableExpandEvent = true;
tn1.EnableClickEvent = true;
tn1.EnableCheckBox = false;
rootNode1.Nodes.Add(tn1);
if (a > 0)
{
BindTestPackageNodes(tn1);
}
}
NodeID = nodeId,
Text = text,
CommandName = text,
Expanded = expanded,
EnableCheckBox = false
};
if (selectable.HasValue)
{
rootNode.Selectable = selectable.Value;
}
if (unitWork2.Count() > 0)
{
foreach (var q in unitWork2)
{
int a = GetUnitWorkTestPackagePipelineCount(q.UnitWorkId);
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
TreeNode tn2 = new TreeNode();
tn2.NodeID = q.UnitWorkId;
tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
if (q.UnitWorkId == this.hdUnitWorkId.Text)
{
tn2.Expanded = true;
}
tn2.ToolTip = "施工单位:" + unitNamesUnitIds;
tn2.CommandName = "单位工程";
tn2.EnableExpandEvent = true;
tn2.EnableClickEvent = true;
tn2.EnableCheckBox = false;
return rootNode;
}
rootNode2.Nodes.Add(tn2);
if (a > 0)
{
BindTestPackageNodes(tn2);
}
/// <summary>
/// 将单位工程节点绑定到指定工程根节点。
/// </summary>
private void BindUnitWorkNodes(TreeNode parentNode, IEnumerable<Model.WBS_UnitWork> unitWorks, bool expandSelectedNode)
{
foreach (var unitWork in unitWorks)
{
int pipelineCount = GetUnitWorkTestPackagePipelineCount(unitWork.UnitWorkId);
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(unitWork.UnitId);
TreeNode unitWorkNode = new TreeNode
{
NodeID = unitWork.UnitWorkId,
Text = unitWork.UnitWorkName + "【" + pipelineCount.ToString() + "】管线",
ToolTip = "施工单位:" + unitNamesUnitIds,
CommandName = TreeCommandUnitWork,
EnableExpandEvent = true,
EnableClickEvent = true,
EnableCheckBox = false,
Expanded = expandSelectedNode && unitWork.UnitWorkId == hdUnitWorkId.Text
};
parentNode.Nodes.Add(unitWorkNode);
if (pipelineCount > 0)
{
BindTestPackageNodes(unitWorkNode);
}
}
}
@@ -219,16 +253,16 @@ namespace FineUIPro.Web.HJGL.WeldingManage
TreeNode newNode = new TreeNode();
newNode.Text = item.PipelineCode;
newNode.NodeID = item.PipelineId;
newNode.CommandName = "管线";
newNode.CommandName = TreeCommandPipeline;
newNode.EnableClickEvent = true;
node.Nodes.Add(newNode);
}
if (pageindex < pageCount)
{
TreeNode newNode = new TreeNode();
newNode.Text = "加载";
newNode.Text = TreeCommandLoad;
newNode.NodeID = SQLHelper.GetNewID();
newNode.CommandName = "加载";
newNode.CommandName = TreeCommandLoad;
newNode.Icon = Icon.ArrowDown;
newNode.EnableClickEvent = true;
node.Nodes.Add(newNode);
@@ -288,7 +322,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
/// <summary>
/// 获取指定试压包下当前仓库、区域和筛选条件内尚未完成出库的管线。
/// 获取指定试压包下当前仓库和页面筛选条件内尚未完成出库的管线;材料区域由匹配服务按材料明细过滤
/// </summary>
/// <param name="ptpId">试压包ID。</param>
/// <returns>符合材料匹配入口条件的管线列表。</returns>
@@ -306,7 +340,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
where y == null
&& p.PTP_ID == ptpId
&& x.ProjectId == this.CurrUser.LoginProjectId
&& x.PipeArea == PipeArea
&& x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())
&& x.WarehouseId == WarehouseId
orderby x.PipelineCode
@@ -353,7 +386,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// <param name="e"></param>
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
{
if (e.CommandName == "加载")
if (e.CommandName == TreeCommandLoad)
{
string CommandName = e.Node.ParentNode.CommandName;
e.Node.ParentNode.CommandName = (int.Parse(CommandName.Split('|')[0]) + 1) + "|" + int.Parse(CommandName.Split('|')[1]);
@@ -475,7 +508,12 @@ namespace FineUIPro.Web.HJGL.WeldingManage
selectList.Add(model.Id);
}
if (IsMaterialCodeConfirmed(model, confirmedPipeLineMatIds))
// 匹配率优先级高于历史确认状态,0% 或未满配材料不能再显示为绿色。
if (model.MatchRate == null || model.MatchRate < 1)
{
Grid1.Rows[i].RowCssClass = "red";
}
else if (IsMaterialCodeConfirmed(model, confirmedPipeLineMatIds))
{
Grid1.Rows[i].RowCssClass = "green";
}
@@ -483,10 +521,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
Grid1.Rows[i].RowCssClass = "priority";
}
else if (model.MatchRate < 1 || model.MatchRate == null)
{
Grid1.Rows[i].RowCssClass = "red";
}
}
Grid1.SelectedRowIDArray = selectList.ToArray();
@@ -531,10 +565,11 @@ namespace FineUIPro.Web.HJGL.WeldingManage
.Distinct()
.ToList();
var reportWeldJointIds = Funs.DB.HJGL_WeldJoint
.Where(x => weldJointIds.Contains(x.WeldJointId)&& x.WeldingDailyId !=null)
.Where(x => weldJointIds.Contains(x.WeldJointId) && x.WeldingDailyId != null && x.WeldingDailyId != "")
.Select(x => x.WeldJointId).Distinct().ToList();
return matchOutputs
.Where(x => string.IsNullOrEmpty(x.WeldJointId) || !taskWeldJointIds.Contains(x.WeldJointId) || reportWeldJointIds.Contains(x.WeldJointId))
.Where(x => string.IsNullOrEmpty(x.WeldJointId)
|| (!taskWeldJointIds.Contains(x.WeldJointId) && !reportWeldJointIds.Contains(x.WeldJointId)))
.ToList();
}
@@ -600,7 +635,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// <param name="e">事件参数。</param>
protected void btnMatchHelp_Click(object sender, EventArgs e)
{
Alert.ShowInTop("1、管线绿色为匹配率100%,明细绿色为已反写材料主编码,红色为匹配率小于100%,蓝色为手动优先焊口。<br/>2、一个焊口可能对应多条材料明细,该焊口全部有效明细已反写材料主编码后才允许一键生成任务单。<br/>3、焊口已进行焊前准备,匹配了焊评才能生成任务单", "说明", MessageBoxIcon.Information);
Alert.ShowInTop("1、管线绿色为匹配率100%,明细绿色为已反写材料主编码,红色为匹配率小于100%,蓝色为手动优先焊口。<br/>2、库存匹配顺序为手动优先焊口、存在已焊口的续作组件、其他未开工组件。<br/>3、一个焊口可能对应多条材料明细,该焊口全部有效明细已反写材料主编码后才允许一键生成任务单。<br/>4、焊口已进行焊前准备,匹配了焊评才能生成任务单", "说明", MessageBoxIcon.Information);
}
/// <summary>
@@ -625,7 +660,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
this.CurrUser.LoginProjectId,
dicSeclectPipeLine.Keys.ToList(),
drpWarehouse.SelectedValue,
GetPriorityWeldJointList());
GetPriorityWeldJointList(),
PipeArea);
BindGrid3();
BindGrid2(keepSelectedPipelineIds);
}
@@ -692,7 +728,74 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
/// <summary>
/// 按树节点获取可加入本次匹配的管线。单位工程节点会展开到其下所有试压包,再套用当前仓库、区域和页面筛选条件。
/// 按当前材料区域导出所选单位工程下全部部分已焊接组件。
/// </summary>
protected void btnExportPartialComponents_Click(object sender, EventArgs e)
{
Model.WBS_UnitWork unitWork = tvControlItem.SelectedNode == null
? null
: BLL.UnitWorkService.GetUnitWorkByUnitWorkId(tvControlItem.SelectedNode.NodeID);
if (unitWork == null)
{
ShowNotify("请先选择需要导出的单位工程!", MessageBoxIcon.Warning);
return;
}
var components = TwArrivalStatisticsService.GetPartialWeldedComponents(
this.CurrUser.LoginProjectId,
unitWork.UnitWorkId,
PipeArea,
drpWarehouse.SelectedValue);
if (!components.Any())
{
ShowNotify("当前单位工程和区域下没有部分已焊接组件!", MessageBoxIcon.Warning);
return;
}
var exportData = components.Select(x => new
{
= x.UnitWorkName,
= x.PipeAreaText,
线 = x.PipelineCode,
= x.PrefabricatedComponents,
= x.TotalWeldJointCount,
= x.WeldedWeldJointCount,
= x.UnweldedWeldJointCount,
= x.ComponentMatchRateString
}).ToList();
string areaText = PipeArea == PipelineService.PipeArea_SHOP ? "工厂预制" : "现场安装";
string fileName = GetSafeFileName(unitWork.UnitWorkName) + "_" + areaText + "_部分已焊组件_" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
string tempDirectory = Path.Combine(Funs.RootPath, @"File\Excel\Temp");
Directory.CreateDirectory(tempDirectory);
string filePath = Path.Combine(tempDirectory, Guid.NewGuid().ToString("N") + ".xlsx");
MiniExcel.SaveAs(filePath, exportData);
FileInfo fileInfo = new FileInfo(filePath);
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
response.AddHeader("Content-Length", fileInfo.Length.ToString());
// 先读取到响应缓冲区再删除临时文件,避免 TransmitFile 异步发送期间文件仍被占用。
response.BinaryWrite(File.ReadAllBytes(filePath));
File.Delete(filePath);
response.Flush();
System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
}
private static string GetSafeFileName(string fileName)
{
string safeFileName = string.IsNullOrEmpty(fileName) ? "单位工程" : fileName;
foreach (char invalidChar in Path.GetInvalidFileNameChars())
{
safeFileName = safeFileName.Replace(invalidChar, '_');
}
return safeFileName;
}
/// <summary>
/// 按树节点获取可加入本次匹配的管线。单位工程节点会展开到其下所有试压包,再套用当前仓库和页面筛选条件。
/// </summary>
/// <param name="node">左侧树节点。</param>
/// <returns>符合材料匹配入口条件的管线列表。</returns>
@@ -703,13 +806,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
return new List<Model.HJGL_Pipeline>();
}
if (node.CommandName == "管线")
if (node.CommandName == TreeCommandPipeline)
{
var pipeline = PipelineService.GetPipelineByPipelineId(node.NodeID);
return pipeline == null ? new List<Model.HJGL_Pipeline>() : new List<Model.HJGL_Pipeline> { pipeline };
}
if (node.CommandName == "单位工程")
if (node.CommandName == TreeCommandUnitWork)
{
var testPackageIds = (from x in Funs.DB.PTP_TestPackage
where x.ProjectId == this.CurrUser.LoginProjectId
@@ -743,7 +846,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
var selectNodes = tvControlItem.GetCheckedNodes();
foreach (var node in selectNodes)
{
if (dicSeclectPipeLine.Where(x => x.Key == node.NodeID).Count() == 0 && node.CommandName == "管线")
if (dicSeclectPipeLine.Where(x => x.Key == node.NodeID).Count() == 0 && node.CommandName == TreeCommandPipeline)
{
dicSeclectPipeLine.Add(node.NodeID, node.Text);
addCount++;
@@ -978,19 +1081,14 @@ namespace FineUIPro.Web.HJGL.WeldingManage
ShowNotify("选中管线中没有已反写材料主编码的可生成任务单焊口!", MessageBoxIcon.Warning);
return false;
}
var weldingRods = from x in Funs.DB.Base_Consumables where x.ConsumablesType == "2" select x;
var weldingWires = from x in Funs.DB.Base_Consumables where x.ConsumablesType == "1" select x;
var weldingRods = from x in Funs.DB.Base_Consumables where x.ConsumablesType == WeldingRodConsumablesType select x;
var weldingWires = from x in Funs.DB.Base_Consumables where x.ConsumablesType == WeldingWireConsumablesType select x;
var selectedWeldJointIdList = selectedWeldJointIds.ToList();
var selectRowId = GetTaskableWeldJointRows(selectedWeldJointIdList);
Dictionary<string, string> unitworkTaskCode = new Dictionary<string, string>();
Dictionary<string, string> unitworkSerialNumber = new Dictionary<string, string>();
Dictionary<int, string> matchPipeline = new Dictionary<int, string>();
// 生成任务单仍保留管线在匹配结果中的排序,用于任务单列表按管线顺序展示。
for (int rowIndex = 0; rowIndex < Grid2.Rows.Count; rowIndex++)
{
matchPipeline.Add(rowIndex + 1, Grid2.Rows[rowIndex].RowID);
}
Dictionary<int, string> matchPipeline = GetMatchPipelineOrder();
if (!selectRowId.Any())
{
ShowNotify("未找到可生成任务单的焊口!", MessageBoxIcon.Warning);
@@ -998,8 +1096,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
foreach (var weldjoint in selectRowId)
{
string canWeldingRodName = string.Empty;
string canWeldingWireName = string.Empty;
Model.HJGL_WeldTask NewTask = new Model.HJGL_WeldTask();
NewTask.ProjectId = this.CurrUser.LoginProjectId;
NewTask.UnitWorkId = PipelineService.GetPipelineByPipelineId(weldjoint.PipelineId)?.UnitWorkId;
@@ -1038,59 +1134,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
NewTask.PipeLineSortIndex = matchPipeline.FirstOrDefault(x => x.Value == weldJoint.PipelineId).Key;
NewTask.WeldingRod = weldJoint.WeldingRod;
NewTask.WeldingWire = weldJoint.WeldingWire;
//获取可替代焊丝焊条
var mat = BLL.Base_MaterialService.GetMaterialByMaterialId(weldJoint.Material1Id);
string matClass = mat.MaterialClass;
var matRod = weldingRods.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingRod);
if (matRod != null)
{
foreach (var item in weldingRods)
{
if (matClass == "Fe-1" || matClass == "Fe-3")
{
if (IsCoverClass(matRod.SteelType, item.SteelType))
{
canWeldingRodName = canWeldingRodName + item.ConsumablesName + ",";
}
}
else
{
if (matRod.SteelType == item.SteelType)
{
canWeldingRodName = canWeldingRodName + item.ConsumablesName + ",";
}
}
}
if (!string.IsNullOrEmpty(canWeldingRodName))
{
NewTask.CanWeldingRodName = canWeldingRodName.Substring(0, canWeldingRodName.Length - 1);
}
}
var matWire = weldingWires.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingWire);
if (matWire != null)
{
foreach (var item in weldingWires)
{
if (matClass == "Fe-1" || matClass == "Fe-3")
{
if (IsCoverClass(matWire.SteelType, item.SteelType))
{
canWeldingWireName = canWeldingWireName + item.ConsumablesName + ",";
}
}
else
{
if (matWire.SteelType == item.SteelType)
{
canWeldingWireName = canWeldingWireName + item.ConsumablesName + ",";
}
}
}
if (!string.IsNullOrEmpty(canWeldingWireName))
{
NewTask.CanWeldingWireName = canWeldingWireName.Substring(0, canWeldingWireName.Length - 1);
}
}
PopulateAlternativeConsumables(NewTask, weldJoint, weldingRods, weldingWires);
}
NewTask.JointAttribute = weldJoint.JointAttribute;
@@ -1098,7 +1142,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
NewTask.Tabler = this.CurrUser.PersonId;
NewTask.TableDate = DateTime.Now;
weldJoint.WeldingMode = "手动";
weldJoint.WeldingMode = ManualWeldingMode;
BLL.WeldJointService.UpdateWeldJoint(weldJoint);
BLL.WeldTaskService.AddWeldTask(NewTask);
}
@@ -1106,6 +1150,61 @@ namespace FineUIPro.Web.HJGL.WeldingManage
return true;
}
/// <summary>
/// 获取当前管线汇总表中的显示顺序,供任务单保存管线排序使用。
/// </summary>
private Dictionary<int, string> GetMatchPipelineOrder()
{
var matchPipeline = new Dictionary<int, string>();
for (int rowIndex = 0; rowIndex < Grid2.Rows.Count; rowIndex++)
{
matchPipeline.Add(rowIndex + 1, Grid2.Rows[rowIndex].RowID);
}
return matchPipeline;
}
/// <summary>
/// 根据母材类别计算任务单可替代的焊条和焊丝。
/// </summary>
private void PopulateAlternativeConsumables(
Model.HJGL_WeldTask task,
Model.HJGL_WeldJoint weldJoint,
IEnumerable<Model.Base_Consumables> weldingRods,
IEnumerable<Model.Base_Consumables> weldingWires)
{
// 获取可替代焊材时沿用原有母材类别和焊材钢号判断规则。
var material = BLL.Base_MaterialService.GetMaterialByMaterialId(weldJoint.Material1Id);
string materialClass = material.MaterialClass;
var selectedRod = weldingRods.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingRod);
var selectedWire = weldingWires.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingWire);
task.CanWeldingRodName = GetAlternativeConsumableNames(materialClass, selectedRod, weldingRods);
task.CanWeldingWireName = GetAlternativeConsumableNames(materialClass, selectedWire, weldingWires);
}
/// <summary>
/// 返回与当前焊材钢号兼容的候选名称,保持原有逗号分隔格式。
/// </summary>
private string GetAlternativeConsumableNames(
string materialClass,
Model.Base_Consumables selectedConsumable,
IEnumerable<Model.Base_Consumables> candidateConsumables)
{
if (selectedConsumable == null)
{
return null;
}
bool useCoverClass = materialClass == CoverMaterialClassFe1 || materialClass == CoverMaterialClassFe3;
var names = candidateConsumables
.Where(item => useCoverClass
? IsCoverClass(selectedConsumable.SteelType, item.SteelType)
: selectedConsumable.SteelType == item.SteelType)
.Select(item => item.ConsumablesName)
.ToList();
return names.Any() ? string.Join(",", names) : null;
}
/// <summary>
/// 按任务单实际生成规则过滤可生成任务单的焊口视图数据。
/// </summary>
@@ -1128,10 +1227,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
&& x.WeldTaskId == null
&& x.WeldingMethodCode != null
select x).ToList();
if (PipeArea == "1")
if (PipeArea == PipelineService.PipeArea_SHOP)
{
// 工厂预制材料匹配只允许预制口生成任务单,现场安装页面不套用该限制。
taskableRows = taskableRows.Where(x => x.JointAttribute == "预制口").ToList();
taskableRows = taskableRows.Where(x => x.JointAttribute == PrefabricationJointAttribute).ToList();
}
else if (PipeArea == PipelineService.PipeArea_FIELD)
{
taskableRows = taskableRows.Where(x => x.JointAttribute == InstallationJointAttribute).ToList();
}
return taskableRows;
@@ -1193,26 +1295,16 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// <returns>能覆盖返回 true,否则返回 false。</returns>
private bool IsCoverClass(string wpsClass, string matClass)
{
bool isCover = false;
int wpsSn = 0;
int matSn = 0;
if (wpsClass.Length > 2 && matClass.Length > 2)
if (wpsClass.Length <= 2 || matClass.Length <= 2)
{
string wpsPre = wpsClass.Substring(0, wpsClass.Length - 2);
string matPre = matClass.Substring(0, matClass.Length - 2);
string wps = wpsClass.Substring(wpsClass.Length - 1, 1);
wpsSn = Funs.GetNewInt(wps).HasValue ? Funs.GetNewInt(wps).Value : 0;
string mat = matClass.Substring(matClass.Length - 1, 1);
matSn = Funs.GetNewInt(mat).HasValue ? Funs.GetNewInt(mat).Value : 0;
if (wpsPre == matPre && matSn >= wpsSn)
{
return true;
}
return false;
}
return isCover;
string wpsPre = wpsClass.Substring(0, wpsClass.Length - 2);
string matPre = matClass.Substring(0, matClass.Length - 2);
int wpsSn = Funs.GetNewInt(wpsClass.Substring(wpsClass.Length - 1, 1)) ?? 0;
int matSn = Funs.GetNewInt(matClass.Substring(matClass.Length - 1, 1)) ?? 0;
return wpsPre == matPre && matSn >= wpsSn;
}
#endregion
@@ -140,6 +140,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.Button btnStatisticsMat;
/// <summary>
/// btnExportPartialComponents 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnExportPartialComponents;
/// <summary>
/// tvControlItem 控件。
/// </summary>
@@ -78,11 +78,11 @@
</Items>
</f:Panel>--%>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" RegionSplit="true" EnableCollapse="true" ShowBorder="true"
Layout="VBox" BoxConfigAlign="Stretch" ShowHeader="false" RegionSplitWidth="20px" BodyPadding="1px" Height="400px" IconFont="PlusCircle" Title="焊接日报"
Layout="VBox" BoxConfigAlign="Stretch" BoxFlex="1" ShowHeader="false" RegionSplitWidth="20px" BodyPadding="1px" IconFont="PlusCircle" Title="焊接日报"
TitleToolTip="焊接日报" AutoScroll="true">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="焊接日报" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="WeldJointId" AllowCellEditing="true" OnRowClick="Grid1_RowClick" EnableRowClickEvent="true"
runat="server" BoxFlex="2" DataKeyNames="WeldJointId" AllowCellEditing="true" OnRowClick="Grid1_RowClick" EnableRowClickEvent="true"
AllowColumnLocking="true" EnableColumnLines="true" ClicksToEdit="2" DataIDField="WeldJointId"
AllowSorting="true" SortField="PipelineCode,WeldJointCode" SortDirection="ASC" OnSort="Grid1_Sort"
AllowPaging="true" IsDatabasePaging="true" PageSize="15" OnPageIndexChange="Grid1_PageIndexChange">
@@ -264,38 +264,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </summary>
private void BindPendingGrid()
{
string strSql = @"SELECT temp.TempDetailId,
temp.WeldJointId,
temp.WeldingDate,
jot.PipelineCode,
jot.WeldJointCode,
coverWelder.WelderCode AS CoverWelderCode,
backingWelder.WelderCode AS BackingWelderCode,
temp.JointAttribute,
location.WeldingLocationCode,
jot.Size,
jot.Dia,
jot.Thickness,
jot.WeldingMethodCode,
submitPerson.PersonName AS SubmitPersonName,
temp.SubmitDate,
beforeAtt.AttachUrl AS BeforePhotoUrl,
afterAtt.AttachUrl AS AfterPhotoUrl
FROM dbo.HJGL_WeldingDailyTempDetail AS temp
LEFT JOIN dbo.View_HJGL_WeldJoint AS jot ON jot.WeldJointId = temp.WeldJointId
LEFT JOIN dbo.SitePerson_Person AS coverWelder ON coverWelder.PersonId = temp.CoverWelderId
LEFT JOIN dbo.SitePerson_Person AS backingWelder ON backingWelder.PersonId = temp.BackingWelderId
LEFT JOIN dbo.Base_WeldingLocation AS location ON location.WeldingLocationId = temp.WeldingLocationId
LEFT JOIN dbo.Person_Persons AS submitPerson ON submitPerson.PersonId = temp.SubmitPersonId
LEFT JOIN dbo.AttachFile AS beforeAtt ON beforeAtt.MenuId = @WeldReportMenuId
AND beforeAtt.ToKeyId = temp.TempDetailId + '#Before'
LEFT JOIN dbo.AttachFile AS afterAtt ON afterAtt.MenuId = @WeldReportMenuId
AND afterAtt.ToKeyId = temp.TempDetailId + '#After'
WHERE temp.ProjectId = @ProjectId AND temp.AuditState = 0";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
listStr.Add(new SqlParameter("@WeldReportMenuId", Const.HJGL_WeldReportMenuId));
var unitWork = BLL.UnitWorkService.getUnitWorkByUnitWorkId(tvControlItem.SelectedNodeID);
if (unitWork == null)
{
@@ -305,31 +273,30 @@ namespace FineUIPro.Web.HJGL.WeldingManage
unitWork = BLL.UnitWorkService.getUnitWorkByUnitWorkId(daily.UnitWorkId);
}
}
if (unitWork != null)
{
strSql += " AND temp.UnitWorkId = @UnitWorkId";
listStr.Add(new SqlParameter("@UnitWorkId", unitWork.UnitWorkId));
}
DateTime? weldingDate = null;
if (!string.IsNullOrEmpty(txtPendingWeldingDate.Text.Trim()))
{
strSql += " AND temp.WeldingDate >= @WeldingDate AND temp.WeldingDate < @WeldingDateEnd";
DateTime weldingDate = Convert.ToDateTime(txtPendingWeldingDate.Text.Trim()).Date;
listStr.Add(new SqlParameter("@WeldingDate", weldingDate));
listStr.Add(new SqlParameter("@WeldingDateEnd", weldingDate.AddDays(1)));
DateTime parsedDate;
if (!DateTime.TryParse(txtPendingWeldingDate.Text.Trim(), out parsedDate))
{
GridPending.RecordCount = 0;
GridPending.DataSource = null;
GridPending.DataBind();
Alert.ShowInTop("焊接日期格式不正确!", MessageBoxIcon.Warning);
return;
}
weldingDate = parsedDate.Date;
}
if (!string.IsNullOrEmpty(txtPendingPipelineCode.Text.Trim()))
{
strSql += " AND jot.PipelineCode LIKE @PendingPipelineCode";
listStr.Add(new SqlParameter("@PendingPipelineCode", "%" + txtPendingPipelineCode.Text.Trim() + "%"));
}
if (!string.IsNullOrEmpty(txtPendingWelderCode.Text.Trim()))
{
strSql += " AND (coverWelder.WelderCode LIKE @PendingWelderCode OR backingWelder.WelderCode LIKE @PendingWelderCode)";
listStr.Add(new SqlParameter("@PendingWelderCode", "%" + txtPendingWelderCode.Text.Trim() + "%"));
}
strSql += " ORDER BY jot.PipelineCode, jot.WeldJointCode";
DataTable tb = SQLHelper.GetDataTableRunText(strSql, listStr.ToArray());
// 待审核列表与接口共用同一套查询和字段映射,避免PC端SQL与接口逐渐分叉。
var pendingItems = BLL.WeldingDailyService.GetWeldingDailyTempDetailList(
this.CurrUser.LoginProjectId,
unitWork == null ? null : unitWork.UnitWorkId,
weldingDate,
txtPendingPipelineCode.Text.Trim(),
txtPendingWelderCode.Text.Trim());
DataTable tb = this.LINQToDataTable(pendingItems);
GridPending.RecordCount = tb.Rows.Count;
tb = GetFilteredTable(GridPending.FilteredData, tb);
var table = this.GetPagedDataTable(GridPending, tb);
@@ -55,7 +55,7 @@
<f:Tree ID="tvControlItem" ShowHeader="false" Height="560px" Title="单位工程"
OnNodeCommand="tvControlItem_NodeCommand" runat="server" ShowBorder="false" EnableCollapse="true"
EnableSingleClickExpand="false" AutoLeafIdentification="true"
EnableTextSelection="true" OnNodeExpand="tvControlItem_TreeNodeExpanded" EnableCheckBox="true" OnlyLeafCheck="true">
EnableTextSelection="true" OnNodeExpand="tvControlItem_TreeNodeExpanded" OnNodeCheck="tvControlItem_NodeCheck" EnableCheckBox="true" OnlyLeafCheck="false">
</f:Tree>
</Items>
</f:Panel>
@@ -10,7 +10,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
public partial class WeldingConDate : PageBase
{
public int pageSize = PipelineService.pageSize;
public List<string> GridWeldJointIdList { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
@@ -27,7 +27,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
this.drpPipeArea.DataSource = BLL.PipelineService.GetPipeArea();
this.drpPipeArea.DataBind();
Funs.FineUIPleaseSelect(this.drpPipeArea);
this.InitTreeMenu();
this.InitTreeMenu();
}
}
@@ -44,6 +44,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
rootNode1.Text = "建筑工程";
rootNode1.CommandName = "建筑工程";
rootNode1.Selectable = false;
rootNode1.EnableCheckBox = false;
this.tvControlItem.Nodes.Add(rootNode1);
TreeNode rootNode2 = new TreeNode();
@@ -51,6 +52,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
rootNode2.Text = "安装工程";
rootNode2.CommandName = "安装工程";
rootNode2.Expanded = true;
rootNode2.EnableCheckBox = false;
this.tvControlItem.Nodes.Add(rootNode2);
var pUnits = (from x in Funs.DB.Project_ProjectUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
@@ -121,7 +123,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
tn1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize);
tn1.EnableExpandEvent = true;
tn1.EnableClickEvent = true;
tn1.EnableCheckBox = false;
// 单位工程复选框表示“当前筛选条件下的全部管线”,不能只依赖已加载的分页节点。
tn1.EnableCheckBox = true;
rootNode1.Nodes.Add(tn1);
if (a > 0)
{
@@ -183,7 +186,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
tn2.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize);
tn2.EnableExpandEvent = true;
tn2.EnableClickEvent = true;
tn2.EnableCheckBox = false;
// 单位工程复选框表示“当前筛选条件下的全部管线”,不能只依赖已加载的分页节点。
tn2.EnableCheckBox = true;
rootNode2.Nodes.Add(tn2);
if (a > 0)
{
@@ -206,6 +210,14 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
/// <summary>
/// 单位工程节点允许勾选;不展开分页子节点,批量自动录入时会按当前筛选条件重新查询全部管线。
/// </summary>
protected void tvControlItem_NodeCheck(object sender, TreeCheckEventArgs e)
{
// FineUI 会处理父子节点的视觉状态,这里不强制勾选未加载的子节点,避免分页节点遗漏。
}
private void BindNodes(TreeNode node)
{
BLL.PipelineService.BindTreeNodes(node, ckNOEdit.Checked, this.txtPipelineCode.Text.Trim(), this.CurrUser.LoginProjectId, pageSize, this.drpPipeArea.SelectedValue);
@@ -261,12 +273,18 @@ namespace FineUIPro.Web.HJGL.WeldingManage
#region
private void BindGrid()
{
{
GridWeldJointIdList = new List<string>();
if (string.IsNullOrEmpty(tvControlItem.SelectedNodeID))
{
return;
}
string strSql = @"SELECT WeldJointId,WeldJointCode,PipelineId,PipelineCode,JointAttribute,
IsWelding,IsHotProessStr,Material1Code,Material2Code,WeldTypeCode,
Specification,HeartNo1,HeartNo2,Size,Dia,DNDia,Thickness,GrooveTypeCode,
WeldingMethodCode,WeldingWireCode,WeldingRodCode,WeldingDate,WeldingDailyCode,
BackingWelderCode,CoverWelderCode,MediumCode ,PreTemperature,JointArea,WPQCode,Remark,CAST(WeldJointCode as int) as WeldJointCodeInt
BackingWelderCode,CoverWelderCode,MediumCode ,PreTemperature,JointArea,WPQCode,Remark,TRY_CAST(WeldJointCode AS INT) AS WeldJointCodeInt
FROM View_HJGL_WeldJoint WHERE IsTwoJoint IS NULL ";
List<SqlParameter> listStr = new List<SqlParameter> { };
@@ -309,7 +327,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
SqlParameter[] parameter = listStr.ToArray();
System.Data.DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
GridWeldJointIdList = dt.AsEnumerable().Select(row => row.Field<string>("WeldJointId")).ToList();
// 2.获取当前分页数据
Grid1.RecordCount = dt.Rows.Count;
var table = this.GetPagedDataTable(Grid1, dt);
@@ -412,58 +430,19 @@ namespace FineUIPro.Web.HJGL.WeldingManage
ShowNotify("请选择工艺规程编制单位!", MessageBoxIcon.Warning);
return;
}
if (!string.IsNullOrEmpty(tvControlItem.SelectedNodeID))
// BindGrid() 上一次请求中的赋值不会保留到本次回发,按钮处理前重新查询当前筛选结果。
BindGrid();
if (GridWeldJointIdList.Any())
{
var jotList = from x in Funs.DB.HJGL_WeldJoint where x.PipelineId == tvControlItem.SelectedNodeID && x.JointAttribute == drpJointAttribute.SelectedValue select x;
if (jotList.Count() > 0)
{
foreach (var jot in jotList)
{
List<Model.View_HJGL_WPQ> wpqList = BLL.WPQListServiceService.GetMatchWPQ(jot, this.CurrUser.LoginProjectId, drpUnit.SelectedValue);
Model.HJGL_WeldJoint newJot = new Model.HJGL_WeldJoint();
if (wpqList != null)
{
Model.WPQ_WPQList wps = new Model.WPQ_WPQList();
var a = wpqList.FirstOrDefault(x => x.WeldingMethodId == "feb1234c-a538-476f-99ac-7b3ab15997c1"); //优先匹配GTAW+SMAW的焊评
if (a == null)
{
wps = BLL.WPQListServiceService.GetWPQById(wpqList.First().WPQId);
}
else
{
wps = BLL.WPQListServiceService.GetWPQById(a.WPQId);
}
newJot.WPQId = wps.WPQId;
newJot.WeldJointId = jot.WeldJointId;
newJot.WeldingRod = wps.WeldingRod;
newJot.WeldingWire = wps.WeldingWire;
newJot.WeldingMethodId = wps.WeldingMethodId;
newJot.GrooveTypeId = wps.GrooveType;
newJot.PreTemperature = wps.PreTemperature;
newJot.IsHotProess = wps.IsHotProess;
newJot.MatchableWPQ = string.Join(",", wpqList.Select(x => x.WPQCode));
}
else
{
newJot.WPQId = null;
newJot.WeldJointId = jot.WeldJointId;
newJot.WeldingRod = null;
newJot.WeldingWire = null;
newJot.WeldingMethodId = null;
newJot.GrooveTypeId = null;
newJot.PreTemperature = null;
newJot.IsHotProess = null;
newJot.MatchableWPQ = null;
}
BLL.WeldJointService.UpdateConWeldJoint(newJot);
}
}
AutoInputWeldJoints(GridWeldJointIdList);
BindGrid();
ShowNotify("该管线焊口已完成自动录入!", MessageBoxIcon.Success);
}
else
{
ShowNotify("当前筛选条件下没有可自动录入的焊口!", MessageBoxIcon.Warning);
}
}
protected void btnAutoInput2_Click(object sender, EventArgs e)
{
@@ -473,64 +452,23 @@ namespace FineUIPro.Web.HJGL.WeldingManage
return;
}
TreeNode[] nodes = tvControlItem.GetCheckedNodes();
if (nodes.Length > 0)
var pipelineIds = new List<string>();
foreach (TreeNode node in nodes)
{
foreach (TreeNode node in nodes)
if (node.CommandName == "管线")
{
if (!string.IsNullOrEmpty(node.NodeID))
{
var jotList = from x in Funs.DB.HJGL_WeldJoint where x.PipelineId == node.NodeID && x.JointAttribute == drpJointAttribute.SelectedValue select x;
if (jotList.Count() > 0)
{
foreach (var jot in jotList)
{
List<Model.View_HJGL_WPQ> wpqList = BLL.WPQListServiceService.GetMatchWPQ(jot, this.CurrUser.LoginProjectId, drpUnit.SelectedValue);
Model.HJGL_WeldJoint newJot = new Model.HJGL_WeldJoint();
if (wpqList != null)
{
Model.WPQ_WPQList wps = new Model.WPQ_WPQList();
var a = wpqList.FirstOrDefault(x => x.WeldingMethodId == "feb1234c-a538-476f-99ac-7b3ab15997c1"); //优先匹配GTAW+SMAW的焊评
if (a == null)
{
wps = BLL.WPQListServiceService.GetWPQById(wpqList.First().WPQId);
}
else
{
wps = BLL.WPQListServiceService.GetWPQById(a.WPQId);
}
newJot.WPQId = wps.WPQId;
newJot.WeldJointId = jot.WeldJointId;
newJot.WeldingRod = wps.WeldingRod;
newJot.WeldingWire = wps.WeldingWire;
newJot.WeldingMethodId = wps.WeldingMethodId;
newJot.GrooveTypeId = wps.GrooveType;
newJot.PreTemperature = wps.PreTemperature;
newJot.IsHotProess = wps.IsHotProess;
newJot.MatchableWPQ = string.Join(",", wpqList.Select(x => x.WPQCode));
}
else
{
newJot.WPQId = null;
newJot.WeldJointId = jot.WeldJointId;
newJot.WeldingRod = null;
newJot.WeldingWire = null;
newJot.WeldingMethodId = null;
newJot.GrooveTypeId = null;
newJot.PreTemperature = null;
newJot.IsHotProess = null;
newJot.MatchableWPQ = null;
}
BLL.WeldJointService.UpdateConWeldJoint(newJot);
}
}
}
if (!string.IsNullOrEmpty(node.NodeID)) pipelineIds.Add(node.NodeID);
}
// BindGrid();
else if (node.CommandName != null && node.CommandName.Split('|').Length == 2)
{
// 单位工程节点覆盖全部分页数据,不能只取树上当前已经展开的叶子节点。
pipelineIds.AddRange(GetPipelineIdsByUnitWork(node.NodeID));
}
}
pipelineIds = pipelineIds.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList();
if (pipelineIds.Count > 0)
{
AutoInputWeldJoints(GetAutoInputWeldJoints(pipelineIds));
ShowNotify("该管线焊口已完成自动录入!", MessageBoxIcon.Success);
}
else
@@ -539,6 +477,69 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
/// <summary>
/// 按当前树筛选条件查询单位工程下的全部管线,覆盖分页和未展开节点。
/// </summary>
private List<string> GetPipelineIdsByUnitWork(string unitWorkId)
{
var query = Funs.DB.HJGL_Pipeline.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == unitWorkId);
if (this.drpPipeArea.SelectedValue != BLL.Const._Null)
{
query = query.Where(x => x.PipeArea == this.drpPipeArea.SelectedValue);
}
if (!string.IsNullOrEmpty(this.txtPipelineCode.Text.Trim()))
{
query = query.Where(x => x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()));
}
if (ckNOEdit.Checked)
{
query = query.Where(p => Funs.DB.HJGL_WeldJoint.Any(w => w.PipelineId == p.PipelineId && w.IsTwoJoint == null && w.WPQId == null));
}
return query.Select(x => x.PipelineId).ToList();
}
/// <summary>
/// “全部”表示不增加焊口属性条件;预制口和安装口仍按选择值精确筛选。
/// </summary>
private List<string> GetAutoInputWeldJoints(IEnumerable<string> pipelineIds)
{
var ids = pipelineIds.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList();
var query = Funs.DB.HJGL_WeldJoint.Where(x => ids.Contains(x.PipelineId));
if (!string.IsNullOrEmpty(drpJointAttribute.SelectedValue))
{
query = query.Where(x => x.JointAttribute == drpJointAttribute.SelectedValue);
}
return query.Select(x=>x.WeldJointId).ToList();
}
private void AutoInputWeldJoints(List<string> weldJoints)
{
foreach (var weldJointId in weldJoints)
{
List<Model.View_HJGL_WPQ> wpqList = BLL.WPQListServiceService.GetMatchWPQ(WeldJointService.GetWeldJointByWeldJointId(weldJointId), this.CurrUser.LoginProjectId, drpUnit.SelectedValue);
Model.HJGL_WeldJoint newJot = new Model.HJGL_WeldJoint { WeldJointId = weldJointId };
if (wpqList != null && wpqList.Count > 0)
{
// 优先匹配 GTAW+SMAW 的焊评,保持原有业务优先级。
var match = wpqList.FirstOrDefault(x => x.WeldingMethodId == "feb1234c-a538-476f-99ac-7b3ab15997c1") ?? wpqList.First();
Model.WPQ_WPQList wps = BLL.WPQListServiceService.GetWPQById(match.WPQId);
if (wps != null)
{
newJot.WPQId = wps.WPQId;
newJot.WeldingRod = wps.WeldingRod;
newJot.WeldingWire = wps.WeldingWire;
newJot.WeldingMethodId = wps.WeldingMethodId;
newJot.GrooveTypeId = wps.GrooveType;
newJot.PreTemperature = wps.PreTemperature;
newJot.IsHotProess = wps.IsHotProess;
newJot.MatchableWPQ = string.Join(",", wpqList.Select(x => x.WPQCode));
}
}
BLL.WeldJointService.UpdateConWeldJoint(newJot);
}
}
protected void btnEdit_Click(object sender, EventArgs e)
{
if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, BLL.Const.HJGL_WeldJointMenuId, BLL.Const.BtnModify))