diff --git a/New_College.Api/Controllers/Front/PcVolunteerController.cs b/New_College.Api/Controllers/Front/PcVolunteerController.cs
index 380dec7..4a8c6ea 100644
--- a/New_College.Api/Controllers/Front/PcVolunteerController.cs
+++ b/New_College.Api/Controllers/Front/PcVolunteerController.cs
@@ -215,23 +215,113 @@ namespace New_College.Api.Controllers.Front
///
///
[HttpGet("generate")]
- public IActionResult Generate([FromQuery] MinExcelAttrDto dto)
+ public async Task GenerateAsync([FromQuery] MinExcelAttrDto dto)
{
string[] unversityheaders = { "志愿", "概率", "院校代码", "院校名称", "24招生计划", "历年", "2023", "2022", "2021" };
- var stream = PdfOptHelper.CreatePdf("test", unversityheaders.ToList(), new List() {
- new PdfOptHelper.dataModel()
- { id=1,
- history="录取人数\n计划人数\n最低分\n最低位次\n效位差",
- planName="A222",
- probability="90%",
- universityCode="A99",
- universityName="中科大大家四大石窟记得哈就开始大肆扩大数据库",
- years=new List(){"2023", "2022", "2021" }
- }
+ // 添加表头
+ string[] majorlistheaders = { "序号", "概率", "专业代码", "专业名称", "24招生计划", "历年", "2023", "2022", "2021" };
+ if (dto.id <= 0)
+ {
+ throw new Exception("id为空");
+ }
+ var view = new VolunteerExcelAttrModel();
+ var query = await _VolunteerTableServices.QueryById(dto.id);
+ var items = await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == dto.id);
+ var PlanMajorIds = new List();
+ foreach (var item in items)
+ {
+ var ids = item.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(c => int.Parse(c)).ToList();
+ PlanMajorIds.AddRange(ids);
+ }
+ var planmajordesc = await _TbSNeedDataInfoServices.Query(c => SqlFunc.ContainsArray(PlanMajorIds, c.ID));//
+ var location = planmajordesc.FirstOrDefault().Location;
+ var majorlist = planmajordesc.Select(c => c.MajorName).ToList();
+ var universityname = planmajordesc.Select(c => c.UniversityName).Distinct().ToList();
+ var planmajorcomplist = await _TbSNeedDataInfoServices.Query(c => c.Location == location && SqlFunc.ContainsArray(majorlist, c.MajorName) && SqlFunc.ContainsArray(universityname, c.UniversityName));//
+ view.VolunteerTableName = query.VolunteerTableName;
+ view.SubjectClaim = query.SubjectClaim;
+ view.Score = query.Score;
+ view.Type = query.Type;
+ var tableDetailItemsViews = new List();
+
+ var optmodels = new List();
+ items.ForEach(s =>
+ {
+ var planids = s.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(ss => long.Parse(ss)).ToList();
+ var typeinfo = new List();
+ if (!string.IsNullOrWhiteSpace(s.VolunteerRemark))
+ {
+ typeinfo = s.VolunteerRemark.FromJson>();
+ }
+ var planstatus = planmajordesc.Any(e => e.UniversityName == s.UniversityName);
+ var firstmodels = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault();
+ planmajordesc.Where(ww => planids.Contains(ww.ID)).ToList().ForEach(a =>
+ {
+ tableDetailItemsViews.Add(new VolunteerItemsViewMinExcelAttr()
+ {
+ UniversityName = s.UniversityName,
+ UniversityCode = s.UniversityCode,
+ AreaName = planstatus ? firstmodels.Province != null ? firstmodels.Province + "|" + (planstatus ? firstmodels.City : "") : "" : "",
+ Nature = planstatus ? firstmodels.Nature != null ? firstmodels.Nature : "" : "",
+ fee = string.IsNullOrEmpty(a.Fee) ? "--" : a.Fee,
+ Major = a.MajorName,
+ MajorCode = a.MajorCode,
+ // MajorGroup = a.MajorGroup,
+ //// MajorRemark = a.Remark,
+ planCount = a._plancount,
+ AcademicYear = a.AcademicYear,
+ Sort = s.OrderSort,
+ MajorSubjectClam = a._23subject,
+ MajorGroup = a.MajorGroup,
+ Percentage = typeinfo.Where(e => e.planId == a.ID).FirstOrDefault().tage.ToString() + "%",
+ _23PlanCount = a._23Count == "0" ? "--" : a._23Count,
+ _22PlanCount = a._22Count == "0" ? "--" : a._22Count,
+ _21PlanCount = a._21Count == "0" ? "--" : a._21Count,
+ _21RankLine = a._21ScoreLine == "0" ? "--" : a._21ScoreLine,
+ _21Scoreline = a._21Score == "0" ? "--" : a._21Score,
+ _22RankLine = a._22ScoreLine == "0" ? "--" : a._22ScoreLine,
+ _22Scoreline = a._22Score == "0" ? "--" : a._22Score,
+ _23RankLine = a._23ScoreLine == 0 ? "--" : a._23ScoreLine.ToString(),
+ _23Scoreline = a._23Score == "0" ? "--" : a._23Score,
+ });
+ });
+ });
+ var ulist = tableDetailItemsViews.Select(c => new PdfOptHelper.dataModel()
+ {
+ universityCode = c.UniversityCode,
+ universityName = c.UniversityName
+ }).ToList();
+ int k = 0;
+ ulist.ForEach(a =>
+ {
+ k++;
+ a.planCount = string.Format("计划数:{0}", "-");
+ a.id = k;
+ a.years = new List()
+ { "-", "-","-" };
+ a.history = "-";
+ a.probability = "-";
+ a.majorModels = tableDetailItemsViews.Select(c => new PdfOptHelper.dataMajorModel()
+ {
+ id = c.Sort,
+ history = "计划人数\n最低分\n最低位次\n效位差",
+ majorCode = c.MajorCode,
+ mjaorName = c.Major,
+ planCount = string.Format("{0}人\n{1}年\n¥{2}\n{3}", c.planCount.ToString(), c.AcademicYear, c.fee, c.MajorSubjectClam),
+ probability = c.Percentage,
+ years = new List() {
+ string.Format("{0}\n{1}\n{2}\n{3}", c._23PlanCount == "0" ? "--":c._23PlanCount, c._23Scoreline == "0" ? "--" : c._23Scoreline, c._23RankLine == "0" ? "--" : c._23RankLine, "--"),
+ string.Format("{0}\n{1}\n{2}\n{3}", c._22PlanCount == "0" ? "--":c._22PlanCount, c._22Scoreline == "0" ? "--" : c._22Scoreline, c._22RankLine == "0" ? "--" : c._22RankLine, "--"),
+ string.Format("{0}\n{1}\n{2}\n{3}", c._21PlanCount == "0" ? "--":c._21PlanCount, c._21Scoreline == "0" ? "--" : c._21Scoreline, c._21RankLine == "0" ? "--" : c._21RankLine, "--")
+ }
+ }).ToList();
});
+
+ var stream = PdfOptHelper.CreatePdf(string.Format("{0}-{1}-{2}", query.VolunteerTableName, query.SubjectClaim, query.Score), unversityheaders.ToList(), majorlistheaders.ToList(), ulist);
+
// 返回 PDF 文件
- return File(stream.ToArray(), "application/pdf", "table_example_with_logo_and_title.pdf");
+ return File(stream.ToArray(), "application/pdf", string.Format("{0}.pdf", DateTime.Now.ToString("yyyyMMddhhssfff_")));
}
[HttpGet("Export")]
@@ -302,7 +392,6 @@ namespace New_College.Api.Controllers.Front
});
});
});
-
// view.viewMinExcelAttrs = tableDetailItemsViews;
//在内存中当开辟空间
var memoryStream = new MemoryStream();
diff --git a/New_College.Api/New_College.xml b/New_College.Api/New_College.xml
index c68a440..85d7f85 100644
--- a/New_College.Api/New_College.xml
+++ b/New_College.Api/New_College.xml
@@ -688,7 +688,7 @@
志愿表Id
-
+
diff --git a/PdfOpt/PdfOptHelper.cs b/PdfOpt/PdfOptHelper.cs
index 6ff7807..a472163 100644
--- a/PdfOpt/PdfOptHelper.cs
+++ b/PdfOpt/PdfOptHelper.cs
@@ -15,14 +15,16 @@ namespace PDFGenerateApi
public class PdfOptHelper
{
+
///
///
///
///
///
+ ///
///
///
- public static MemoryStream CreatePdf(string pagetitle, List headers, List dataModels)
+ public static MemoryStream CreatePdf(string pagetitle, List headers, List majors, List dataModels)
{
// 创建内存流
using (var stream = new MemoryStream())
@@ -57,74 +59,19 @@ namespace PDFGenerateApi
// 添加标题下方内容
Paragraph subtitle = CreateSubTitle(font, string.Format("最后修改时间:{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm")));
document.Add(subtitle);
- // 添加表头
- // string[] unversityheaders = { "志愿", "概率", "院校代码", "院校名称", "24招生计划", "历年", "2023", "2022", "2021" };
- Table universitytable = HeaderTable(font, 9, headers, new List() { });
- document.Add(universitytable);
- #region ***********写入表格
- // 创建一个 8列的表格,设置表格宽度为 100% 以适应页面宽度
- // Table universitytable = new Table(9);
- // universitytable.SetWidth(UnitValue.CreatePercentValue(100));
+ dataModels.ForEach(a =>
+ {
+ Table universitytable = HeaderTable(font, 9, headers, new List() { a });
+ universitytable.SetMarginTop(20);
+ document.Add(universitytable);
+ Table majortable = MajorTable(font, 9, majors, a.majorModels);
+ document.Add(majortable);
+ // 手动分页并添加新的表格,不带表头
+ // document.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
+ });
+ //专业
- //int h = 0;
- //foreach (var header in unversityheaders)
- //{
- // h++;
- // if (h == 4)
- // {
- // universitytable.AddHeaderCell(new Cell().Add(new Paragraph(header).SetWidth(85).SetFont(font).SetBold().SetTextAlignment(TextAlignment.CENTER)));
- // }
- // else
- // {
- // universitytable.AddHeaderCell(new Cell().Add(new Paragraph(header).SetFont(font).SetBold().SetTextAlignment(TextAlignment.CENTER)));
- // }
- //}
-
- //// 可选:添加表格数据,这里仅作为示例
- //for (int i = 1; i <= 1; i++)
- //{
- // universitytable.AddCell(new Cell().Add(new Paragraph(i.ToString()).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("0.9").SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("A999").SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("山东师范大学(本科)(山东公办)省重点 保研 研究生院 省部共建山东 济南市/综合/公办/排名190" + i).SetWidth(85).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("100").SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
-
- // universitytable.AddCell(new Cell().Add(new Paragraph("历史数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("2023数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("2022数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // universitytable.AddCell(new Cell().Add(new Paragraph("2021数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
-
- //}
- //document.Add(universitytable);
- //// float[] columnWidths = { 0.5f, 0.5f, 1, 2, 1, 1, 1, 1, 1 };
- //Table majortable = new Table(9);
- //majortable.SetWidth(UnitValue.CreatePercentValue(100));
- //// 添加表头
- //string[] majorlistheaders = { "序号", "概率", "专业代码", "专业名称", "24招生计划", "历年", "2023", "2022", "2021" };
- //foreach (var header in majorlistheaders)
- //{
- // majortable.AddHeaderCell(new Cell().Add(new Paragraph(header).SetFont(font).SetBold().SetTextAlignment(TextAlignment.CENTER)));
- //}
-
-
- //for (int i = 1; i <= 5; i++)
- //{
- // majortable.AddCell(new Cell().Add(new Paragraph(i.ToString()).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("0.9").SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("QL").SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("垫子信息技术" + i).SetWidth(85).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("20").SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
-
- // majortable.AddCell(new Cell().Add(new Paragraph("录取人数\n计划人数\n最低分\n最低位次\n效位差" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("2023数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("2022数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- // majortable.AddCell(new Cell().Add(new Paragraph("2021数据" + i).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
-
- //}
- //document.Add(majortable);
- #endregion
- // 将表格添加到文档中
// 关闭文档
document.Close();
// 返回 PDF 文件
@@ -177,7 +124,8 @@ namespace PDFGenerateApi
///
private static Table HeaderTable(PdfFont font, int tb, List headers, List dataList)
{
- Table table = new Table(tb);
+ float[] columnWidths = { 1, 1, 2, 3, 2, 2, 2, 1, 1 };
+ Table table = new Table(columnWidths);
table.SetWidth(UnitValue.CreatePercentValue(100));
@@ -200,7 +148,44 @@ namespace PDFGenerateApi
table.AddCell(new Cell().Add(new Paragraph(a.probability).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
table.AddCell(new Cell().Add(new Paragraph(a.universityCode).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
table.AddCell(new Cell().Add(new Paragraph(a.universityName).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
- table.AddCell(new Cell().Add(new Paragraph(a.planName).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ table.AddCell(new Cell().Add(new Paragraph(a.planCount).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ table.AddCell(new Cell().Add(new Paragraph(a.history).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ a.years.ForEach(a =>
+ {
+ table.AddCell(new Cell().Add(new Paragraph(a).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ });
+ });
+
+
+ return table;
+ }
+
+
+ private static Table MajorTable(PdfFont font, int tb, List headers, List dataList)
+ {
+ float[] columnWidths = { 1, 1, 2, 3, 2, 2, 2, 1, 1 };
+ Table table = new Table(columnWidths);
+ table.SetWidth(UnitValue.CreatePercentValue(100));
+ int h = 0;
+ foreach (var header in headers)
+ {
+ h++;
+ if (h == 4)
+ {
+ table.AddCell(new Cell().Add(new Paragraph(header).SetWidth(85).SetFont(font).SetBold().SetTextAlignment(TextAlignment.CENTER)));
+ }
+ else
+ {
+ table.AddCell(new Cell().Add(new Paragraph(header).SetFont(font).SetBold().SetTextAlignment(TextAlignment.CENTER)));
+ }
+ }
+ dataList.ForEach(a =>
+ {
+ table.AddCell(new Cell().Add(new Paragraph(a.id.ToString()).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ table.AddCell(new Cell().Add(new Paragraph(a.probability).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ table.AddCell(new Cell().Add(new Paragraph(a.majorCode).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ table.AddCell(new Cell().Add(new Paragraph(a.mjaorName).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
+ table.AddCell(new Cell().Add(new Paragraph(a.planCount).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
table.AddCell(new Cell().Add(new Paragraph(a.history).SetFont(font).SetTextAlignment(TextAlignment.CENTER)));
a.years.ForEach(a =>
{
@@ -211,6 +196,7 @@ namespace PDFGenerateApi
}
+
public class dataModel
{
public int id { get; set; }
@@ -231,7 +217,41 @@ namespace PDFGenerateApi
public string universityName { get; set; }
- public string planName { get; set; }
+ public string planCount { get; set; }
+
+
+ public string history { get; set; }
+
+ public List years { get; set; }
+
+ ///
+ ///
+ ///
+ public List majorModels { get; set; }
+ }
+
+
+ public class dataMajorModel
+ {
+ public int id { get; set; }
+
+ ///
+ ///
+ ///
+ public string probability { get; set; }
+
+ ///
+ ///
+ ///
+ public string majorCode { get; set; }
+
+ ///
+ ///
+ ///
+ public string mjaorName { get; set; }
+
+
+ public string planCount { get; set; }
public string history { get; set; }
@@ -240,5 +260,7 @@ namespace PDFGenerateApi
}
+
+
}
}