499 lines
21 KiB
C#
499 lines
21 KiB
C#
using Admin.NET.Application.Service;
|
|
using Admin.NET.Core.Service;
|
|
using Microsoft.AspNetCore.Http;
|
|
using MongoDB.Bson;
|
|
using MongoDB.Driver;
|
|
using System.IO;
|
|
using Newtonsoft.Json;
|
|
using MiniExcelLibs;
|
|
namespace Admin.NET.Application;
|
|
|
|
|
|
/// <summary>
|
|
///专家端服务
|
|
/// </summary>
|
|
[ApiDescriptionSettings(ApplicationConst.ZYGroupName, Order = 100)]
|
|
public class SysWechatUserMapCartsService : IDynamicApiController, ITransient
|
|
{
|
|
private readonly SqlSugarRepository<SysWechatUserMapCarts> _rep;
|
|
private readonly SqlSugarRepository<SysWechatUser> _userRep;
|
|
private readonly SqlSugarRepository<SysWeChatUserExtend> _userExtendRep;
|
|
private readonly SqlSugarRepository<SysVolunteerTb> _volunteerRep;
|
|
private readonly SqlSugarRepository<SysVolunteerTbSp> _vtbSpRep;
|
|
private readonly UserManager _userManager;
|
|
private readonly SqlSugarRepository<SysWeChatUserExtend> _wechatUserExtendrep;
|
|
private readonly IMongoDBRepository _mongoRepository;
|
|
public SysWechatUserMapCartsService(SqlSugarRepository<SysWechatUserMapCarts> rep, SqlSugarRepository<SysWechatUser> userRepository,
|
|
SqlSugarRepository<SysVolunteerTb> volunteerRepository, SqlSugarRepository<SysVolunteerTbSp> vSpRep, UserManager userManager, IMongoDBRepository mongoRepository, SqlSugarRepository<SysWeChatUserExtend> userExtendRep, SqlSugarRepository<SysWeChatUserExtend> wechatUserExtendrep)
|
|
{
|
|
_rep = rep;
|
|
_userRep = userRepository;
|
|
_volunteerRep = volunteerRepository;
|
|
_vtbSpRep = vSpRep;
|
|
_userManager = userManager;
|
|
_mongoRepository = mongoRepository;
|
|
_userExtendRep = userExtendRep;
|
|
_wechatUserExtendrep = wechatUserExtendrep;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 分页查询用户订单关联表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApiDescriptionSettings(Name = "Page")]
|
|
public async Task<SqlSugarPagedList<SysWechatUserMapCartsOutput>> Page(SysWechatUserMapCartsInput input)
|
|
{
|
|
var query = _rep.AsQueryable()
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
|
u.Phone.Contains(input.SearchKey.Trim())
|
|
|| u.OrderId.Contains(input.SearchKey.Trim())
|
|
|| u.cartId.Contains(input.SearchKey.Trim())
|
|
|| u.Amount.Contains(input.SearchKey.Trim())
|
|
|| u.OpenId.Contains(input.SearchKey.Trim())
|
|
|| u.ZjOpenId.Contains(input.SearchKey.Trim())
|
|
)
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Phone), u => u.Phone.Contains(input.Phone.Trim()))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.OrderId), u => u.OrderId.Contains(input.OrderId.Trim()))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.cartId), u => u.cartId.Contains(input.cartId.Trim()))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Amount), u => u.Amount.Contains(input.Amount.Trim()))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.OpenId), u => u.OpenId.Contains(input.OpenId.Trim()))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.ZjOpenId), u => u.ZjOpenId.Contains(input.ZjOpenId.Trim()))
|
|
//处理外键和TreeSelector相关字段的连接
|
|
.LeftJoin<BusSpecialistGroup>((u, cartid) => u.cartId == cartid.MajorType.ToString())
|
|
.LeftJoin<SysWechatUser>((u, cartid, openid) => u.OpenId == openid.OpenId)
|
|
.LeftJoin<SysWechatUser>((u, cartid, openid, zjopenid) => u.ZjOpenId == zjopenid.OpenId)
|
|
.OrderBy(u => u.CreateTime)
|
|
.Select((u, cartid, openid, zjopenid) => new SysWechatUserMapCartsOutput
|
|
{
|
|
Id = u.Id,
|
|
Phone = u.Phone,
|
|
OrderId = u.OrderId,
|
|
cartId = u.cartId,
|
|
cartName = cartid.Name,
|
|
Amount = u.Amount,
|
|
CreateTime = u.CreateTime,
|
|
UpdateTime = u.UpdateTime,
|
|
CreateUserId = u.CreateUserId,
|
|
CreateUserName = u.CreateUserName,
|
|
UpdateUserId = u.UpdateUserId,
|
|
UpdateUserName = u.UpdateUserName,
|
|
IsDelete = u.IsDelete,
|
|
OpenId = u.OpenId,
|
|
OpenIdNickName = openid.NickName,
|
|
ZjOpenId = u.ZjOpenId,
|
|
ZjOpenIdNickName = zjopenid.NickName,
|
|
});
|
|
return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取用户订单关联表列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApiDescriptionSettings(Name = "List")]
|
|
public async Task<List<SysWechatUserMapCartsOutput>> List([FromQuery] SysWechatUserMapCartsInput input)
|
|
{
|
|
return await _rep.AsQueryable().Select<SysWechatUserMapCartsOutput>().ToListAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取关联专家介绍页面唯一Id列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[ApiDescriptionSettings(Name = "BusSpecialistGroupcartIdDropdown"), HttpGet]
|
|
public async Task<dynamic> BusSpecialistGroupcartIdDropdown()
|
|
{
|
|
return await _rep.Context.Queryable<BusSpecialistGroup>()
|
|
.Select(u => new
|
|
{
|
|
Label = u.Name,
|
|
Value = u.Id
|
|
}
|
|
).ToListAsync();
|
|
}
|
|
/// <summary>
|
|
/// 获取OpenId列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[ApiDescriptionSettings(Name = "SysWechatUserOpenIdDropdown"), HttpGet]
|
|
public async Task<dynamic> SysWechatUserOpenIdDropdown()
|
|
{
|
|
return await _rep.Context.Queryable<SysWechatUser>()
|
|
.Select(u => new
|
|
{
|
|
Label = u.NickName,
|
|
Value = u.Id
|
|
}
|
|
).ToListAsync();
|
|
}
|
|
/// <summary>
|
|
/// 获取ZjOpenId列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[ApiDescriptionSettings(Name = "SysWechatUserZjOpenIdDropdown"), HttpGet]
|
|
public async Task<dynamic> SysWechatUserZjOpenIdDropdown()
|
|
{
|
|
return await _rep.Context.Queryable<SysWechatUser>()
|
|
.Select(u => new
|
|
{
|
|
Label = u.NickName,
|
|
Value = u.Id
|
|
}
|
|
).ToListAsync();
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 专家订单列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApiDescriptionSettings(Name = "SpecialistGroupOrderList")]
|
|
public async Task<List<SysWechatUserMapCartsOutput>> SpecialistGroupOrderList([FromQuery] SpecialistGroupOrderListInput input)
|
|
{
|
|
return await _rep.AsQueryable()
|
|
.Where(e => e.cartId == input.catId)
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.OrderId), s => s.OrderId.Contains(input.OrderId))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Phone), s => s.OrderId.Contains(input.Phone))
|
|
.Select<SysWechatUserMapCartsOutput>().ToListAsync();
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 用户订单列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApiDescriptionSettings(Name = "UserOrderList")]
|
|
public async Task<List<SysWechatUserMapCartsOutput>> UserOrderList([FromQuery] SpecialistGroupOrderListInput input)
|
|
{
|
|
return await _rep.AsQueryable()
|
|
//.Where(e => e.cartId == input.catId)
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.OrderId), s => s.OrderId.Contains(input.OrderId))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Phone), s => s.Phone.Contains(input.Phone))
|
|
.Select<SysWechatUserMapCartsOutput>().ToListAsync();
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取专家的客户的志愿表列表
|
|
/// 详情和导出都可以直接用 VolunTb的原始接口
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApiDescriptionSettings(Name = "GetCustomerTbList")]
|
|
public async Task<List<VoTableDtoResponse>> GetCustomerTbList([FromQuery] SpecialistGroupOrderListInput input)
|
|
{
|
|
var customer = await _userRep.AsQueryable().Where(e => e.Mobile == input.Phone).FirstAsync();
|
|
if (customer == null)
|
|
{
|
|
Oops.Oh("未找到用户信息");
|
|
}
|
|
var provinceCode = (await _userExtendRep.AsQueryable().Where(e => e.WxId == customer.Id).FirstAsync()).ProvinceCode;
|
|
var tblist = await _volunteerRep.AsQueryable().Where(e => e.CId == customer.Id && e.IsPush == true).Select(c => new VoTableDtoResponse()
|
|
{
|
|
BatchName = c.BatchName,
|
|
CId = c.CId,
|
|
Score = c.Score,
|
|
SubjectClaim = c.SubjectClaim,
|
|
CustomerName = customer.NickName,
|
|
personlocationCode = provinceCode,
|
|
TableName = c.TableName,
|
|
Type = c.Type,
|
|
VId = c.Id,
|
|
CreateTime = c.CreateTime
|
|
}).OrderByDescending(c => c.VId).ToListAsync();
|
|
return tblist;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 复制用户志愿表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<bool> CopyTbZy([FromBody] CopyTbZyInput input)
|
|
{
|
|
var vModel = await _volunteerRep.AsQueryable().FirstAsync(e => e.Id == input.tId);
|
|
if (vModel == null)
|
|
Oops.Oh("志愿数据不存在或已删除");
|
|
var entity = vModel.Adapt<SysVolunteerTbSp>();
|
|
entity.SCId = input.SpId;
|
|
entity.LocationCode = input.locationCode;
|
|
var wxextend = await _wechatUserExtendrep.GetFirstAsync(e => e.WxId == vModel.CId);
|
|
entity.Sp = wxextend.sp.Value;
|
|
|
|
if(await _vtbSpRep.IsAnyAsync(e => e.Id == vModel.Id))
|
|
{
|
|
await _vtbSpRep.DeleteAsync(e => e.Id == vModel.Id);
|
|
}
|
|
|
|
return await _vtbSpRep.InsertAsync(entity);
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 修改我的志愿
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApiDescriptionSettings(Name = "Put")]
|
|
public async Task<long> Put([FromBody] VoTableDtoRequest request)
|
|
{
|
|
if (request.VId <= 0)
|
|
{
|
|
throw Oops.Oh("志愿id为必传");
|
|
}
|
|
var model = await _vtbSpRep.GetSingleAsync(c => c.Id == request.VId);
|
|
if (!string.IsNullOrWhiteSpace(request.TableName)) { model.TableName = request.TableName; }
|
|
model.Detail = request.vTbDetails.ToJson();
|
|
model.UpdateTime = DateTime.Now;
|
|
model.UpdateUserName = _userManager.RealName;
|
|
model.UpdateUserId = _userManager.UserId;
|
|
await _vtbSpRep.UpdateAsync(model);
|
|
return model.Id;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 删除我的志愿表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[ApiDescriptionSettings(Name = "Delete")]
|
|
public async Task Delete(DeleteSysVolunteerTbInput input)
|
|
{
|
|
var entity = await _vtbSpRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
|
await _vtbSpRep.FakeDeleteAsync(entity); //假删除
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 已添加志愿列表详情
|
|
/// </summary>
|
|
/// <param name="Id"></param>
|
|
/// <param name="location"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[ApiDescriptionSettings(Name = "Get")]
|
|
public async Task<VoTabDetailDto> Get([FromQuery] long Id, string location)
|
|
{
|
|
var asrespose = new VoTabDetailDto();
|
|
var entity = await _vtbSpRep.GetFirstAsync(u => u.Id == Id);
|
|
var rep = new VoTableDtoResponse();
|
|
rep.CId = entity.CId;
|
|
rep.Sp = entity.Sp;
|
|
rep.TableName = entity.TableName;
|
|
rep.BatchName = entity.BatchName;
|
|
rep.Type = entity.Type;
|
|
rep.SubjectClaim = entity.SubjectClaim;
|
|
rep.Score = entity.Score;
|
|
var userInfo = await _userRep.AsQueryable().FirstAsync(e => e.Id == entity.CId);
|
|
rep.CustomerName = userInfo?.NickName;
|
|
asrespose.VoTable = rep;
|
|
var jsons = JsonConvert.DeserializeObject<List<VTbDetailDto>>(entity.Detail);
|
|
var pids = jsons.SelectMany(c => c.vItems.Select(c => c._pId).ToList()).ToList();
|
|
var dbclient = _mongoRepository.Context.GetDatabase("zhiyuan");
|
|
var bejson = dbclient.GetCollection<zsplanfusionmodel>(string.Format("zsplanfusionmodel_{0}", location));
|
|
var filterBuilders = new List<FilterDefinition<zsplanfusionmodel>>();
|
|
filterBuilders.Add(Builders<zsplanfusionmodel>.Filter.In(p => p.pid, pids));
|
|
FilterDefinition<zsplanfusionmodel> filter = filterBuilders.Count > 0
|
|
? Builders<zsplanfusionmodel>.Filter.And(filterBuilders)
|
|
: new BsonDocument(); // 如果没有条件,则使用空过滤器
|
|
var list = await bejson.Find(filter).ToListAsync();
|
|
var dtolist = new List<TbDetailASDto>();
|
|
jsons.ForEach(c =>
|
|
{
|
|
var vlist = new List<VItemDetail>();
|
|
string educationCategory = string.Empty;
|
|
var features = new List<string>();
|
|
string ownership = string.Empty;
|
|
string province = string.Empty;
|
|
string subjectType = string.Empty;
|
|
string city = string.Empty;
|
|
string uName = string.Empty;
|
|
c.vItems.ForEach(a =>
|
|
{
|
|
|
|
var plan = list.FirstOrDefault(f => f.pid == a._pId);
|
|
uName = plan.universityName;
|
|
educationCategory = plan.educationCategory;
|
|
features = plan.features;
|
|
ownership = plan.ownership;
|
|
province = plan.province;
|
|
subjectType = plan.subjectType;
|
|
city = plan.city;
|
|
vlist.Add(new VItemDetail
|
|
{
|
|
MajorCode = plan.majorCode,
|
|
percentAge = a.percentAge,
|
|
_pId = a._pId,
|
|
Sort = a.Sort,
|
|
type = a.type,
|
|
Major = plan.majorName,
|
|
academic = plan.academicYear,
|
|
//features = plan.features,
|
|
fee = plan.fee,
|
|
nature = plan.nature,
|
|
// ownership = plan.ownership,
|
|
planCount = plan.planCount,
|
|
planItems = plan.items,
|
|
remark = plan.remark,
|
|
subjectClam = plan._23subject,
|
|
// subjectType = plan.subjectType,
|
|
});
|
|
});
|
|
dtolist.Add(new TbDetailASDto()
|
|
{
|
|
Type = c.type,
|
|
Sort = c.Sort,
|
|
UnCode = c.UnCode,
|
|
UnName = uName,
|
|
educationCategory = educationCategory,
|
|
features = features,
|
|
ownership = ownership,
|
|
province = province,
|
|
subjectType = subjectType,
|
|
city = city,
|
|
Logo = "https://static-data.ycymedu.com/6.jpg",
|
|
UnId = c.UnId,
|
|
vItems = vlist
|
|
});
|
|
});
|
|
var university = dbclient.GetCollection<UniversityDto>("university");
|
|
var unfilterBuilders = new List<FilterDefinition<UniversityDto>>();
|
|
unfilterBuilders.Add(Builders<UniversityDto>.Filter.In(p => p._id, dtolist.Select(c => c.UnId)));
|
|
FilterDefinition<UniversityDto> unfilter = unfilterBuilders.Count > 0
|
|
? Builders<UniversityDto>.Filter.And(unfilterBuilders)
|
|
: new BsonDocument(); // 如果没有条件,则使用空过滤器
|
|
var unlist = await university.Find(unfilter).ToListAsync();
|
|
dtolist.ForEach(a =>
|
|
{
|
|
a.Logo = unlist.Where(e => e._id == a.UnId).Any() ? unlist.Where(e => e._id == a.UnId).FirstOrDefault().logo : "https://api-static-zhiy.oss-cn-shanghai.aliyuncs.com/images/nocontent/empty.png";
|
|
});
|
|
asrespose.tbDetails = dtolist;
|
|
return asrespose;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 导出excel
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("Export")]
|
|
[ProducesResponseType(0)]
|
|
[AllowAnonymous]
|
|
public async Task<IActionResult> Export([FromQuery] ExportExcelDto dto)
|
|
{
|
|
var tableDetailItemsViews = new List<VolunteerItemsViewMinExcelAttr>();
|
|
var viewentity = await _vtbSpRep.GetFirstAsync(u => u.Id == dto.Id);
|
|
|
|
var jsons = JsonConvert.DeserializeObject<List<VTbDetailDto>>(viewentity.Detail);
|
|
var pids = jsons.SelectMany(c => c.vItems.Select(c => c._pId).ToList()).ToList();
|
|
var dbclient = _mongoRepository.Context.GetDatabase("zhiyuan");
|
|
var bejson = dbclient.GetCollection<zsplanfusionmodel>(string.Format("zsplanfusionmodel_{0}", dto.location));
|
|
var filterBuilders = new List<FilterDefinition<zsplanfusionmodel>>();
|
|
filterBuilders.Add(Builders<zsplanfusionmodel>.Filter.In(p => p.pid, pids));
|
|
FilterDefinition<zsplanfusionmodel> filter = filterBuilders.Count > 0
|
|
? Builders<zsplanfusionmodel>.Filter.And(filterBuilders)
|
|
: new BsonDocument(); // 如果没有条件,则使用空过滤器
|
|
var list = await bejson.Find(filter).ToListAsync();
|
|
jsons.ForEach(c =>
|
|
{
|
|
var vlist = new List<VItemDetail>();
|
|
string educationCategory = string.Empty;
|
|
var features = new List<string>();
|
|
string ownership = string.Empty;
|
|
string province = string.Empty;
|
|
string subjectType = string.Empty;
|
|
string city = string.Empty;
|
|
string uName = string.Empty;
|
|
c.vItems.ForEach(a =>
|
|
{
|
|
var plan = list.FirstOrDefault(f => f.pid == a._pId);
|
|
if (plan.items != null)
|
|
{
|
|
var planitems = plan.items;
|
|
|
|
var _23items = planitems.Where(e => e.year == "2023");
|
|
var _22items = planitems.Where(e => e.year == "2022");
|
|
var _21items = planitems.Where(e => e.year == "2021");
|
|
tableDetailItemsViews.Add(new VolunteerItemsViewMinExcelAttr()
|
|
{
|
|
AcademicYear = plan.academicYear,
|
|
AreaName = province,
|
|
fee = plan.fee,
|
|
Major = plan.majorName,
|
|
MajorCode = plan.majorCode,
|
|
MajorGroup = string.IsNullOrWhiteSpace(plan.majorGroup) ? "" : "(" + plan.majorGroup.Split("(")[1],
|
|
MajorSubjectClam = plan._24subject,
|
|
Nature = plan.nature,
|
|
planCount = plan.planCount,
|
|
Sort = a.Sort,
|
|
UniversityCode = c.UnCode,
|
|
UniversityName = c.UnName,
|
|
_23Scoreline = _23items.Any() ? _23items.FirstOrDefault().score == 0 ? "--" : _23items.FirstOrDefault().score.ToString() : "--",
|
|
_22Scoreline = _22items.Any() ? _22items.FirstOrDefault().score == 0 ? "--" : _22items.FirstOrDefault().score.ToString() : "--",
|
|
_21Scoreline = _21items.Any() ? _21items.FirstOrDefault().score == 0 ? "--" : _21items.FirstOrDefault().score.ToString() : "--",
|
|
|
|
_23PlanCount = _23items.Any() ? _23items.FirstOrDefault().planCount == 0 ? "--" : _23items.FirstOrDefault().planCount.ToString() : "--",
|
|
_22PlanCount = _22items.Any() ? _22items.FirstOrDefault().planCount == 0 ? "--" : _22items.FirstOrDefault().planCount.ToString() : "--",
|
|
_21PlanCount = _21items.Any() ? _21items.FirstOrDefault().planCount == 0 ? "--" : _21items.FirstOrDefault().planCount.ToString() : "--",
|
|
|
|
_23RankLine = _23items.Any() ? _23items.FirstOrDefault().rankLine == 0 ? "--" : _23items.FirstOrDefault().rankLine.ToString() : "--",
|
|
_22RankLine = _22items.Any() ? _22items.FirstOrDefault().rankLine == 0 ? "--" : _22items.FirstOrDefault().rankLine.ToString() : "--",
|
|
_21RankLine = _21items.Any() ? _21items.FirstOrDefault().rankLine == 0 ? "--" : _21items.FirstOrDefault().rankLine.ToString() : "--",
|
|
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
var memoryStream = new MemoryStream();
|
|
//将数据写到内存当中
|
|
memoryStream.SaveAs(tableDetailItemsViews, true, string.Format("模拟志愿表:_{0}_选科:{1}|_分数:{2}|_类型_{3}", viewentity.TableName, viewentity.SubjectClaim, viewentity.Score, viewentity.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_"))
|
|
};
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|