feat(hjgl): 完善焊接任务与质量管理流程

This commit is contained in:
2026-08-19 17:13:33 +08:00
parent 08792e0dc8
commit 679e9f6cec
68 changed files with 2481 additions and 1170 deletions
@@ -93,7 +93,8 @@
<f:TextBox ID="txtTaskCode" Label="焊接任务单编号" ShowRedStar="true" Required="true"
runat="server" LabelWidth="130px" >
</f:TextBox>
<f:DropDownList runat="server" ID="drpUnit" Label ="单位名称" OnSelectedIndexChanged="drpUnit_SelectedIndexChanged"></f:DropDownList>
<f:DropDownList runat="server" ID="drpUnit" Label ="单位名称" AutoPostBack="true" OnSelectedIndexChanged="drpUnit_SelectedIndexChanged"></f:DropDownList>
<f:DropDownList runat="server" ID="drpTeamGroup" Label="班组" EnableEdit="true"></f:DropDownList>
<f:TextBox ID="txtUnitWorkName" Label="单位工程" LabelAlign="Right"
runat="server" LabelWidth="100px" Enabled="false">
</f:TextBox>
@@ -201,6 +201,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
this.txtUnitWorkName.Text = UnitWork.UnitWorkName;
}
}
InitTeamGroupDropDown();
var currentTask = Funs.DB.HJGL_WeldTask.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId
&& x.TaskCode == this.txtTaskCode.Text.Trim());
if (currentTask != null && !string.IsNullOrEmpty(currentTask.TeamGroupId))
{
drpTeamGroup.SelectedValue = currentTask.TeamGroupId;
}
this.InitTreeMenu();//加载树
}
}
@@ -385,6 +392,12 @@ namespace FineUIPro.Web.HJGL.WeldingManage
Funs.FineUIPleaseSelect(drpFlowingSection);
}
private void InitTeamGroupDropDown()
{
TeamGroupService.InitTeamGroupProjectUnitDropDownList(
drpTeamGroup, this.CurrUser.LoginProjectId, drpUnit.SelectedValue, true);
}
#endregion
#region 线
@@ -512,6 +525,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
NewTask.ProjectId = this.CurrUser.LoginProjectId;
NewTask.UnitWorkId = this.UnitWorkId;
NewTask.UnitId = drpUnit.SelectedValue;
NewTask.TeamGroupId = drpTeamGroup.SelectedValue == Const._Null ? null : drpTeamGroup.SelectedValue;
NewTask.TaskCode = this.txtTaskCode.Text.Trim();
NewTask.SerialNumber = SerialNumber;
@@ -595,6 +609,9 @@ namespace FineUIPro.Web.HJGL.WeldingManage
BLL.WeldJointService.UpdateWeldJoint(weldJoint);
BLL.WeldTaskService.AddWeldTask(NewTask);
}
// 编辑任务单时同步更新同一TaskCode已有的全部焊口记录。
BLL.WeldTaskService.UpdateTaskTeamGroup(this.CurrUser.LoginProjectId,
this.txtTaskCode.Text.Trim(), drpTeamGroup.SelectedValue);
//string pipelineId = this.tvControlItem.SelectedNodeID;
//var model = BLL.PipelineService.GetPipelineByPipelineId(pipelineId);
//model.State = 1;
@@ -646,7 +663,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
{
this.txtTaskCode.Text = BLL.WeldTaskService.GetTaskCodeByDate(this.CurrUser.LoginProjectId, this.txtTaskDate.Text, UnitWorkId, drpUnit.SelectedValue);
InitTeamGroupDropDown();
}
protected void drpJointAttribute_SelectedIndexChanged(object sender, EventArgs e)
{
@@ -708,4 +725,4 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
}
@@ -194,6 +194,11 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.DropDownList drpUnit;
/// <summary>
/// drpTeamGroup 控件。
/// </summary>
protected global::FineUIPro.DropDownList drpTeamGroup;
/// <summary>
/// txtUnitWorkName 控件。
/// </summary>
@@ -56,6 +56,12 @@
<f:RenderField Width="130px" DataField="WeldJointCode" HeaderText="焊口号" />
<f:RenderField Width="100px" DataField="QualifiedText" HeaderText="外观是否合格"
TextAlign="Center" />
<f:RenderField Width="100px" DataField="WeldReinforcement" HeaderText="焊缝余高" />
<f:RenderField Width="100px" DataField="WeldHeight" HeaderText="焊缝高度" />
<f:RenderField Width="100px" DataField="WeldWidth" HeaderText="焊缝宽度" />
<f:RenderField Width="160px" DataField="SurfaceDefect" HeaderText="表面缺陷" />
<f:RenderField Width="100px" DataField="PreheatTemperature" HeaderText="预热温度" />
<f:RenderField Width="100px" DataField="InterpassTemperature" HeaderText="层间温度" />
<f:RenderField Width="120px" DataField="CheckPersonName" HeaderText="检测人"
TextAlign="Center" />
<f:RenderField Width="170px" DataField="CheckTime" FieldType="Date"
@@ -28,6 +28,24 @@
</f:DropDownList>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:NumberBox ID="numWeldReinforcement" runat="server" Label="焊缝余高" DecimalPrecision="2" LabelWidth="130px" />
<f:NumberBox ID="numWeldHeight" runat="server" Label="焊缝高度" DecimalPrecision="2" LabelWidth="130px" />
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:NumberBox ID="numWeldWidth" runat="server" Label="焊缝宽度" DecimalPrecision="2" LabelWidth="130px" />
<f:TextBox ID="txtSurfaceDefect" runat="server" Label="表面缺陷" LabelWidth="130px" />
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:NumberBox ID="numPreheatTemperature" runat="server" Label="预热温度" DecimalPrecision="2" LabelWidth="130px" />
<f:NumberBox ID="numInterpassTemperature" runat="server" Label="层间温度" DecimalPrecision="2" LabelWidth="130px" />
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownList ID="ddlCheckPerson" runat="server" Label="检测人" Required="true"
@@ -32,6 +32,12 @@ namespace FineUIPro.Web.HJGL.WeldingManage
ddlCheckPerson.SelectedValue = model.CheckPerson;
dpCheckTime.SelectedDate = model.CheckTime;
txtRemark.Text = model.Remark;
numWeldReinforcement.Text = ToText(model.WeldReinforcement);
numWeldHeight.Text = ToText(model.WeldHeight);
numWeldWidth.Text = ToText(model.WeldWidth);
txtSurfaceDefect.Text = model.SurfaceDefect;
numPreheatTemperature.Text = ToText(model.PreheatTemperature);
numInterpassTemperature.Text = ToText(model.InterpassTemperature);
}
private void BindWeldJoints()
@@ -64,11 +70,21 @@ namespace FineUIPro.Web.HJGL.WeldingManage
CheckPerson = ddlCheckPerson.SelectedValue,
CheckTime = dpCheckTime.SelectedDate,
Remark = txtRemark.Text.Trim(),
WeldReinforcement = ToDecimal(numWeldReinforcement.Text),
WeldHeight = ToDecimal(numWeldHeight.Text),
WeldWidth = ToDecimal(numWeldWidth.Text),
SurfaceDefect = txtSurfaceDefect.Text.Trim(),
PreheatTemperature = ToDecimal(numPreheatTemperature.Text),
InterpassTemperature = ToDecimal(numInterpassTemperature.Text),
CreateUser = CurrUser.PersonId
});
ShowNotify("保存成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
}
catch (ArgumentException ex)
{
ShowNotify(ex.Message, MessageBoxIcon.Warning);
}
catch (Exception ex)
{
Alert.ShowInTop(ex.Message, MessageBoxIcon.Warning);
@@ -81,5 +97,16 @@ namespace FineUIPro.Web.HJGL.WeldingManage
"../../AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/HJGL/WeldingManage/WeldAppearanceCheck&menuId={1}&edit=1",
AppearanceCheckId, Const.HJGL_WeldAppearanceCheckMenuId)));
}
private static decimal? ToDecimal(string value)
{
decimal result;
return decimal.TryParse(value, out result) ? result : (decimal?)null;
}
private static string ToText(decimal? value)
{
return value.HasValue ? value.Value.ToString() : string.Empty;
}
}
}
@@ -59,6 +59,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.DropDownList ddlQualified;
protected global::FineUIPro.NumberBox numWeldReinforcement;
protected global::FineUIPro.NumberBox numWeldHeight;
protected global::FineUIPro.NumberBox numWeldWidth;
protected global::FineUIPro.TextBox txtSurfaceDefect;
protected global::FineUIPro.NumberBox numPreheatTemperature;
protected global::FineUIPro.NumberBox numInterpassTemperature;
/// <summary>
/// ddlCheckPerson 控件。
/// </summary>
@@ -66,19 +66,8 @@
<f:Panel ID="Panel2" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="Region" BoxConfigAlign="Stretch">
<Items>
<%--<f:Panel ID="panelTopRegion" runat="server" RegionPosition="Center" ShowBorder="true"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title="三维模型"
TitleToolTip="三维模型显示" AutoScroll="true">
<Items>
<f:ContentPanel ID="ContentPanel1" runat="server" ShowHeader="false" EnableCollapse="true"
BodyPadding="0px">
<uc1:_3DLook ID="ctlAuditFlow" runat="server" Width="1000px" Height="1000px"/>
</f:ContentPanel>
</Items>
</f:Panel>--%>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" RegionSplit="true" EnableCollapse="true" ShowBorder="true"
Layout="VBox" BoxConfigAlign="Stretch" BoxFlex="1" ShowHeader="false" RegionSplitWidth="20px" BodyPadding="1px" IconFont="PlusCircle" Title="焊接日报"
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" ShowBorder="true" RegionPercent="50%"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title="焊接日报"
TitleToolTip="焊接日报" AutoScroll="true">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="焊接日报" EnableCollapse="true"
@@ -233,8 +222,12 @@
</f:DropDownList>
</PageItems>
</f:Grid>
<f:Grid ID="GridPending" ShowBorder="true" ShowHeader="true" Title="待审核" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="TempDetailId" AllowCellEditing="false"
</Items>
</f:Panel>
<f:Panel runat="server" ID="panelBottomRegion" RegionPosition="Bottom" RegionSplit="true" RegionSplitWidth="20px" EnableCollapse="true" RegionPercent="50%"
Title="待审核" ShowBorder="true" Height="320px" ShowHeader="true" BodyPadding="1px" Layout="Fit" >
<Items>
<f:Grid ID="GridPending" ShowBorder="false" ShowHeader="false" runat="server" BoxFlex="1" DataKeyNames="TempDetailId" AllowCellEditing="false"
AllowColumnLocking="true" EnableColumnLines="true" DataIDField="TempDetailId"
AllowSorting="true" SortField="PipelineCode,WeldJointCode" SortDirection="ASC" OnSort="GridPending_Sort"
AllowPaging="true" IsDatabasePaging="true" PageSize="30" OnPageIndexChange="GridPending_PageIndexChange"
@@ -253,8 +246,11 @@
</f:TextBox>
<f:ToolbarFill ID="ToolbarFillPending" runat="server">
</f:ToolbarFill>
<f:Button ID="btnPendingAudit" Text="审核通过" ToolTip="审核通过" Icon="ApplicationEdit" runat="server"
ConfirmText="确认审核通过选中记录" ConfirmTarget="Top" OnClick="btnPendingAudit_Click">
<f:Button ID="btnPendingTeamAudit" Text="班组审核" ToolTip="班组审核" Icon="ApplicationEdit" runat="server"
ConfirmText="确认完成选中记录的班组审核?" ConfirmTarget="Top" OnClick="btnPendingTeamAudit_Click">
</f:Button>
<f:Button ID="btnPendingProfessionalAudit" Text="专工审核" ToolTip="专工审核" Icon="ApplicationEdit" runat="server"
ConfirmText="确认完成选中记录的专工审核?" ConfirmTarget="Top" OnClick="btnPendingProfessionalAudit_Click">
</f:Button>
<f:Button ID="btnPendingDelete" Text="删除" ToolTip="删除未审核记录" Icon="Delete" runat="server"
ConfirmText="确认删除选中待审核记录?" ConfirmTarget="Top" OnClick="btnPendingDelete_Click">
@@ -297,12 +293,36 @@
<f:RenderField HeaderText="焊接方法" ColumnID="WeldingMethodCode" DataField="WeldingMethodCode" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="160px">
</f:RenderField>
<f:RenderField HeaderText="焊缝类型" ColumnID="WeldTypeCode" DataField="WeldTypeCode" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="100px">
</f:RenderField>
<f:RenderField HeaderText="焊丝" ColumnID="WeldingWireCode" DataField="WeldingWireCode" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="焊条" ColumnID="WeldingRodCode" DataField="WeldingRodCode" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="提交人" ColumnID="SubmitPersonName" DataField="SubmitPersonName" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="90px">
</f:RenderField>
<f:RenderField HeaderText="提交时间" ColumnID="SubmitDate" DataField="SubmitDate" FieldType="Date"
Renderer="Date" HeaderTextAlign="Center" TextAlign="Center" Width="140px">
</f:RenderField>
<f:RenderField HeaderText="审核状态" ColumnID="AuditStateText" DataField="AuditStateText" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="100px">
</f:RenderField>
<f:RenderField HeaderText="班组审核人" ColumnID="TeamAuditManName" DataField="TeamAuditManName" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="100px">
</f:RenderField>
<f:RenderField HeaderText="班组审核时间" ColumnID="TeamAuditDate" DataField="TeamAuditDate" FieldType="Date"
Renderer="Date" HeaderTextAlign="Center" TextAlign="Center" Width="140px">
</f:RenderField>
<f:RenderField HeaderText="专工审核人" ColumnID="ProfessionalAuditManName" DataField="ProfessionalAuditManName" FieldType="String"
HeaderTextAlign="Center" TextAlign="Center" Width="100px">
</f:RenderField>
<f:RenderField HeaderText="专工审核时间" ColumnID="ProfessionalAuditDate" DataField="ProfessionalAuditDate" FieldType="Date"
Renderer="Date" HeaderTextAlign="Center" TextAlign="Center" Width="140px">
</f:RenderField>
<f:TemplateField ColumnID="tfPendingBeforePhotoUrl" MinWidth="120px" HeaderText="焊前附件" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
@@ -330,10 +350,10 @@
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
</Items>
</f:Panel>
</Items>
@@ -215,8 +215,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
OUTER APPLY (
SELECT TOP 1 temp.TempDetailId
FROM dbo.HJGL_WeldingDailyTempDetail AS temp
WHERE temp.WeldJointId = jot.WeldJointId AND temp.AuditState = 1
ORDER BY temp.AuditDate DESC, temp.SubmitDate DESC
WHERE temp.WeldJointId = jot.WeldJointId AND temp.AuditState = 2
ORDER BY temp.ProfessionalAuditDate DESC, temp.SubmitDate DESC
) AS reportTemp
LEFT JOIN dbo.AttachFile AS beforeAtt ON beforeAtt.MenuId = @WeldReportMenuId
AND beforeAtt.ToKeyId = reportTemp.TempDetailId + '#Before'
@@ -728,10 +728,45 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
/// <summary>
/// 待审核记录审核通过
/// 班组审核
/// </summary>
protected void btnPendingAudit_Click(object sender, EventArgs e)
protected void btnPendingTeamAudit_Click(object sender, EventArgs e)
{
if (!CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId,
Const.HJGL_WeldReportMenuId, Const.BtnAuditing))
{
ShowNotify("您没有审核权限,请与管理员联系!", MessageBoxIcon.Warning);
return;
}
if (GridPending.SelectedRowIDArray.Length == 0)
{
ShowNotify("请选择要审核的记录", MessageBoxIcon.Warning);
return;
}
string errlog = BLL.WeldingDailyService.TeamAuditWeldingDailyTempDetails(GridPending.SelectedRowIDArray, this.CurrUser.PersonId);
this.BindPendingGrid();
if (string.IsNullOrEmpty(errlog))
{
ShowNotify("班组审核完成!", MessageBoxIcon.Success);
}
else
{
Alert.ShowInTop("部分记录处理失败:" + errlog, MessageBoxIcon.Warning);
}
}
/// <summary>
/// 专工审核
/// </summary>
protected void btnPendingProfessionalAudit_Click(object sender, EventArgs e)
{
if (!CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId,
Const.HJGL_WeldReportMenuId, Const.BtnAuditing))
{
ShowNotify("您没有审核权限,请与管理员联系!", MessageBoxIcon.Warning);
return;
}
if (GridPending.SelectedRowIDArray.Length == 0)
{
ShowNotify("请选择要审核的记录", MessageBoxIcon.Warning);
@@ -743,7 +778,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
this.BindPendingGrid();
if (string.IsNullOrEmpty(errlog))
{
ShowNotify("审核通过", MessageBoxIcon.Success);
ShowNotify("专工审核完成", MessageBoxIcon.Success);
}
else
{
@@ -266,6 +266,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// panelBottomRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelBottomRegion;
/// <summary>
/// GridPending 控件。
/// </summary>
@@ -321,13 +330,22 @@ namespace FineUIPro.Web.HJGL.WeldingManage
protected global::FineUIPro.ToolbarFill ToolbarFillPending;
/// <summary>
/// btnPendingAudit 控件。
/// btnPendingTeamAudit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPendingAudit;
protected global::FineUIPro.Button btnPendingTeamAudit;
/// <summary>
/// btnPendingProfessionalAudit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPendingProfessionalAudit;
/// <summary>
/// btnPendingDelete 控件。
@@ -33,6 +33,13 @@
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox ID="txtTreePipelineCode" runat="server" Label="管线号" LabelAlign="Right"
EmptyText="输入查询条件" Width="180px" LabelWidth="70px">
</f:TextBox>
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar5" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox ID="txtWeldJointCode" runat="server" Label="焊口号" LabelAlign="Right"
EmptyText="输入查询条件" Width="180px" LabelWidth="70px">
@@ -69,14 +76,17 @@
<Items>
<f:HiddenField runat="server" ID="hdItemsString"></f:HiddenField>
<f:HiddenField runat="server" ID="hdTaskWeldJoint"></f:HiddenField>
<f:Button runat="server" ID="CreatWeldableWeldJoint" Icon="ChartPie" Text="生成可焊焊工" OnClick="CreatWeldableWeldJoint_Click"></f:Button>
<f:Label ID="lblTotalSize" runat="server" Text="总达因数:0" CssClass="customlabel"></f:Label>
<f:RadioButtonList runat="server" ID="rbIsAudit" LabelAlign="Right" AutoColumnWidth="true" Label="状态" LabelWidth="80px" Width="420px" AutoPostBack="true" OnSelectedIndexChanged="rbIsAudit_SelectedIndexChanged">
<f:RadioItem Selected="true" Text="全部" Value="2" />
<f:RadioItem Text="未生成可焊焊工" Value="0" />
<f:RadioItem Text="已生成可焊焊工" Value="1" />
</f:RadioButtonList>
<f:Button ID="btnSelectWelder" runat="server" Text="选择焊工批量填充" OnClick="btnSelectWelder_Click" Hidden="True">
</f:Button>
<f:DropDownList ID="drpCanWelder" EnableEdit="true" runat="server" LabelWidth="140px" Hidden="True">
</f:DropDownList>
<f:Button ID="btnSaveWelder" Icon="Accept" runat="server" Text="确认" OnClick="btnSaveWelder_Click" Hidden="True"></f:Button>
@@ -85,8 +95,8 @@
<f:Button runat="server" ID="btnSearch" Icon="SystemSearch" ToolTip="查询" Text="查询" OnClick="btnSearch_Click">
</f:Button>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Label ID="lblTotalSize" runat="server" Text="总达因数:0" CssClass="customlabel"></f:Label>
<f:Button ID="btnPassMaster" Text="专工审核" Icon="ArrowRefresh" runat="server" OnClick="btnPassMaster_OnClick">
<f:Button runat="server" ID="CreatWeldableWeldJoint" Icon="ChartPie" Text="生成可焊焊工" OnClick="CreatWeldableWeldJoint_Click"></f:Button>
<f:Button ID="btnPassMaster" Text="专工审核" Icon="ArrowRefresh" runat="server" OnClick="btnPassMaster_OnClick" Hidden="true">
</f:Button>
<f:DatePicker ID="txtTaskDate" Label="计划焊接日期" runat="server"
DateFormatString="yyyy-MM-dd" LabelAlign="Left" LabelWidth="110px" Hidden="true">
@@ -95,10 +105,12 @@
</f:Button>--%>
<f:Button ID="btnGenOutPlanMaster" Text="生成出库申请单" Icon="ArrowRefresh" runat="server" OnClick="btnGenOutPlanMaster_Click">
</f:Button>
<f:Button ID="btnGenAntiCorrosionTrust" Text="生成防腐委托单" Icon="ArrowRefresh" runat="server" OnClick="btnGenAntiCorrosionTrust_Click">
</f:Button>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" Text="保存" OnClick="btnSave_Click" Hidden="True">
</f:Button>
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar3" Position="Top" runat="server" ToolbarAlign="Left">
@@ -116,10 +128,10 @@
<f:Button ID="btnPrintJoint" Text="打印焊口贴纸" Icon="Printer" runat="server"
OnClick="btnPrintJoint_Click">
</f:Button>
<f:Button ID="btnPrintTaskJointPrefab" Text="焊口打印(预制)" Icon="Printer" runat="server"
<f:Button ID="btnPrintTaskJointPrefab" Text="焊口打印(预制)" Icon="Printer" runat="server" Hidden="true"
OnClick="btnPrintTaskJointPrefab_Click">
</f:Button>
<f:Button ID="btnPrintTaskJointInstall" Text="焊口打印(安装)" Icon="Printer" runat="server"
<f:Button ID="btnPrintTaskJointInstall" Text="焊口打印(安装)" Icon="Printer" runat="server" Hidden="true"
OnClick="btnPrintTaskJointInstall_Click">
</f:Button>
</Items>
@@ -162,7 +162,12 @@ namespace FineUIPro.Web.HJGL.WeldingManage
foreach (var q in unitWork2)
{
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
if (string.IsNullOrEmpty(this.txtWeldJointCode.Text.Trim()))
// 左侧树的管线号和焊口号为组合筛选条件,任一条件为空时不限制对应字段。
string weldJointCode = this.txtWeldJointCode.Text.Trim();
string pipelineCode = this.txtTreePipelineCode.Text.Trim();
bool hasWeldJointCode = !string.IsNullOrEmpty(weldJointCode);
bool hasPipelineCode = !string.IsNullOrEmpty(pipelineCode);
if (!hasWeldJointCode && !hasPipelineCode)
{
var a = (from x in Funs.DB.HJGL_WeldTask
where x.UnitWorkId == q.UnitWorkId
@@ -190,7 +195,9 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
var a = (from x in Funs.DB.HJGL_WeldTask
join y in Funs.DB.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId
where x.UnitWorkId == q.UnitWorkId && y.WeldJointCode.Contains(this.txtWeldJointCode.Text.Trim())
where x.UnitWorkId == q.UnitWorkId
&& (!hasWeldJointCode || y.WeldJointCode.Contains(weldJointCode))
&& (!hasPipelineCode || y.PipelineCode.Contains(pipelineCode))
select x.TaskDate.Value.Date).Distinct().Count();
TreeNode tn2 = new TreeNode();
tn2.NodeID = q.UnitWorkId;
@@ -204,7 +211,9 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
var date = (from x in Funs.DB.HJGL_WeldTask
join y in Funs.DB.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId
where x.UnitWorkId == q.UnitWorkId && y.WeldJointCode.Contains(this.txtWeldJointCode.Text.Trim())
where x.UnitWorkId == q.UnitWorkId
&& (!hasWeldJointCode || y.WeldJointCode.Contains(weldJointCode))
&& (!hasPipelineCode || y.PipelineCode.Contains(pipelineCode))
select x.TaskDate.Value.Date).First();
this.txtTaskDateMonth.Text = string.Format("{0:yyyy-MM}", date);
// BindNodes(tn1);
@@ -229,7 +238,11 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
private void BindNodes(TreeNode node)
{
if (string.IsNullOrEmpty(this.txtWeldJointCode.Text.Trim()))
string weldJointCode = this.txtWeldJointCode.Text.Trim();
string pipelineCode = this.txtTreePipelineCode.Text.Trim();
bool hasWeldJointCode = !string.IsNullOrEmpty(weldJointCode);
bool hasPipelineCode = !string.IsNullOrEmpty(pipelineCode);
if (!hasWeldJointCode && !hasPipelineCode)
{
var p = (from x in Funs.DB.HJGL_WeldTask
where x.UnitWorkId == node.NodeID
@@ -253,7 +266,9 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
var p = (from x in Funs.DB.HJGL_WeldTask
join y in Funs.DB.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId
where x.UnitWorkId == node.NodeID && y.WeldJointCode.Contains(this.txtWeldJointCode.Text.Trim())
where x.UnitWorkId == node.NodeID
&& (!hasWeldJointCode || y.WeldJointCode.Contains(weldJointCode))
&& (!hasPipelineCode || y.PipelineCode.Contains(pipelineCode))
orderby x.TaskDate descending
select new { x.TaskDate.Value.Date, x.UnitId, x.SerialNumber }).Distinct().ToList().OrderBy(x => x.SerialNumber);
if (p.Count() > 0)
@@ -278,13 +293,26 @@ namespace FineUIPro.Web.HJGL.WeldingManage
this.InitTreeMenu();
}
/// <summary>
/// 任务单列表、任务单打印和焊口贴纸统一使用此顺序,避免同一任务单在不同入口显示顺序不一致。
/// </summary>
private static List<Model.View_HJGL_WeldingTask> OrderWeldingTaskRows(IEnumerable<Model.View_HJGL_WeldingTask> weldingTasks)
{
return (weldingTasks ?? Enumerable.Empty<Model.View_HJGL_WeldingTask>())
.OrderBy(x => x.PipeLineSortIndex)
.ThenBy(x => x.WeldJointCode)
.ThenBy(x => x.WeldTaskId)
.ToList();
}
private void BindGrid(List<Model.View_HJGL_WeldingTask> weldingTask)
{
UpdateTotalSizeLabel(weldingTask);
if (!string.IsNullOrEmpty(this.txtPipelineCode.Text.Trim()))
{
weldingTask = weldingTask.Where(e => e.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())).OrderBy(x => x.PipeLineSortIndex).ToList();
weldingTask = weldingTask.Where(e => e.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())).ToList();
}
weldingTask = OrderWeldingTaskRows(weldingTask);
DataTable tb = this.LINQToDataTable(weldingTask);
// 2.获取当前分页数据
@@ -366,7 +394,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
BLL.FastReportService.ResetData();
var pipelineIds = taskList.Select(x => x.PipelineId).Distinct().ToList();
var pipelines = Funs.DB.HJGL_Pipeline.Where(x => pipelineIds.Contains(x.PipelineId)).ToList();
var result = taskList.OrderBy(x => x.PipeLineSortIndex).ThenBy(x => x.WeldJointCode).Select(x =>
var result = OrderWeldingTaskRows(taskList).Select(x =>
{
var pipeline = pipelines.FirstOrDefault(y => y.PipelineId == x.PipelineId);
return new
@@ -1301,6 +1329,10 @@ namespace FineUIPro.Web.HJGL.WeldingManage
protected void btnSearch_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty( tvControlItem.SelectedNodeID)||tvControlItem.SelectedNodeID.Split('|').Length!=4)
{
return;
}
//List<Model.View_HJGL_WeldingTask> GetWeldingTaskItem = this.CollectGridJointInfo();
DateTime? taskTime = Funs.GetNewDateTime(tvControlItem.SelectedNodeID.Split('|')[2]);
if (taskTime != null)
@@ -1375,6 +1407,10 @@ namespace FineUIPro.Web.HJGL.WeldingManage
protected void rbIsAudit_SelectedIndexChanged(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(tvControlItem.SelectedNodeID) || tvControlItem.SelectedNodeID.Split('|').Length != 4)
{
return;
}
DateTime? taskTime = Funs.GetNewDateTime(tvControlItem.SelectedNodeID.Split('|')[2]);
if (taskTime != null)
{
@@ -1409,6 +1445,50 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
/// <summary>
/// 根据当前逻辑任务单生成防腐委托单。
/// </summary>
protected void btnGenAntiCorrosionTrust_Click(object sender, EventArgs e)
{
if (!CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId,
Const.Tw_AntiCorrosionTrustMenuId, Const.BtnAdd))
{
ShowNotify("您没有生成防腐委托单的权限!", MessageBoxIcon.Warning);
return;
}
if (string.IsNullOrEmpty(tvControlItem.SelectedNodeID) || !tvControlItem.SelectedNodeID.Contains("|"))
{
ShowNotify("请选择任务单", MessageBoxIcon.Question);
return;
}
string[] values = tvControlItem.SelectedNodeID.Split('|');
DateTime taskDate;
if (values.Length < 4 || !DateTime.TryParse(values[2], out taskDate))
{
ShowNotify("任务单参数不正确", MessageBoxIcon.Warning);
return;
}
var task = Funs.DB.HJGL_WeldTask.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId
&& x.UnitWorkId == values[0] && x.UnitId == values[1]
&& x.TaskDate.HasValue && x.TaskDate.Value.Date == taskDate.Date && x.SerialNumber == values[3]);
if (task == null)
{
ShowNotify("未找到任务单", MessageBoxIcon.Warning);
return;
}
try
{
TwAntiCorrosionTrustService.GenerateByTaskCode(task.ProjectId, task.TaskCode, this.CurrUser.PersonId);
ShowNotify("防腐委托单生成成功", MessageBoxIcon.Success);
}
catch (ArgumentException ex)
{
ShowNotify(ex.Message, MessageBoxIcon.Warning);
}
}
protected void btnPrintJoint_Click(object sender, EventArgs e)
{
var rows = Grid1.SelectedRowIndexArray;
@@ -1422,6 +1502,12 @@ namespace FineUIPro.Web.HJGL.WeldingManage
{
BLL.FastReportService.ResetData();
var selectedTaskOrder = OrderWeldingTaskRows(GetCurrentTaskList())
.Where(x => !string.IsNullOrEmpty(x.WeldJointId) && jointids.Contains(x.WeldJointId))
.Select((x, index) => new { x.WeldJointId, Index = index })
.GroupBy(x => x.WeldJointId)
.ToDictionary(x => x.Key, x => x.First().Index);
// 防腐等级维护在管线上,打印时由焊口关联管线,再通过防腐字典取得显示代码。
var result = (from weldJoint in Funs.DB.View_HJGL_WeldJoint
where jointids.Contains(weldJoint.WeldJointId)
@@ -1438,7 +1524,11 @@ namespace FineUIPro.Web.HJGL.WeldingManage
SortIndex = weldJoint.WeldJointCode.Replace(weldJoint.PipelineCode + "/", ""),
WeldJointPoint = weldJoint.WeldJointPoint,
PaintCode = paint == null ? string.Empty : paint.PaintCode
}).OrderBy(x => x.pipelineCode).ThenBy(x => x.SortIndex).ToList();
}).ToList()
.OrderBy(x => selectedTaskOrder.ContainsKey(x.WeldJointId) ? selectedTaskOrder[x.WeldJointId] : int.MaxValue)
.ThenBy(x => x.pipelineCode)
.ThenBy(x => x.SortIndex)
.ToList();
var tb = LINQToDataTable(result);
if (tb != null && tb.Rows.Count > 0)
{
@@ -1495,8 +1585,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
DateTime? taskTime = Funs.GetNewDateTime(tvControlItem.SelectedNodeID.Split('|')[2]);
if (taskTime != null)
{
var weldTaskList = BLL.WeldTaskService.GetWeldingTaskList(this.CurrUser.LoginProjectId, tvControlItem.SelectedNodeID.Split('|')[0], tvControlItem.SelectedNodeID.Split('|')[1], Convert.ToDateTime(taskTime), this.rbIsAudit.SelectedValue, tvControlItem.SelectedNodeID.Split('|')[3]);
var pipelines = weldTaskList.OrderBy(x => x.PipeLineSortIndex).Select(x => x.PipelineId).Distinct().ToList();
var weldTaskList = OrderWeldingTaskRows(BLL.WeldTaskService.GetWeldingTaskList(this.CurrUser.LoginProjectId, tvControlItem.SelectedNodeID.Split('|')[0], tvControlItem.SelectedNodeID.Split('|')[1], Convert.ToDateTime(taskTime), this.rbIsAudit.SelectedValue, tvControlItem.SelectedNodeID.Split('|')[3]));
var pipelines = weldTaskList.Select(x => x.PipelineId).Distinct().ToList();
if (pipelines.Any())
{
@@ -1572,9 +1662,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
y.MaterialMade,
y.MaterialSpec
}).ToList();
var sortedTaskList = weldTaskList.OrderBy(x => x.PipeLineSortIndex).ThenBy(x => x.WeldJointCode).ToList();
foreach (var task in sortedTaskList)
foreach (var task in weldTaskList)
{
var taskMaterials = printMaterials.Where(x => x.WeldJointId == task.WeldJointId)
.OrderBy(x => x.Code).ToList();
@@ -77,6 +77,24 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// txtTreePipelineCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtTreePipelineCode;
/// <summary>
/// Toolbar5 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar5;
/// <summary>
/// txtWeldJointCode 控件。
/// </summary>
@@ -150,13 +168,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
protected global::FineUIPro.HiddenField hdTaskWeldJoint;
/// <summary>
/// CreatWeldableWeldJoint 控件。
/// lblTotalSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button CreatWeldableWeldJoint;
protected global::FineUIPro.Label lblTotalSize;
/// <summary>
/// rbIsAudit 控件。
@@ -213,13 +231,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
protected global::FineUIPro.Button btnSearch;
/// <summary>
/// lblTotalSize 控件。
/// CreatWeldableWeldJoint 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lblTotalSize;
protected global::FineUIPro.Button CreatWeldableWeldJoint;
/// <summary>
/// btnPassMaster 控件。
@@ -248,6 +266,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.Button btnGenOutPlanMaster;
/// <summary>
/// btnGenAntiCorrosionTrust 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnGenAntiCorrosionTrust;
/// <summary>
/// btnSave 控件。
/// </summary>