public DataImportIndexView Upload() { // 获取存储导入企业的文件信息 FileNameView fileName = filePath.DataImportEmployeesFileName(); // 将上传的文件保存至服务器磁盘 SaveSingleFile(fileName.DiskFileFullName); // 解析上传的文件,并创建导入文件索引对象 return(importService.AnalyzFile(fileName, LogonInfo)); }
/// <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)); }
/// <summary> /// 设置导入完成 /// </summary> /// <param name="batch"></param> /// <param name="failFile"></param> /// <param name="logonInfo"></param> /// <returns></returns> public void SetComplete(string batch, FileNameView failFile, TokenLogonInfo logonInfo) { // 获取主表数据 var main = SearchMainByBatch(batch); // 设置主表数据 main.ProcessState = ProcessState.Complete; main.IsComplete = true; main.UpdateDate = DateTime.Now; main.UpdaterId = logonInfo.Id; main.UpdaterName = logonInfo.Name; main.FailImportFile = failFile; // 生成导入失败的Excel文件 // 异步生成导入失败的Excel文件 ThreadPool.QueueUserWorkItem(h => { GenerateFailFile(main); }); // 持久化设置的主表数据 mainDal.UpdateObject(main); }
/// <summary> /// /// </summary> /// <param name="file"></param> /// <param name="showName"></param> /// <returns></returns> public HttpResponseMessage DownloadFile(FileNameView file, string showName = "download") { //var context = ServiceLoader.GetService<Microsoft.AspNetCore.Http.HttpContextAccessor>(); // context.HttpContext.Response.Headers.Add() try { var stream = new FileStream(file.DiskFileFullName, FileMode.Open); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(stream) }; stream.Close(); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = showName + "." + file.FileExtName }; return(response); } catch (Exception) { return(new HttpResponseMessage(HttpStatusCode.NoContent)); } }
public void SetComplete(string batch) { FileNameView failFileName = filePath.DataImportEmployeesFailFileName(batch); importService.SetComplete(batch, failFileName, LogonInfo); }