private void SetMallProductSnapshot(MallProductSnapshot ps, ProductForMall r, Product p)
        {
            ps.EquivalentBox = r.EquivalentBox;
            ps.IsOrderByBox  = r.IsOrderByBox;
            ps.MinOrderCount = r.MinOrderCount;
            ps.OrderDivisor  = r.OrderDivisor;

            ps.LegacyProductId = p.LegacyProductId;
            ps.Name            = p.Name;
            ps.FullName        = p.FullName;
            ps.Specification   = p.Specification;
            ps.ProductUnit     = p.ProductUnit;
            ps.ShelfLife       = p.ShelfLife;
            ps.EquivalentTon   = p.EquivalentTon;
            ps.Barcode         = p.Barcode;
            ps.TaxRate         = p.TaxRate;

            ps.Order = p.Order;
        }
        private void InitializeMallProducts(string userName, MallDay item, List <ProductForMall> productForMalls, List <Product> products)
        {
            var dbDayProducts = item.MallProductSnapshots;

            foreach (var dayProduct in dbDayProducts)
            {
                var productForMall =
                    productForMalls.SingleOrDefault(x => x.Id == dayProduct.ProductForMallId);
                if (productForMall == null)
                {
                    throw new Exception($"未能找到商超产品: {dayProduct.Name}");
                }
                var product = products.SingleOrDefault(x => x.Id == productForMall.ProductId);
                if (product == null)
                {
                    throw new Exception($"未能找到产品: {dayProduct.Name}");
                }
                SetMallProductSnapshot(dayProduct, productForMall, product);
                dayProduct.SetModification(userName, "重新初始化");
                _collectiveProductSnapshotRepository.Update(dayProduct);
            }
            var dayProductIds        = dbDayProducts.Select(x => x.ProductForMallId).ToList();
            var collectiveProductIds = productForMalls.Select(x => x.Id).ToList();
            var toAddIds             = collectiveProductIds.Except(dayProductIds).ToList();
            var toAdd = productForMalls.Where(x => toAddIds.Contains(x.Id)).ToList();

            foreach (var pr in toAdd)
            {
                var dayProduct = new MallProductSnapshot
                {
                    ProductForMallId = pr.Id,
                };
                dayProduct.SetCreation(userName, "初始化");
                var product = products.SingleOrDefault(x => x.Id == pr.ProductId);
                if (product == null)
                {
                    throw new Exception($"未能找到产品, 商超产品ID: {pr.Id}");
                }
                SetMallProductSnapshot(dayProduct, pr, product);
                item.MallProductSnapshots.Add(dayProduct);
            }
        }