From fb745c842df36edc5101291a7f239c11c97bcc2f Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 11 九月 2025 16:46:33 +0800
Subject: [PATCH] 最新代码更新,BST,MES部分

---
 项目代码/WMS/WMSServices/WIDESEA_InboundService/PurchaseBSTOrderService.cs |   65 +++++++++++++++++++++++++-------
 1 files changed, 51 insertions(+), 14 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 0c37854..b5470ba 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"
@@ -15,7 +15,7 @@
 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;
@@ -67,6 +67,8 @@
                 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)
                 {
                     //鍒ゆ柇渚涘簲鍟�
@@ -83,41 +85,73 @@
                     }
                     //楠岃瘉鏉$爜閲嶅
                     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();
@@ -132,8 +166,11 @@
                         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("鎺ユ敹鎴愬姛");
             }

--
Gitblit v1.9.3