using Magicodes.ExporterAndImporter.Core.Extension;
using Magicodes.ExporterAndImporter.Core.Models;
using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Wood.Entity;
using Wood.Service.SystemManage.Param;
namespace Wood.Service
{
///
/// service基础类
///
public class ApiService : ControllerBase
{
protected async Task ExportFile(ICollection dtos,string fileName) where T : class, new()
{
var excelExporter = HttpContext.RequestServices.GetRequiredService();
var res = await excelExporter.ExportAsByteArray(dtos);
return new FileStreamResult(new MemoryStream(res), "application/octet-stream") { FileDownloadName = DateTime.Now.ToString("yyyyMMddHHmm") +"_"+ fileName };
}
protected async Task> ImportFile(IFormFile file,List errors) where T : class, new()
{
var excelImporter = HttpContext.RequestServices.GetRequiredService();
ImportResult result = await excelImporter.Import(file.OpenReadStream());
if (result.HasError)
{
foreach (var item in result.RowErrors)
errors.Add(new ImportErrorDto { Index = item.RowIndex, Errors = string.Join(';', item.FieldErrors.Values.ToArray()) });
foreach (var item in result.TemplateErrors)
errors.Add(new ImportErrorDto { Index = 0, Errors = item.RequireColumnName + "," + item.Message });
}
return result;
}
}
}