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);
        }
Пример #2
0
 public void Install(string path)
 {
     foreach (var data in Datas)
     {
         CompressUtility.Decompress(path, data);
     }
 }
Пример #3
0
        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 void SaveTreeSettings(FrameworkElement selector)
        {
            var result = new StringBuilder();

            var tree = selector.FindName("tree") as IFreeHierarchyTree;

            if (tree != null)
            {
                try
                {
                    var sets = tree.GetSelectedToSet();

                    result.Append("treeSelectedSetVersionNumber").Append("═").Append(2).Append("¤");

                    result.Append("tree").Append("═").Append(sets).Append("¤");
                }
                catch (Exception ex)
                {
                    if (Manager.UI != null)
                    {
                        Manager.UI.ShowMessage("Ошибка сохранения настроек модуля: " + ex.Message);
                    }
                }
            }

            var settings = result.Length == 0 ? null : CompressUtility.Zip(result.ToString());

            Manager.Config.SaveModulesSettingsCompressed("MultiPSSelector: Workflow", settings);
        }
        private void RestoreTreeSettings(FrameworkElement selector)
        {
            byte[] settingsCompressed = null;
            if (Manager.Config.ModulesSettingsCompressed != null)
            {
                Manager.Config.ModulesSettingsCompressed.TryGetValue(
                    "MultiPSSelector: Workflow", out settingsCompressed);
            }

            if (settingsCompressed != null)
            {
                var useBase64 = false;
                try
                {
                    string settings;
                    try
                    {
                        settings = CompressUtility.Unzip(settingsCompressed, useBase64);
                    }
                    catch (Exception ex)
                    {
                        Manager.UI.ShowMessage(ex.Message);
                        return;
                    }

                    if (string.IsNullOrEmpty(settings))
                    {
                        return;
                    }

                    string param;
                    var    dict = AskueARM2.Client.Visual.Common.CommonEx.ParseSettings(settings);
                    if (dict.TryGetValue("tree", out param) && !string.IsNullOrEmpty(param))
                    {
                        var tree = selector.FindName("tree") as IFreeHierarchyTree;
                        if (tree != null)
                        {
                            var sets = param.Split('■').Take(1000).ToList();

                            short  versionNumber = 0;
                            string svn;
                            if (dict.TryGetValue("treeSelectedSetVersionNumber", out svn) && !string.IsNullOrEmpty(svn))
                            {
                                short.TryParse(svn, out versionNumber);
                            }

                            tree.SetItemsForSelection(sets, versionNumber);
                            //tree.LoadTypes(rightFilter);
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (Manager.UI != null)
                    {
                        Manager.UI.ShowMessage("Ошибка восстановления настроек модуля: " + ex.Message);
                    }
                }
            }
        }
Пример #6
0
        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)));
        }
 //
 // Methods
 //
 public void SaveText()
 {
     try
     {
         Encoding encoding = Encoding.Unicode;
         savedata = Convert.ToBase64String(
             CompressUtility.Compress(encoding.GetBytes(text))
             );
     }
     catch (Exception E)
     {
         Log.ErrorOnce("Unable to encode memorial data for " + ThingID + ": " + E.ToString(), ThingID.GetHashCode());
     }
 }
        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)));
        }
 private void LoadText()
 {
     try
     {
         Encoding encoding = Encoding.Unicode;
         char[]   base64   = encoding.GetChars(
             CompressUtility.Decompress(Convert.FromBase64String(savedata))
             );
         text = new string(base64);
     }
     catch (Exception E)
     {
         Log.ErrorOnce("Unable to decode memorial data for " + ThingID + ": " + E.ToString(), ThingID.GetHashCode());
     }
 }
Пример #10
0
        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);
        }
Пример #12
0
        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)));
        }
Пример #13
0
        public IPackage Create(string path)
        {
            var result = new Package
            {
                _title     = Title,
                _author    = Author,
                _version   = Version,
                _signature = Signature,
                _datas     = Datas
            };

            using (var fileStream = File.Open(path, FileMode.Create))
                using (var binaryWriter = new BinaryWriter(fileStream))
                    using (var zipStream = new ZipOutputStream(fileStream))
                    {
                        // 헤더 데이터 작성
                        binaryWriter.Write(SectionType.Header.GetValue <ValueAttribute, string>());
                        binaryWriter.Write(result.Title ?? string.Empty);
                        binaryWriter.Write(result.Author ?? string.Empty);
                        binaryWriter.Write(result.Version ?? string.Empty);
                        binaryWriter.Write(result.Signature ?? string.Empty);

                        // 압축 스트림 설정
                        zipStream.SetLevel(3);

                        // 압축 데이터 작성
                        binaryWriter.Write(SectionType.Content.GetValue <ValueAttribute, string>());
                        foreach (var data in Datas)
                        {
                            CompressUtility.Compress(zipStream, data);
                        }

                        zipStream.IsStreamOwner = false;
                        zipStream.Close();
                    }

            return(result);
        }
Пример #14
0
        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);
        }
        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)));
        }
Пример #16
0
        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);
        }
Пример #17
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            var     loginInfo = SendLoginPW.ParseFrom(requestInfo.Body);
            dynamic info      = null;
            string  infoStr   = string.Empty;

            if (loginInfo.HasCertificate)//如果有传证书
            {
                infoStr = RoomCardUtility.GetloginInfoByCertStr(CompressUtility.DecompressString(loginInfo.Certificate));
                if (string.IsNullOrEmpty(infoStr))//3证书无效
                {
                    byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(3).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                    session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                    return;
                }
                else
                {
                    try
                    {
                        info = JsonConvert.DeserializeObject <dynamic>(infoStr);
                        if ((DateTime.Now - ((DateTime)info.dateTime)).TotalHours >= 168)//证书过期
                        {
                            byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(4).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                            return;
                        }
                        info.Score = RoomCardUtility.GetLongBaoNumber(info.ID.ToString());
                    }
                    catch (Exception ex)
                    {
                        session.Logger.Error(ex);
                        byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(3).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                        session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                        return;
                    }
                }
            }
            else
            {
                infoStr = RoomCardUtility.GetloginInfoByPWD(loginInfo.UserAccount, loginInfo.Pwd);
                if (string.IsNullOrEmpty(infoStr) || JsonConvert.DeserializeObject <dynamic>(infoStr) == null) //5账号密码错误,
                {
                    session.Logger.Debug(infoStr + "infoStr" + infoStr);
                    byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(5).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                    session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                    return;
                }
                info = JsonConvert.DeserializeObject <dynamic>(infoStr);
            }
            SendLogin loginInfobuild = SendLogin.CreateBuilder().SetCity(loginInfo.City).SetHeadimg(string.IsNullOrEmpty(info.HeadImg1.ToString()) ?"1": string.Format("http://www.qytfkj.com{0}", info.HeadImg1)).SetLatitude(loginInfo.Latitude).SetNickname(info.TrueName.ToString())
                                       .SetOpenid(info.ID.ToString()).SetProvince(loginInfo.Province).SetSex(info.Sex.ToString().Equals("1") ? "2" : "1").SetUnionid(info.ID.ToString()).Build();
            var loginInfoByte = loginInfobuild.ToByteArray();
            var login         = new Login();
            var json          = new
            {
                ID       = info.ID,
                Sex      = info.Sex,
                HeadImg1 = info.HeadImg1,
                TrueName = info.TrueName,
                Score    = info.Score,
                dateTime = DateTime.Now
            };

            login.CerStr      = CompressUtility.CompressString(RoomCardUtility.GetCertStrByloginInfoStr(JsonConvert.SerializeObject(json)));
            login.UserType    = 1;
            login.UserLongBao = (long)info.Score;
            login.ExecuteCommand(session, new ProtobufRequestInfo {
                Body = loginInfoByte
            });
        }
        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);
        }
Пример #19
0
        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)));
        }