From 605e01c0782d8b2ba8d7fe317eb7bb077b7d1e59 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 11 七月 2025 15:32:12 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs |  167 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 144 insertions(+), 23 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 607da70..6a77d8a 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"
@@ -10,6 +10,7 @@
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
+using WIDESEA_External.Model;
 using WIDESEA_IApprovalRepository;
 using WIDESEA_ICheckRepository;
 using WIDESEA_ICheckService;
@@ -166,6 +167,124 @@
             }
             return content;
         }
+        public WebResponseContent CommitCheckResult(ERPCheckModel checkModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderNo == checkModel.Code);
+                //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗�
+                if (checkOrder == null)
+                {
+                    return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
+                }
+                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())
+                {
+                    return content.Error($"{receiveOrder.ReceiveOrderNo}鏀惰揣鍗曟湭瀹屾垚鏃犳硶璐ㄦ");
+                }
+                if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt())
+                {
+                    return content.Error($"璇ュ崟鎹凡缁忔楠屽畬鎴�");
+                }
+                Dt_CheckOrderResult? checkOrderResult = null;
+                Dt_PurchaseOrder? purchaseOrder = null;
+                Dt_PurchaseOrderDetail? purchaseOrderDetail = null;
+                if (checkModel.Details.Count>0)
+                {
+
+                    ERPCheckResult eRPCheckResult = checkModel.Details.FirstOrDefault();
+                    if (eRPCheckResult.Result == CheckResultEnum.Return.ToString())//閫�璐�
+                    {
+                        checkOrder.DefectedNote = eRPCheckResult.Result;
+                        checkOrder.ReturnQuantity += (float)Convert.ToDecimal(eRPCheckResult.Quantity);
+                    }
+                    else
+                    {
+                        return content.Error($"鏈壘鍒扮己闄风被鍨�");
+                    }
+                    checkOrderResult = new Dt_CheckOrderResult()
+                    {
+                        Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity),
+                        CheckOrderId = checkOrder.CheckOrderId,
+                        DefectCode = eRPCheckResult.DefectCode,
+                        Result = eRPCheckResult.Result,
+                        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)
+                    {
+                        return content.Error("鏈壘鍒板搴旀敹璐ч噰璐崟");
+                    }
+                    purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault();
+                    if (purchaseOrderDetail == null)
+                    {
+                        return content.Error("鏈壘鍒伴��璐у搴旂殑閲囪喘鍗曟槑缁�");
+                    }
+                    purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity);
+                }
+                if (checkModel.Result == CheckAcceptEnum.Accept.ToString())
+                {
+                    checkOrder.Result = CheckAcceptEnum.Accept.ToString();
+                }
+                else if (checkModel.Result == CheckAcceptEnum.UnAccept.ToString())
+                {
+                    checkOrder.Result = CheckAcceptEnum.UnAccept.ToString();
+                }
+                else
+                {
+                    return content.Error("鏈壘鍒版楠岀被鍨�");
+                }
+                checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
+                if (checkOrderResult != null)
+                {
+                    checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity;
+                }
+                else
+                {
+                    checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
+                }
+                checkOrder.CheckUserName = App.User.UserName;
+                _unitOfWorkManage.BeginTran();
+
+                if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null)
+                {
+                    BaseDal.AddData(checkOrderResult);
+                    if (purchaseOrder.PurchaseOrderStatus >= PurchaseOrderStatusEnum.Received.ObjToInt())
+                    {
+                        purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt();
+                        _purchaseOrderRepository.UpdateData(purchaseOrder);
+                    }
+                    if (purchaseOrderDetail.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Received.ObjToInt())
+                    {
+                        purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt();
+                    }
+                    _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
+                }
+                if (string.IsNullOrEmpty(checkModel.CreatorCode))
+                {
+                    //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();
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return content.Error($"{ex.Message}");
+            }
+            return content;
+        }
         /// <summary>
         /// 鎻愪氦閫佹纭缁撴灉
         /// </summary>
@@ -235,33 +354,25 @@
                         Note = checkResult.Note,
                         SampleCount = checkResult.SampleCount,
                     };
-                    if (Math.Round(checkResult.Quantity,2) == Math.Round(stockInfoDetails.Sum(x=>x.StockQuantity),2))
+                    foreach (var item in stockInfo.Details)
                     {
-                        DelStockDetails = stockInfo.Details;
-                    }
-                    else
-                    {
-                        foreach (var item in stockInfo.Details)
+                        if (checkResult.Quantity == 0)
                         {
-                            if (checkResult.Quantity == 0)
-                            {
-                                break;
-                            }
-                            else if(checkResult.Quantity< item.StockQuantity)
-                            {
-                                item.StockQuantity -= checkResult.Quantity;
-                                item.OutboundQuantity = 0;
-                                checkResult.Quantity = 0;
-                                stockInfoDetails.Add(item);
-                            }
-                            else if (checkResult.Quantity >= item.StockQuantity)
-                            {
-                                checkResult.Quantity = (float)Math.Round((checkResult.Quantity-item.StockQuantity), 2);
-                                DelStockDetails.Add(item);
-                            }
+                            break;
+                        }
+                        else if (checkResult.Quantity < item.StockQuantity)
+                        {
+                            item.StockQuantity -= checkResult.Quantity;
+                            item.OutboundQuantity = 0;
+                            checkResult.Quantity = 0;
+                            stockInfoDetails.Add(item);
+                        }
+                        else if (checkResult.Quantity >= item.StockQuantity)
+                        {
+                            checkResult.Quantity = (float)Math.Round((checkResult.Quantity - item.StockQuantity), 2);
+                            DelStockDetails.Add(item);
                         }
                     }
-                    
                 }
                 if (IsAccept == InspectAcceptEnum.Accept.ObjToInt())
                 {
@@ -299,6 +410,10 @@
                 //娓呴櫎搴撳瓨鏁伴噺
                 if (stockInfoDetails.Count>0)
                 {
+                    stockInfoDetails.ForEach(x =>
+                    {
+                        x.Status = StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt();
+                    });
                     _stockRepository.StockInfoDetailRepository.UpdateData(stockInfoDetails);
                 }
                 if (initialStockDetails.Count>0)
@@ -306,6 +421,7 @@
                     initialStockDetails.ForEach(x =>
                     {
                         x.OutboundQuantity = 0;
+                        x.Status = StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt();
                     });
                     _stockRepository.StockInfoDetailRepository.UpdateData(initialStockDetails);
                 }
@@ -317,6 +433,11 @@
                 {
                     _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                 }
+                else
+                {
+                    stockInfo.StockStatus = StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt();
+                    _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                }
                 //ERP涓婃姤
                 WebResponseContent responseContent = _checkOrderService.FeedbackInspectResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>());
                 if (!responseContent.Status)

--
Gitblit v1.9.3