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 GetImportExcelData() { if (GetDataFunc == null) { throw new BaseException("没有找到导入数据的方法!"); } var msg = ""; if (!this.Config.ValidFormat(ref msg)) { throw new BaseException(msg); } //获取Excel数据 var sourceData = this.Config.ExcelUtil.ExcelToList(); List result = new List(); var resultData = this.Config.GetListData(sourceData); if (resultData != null) { var tmpResult = this.GetDataFunc(resultData); if (tmpResult != null) { result.AddRange(tmpResult); } else { return result; } } else { return result; } return result; } #endregion } }