From 1440114cfae626c192ef59775e9d7829db634c1c Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 20:20:20 +0800
Subject: [PATCH] 上传

---
 /dev/null                                                                     |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs  |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs       |   42 +++++++------
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs    |  116 ++++++++++++++++++++++++++++++++++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs |   10 +++
 6 files changed, 150 insertions(+), 21 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 5e86d4c..bb5a54d 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,121 @@
             }
             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);
+                }
+                //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>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs"
index ab7efd9..8e39776 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs"
@@ -5,6 +5,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_External.Model;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_ICheckService
@@ -20,6 +21,7 @@
         /// <returns></returns>
         WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult, int IsAccept = 0);
         WebResponseContent CommitInspectResult(int checkOrderId, Dt_CheckOrderResult checkResult, int IsAccept = 0);
+        WebResponseContent CommitCheckResult(ERPCheckModel checkModel);
         /// <summary>
         /// 鑾峰彇妫�楠屼俊鎭�
         /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj"
index 9987a92..c6844cc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj"
@@ -8,6 +8,7 @@
 
   <ItemGroup>
     <ProjectReference Include="..\WIDESEA_CheckRepository\WIDESEA_CheckRepository.csproj" />
+    <ProjectReference Include="..\WIDESEA_External\WIDESEA_External.csproj" />
   </ItemGroup>
 
 </Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs"
index 0fb7cf1..8f54ef4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs"
@@ -172,17 +172,18 @@
                 newTask.TaskId = taskId;
                 Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
                 //涓婁紶ERP
-                //WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
+                WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
                 _proInStatisticsService.SaveStatic(bagInfoModel);
-                //if (!responseContent.Status)
-                //{
-                //    mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
-                //    mesProInOrder.Remark = responseContent.Message;
-                //}
-                //else
-                //{
+                if (!responseContent.Status)
+                {
+                    //mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
+                    //mesProInOrder.Remark = responseContent.Message;
+                    throw new Exception(responseContent.Message);
+                }
+                else
+                {
                     mesProInOrder.UpErpStatus = WhetherEnum.True.ObjToInt();
-                //}
+                }
                 Db.InsertNav(mesProInOrder).Include(x => x.Details).ExecuteCommand();
                 _unitOfWorkManage.CommitTran();
                 //鎺ㄩ�佷换鍔�
@@ -281,18 +282,19 @@
             };
             
             _unitOfWorkManage.BeginTran();
-            Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
-            ////涓婁紶ERP
-            //WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
-            //if (!responseContent.Status)
-            //{
-            //    mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
-            //    mesProInOrder.Remark = responseContent.Message;
-            //}
-            //else
-            //{
+            //涓婁紶ERP
+            WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
+            if (!responseContent.Status)
+            {
+                //mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
+                //mesProInOrder.Remark = responseContent.Message;
+                return WebResponseContent.Instance.Error($"{responseContent.Message}");
+            }
+            else
+            {
                 mesProInOrder.UpErpStatus = WhetherEnum.True.ObjToInt();
-            //}
+            }
+            Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
             Db.InsertNav(mesProInOrder).Include(x => x.Details).ExecuteCommand();
             _unitOfWorkManage.CommitTran();
             return WebResponseContent.Instance.OK("鎺ユ敹鎴愬姛");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
index e63332c..d9fe9c0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
@@ -16,6 +16,7 @@
 using WIDESEA_DTO.Stock;
 using WIDESEA_External.Model;
 using WIDESEA_External.ERPService;
+using WIDESEA_ICheckService;
 
 namespace WIDESEA_WMSServer.Controllers.MES
 {
@@ -29,11 +30,13 @@
         private readonly IOutboundService _outboundService;
         private readonly ITaskService _taskService;
         private readonly IInvokeERPService _invokeERPService;
-        public MesController(IOutboundService outboundService, ITaskService taskService,IInvokeERPService invokeERPService)
+        private readonly ICheckOrderResultService _checkOrderResultService;
+        public MesController(IOutboundService outboundService, ITaskService taskService,IInvokeERPService invokeERPService, ICheckOrderResultService checkOrderResultService)
         {
             _outboundService = outboundService;
             _taskService = taskService;
             _invokeERPService = invokeERPService;
+            _checkOrderResultService=checkOrderResultService;
         }
 
         /// <summary>
@@ -284,6 +287,11 @@
         [HttpPost, Route("CheckResultReturn"), AllowAnonymous, MethodParamsValidate]
         public MesResponseContent CheckResultReturn([FromBody] Root<ERPCheckModel>  model)
         {
+            WebResponseContent responseContent = _checkOrderResultService.CommitCheckResult(model.Content);
+            if (!responseContent.Status)
+            {
+                return MesResponseContent.Instance.Error(responseContent.Message);
+            }
             string content = _invokeERPService.InvokeCheckOrderApi(model.Content);
             ErpRequestContent requestContent = content.DeserializeObject<ErpRequestContent>();
             if (requestContent.res != 1)
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/~$\345\240\206\345\236\233\346\234\272\345\222\214\346\217\220\345\215\207\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/~$\345\240\206\345\236\233\346\234\272\345\222\214\346\217\220\345\215\207\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx"
deleted file mode 100644
index ca3b0de..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/~$\345\240\206\345\236\233\346\234\272\345\222\214\346\217\220\345\215\207\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/~$\351\230\273\347\204\212\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/~$\351\230\273\347\204\212\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx"
deleted file mode 100644
index c5ee44d..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/~$\351\230\273\347\204\212\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx"
+++ /dev/null
Binary files differ

--
Gitblit v1.9.3