/// <summary>
        /// 生成失败的Excel文件
        /// </summary>
        /// <param name="main"></param>
        public void GenerateFailFile(DataImportIndexInfo main)
        {
            // 获取导入失败的数据
            var failList = detailDal.Queryable().Where(e => e.Batch == main.Batch && e.ImportState == ImportState.Fail).ToList();

            // 导出错误信息的文件,如果文件存在,先删除
            ExcelHelper.Export(failList, main.FailImportFile.DiskFileFullName);
        }
        /// <summary>
        /// 解析Excel文件并将其数据持久化
        /// </summary>
        /// <param name="file"></param>
        /// <param name="logonInfo"></param>
        /// <returns></returns>
        public DataImportIndexView AnalyzFile(FileNameView file, TokenLogonInfo logonInfo)
        {
            // 创建导入的主索引数据
            DataImportIndexInfo main = new DataImportIndexInfo()
            {
                ImportFile   = file,
                Batch        = GetBatch(), // file.FileName.Replace($".{file.FileExtName}", ""),
                DataType     = DataType,
                CreateDate   = DateTime.Now,
                CreaterId    = logonInfo.Id,
                CreaterName  = logonInfo.Name,
                UpdateDate   = DateTime.Now,
                UpdaterId    = logonInfo.Id,
                UpdaterName  = logonInfo.Name,
                ProcessState = ProcessState.Edit,
                IsDelete     = false,
                Count        = 0,
                Current      = 0,
                IsComplete   = false
            };

            // 读取Excel文件中的数据
            List <T> excelData = ExcelHelper.Import <T>(main.ImportFile.DiskFileFullName);

            // 按Excel中的行号排序
            excelData = excelData.OrderBy(e => e.RowIndex).ToList();
            // 完善提交的数据信息
            foreach (var item in excelData)
            {
                item.Batch       = main.Batch;
                item.ImportState = ImportState.None;
                item.CreateDate  = DateTime.Now;
                item.CreaterId   = logonInfo.Id;
                item.CreaterName = logonInfo.Name;
                item.UpdateDate  = DateTime.Now;
                item.UpdaterId   = logonInfo.Id;
                item.UpdaterName = logonInfo.Name;
            }
            //解析导入的数据信息
            List <T> importList = AnalyzeImportList(excelData);

            // 持久化导入索引信息
            main.Count   = excelData.Count;
            main.Current = 1;
            mainDal.InsertObject(main);
            // 持久化导入数据
            detailDal.InsertRange(excelData);

            // 返回导入的索引查看对象
            return(AutoMapper.Mapper.Map <DataImportIndexView>(main));
        }