From 57148c2264abe80bd3b472f2980104d90dad5c61 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 13 九月 2025 08:35:32 +0800
Subject: [PATCH] 合并,接口优化等

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs |   50 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
index bb5a54d..afc0bc2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
@@ -3,8 +3,10 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -12,6 +14,7 @@
 using WIDESEA_Core.Helper;
 using WIDESEA_External.Model;
 using WIDESEA_IApprovalRepository;
+using WIDESEA_IBasicRepository;
 using WIDESEA_ICheckRepository;
 using WIDESEA_ICheckService;
 using WIDESEA_IInboundRepository;
@@ -31,7 +34,10 @@
         private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository;
         private readonly IOutboundRepository _outboundRepository;
         private readonly IStockRepository _stockRepository;
-        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository) : base(BaseDal)
+        private readonly IWarehouseRepository _warehouseRepository;
+        private readonly IReceiveOrderDetailRepository _receiveOrderDetailRepository;
+
+        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository,IWarehouseRepository warehouseRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository) : base(BaseDal)
         {
             _checkOrderRepository = checkOrderRepository;
             _unitOfWorkManage = unitOfWorkManage;
@@ -41,6 +47,8 @@
             _purchaseOrderDetailRepository = purchaseOrderDetailRepository;
             _outboundRepository = outboundRepository;
             _stockRepository = stockRepository;
+            _warehouseRepository=warehouseRepository;
+            _receiveOrderDetailRepository = receiveOrderDetailRepository;
         }
 
         /// <summary>
@@ -61,6 +69,7 @@
                 {
                     return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
                 }
+                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
                 Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                 if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt())
                 {
@@ -178,6 +187,8 @@
                 {
                     return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
                 }
+                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
+                //鑾峰彇鏀惰揣鍗�
                 Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                 if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt())
                 {
@@ -203,6 +214,7 @@
                     {
                         return content.Error($"鏈壘鍒扮己闄风被鍨�");
                     }
+                    //妫�楠岀粨鏋�
                     checkOrderResult = new Dt_CheckOrderResult()
                     {
                         Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity),
@@ -212,7 +224,7 @@
                         Note = eRPCheckResult.Note,
                         SampleCount = 0,
                     };
-                    //鑾峰彇瀵瑰簲閲囪喘鍗�
+                    //鑾峰彇瀵瑰簲閲囪喘鍗曟墸闄ゆ敹璐ф暟閲�
                     Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo);
                     purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First();
                     if (purchaseOrder == null)
@@ -226,6 +238,7 @@
                     }
                     purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity);
                 }
+                //鍒ゆ柇妫�楠屽悎鏍肩粨鏋�
                 if (checkModel.Result == CheckAcceptEnum.Accept.ToString())
                 {
                     checkOrder.Result = CheckAcceptEnum.Accept.ToString();
@@ -239,17 +252,33 @@
                     return content.Error("鏈壘鍒版楠岀被鍨�");
                 }
                 checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
+                List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>();
+                //鏍规嵁妫�楠屾暟閲忔墸闄ゅ悎鏍兼暟閲�
                 if (checkOrderResult != null)
                 {
                     checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity;
+                    //鏇存柊鏀惰揣妫�楠屽悎鏍兼爣璇�
+                    if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString())
+                    {
+                        receiveOrderDetails = receiveOrder.Details.Where(x=>x.RowNo==checkOrder.ReceiveDetailRowNo).OrderByDescending(x => x.RowNo).Take((int)checkOrderResult.Quantity).ToList();
+                        receiveOrderDetails.ForEach(x =>
+                        {
+                            x.IsCheckOk = WhetherEnum.True.ObjToInt();
+                        });
+                    }
                 }
                 else
                 {
                     checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
                 }
                 checkOrder.CheckUserName = App.User.UserName;
+                
                 _unitOfWorkManage.BeginTran();
-
+                if (receiveOrderDetails.Count > 0)
+                {
+                    _receiveOrderDetailRepository.UpdateData(receiveOrderDetails);
+                }
+                //鏇存柊閲囪喘鍗�
                 if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null)
                 {
                     BaseDal.AddData(checkOrderResult);
@@ -264,12 +293,15 @@
                     }
                     _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
                 }
-                //ERP涓婃姤
-                WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>());
-                if (!responseContent.Status)
+                if (string.IsNullOrEmpty(checkModel.CreatorCode))
                 {
-                    throw new Exception(responseContent.Message);
-                }
+                    //ERP涓婃姤
+                    WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>());
+                    if (!responseContent.Status)
+                    {
+                        throw new Exception(responseContent.Message);
+                    }
+                } 
                 checkOrder.UploadStatus = CheckUploadEnum.UploadOk.ObjToInt();
                 _checkOrderRepository.UpdateData(checkOrder);
                 _unitOfWorkManage.CommitTran();
@@ -295,7 +327,7 @@
             try
             {
                 Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId);
-                //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗�
+                //鑾峰彇璐ㄦ鍗�
                 if (checkOrder == null)
                 {
                     return content.Error($"鏈壘鍒拌璐ㄦ鍗�");

--
Gitblit v1.9.3