From 2b25f973bb6d72ce6971d6f9c3cdccf51b7962ab Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 06 九月 2025 14:27:08 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhiHuiQiCe/LongDeLiLiKu

---
 项目代码/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs |   50 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 48 insertions(+), 2 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs"
index 9d625d1..0c37854 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs"
@@ -6,7 +6,9 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_BasicRepository;
+using WIDESEA_Common.MaterielEnum;
 using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -57,21 +59,47 @@
                 List<BSTPurchaseOrderDTO> bSTPurchaseOrderDTOsUpdate = bSTPurchaseOrderDTOs.Where(x => x.Way == 2).ToList();
                 //鍒犻櫎
                 List<BSTPurchaseOrderDTO> bSTPurchaseOrderDTOsDel = bSTPurchaseOrderDTOs.Where(x => x.Way == 3).ToList();
-
+                //鑾峰彇鎵�鏈夌墿鏂� 
+                List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt() && x.MaterialSourceId != 0);
+                //鑾峰彇鎵�鏈変緵搴斿晢
+                List<Dt_SupplierInfo> supplierInfos = _basicRepository.SupplierInfoRepository.QueryData(x => x.InvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt());
+                
                 List<Dt_PurchaseBSTOrder> purchaseAddBSTOrders = new List<Dt_PurchaseBSTOrder>();
                 List<Dt_PurchaseBSTOrder> purchaseUpdateBSTOrders = new List<Dt_PurchaseBSTOrder>();
                 List<Dt_PurchaseBSTOrder> purchaseDeleteBSTOrders = new List<Dt_PurchaseBSTOrder>();
                 if (bSTPurchaseOrderDTOsAdd.Count>0)
                 {
-                    //鍒ゆ柇閲嶅鎻掑叆
+                    //鍒ゆ柇渚涘簲鍟�
+                    BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsAdd.FirstOrDefault(x => !supplierInfos.Select(x=>x.SupplierCode).Contains(x.VendNo));
+                    if (bSTPurchaseOrderDTO != null)
+                    {
+                        return content.Error($"閲囪喘{nameof(BSTPurchaseOrderDTO.PaperReceiptNo)}:{bSTPurchaseOrderDTO.PaperReceiptNo}渚涘簲鍟�:{bSTPurchaseOrderDTO.VendNo}涓嶅瓨鍦�");
+                    }
+                    //鍒ゆ柇鍗曟嵁
                     Dt_PurchaseBSTOrder? ExistAddPurchase = OldpurchaseBSTOrders.FirstOrDefault(x => bSTPurchaseOrderDTOsAdd.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId));
                     if (ExistAddPurchase != null)
                     {
                         return content.Error($"閲囪喘鏀惰揣Id{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{ExistAddPurchase.PaperReceiptId}宸插瓨鍦�");
                     }
+                    //楠岃瘉鏉$爜閲嶅
+                    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));
+                    if (ExistDetail!=null)
+                    {
+                        return content.Error($"閲囪喘鏉$爜{nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}宸插瓨鍦�");
+                    }
+                    //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
+                    PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId));
+                    if (paperReceiptDetailsItem!=null)
+                    {
+                        return content.Error($"閲囪喘鏉$爜{nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}鐗╂枡Id:{paperReceiptDetailsItem.MaterialId}涓嶅瓨鍦�");
+                    }
                     foreach (var item in bSTPurchaseOrderDTOsAdd)
                     {
+                        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);
                     }
                 }
@@ -90,10 +118,28 @@
                         return content.Error($"鏈壘鍒版寚瀹氶噰璐敹璐у崟{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}");
                     }
                 }
+                if (bSTPurchaseOrderDTOsDel.Count>0)
+                {
+                    List<Dt_PurchaseBSTOrder>? ExistDelPurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsDel.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList();
+                    //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦�
+                    if (ExistDelPurchase.Count == bSTPurchaseOrderDTOsDel.Count)
+                    {
+
+                    }
+                    else
+                    {
+                        BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsDel.FirstOrDefault(x => !ExistDelPurchase.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId));
+                        return content.Error($"鏈壘鍒版寚瀹氶噰璐敹璐у崟{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}");
+                    }
+                }
+                _unitOfWorkManage.BeginTran();
+                BaseDal.Db.InsertNav(purchaseAddBSTOrders).Include(x => x.Details).ExecuteCommand();
+                _unitOfWorkManage.CommitTran();
                 content.OK("鎺ユ敹鎴愬姛");
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 content.Error(ex.Message);
             }
             return content;

--
Gitblit v1.9.3