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()); }
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); }