//生成采购单 public int CreatePurchase(IList <PurchaseApplicationViewModel> models, string temp_purchaseNumber) { PurchaseHeader newPurchaseHeader = null; IList <Purchase> listOfPurchase = new List <Purchase>(); models = models.Where(x => x.TotalConfirmed > 0).ToList(); if (models.Count != 0) { try { foreach (var item in models) { var existingPurchase = _purchaseRepository.FindBy(x => x.PurchaseApplicationId == item.PurchaseApplicationId && x.IsDeleted && item.SupplierName == x.PurchaseHeader.SupplierId).FirstOrDefault(); // 重新修改之前的采购单 if (existingPurchase != null) { existingPurchase.PurchaseTotal = item.TotalConfirmed; existingPurchase.IsDeleted = false; switch (item.RequestCategory) { case RequestCategoriesEnum.材料需求: existingPurchase.Status = ProcessStatusEnum.采购中; break; case RequestCategoriesEnum.采购退货: existingPurchase.Status = ProcessStatusEnum.退货中; break; } existingPurchase.UpdateDate = DateTime.Now; _purchaseRepository.Save(); switch (item.RequestCategory) { case RequestCategoriesEnum.材料需求: UpdatePurchaseApplicationProcessStatus(item.PurchaseApplicationId, ProcessStatusEnum.采购中); break; case RequestCategoriesEnum.采购退货: UpdatePurchaseApplicationProcessStatus(item.PurchaseApplicationId, ProcessStatusEnum.退货中); break; } return(1); } else { var purchaseApplicationHeader = _purchaseApplicationHeaderRepository.FindBy(x => x.PurchaseApplicationNumber == item.ApplicationNumber).Include(c => c.RequestHeader).FirstOrDefault(); if (newPurchaseHeader == null && purchaseApplicationHeader != null) { newPurchaseHeader = _mapper.Map <PurchaseHeader>(purchaseApplicationHeader); newPurchaseHeader.SupplierId = item.SupplierName; newPurchaseHeader.CreateDate = DateTime.Now; newPurchaseHeader.UpdateDate = DateTime.Now; //Create a new purchase header. var prefix = newPurchaseHeader.RequestCategory == RequestCategoriesEnum.采购退货 ? "RCG" : "CG"; var lastSerialNumber = _purchaseHeaderRepository.GetLatestSerialNumber(DateTime.Now); newPurchaseHeader.SerialNo = ++lastSerialNumber; newPurchaseHeader.PurchaseNumber = string.IsNullOrEmpty(temp_purchaseNumber) ? ServiceHelper.GenerateCodeNumber(prefix, newPurchaseHeader.SerialNo) : temp_purchaseNumber; newPurchaseHeader.RequestCategory = purchaseApplicationHeader.RequestHeader.RequestCategory; } if (newPurchaseHeader == null) { continue; } var newPurchase = new Purchase { PurchaseNumber = newPurchaseHeader.PurchaseNumber, CurrentPurchasePrice = item.CurrentPurchasePrice, PurchaseTotal = item.TotalConfirmed, PurchaseApplicationId = item.PurchaseApplicationId, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Status = purchaseApplicationHeader != null && purchaseApplicationHeader.RequestHeader.RequestCategory == RequestCategoriesEnum.采购退货 ? ProcessStatusEnum.退货中 : ProcessStatusEnum.采购中 }; listOfPurchase.Add(newPurchase); } } _purchaseHeaderRepository.Add(newPurchaseHeader); _purchaseRepository.AddRange(listOfPurchase); _purchaseHeaderRepository.Save(); _purchaseRepository.Save(); //更新采购申请表的状态和需求表状态 foreach (var item in models) { UpdatePurchaseApplicationProcessStatus(item.PurchaseApplicationId, item.RequestCategory == RequestCategoriesEnum.采购退货 ? ProcessStatusEnum.退货中 : ProcessStatusEnum.采购中); } return(1); } catch (DbUpdateException) { return(0); } } return(0); }