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);
        }
Ejemplo n.º 2
0
        /// <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);
        }