コード例 #1
0
        public static List <UserBaoYangRecordModel> ConvertOrderData(List <UserBaoYangRecordModel> records, List <Model.UserBaoYangRecordConfig> config)
        {
            foreach (var record in records)
            {
                if (config.Any(o => string.Equals(o.ServiceId, record.PID)))
                {
                    record.BaoYangType = config.First(o => string.Equals(o.ServiceId, record.PID)).PackageType;
                }

                if (config.Any(o => string.Equals(o.ProductCategory, record.Category)))
                {
                    record.BaoYangType = config.First(o => string.Equals(o.ProductCategory, record.Category)).PackageType;
                }
            }

            foreach (var orderId in records.Select(o => o.RelatedOrderID).Distinct().ToList())
            {
                var current = records.Where(o => o.RelatedOrderID == orderId);

                if (current.Any(o => string.Equals(o.BaoYangType, "xby")) && current.Any(o => string.Equals(o.BaoYangType, "dby")))
                {
                    records.RemoveAll(o => o.RelatedOrderID == orderId && string.Equals(o.BaoYangType, "xby"));
                }
            }

            records = records.Where(o => !string.IsNullOrEmpty(o.BaoYangType)).
                      GroupBy(o => $"{o.RelatedOrderID}/{o.BaoYangType}").Select(o => o.First()).ToList();
            List <MileageInfo> distanceInfos = new List <MileageInfo>();

            using (var client = new WorkShopClient())
            {
                var IdStr         = string.Join(",", records.Where(o => o.Status == 1).Select(o => o.RelatedOrderID));
                var serviceResult = client.QueryMileageInfoByMultipleOrder(IdStr);
                if (serviceResult.Success && serviceResult.Result != null && serviceResult.Result.Any())
                {
                    distanceInfos = serviceResult.Result;
                }
            }

            if (distanceInfos != null && distanceInfos.Any())
            {
                foreach (var distanceInfo in distanceInfos)
                {
                    foreach (var record in records)
                    {
                        int orderId  = 0;
                        int distance = 0;
                        if (Int32.TryParse(distanceInfo.Mileage, out distance) &&
                            Int32.TryParse(distanceInfo.Order, out orderId) &&
                            record.RelatedOrderID == orderId)
                        {
                            record.Distance = distance;
                        }
                    }
                }
            }

            return(records);
        }
コード例 #2
0
        public static List <UserBaoYangRecordModel> ConvertOrderData(List <UserBaoYangRecordModel> records, List <Model.UserBaoYangRecordConfig> config)
        {
            foreach (var record in records)
            {
                if (config.Any(o => string.Equals(o.ServiceId, record.PID)))
                {
                    record.BaoYangType = config.First(o => string.Equals(o.ServiceId, record.PID)).PackageType;
                }

                if (config.Any(o => string.Equals(o.ProductCategory, record.Category)))
                {
                    record.BaoYangType = config.First(o => string.Equals(o.ProductCategory, record.Category)).PackageType;
                }
            }

            foreach (var orderId in records.Select(o => o.RelatedOrderID).Distinct().ToList())
            {
                var current = records.Where(o => o.RelatedOrderID == orderId);

                if (current.Any(o => string.Equals(o.BaoYangType, "xby")) && current.Any(o => string.Equals(o.BaoYangType, "dby")))
                {
                    records.RemoveAll(o => o.RelatedOrderID == orderId && string.Equals(o.BaoYangType, "xby"));
                }
            }

            records = records.Where(o => !string.IsNullOrEmpty(o.BaoYangType)).
                      GroupBy(o => $"{o.RelatedOrderID}/{o.BaoYangType}").Select(o => o.First()).ToList();
            var orderDistances = SuggestDal.SelectBaoYangRecordOrderDistance(records.Select(o => o.RelatedOrderID).ToList()) ?? new List <OrderCarModel>();//从订单里程关联表中获取里程信息
            List <MileageInfo> distanceInfos = new List <MileageInfo>();

            using (var client = new WorkShopClient())
            {
                var IdStr         = string.Join(",", records.Where(o => o.Status == 1).Select(o => o.RelatedOrderID)); //已安装订单
                var serviceResult = client.QueryMileageInfoByMultipleOrder(IdStr);                                     //从门店安装单获取里程
                if (serviceResult.Success && serviceResult.Result != null && serviceResult.Result.Any())
                {
                    distanceInfos = serviceResult.Result;
                }
            }
            foreach (var record in records)
            {
                var orderDistance = orderDistances.FirstOrDefault(s => s.OrderId == record.RelatedOrderID);//手动修改过订单里程
                if (orderDistance != null)
                {
                    record.Distance = orderDistance.Distance;
                }
                else
                {
                    var distanceInfo = distanceInfos?.FirstOrDefault(s =>
                                                                     string.Equals(s.Order.Trim(), record.RelatedOrderID.ToString()));//从门店安装单中获取里程
                    if (distanceInfo != null)
                    {
                        int orderId  = 0;
                        int distance = 0;
                        if (Int32.TryParse(distanceInfo.Mileage, out distance) &&
                            Int32.TryParse(distanceInfo.Order, out orderId) &&
                            record.RelatedOrderID == orderId)
                        {
                            record.Distance = distance;
                        }
                    }
                }
            }

            return(records);
        }