• NPOI 上传Excel功能(二)


    3.上传文件,写入log

    using DC.BE.Business.SYS;
    using DC.BE.Entity.ERP;
    using DC.BE.Entity.SAS;
    using DC.BE.Entity.SYS;
    using DC.Framework.Logging;
    using DC.Framework.Logging.ELLAB;
    using Excel;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using DC.BE.Entity.Common;
    using DC.Framework.Repository.Definition;
    using System.Diagnostics;
    using DC.Backend.Utility;
    using DC.BE.Business.SYS.SYSBModel;
    using DC.BE.Business.SAS;
    using DC.BE.Entity.Security;
    using DC.BE.BusinessImpl.Exceptions;
    using DC.BE.BusinessImpl.SYS;
    
    namespace DC.Website.MVC5.Controllers.SYS.Base
    {
        public class BaseDataImportController : Controller
        {
            private readonly ITsysManagementBusiness _tsysManagementBusiness;
            private static readonly ILogger Logger = LoggerFactory.GetLogger(typeof(BaseDataImportController).FullName);
            private readonly ITsysStoreInfoBusiness _tsysStoreInfoBusiness;
            private readonly ITsasManagementBusiness _tsasManagementBusiness;
            private readonly ITsasRegCompanyBusiness _TsasRegCompanyBusiness;
            private readonly IUnitOfWork _unitOfWork;
            private readonly DcContext _dcContext;
    
            private readonly IUploadBaseDataBusiness _iuploadBaseDataToActualBusiness;
         
            public BaseDataImportController(ITsysManagementBusiness tsysManagementBusiness, ITsysStoreInfoBusiness tsysStoreInfoBusiness, IUnitOfWork unitOfWork, ITsasManagementBusiness tsasManagementBusiness, DcContext dcContext,
                ITsasRegCompanyBusiness TsasRegCompanyBusiness, IUploadBaseDataBusiness iUploadBaseDataToActualBusiness)
            {
                _tsysManagementBusiness = tsysManagementBusiness;
                _tsysStoreInfoBusiness = tsysStoreInfoBusiness;
                _unitOfWork = unitOfWork;
                _tsasManagementBusiness = tsasManagementBusiness;
                _dcContext = dcContext;
                _TsasRegCompanyBusiness = TsasRegCompanyBusiness;
                _iuploadBaseDataToActualBusiness = iUploadBaseDataToActualBusiness;
            }
    
            //上传基础数据EXCEL
            public JsonResult BaseDataTemplateImport(HttpPostedFileBase file)
            {
                string compId = Request["hid_value"];
                //this.DeleteTempDatabase();
                //this.CopyTempDatabase(compId);
                //读取配置文件上传路径
                //var sourceFolder = GlobalConfigurations.sourceFolder;
                var sourceFolder = Server.MapPath("/") + @"Imports\";
                String result = string.Empty;
                // v2.00.056 李恒宇 add_s 
                //System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(sourceFolder);
                //if (di.GetFiles().Length + di.GetDirectories().Length != 0)
                //{
                //    var ExistsFilePath = Path.Combine(sourceFolder, Path.GetFileName(file.FileName));
                //    if (System.IO.File.Exists(ExistsFilePath))
                //    {
                //        return "FileExists";
                //    }
                //}
                // v2.00.056 李恒宇 add_e 
                //路径不存在 创建路径
                if (!Directory.Exists(sourceFolder))
                {
                    Directory.CreateDirectory(sourceFolder);
                }
                // v2.00.056 李恒宇 rep_s 
                //var FilePath = Path.Combine(sourceFolder,compId+" "+Path.GetFileName(file.FileName));
                Guid fileGuid = Guid.NewGuid();
                Guid userId = _dcContext.CurrentUser.Id;
                //string fileName = compId + Path.GetFileName(file.FileName).Split('.')[0] + "+" + fileGuid + ".xlsx";
                string fileName = compId + Path.GetFileName(file.FileName).Split('.')[0] + "+" + userId + "+" + fileGuid + ".xlsx";
                string passExcelName = compId + Path.GetFileName(file.FileName).Split('.')[0];
                var FilePath = Path.Combine(sourceFolder, Path.GetFileName(fileName));
                System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(sourceFolder);
                if (di.GetFiles().Length + di.GetDirectories().Length != 0)
                {
                    FileInfo[] dirInfo = di.GetFiles();
                    var existExcelName = "";
                    foreach (FileInfo NextFolder in dirInfo)
                    {
                        existExcelName = NextFolder.Name.Split('+')[0];
                        if (existExcelName.Equals(passExcelName))
                        {
                            NextFolder.Delete();
                        }
                    }
                }
                // v2.00.056 李恒宇 rep_e 
                file.SaveAs(FilePath);
                // v2.00.056 李恒宇 rep_s 
                // return result;
    
                ResultData RDS = _iuploadBaseDataToActualBusiness.BaseDataTemplateImport(compId, FilePath);
                
                // 清除上传的表
                System.IO.File.Delete(FilePath);
                return Json(RDS);
                //return "FileSuccess";
                // v2.00.056 李恒宇 rep_e
            }
    
            public JsonResult GetAllDataImportByCompany(String jsonCompany)
            {
                List<BaseDataUploadBModel> result = _tsysManagementBusiness.GetAllDataImportByCompany(jsonCompany);
                return Json(result);
            }
    
            /// <summary>
            /// 复制临时DB
            /// </summary>
            /// <param name="compId"></param>
            public void CopyTempDatabase(String compId)
            {
                string connectionString = GlobalConfigurations.connectionString;
                string sourceDb = GlobalConfigurations.actualDB;//actualDB
                string targetDb = GlobalConfigurations.tempDB;//tempDB
                SmoBulkCopy.Copy(connectionString, sourceDb, targetDb, Guid.Parse(compId));
            }
    
            /// <summary>
            /// 删除临时DB
            /// </summary>
            public void DeleteTempDatabase()
            {
                string targetDb = GlobalConfigurations.tempDB;
                _tsysManagementBusiness.DeleteTempDatabase(targetDb);
            }
    
            public void PauseLogin(String compId)
            {
                if (compId == "" || compId == null)
                {
                    return;
                }
                _tsasManagementBusiness.PauseLogin(Guid.Parse(compId));
            }
    
            public void RecoveryLogin(String compId)
            {
                if (compId == "" || compId == null)
                {
                    return;
                }
                _tsasManagementBusiness.RecoveryLogin(Guid.Parse(compId));
            }
    
            //v2.00.152 吕毅飞 2017/3/24 add_s
            public ActionResult DownloadLog(string companyId)
            {
                string contentType = "application/txt";
                string log = System.Configuration.ConfigurationManager.AppSettings["baseDataImportLog"];
                Guid company = Guid.Parse(companyId);
                TsasRegCompany comp = _TsasRegCompanyBusiness.Get(company);
                log = log.Replace("BulkImportService.log", comp.CompanyLoginMark + "基础数据导入日志.txt");
                if (!System.IO.File.Exists(log))//目录下是否有文件
                {
                    System.IO.FileStream fs = new FileStream(log, FileMode.OpenOrCreate);
                    fs.Close();
                }
                var file = System.IO.File.Open(log, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                var stream = (Stream)(file);
                return File(stream, contentType, comp.CompanyLoginMark + "基础数据导入日志.txt");
            }
            //v2.00.152 吕毅飞 2017/3/24 add_e
        }
    }
    萌橙 你瞅啥?
  • 相关阅读:
    通过http.client解析url返回的数据时为什么中文变成了unicode码
    爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢
    [Functional Programming] Function modelling -- 4. Reader Monda example
    [Angular] Understanding the Angular Component providers property
    [HTML5] Correctly Define Heading Levels of a Web Page
    [Functional Programming] Function modelling -- 3. Reader Monad
    [Functional Programming] 1. Function modelling -- Combine functions
    [React] When to useReducer instead of useState
    [Web component] Using Custom Events as a web component API
    [Functional Programming] 2. Function modelling -- Validation
  • 原文地址:https://www.cnblogs.com/daimaxuejia/p/8144445.html
Copyright © 2020-2023  润新知