Esempio n. 1
0
        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));
     }
 }
Esempio n. 5
0
        public void SetComplete(string batch)
        {
            FileNameView failFileName = filePath.DataImportEmployeesFailFileName(batch);

            importService.SetComplete(batch, failFileName, LogonInfo);
        }