Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
            /// <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);
            }