public ExtendedXlsFile(TExportExcelAdapterType ExportType, int sheetCount = 1) : base(true) { this.CurrentExportType = ExportType; //this.ListFormulsByID = new Dictionary<Guid, SortedList>(); listDataSummary = new List <DataForSummary>(); NewFile(sheetCount); TFlxFormat getDefaultFormat = GetDefaultFormat; int defaultFormatId = DefaultFormatId; //getDefaultFormat.Font.Size20 -= FontOffset; SetFormat(defaultFormatId, getDefaultFormat); PrintOptions &= ~(TPrintOptions.NoPls | TPrintOptions.Orientation); PrintScale = 100; PrintNumberOfHorizontalPages = 1; PrintNumberOfVerticalPages = 20; SetPrintMargins(new TXlsMargins(0.2, 0.2, 0.2, 0.2, 0.2, 0.2)); if (ExportType == TExportExcelAdapterType.toHTML) { getDefaultFormat.FillPattern.Pattern = TFlxPatternStyle.Solid; getDefaultFormat.FillPattern.FgColor = Color.FromArgb(140, 0xc0, 0xe9); SetFormat(defaultFormatId, getDefaultFormat); } }
public InternalData(TExportExcelAdapterType exportType, int numbersValues) : this(exportType) { int i = 0; this.numbersValues = numbersValues; intervalFormulUids = new Dictionary <int, FormulaIntervalUids>(); while (i < numbersValues) { intervalFormulUids.Add(i, new FormulaIntervalUids()); i++; } }
public ExcelAnaliser(XlsFileExBase xls, int colDrum, int colHalfHour, int colAnalis, double halfhourToIntegralUnitCoeff, bool isAnalisIntegral, TExportExcelAdapterType adapterType, StringBuilder errors, int halfhourCount) { _colHalfHour = colHalfHour; _colDrum = colDrum; _xls = xls; _colAnalis = colAnalis; _isAnalisIntegral = isAnalisIntegral; _errors = errors; _halfhourToIntegralUnitCoeff = halfhourToIntegralUnitCoeff != 1 ? "/" + halfhourToIntegralUnitCoeff : ""; _halfhourCount = halfhourCount; _isFormingFormulasToCell = adapterType == TExportExcelAdapterType.toXLS || adapterType == TExportExcelAdapterType.toXLSx; _formulas = new Dictionary <string, List <FormulaRowsRange> >(); _footers = new Dictionary <string, string>(); }
public ExtendedXlsFile TestExecuteBalansHierLev0_Valtage_220_330_Full(BalansHierLev0Result HierLev0, TExportExcelAdapterType ExportType, IVisualDataRequestObjectsNames getNameInterface) { Dictionary <ID_TypeHierarchy, string> dictionaryOfNames = HierLev0.DictionaryOfNames; InitData data = new InitData(HierLev0.VoltageClassPoints); InternalData internalData = new InternalData(ExportType); InitBlock initBlock = new InitBlock(data, internalData); Classes.TitleInfo titleData = new Classes.TitleInfo(getNameInterface.GetBalanceNameForHierLev0(HierLev0.BalanceId), HierLev0.DTStart, HierLev0.DTEnd); TitleBlock titleBlock = new TitleBlock(titleData); initBlock.AddBlock(titleBlock); HeaderFooterData headFootData = new HeaderFooterData(HierLev0.VoltageClass, HierLev0.HighLimit); HeaderFooterBlock headerFooter = new HeaderFooterBlock(headFootData, internalData); initBlock.AddBlock(headerFooter); foreach (TIntegral_HierLev0_Values balanceSection in HierLev0.Result_Values) { BalancePartData balData = new BalancePartData(getNameInterface.GetBalanceSectionName(balanceSection.HierLev0Group_Name), HierLev0.BalPartList.Where(x => x.IsUseInGeneralBalance).Select(x => x.Name).Contains(balanceSection.HierLev0Group_Name), HierLev0.BalPartList.Where(x => x.IsRsk).Select(x => x.Name).Contains(balanceSection.HierLev0Group_Name)); BalancePartBlock balPartBlock = new BalancePartBlock(balData, internalData); foreach (KeyValuePair <ID_IsOurSide, TIntegral_PS_ValuesForHierLev0> psBalSect in balanceSection.HierLev0DetailGroupResult) { string psName; TIntegral_PS_ValuesForHierLev0 psBalSectData = psBalSect.Value; ID_IsOurSide side = psBalSect.Key; ID_TypeHierarchy key = new ID_TypeHierarchy(enumTypeHierarchy.Dict_PS, -1); key.TypeHierarchy = side.IsOurSide ? enumTypeHierarchy.Dict_PS : enumTypeHierarchy.Dict_Contr_PS; key.ID = side.ID; if (!dictionaryOfNames.TryGetValue(key, out psName)) { psName = getNameInterface.GetPSName(side.ID, !side.IsOurSide); } PsBlock psBlock = new PsBlock(psName, internalData); foreach (TI_Integral_ValuesForHierLev0 tiPsBalSect in psBalSectData.TI_List) { string tIName = string.Empty; key.TypeHierarchy = tiPsBalSect.TypeHierarchy; key.ID = tiPsBalSect.ID; if (!dictionaryOfNames.TryGetValue(key, out tIName)) { switch (tiPsBalSect.TypeHierarchy) { case enumTypeHierarchy.Dict_PS: tIName = getNameInterface.GetPSName(tiPsBalSect.ID, !side.IsOurSide); break; case enumTypeHierarchy.Info_TI: tIName = getNameInterface.GetTIName(tiPsBalSect.ID, false); break; case enumTypeHierarchy.Info_ContrTI: tIName = getNameInterface.GetTIName(tiPsBalSect.ID, true); break; case enumTypeHierarchy.Info_TP: tIName = getNameInterface.GetTPName(tiPsBalSect.ID); break; } } List <TVALUES_DB> inputValues; List <TVALUES_DB> outputValues; Data.Full.TiData tiData = new Data.Full.TiData(tIName); if (tiPsBalSect.Val_List.TryGetValue(1, out inputValues)) { tiData.InputByVoltages.Add(tiPsBalSect.VoltageClassPoint, inputValues[0]); } if (tiPsBalSect.Val_List.TryGetValue(2, out outputValues)) { tiData.OutputByVoltages.Add(tiPsBalSect.VoltageClassPoint, outputValues[0]); } TiBlock tiBlock = new TiBlock(tiData, internalData); psBlock.AddBlock(tiBlock); } balPartBlock.AddBlock(psBlock); } headerFooter.AddBlock(balPartBlock); } ExtendedXlsFile xls = new ExtendedXlsFile(ExportType); initBlock.Render(xls); return(xls); }
public BalanceFreeHierarchyResults(List <string> balanceFreeHierarchyUNs, DateTime dTStart, DateTime dTEnd, string timeZoneId, TExportExcelAdapterType adapterType, bool isGenerateDoc, enumTimeDiscreteType discreteType, EnumUnitDigit unitDigit, EnumUnitDigit unitDigitIntegrals, CancellationToken?cancellationToken = null) { if (unitDigit == EnumUnitDigit.Null) { unitDigit = EnumUnitDigit.None; } BalanceFreeHierarchyUNs = balanceFreeHierarchyUNs.Distinct().ToList(); DTStart = dTStart.RoundToHalfHour(true); DTEnd = dTEnd.RoundToHalfHour(true); TimeZoneId = timeZoneId; UnitDigit = unitDigit; UnitDigitIntegrals = unitDigitIntegrals; AdapterType = adapterType; DiscreteType = discreteType; _cancellationToken = cancellationToken; Errors = new StringBuilder(); CalculatedValues = new ConcurrentDictionary <string, BalanceFreeHierarchyCalculatedResult>(); if (BalanceFreeHierarchyUNs == null || BalanceFreeHierarchyUNs.Count == 0) { Errors.Append("Неверный идентификатор(ы) баланса!"); return; } if ((DTEnd < DTStart)) { Errors.Append("Дата окончания должна быть больше или равна даты начала!"); return; } _dtServerStart = DTStart.ClientToServer(TimeZoneId); _dtServerEnd = DTEnd.ClientToServer(TimeZoneId); _isGenerateDoc = isGenerateDoc; var tiForRequestAdditionalInfo = new ConcurrentDictionary <TI_ChanelType, ConcurrentStack <BalanceFreeHierarchyItemParams> >(new TI_ChanelComparer()); using (var calculator = new BalanceFreeHierarchyCalculator(BalanceFreeHierarchyUNs, isGenerateDoc, Errors, DiscreteType, DTStart, DTEnd, TimeZoneId, tiForRequestAdditionalInfo, UnitDigit, UnitDigitIntegrals)) { SectionsByType = calculator.SectionsByType; var po = new ParallelOptions(); if (cancellationToken.HasValue) { po.CancellationToken = cancellationToken.Value; } po.MaxDegreeOfParallelism = System.Environment.ProcessorCount; po.CancellationToken.ThrowIfCancellationRequested(); //Строим результаты по документам Parallel.ForEach(BalanceFreeHierarchyUNs, po, (balanceFreeHierarchyUn, loopState) => { try { if (po.CancellationToken.IsCancellationRequested) { loopState.Break(); } var calculatedResult = calculator.Calculate(balanceFreeHierarchyUn); if (calculatedResult == null) { return; } CalculatedValues.TryAdd(balanceFreeHierarchyUn, calculatedResult); } catch (Exception ex) { lock (Errors) { Errors.Append(ex.Message); } } }); SubsectionNames = calculator.SubsectionNames; } if (_cancellationToken.HasValue && _cancellationToken.Value.IsCancellationRequested) { return; } #region Собираем доп. информацию if (!tiForRequestAdditionalInfo.IsEmpty) { SortedList <TI_ChanelType, List <TTransformators_Information> > transormatorsInformation = null; ConcurrentDictionary <TI_ChanelType, List <ArchCalc_Replace_ActUndercount> > replaceActUndercountList = null; Parallel.Invoke(() => { //Информация о смене трансформаторов transormatorsInformation = SectionIntegralActsResultsList.GetTransformationInformationList(DTStart, DTEnd, tiForRequestAdditionalInfo.Keys, UnitDigit, enumOVMode.NormalMode, true, TimeZoneId); }, () => { ConcurrentDictionary <TI_ChanelType, List <ArchCalc_Replace_ActUndercount> > resultOvs; //Информация об акте недоучета replaceActUndercountList = SectionIntegralActsResultsList.GetReplaceActUndercount(_dtServerStart, _dtServerEnd, tiForRequestAdditionalInfo.Keys, Errors, out resultOvs); } ); foreach (var pair in tiForRequestAdditionalInfo) { if (transormatorsInformation != null) { List <TTransformators_Information> informations; if (transormatorsInformation.TryGetValue(pair.Key, out informations)) { foreach (var itemParam in pair.Value) { itemParam.Transformatos_Information = informations; } } } if (replaceActUndercountList != null && replaceActUndercountList.Count > 0) { List <ArchCalc_Replace_ActUndercount> replaceInformation; if (replaceActUndercountList.TryGetValue(pair.Key, out replaceInformation) && replaceInformation != null) { foreach (var itemParam in pair.Value) { itemParam.ReplaceActUndercountList = replaceInformation; } } } } } #endregion }
public InternalData(TExportExcelAdapterType exportType) { ExportType = exportType; }
public static BalanceFreeHierarchyResults BL_GetFreeHierarchyBalanceResult(List <string> balanceFreeHierarchyUNs, DateTime dTStart, DateTime dTEnd, string timeZoneId, TExportExcelAdapterType adapterType, bool isGenerateDoc, enumTimeDiscreteType discreteType, EnumUnitDigit unitDigit, bool isFormingSeparateList, EnumUnitDigit unitDigitIntegrals, bool isUseThousandKVt, bool printLandscape, byte doublePrecisionProfile, byte doublePrecisionIntegral, bool need0, bool isAnalisIntegral, bool setPercisionAsDisplayed, CancellationToken?cancellationToken = null) { var balance = new BalanceFreeHierarchyResults(balanceFreeHierarchyUNs, dTStart, dTEnd, timeZoneId, adapterType, isGenerateDoc, discreteType, unitDigit, unitDigitIntegrals, cancellationToken); if (cancellationToken.HasValue && cancellationToken.Value.IsCancellationRequested) { return(balance); } if (isGenerateDoc) { string branchName; //Читаем подписантов var signaturesByBalance = GetBalanceSignatures(balanceFreeHierarchyUNs, out branchName); var po = new ParallelOptions(); if (cancellationToken.HasValue) { po.CancellationToken = cancellationToken.Value; } po.MaxDegreeOfParallelism = System.Environment.ProcessorCount; po.CancellationToken.ThrowIfCancellationRequested(); using (var adapter = new ExcelReportFreeHierarchyAdapter(balance, signaturesByBalance, adapterType, balance.Errors, isFormingSeparateList, isUseThousandKVt, printLandscape, branchName, doublePrecisionProfile, doublePrecisionIntegral, need0, isAnalisIntegral, timeZoneId, setPercisionAsDisplayed)) { Parallel.ForEach(balanceFreeHierarchyUNs, po, (balanceUn, loopState) => { BalanceFreeHierarchyCalculatedResult calculatedValue; if (!balance.CalculatedValues.TryGetValue(balanceUn, out calculatedValue)) { return; } //Формирование документов по каждому балансу try { if (po.CancellationToken.IsCancellationRequested) { loopState.Break(); } calculatedValue.CompressedDoc = CompressUtility.CompressGZip(adapter.BuildBalanceFreeHier(calculatedValue)); } catch (Exception ex) { lock (balance.Errors) { balance.Errors.Append("Ошибка генерации документа - " + ex.Message); } } }); } } return(balance); }
public ExtendedXlsFile TestExecuteBalansHierLev0_Valtage_220_330_Interval(BalansHierLev0Result HierLev0, TExportExcelAdapterType ExportType, IVisualDataRequestObjectsNames getNameInterface) { Dictionary <ID_TypeHierarchy, string> dictionaryOfNames = HierLev0.DictionaryOfNames; InternalData internalData = new InternalData(ExportType, HierLev0.NumbersValues); InitBlock initBlock = new InitBlock(internalData); Classes.TitleInfo titleData = new Classes.TitleInfo(getNameInterface.GetBalanceNameForHierLev0(HierLev0.BalanceId), HierLev0.DTStart, HierLev0.DTEnd); TitleBlock titleBlock = new TitleBlock(titleData); initBlock.AddBlock(titleBlock); List <DateTime> dateTimeListForPeriod = getNameInterface.GetDateTimeListForPeriod(HierLev0.DTStart, HierLev0.DTEnd, HierLev0.DiscreteType, HierLev0.IsSummerOrWinter); List <DateTimePeriod> dateTimePeriods = new List <DateTimePeriod>(); for (int i = 0; i < dateTimeListForPeriod.Count; i += 1) { var dateList = dateTimeListForPeriod.GetRange(i, Math.Min(2, dateTimeListForPeriod.Count - i)); if (dateList.Count > 1) { dateTimePeriods.Add(new DateTimePeriod(dateList[0], dateList[1])); } } dateTimePeriods.Add(new DateTimePeriod(dateTimeListForPeriod.Max(), HierLev0.DTEnd.AddMinutes(30))); HeaderFooterBlock headerFooter = new HeaderFooterBlock(new Data.HeaderFooterData(HierLev0.VoltageClass, dateTimePeriods)); initBlock.AddBlock(headerFooter); foreach (TIntegral_HierLev0_Values balanceSection in HierLev0.Result_Values) { BalansHierLev0.Data.Full.BalancePartData balData = new BalansHierLev0.Data.Full.BalancePartData(getNameInterface.GetBalanceSectionName(balanceSection.HierLev0Group_Name), HierLev0.BalPartList.Where(x => x.IsUseInGeneralBalance).Select(x => x.Name).Contains(balanceSection.HierLev0Group_Name), HierLev0.BalPartList.Where(x => x.IsRsk).Select(x => x.Name).Contains(balanceSection.HierLev0Group_Name)); BalancePartBlock balPartBlock = new BalancePartBlock(balData); foreach (KeyValuePair <ID_IsOurSide, TIntegral_PS_ValuesForHierLev0> psBalSect in balanceSection.HierLev0DetailGroupResult) { string psName; TIntegral_PS_ValuesForHierLev0 psBalSectData = psBalSect.Value; ID_IsOurSide side = psBalSect.Key; ID_TypeHierarchy key = new ID_TypeHierarchy(enumTypeHierarchy.Dict_PS, -1); key.TypeHierarchy = side.IsOurSide ? enumTypeHierarchy.Dict_PS : enumTypeHierarchy.Dict_Contr_PS; key.ID = side.ID; if (!dictionaryOfNames.TryGetValue(key, out psName)) { psName = getNameInterface.GetPSName(side.ID, !side.IsOurSide); } PsBlock psBlock = new PsBlock(psName); foreach (TI_Integral_ValuesForHierLev0 tiPsBalSect in psBalSectData.TI_List) { string tIName = string.Empty; key.TypeHierarchy = tiPsBalSect.TypeHierarchy; key.ID = tiPsBalSect.ID; if (!dictionaryOfNames.TryGetValue(key, out tIName)) { switch (tiPsBalSect.TypeHierarchy) { case enumTypeHierarchy.Dict_PS: tIName = getNameInterface.GetPSName(tiPsBalSect.ID, !side.IsOurSide); break; case enumTypeHierarchy.Info_TI: tIName = getNameInterface.GetTIName(tiPsBalSect.ID, false); break; case enumTypeHierarchy.Info_ContrTI: tIName = getNameInterface.GetTIName(tiPsBalSect.ID, true); break; case enumTypeHierarchy.Info_TP: tIName = getNameInterface.GetTPName(tiPsBalSect.ID); break; } } List <TVALUES_DB> inputValues; List <TVALUES_DB> outputValues; Data.TiData tiData = new Data.TiData(tIName); if (tiPsBalSect.Val_List.TryGetValue(1, out inputValues)) { tiData.InputInterval = inputValues.Select(x => new TVALUES_DB(x.F_FLAG, x.F_VALUE / 1000)).ToList(); } if (tiPsBalSect.Val_List.TryGetValue(2, out outputValues)) { tiData.OutputInterval = outputValues.Select(x => new TVALUES_DB(x.F_FLAG, x.F_VALUE / 1000)).ToList(); } TiBlock tiBlock = new TiBlock(tiData); psBlock.AddBlock(tiBlock); } balPartBlock.AddBlock(psBlock); } headerFooter.AddBlock(balPartBlock); } ExtendedXlsFile xls = new ExtendedXlsFile(ExportType); initBlock.Render(xls); return(xls); }