develop
old易 2024-06-14 17:14:49 +08:00
parent da3814d35f
commit 3861954fd8
6 changed files with 492 additions and 378 deletions

View File

@ -22,7 +22,9 @@ using Microsoft.AspNetCore.Server.IIS.Core;
using New_College.Common.WebApiClients.HttpApis;
using NPOI.SS.UserModel;
using System.IO;
using ClosedXML.Excel;
using MiniExcelLibs;
using OSS.Common.Extension;
using System.Security.Cryptography;
namespace New_College.Api.Controllers.Front
{
@ -171,7 +173,7 @@ namespace New_College.Api.Controllers.Front
MajorCode = c.MajorCode,
// MajorGroup = c.MajorGroup,
MajorRemark = c.Remark,
planCount = int.Parse(c._23Count),
planCount = c._plancount,
PlanId = c.ID,
AcademicYear = c.AcademicYear,
Sort = s.OrderSort,
@ -216,136 +218,85 @@ namespace New_College.Api.Controllers.Front
[HttpPost("Export")]
public async Task<IActionResult> Export([FromBody] int id = 0)
public async Task<IActionResult> Export([FromBody] MinExcelAttrDto dto)
{
if (id <= 0)
if (dto.id <= 0)
{
throw new Exception("id为空");
}
//var view = new VolunteerTableDetailDtoView();
//var query = await _VolunteerTableServices.QueryById(id);
//var items = await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == id);
//var PlanMajorIds = new List<int>();
//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.Length > 2 ? "综合" : query.SubjectClaim;
//view.CustomerId = query.CustomerId;
//view.Score = query.Score;
//view.Type = query.Type;
//view.BatchName = query.BatchName;
//view.CreateTime = query.CreateTime;
//view.ModifyTime = query.ModifyTime;
//var tableDetailItemsViews = new List<VolunteerTableDetailItemsView>();
//items.ForEach(s =>
//{
// var planids = s.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(ss => long.Parse(ss)).ToList();
// var typeinfo = new List<VolteerItem>();
// if (!string.IsNullOrWhiteSpace(s.VolunteerRemark))
// {
// typeinfo = s.VolunteerRemark.FromJson<List<VolteerItem>>();
// }
// var planstatus = planmajordesc.Any(e => e.UniversityName == s.UniversityName);
// var firstmodels = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault();
// var uitem = new VolunteerTableDetailItemsView()
// {
// UniversityName = s.UniversityName,
// UniversityCode = s.UniversityCode,
// Sort = s.OrderSort,
// UniversityId = s.UniversityId,
// _211 = planstatus ? firstmodels.LnstitutionalLevel != null ? firstmodels.LnstitutionalLevel.Contains("211") ? "是" : "否" : "否" : "否",
// _985 = planstatus ? firstmodels.LnstitutionalLevel != null ? firstmodels.LnstitutionalLevel.Contains("985") ? "是" : "否" : "否" : "否",
// _SYL = planstatus ? firstmodels.LnstitutionalLevel != null ? firstmodels.LnstitutionalLevel.Contains("双一流") ? "是" : "否" : "否" : "否",
// Ownership = planstatus ? firstmodels.Ownership != null ? firstmodels.Ownership.Contains("省") ? "省属" : firstmodels.Ownership.Contains("市") ? "市属" : firstmodels.Ownership : "" : "",
// AreaName = planstatus ? firstmodels.Province != null ? firstmodels.Province + "|" + (planstatus ? firstmodels.City : "") : "" : "",
// Nature = planstatus ? firstmodels.Nature != null ? firstmodels.Nature : "" : "",
// Rank = planstatus ? ((string.IsNullOrEmpty(firstmodels.UniversityRank) || firstmodels.UniversityRank == "0") ? "--" : firstmodels.UniversityRank) : "--",
// planMajorItems = planmajordesc.Where(ww => planids.Contains(ww.ID)).Select(c => new VolunteerTablePlanMajorItem()
// {
// fee = string.IsNullOrEmpty(c.Fee) ? "--" : c.Fee,
// Major = c.MajorName,
// MajorCode = c.MajorCode,
// // MajorGroup = c.MajorGroup,
// MajorRemark = c.Remark,
// planCount = int.Parse(c._23Count),
// PlanId = c.ID,
// AcademicYear = c.AcademicYear,
// Sort = s.OrderSort,
// SubjectClam = c._23subject,
// Percentage = typeinfo.Any() && typeinfo.Count() > 0 ? typeinfo.FirstOrDefault(d => d.planId == c.ID).tage : 0,
// Type = typeinfo.Any() && typeinfo.Count() > 0 ? typeinfo.FirstOrDefault(d => d.planId == c.ID).type : 0,
// PlanItems = new List<PlanItem>()
// {
// new PlanItem() {
// PlanCount=c._23Count=="0"?"--":c._23Count,
// RankLine=c._23ScoreLine=="0"?"--":c._23ScoreLine,
// Scoreline=c._23Score == "0" ? "--" : c._23Score,
// Year="2023"
// },
// new PlanItem() {
// PlanCount=c._22Count=="0"?"--":c._22Count,
// RankLine=c._22ScoreLine=="0"?"--":c._22ScoreLine,
// Scoreline=c._22Score == "0" ? "--" : c._22Score,
// Year="2022"
// },
// new PlanItem() {
// PlanCount=c._21Count=="0"?"--":c._21Count,
// RankLine=c._21ScoreLine=="0"?"--":c._21ScoreLine,
// Scoreline=c._21Score == "0" ? "--" : c._21Score,
// Year="2021"
// } }
// }).ToList()
// };
// tableDetailItemsViews.Add(uitem);
//});
// view.tableDetailItemsViews = tableDetailItemsViews;
using (var workbook = new XLWorkbook())
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<int>();
foreach (var item in items)
{
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cell(1, 1).Value = "Column1";
worksheet.Cell(1, 2).Value = "Column2";
// 假设 YourDataModel 有两个属性 Property1 和 Property2
int row = 2;
//foreach (var item in data)
//{
// worksheet.Cell(row, 1).Value = item.Property1;
// worksheet.Cell(row, 2).Value = item.Property2;
// row++;
//}
for (int k = 0; k < 5; k++)
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<VolunteerItemsViewMinExcelAttr>();
items.ForEach(s =>
{
worksheet.Cell(row, 1).Value = k;
worksheet.Cell(row, 2).Value = k;
row++;
}
using (var stream = new MemoryStream())
var planids = s.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(ss => long.Parse(ss)).ToList();
var typeinfo = new List<VolteerItem>();
if (!string.IsNullOrWhiteSpace(s.VolunteerRemark))
{
workbook.SaveAs(stream);
stream.Position = 0;
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "export.xlsx");
typeinfo = s.VolunteerRemark.FromJson<List<VolteerItem>>();
}
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 = c.MajorGroup,
// MajorRemark = a.Remark,
planCount = a._plancount,
AcademicYear = a.AcademicYear,
Sort = s.OrderSort,
MajorSubjectClam = a._23subject,
_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,
_23Scoreline = a._23Score == "0" ? "--" : a._23Score,
});
});
});
}
// view.viewMinExcelAttrs = tableDetailItemsViews;
//在内存中当开辟空间
var memoryStream = new MemoryStream();
//将数据写到内存当中
memoryStream.SaveAs(tableDetailItemsViews, true, string.Format("模拟志愿表:_{0}_选科:{1}|_分数:{2}|_类型_{3}", view.VolunteerTableName, view.SubjectClaim, view.Score, view.Type));
//从0的位置开始写入
memoryStream.Seek(0, SeekOrigin.Begin);
//返回文件流 //格式是Excel格式
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = string.Format("{0}.xlsx", DateTime.Now.ToString("yyyyMMddhhssfff_"))
};
}

View File

@ -51,13 +51,13 @@
<ItemGroup>
<PackageReference Include="ClosedXML" Version="0.102.2" />
<PackageReference Include="LinqKit" Version="1.1.17" />
<PackageReference Include="Microsoft.Graph.Core" Version="1.23.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="MiniExcel" Version="1.32.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
<PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" />

View File

@ -64,6 +64,13 @@ namespace New_College.Model.Models
/// </summary>
[SugarColumn(ColumnName = "_24subject")]
public string _24subject { get; set; }
/// <summary>
/// 最新招生人数
/// </summary>
[SugarColumn(ColumnName = "_plancount")]
public int _plancount { get; set; }
/// <summary>
///
/// </summary>

View File

@ -15,6 +15,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MiniExcel" Version="1.32.1" />
<PackageReference Include="sqlSugarCore" Version="5.1.0" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
</ItemGroup>

View File

@ -155,7 +155,6 @@ namespace New_College.Model.ViewModels
public string collegeCode { get; set; }
public int Rank { get; set; }
/// <summary>
/// 官网
/// </summary>
@ -239,8 +238,7 @@ namespace New_College.Model.ViewModels
public string VrUrl { get; set; }
public int Rank { get; set; }
}

View File

@ -1,4 +1,5 @@
using New_College.Model.Models;
using MiniExcelLibs.Attributes;
using New_College.Model.Models;
using SqlSugar;
using System;
using System.Collections.Generic;
@ -106,12 +107,168 @@ namespace New_College.Model.ViewModels
/// 公办|民办
/// </summary>
public string Nature { get; set; }
/// <summary>
///
/// </summary>
public List<VolunteerTablePlanMajorItem> planMajorItems { get; set; }
}
public class MinExcelAttrDto
{
public int id { get; set; }
}
public class VolunteerItemsViewMinExcelAttr
{
[ExcelColumnName("排序")]
public int Sort { get; set; }
/// <summary>
/// 院校名称
/// </summary>
[ExcelColumnName("院校名称")]
public string UniversityName { get; set; }
/// <summary>
/// 院校编码
/// </summary>
[ExcelColumnName("院校编码")]
public string UniversityCode { get; set; }
/// <summary>
/// 学校所在地区
/// </summary>
[ExcelColumnName("学校所在地区")]
public string AreaName { get; set; }
/// <summary>
/// 公办|民办
/// </summary>
[ExcelColumnName("学校类型")]
public string Nature { get; set; }
/// <summary>
/// 专业代码
/// </summary>
///
[ExcelColumnName("专业代码")]
public string MajorCode { get; set; }
/// <summary>
/// 专业组
/// </summary>
[ExcelColumnName("专业组")]
public string MajorGroup { get; set; }
/// <summary>
/// 专业名称
/// </summary>
[ExcelColumnName("专业名称")]
public string Major { get; set; }
///// <summary>
///// 专业备注
///// </summary>
//[ExcelColumnName("专业备注")]
//public string MajorRemark { get; set; }
[ExcelColumnName("学制")]
public string AcademicYear { get; set; }
/// <summary>
/// 专业选科
/// </summary>
[ExcelColumnName("专业选科")]
public string MajorSubjectClam { get; set; }
/// <summary>
/// 计划数
/// </summary>
[ExcelColumnName("计划数量")]
public int planCount { get; set; }
/// <summary>
/// 学费
/// </summary>
[ExcelColumnName("学费")]
public string fee { get; set; }
//public List<VolunteerTablePlanMajorItem> planMajorItems { get; set; }
[ExcelColumnName("23计划")]
public string _23PlanCount { get; set; }
/// <summary>
/// 位次
/// </summary>
[ExcelColumnName("23最低位次")]
public string _23RankLine { get; set; }
///// <summary>
///// 最低分
///// </summary>
[ExcelColumnName("23最低分")]
public string _23Scoreline { get; set; }
[ExcelColumnName("22计划")]
public string _22PlanCount { get; set; }
/// <summary>
/// 位次
/// </summary>
[ExcelColumnName("22最低位次")]
public string _22RankLine { get; set; }
///// <summary>
///// 最低分
///// </summary>
[ExcelColumnName("22最低分")]
public string _22Scoreline { get; set; }
[ExcelColumnName("21计划")]
public string _21PlanCount { get; set; }
/// <summary>
/// 位次
/// </summary>
[ExcelColumnName("21最低位次")]
public string _21RankLine { get; set; }
///// <summary>
///// 最低分
///// </summary>
[ExcelColumnName("21最低分")]
public string _21Scoreline { get; set; }
}
public class VolunteerExcelAttrModel
{
/// <summary>
/// 志愿表名称
/// </summary>
///
[ExcelColumnName("志愿表名称")]
public string VolunteerTableName { get; set; }
/// <summary>
/// 志愿填报类型(智能填报|一键填报)
/// </summary>
[ExcelColumnName("填报类型")]
public string Type { get; set; }
/// <summary>
/// 选科科目
/// </summary>
[ExcelColumnName("选科科目")]
public string SubjectClaim { get; set; }
[ExcelColumnName("分数")]
public float Score { get; set; }
}
public class VolunteerTablePlanMajorItem
{