| | |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | |
| | | List<Dt_PurchaseBSTOrder> purchaseAddBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrder> purchaseUpdateBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrder> purchaseDeleteBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetailsDel = new List<Dt_PurchaseBSTOrderDetail>(); |
| | | //æ°å¢ |
| | | if (bSTPurchaseOrderDTOsAdd.Count>0) |
| | | { |
| | | //夿ä¾åºå |
| | |
| | | } |
| | | //éªè¯æ¡ç éå¤ |
| | | List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetails = OldpurchaseBSTOrders.SelectMany(x => x.Details).ToList(); |
| | | List<PaperReceiptDetailsItem> paperReceiptDetailsItems = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList(); |
| | | var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItems.Select(x => x.Barcode).Contains(x.Barcode)); |
| | | List<PaperReceiptDetailsItem> paperReceiptDetailsItemsAdd = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList(); |
| | | var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItemsAdd.Select(x => x.Barcode).Contains(x.Barcode)); |
| | | if (ExistDetail!=null) |
| | | { |
| | | return content.Error($"éè´æ¡ç {nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}å·²åå¨"); |
| | | } |
| | | //夿æ¯å¦åå¨ç©æ |
| | | PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItemsAdd.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (paperReceiptDetailsItem!=null) |
| | | { |
| | | return content.Error($"éè´æ¡ç {nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}ç©æId:{paperReceiptDetailsItem.MaterialId}ä¸åå¨"); |
| | | return content.Error($"éè´æ¡ç {nameof(paperReceiptDetailsItem.Barcode)}:{paperReceiptDetailsItem.Barcode}ç©æId:{paperReceiptDetailsItem.MaterialId}ä¸åå¨"); |
| | | } |
| | | foreach (var item in bSTPurchaseOrderDTOsAdd) |
| | | { |
| | | if (bSTPurchaseOrderDTOsUpdate.FirstOrDefault(x=>x.PaperReceiptId== item.PaperReceiptId)!=null) |
| | | { |
| | | continue; |
| | | } |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x=>_mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item); |
| | | purchaseBSTOrder.Details = bSTOrderDetails; |
| | | purchaseAddBSTOrders.Add(purchaseBSTOrder); |
| | | } |
| | | } |
| | | |
| | | //æ´æ° |
| | | if (bSTPurchaseOrderDTOsUpdate.Count > 0) |
| | | { |
| | | List<Dt_PurchaseBSTOrder>? ExistUpdatePurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsUpdate.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList(); |
| | | //æ´æ°çåæ®æ¯å¦åå¨ |
| | | if (ExistUpdatePurchase.Count == bSTPurchaseOrderDTOsUpdate.Count) |
| | | { |
| | | //åå¨çéè´å |
| | | List<Dt_PurchaseBSTOrder>? ExistpurchaseBSTOrders = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsUpdate.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).Distinct().ToList(); |
| | | |
| | | } |
| | | else |
| | | foreach (var item in bSTPurchaseOrderDTOsUpdate) |
| | | { |
| | | BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdatePurchase.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)); |
| | | return content.Error($"æªæ¾å°æå®éè´æ¶è´§å{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}"); |
| | | Dt_PurchaseBSTOrder? purchaseBSTOrderUpdate = ExistpurchaseBSTOrders.FirstOrDefault(x => x.PaperReceiptId == item.PaperReceiptId); |
| | | //å¦æè®¢åå·²åå¨åè¿è¡æ´æ¹ |
| | | if (purchaseBSTOrderUpdate != null) |
| | | { |
| | | if (purchaseBSTOrderUpdate.PurchaseOrderStatus!=InOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"éè´{nameof(purchaseBSTOrderUpdate.PaperReceiptId)}:{purchaseBSTOrderUpdate.PaperReceiptId}订åå
¥åºä¸ï¼ä¸å¯æ´æ¹"); |
| | | } |
| | | purchaseBSTOrderDetailsDel.AddRange(purchaseBSTOrderUpdate.Details); |
| | | |
| | | //æ´æ° |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x => _mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | bSTOrderDetails.ForEach(x => |
| | | { |
| | | x.PurchaseBSTOrderId = purchaseBSTOrderUpdate.Id; |
| | | }); |
| | | purchaseBSTOrderUpdate.Details = bSTOrderDetails; |
| | | purchaseBSTOrderUpdate.PaperReceiptId = item.PaperReceiptId; |
| | | purchaseBSTOrderUpdate.PaperReceiptNo = item.PaperReceiptNo; |
| | | purchaseBSTOrderUpdate.VendNo = item.VendNo; |
| | | purchaseBSTOrderUpdate.ReceiptDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ReceiptDate).DateTime; |
| | | purchaseBSTOrderUpdate.TotalProcurementLength = item.TotalProcurementLength; |
| | | purchaseUpdateBSTOrders.Add(purchaseBSTOrderUpdate); |
| | | } |
| | | else //妿ä¸åå¨åè¿è¡æ°å¢ |
| | | { |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x => _mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item); |
| | | purchaseBSTOrder.Details = bSTOrderDetails; |
| | | purchaseAddBSTOrders.Add(purchaseBSTOrder); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //å é¤ |
| | | if (bSTPurchaseOrderDTOsDel.Count>0) |
| | | { |
| | | List<Dt_PurchaseBSTOrder>? ExistDelPurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsDel.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList(); |
| | |
| | | return content.Error($"æªæ¾å°æå®éè´æ¶è´§å{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}"); |
| | | } |
| | | } |
| | | //æ´æ°æ°æ® |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(purchaseAddBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _purchaseBSTOrderDetailRepository.DeleteData(purchaseBSTOrderDetailsDel); |
| | | BaseDal.Db.UpdateNav(purchaseUpdateBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |