public async Task <IActionResult> Put(int id, [FromBody] CollectiveProductSnapshotViewModel collectiveProductSnapshotVm)
        {
            if (collectiveProductSnapshotVm == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var dbItem = await _collectiveProductSnapshotRepository.GetSingleAsync(id);

            if (dbItem == null)
            {
                return(NotFound());
            }
            Mapper.Map(collectiveProductSnapshotVm, dbItem);
            dbItem.SetModification(UserName);
            _collectiveProductSnapshotRepository.Update(dbItem);
            if (!await UnitOfWork.SaveAsync())
            {
                return(StatusCode(500, "保存时出错"));
            }

            return(NoContent());
        }
        private void InitializeCollectiveProducts(string userName, CollectiveDay item, List <ProductForCollective> productForCollectives, List <Product> products)
        {
            var dbDayProducts = item.CollectiveProductSnapshots;

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

            foreach (var pr in toAdd)
            {
                var dayProduct = new CollectiveProductSnapshot
                {
                    ProductForCollectiveId = pr.Id,
                };
                dayProduct.SetCreation(userName, "初始化");
                var product = products.SingleOrDefault(x => x.Id == pr.ProductId);
                if (product == null)
                {
                    throw new Exception($"未能找到产品, 集体户产品ID: {pr.Id}");
                }
                SetCollectiveProductSnapshot(dayProduct, pr, product);
                item.CollectiveProductSnapshots.Add(dayProduct);
            }
        }