internal static SpecialProductStatisticOnVoyage Parse(IEnumerable <SpecialProductSupplyInfo> supplyInfos, string departure, string arrival) { var result = new SpecialProductStatisticOnVoyage() { Departure = departure, Arrival = arrival }; var totalSuccessSupplyInfos = supplyInfos.Where(item => item.Success); result.Total = new SpecialProductStatisticInfo() { OrderCount = supplyInfos.Count(), SuccessOrderCount = totalSuccessSupplyInfos.Count(), TicketCount = supplyInfos.Sum(item => item.TicketCount), SuccessTicketCount = totalSuccessSupplyInfos.Sum(item => item.TicketCount) }; var supplyInfosOnVoyage = supplyInfos.Where(item => item.Departure == departure && item.Arrival == arrival).ToList(); if (supplyInfosOnVoyage.Count == 0) { result.Voyage = new SpecialProductStatisticInfo(); } else { var successSupplyInfosOnVoyage = supplyInfosOnVoyage.Where(item => item.Success); result.Voyage = new SpecialProductStatisticInfo() { OrderCount = supplyInfosOnVoyage.Count(), SuccessOrderCount = successSupplyInfosOnVoyage.Count(), TicketCount = supplyInfosOnVoyage.Sum(item => item.TicketCount), SuccessTicketCount = successSupplyInfosOnVoyage.Sum(item => item.TicketCount) }; } return(result); }
/// <summary> /// 查询特殊票提供资源的统计信息 /// </summary> public static Dictionary <Guid, SpecialProductStatisticOnVoyage> QuerySupplyStatisticInfo(IEnumerable <Guid> companies, string departure, string arrival) { if (!companies.Any()) { return(new Dictionary <Guid, SpecialProductStatisticOnVoyage>()); } if (string.IsNullOrWhiteSpace(departure)) { throw new ArgumentNullException("departure"); } if (string.IsNullOrWhiteSpace(arrival)) { throw new ArgumentNullException("arrival"); } var repository = Repository.Factory.CreateStatisticRepository(); var supplyStatisticInfos = repository.QuerySupplyStatisticInfo(companies, Service.SystemManagement.SystemParamService.ProductStatisticDays); var companyStatisticInfos = supplyStatisticInfos.GroupBy(item => item.Company).ToDictionary( item => item.Key, item => SpecialProductStatisticOnVoyage.Parse(item, departure, arrival)); foreach (var company in companies) { if (!companyStatisticInfos.ContainsKey(company)) { companyStatisticInfos.Add(company, SpecialProductStatisticOnVoyage.GetDefault(departure, arrival)); } } return(companyStatisticInfos); }