using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyCode.Project.Infrastructure.Exceptions;
namespace MyCode.Project.Infrastructure.Imports
{
///
/// 导入Excel数据任务
///
public class ImportExcelProcess:IImportExcelProcess where T:class ,new()
{
///
/// 导入数据对应的配置实体
///
public ImportConfig Config { get; protected set; }
///
/// 导入数据方法
///
private ImportEvent ImportFunc;
///
/// 获取数据方法
///
private GetDataEvent GetDataFunc;
///
/// 初始化一个类型的实例
///
/// 导入配置
/// 导入方法
public ImportExcelProcess(ImportConfig config, ImportEvent func)
{
this.Config = config;
this.ImportFunc = func;
}
///
/// 初始化一个类型的实例
///
/// 导入配置
/// 获取数据方法
public ImportExcelProcess(ImportConfig config, GetDataEvent func)
{
this.Config = config;
this.GetDataFunc = func;
}
#region RunImportExcelProcess(执行导入Excel数据的方法)
///
/// 执行导入Excel数据的方法
///
public ImportResult RunImportExcelProcess()
{
if (ImportFunc == null) { throw new BaseException("没有找到导入数据的方法!"); }
ImportResult result=new ImportResult();
var msg = "";
//验证是否字段都有
if (!this.Config.ValidFormat(ref msg)) { throw new BaseException(msg); }
//获取Excel数据
var sourceData = this.Config.ExcelUtil.ExcelToList();
//将对象转成List
var resultData = this.Config.GetListData(sourceData);
//执行导入的方法
var tmpResult = this.ImportFunc(resultData);
var importResult = tmpResult as ImportResult;
if (importResult != null)
{
result.InsertCount += importResult.InsertCount;
result.UpdateCount += (tmpResult as ImportResult).UpdateCount;
}
return result;
}
#endregion
#region GetImportExcelData(获取导入Excel数据的方法)
///
/// 获取导入Excel数据的方法
///
public List