515 lines
23 KiB
C#
515 lines
23 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Threading.Tasks;
|
||
using Microsoft.AspNetCore.Http;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using New_College.Model;
|
||
using New_College.Model.ViewModels;
|
||
using New_College.IServices;
|
||
using New_College.Model.Models;
|
||
using New_College.Services;
|
||
using System.Linq.Expressions;
|
||
using New_College.IRepository.UnitOfWork;
|
||
using New_College.Repository.UnitOfWork;
|
||
using SqlSugar;
|
||
using New_College.Common;
|
||
using Microsoft.AspNetCore.Authorization;
|
||
using StackExchange.Profiling.Internal;
|
||
using Newtonsoft.Json;
|
||
using NPOI.SS.Formula.Functions;
|
||
using Microsoft.AspNetCore.Server.IIS.Core;
|
||
using New_College.Common.WebApiClients.HttpApis;
|
||
using NPOI.SS.UserModel;
|
||
using System.IO;
|
||
using MiniExcelLibs;
|
||
using OSS.Common.Extension;
|
||
using System.Security.Cryptography;
|
||
namespace New_College.Api.Controllers.Front
|
||
{
|
||
|
||
|
||
/// <summary>
|
||
/// PC志愿表管理
|
||
/// </summary>
|
||
[Route("api/front/[controller]")]
|
||
[ApiController]
|
||
public class PcVolunteerController : ControllerBase
|
||
{
|
||
private readonly IU_VolunteerTableServices _VolunteerTableServices;
|
||
private readonly IU_VolunteerTableDetailServices _VolunteerTableDetailServices;
|
||
private readonly IUnitOfWork _unitOfWork;
|
||
private readonly IT_TbSNeedDataInfoServices _TbSNeedDataInfoServices;
|
||
public PcVolunteerController(IU_VolunteerTableServices volunteerTableServices, IU_VolunteerTableDetailServices volunteerTableDetailServices,
|
||
IUnitOfWork unitOfWork, IT_TbSNeedDataInfoServices tbSNeedDataInfoServices)
|
||
{
|
||
_VolunteerTableServices = volunteerTableServices;
|
||
_VolunteerTableDetailServices = volunteerTableDetailServices;
|
||
_unitOfWork = unitOfWork;
|
||
_TbSNeedDataInfoServices = tbSNeedDataInfoServices;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Pc端查询我的志愿列表
|
||
/// </summary>
|
||
/// <param name="view"></param>
|
||
/// <returns></returns>
|
||
[HttpGet("GetPage")]
|
||
public async Task<MessageModel<PageModel<VolunteerTableDtoView>>> GetPage([FromQuery] VolunteerTableRequestView view)
|
||
{
|
||
if (view.CustomerId <= 0)
|
||
{
|
||
return new MessageModel<PageModel<VolunteerTableDtoView>>()
|
||
{
|
||
msg = "CustomerId 为必传参数"
|
||
};
|
||
}
|
||
|
||
var response = new PageModel<VolunteerTableDtoView>();
|
||
Expression<Func<U_VolunteerTable, bool>> exp = Expressionable.Create<U_VolunteerTable>()
|
||
.And(c => c.IsDelete == false)
|
||
.And(c => c.CustomerId == view.CustomerId)
|
||
.ToExpression();
|
||
var pagemodel = await _VolunteerTableServices.QueryPage(exp, view.PageIndex, view.PageSize, " CreateTime desc");
|
||
response.data = pagemodel.data.Select(c => new VolunteerTableDtoView()
|
||
{
|
||
CustomerId = c.CustomerId,
|
||
Score = c.Score,
|
||
SubjectClaim = c.SubjectClaim,
|
||
Type = c.Type,
|
||
VId = c.Id,
|
||
VolunteerTableName = c.VolunteerTableName,
|
||
BatchName = c.BatchName,
|
||
CreateTime = c.CreateTime,
|
||
ModifyTime = c.ModifyTime,
|
||
CP = "靠谱99%"
|
||
}).ToList();
|
||
response.pageCount = pagemodel.pageCount;
|
||
response.page = pagemodel.page;
|
||
response.PageSize = view.PageSize;
|
||
response.dataCount = pagemodel.dataCount;
|
||
return new MessageModel<PageModel<VolunteerTableDtoView>>()
|
||
{
|
||
msg = "获取成功",
|
||
success = true,
|
||
response = response
|
||
};
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Pc查询单个志愿表详情信息
|
||
/// </summary>
|
||
/// <param name="id">志愿表Id</param>
|
||
/// <returns></returns>
|
||
[HttpGet("Get")]
|
||
public async Task<MessageModel<VolunteerTableDetailDtoView>> Get([FromQuery] int id = 0)
|
||
{
|
||
|
||
if (id <= 0)
|
||
{
|
||
return new MessageModel<VolunteerTableDetailDtoView>()
|
||
{
|
||
msg = "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 = c._plancount,
|
||
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;
|
||
return new MessageModel<VolunteerTableDetailDtoView>()
|
||
{
|
||
msg = "获取成功",
|
||
success = true,
|
||
response = view
|
||
|
||
};
|
||
}
|
||
|
||
|
||
[HttpPost("Export")]
|
||
public async Task<IActionResult> Export([FromBody] MinExcelAttrDto dto)
|
||
{
|
||
|
||
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<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;
|
||
view.Score = query.Score;
|
||
view.Type = query.Type;
|
||
var tableDetailItemsViews = new List<VolunteerItemsViewMinExcelAttr>();
|
||
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();
|
||
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_"))
|
||
};
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// PC志愿表新增
|
||
/// </summary>
|
||
/// <param name="request"></param>
|
||
/// <returns></returns>
|
||
[HttpPost("Post")]
|
||
public async Task<MessageModel<string>> Post([FromBody] VolunteerTableDtoView request)
|
||
{
|
||
if (request.CustomerId <= 0)
|
||
{
|
||
return new MessageModel<string>()
|
||
{
|
||
msg = "用户Id"
|
||
};
|
||
}
|
||
|
||
var data = new MessageModel<string>();
|
||
int ordersort = 0;
|
||
if (string.IsNullOrWhiteSpace(request.VolunteerTableName))
|
||
{
|
||
var vol = (await _VolunteerTableServices.Query(c => c.CustomerId == request.CustomerId));
|
||
if (vol.Any())
|
||
{
|
||
request.VolunteerTableName = "我的志愿表" + (vol.OrderByDescending(c => c.CreateTime).FirstOrDefault().OrderSort + 1);
|
||
ordersort = (vol.OrderByDescending(c => c.CreateTime).FirstOrDefault().OrderSort + 1);
|
||
}
|
||
else
|
||
{
|
||
request.VolunteerTableName = "我的志愿表01";
|
||
ordersort = 1;
|
||
}
|
||
}
|
||
_unitOfWork.BeginTran();
|
||
var id = await _VolunteerTableServices.Add(new U_VolunteerTable()
|
||
{
|
||
CreateTime = DateTime.Now,
|
||
CustomerId = request.CustomerId,
|
||
ModifyTime = DateTime.Now,
|
||
OrderSort = ordersort,
|
||
IsDelete = false,
|
||
SubjectClaim = request.SubjectClaim,
|
||
Type = request.Type,
|
||
Score = request.Score,
|
||
BatchName = request.BatchName,
|
||
VolunteerTableName = request.VolunteerTableName,
|
||
});
|
||
|
||
int itemIds = 0;
|
||
if (id > 0)
|
||
{
|
||
var itemlist = request.volunteerTableDetailViews.Select(c => new U_VolunteerTableDetail()
|
||
{
|
||
CreateTime = DateTime.Now,
|
||
IsDelete = false,
|
||
ModifyTime = DateTime.Now,
|
||
OrderSort = c.Sort,
|
||
PlanMajorIds = c.PlanMajorIds,
|
||
UniversityCode = c.UniversityCode,
|
||
UniversityId = c.UniversityId,
|
||
UniversityName = c.UniversityName,
|
||
VolunteerTableId = id,
|
||
VolunteerRemark = JsonConvert.SerializeObject(c.VolunteerRemark)
|
||
}).ToList();
|
||
itemIds = await _VolunteerTableDetailServices.Add(itemlist);
|
||
}
|
||
if (id > 0 && itemIds == request.volunteerTableDetailViews.Count() && itemIds > 0)
|
||
{
|
||
_unitOfWork.CommitTran();
|
||
}
|
||
else
|
||
{
|
||
_unitOfWork.RollbackTran();
|
||
}
|
||
data.success = id > 0;
|
||
|
||
if (data.success)
|
||
{
|
||
data.response = id.ObjToString();
|
||
data.msg = "添加成功";
|
||
}
|
||
return data;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Pc修改志愿表
|
||
/// </summary>
|
||
/// <param name="request"></param>
|
||
/// <returns></returns>
|
||
[HttpPut("Put")]
|
||
public async Task<MessageModel<string>> Put([FromBody] VolunteerTableDtoView request)
|
||
{
|
||
var data = new MessageModel<string>();
|
||
if (request.VId > 0)
|
||
{
|
||
var model = await _VolunteerTableServices.QueryById(request.VId);
|
||
_unitOfWork.BeginTran();
|
||
if (!string.IsNullOrWhiteSpace(request.BatchName)) { model.BatchName = request.BatchName; }
|
||
if (!string.IsNullOrWhiteSpace(request.SubjectClaim)) { model.SubjectClaim = request.SubjectClaim; }
|
||
if (!string.IsNullOrWhiteSpace(request.Type)) { model.Type = request.Type; }
|
||
if (!string.IsNullOrWhiteSpace(request.VolunteerTableName)) { model.VolunteerTableName = request.VolunteerTableName; }
|
||
if (request.CustomerId > 0) { model.CustomerId = request.CustomerId; }
|
||
if (request.Score > 0) { model.Score = request.Score; }
|
||
model.ModifyTime = DateTime.Now;
|
||
data.success = await _VolunteerTableServices.Update(model);
|
||
//删掉之前的志愿表,更新新的匹配进来
|
||
var itemids = (await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == request.VId)).Select(c => (object)c.Id).ToArray();
|
||
var status = await _VolunteerTableDetailServices.DeleteByIds(itemids);
|
||
var itemlist = request.volunteerTableDetailViews.Select(c => new U_VolunteerTableDetail()
|
||
{
|
||
CreateTime = DateTime.Now,
|
||
IsDelete = false,
|
||
ModifyTime = DateTime.Now,
|
||
OrderSort = c.Sort,
|
||
PlanMajorIds = c.PlanMajorIds,
|
||
UniversityCode = c.UniversityCode,
|
||
UniversityId = c.UniversityId,
|
||
UniversityName = c.UniversityName,
|
||
VolunteerRemark = JsonConvert.SerializeObject(c.VolunteerRemark),
|
||
VolunteerTableId = request.VId,
|
||
}).ToList();
|
||
|
||
var itemIds = await _VolunteerTableDetailServices.Add(itemlist);
|
||
if (itemIds > 0 && data.success)
|
||
{
|
||
|
||
_unitOfWork.CommitTran();
|
||
data.msg = "更新成功";
|
||
data.response = request?.VId.ObjToString();
|
||
}
|
||
else
|
||
{
|
||
_unitOfWork.RollbackTran();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return new MessageModel<string>()
|
||
{
|
||
msg = "VId 必传",
|
||
success = false
|
||
};
|
||
}
|
||
return data;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Pc删除志愿表
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
[HttpDelete("Delete/{id}")]
|
||
public async Task<MessageModel<string>> Delete(int id = 0)
|
||
{
|
||
var data = new MessageModel<string>();
|
||
if (id > 0)
|
||
{
|
||
var detail = await _VolunteerTableServices.QueryById(id);
|
||
detail.IsDelete = true;
|
||
if (detail != null)
|
||
{
|
||
_unitOfWork.BeginTran();
|
||
data.success = await _VolunteerTableServices.Update(detail);
|
||
var itemids = (await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == id)).Select(c => (object)c.Id).ToArray();
|
||
var status = await _VolunteerTableDetailServices.DeleteByIds(itemids);
|
||
if (status && data.success)
|
||
{
|
||
_unitOfWork.CommitTran();
|
||
}
|
||
else
|
||
{
|
||
_unitOfWork.RollbackTran();
|
||
return new MessageModel<string>()
|
||
{
|
||
msg = "删除失败"
|
||
};
|
||
};
|
||
}
|
||
if (data.success)
|
||
{
|
||
data.msg = "删除成功";
|
||
data.response = detail?.Id.ObjToString();
|
||
}
|
||
}
|
||
return data;
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <returns></returns>
|
||
[AllowAnonymous]
|
||
[HttpGet("downloadpdf")]
|
||
public async Task<IActionResult> DownloadPdf(string url)
|
||
{
|
||
var htmlContent = await HtmlHeplerFetcher.GetHtmlContentAsync(url);
|
||
// 假设pdfBytes是已存在的PDF文件字节流
|
||
byte[] pdfBytes = new HtmlToPdfConverter().ConvertHtmlToPdf(htmlContent);
|
||
// 设置响应头,指定Content-Type和文件名
|
||
Response.Headers.Add("Content-Disposition", string.Format("attachment; filename={0}.pdf", DateTime.Now.ToString("MMddHHmmssfff")));
|
||
Response.ContentType = "application/pdf";
|
||
return File(pdfBytes, "application/pdf");
|
||
}
|
||
|
||
|
||
}
|
||
}
|