From 18ca3750ce28d407afb518cadecdd29d79876c8b Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期二, 09 十二月 2025 19:40:15 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs |   73 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 10 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs"
index 458cce5..3f48801 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs"
@@ -41,6 +41,7 @@
         private readonly IRepository<Dt_StockInfoDetail> _stockInfoDetailRepository;
         private readonly IRepository<Dt_StockInfo> _stockInfoRepository;
         private readonly IRepository<Dt_InboundOrder> _inboundOrderRepository;
+        private readonly IRepository<Dt_InboundOrderDetail> _inboundOrderDetailRepository;
         private readonly IRepository<Dt_PickingRecord> _pickingRecoreRepository;
         private readonly IMaterialUnitService _materialUnitService;
         private readonly IOutboundOrderService _outboundOrderService;
@@ -53,7 +54,7 @@
 
         // 鍏ㄥ眬闈欐�侀攣锛氱敤浜庝繚鎶� _resourceLocks 瀛楀吀涓� GetOrAdd 鎴� TryRemove 鏃剁殑绔炰簤
         private static readonly object _globalLocker = new object();
-        public InvokeMESService(IHttpClientFactory httpClientFactory, ILogger<InvokeMESService> logger, IRepository<Dt_FeedbackToMes> feedbacktomesRepository, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_InboundOrder> inboundOrderRepository, IOutboundOrderService outboundOrderService, IOutboundOrderDetailService outboundOrderDetailService, IOutStockLockInfoService outStockLockInfoService, IMaterialUnitService materialUnitService, IRepository<Dt_PickingRecord> pickingRecoreRepository, IRepository<Dt_InterfaceLog> interfacelogRepository)
+        public InvokeMESService(IHttpClientFactory httpClientFactory, ILogger<InvokeMESService> logger, IRepository<Dt_FeedbackToMes> feedbacktomesRepository, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_InboundOrder> inboundOrderRepository, IOutboundOrderService outboundOrderService, IOutboundOrderDetailService outboundOrderDetailService, IOutStockLockInfoService outStockLockInfoService, IMaterialUnitService materialUnitService, IRepository<Dt_PickingRecord> pickingRecoreRepository, IRepository<Dt_InterfaceLog> interfacelogRepository, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository)
         {
             _httpClientFactory = httpClientFactory;
             _logger = logger;
@@ -67,6 +68,7 @@
             _materialUnitService = materialUnitService;
             _pickingRecoreRepository = pickingRecoreRepository;
             _interfacelogRepository = interfacelogRepository;
+            _inboundOrderDetailRepository = inboundOrderDetailRepository;
         }
 
         /// <summary>
@@ -245,7 +247,7 @@
         public async Task<WebResponseContent> BatchOrderFeedbackToMes(List<string> orderNos, int inout)
         {
             try
-            {         
+            {
 
                 if (inout == 1)
                 {
@@ -260,6 +262,15 @@
                             var unreports = stockinfos.Where(x => !feeds.Contains(x.PalletCode)).ToList();
                             if (unreports != null && !unreports.Any())
                             {
+                                _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1, Remark = "" })
+                                                 .Where(it => it.InboundOrderNo == orderNo).ExecuteCommand();
+                                var inboundOrder = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().First(x => x.InboundOrderNo == orderNo);
+                                if (inboundOrder != null)
+                                {
+                                    _inboundOrderDetailRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 1 })
+                                         .Where(it => it.OrderId == inboundOrder.Id).ExecuteCommand();
+                                }
+
                                 return WebResponseContent.Instance.Error("娌℃湁闇�瑕佸洖浼犵殑鏁版嵁");
                             }
                             foreach (var item in unreports)
@@ -351,6 +362,30 @@
                                             if (result != null && result.code == 200)
                                             {
                                                 _feedbacktomesRepository.Db.Insertable(new Dt_FeedbackToMes { OrderNo = orderNo, PalletCode = item.PalletCode, ReportStatus = 1 }).ExecuteCommand();
+
+                                                var feedstockinfos = _stockInfoRepository.Db.Queryable<Dt_StockInfo>("info").Where(info => info.StockStatus == 6)
+                                           .Where(it => SqlFunc.Subqueryable<Dt_StockInfoDetail>().Where(s => s.StockId == it.Id && s.OrderNo == orderNo).Any())
+                                           .ToList();
+                                                var feedstomes = _feedbacktomesRepository.Db.Queryable<Dt_FeedbackToMes>().Where(x => x.OrderNo == orderNo && x.ReportStatus == 1).Select(o => o.PalletCode).ToList();
+                                                var feedunreports = feedstockinfos.Where(x => !feedstomes.Contains(x.PalletCode)).ToList();
+                                                if (feedunreports != null && !feedunreports.Any())
+                                                {
+                                                    _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1, Remark = "" })
+                                                     .Where(it => it.InboundOrderNo == orderNo).ExecuteCommand();
+                                                    var feedinboundOrder = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().First(x => x.InboundOrderNo == orderNo);
+                                                    if (feedinboundOrder != null)
+                                                    {
+                                                        _inboundOrderDetailRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 1 })
+                                                             .Where(it => it.OrderId == feedinboundOrder.Id).ExecuteCommand();
+                                                    }
+                                                }
+                                            }
+                                            else
+                                            {
+                                                _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2, Remark = result.message })
+                                                .Where(it => it.Id == inboundOrder.Id).ExecuteCommand();
+                                                _inboundOrderDetailRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 2 })
+                                              .Where(it => it.OrderId == inboundOrder.Id).ExecuteCommand();
                                             }
                                         }
                                     }
@@ -640,12 +675,21 @@
             var mesResult = await FeedbackOutbound(feedModel);
             if (mesResult == null || mesResult.code != 200)
             {
+                var messages = mesResult?.message??"";
 
+                await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
+                   .SetColumns(x => new Dt_OutboundOrder
+                   {
+                       ReturnToMESStatus = 2,
+                       Remark = messages, 
+                   })
+                   .Where(x => x.OrderNo == orderNo)
+                   .ExecuteCommandAsync();
                 // 鏇存柊鏄庣粏涓哄洖浼犲け璐ワ紙ReturnToMESStatus=2锛�
                 await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
                     .SetColumns(it => new Dt_OutboundOrderDetail
                     {
-                        ReturnToMESStatus = 2,
+                        ReturnToMESStatus = 2,                       
                         documentsNO = documentNo,
                     })
                     .Where(x => detailIds.Contains(x.Id))
@@ -653,10 +697,7 @@
 
                 return (flowControl: false, value: WebResponseContent.Instance.Error($"鍥炰紶MES澶辫触"));
             }
-            foreach (var record in pickingRecords.Where(x => detailIds.Contains(x.OrderDetailId)).ToList())
-            {
-                record.ReturnToMESStatus = 1;
-            }
+          
             var updates = pickingRecords.Where(x => detailIds.Contains(x.OrderDetailId)).ToList();
             updates.ForEach(x =>
             {
@@ -686,7 +727,7 @@
                 await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
                     .SetColumns(x => new Dt_OutboundOrder
                     {
-                        ReturnToMESStatus = 1,
+                        ReturnToMESStatus = 1,Remark="",
                         OrderStatus = newStatus
                     })
                     .Where(x => x.OrderNo == orderNo)
@@ -717,6 +758,7 @@
                         .SetColumns(it => new Dt_OutboundOrder
                         {
                             ReturnToMESStatus = 1,
+                            Remark = "",
                             OrderStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt(),
                         })
                         .Where(x => x.OrderNo == orderNo)
@@ -724,7 +766,7 @@
                 }
             }
 
-            return (flowControl: true, value: null);
+            return (flowControl: true, value: WebResponseContent.Instance.OK($"鍥炰紶MES鎴愬姛锛屽崟鎹彿锛歿orderNo}"));
         }
 
         private async Task<WebResponseContent> HandleOutboundOrderToMESCompletion(Dt_OutboundOrder outboundOrder, string orderNo)
@@ -846,7 +888,7 @@
                             .ExecuteCommandAsync();
 
                         await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
-                            .SetColumns(x => x.ReturnToMESStatus == 1)
+                            .SetColumns(it => new Dt_OutboundOrder { ReturnToMESStatus = 1, Remark = "" })
                             .Where(x => x.OrderNo == orderNo)
                             .ExecuteCommandAsync();
 
@@ -861,6 +903,17 @@
                     {
                         var errorMsg = $"OrderNo: {orderNo} 鍥炰紶MES澶辫触锛岄敊璇爜锛歿result.code}锛岄敊璇俊鎭細{result.message ?? "鏃�"}";
                         _logger.LogError(errorMsg);
+
+                        await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
+                          .SetColumns(x => x.ReturnToMESStatus ==2)
+                          .Where(x => x.OrderId == outboundOrder.Id)
+                          .ExecuteCommandAsync();
+
+                        await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
+                            .SetColumns(it => new Dt_OutboundOrder { ReturnToMESStatus = 2, Remark = result.message })
+                            .Where(x => x.OrderNo == orderNo)
+                            .ExecuteCommandAsync();
+
                         return WebResponseContent.Instance.Error(errorMsg);
                     }
                 }

--
Gitblit v1.9.3