public Task <bool> UploadDrillOrderExcelAsync(DrillOrderInputData inputData, DictionarysDrillOrder dicData) { _dicData = dicData; _sheetWorker = new EstimateWell(_dicData); _sheetTitleWorker = new Title(_dicData); return(Task.Run(() => UploadDrillOrderExcel(inputData))); }
public async Task <IHttpActionResult> XlsUpload() { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } try { var provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); if (provider.Contents == null || provider.Contents.Count == 0) { throw new Exception("Отсутствуют данные для загрузки."); } var inputData = new DrillOrderInputData { File = await Utils.GetHttpContent("file", provider.Contents), ProjectVersionId = await Utils.GetHttpContent("projectVersionId", provider.Contents), OrderId = await Utils.GetHttpContent("orderId", provider.Contents), PseudoModuleId = await Utils.GetHttpContent("moduleId", provider.Contents) }; var dicData = DicService.GetDrillOrderDictionarys(); var result = await CreateResultAsync(() => DrillOrderLoader.UploadDrillOrderExcelAsync(inputData, dicData)); return(result); } catch (Exception ex) { return(InternalServerError(ex)); } }
private bool UploadDrillOrderExcel(DrillOrderInputData inputData) { const string sheetTitleName = "Титул"; try { using (var stream = new MemoryStream(inputData.File)) { using (var doc = SpreadsheetDocument.Open(stream, false)) { //---загрузка титульного листа var titleSheet = OpenXml.GetSheetData(sheetTitleName, doc.WorkbookPart); var outputTitleData = _sheetTitleWorker.PrepareLoadData(titleSheet); outputTitleData.WorkOrderId = inputData.OrderId; DrillOrderService.LoadExcelTitleWorkOrder(outputTitleData); //---получить keys скважин по которым будем загружть листы со скважиными //ключи по скважинам создаются при загрузке листа Титул GetDicWispModuleWell(inputData.OrderId ?? 0, outputTitleData); //---загрузка листов со сметной стоимостью скважин var sheetsName = _sheetTitleWorker.GetSheetNamesForLoad(titleSheet, out var someNames); for (var i = 0; i < sheetsName.Count; i++) { var sheet = OpenXml.GetSheetData(sheetsName[i], doc.WorkbookPart); var outputData = _sheetWorker.PrepareLoadData(sheet); outputData.WorkOrderId = inputData.OrderId; outputData.VirtWell = _dicData.WispModuleWell.FirstOrDefault(f => f.Name.Equals(someNames[i], StringComparison.CurrentCultureIgnoreCase))?.Key; DrillOrderService.LoadExcelWorkOrder(outputData); } } } } catch (Exception ex) { throw new Exception(ex.Message); } return(true); }