Esempio n. 1
0
        protected void FillHeader(IParsedData data)
        {
            var cellNum = 2;

            //Запись заголовка
            SetCellValue(4, cellNum, data.Header.ClientField);
            SetCellValue(5, cellNum, data.Header.FieldPadWellField);
            SetCellValue(6, cellNum, data.Header.LocationField);

            cellNum = 8;
            SetCellValue(4, cellNum, data.Header.DdEngineerField);
            SetCellValue(5, cellNum, data.Header.DateField);
        }
Esempio n. 2
0
        public bool Parse(byte[] receivedData, int receivedDataLength, out IParsedData parsedData)
        {
            var index = 0;
            //packet baslangici 250 ise 1 252 ise 2 degeri alir.
            var p = 0;

            var buffer      = new byte[8200];
            var bufferIndex = 0;

            //bitis paketinin indeksi
            var t = 0;

            for (var i = 0; i < receivedDataLength; i++)
            {
                if (receivedData.Take(5).Any(s => s == packet_header_pre))
                {
                    i = 5; p = 1;
                }

                else if (receivedData.Skip(5).Take(5).Any(s => s == packet_header_pre_online))
                {
                    i = 10; p = 2;
                }

                if (p == 1)
                {
                    if (receivedData[i] == packet_header_post)
                    {
                        t++;
                        if (t == 5)
                        {
                        }
                        else
                        {
                            buffer[bufferIndex] = receivedData[i];
                            bufferIndex++;
                        }
                    }
                    t = 0;
                    buffer[bufferIndex] = receivedData[i];
                    bufferIndex++;
                }

                else
                {
                }
            }



            parsedData = new ParsedData
            {
                MessageType = GetMessageType(receivedData[index]),
                DataCount   = receivedData[index + 1]
            };
            index = 9;
            for (var i = 0; i < parsedData.DataCount; i++)
            {
                parsedData.MobileData.Add(new MobileData
                {
                    MobileNodeId = SwapByteOrder(BitConverter.ToUInt16(receivedData, index)),
                    Distance     = SwapByteOrder(BitConverter.ToUInt16(receivedData, index + 2)),
                    Power        = Convert.ToByte(receivedData[index + 5] & 0x0f),
                    ReaderNodeId = SwapByteOrder(BitConverter.ToUInt16(receivedData, index + 6))
                });
                index += 12;
            }
            return(true);
        }
        public override void PassDataToExcel(IParsedData data)
        {
            if (string.IsNullOrEmpty(TemplateFileName))
            {
                return;
            }

            var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}";

            try
            {
                using (
                    var file =
                        new FileStream(filePath,
                                       FileMode.Open, FileAccess.Read))
                {
                    Book = new XSSFWorkbook(file);
                }

                Sheet = Book.GetSheetAt(0);
                Book.SetSheetName(Book.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}");

                //Заполнение заголовка (метод прописан в ExcelProcessor.cs)
                FillHeader(data);

                //Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные (нумерация ячеек в коде начинается с 0)
                //Поэтому от номера строки и столбца нужно отнимать 1
                var cellNum = 5;


                //SerialNumber
                SetCellValue(14, cellNum, data.SerialNumber); //соответствует 22 строке в шаблоне и т.д.
                //L
                var inches = InchesValueRetriever.GetInchesValue(data.Length);

                SetCellValue(19, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000"));
                //Od1
                SetCellValue(20, cellNum, data.ConnectionOne.Od);
                //ID
                SetCellValue(21, cellNum, data.ConnectionTwo.Od);
                //Top
                SetCellValue(16, cellNum, data.ConnectionOne.TreadSize);
                //Bottom
                SetCellValue(17, cellNum, data.ConnectionTwo.TreadSize); //соответствует 27 строке в шаблоне

                //var totalFishingDiagram =
                //    TotalFishingDiagramFile.GetTotalFishingDiagramFileStream(
                //        $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\out\Field_Pad_Well_FishingDiagram_{
                //            SessionStartTime}.xlsx");
                //var totalBook = new XSSFWorkbook(totalFishingDiagram);

                string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{
                    data.Name}_{data.SerialNumber}_FishingDiagram_{DateTime.Now.ToString("yy-MM-dd-HH-mm-ss")}.xlsx";
                //Сохранение изменённого файла
                using (
                    var file =
                        new FileStream(fileName, FileMode.CreateNew, FileAccess.Write))
                {
                    Book.Write(file);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show($"I have a bad feeling about this: {e.Message}", "Viva La Resistance!!!", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
        }
        public override void PassDataToExcel(IParsedData data)
        {
            var crossoverData = (CrossoverSubParsedData)data;
            var crossoverType = crossoverData.Type;

            switch (crossoverType)
            {
            case CrossoverType.Type1:
                TemplateFileName = "Crossover Sub Type 1 Diagram.xlsx";
                break;

            case CrossoverType.Type2:
                TemplateFileName = "Crossover Sub Type 2 Diagram.xlsx";
                break;

            case CrossoverType.Type3:
                TemplateFileName = "Crossover Sub Type 3 Diagram.xlsx";
                break;

            case CrossoverType.Type4:
                TemplateFileName = "Crossover Sub Type 4 Diagram.xlsx";
                break;

            case CrossoverType.NotDefined:
                MessageBox.Show("Crossover Sub Type Not Defined", "Information message", MessageBoxButton.OK,
                                MessageBoxImage.Asterisk);
                return;
            }
            if (string.IsNullOrEmpty(TemplateFileName))
            {
                return;
            }

            var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}";

            try
            {
                using (
                    var file =
                        new FileStream(filePath,
                                       FileMode.Open, FileAccess.Read))
                {
                    _xlsBook = new XSSFWorkbook(file);
                }
                _xlsBook.SetForceFormulaRecalculation(true);
                Sheet = _xlsBook.GetSheetAt(0);

                Sheet = _xlsBook.GetSheetAt(0);
                _xlsBook.SetSheetName(_xlsBook.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}");
                //Запись заголовка
                FillHeader(crossoverData);

                //cellNum - Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные
                var cellNum = 5;

                //SerialNumber
                SetCellValue(14, cellNum, crossoverData.SerialNumber);
                //TOP
                SetCellValue(16, cellNum, crossoverData.ConnectionOne.TreadSize);
                //BOT
                SetCellValue(17, cellNum, crossoverData.ConnectionTwo.TreadSize);
                //L
                var inches = InchesValueRetriever.GetInchesValue(crossoverData.Length);
                SetCellValue(19, cellNum,
                             inches.Equals(0) ? string.Empty : LengthConverter.InchesToMeters(inches).ToString("0.000"));
                switch (crossoverType)
                {
                case CrossoverType.Type1:
                    //OD
                    SetCellValue(20, cellNum, crossoverData.ConnectionOne.Od);
                    //ID
                    SetCellValue(21, cellNum, crossoverData.ConnectionTwo.Id);
                    break;

                case CrossoverType.Type2:
                    //ID1
                    SetCellValue(20, cellNum, crossoverData.ConnectionOne.Id);
                    //ID2
                    SetCellValue(21, cellNum, crossoverData.ConnectionTwo.Id);
                    break;

                case CrossoverType.Type3:
                case CrossoverType.Type4:
                    //FishingNeck
                    SetCellValue(20, cellNum, crossoverData.FishingNeck);
                    //Od1
                    SetCellValue(21, cellNum, crossoverData.ConnectionOne.Od);
                    //ID2
                    SetCellValue(23, cellNum, crossoverData.ConnectionTwo.Id);
                    //Od2
                    SetCellValue(24, cellNum, crossoverData.ConnectionTwo.Od);
                    break;
                }

                string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{
                    crossoverData.Name}_{crossoverData.SerialNumber}_FishingDiagram_{DateTime.Now.ToString("yy-MM-dd-HH-mm-s")}.xlsx";
                //Сохранение изменённого файла
                using (
                    var file =
                        new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    _xlsBook.Write(file);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show($"Something is wrong: {e.Message}", "Viva La Resistance!!!", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
        }
        public override void PassDataToExcel(IParsedData data)
        {
            var stabilizerData = (IStabilizerParsedData)data;

            //... (прдолжение) чтобы использовать поля из StabilizerParsedData, необходимо вот так вот
            //как здесь выполнить приведение к призводному типу. Просто небольшой нюанс, если вы будете делать свои версии класса ParsedData
            if (string.IsNullOrEmpty(TemplateFileName))
            {
                return;
            }

            var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}";

            try
            {
                using (
                    var file =
                        new FileStream(filePath,
                                       FileMode.Open, FileAccess.Read))
                {
                    _xlsBook = new XSSFWorkbook(file);
                }
                _xlsBook.SetForceFormulaRecalculation(true);
                Sheet = _xlsBook.GetSheetAt(0);

                Sheet = _xlsBook.GetSheetAt(0);
                _xlsBook.SetSheetName(_xlsBook.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}");
                //Запись заголовка
                FillHeader(stabilizerData);

                //cellNum - Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные
                var cellNum = 6;

                //SerialNumber
                SetCellValue(14, cellNum, stabilizerData.SerialNumber);
                //TOP
                SetCellValue(17, cellNum, stabilizerData.ConnectionOne.TreadSize);
                //BOT
                SetCellValue(18, cellNum, stabilizerData.ConnectionTwo.TreadSize);
                //L
                var inches = InchesValueRetriever.GetInchesValue(stabilizerData.Length);
                SetCellValue(22, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000"));
                //L1
                inches = InchesValueRetriever.GetInchesValue(stabilizerData.FishingNeckTongSpace);
                SetCellValue(23, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000"));
                //OD
                SetCellValue(29, cellNum, stabilizerData.ConnectionOne.Od);
                //ID
                SetCellValue(30, cellNum, stabilizerData.ConnectionTwo.Od);
                //MaxOD
                SetCellValue(31, cellNum, stabilizerData.StabilizerOd);
                //BladeLength
                inches = InchesValueRetriever.GetInchesValue(stabilizerData.LobeLength);
                SetCellValue(32, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000"));
                //BladeWidth
                SetCellValue(34, cellNum, stabilizerData.LobeWidth);

                string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{
                    stabilizerData.Name}_{stabilizerData.SerialNumber}_FishingDiagram_{
                    DateTime.Now.ToString("yy-MM-dd-HH-mm-s")}.xlsx";
                //Сохранение изменённого файла
                using (
                    var file =
                        new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    _xlsBook.Write(file);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show($"Something is wrong: {e.Message}", "Viva La Resistance!!!", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
        }
Esempio n. 6
0
    public void ParseXML(XmlReader xmlReader, IParsedData parsedData)
    {
        string prop = "";

        try
        {
            while (xmlReader.Read() == true)
            {
                XmlNodeType nType = xmlReader.NodeType;
                prop  = "";
                prop += "NodeType: " + nType.ToString() + "\r\n";

                prop += "LocalName: " + xmlReader.LocalName + "\r\n";
                prop += "Depth: " + Convert.ToString(xmlReader.Depth) + "\r\n";
                prop += "Name: " + xmlReader.Name + "\r\n";

                if (XmlNodeType.Element == nType)
                {
                    parsedData.AddNode(xmlReader.Name, xmlReader.Depth);
                }

                if (xmlReader.HasValue == true)
                {
                    Type valueType = xmlReader.ValueType;
                    prop += "ValueType: " + valueType.ToString() + "\r\n";
                    prop += "Value: " + xmlReader.Value + "\r\n";
                    parsedData.SetValue(xmlReader.Value);
                }

                //属性がある場合
                if (xmlReader.HasAttributes == true)
                {
                    for (int i = 0; i < xmlReader.AttributeCount; i++)
                    {
                        xmlReader.MoveToAttribute(i);
                        prop += "Attribute Name: " + xmlReader.Name + "\r\n";
                        if (xmlReader.HasValue == true)
                        {
                            Type valueType = xmlReader.ValueType;
                            prop += "ValueType: " + valueType.ToString() + "\r\n";
                            prop += "Attribute Value: " + xmlReader.Value + "\r\n";
                            parsedData.AddAttribute(xmlReader.Name, xmlReader.Value);
                        }
                    }
                    xmlReader.MoveToElement();
                }
                //Debug.Log(prop);
            }
        }
        catch (Exception e)
        {
            Debug.Log("Error: " + e.StackTrace);
        }
        finally
        {
            if (xmlReader != null)
            {
                xmlReader.Close();
            }
        }
    }
Esempio n. 7
0
 public void ReadXML(IParsedData parsedData)
 {
     m_xmlReader = LoadPaht();
     ParseXML(m_xmlReader, parsedData);
 }
Esempio n. 8
0
        public override void PassDataToExcel(IParsedData data)
        {
            if (string.IsNullOrEmpty(TemplateFileName))
            {
                return;
            }

            var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}";

            try
            {
                using (
                    var file =
                        new FileStream(filePath,
                                       FileMode.Open, FileAccess.Read))
                {
                    Book = new XSSFWorkbook(file);
                }

                Sheet = Book.GetSheetAt(0);
                Book.SetSheetName(Book.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}");

                var nmdcData = new NmdcFData();

                if (!nmdcData.Tools.ContainsKey(data.SerialNumber))
                {
                    MessageBox.Show("No such NMDC-F in library", "Information", MessageBoxButton.OK,
                                    MessageBoxImage.Asterisk);
                    return;
                }

                var nmdcTool         = nmdcData.Tools[data.SerialNumber];
                var inspectionLength = LengthConverter.InchesToMeters(InchesValueRetriever.GetInchesValue(data.Length));
                var arrayLength      = Convert.ToSingle(nmdcTool.L, CultureInfo.InvariantCulture);
                var difference       = Math.Abs(inspectionLength - arrayLength);
                if (difference > 0.025f)
                {
                    MessageBox.Show($"Collar length {inspectionLength} doesn't match. Should be about {arrayLength}. Difference is {difference}. Prepare fishing diagram manually.", "Information", MessageBoxButton.OK,
                                    MessageBoxImage.Asterisk);
                    return;
                }

                //Заполнение заголовка (сам метод внизу)
                FillHeader(data);

                //Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные (нумерация ячеек в коде начинается с 0)
                //Поэтому от номера строки и столбца нужно отнимать 1
                var cellNum = 4;

                //L
                SetCellValue(12, cellNum, inspectionLength.ToString("0.000"));
                //L12
                SetCellValue(15, cellNum, nmdcTool.L12);
                //L11
                SetCellValue(16, cellNum, nmdcTool.L11);
                //L10
                SetCellValue(20, cellNum, nmdcTool.L10);
                //L9
                SetCellValue(21, cellNum, nmdcTool.L9);
                //L8
                SetCellValue(24, cellNum, nmdcTool.L8);
                //L7
                SetCellValue(25, cellNum, nmdcTool.L7);
                //L6
                SetCellValue(29, cellNum, nmdcTool.L6);
                //L5
                SetCellValue(30, cellNum, nmdcTool.L5);
                //L4
                SetCellValue(33, cellNum, nmdcTool.L4);
                //L3
                SetCellValue(34, cellNum, nmdcTool.L3);
                //L2
                SetCellValue(38, cellNum, nmdcTool.L2);
                //L1
                SetCellValue(39, cellNum, nmdcTool.L1);

                cellNum = 8;
                //SerialNumber
                SetCellValue(12, cellNum, data.SerialNumber); //соответствует 22 строке в шаблоне и т.д.
                //OD
                SetCellValue(13, cellNum, data.ConnectionOne.Od);
                //ID
                SetCellValue(14, cellNum, data.ConnectionTwo.Id);

                //Od6
                SetCellValue(19, cellNum, nmdcTool.Od6);
                //Od5
                SetCellValue(20, cellNum, nmdcTool.Od5);
                //Od4
                SetCellValue(21, cellNum, nmdcTool.Od4);
                //Od3
                SetCellValue(22, cellNum, nmdcTool.Od3);
                //Od2
                SetCellValue(23, cellNum, nmdcTool.Od2);
                //Od1
                SetCellValue(24, cellNum, nmdcTool.Od1);

                string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{
                    data.Name}_{data.SerialNumber}_FishingDiagram_{DateTime.Now.ToString("yy-MM-dd-HH-mm-ss")}.xlsx";
                //Сохранение изменённого файла
                using (
                    var file =
                        new FileStream(fileName, FileMode.CreateNew, FileAccess.Write))
                {
                    Book.Write(file);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "I have a bad feeling about this", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
        }