feat(hjgl): 增加焊接日志导出与管道预制汇总
补充俄文焊接日志导出和管道预制汇总报表,统一菜单、数据库脚本与导出模板,便于按日报或单位工程查看和交付施工统计数据。
This commit is contained in:
@@ -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<br/>(单位)" ColumnID="UnitCode" DataField="UnitCode"
|
||||
FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="90px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Block<br/>(单位工程)" ColumnID="UnitWorkCode" DataField="UnitWorkCode"
|
||||
FieldType="String" HeaderTextAlign="Center" TextAlign="Center" Width="110px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Total Drawing Quantity<br/>(图纸总量)" ColumnID="TotalDrawingQuantity"
|
||||
DataField="TotalDrawingQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="175px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="ISO Drawing Qty-Cum.<br/>(DI,已收图累计)" ColumnID="IsoDrawingQuantity"
|
||||
DataField="IsoDrawingQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="190px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Work front Qty-Cum.<br/>(DI,可预制工作面累计)" ColumnID="WorkFrontQuantity"
|
||||
DataField="WorkFrontQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="210px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Completed Qty-Cum.<br/>(DI,累计已完成)" ColumnID="CompletedQuantity"
|
||||
DataField="CompletedQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="190px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Qty Complete (%)<br/>(完成量占比)" ColumnID="QuantityCompleteRate"
|
||||
DataField="QuantityCompleteRateDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="150px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Daily Qty<br/>(DI,昨天数据)" ColumnID="DailyQuantity"
|
||||
DataField="DailyQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="150px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Previous day Qty-Cum<br/>(DI,前天累计数据)" ColumnID="PreviousDayCumulativeQuantity"
|
||||
DataField="PreviousDayCumulativeQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="195px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="This Weekly Qty<br/>(DI,本周数据)" ColumnID="WeeklyQuantity"
|
||||
DataField="WeeklyQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="160px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Last week Qty-Cum.<br/>(DI,上周累计)" ColumnID="LastWeekCumulativeQuantity"
|
||||
DataField="LastWeekCumulativeQuantityDisplay" FieldType="String" HeaderTextAlign="Center"
|
||||
TextAlign="Right" Width="185px">
|
||||
</f:RenderField>
|
||||
<f:RenderField HeaderText="Note<br/>(备注)" 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
+134
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user