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 } }