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