Ejemplo n.º 1
0
 public Task <bool> UploadDrillOrderExcelAsync(DrillOrderInputData inputData, DictionarysDrillOrder dicData)
 {
     _dicData          = dicData;
     _sheetWorker      = new EstimateWell(_dicData);
     _sheetTitleWorker = new Title(_dicData);
     return(Task.Run(() => UploadDrillOrderExcel(inputData)));
 }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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);
        }