protected override bool Execute(CodeActivityContext context) { DateTime dt = new DateTime(Year.Get(context), Month.Get(context), 1); try { TI_ChanelType ti = new TI_ChanelType { ChannelType = ChannelType.Get(context), TI_ID = TiId.Get(context), DataSourceType = null }; SectionIntegralComplexResults result = ARM_Service.GroupTP_GetActConsumptionPowerTi(ti, ExcelAdapterType, dt, 2, ".", IsReadCalculatedValues.Get(context), isExportAllIncludetTi.Get(context), false, null, WcfTimeOut.Get(context)); if (!string.IsNullOrEmpty(result.Errors.ToString())) { Error.Set(context, result.Errors.ToString()); } else { SendEmail(context, CompressUtility.DecompressGZip(result.Document)); } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
protected override bool Execute(CodeActivityContext context) { DateTime dt = new DateTime(Year.Get(context), Month.Get(context), 1); try { ID_TypeHierarchy idHierarchy = new ID_TypeHierarchy(); idHierarchy.ID = ID.Get(context); idHierarchy.TypeHierarchy = HierarchyType; SectionIntegralComplexResults result = ARM_Service.GroupTP_GetActConsumptionPower(idHierarchy, GroupTPPowerReportMode, null, TypeOfMeasuring, ExcelAdapterType, dt, 2, ".", IsReadCalculatedValues.Get(context), IncludeAllTI.Get(context), false, null, null, WcfTimeOut.Get(context)); if (!string.IsNullOrEmpty(result.Errors.ToString()) && (result.Document == null || result.Document.Length == 0)) { Error.Set(context, result.Errors.ToString()); } else { SendEmail(context, CompressUtility.DecompressGZip(result.Document)); } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
private XlsFileExBase InitBalanceFreeHierarchy(string balanceUn, out bool isHeaderFormed) { isHeaderFormed = false; if (_balanceCalculated == null) { return(null); } BalanceFreeHierarchyCalculatedResult balanceCalculatedResult; if (!_balanceCalculated.CalculatedValues.TryGetValue(balanceUn, out balanceCalculatedResult)) { return(null); } var header = FreeHierarchyFactory.BL_GetBalanceHeader(balanceUn); var ms = header == null ? null : header.Item2; XlsFileExBase xls; var decompressed = CompressUtility.DecompressGZip(ms); if (decompressed != null) { isHeaderFormed = true; try { xls = new XlsFileExBase(decompressed, true); } catch (Exception ex) { _errors.Append(ex.Message); xls = new XlsFileExBase(1, TExcelFileFormat.v2010, true); xls.OptionsPrecisionAsDisplayed = _setPercisionAsDisplayed; } } else { xls = new XlsFileExBase(1, TExcelFileFormat.v2013, true); xls.NewFile(1, TExcelFileFormat.v2013); } Init(xls); if (balanceCalculatedResult != null) { if (string.IsNullOrEmpty(balanceCalculatedResult.DocumentName)) { xls.SheetName = "Документ от " + DateTime.Today.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); } else { xls.SheetName = balanceCalculatedResult.DocumentName; } } xls.OptionsPrecisionAsDisplayed = _setPercisionAsDisplayed; return(xls); }
protected override bool Execute(CodeActivityContext context) { try { var balanceFreeHierarchyUNs = new List <string> { BalanceId.Get(context) }; var balanceResult = ARM_Service.BL_GetFreeHierarchyBalanceResult(balanceFreeHierarchyUNs, StartDateTime.Get(context), EndDateTime.Get(context), null, TExportExcelAdapterType.toXLSx, true, DiscreteType, EnumUnitDigit.Kilo, false, EnumUnitDigit.Kilo, true, false, 3, 3, false, false, false); if (balanceResult != null) { if (balanceResult.CalculatedValues == null || balanceResult.CalculatedValues.Count == 0) { throw new Exception("Документ не сформирован. Неверный идентификатор или баланс удален."); } var calculatedResult = balanceResult.CalculatedValues.First().Value; if (calculatedResult.CompressedDoc == null) { throw new Exception("Документ пуст. Ошибка формирования"); } var ms = new MemoryStream(); CompressUtility.DecompressGZip(calculatedResult.CompressedDoc).CopyTo(ms); ms.Position = 0; Document.Set(context, ms); } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
protected override bool Execute(CodeActivityContext context) { SectionIntegralComplexResults Res; try { //TODO часовой пояс Res = ARM_Service.SIA_GetSectionIntegralActExcelDocumentWithATSCode( SectionID.Get(context), StartDateTime.Get(context), DataSourceType, DiscreteType, IsPower, IsEnabledRChannel, BusRelation, IsAllocateCA, IsOffsetFromMoscowEnbledForDrums, IsFilterPSEnabled, IsReadCalculatedValues, IsClosedPeriod, null); if (Res.Document != null) { Res.Document.Position = 0; MemoryStream ms = CompressUtility.DecompressGZip(Res.Document); ms.Position = 0; Document.Set(context, ms); } if (Res.Errors != null) { Error.Set(context, Res.Errors.ToString()); } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
protected override bool Execute(CodeActivityContext context) { try { var res = ARM_Service.BPS_GetBalansPSResultAndHtmlDocument2(BalanceId.Get(context), StartDateTime.Get(context), EndDateTime.Get(context), DiscreteType, //.Get(context), DataSourceType, //.Get(context), isPower, //.Get(context), isOffsetFromMoscowEnbledForDrums, //.Get(context), IsPowerEquipmentEnabled, 7, null, false); if (res.Errors != null) { Error.Set(context, res.Errors.ToString()); } var ms = CompressUtility.DecompressGZip(res.HTMLDocument); if (ms != null) { ms.Position = 0; Document.Set(context, ms); } IsHasUnbalanceValue.Set(context, !res.IsHasUnbalanceValue); } catch (Exception ex) { if (!HideException.Get(context)) { throw ex; } } return(true); }
protected override bool Execute(CodeActivityContext context) { SectionIntegralResults Res; try { Res = ARM_Service.SIA_GetFlowBalanceReport( SectionID.Get(context), TExportExcelAdapterType.toXLS, StartDateTime.Get(context), DataSourceType, BusRelation, true, false, null, true, true, null); if (Res.CompressedDoc != null) { Res.CompressedDoc.Position = 0; MemoryStream ms = CompressUtility.DecompressGZip(Res.CompressedDoc); ms.Position = 0; Document.Set(context, ms); } if (Res.Errors != null) { Error.Set(context, Res.Errors.ToString()); } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
protected override bool Execute(System.Activities.CodeActivityContext context) { Error.Set(context, null); if (string.IsNullOrEmpty(Args)) { Error.Set(context, "Не определены объекты для которых будет сформирован отчет"); return(false); } MultiPsSelectedArgs args; try { args = Args.DeserializeFromString <MultiPsSelectedArgs>(); } catch (Exception ex) { Error.Set(context, "Ошибка преобразования параметров " + ex.Message); return(false); } args.DtStart = StartDateTime.Get(context); //Начальная дата args.DtEnd = EndDateTime.Get(context); //Конечная дата var reportUn = Report_id.Get(context); var businessObjectName = string.Empty; //Определяем какой бизнес объект используется в отчете try { try { if (!string.IsNullOrEmpty(reportUn)) { businessObjectName = ServiceFactory.StimulReportInvokeSync <string>("GetUsedBusinessObjectsNames", reportUn); } } catch (Exception ex) { Error.Set(context, "Ошибка запроса бизнес модели отчета " + ex.Message); return(false); } BusinessObjectHelper.BuildBusinessObjectsParams(businessObjectName, args); var errs = new StringBuilder(); var compressed = StimulReportsProcedures.LoadDocument(Report_id.Get(context), errs, args, ReportFormat, args.TimeZoneId); if (errs.Length > 0) { Error.Set(context, errs.ToString()); } if (compressed == null) { Error.Set(context, "Ошибка загрузки документа"); return(false); } SendEmail(context, CompressUtility.DecompressGZip(compressed)); } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
protected override bool Execute(CodeActivityContext context) { Error.Set(context, null); EnumGroupTPPowerReportMode?typecalc = null; if (GroupTPPowerReportMode == GroupTPPowerReportMode.OpenPeriod) { typecalc = EnumGroupTPPowerReportMode.OpenPeriod; } if (GroupTPPowerReportMode == GroupTPPowerReportMode.ClosedCurrPeriod) { typecalc = EnumGroupTPPowerReportMode.ClosedCurrPeriod; } if (GroupTPPowerReportMode == GroupTPPowerReportMode.ClosedNextPeriod) { typecalc = EnumGroupTPPowerReportMode.ClosedNextPeriod; } if (GroupTPPowerReportMode == GroupTPPowerReportMode.ClosedPrevPeriod) { typecalc = EnumGroupTPPowerReportMode.ClosedPrevPeriod; } string userName = UserName;//.Get(context); string userID = null; if (string.IsNullOrEmpty(userName)) { Error.Set(context, "Значение свойства 'Пользователь' не может быть пустым"); return(false); } try { List <UserInfo> UList = ARM_Service.EXPL_Get_All_Users(); foreach (UserInfo u in UList) { if (u.UserName.ToLower(System.Globalization.CultureInfo.InvariantCulture) == userName.ToLower(System.Globalization.CultureInfo.InvariantCulture)) { userID = u.User_ID; break; } } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } if (!string.IsNullOrEmpty(Error.Get(context))) { return(false); } if (string.IsNullOrEmpty(userID)) { Error.Set(context, "Не найден пользователь с именем '" + UserName + "'"); return(false); } List <int> listIDs = ListIDs.Get(context); if (listIDs == null) { Error.Set(context, "Неопределен список идентификаторов"); return(false); } List <ID_TypeHierarchy> idList = new List <ID_TypeHierarchy>(); foreach (int id in listIDs) { ID_TypeHierarchy idTypeHier = new ID_TypeHierarchy(); idTypeHier.ID = id; idTypeHier.TypeHierarchy = TypeIDs; idList.Add(idTypeHier); } MemoryStream doc = null; try { SectionIntegralComplexResults res; if (ReportType == enumReportType.ReportReplacementOfMeters) { //TODO часовой пояс res = ARM_Service.Rep_ReplacementOfAccountingFacilities(idList, StartDateTime.Get(context), EndDateTime.Get(context), ReportType, typecalc, userName, null); } else { //TODO часовой пояс res = ARM_Service.REP_OverflowControl(idList, StartDateTime.Get(context), EndDateTime.Get(context), ReportType, typecalc, userName, null, null, false, 3, ",", enumTimeDiscreteType.DBHours, null); } if (res.Document != null) { res.Document.Position = 0; var ms = CompressUtility.DecompressGZip(res.Document); ms.Position = 0; Document.Set(context, ms); //File.WriteAllBytes(@"C:\12\test_SysRep.xls",ms.ToArray()); } switch (res.AdapterType) { case TExportExcelAdapterType.toXLS: FileExtention.Set(context, "xls"); break; case TExportExcelAdapterType.toXLSx: FileExtention.Set(context, "xlsx"); break; case TExportExcelAdapterType.toHTML: FileExtention.Set(context, "html"); break; case TExportExcelAdapterType.toPDF: FileExtention.Set(context, "pdf"); break; } if (res.Errors != null) { Error.Set(context, res.Errors.ToString()); } } catch (Exception ex) { Error.Set(context, ex.Message); if (!HideException.Get(context)) { throw ex; } } return(string.IsNullOrEmpty(Error.Get(context))); }
public static R BuildandWaitResult <R, P>(P groupTpWaiterParams, string methodName , Action <string> onError, Action <double> incProgress = null , CancellationToken?cancellationToken = null, Action <bool> setIndeterminat = null ) where R : class //Тип для результата where P : class //Тип для параметров { ProtoInitializer.InitProtobuf(); int voidPacketLimit; var setting = EnumClientServiceDictionary.GetGlobalSettingsByName(RegistrySettings.FolderVisual, RegistrySettings.SettingVoidPacketLimit); if (setting == null || setting.Setting == null || !int.TryParse(setting.Setting, out voidPacketLimit) || voidPacketLimit < 10) //Максимальное количество не ограничиваем { voidPacketLimit = 24001; } Guid loaderId; try { MemoryStream compressedParam; using (var ms = new MemoryStream()) { ProtoBuf.Serializer.Serialize(ms, groupTpWaiterParams); ms.Position = 0; compressedParam = CompressUtility.CompressGZip(ms); } compressedParam.Position = 0; loaderId = ARM_Service.Builder_StartWait(compressedParam, methodName); Thread.Sleep(100); } catch (Exception ex) { if (onError != null) { onError("Ошибка запуска построителя фак. мощности: " + ex.Message); } return(null); } var isLastPacket = false; var voidCounter = 0; var errCounter = 0; var requestNumber = 0; var ca = new List <byte>(); var packetSize = 0.0; //Тут надо подумать как возвращать правильный размер, возможно никак do { if (cancellationToken.HasValue && cancellationToken.Value.IsCancellationRequested) { ARM_Service.Builder_Cancel(loaderId); break; //Отмена выполнения } try { var packet = ServiceFactory.ArmServiceInvokeSync <BuilderPartResult>("Builder_GetNextPart", requestNumber, loaderId); if (packet != null) { if (!string.IsNullOrEmpty(packet.Errors)) { //Это критическая ошибка, продолжать нельзя if (onError != null) { onError(packet.Errors); } break; } isLastPacket = packet.IsLastPacket; if (isLastPacket) { break; } if (packet.Part != null && packet.Part.Length > 0) { //requestNumber++; if (requestNumber == 0) { if (packet.PacketRemaining == 0) { packetSize = 1; } else { packetSize = 100 / (double)packet.PacketRemaining; } if (setIndeterminat != null) { setIndeterminat(false); } } ca.InsertRange(0, packet.Part.ToArray()); requestNumber++; packet.Part.Close(); packet.Part.Dispose(); voidCounter = 0; Thread.Sleep(10); } else { if (++voidCounter > voidPacketLimit) { isLastPacket = true; if (onError != null) { onError("ClientSideMultithreadBuilder: Превышен лимит ожидания пакетов"); } } else { Thread.Sleep(300); } } errCounter = 0; } else { if (++errCounter > 50) { isLastPacket = true; if (onError != null) { onError("ClientSideMultithreadBuilder: Превышен лимит пустых пакетов"); } } Thread.Sleep(5000); } } catch (Exception ex) { if (++errCounter > 6) { isLastPacket = true; if (onError != null) { onError("ClientSideMultithreadBuilder: Сервер не отвечает"); } } else { if (onError != null) { onError(ex.Message); } Thread.Sleep(5000); } } if (incProgress != null) { incProgress(packetSize); } } while (!isLastPacket); var compressed = new MemoryStream(ca.ToArray()); ca = null; R result = null; if (compressed.Length > 2) { try { using (var ms = CompressUtility.DecompressGZip(compressed)) { compressed.Close(); compressed.Dispose(); ms.Position = 0; result = ProtoBuf.Serializer.Deserialize <R>(ms); } } catch (Exception ex) { if (onError != null) { onError("ClientSideMultithreadBuilder: Ошибка обработки результата: " + ex.Message); } } } GC.Collect(); return(result); }
public Task RunServerBuild(BackgroundWorker worker) { var parents = MonitoringAnalyseDict.Keys.ToList(); try { //Запрос формирования данных ARM_Service_.Monit_GetArchive(_waiterId, parents, _selectedСhannels , DtStart, DtEnd, _maxValue, _selectedEvents, IsConcentratorsEnabled, _filterFlag); //Ждем формирования первых пакетов Thread.Sleep(1000); } catch (Exception ex) { Manager.UI.ShowMessage(ex.Message); return(null); } //if (_showTotalStatistic != null) //{ // _showTotalStatistic(request.StatisticInformation); //} _isRequestCompleted = false; //double packetSize = request.ProgressPercent; //if (request.Result != null && request.Result.Count > 0) //{ // _stackForBuildResult.PushRange(request.Result.ToArray()); // _progressBar.IncValue(packetSize); //} //Отмена выполнения if (worker.CancellationPending || _cancellationToken.IsCancellationRequested) { return(null); } //Запускаем построитель результатов var builderTask = Task.Factory.StartNew(BuildPacketResult, _cancellationToken); //Получение следующих пакетов bool isLastPacket = false; int voidCounter = 0; int errCounter = 0; bool isFirst = true; TStatisticInformation statisticInformation = null; int requestNumber = 0; do { try { if (_cancellationToken.IsCancellationRequested) { break; } var packet = ServiceFactory.ArmServiceInvokeSync <Tuple <bool, MemoryStream, string, TStatisticInformation, TMonitoringAnalyseResult> >("Monit_WaitArchives", requestNumber, _waiterId); if (packet != null) { if (!string.IsNullOrEmpty(packet.Item3)) { Manager.UI.ShowMessage(packet.Item3); } isLastPacket = packet.Item1; if (isLastPacket) { statisticInformation = packet.Item4; break; } if (packet.Item2 != null) { requestNumber++; //var nextPart = packet.Item2.DecompressAndDeserialize<List<TMonitoringAnalyseResult>>(); var decomoressed = CompressUtility.DecompressGZip(packet.Item2); decomoressed.Position = 0; var nextPart = Serializer.Deserialize <List <TMonitoringAnalyseResult> >(decomoressed); if (nextPart != null && nextPart.Count > 0) { _stackForBuildResult.PushRange(nextPart.ToArray()); voidCounter = 0; _mres.Set(); if (isFirst) { _progressBar.SetIndeterminat(false); isFirst = false; } } else { Thread.Sleep(2000); } } else { if (++voidCounter > 501) { isLastPacket = true; Manager.UI.ShowMessage("MonitoringClientFactory: Превышен лимит ожидания пакетов"); } else { Thread.Sleep(5000); } } } else { throw new Exception(); } errCounter = 0; } catch (Exception ex) { if (++errCounter > 6) { isLastPacket = true; Manager.UI.ShowMessage("MonitoringClientFactory: Превышен лимит пустых пакетов"); _progressBar.SetIndeterminat(false); } else { Manager.UI.ShowMessage(ex.Message); Thread.Sleep(1000); } } Thread.Sleep(200); } while (!isLastPacket); if (statisticInformation != null && _showTotalStatistic != null) { _showTotalStatistic(statisticInformation); } _isRequestCompleted = true; _mres.Set(); return(builderTask); }