From 8fa91176d9a0e7e30097047f27c4ef796189af02 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 18 十二月 2025 19:45:43 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs |   14 +++++++
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs |   81 ++++++++++++++++++++++++++++++++++++----
 2 files changed, 87 insertions(+), 8 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 f4a1118..f1b5f1c 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"
@@ -19,10 +19,12 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.Helper;
+using WIDESEA_Core.Util;
 using WIDESEA_DTO.Allocate;
 using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.Outbound;
+using WIDESEA_DTO.ReturnMES;
 using WIDESEA_IBasicService;
 using WIDESEA_IOutboundService;
 using WIDESEA_Model.Models;
@@ -48,13 +50,15 @@
         private readonly IOutboundOrderDetailService _outboundOrderDetailService;
         private readonly IOutStockLockInfoService _outStockLockInfoService;
         private readonly IRepository<Dt_InterfaceLog> _interfacelogRepository;
+        private readonly HttpClientHelper _httpClientHelper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
 
         // 瀛樺偍璧勬簮ID鍙婂叾瀵瑰簲鐨勯攣瀵硅薄銆備娇鐢� ConcurrentDictionary 纭繚瀵瑰瓧鍏告搷浣滄湰韬殑绾跨▼瀹夊叏銆�
         private static readonly ConcurrentDictionary<string, object> _resourceLocks = new ConcurrentDictionary<string, object>();
 
         // 鍏ㄥ眬闈欐�侀攣锛氱敤浜庝繚鎶� _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, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository)
+        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, HttpClientHelper httpClientHelper, IUnitOfWorkManage unitOfWorkManage)
         {
             _httpClientFactory = httpClientFactory;
             _logger = logger;
@@ -69,6 +73,8 @@
             _pickingRecoreRepository = pickingRecoreRepository;
             _interfacelogRepository = interfacelogRepository;
             _inboundOrderDetailRepository = inboundOrderDetailRepository;
+            _httpClientFactory = httpClientFactory;
+            _unitOfWorkManage = unitOfWorkManage;
         }
 
         /// <summary>
@@ -318,8 +324,10 @@
                                                }).ToList();
                                             allocatefeedmodel.Details = groupedData;
 
-                                            var result = await FeedbackAllocate(allocatefeedmodel);
-                                            if (result != null && result.code == 200)
+                                            //var result = await FeedbackAllocate(allocatefeedmodel);
+                                            var result = responseModel(inboundOrder, 3, null, allocatefeedmodel);
+                                            //if (response != null && response.code == 200)
+                                            if (result != null && result.IsSuccess)
                                             {
                                                 _feedbacktomesRepository.Db.Insertable(new Dt_FeedbackToMes { OrderNo = orderNo, PalletCode = item.PalletCode, ReportStatus = 1 }).ExecuteCommand();
                                             }
@@ -358,14 +366,16 @@
                                                    }).ToList()
                                                }).ToList();
                                             feedmodel.details = groupedData;
-                                            var result = await FeedbackInbound(feedmodel);
-                                            if (result != null && result.code == 200)
+                                            //var result = await FeedbackInbound(feedmodel);
+                                            var response = responseModel(inboundOrder, 2, feedmodel);
+                                            //if (result != null && result.code == 200)
+                                            if (response != null && response.IsSuccess)
                                             {
                                                 _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();
+                                                   .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())
@@ -383,7 +393,7 @@
                                             }
                                             else
                                             {
-                                                _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2, Remark = result.message })
+                                                _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2 })
                                                 .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();
@@ -441,6 +451,61 @@
             return WebResponseContent.Instance.OK();
         }
 
+        public HttpResponseResult<MesResponseDTO> responseModel(Dt_InboundOrder order, int InterfaceType, FeedbackInboundRequestModel model = null, AllocateDto allocateDto = null)
+        {
+            HttpResponseResult<MesResponseDTO> httpResponseResult = new HttpResponseResult<MesResponseDTO>();
+            string reqCode = Guid.NewGuid().ToString();
+            string reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            string requestData = string.Empty;
+            string apiUrl = string.Empty;
+            if (model != null)
+            {
+                apiUrl = AppSettings.GetValue("AldMaterialWarehousing");
+                httpResponseResult = _httpClientHelper.Post<MesResponseDTO>(apiUrl, model.Serialize());
+                requestData = model.Serialize();
+            }
+            else
+            {
+                apiUrl = AppSettings.GetValue("AldAllocationOperation");
+                httpResponseResult = _httpClientHelper.Post<MesResponseDTO>(apiUrl, allocateDto.Serialize());
+                requestData = allocateDto.Serialize();
+            }
+            httpResponseResult.ApiUrl = apiUrl;
+            bool isSuccess = httpResponseResult.IsSuccess && httpResponseResult.Data.Code == "200";
+            string message = "鎴愬姛";
+            if (!isSuccess)
+            {
+                if (!httpResponseResult.IsSuccess)
+                {
+                    message = $"MES鎺ュ彛杩斿洖閿欒锛孒TTP浠g爜锛歿httpResponseResult.StatusCode}锛屼俊鎭細{httpResponseResult.ErrorMessage}";
+                }
+                else if (httpResponseResult?.Data?.Code != "200")
+                {
+                    message = $"璋冪敤MES鎺ュ彛澶辫触锛屼唬鐮侊細{httpResponseResult?.Data?.Code}锛屼俊鎭細{httpResponseResult?.Data?.Message}";
+                }
+            }
+            Dt_MesReturnRecord mesReturnRecord = new Dt_MesReturnRecord()
+            {
+                ApiUrl = httpResponseResult.ApiUrl,
+                InterfaceType = InterfaceType,
+                OrderId = order.Id,
+                OrderNo = order.InboundOrderNo,
+                RequestCode = reqCode,
+                RequestData = requestData,
+                FailureReason = message,
+                LastReturnTime = DateTime.Now,
+                HttpStatusCode = httpResponseResult.StatusCode.ObjToInt(),
+                ResponseData = httpResponseResult.Content,
+                ReturnType = 0,
+                ReturnCount = 1,
+                ReturnStatus = httpResponseResult.IsSuccess ? 1 : 2,
+                SuccessTime = httpResponseResult.IsSuccess ? DateTime.Now : null
+            };
+            _unitOfWorkManage.Db.Insertable(mesReturnRecord).ExecuteCommand();
+
+            return httpResponseResult;
+        }
+
         private async Task<WebResponseContent> HandleOutboundOrderBatchToMESCompletion(Dt_OutboundOrder outboundOrder, string orderNo)
         {
             // 瀹氫箟榛樿杩斿洖锛堟垚鍔熸�侊級
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_ITaskInfoService/ITaskService.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_ITaskInfoService/ITaskService.cs"
index 2095eb9..7bed7ac 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_ITaskInfoService/ITaskService.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_ITaskInfoService/ITaskService.cs"
@@ -28,7 +28,11 @@
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
+using WIDESEA_Core.Util;
 using WIDESEA_DTO;
+using WIDESEA_DTO.Allocate;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.ReturnMES;
 using WIDESEA_DTO.Stock;
 using WIDESEA_DTO.Task;
 using WIDESEA_Model.Models;
@@ -61,5 +65,15 @@
         /// <param name="stockViews"></param>
         /// <returns></returns>
        Task <WebResponseContent> TakeOutbound(List<StockViewDTO> stockViews,string outStation);
+
+        /// <summary>
+        /// 璁板綍MES鎺ュ彛杩斿洖淇℃伅
+        /// </summary>
+        /// <param name="order"></param>
+        /// <param name="InterfaceType"></param>
+        /// <param name="model"></param>
+        /// <param name="allocateDto"></param>
+        /// <returns></returns>
+        HttpResponseResult<MesResponseDTO> responseModel(Dt_InboundOrder order, int InterfaceType, FeedbackInboundRequestModel model = null, AllocateDto allocateDto = null);
     }
 }

--
Gitblit v1.9.3