feat(hjgl): 增加焊接日志导出与管道预制汇总

补充俄文焊接日志导出和管道预制汇总报表,统一菜单、数据库脚本与导出模板,便于按日报或单位工程查看和交付施工统计数据。
This commit is contained in:
2026-08-26 15:30:34 +08:00
parent a0669475f1
commit ad6ef33ce2
13 changed files with 1041 additions and 1 deletions
@@ -0,0 +1,81 @@
/*
焊接数据分析:管道预制汇总菜单
可重复执行,已有菜单时同步修正名称、地址、父级和排序。
*/
DECLARE @MenuId NVARCHAR(50) = N'9A28D681-0C91-49B8-9A63-DA3FEEA25BC2';
DECLARE @SuperMenuId NVARCHAR(50) = N'F3B157B7-9BEE-4150-80CB-087828F1C51D';
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_Menu WHERE MenuId = @SuperMenuId)
BEGIN
RAISERROR(N'未找到父菜单“焊接数据分析”,请先执行焊接管理菜单初始化脚本。', 16, 1);
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Sys_Menu WHERE MenuId = @MenuId)
BEGIN
UPDATE dbo.Sys_Menu
SET MenuName = N'管道预制汇总',
Icon = NULL,
Url = N'HJGL/WeldingReport/PipePrefabricationSummary.aspx',
SortIndex = 85,
SuperMenu = @SuperMenuId,
MenuType = N'Menu_HJGL',
IsOffice = 0,
IsEnd = 1,
IsUsed = 1
WHERE MenuId = @MenuId;
END
ELSE
BEGIN
INSERT INTO dbo.Sys_Menu
(
MenuId,
MenuName,
Icon,
Url,
SortIndex,
SuperMenu,
MenuType,
IsOffice,
IsEnd,
IsUsed
)
VALUES
(
@MenuId,
N'管道预制汇总',
NULL,
N'HJGL/WeldingReport/PipePrefabricationSummary.aspx',
85,
@SuperMenuId,
N'Menu_HJGL',
0,
1,
1
);
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo.Sys_ButtonToMenu
WHERE MenuId = @MenuId
AND ButtonName = N'查看'
)
BEGIN
INSERT INTO dbo.Sys_ButtonToMenu
(
ButtonToMenuId,
MenuId,
ButtonName,
SortIndex
)
VALUES
(
N'40D01F4E-D38C-4480-ABF3-5FE45C0E8650',
@MenuId,
N'查看',
1
);
END;
GO
+1
View File
@@ -461,6 +461,7 @@
<Compile Include="HJGL\TestPackage\TestPackagePrintService.cs" />
<Compile Include="HJGL\WeldingManage\HJGL_ComponentJointService.cs" />
<Compile Include="HJGL\WeldingManage\HJGL_WeldingReportService.cs" />
<Compile Include="HJGL\WeldingReport\PipePrefabricationSummaryService.cs" />
<Compile Include="HJGL\WeldingManage\PipelineComponentService.cs" />
<Compile Include="HJGL\WeldingManage\PipelineMatService.cs" />
<Compile Include="HJGL\WeldingManage\PipelineService.cs" />
@@ -1355,6 +1355,178 @@ namespace BLL
return list;
}
/// <summary>
/// 获取焊接日志导出数据;传日报ID时导出单份日报,否则按单位工程和月份导出。
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitWorkId">单位工程ID</param>
/// <param name="weldingDailyId">焊接日报ID</param>
/// <param name="month">月份,格式为yyyy-MM</param>
/// <returns>仅包含俄文表头和业务数据的焊接日志</returns>
public static DataTable GetWeldingLogExportData(string projectId, string unitWorkId,
string weldingDailyId, string month)
{
if (string.IsNullOrWhiteSpace(projectId)
|| (string.IsNullOrWhiteSpace(unitWorkId) && string.IsNullOrWhiteSpace(weldingDailyId)))
{
return new DataTable();
}
DateTime monthStart = DateTime.MinValue;
if (string.IsNullOrWhiteSpace(weldingDailyId)
&& !DateTime.TryParse(month + "-01", out monthStart))
{
return new DataTable();
}
string condition;
var parameters = new List<SqlParameter>
{
new SqlParameter("@ProjectId", projectId)
};
if (!string.IsNullOrWhiteSpace(weldingDailyId))
{
condition = "jot.WeldingDailyId = @WeldingDailyId";
parameters.Add(new SqlParameter("@WeldingDailyId", weldingDailyId));
}
else
{
condition = @"jot.UnitWorkId = @UnitWorkId
AND jot.WeldingDateD >= @MonthStart
AND jot.WeldingDateD < @NextMonth";
parameters.Add(new SqlParameter("@UnitWorkId", unitWorkId));
parameters.Add(new SqlParameter("@MonthStart", monthStart.Date));
parameters.Add(new SqlParameter("@NextMonth", monthStart.Date.AddMonths(1)));
}
// 俄文日志列横跨焊口、日报、外观、热处理、硬度和无损检测,统一在服务层完成映射,页面仅负责下载。
string sql = @"
SELECT ROW_NUMBER() OVER (ORDER BY jot.WeldingDateD, jot.PipelineCode, jot.WeldJointCode) AS C01,
CONCAT(jot.PipelineCode, '/', jot.WeldJointCode,
CASE WHEN ISNULL(jot.WeldTypeCode, '') = '' THEN '' ELSE ', ' + jot.WeldTypeCode END) AS C02,
CASE WHEN welder.BackingDisplay = welder.CoverDisplay THEN welder.BackingDisplay
WHEN welder.BackingDisplay = '' THEN welder.CoverDisplay
WHEN welder.CoverDisplay = '' THEN welder.BackingDisplay
ELSE welder.BackingDisplay + CHAR(10) + welder.CoverDisplay END AS C03,
REPLACE(ISNULL(jot.MaterialCode, ''), '/', ' / ') AS C04,
REPLACE(REPLACE(
COALESCE(NULLIF(jot.Specification, ''),
CONCAT(CONVERT(varchar(30), jot.Dia), N'×', CONVERT(varchar(30), jot.Thickness))),
N'Φ', ''), '*', N'×') AS C05,
CONVERT(varchar(10), jot.WeldingDateD, 104) AS C06,
ISNULL(jot.WeldingMethodCode, '') AS C07,
CONCAT(
CASE WHEN ISNULL(jot.WeldingWireCode, '') = '' THEN ''
ELSE jot.WeldingWireCode + CASE WHEN ISNULL(wire.Standard, '') = '' THEN '' ELSE ' (' + wire.Standard + ')' END END,
CASE WHEN ISNULL(jot.WeldingWireCode, '') = '' OR ISNULL(jot.WeldingRodCode, '') = '' THEN '' ELSE CHAR(10) END,
CASE WHEN ISNULL(jot.WeldingRodCode, '') = '' THEN ''
ELSE jot.WeldingRodCode + CASE WHEN ISNULL(rod.Standard, '') = '' THEN '' ELSE ' (' + rod.Standard + ')' END END) AS C08,
CASE WHEN appearance.PreheatTemperature IS NULL AND appearance.InterpassTemperature IS NULL
THEN CASE WHEN ISNULL(jot.PreTemperature, '') = '' THEN '' ELSE jot.PreTemperature + N' °C' END
WHEN appearance.InterpassTemperature IS NULL
THEN CONCAT(CONVERT(varchar(30), appearance.PreheatTemperature), N' °C')
WHEN appearance.PreheatTemperature IS NULL
THEN CONCAT(CONVERT(varchar(30), appearance.InterpassTemperature), N' °C')
ELSE CONCAT(CONVERT(varchar(30), appearance.PreheatTemperature), ' / ',
CONVERT(varchar(30), appearance.InterpassTemperature), N' °C') END AS C09,
N'' AS C10,
N'' AS C11,
N'' AS C12,
ISNULL(hotProcess.RecordChartNo, '') AS C13,
CONCAT(
CASE WHEN hardness.HardNessValue1 IS NULL THEN '' ELSE CONVERT(varchar(20), hardness.HardNessValue1) END,
CASE WHEN hardness.HardNessValue2 IS NULL THEN '' ELSE '/' + CONVERT(varchar(20), hardness.HardNessValue2) END,
CASE WHEN hardness.HardNessValue3 IS NULL THEN '' ELSE '/' + CONVERT(varchar(20), hardness.HardNessValue3) END,
CASE WHEN ISNULL(hardness.HardReportNo, '') = '' THEN '' ELSE ', ' + RTRIM(hardness.HardReportNo) END,
CASE WHEN hardness.ReportDate IS NULL THEN '' ELSE ', ' + CONVERT(varchar(10), hardness.ReportDate, 104) END) AS C14,
CASE WHEN appearance.IsQualified = 1 THEN N'Годен'
WHEN appearance.IsQualified = 0 THEN N'Не годен'
ELSE N'' END AS C15,
ISNULL(ndt.ResultText, '') AS C16,
N'' AS C17
FROM dbo.View_HJGL_WeldJoint AS jot
LEFT JOIN dbo.Base_Consumables AS wire ON wire.ConsumablesId = jot.WeldingWire
LEFT JOIN dbo.Base_Consumables AS rod ON rod.ConsumablesId = jot.WeldingRod
OUTER APPLY
(
SELECT CONCAT(ISNULL(jot.BackingWelderName, ''),
CASE WHEN ISNULL(jot.BackingWelderCode, '') = '' THEN '' ELSE ' (' + jot.BackingWelderCode + ')' END) AS BackingDisplay,
CONCAT(ISNULL(jot.CoverWelderName, ''),
CASE WHEN ISNULL(jot.CoverWelderCode, '') = '' THEN '' ELSE ' (' + jot.CoverWelderCode + ')' END) AS CoverDisplay
) AS welder
OUTER APPLY
(
SELECT TOP 1 checkItem.IsQualified, checkItem.PreheatTemperature, checkItem.InterpassTemperature
FROM dbo.HJGL_WeldAppearanceCheck AS checkItem
WHERE checkItem.WeldJointId = jot.WeldJointId
ORDER BY checkItem.CheckTime DESC, checkItem.CreateTime DESC, checkItem.AppearanceCheckId DESC
) AS appearance
OUTER APPLY
(
SELECT TOP 1 report.RecordChartNo
FROM dbo.HJGL_HotProess_TrustItem AS trustItem
LEFT JOIN dbo.HJGL_HotProess_Report AS report
ON report.HotProessTrustItemId = trustItem.HotProessTrustItemId
WHERE trustItem.WeldJointId = jot.WeldJointId
ORDER BY report.ProessDate DESC, report.HotProessReportId DESC
) AS hotProcess
OUTER APPLY
(
SELECT TOP 1 report.HardReportNo, report.HardNessValue1, report.HardNessValue2,
report.HardNessValue3, hardTrust.ReportDate
FROM dbo.HJGL_Hard_TrustItem AS hardItem
LEFT JOIN dbo.HJGL_Hard_Report AS report ON report.HardTrustItemID = hardItem.HardTrustItemID
LEFT JOIN dbo.HJGL_Hard_Trust AS hardTrust ON hardTrust.HardTrustID = hardItem.HardTrustID
WHERE hardItem.WeldJointId = jot.WeldJointId
ORDER BY hardTrust.ReportDate DESC, report.SortIndex, report.HardReportId DESC
) AS hardness
OUTER APPLY
(
SELECT STUFF((
SELECT CHAR(10) + CONCAT(ISNULL(detectionType.DetectionTypeCode, ''),
CASE ndeItem.CheckResult WHEN '1' THEN N': Годен' WHEN '2' THEN N': Не годен' ELSE '' END,
CASE WHEN ISNULL(ndeItem.NDEReportNo, nde.NDECode) IS NULL THEN ''
ELSE ', ' + ISNULL(ndeItem.NDEReportNo, nde.NDECode) END,
CASE WHEN ndeItem.ReportDate IS NULL THEN '' ELSE ', ' + CONVERT(varchar(10), ndeItem.ReportDate, 104) END)
FROM dbo.HJGL_Batch_BatchTrustItem AS trustItem
INNER JOIN dbo.HJGL_Batch_NDEItem AS ndeItem ON ndeItem.TrustBatchItemId = trustItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_Batch_NDE AS nde ON nde.NDEID = ndeItem.NDEID
LEFT JOIN dbo.Base_DetectionType AS detectionType ON detectionType.DetectionTypeId = ndeItem.DetectionTypeId
WHERE trustItem.WeldJointId = jot.WeldJointId
ORDER BY ndeItem.ReportDate, ndeItem.NDEItemID
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '') AS ResultText
) AS ndt
WHERE jot.ProjectId = @ProjectId AND " + condition;
DataTable table = SQLHelper.GetDataTableRunText(sql, parameters.ToArray());
string[] headers =
{
"№\r\nп/п",
"Обозначение сварного соединения по исполнительному чертежу, тип сварного соединения ГОСТ 16037",
"Ф.И.О.\r\nсварщика,\r\nличное\r\nклеймо",
"Марка стали (композиция марок\r\nсталей), НД, №№ сертификатов",
"Наружный диаметр элемента трубопровода и толщина стенки Dн×S, мм",
"Дата сварки, температурные условия в рабочей зоне,°С",
"Способ\r\nсварки",
"Сварочные материалы (марка электрода, сварочной проволоки, защитный газ, флюс), НД, №№ сертификатов",
"Режим\r\nпредварительного и\r\nсопутствующего\r\nподогрева",
"Отметка о контроле\r\nкорня\r\nшва",
"Стилоскопирование металла шва,\r\n№ заключения, дата",
"Ф.И.О. оператора- термиста, личное клеймо",
"№ диаграммы по журналу термообработки сварных соединений",
"Твердость металла шва, № заключения, дата",
"Отметка о годности сварного соединения по внешнему осмотру и измерениям",
"Способ и результаты неразрушающего контроля сварного соединения, № заключения, дата",
"Результаты измерения ферритной фазы в металле шва, № заключения, дата"
};
for (int i = 0; i < headers.Length; i++)
{
table.Columns[i].ColumnName = headers[i];
}
return table;
}
public static Dictionary<string, object> GetFileOutValueById(string WeldingDailyId)
{
var value = new Dictionary<string, object>();
@@ -0,0 +1,203 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace BLL
{
/// <summary>
/// 管道预制汇总服务。
/// </summary>
public static class PipePrefabricationSummaryService
{
/// <summary>
/// 按单位、单位工程汇总管道预制达因。
/// </summary>
public static List<PipePrefabricationSummaryItem> GetSummary(
string projectId,
IEnumerable<string> unitWorkIds,
DateTime startDate,
DateTime endDate,
DateTime reportDate)
{
if (string.IsNullOrWhiteSpace(projectId))
{
throw new ArgumentException("项目不能为空。", "projectId");
}
if (startDate.Date > endDate.Date)
{
throw new ArgumentException("开始日期不能晚于结束日期。");
}
var selectedUnitWorkIds = (unitWorkIds ?? Enumerable.Empty<string>())
.Where(x => !string.IsNullOrWhiteSpace(x) && x != Const._Null)
.Distinct()
.ToList();
var parameters = new List<SqlParameter>
{
new SqlParameter("@ProjectId", projectId),
new SqlParameter("@StartDate", startDate.Date),
// 结束日期按整日包含,SQL 使用小于次日零点规避时间精度问题。
new SqlParameter("@EndDateExclusive", endDate.Date.AddDays(1)),
// 报表日期 D 的昨日数据取 D-1,当日零点作为昨日区间的结束边界。
new SqlParameter("@DailyStartDate", reportDate.Date.AddDays(-1)),
new SqlParameter("@ReportDate", reportDate.Date)
};
string unitWorkFilter = string.Empty;
if (selectedUnitWorkIds.Count > 0)
{
var parameterNames = new List<string>();
for (int index = 0; index < selectedUnitWorkIds.Count; index++)
{
string parameterName = "@UnitWorkId" + index;
parameterNames.Add(parameterName);
parameters.Add(new SqlParameter(parameterName, selectedUnitWorkIds[index]));
}
unitWorkFilter = " AND unitWork.UnitWorkId IN (" + string.Join(",", parameterNames) + ")";
}
string sql = @"
SELECT
ISNULL(unitWork.UnitWorkName, '') AS UnitWorkName,
ISNULL(unitInfo.UnitCode, '') AS ConstructionUnitCode,
ISNULL(unitWork.UnitWorkCode, '') AS UnitWorkCode,
CAST(SUM(ISNULL(joint.Size, 0)) AS DECIMAL(19, 2)) AS TotalDrawingQuantity,
CAST(SUM(ISNULL(joint.Size, 0)) AS DECIMAL(19, 2)) AS IsoDrawingQuantity,
CAST(SUM(CASE WHEN joint.JointAttribute = N'预制口' THEN ISNULL(joint.Size, 0) ELSE 0 END) AS DECIMAL(19, 2)) AS WorkFrontQuantity,
CAST(SUM(CASE
WHEN joint.JointAttribute = N'预制口'
AND daily.WeldingDate < @EndDateExclusive
THEN ISNULL(joint.Size, 0) ELSE 0 END) AS DECIMAL(19, 2)) AS CompletedQuantity,
CAST(SUM(CASE
WHEN joint.JointAttribute = N'预制口'
AND daily.WeldingDate >= @StartDate
AND daily.WeldingDate < @EndDateExclusive
THEN ISNULL(joint.Size, 0) ELSE 0 END) AS DECIMAL(19, 2)) AS WeeklyQuantity,
CAST(SUM(CASE
WHEN joint.JointAttribute = N'预制口'
AND daily.WeldingDate >= @DailyStartDate
AND daily.WeldingDate < @ReportDate
THEN ISNULL(joint.Size, 0) ELSE 0 END) AS DECIMAL(19, 2)) AS DailyQuantity,
CAST(SUM(CASE
WHEN joint.JointAttribute = N'预制口'
AND daily.WeldingDate < @DailyStartDate
THEN ISNULL(joint.Size, 0) ELSE 0 END) AS DECIMAL(19, 2)) AS PreviousDayCumulativeQuantity,
CAST(SUM(CASE
WHEN joint.JointAttribute = N'预制口'
AND daily.WeldingDate < @StartDate
THEN ISNULL(joint.Size, 0) ELSE 0 END) AS DECIMAL(19, 2)) AS LastWeekCumulativeQuantity
FROM HJGL_WeldJoint joint
INNER JOIN HJGL_Pipeline pipeline ON pipeline.PipelineId = joint.PipelineId
INNER JOIN WBS_UnitWork unitWork ON unitWork.UnitWorkId = pipeline.UnitWorkId
LEFT JOIN Base_Unit unitInfo ON unitInfo.UnitId = unitWork.UnitId
LEFT JOIN HJGL_WeldingDaily daily ON daily.WeldingDailyId = joint.WeldingDailyId
WHERE pipeline.ProjectId = @ProjectId
AND pipeline.PipeArea = '1'" + unitWorkFilter + @"
GROUP BY unitWork.UnitWorkName, unitInfo.UnitCode, unitWork.UnitWorkCode
ORDER BY unitWork.UnitWorkName, unitWork.UnitWorkCode";
DataTable table = SQLHelper.GetDataTableRunText(sql, parameters.ToArray());
return table.AsEnumerable().Select((row, index) =>
{
string unitCode;
string blockCode;
ParseUnitAndBlock(
Convert.ToString(row["UnitWorkName"]),
Convert.ToString(row["ConstructionUnitCode"]),
Convert.ToString(row["UnitWorkCode"]),
out unitCode,
out blockCode);
return new PipePrefabricationSummaryItem
{
RowKey = (index + 1).ToString(),
UnitCode = unitCode,
UnitWorkCode = blockCode,
// 当前模型没有独立的计划图纸达因字段,图纸总量按工厂预制管线设计焊口总达因统计。
TotalDrawingQuantity = GetDecimal(row, "TotalDrawingQuantity"),
IsoDrawingQuantity = GetDecimal(row, "IsoDrawingQuantity"),
WorkFrontQuantity = GetDecimal(row, "WorkFrontQuantity"),
CompletedQuantity = GetDecimal(row, "CompletedQuantity"),
DailyQuantity = GetDecimal(row, "DailyQuantity"),
PreviousDayCumulativeQuantity = GetDecimal(row, "PreviousDayCumulativeQuantity"),
WeeklyQuantity = GetDecimal(row, "WeeklyQuantity"),
LastWeekCumulativeQuantity = GetDecimal(row, "LastWeekCumulativeQuantity"),
Note = string.Empty
};
}).ToList();
}
private static void ParseUnitAndBlock(
string unitWorkName,
string fallbackUnitCode,
string fallbackBlockCode,
out string unitCode,
out string blockCode)
{
// 本项目单位工程名称按“Unit.Block”维护,报表需拆分成两个业务列。
string[] segments = (unitWorkName ?? string.Empty).Split(new[] { '.' }, 2);
if (segments.Length == 2
&& !string.IsNullOrWhiteSpace(segments[0])
&& !string.IsNullOrWhiteSpace(segments[1]))
{
unitCode = segments[0].Trim();
blockCode = segments[1].Trim();
return;
}
unitCode = fallbackUnitCode ?? string.Empty;
blockCode = fallbackBlockCode ?? string.Empty;
}
private static decimal GetDecimal(DataRow row, string columnName)
{
return row.IsNull(columnName) ? 0M : Convert.ToDecimal(row[columnName]);
}
}
/// <summary>
/// 管道预制汇总行。
/// </summary>
public class PipePrefabricationSummaryItem
{
public string RowKey { get; set; }
public string UnitCode { get; set; }
public string UnitWorkCode { get; set; }
public decimal TotalDrawingQuantity { get; set; }
public decimal IsoDrawingQuantity { get; set; }
public decimal WorkFrontQuantity { get; set; }
public decimal CompletedQuantity { get; set; }
public decimal DailyQuantity { get; set; }
public decimal PreviousDayCumulativeQuantity { get; set; }
public decimal WeeklyQuantity { get; set; }
public decimal LastWeekCumulativeQuantity { get; set; }
public string Note { get; set; }
public string TotalDrawingQuantityDisplay { get { return FormatQuantity(TotalDrawingQuantity); } }
public string IsoDrawingQuantityDisplay { get { return FormatQuantity(IsoDrawingQuantity); } }
public string WorkFrontQuantityDisplay { get { return FormatQuantity(WorkFrontQuantity); } }
public string CompletedQuantityDisplay { get { return FormatQuantity(CompletedQuantity); } }
public string DailyQuantityDisplay { get { return FormatQuantity(DailyQuantity); } }
public string PreviousDayCumulativeQuantityDisplay { get { return FormatQuantity(PreviousDayCumulativeQuantity); } }
public string WeeklyQuantityDisplay { get { return FormatQuantity(WeeklyQuantity); } }
public string LastWeekCumulativeQuantityDisplay { get { return FormatQuantity(LastWeekCumulativeQuantity); } }
public string QuantityCompleteRateDisplay
{
get
{
return TotalDrawingQuantity <= 0M
? "0.00%"
: (CompletedQuantity * 100M / TotalDrawingQuantity).ToString("0.00") + "%";
}
}
public static string FormatQuantity(decimal quantity)
{
return quantity.ToString("#,##0.##");
}
}
}
+10 -1
View File
@@ -368,6 +368,7 @@
<Content Include="CLGL\AntiCorrosionCheckRecordEdit.aspx" />
<Content Include="CLGL\AntiCorrosionCheckRecordView.aspx" />
<Content Include="File\Excel\DataOut\防腐委托单.xlsx" />
<Content Include="File\Excel\DataOut\管道预制汇总模板.xlsx" />
<Content Include="File\Fastreport\防腐委托单.frx" />
<Content Include="common\main2.aspx" />
<Content Include="common\mainMenu_DigitalSite.aspx" />
@@ -1733,6 +1734,7 @@
<Content Include="HJGL\WeldingReport\JointShowColumn.aspx" />
<Content Include="HJGL\WeldingReport\NDTMonthlyReport.aspx" />
<Content Include="HJGL\WeldingReport\NDTWeeklyReport.aspx" />
<Content Include="HJGL\WeldingReport\PipePrefabricationSummary.aspx" />
<Content Include="HJGL\WeldingReport\PipePrefabricationRateStatistics.aspx" />
<Content Include="HJGL\WeldingReport\UnitWorkareaAnalyze.aspx" />
<Content Include="HJGL\WeldingReport\UnitWorkAreaQuality.aspx" />
@@ -8279,7 +8281,7 @@
</Compile>
<Compile Include="CLGL\InPlanMaster.aspx.cs">
<DependentUpon>InPlanMaster.aspx</DependentUpon>
<SubType>Component</SubType>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="CLGL\InPlanMaster.aspx.designer.cs">
<DependentUpon>InPlanMaster.aspx</DependentUpon>
@@ -11689,6 +11691,13 @@
<Compile Include="HJGL\WeldingReport\NDTWeeklyReport.aspx.designer.cs">
<DependentUpon>NDTWeeklyReport.aspx</DependentUpon>
</Compile>
<Compile Include="HJGL\WeldingReport\PipePrefabricationSummary.aspx.cs">
<DependentUpon>PipePrefabricationSummary.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HJGL\WeldingReport\PipePrefabricationSummary.aspx.designer.cs">
<DependentUpon>PipePrefabricationSummary.aspx</DependentUpon>
</Compile>
<Compile Include="HJGL\WeldingReport\PipePrefabricationRateStatistics.aspx.cs">
<DependentUpon>PipePrefabricationRateStatistics.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@@ -389,6 +389,9 @@
<f:MenuButton ID="btnMenuOut" OnClick="btnOut_Click" Icon="FolderUp" EnableAjax="false" DisableControlBeforePostBack="false"
runat="server" Text="导出">
</f:MenuButton>
<f:MenuButton ID="btnMenuWeldingLogOut" OnClick="btnWeldingLogOut_Click" Icon="FolderUp" EnableAjax="false" DisableControlBeforePostBack="false"
runat="server" Text="导出(焊接日志)">
</f:MenuButton>
<f:MenuButton ID="btnMenuDelete" OnClick="btnMenuDelete_Click" EnablePostBack="true"
Icon="Delete" ConfirmText="删除选中行?" ConfirmTarget="Top"
runat="server" Text="删除">
@@ -1,5 +1,7 @@
using BLL;
using MiniExcelLibs;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
@@ -728,6 +730,135 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
/// <summary>
/// 导出俄文焊接日志。
/// </summary>
protected void btnWeldingLogOut_Click(object sender, EventArgs e)
{
if (tvControlItem.SelectedNode == null
|| (tvControlItem.SelectedNode.CommandName != "UnitWork"
&& tvControlItem.SelectedNode.CommandName != "WeldingDaily"))
{
Alert.ShowInTop("请选择单位工程或焊接日报!", MessageBoxIcon.Warning);
return;
}
string unitWorkId = null;
string weldingDailyId = null;
string fileName;
if (tvControlItem.SelectedNode.CommandName == "WeldingDaily")
{
weldingDailyId = tvControlItem.SelectedNodeID;
var daily = BLL.WeldingDailyService.GetPipeline_WeldingDailyByWeldingDailyId(weldingDailyId);
if (daily == null || daily.ProjectId != this.CurrUser.LoginProjectId)
{
Alert.ShowInTop("所选焊接日报不存在!", MessageBoxIcon.Warning);
return;
}
var unitWork = UnitWorkService.getUnitWorkByUnitWorkId(daily.UnitWorkId);
fileName = "焊接日志-" + (unitWork == null ? string.Empty : unitWork.UnitWorkName + "-")
+ daily.WeldingDailyCode + ".xlsx";
}
else
{
unitWorkId = tvControlItem.SelectedNodeID;
var unitWork = BLL.UnitWorkService.getUnitWorkByUnitWorkId(unitWorkId);
if (unitWork == null || unitWork.ProjectId != this.CurrUser.LoginProjectId)
{
Alert.ShowInTop("所选单位工程不存在!", MessageBoxIcon.Warning);
return;
}
fileName = "焊接日志-" + unitWork.UnitWorkName + "-" + txtMonth.Text.Trim() + ".xlsx";
}
DataTable data = BLL.WeldingDailyService.GetWeldingLogExportData(
this.CurrUser.LoginProjectId, unitWorkId, weldingDailyId, txtMonth.Text.Trim());
if (data.Rows.Count == 0)
{
Alert.ShowInTop("无数据,无法导出!", MessageBoxIcon.Warning);
return;
}
byte[] fileBytes;
var workbook = new XSSFWorkbook();
using (var stream = new MemoryStream())
{
ISheet sheet = workbook.CreateSheet("Сварочный журнал");
ICellStyle headerStyle = workbook.CreateCellStyle();
headerStyle.Alignment = HorizontalAlignment.Center;
headerStyle.VerticalAlignment = VerticalAlignment.Center;
headerStyle.WrapText = true;
headerStyle.BorderTop = BorderStyle.Thin;
headerStyle.BorderRight = BorderStyle.Thin;
headerStyle.BorderBottom = BorderStyle.Thin;
headerStyle.BorderLeft = BorderStyle.Thin;
IFont headerFont = workbook.CreateFont();
headerFont.IsBold = true;
headerFont.FontHeightInPoints = 10;
headerStyle.SetFont(headerFont);
ICellStyle dataStyle = workbook.CreateCellStyle();
dataStyle.Alignment = HorizontalAlignment.Center;
dataStyle.VerticalAlignment = VerticalAlignment.Center;
dataStyle.WrapText = true;
dataStyle.BorderTop = BorderStyle.Thin;
dataStyle.BorderRight = BorderStyle.Thin;
dataStyle.BorderBottom = BorderStyle.Thin;
dataStyle.BorderLeft = BorderStyle.Thin;
IRow headerRow = sheet.CreateRow(0);
headerRow.HeightInPoints = 90;
for (int columnIndex = 0; columnIndex < data.Columns.Count; columnIndex++)
{
ICell cell = headerRow.CreateCell(columnIndex);
cell.SetCellValue(data.Columns[columnIndex].ColumnName);
cell.CellStyle = headerStyle;
}
for (int rowIndex = 0; rowIndex < data.Rows.Count; rowIndex++)
{
IRow row = sheet.CreateRow(rowIndex + 1);
row.HeightInPoints = 30;
for (int columnIndex = 0; columnIndex < data.Columns.Count; columnIndex++)
{
ICell cell = row.CreateCell(columnIndex);
object value = data.Rows[rowIndex][columnIndex];
if (columnIndex == 0 && value != DBNull.Value)
{
cell.SetCellValue(Convert.ToDouble(value));
}
else
{
cell.SetCellValue(value == DBNull.Value ? string.Empty : value.ToString());
}
cell.CellStyle = dataStyle;
}
}
int[] columnWidths = { 6, 45, 25, 35, 25, 25, 16, 45, 24, 18, 26, 24, 24, 28, 35, 45, 35 };
for (int i = 0; i < columnWidths.Length; i++)
{
sheet.SetColumnWidth(i, columnWidths[i] * 256);
}
sheet.CreateFreezePane(0, 1);
sheet.FitToPage = true;
sheet.PrintSetup.Landscape = true;
sheet.PrintSetup.FitWidth = 1;
workbook.Write(stream);
fileBytes = stream.ToArray();
}
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
response.AddHeader("Content-Disposition", "attachment;filename="
+ HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
response.AddHeader("Content-Length", fileBytes.Length.ToString());
response.BinaryWrite(fileBytes);
response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
protected void btnMenuDeleteDetail_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
@@ -469,6 +469,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuOut;
/// <summary>
/// btnMenuWeldingLogOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuWeldingLogOut;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>
@@ -0,0 +1,102 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PipePrefabricationSummary.aspx.cs" Inherits="FineUIPro.Web.HJGL.WeldingReport.PipePrefabricationSummary" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>管道预制汇总</title>
<link href="../../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.f-grid-row-summary .f-grid-cell-inner {
font-weight: bold;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" runat="server" ShowBorder="true" ShowHeader="false"
Title="管道预制汇总" BoxFlex="1" EnableColumnLines="true" EnableTextSelection="true"
DataKeyNames="RowKey" DataIDField="RowKey" EnableSummary="true" SummaryPosition="Flow">
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:DropDownList ID="drpUnitWork" runat="server" Label="单位工程"
LabelAlign="Right" LabelWidth="80px" Width="320px" EmptyText="全部单位工程"
EnableEdit="true" EnableCheckBoxSelect="true" EnableMultiSelect="true"
AutoSelectFirstItem="false">
</f:DropDownList>
<f:DatePicker ID="dpReportDate" runat="server" Label="报表日期"
LabelAlign="Right" LabelWidth="80px" Width="190px">
</f:DatePicker>
<f:DatePicker ID="dpStartDate" runat="server" Label="日期范围"
LabelAlign="Right" LabelWidth="80px" Width="190px">
</f:DatePicker>
<f:Label ID="lblDateSeparator" runat="server" Text="至"></f:Label>
<f:DatePicker ID="dpEndDate" runat="server" Width="110px"></f:DatePicker>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:Button ID="btnQuery" runat="server" Text="查询" Icon="SystemSearch"
OnClick="btnQuery_Click">
</f:Button>
<f:Button ID="btnExport" runat="server" Text="导出" Icon="TableGo"
EnableAjax="false" DisableControlBeforePostBack="false" OnClick="btnExport_Click">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RenderField HeaderText="Unit&lt;br/&gt;(单位)" ColumnID="UnitCode" DataField="UnitCode"
FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="90px">
</f:RenderField>
<f:RenderField HeaderText="Block&lt;br/&gt;(单位工程)" ColumnID="UnitWorkCode" DataField="UnitWorkCode"
FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="110px">
</f:RenderField>
<f:RenderField HeaderText="Total Drawing Quantity&lt;br/&gt;(图纸总量)" ColumnID="TotalDrawingQuantity"
DataField="TotalDrawingQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="175px">
</f:RenderField>
<f:RenderField HeaderText="ISO Drawing Qty-Cum.&lt;br/&gt;DI,已收图累计)" ColumnID="IsoDrawingQuantity"
DataField="IsoDrawingQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="190px">
</f:RenderField>
<f:RenderField HeaderText="Work front Qty-Cum.&lt;br/&gt;DI,可预制工作面累计)" ColumnID="WorkFrontQuantity"
DataField="WorkFrontQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="210px">
</f:RenderField>
<f:RenderField HeaderText="Completed Qty-Cum.&lt;br/&gt;DI,累计已完成)" ColumnID="CompletedQuantity"
DataField="CompletedQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="190px">
</f:RenderField>
<f:RenderField HeaderText="Qty Complete (%)&lt;br/&gt;(完成量占比)" ColumnID="QuantityCompleteRate"
DataField="QuantityCompleteRateDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="Daily Qty&lt;br/&gt;DI,昨天数据)" ColumnID="DailyQuantity"
DataField="DailyQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="150px">
</f:RenderField>
<f:RenderField HeaderText="Previous day Qty-Cum&lt;br/&gt;DI,前天累计数据)" ColumnID="PreviousDayCumulativeQuantity"
DataField="PreviousDayCumulativeQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="195px">
</f:RenderField>
<f:RenderField HeaderText="This Weekly Qty&lt;br/&gt;DI,本周数据)" ColumnID="WeeklyQuantity"
DataField="WeeklyQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="160px">
</f:RenderField>
<f:RenderField HeaderText="Last week Qty-Cum.&lt;br/&gt;DI,上周累计)" ColumnID="LastWeekCumulativeQuantity"
DataField="LastWeekCumulativeQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
TextAlign="Right" Width="185px">
</f:RenderField>
<f:RenderField HeaderText="Note&lt;br/&gt;(备注)" ColumnID="Note" DataField="Note"
FieldType="String" HeaderTextAlign="Center" TextAlign="Left" MinWidth="120px"
ExpandUnusedSpace="true">
</f:RenderField>
</Columns>
</f:Grid>
</Items>
</f:Panel>
</form>
</body>
</html>
@@ -0,0 +1,194 @@
using BLL;
using MiniExcelLibs;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace FineUIPro.Web.HJGL.WeldingReport
{
public partial class PipePrefabricationSummary : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
UnitWorkService.InitUnitWorkDropDownList(drpUnitWork, CurrUser.LoginProjectId, false);
DateTime today = DateTime.Today;
int daysSinceMonday = ((int)today.DayOfWeek + 6) % 7;
dpReportDate.SelectedDate = today;
dpStartDate.SelectedDate = today.AddDays(-daysSinceMonday);
dpEndDate.SelectedDate = today.AddDays(6 - daysSinceMonday);
BindGrid();
}
}
protected void btnQuery_Click(object sender, EventArgs e)
{
BindGrid();
}
protected void btnExport_Click(object sender, EventArgs e)
{
DateTime reportDate;
DateTime startDate;
DateTime endDate;
if (!TryGetFilterDates(out reportDate, out startDate, out endDate))
{
return;
}
string templatePath = Path.Combine(Funs.RootPath, "File", "Excel", "DataOut", "管道预制汇总模板.xlsx");
if (!File.Exists(templatePath))
{
ShowNotify("未找到管道预制汇总导出模板!", MessageBoxIcon.Warning);
return;
}
List<PipePrefabricationSummaryItem> rows = GetSummary(reportDate, startDate, endDate);
var value = CreateExportValue(rows, reportDate);
string fileName = string.Format(
"管道预制汇总_{0:yyyyMMdd}_{1:yyyyMMdd}-{2:yyyyMMdd}.xlsx",
reportDate,
startDate,
endDate);
string filePath = Path.Combine(Funs.RootPath, "File", "Excel", "Temp", Guid.NewGuid().ToString("N") + ".xlsx");
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
MiniExcel.SaveAsByTemplate(filePath, templatePath, value);
DownloadExcel(filePath, fileName);
}
private void BindGrid()
{
DateTime reportDate;
DateTime startDate;
DateTime endDate;
if (!TryGetFilterDates(out reportDate, out startDate, out endDate))
{
return;
}
List<PipePrefabricationSummaryItem> rows = GetSummary(reportDate, startDate, endDate);
Grid1.RecordCount = rows.Count;
Grid1.DataSource = rows;
Grid1.DataBind();
BindSummary(rows);
}
private List<PipePrefabricationSummaryItem> GetSummary(
DateTime reportDate,
DateTime startDate,
DateTime endDate)
{
string[] unitWorkIds = drpUnitWork.SelectedValueArray
.Where(x => !string.IsNullOrWhiteSpace(x) && x != Const._Null)
.ToArray();
return PipePrefabricationSummaryService.GetSummary(
CurrUser.LoginProjectId,
unitWorkIds,
startDate,
endDate,
reportDate);
}
private bool TryGetFilterDates(
out DateTime reportDate,
out DateTime startDate,
out DateTime endDate)
{
reportDate = DateTime.MinValue;
startDate = DateTime.MinValue;
endDate = DateTime.MinValue;
if (!dpReportDate.SelectedDate.HasValue)
{
ShowNotify("请选择报表日期!", MessageBoxIcon.Warning);
return false;
}
if (!dpStartDate.SelectedDate.HasValue || !dpEndDate.SelectedDate.HasValue)
{
ShowNotify("请选择完整的日期范围!", MessageBoxIcon.Warning);
return false;
}
reportDate = dpReportDate.SelectedDate.Value.Date;
startDate = dpStartDate.SelectedDate.Value.Date;
endDate = dpEndDate.SelectedDate.Value.Date;
if (startDate > endDate)
{
ShowNotify("开始日期不能晚于结束日期!", MessageBoxIcon.Warning);
return false;
}
return true;
}
private void BindSummary(ICollection<PipePrefabricationSummaryItem> rows)
{
decimal totalDrawing = rows.Sum(x => x.TotalDrawingQuantity);
decimal completed = rows.Sum(x => x.CompletedQuantity);
JObject summary = new JObject
{
{ "UnitCode", string.Empty },
{ "UnitWorkCode", "Total" },
{ "TotalDrawingQuantity", PipePrefabricationSummaryItem.FormatQuantity(totalDrawing) },
{ "IsoDrawingQuantity", PipePrefabricationSummaryItem.FormatQuantity(rows.Sum(x => x.IsoDrawingQuantity)) },
{ "WorkFrontQuantity", PipePrefabricationSummaryItem.FormatQuantity(rows.Sum(x => x.WorkFrontQuantity)) },
{ "CompletedQuantity", PipePrefabricationSummaryItem.FormatQuantity(completed) },
{ "QuantityCompleteRate", GetCompleteRate(completed, totalDrawing) },
{ "DailyQuantity", PipePrefabricationSummaryItem.FormatQuantity(rows.Sum(x => x.DailyQuantity)) },
{ "PreviousDayCumulativeQuantity", PipePrefabricationSummaryItem.FormatQuantity(rows.Sum(x => x.PreviousDayCumulativeQuantity)) },
{ "WeeklyQuantity", PipePrefabricationSummaryItem.FormatQuantity(rows.Sum(x => x.WeeklyQuantity)) },
{ "LastWeekCumulativeQuantity", PipePrefabricationSummaryItem.FormatQuantity(rows.Sum(x => x.LastWeekCumulativeQuantity)) },
{ "Note", string.Empty }
};
Grid1.SummaryData = summary;
}
private static string GetCompleteRate(decimal completed, decimal totalDrawing)
{
return totalDrawing <= 0M ? "0.00%" : (completed * 100M / totalDrawing).ToString("0.00") + "%";
}
private static Dictionary<string, object> CreateExportValue(
ICollection<PipePrefabricationSummaryItem> rows,
DateTime reportDate)
{
decimal totalDrawing = rows.Sum(x => x.TotalDrawingQuantity);
decimal completed = rows.Sum(x => x.CompletedQuantity);
// 只向模板上半部分的数据占位符传值;下方“陕西化建人力统计表”保持模板原样空白。
return new Dictionary<string, object>
{
{ "ReportDate", reportDate.ToString("yyyy-MM-dd") },
{ "Data", rows },
// MiniExcel 1.31.3 的普通对象不支持模板中的嵌套属性,合计值使用扁平占位符。
{ "TotalUnitCode", string.Empty },
{ "TotalUnitWorkCode", "Total" },
{ "TotalDrawingQuantity", totalDrawing },
{ "TotalIsoDrawingQuantity", rows.Sum(x => x.IsoDrawingQuantity) },
{ "TotalWorkFrontQuantity", rows.Sum(x => x.WorkFrontQuantity) },
{ "TotalCompletedQuantity", completed },
{ "TotalQuantityCompleteRate", GetCompleteRate(completed, totalDrawing) },
{ "TotalDailyQuantity", rows.Sum(x => x.DailyQuantity) },
{ "TotalPreviousDayCumulativeQuantity", rows.Sum(x => x.PreviousDayCumulativeQuantity) },
{ "TotalWeeklyQuantity", rows.Sum(x => x.WeeklyQuantity) },
{ "TotalLastWeekCumulativeQuantity", rows.Sum(x => x.LastWeekCumulativeQuantity) },
{ "TotalNote", string.Empty }
};
}
private void DownloadExcel(string filePath, string fileName)
{
FileInfo file = new FileInfo(filePath);
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", file.Length.ToString());
Response.TransmitFile(filePath, 0, file.Length);
Response.Flush();
File.Delete(filePath);
Response.End();
}
}
}
@@ -0,0 +1,134 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HJGL.WeldingReport
{
public partial class PipePrefabricationSummary
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// drpUnitWork 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpUnitWork;
/// <summary>
/// dpReportDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker dpReportDate;
/// <summary>
/// dpStartDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker dpStartDate;
/// <summary>
/// lblDateSeparator 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lblDateSeparator;
/// <summary>
/// dpEndDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker dpEndDate;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnQuery 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnQuery;
/// <summary>
/// btnExport 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnExport;
}
}
+1
View File
@@ -92,6 +92,7 @@
<TreeNode id="41C22E63-36B7-4C44-89EC-F765BFBB7C55" Text="焊工业绩分析" NavigateUrl="HJGL/WeldingReport/WelderPerformance.aspx"></TreeNode>
<TreeNode id="5F0969E3-2A0A-473E-92BE-4DD390602556" Text="焊接缺陷分析" NavigateUrl="HJGL/WeldingReport/DefectStatistics.aspx"></TreeNode>
<TreeNode id="EAD61207-E396-45B0-A1D2-7A5F0498AACC" Text="管道预制率分析" NavigateUrl="HJGL/WeldingReport/PipePrefabricationRateStatistics.aspx"></TreeNode>
<TreeNode id="9A28D681-0C91-49B8-9A63-DA3FEEA25BC2" Text="管道预制汇总" NavigateUrl="HJGL/WeldingReport/PipePrefabricationSummary.aspx"></TreeNode>
<TreeNode id="854C79DF-A1C0-4E3C-BCB4-7D5CD044F72B" Text="焊工功效分析" NavigateUrl="HJGL/WeldingReport/WelderEfficacy.aspx"></TreeNode>
<TreeNode id="2C66A01D-B53F-46A1-89F0-30ED137C7498" Text="检测结果汇总" NavigateUrl="HJGL/WeldingReport/CheckResult.aspx"></TreeNode>
<TreeNode id="6035E549-66FF-4B6D-989B-BE99C9EF5EB7" Text="焊接数据" NavigateUrl="ZHGL/DataSync/ProjectDataSync/Project_HJGLData_HJGL.aspx"></TreeNode>