123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- using Model.Dto;
- using PLCTool.Common;
- using QuestPDF.Fluent;
- using QuestPDF.Helpers;
- using QuestPDF.Infrastructure;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using static System.Windows.Forms.VisualStyles.VisualStyleElement;
- namespace PLCTool.Pdf
- {
- public class InvoiceDocument : IDocument
- {
- static string logoPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images", "Logo.png");
- public static Image LogoImage { get; } = Image.FromFile(logoPath);
- public InvoiceModel Model { get; }
- public InvoiceDocument(InvoiceModel model)
- {
- Model = model;
- }
- public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
- public void Compose(IDocumentContainer container)
- {
- container
- .Page(page =>
- {
- page.Margin(50);
- page.Header().Element(ComposeHeader);
- page.Content().Element(ComposeContent);
- page.Footer().AlignCenter().Text(text =>
- {
- text.CurrentPageNumber();
- text.Span(" / ");
- text.TotalPages();
- });
- });
- }
- void ComposeHeader(IContainer container)
- {
- container.Row(row =>
- {
- row.RelativeItem().Column(column =>
- {
- column.Item().AlignCenter().Text($"PLC点位测试报表").FontFamily("simhei").Style(TextStyle.Default.FontSize(30));
-
- });
-
- row.ConstantItem(100).Image(LogoImage);
- });
- }
- void ComposeContent(IContainer container)
- {
- container.PaddingVertical(40).Column(column =>
- {
- column.Spacing(20);
- column.Item().Row(row =>
- {
- row.RelativeItem().Text($"测试方案名称:{Model.SchemeName}").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- row.ConstantItem(50);
- row.RelativeItem().Text($"设备名称:{Model.DeviceName}").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- });
- column.Item().Row(row =>
- {
- row.RelativeItem().Text($"测试人员:{Appsession.UserName}").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- row.ConstantItem(50);
- row.RelativeItem().Text($"测试结果:{Model.FinalReuslt}").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- });
-
- //表格部分
- column.Item().Element(ComposeTable);
-
-
- });
- }
- void ComposeTable(IContainer container)
- {
- var headerStyle = TextStyle.Default.SemiBold();
- container.Table(table =>
- {
- table.ColumnsDefinition(columns =>
- {
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn(2);
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn();
- columns.RelativeColumn();
- });
- table.Header(header =>
- {
- header.Cell().Text("测试项名称").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().Text("类型").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().Text("测试项类型").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("明细判定逻辑").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("描述").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("PLC地址").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("PLC变量名").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("判定值").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("实际值").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("结果").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- header.Cell().AlignCenter().Text("测试时间").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));
- //标题画一条黑线
- header.Cell().ColumnSpan(11).PaddingTop(5).BorderBottom(1).BorderColor(Colors.Black);
- });
- foreach (var item in Model.ReportPLCModels)
- {
- var index = Model.ReportPLCModels.IndexOf(item) + 1;
- //table.Cell().Element(CellStyle).Text($"{index}");
- table.Cell().Element(CellStyle).AlignCenter().Text(item.ItemName).FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text(item.Type).FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.JudgeType}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.SelectLogic}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.Detail}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.PlcAddress}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.PlcItem}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.PlcValue}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.RealValue}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.TestResult}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- table.Cell().Element(CellStyle).AlignCenter().Text($"{item.TestTime}").FontFamily("simhei").Style(TextStyle.Default.FontSize(8)); ;
- //static IContainer CellStyle(IContainer container)
- //{
- // return container.BorderBottom(1).PaddingVertical(4);
- //}
- static IContainer CellStyle(IContainer container) => container.BorderBottom(1).BorderColor(Colors.Grey.Lighten2).PaddingVertical(5);
- }
- });
- }
-
- }
-
- }
|