Esempio n. 1
0
        private void InsertCablesFromTableCellData(IEnumerable <TableCellData> data, CablePresenter cablePresenter, CablePropertySet?cableProps)
        {
            foreach (var tableCellData in data)
            {
                if (decimal.TryParse(tableCellData.ColumnHeaderData, NumberStyles.Any, _cultureInfo, out decimal elementsCount) &&
                    decimal.TryParse(tableCellData.CellData, NumberStyles.Any, _cultureInfo, out decimal maxCoverDiameter) &&
                    decimal.TryParse(tableCellData.RowHeaderData, NumberStyles.Any, _cultureInfo, out decimal conductorAreaInSqrMm))
                {
                    foreach (var polymerGroup in _coverPolymerGroups)
                    {
                        cablePresenter.ElementsCount       = elementsCount;
                        cablePresenter.MaxCoverDiameter    = maxCoverDiameter;
                        cablePresenter.FireProtectionId    = polymerGroup.Id == 6 ? _fireFRLS.Id : _fireFRHF.Id;
                        cablePresenter.CoverPolimerGroupId = polymerGroup.Id;
                        cablePresenter.Title = _nameBuilder.GetCableName(cablePresenter, conductorAreaInSqrMm, cableProps);
                        var cablePresenterId = _cableTableProvider.AddItem(cablePresenter);

                        var billet = (from b in _billets where b.Conductor.AreaInSqrMm == conductorAreaInSqrMm select b).Single();

                        _listCableBilletsProvider.AddItem(new ListCableBilletsPresenter {
                            CableId = cablePresenterId, BilletId = billet.Id
                        });

                        var intProp = 0b_0000000001;

                        for (int j = 0; j < cablePropertiesCount; j++)
                        {
                            var Prop = (CablePropertySet)intProp;

                            if ((cableProps & Prop) == Prop)
                            {
                                var propertyObj = cablePropertiesList.Where(p => p.BitNumber == intProp).First();
                                _listCablePropertiesProvider.AddItem(new ListCablePropertiesPresenter {
                                    PropertyId = propertyObj.Id, CableId = cablePresenterId
                                });
                            }
                            intProp <<= 1;
                        }
                        _recordsCount++;
                    }
                }
                else
                {
                    throw new Exception($"Не удалось распарсить ячейку таблицы!");
                }
            }
        }
        private void ParseTableCellData(CablePresenter cable, TableCellData tableCellData, IEnumerable <InsulatedBillet> currentBilletsList,
                                        CablePropertySet?cableProps = null, char splitter = ' ')
        {
            if (decimal.TryParse(tableCellData.ColumnHeaderData, NumberStyles.Any, _cultureInfo, out decimal elementsCount) &&
                decimal.TryParse(tableCellData.RowHeaderData, NumberStyles.Any, _cultureInfo, out decimal conductorAreaInSqrMm))
            {
                decimal height = 0m;
                decimal width  = 0m;
                decimal?maxCoverDiameter;
                if (decimal.TryParse(tableCellData.CellData, NumberStyles.Any, _cultureInfo, out decimal diameterValue))
                {
                    maxCoverDiameter = diameterValue;
                }
                else
                {
                    var cableSizes = tableCellData.CellData.Split(splitter);
                    if (cableSizes.Length < 2)
                    {
                        return;
                    }
                    if (cableSizes.Length == 2 &&
                        decimal.TryParse(cableSizes[0], NumberStyles.Any, _cultureInfo, out height) &&
                        decimal.TryParse(cableSizes[1], NumberStyles.Any, _cultureInfo, out width))
                    {
                        maxCoverDiameter = null;
                    }
                    else
                    {
                        throw new Exception("Wrong format table cell data!");
                    }
                }
                var billet = (from b in currentBilletsList
                              where b.Conductor.AreaInSqrMm == conductorAreaInSqrMm
                              select b).First();
                cable.ElementsCount    = elementsCount;
                cable.MaxCoverDiameter = maxCoverDiameter;
                cable.Title            = _cableNameBuilder.GetCableTitle(cable, billet.Conductor.AreaInSqrMm, cableProps);

                var cablePresenterId = _cableTableProvider.AddItem(cable);

                _listCableBilletsPresenter.AddItem(new ListCableBilletsPresenter {
                    CableId = cablePresenterId, BilletId = billet.Id
                });

                var intProp = 0b_0000000001;

                for (int j = 0; j < cablePropertiesCount; j++)
                {
                    var Prop = (CablePropertySet)intProp;

                    if ((cableProps & Prop) == Prop)
                    {
                        var propertyObj = cablePropertiesList.Where(p => p.BitNumber == intProp).First();
                        _listCablePropertiesPresenter.AddItem(new ListCablePropertiesPresenter {
                            PropertyId = propertyObj.Id, CableId = cablePresenterId
                        });
                    }
                    intProp <<= 1;
                }

                if (!maxCoverDiameter.HasValue)
                {
                    _FlatCableSizePresenter.AddItem(new FlatCableSizePresenter {
                        CableId = cablePresenterId, Height = height, Width = width
                    });
                }
            }
            else
            {
                throw new Exception($"Не удалось распарсить ячейку таблицы!");
            }
        }
Esempio n. 3
0
        public override int ParseDataToDatabase()
        {
            int recordsCount = 0;
            var nameBuilder  = new KunrsNameBuider();
            var configurator = new TableParserConfigurator().SetDataColumnsCount(4)
                               .SetDataRowsCount(8)
                               .SetColumnHeadersRowIndex(2)
                               .SetRowHeadersColumnIndex(1)
                               .SetDataStartColumnIndex(2)
                               .SetDataStartRowIndex(3);

            _wordTableParser = new XceedWordTableParser();

            var cablePropsList = new List <CablePropertySet?>
            {
                null,
                CablePropertySet.HasFoilShield,
                CablePropertySet.HasArmourBraid | CablePropertySet.HasArmourTube,
                CablePropertySet.HasFoilShield | CablePropertySet.HasArmourBraid | CablePropertySet.HasArmourTube
            };

            var polymerGroupIdList = new List <int> {
                6, 4, 5
            };

            var powerColorsDict = new Dictionary <decimal, PowerWiresColorScheme[]>
            {
                { 2m, new [] { PowerWiresColorScheme.N } },
                { 3m, new [] { PowerWiresColorScheme.PEN, PowerWiresColorScheme.none } },
                { 4m, new [] { PowerWiresColorScheme.N, PowerWiresColorScheme.PE } },
                { 5m, new [] { PowerWiresColorScheme.PEN, PowerWiresColorScheme.none } }
            };

            var billets = _dbContext.InsulatedBillets.Where(b => b.CableBrandName.BrandName == "КУНРС")
                          .Include(b => b.Conductor)
                          .ToList();

            var kunrs = new CablePresenter
            {
                TwistedElementTypeId = 1,
                TechCondId           = 25,
                OperatingVoltageId   = 1,
                ClimaticModId        = 3
            };

            PowerWiresColorScheme[] powerColorSchemeArray;

            _wordTableParser.OpenWordDocument(_mSWordFile);
            _provider.OpenConnection();
            try
            {
                var parsePartNumber = 1d;
                foreach (var prop in cablePropsList)
                {
                    var tableData = _wordTableParser.GetCableCellsCollection(0, configurator);
                    foreach (var tableCellData in tableData)
                    {
                        if (decimal.TryParse(tableCellData.ColumnHeaderData, NumberStyles.Any, _cultureInfo, out decimal elementsCount) &&
                            decimal.TryParse(tableCellData.CellData, NumberStyles.Any, _cultureInfo, out decimal maxCoverDiameter) &&
                            decimal.TryParse(tableCellData.RowHeaderData, NumberStyles.Any, _cultureInfo, out decimal conductorAreaInSqrMm))
                        {
                            foreach (var polymerGroupId in polymerGroupIdList)
                            {
                                powerColorSchemeArray = powerColorsDict[elementsCount];
                                foreach (var powerColorScheme in powerColorSchemeArray)
                                {
                                    var cableProps = CablePropertySet.HasFilling;
                                    if (prop.HasValue)
                                    {
                                        cableProps |= prop.Value;
                                    }

                                    kunrs.ElementsCount       = elementsCount;
                                    kunrs.MaxCoverDiameter    = maxCoverDiameter;
                                    kunrs.FireProtectionId    = polymerGroupId == 6 ? 18 : 23;
                                    kunrs.CoverPolimerGroupId = polymerGroupId;
                                    kunrs.CoverColorId        = polymerGroupId == 5 ? 8 : 2;
                                    var billet = (from b in billets
                                                  where b.Conductor.AreaInSqrMm == conductorAreaInSqrMm
                                                  select b).Single();
                                    kunrs.Title = nameBuilder.GetCableName(kunrs, conductorAreaInSqrMm, cableProps, powerColorScheme);
                                    var cableId = _cableTableProvider.AddItem(kunrs);

                                    _listCableBilletsProvider.AddItem(new ListCableBilletsPresenter {
                                        CableId = cableId, BilletId = billet.Id
                                    });
                                    _listCablePowerColorProvider.AddItem(new ListCablePowerColorPresenter {
                                        CableId = cableId, PowerColorSchemeId = (int)powerColorScheme
                                    });

                                    var intProp = 0b_0000000001;

                                    for (int m = 0; m < cablePropertiesCount; m++)
                                    {
                                        var Prop = (CablePropertySet)intProp;

                                        if ((cableProps & Prop) == Prop)
                                        {
                                            var propertyObj = cablePropertiesList.Where(p => p.BitNumber == intProp).First();
                                            _listCablePropertiesProvider.AddItem(new ListCablePropertiesPresenter {
                                                PropertyId = propertyObj.Id, CableId = cableId
                                            });
                                        }
                                        intProp <<= 1;
                                    }
                                    recordsCount++;
                                }
                            }
                        }
                    }
                    OnParseReport(parsePartNumber / cablePropsList.Count);
                    configurator.DataStartRowIndex += configurator.DataRowsCount;
                    parsePartNumber++;
                }
            }
            finally
            {
                _wordTableParser.CloseWordApp();
                _provider.CloseConnection();
            }
            return(recordsCount);
        }
Esempio n. 4
0
        public override int ParseDataToDatabase()
        {
            int recordsCount = 0;

            var techCond = _dbContext.TechnicalConditions.Where(c => c.Title == "ТУ 16.К99-061-2013").First();

            var voltage250 = _dbContext.OperatingVoltages.Find(2);
            var voltage660 = _dbContext.OperatingVoltages.Find(3);

            var climaticModUHL = _dbContext.ClimaticMods.Find(3);
            var climaticModV   = _dbContext.ClimaticMods.Find(7);

            var colorBlack = _dbContext.Colors.Find(2);
            var colorBlue  = _dbContext.Colors.Find(3);

            var skabPropertiesList = new List <CablePropertySet?>
            {
                CablePropertySet.HasFilling | CablePropertySet.HasBraidShield,
                CablePropertySet.HasWaterBlockStripe | CablePropertySet.HasFilling | CablePropertySet.HasBraidShield,
                CablePropertySet.HasBraidShield,
                CablePropertySet.HasWaterBlockStripe | CablePropertySet.HasBraidShield,
                CablePropertySet.HasFilling,
                CablePropertySet.HasWaterBlockStripe | CablePropertySet.HasFilling,
                null,
                CablePropertySet.HasWaterBlockStripe
            };

            var operatingVoltages = new List <OperatingVoltage> {
                voltage250, voltage660
            };                                                                             // 1 - СКАБ 250, 2 - СКАБ 660

            var skabArmorPropertiesList = new List <CablePropertySet?>
            {
                null,
                CablePropertySet.HasArmourBraid,
                CablePropertySet.HasArmourBraid | CablePropertySet.HasArmourTube
            };

            var insulationTypes = new List <int> {
                0, 1
            };                                            //1 = rubber, 0 = others

            var single = _dbContext.TwistedElementTypes.Find(1);
            var pair   = _dbContext.TwistedElementTypes.Find(2);
            var triple = _dbContext.TwistedElementTypes.Find(3);

            var fireLS    = _dbContext.FireProtectionClasses.Find(8);
            var fireHF    = _dbContext.FireProtectionClasses.Find(13);
            var fireFRLS  = _dbContext.FireProtectionClasses.Find(18);
            var fireFRHF  = _dbContext.FireProtectionClasses.Find(23);
            var fireCFRHF = _dbContext.FireProtectionClasses.Find(25);

            var polymerLS     = _dbContext.PolymerGroups.Find(6);
            var polymerHF     = _dbContext.PolymerGroups.Find(4);
            var polymerRubber = _dbContext.PolymerGroups.Find(3);
            var polymerPUR    = _dbContext.PolymerGroups.Find(5);

            var configurator = new TableParserConfigurator().SetDataRowsCount(5)
                               .SetDataStartColumnIndex(3)
                               .SetRowHeadersColumnIndex(2);

            var twistParamsList = new List <(TwistedElementType twistMode, CablePropertySet?hasIndividualFoilSHields, TableParserConfigurator configurator)>
            {
                (single, null, new TableParserConfigurator(3, 2, 13, 5, 2, 1)),
                (pair, null, new TableParserConfigurator(10, 2, 14, 5, 9, 1)),
                (triple, null, new TableParserConfigurator(15, 2, 14, 5, 9, 1)),
                (pair, CablePropertySet.HasIndividualFoilShields, new TableParserConfigurator(21, 2, 13, 5, 20, 1)),
                (triple, CablePropertySet.HasIndividualFoilShields, new TableParserConfigurator(26, 2, 13, 5, 20, 1))
            };

            var plasticInsParams = new List <(FireProtectionClass fireClass, PolymerGroup insPolymerGroup, PolymerGroup coverPolymerGroup)>
            {
                (fireLS, polymerLS, polymerLS), (fireHF, polymerHF, polymerHF)
            };

            var rubberInsParams = new List <(FireProtectionClass fireClass, PolymerGroup insPolymerGroup, PolymerGroup coverPolymerGroup)>
            {
                (fireFRLS, polymerRubber, polymerLS), (fireFRHF, polymerRubber, polymerHF), (fireCFRHF, polymerRubber, polymerPUR)
            };

            var exiProperties = new List <CablePropertySet?> {
                null, CablePropertySet.SparkSafety
            };

            var billets = _dbContext.InsulatedBillets.Where(b => b.CableBrandName.BrandName == "СКАБ")
                          .Include(b => b.Conductor)
                          .Include(b => b.PolymerGroup)
                          .Include(b => b.OperatingVoltage)
                          .ToList();

            _wordTableParser = new XceedWordTableParser();
            _wordTableParser.OpenWordDocument(_mSWordFile);

            var maxDiamTableCount = _wordTableParser.DocumentTablesCount / 2;

            var cablePresenter = new CablePresenter {
                TechCondId = techCond.Id
            };
            var nameBuilder = new SkabNameBuilder();

            _provider.OpenConnection();
            var tableNumber = 0;

            try
            {
                while (tableNumber < maxDiamTableCount)
                {
                    foreach (var mod in skabPropertiesList)
                    {
                        foreach (var voltage in operatingVoltages)
                        {
                            foreach (var insType in insulationTypes)
                            {
                                foreach (var armourType in skabArmorPropertiesList)
                                {
                                    foreach (var twistTypeParams in twistParamsList)
                                    {
                                        var tableData = _wordTableParser.GetCableCellsCollection(tableNumber, twistTypeParams.configurator);

                                        foreach (var tableCellData in tableData)
                                        {
                                            if (decimal.TryParse(tableCellData.ColumnHeaderData, NumberStyles.Any, _cultureInfo, out decimal elementsCount) &&
                                                decimal.TryParse(tableCellData.CellData, NumberStyles.Any, _cultureInfo, out decimal maxCoverDiameter) &&
                                                decimal.TryParse(tableCellData.RowHeaderData, NumberStyles.Any, _cultureInfo, out decimal conductorAreaInSqrMm))
                                            {
                                                var materialParams = insType == 0 ? plasticInsParams : rubberInsParams;
                                                foreach (var matParam in materialParams)
                                                {
                                                    foreach (var exiParam in exiProperties)
                                                    {
                                                        var cableProps = CablePropertySet.HasFoilShield;
                                                        if (twistTypeParams.hasIndividualFoilSHields.HasValue)
                                                        {
                                                            cableProps |= twistTypeParams.hasIndividualFoilSHields.Value;
                                                        }
                                                        if (mod.HasValue)
                                                        {
                                                            cableProps |= mod.Value;
                                                        }
                                                        if (armourType.HasValue)
                                                        {
                                                            cableProps |= armourType.Value;
                                                        }
                                                        if (exiParam.HasValue)
                                                        {
                                                            cableProps |= exiParam.Value;
                                                        }

                                                        var billet = billets.Where(b => b.OperatingVoltage == voltage &&
                                                                                   b.PolymerGroup == matParam.insPolymerGroup &&
                                                                                   b.Conductor.AreaInSqrMm == conductorAreaInSqrMm)
                                                                     .First();

                                                        cablePresenter.ElementsCount        = elementsCount;
                                                        cablePresenter.OperatingVoltageId   = voltage.Id;
                                                        cablePresenter.TwistedElementTypeId = twistTypeParams.twistMode.Id;
                                                        cablePresenter.MaxCoverDiameter     = maxCoverDiameter;
                                                        cablePresenter.FireProtectionId     = matParam.fireClass.Id;
                                                        cablePresenter.CoverPolimerGroupId  = matParam.coverPolymerGroup.Id;
                                                        cablePresenter.CoverColorId         = (exiParam.HasValue && (!armourType.HasValue || (armourType.Value & CablePropertySet.HasArmourTube) != CablePropertySet.HasArmourTube)) ? colorBlue.Id : colorBlack.Id;
                                                        cablePresenter.ClimaticModId        = matParam.coverPolymerGroup.Id == 6 ? climaticModUHL.Id : climaticModV.Id;

                                                        cablePresenter.Title = nameBuilder.GetCableName(cablePresenter, conductorAreaInSqrMm, cableProps);
                                                        var cablePresenterId = _cableTableProvider.AddItem(cablePresenter);

                                                        _listCableBilletsProvider.AddItem(new ListCableBilletsPresenter {
                                                            CableId = cablePresenterId, BilletId = billet.Id
                                                        });

                                                        var intProp = 0b_0000000001;

                                                        for (int j = 0; j < cablePropertiesCount; j++)
                                                        {
                                                            var Prop = (CablePropertySet)intProp;

                                                            if ((cableProps & Prop) == Prop)
                                                            {
                                                                var propertyObj = cablePropertiesList.Where(p => p.BitNumber == intProp).First();
                                                                _listCablePropertiesProvider.AddItem(new ListCablePropertiesPresenter {
                                                                    PropertyId = propertyObj.Id, CableId = cablePresenterId
                                                                });
                                                            }
                                                            intProp <<= 1;
                                                        }
                                                        recordsCount++;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                throw new Exception($"Не удалось распарсить ячейку таблицы №{tableNumber}!");
                                            }
                                        }
                                    }
                                    OnParseReport((double)(tableNumber + 1) / maxDiamTableCount);
                                    tableNumber++;
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                _wordTableParser.CloseWordApp();
                _provider.CloseConnection();
            }
            return(recordsCount);
        }
    }
}