示例#1
0
        private ICollection <PlanTrackNumber> GetPlanTrackNumberByPredictData(string lotteryId, IList <PredictDataDto> data)
        {
            var planTrackNumbers = new List <PlanTrackNumber>();

            var finalLotteryData = _lotteryDataAppService.GetFinalLotteryData(LotteryInfo.Id);

            var cacheKey = string.Format(RedisKeyConstants.LOTTERY_PLANTRACK_DETAIL_KEY,
                                         LotteryInfo.Id, _userMemberRank == MemberRank.Ordinary ?
                                         LotteryConstants.SystemUser : _lotterySession.UserId, finalLotteryData.Period);

            _cacheManager.Remove(cacheKey);

            data.GroupBy(p => p.NormConfigId).ForEach(item =>
            {
                var planInfo             = _normConfigQueryService.GetNormPlanInfoByNormId(item.Key, lotteryId);
                var newestPredictDataDto = item.OrderByDescending(p => p.StartPeriod).First();
                var normConfig           = _normConfigQueryService.GetUserNormConfig(item.Key);
                var planTrackNumber      = new PlanTrackNumber()
                {
                    NormId                = normConfig.Id,
                    Sort                  = normConfig.Sort,
                    PlanId                = planInfo.Id,
                    PlanName              = planInfo.PlanName,
                    EndPeriod             = newestPredictDataDto.EndPeriod,
                    StartPeriod           = newestPredictDataDto.StartPeriod,
                    MinorCycle            = newestPredictDataDto.MinorCycle,
                    PredictData           = newestPredictDataDto.PredictedData,
                    CurrentPredictPeriod  = newestPredictDataDto.CurrentPredictPeriod,
                    PredictType           = planInfo.DsType,
                    HistoryPredictResults = GetHistoryPredictResults(item.OrderByDescending(p => p.StartPeriod), item.Key, normConfig.LookupPeriodCount, planInfo.PlanNormTable),
                };
                var rightCount               = planTrackNumber.HistoryPredictResults.Count(p => p == 0);
                var totleCount               = planTrackNumber.HistoryPredictResults.Count(p => p != 2);
                var currentScore             = Math.Round((double)rightCount / totleCount, 2);
                planTrackNumber.CurrentScore = currentScore;
                WritePlanTrackNumbers(item, planInfo, currentScore);
                planTrackNumbers.Add(planTrackNumber);
            });

            return(planTrackNumbers.OrderBy(p => p.Sort).ToList());
        }
示例#2
0
        private void JobNEachTaskExcuteAfterHandler(object sender, Events.LotteryJobEventArgs e)
        {
            var lotteryInfo      = _lotteryQueryService.GetLotteryInfoById(e.LotteryId);
            var finalLotteryData = e.LotteryFinalData;
            var predictPeroid    = finalLotteryData.FinalPeriod + 1;

            var predictDatas = new List <PredictDataDto>();
            var userNorms    = _normConfigQueryService.GetUserOrDefaultNormConfigs(lotteryInfo.Id);

            foreach (var userNorm in userNorms.Safe())
            {
                predictDatas.AddRange(_lotteryPredictDataService.PredictNormData(lotteryInfo.Id, userNorm, predictPeroid, e.LotteryCode));
            }
            predictDatas.GroupBy(p => p.NormConfigId).ForEach(item =>
            {
                var planInfo             = _normConfigQueryService.GetNormPlanInfoByNormId(item.Key, e.LotteryId);
                var newestPredictDataDto = item.OrderByDescending(p => p.StartPeriod).First();
                var normConfig           = _normConfigQueryService.GetUserNormConfig(item.Key);
                var planTrackNumber      = new PlanTrackNumber()
                {
                    NormId                = normConfig.Id,
                    PlanId                = planInfo.Id,
                    PlanName              = planInfo.PlanName,
                    EndPeriod             = newestPredictDataDto.EndPeriod,
                    StartPeriod           = newestPredictDataDto.StartPeriod,
                    MinorCycle            = newestPredictDataDto.MinorCycle,
                    PredictData           = newestPredictDataDto.PredictedData,
                    CurrentPredictPeriod  = newestPredictDataDto.CurrentPredictPeriod,
                    PredictType           = planInfo.DsType,
                    HistoryPredictResults = GetHistoryPredictResults(item.OrderByDescending(p => p.StartPeriod), item.Key, normConfig.LookupPeriodCount, planInfo.PlanNormTable, lotteryInfo.LotteryCode),
                };
                var rightCount               = planTrackNumber.HistoryPredictResults.Count(p => p == 0);
                var totleCount               = planTrackNumber.HistoryPredictResults.Count(p => p != 2);
                var currentScore             = Math.Round((double)rightCount / totleCount, 2);
                planTrackNumber.CurrentScore = currentScore;
                WritePlanTrackNumbers(item, planInfo, currentScore, lotteryInfo.LotteryCode);
            });

            Console.WriteLine(e.LotteryCode + ":" + e.LotteryFinalData.FinalPeriod + "-" + e.LotteryFinalData.Data);
        }