/// <summary> /// 获取商品的总销售统计信息 /// </summary> /// <param name="goodsIdList"></param> /// <param name="warehouseIds"></param> /// <param name="stockUpDays"></param> /// <param name="dateTime"></param> /// <returns></returns> public static List <ChildGoodsSalePurchasing> GetChildGoodsSaleTotalByDays(List <Guid> goodsIdList, List <Guid> warehouseIds, int stockUpDays, DateTime dateTime) { var now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var totalSales = new List <GoodsDaySalesInfo>(); var saleDays = new List <GoodsSaleDaysInfo>(); foreach (var warehouseId in warehouseIds) { totalSales.AddRange(DataAccessor.GetGoodsDaySalesInfos(goodsIdList, warehouseId, now.AddDays(-110), now)); saleDays.AddRange(DataAccessor.GetSaleDays(goodsIdList, warehouseId, now)); } //计算前第一个备货周期的销售额 var childSaleList1 = totalSales.Where(act => act.DayTime >= now.AddDays(-30) && act.DayTime < now); //计算前第二个备货周期的销售额 var childSaleList2 = totalSales.Where(act => act.DayTime >= now.AddDays(-60) && act.DayTime < now.AddDays(-30)); //计算前第三个备货周期的销售额 var childSaleList3 = totalSales.Where(act => act.DayTime >= now.AddDays(-90) && act.DayTime < now.AddDays(-60)); //合并这三个销售额的信息 var childGoodsSaleAll = MergeSaleList(goodsIdList, childSaleList1, childSaleList2, childSaleList3, totalSales, dateTime, saleDays); return(childGoodsSaleAll); }
/// <summary> /// 获取商品的总销售统计信息 /// </summary> /// <param name="goodsIdList"></param> /// <param name="warehouseId"></param> /// <param name="stockUpDays"></param> /// <returns></returns> public static IList <ChildGoodsSalePurchasing> GetChildGoodsSaleTotalByDays(List <Guid> goodsIdList, Guid warehouseId, int stockUpDays) { var dateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var total = DataAccessor.GetChildGoodsSaleList(goodsIdList, warehouseId, dateTime.AddDays(-110), dateTime); var childGoodsSaleAll = new List <ChildGoodsSalePurchasing>(); var totalSales = DataAccessor.GetSaleDays(goodsIdList, warehouseId, dateTime); foreach (var guid in goodsIdList) { var realList = total.Where(act => act.GoodsId == guid); //计算前第一个备货周期的销售额 var childSaleList1 = realList.Where(act => act.DayTime >= dateTime.AddDays(-30) && act.DayTime < dateTime); //计算前第二个备货周期的销售额 var childSaleList2 = realList.Where(act => act.DayTime >= dateTime.AddDays(-60) && act.DayTime < dateTime.AddDays(30)); //计算前第三个备货周期的销售额 var childSaleList3 = realList.Where(act => act.DayTime >= dateTime.AddDays(-90) && act.DayTime < dateTime.AddDays(-60)); foreach (var hostingFilialeGroup in realList.GroupBy(act => act.HostingFilialeId)) { var filialeSales = totalSales.Where(act => act.RealGoodsId == guid && act.HostingFilialeId == hostingFilialeGroup.Key); childGoodsSaleAll.Add(new ChildGoodsSalePurchasing { GoodsId = guid, FirstNumberOneStockUpSale = childSaleList1.Where(act => act.HostingFilialeId == hostingFilialeGroup.Key).Sum(act => act.SaleQuantity), FirstNumberTwoStockUpSale = childSaleList2.Where(act => act.HostingFilialeId == hostingFilialeGroup.Key).Sum(act => act.SaleQuantity), FirstNumberThreeStockUpSale = childSaleList3.Where(act => act.HostingFilialeId == hostingFilialeGroup.Key).Sum(act => act.SaleQuantity), Specification = hostingFilialeGroup.First().Specification, HostingFilialeId = hostingFilialeGroup.Key, PerStepSales = GetPreStepSales(realList, dateTime, filialeSales.Max(act => act.Days)) }); } } return(childGoodsSaleAll); }