From 8ae1a147aefadbb255edde088e7c12535c5f02d4 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 08 十月 2025 20:35:51 +0800
Subject: [PATCH] 完善输送线和堆垛机任务处理逻辑在CommonConveyorLine_NewCW.cs`中添加版本注释和设备属性定义,增强设备连接状态检查与命令发送逻辑。 修改 CommonConveyorLine_GWJob.cs`的任务查询逻辑,确保在特定条件下不下发新任务。在CommonConveyorLine_NewCWJob.cs中实现请求入库和出库的处理逻辑,确保任务状态更新。在 RequestInbound.cs中添加出库任务和新任务的处理逻辑,增强异常处理。 在CommonStackerCrane_NewCWJob.cs中实现堆垛机任务完成事件的处理,确保状态更新和前端通知。新增设备型号修改相关常量和 DTO 类,更新服务接口和实现逻辑,确保设备型号修改请求的正确处理。修改 Dt_TaskService.cs中的任务处理逻辑,确保出库任务的库存判断和状态更新。

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs |  139 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 126 insertions(+), 13 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
index 40ca493..95298d9 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -1,30 +1,75 @@
-锘縰sing Masuit.Tools;
+锘縰sing AngleSharp.Io;
+using LogLibrary.Log;
+using Masuit.Tools;
+using Newtonsoft.Json;
 using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.Const;
 using WIDESEA_DTO;
+using WIDESEA_DTO.MOM;
+using WIDESEA_IServices;
 using WIDESEA_IStoragIntegrationServices;
 
 namespace WIDESEA_StoragIntegrationServices;
 
 public class AgingInOrOutInputService : IAgingInOrOutInputService
 {
+    private readonly LogFactory LogFactory = new LogFactory();
+    private readonly ISys_ConfigService _configService;
+
+    public AgingInOrOutInputService(ISys_ConfigService configRepository)
+    {
+        _configService = configRepository;
+    }
+
     /// <summary>
     /// 闈欑疆\闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�
     /// </summary>
     /// <param name="input">鍏ュ簱鏁版嵁</param>
     /// <returns></returns>
-    public async Task<dynamic> GetOCVInputAsync(AgingInputDto input)
+    public async Task<WebResponseContent> GetOCVInputAsync(AgingInputDto input)
     {
+        WebResponseContent content = new WebResponseContent();
         try
         {
-            //TODO: Implement the logic to get the aging input for the given id
-            var inputJson = input.ToDictionary();
-            var x = await HttpsClient.PostAsync("https://localhost:7274/api/AgingInOrOutInput", inputJson);
+            input.SessionId = Guid.NewGuid().ToString();
+            input.EmployeeNo = "MITest";
+            input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input); // Specify the namespace explicitly
+            var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
+            var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
+            var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.AgingInput)?.ConfigValue;
+            if (wmsBase == null || ipAddress == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+            var wmsIpAddress = wmsBase + ipAddress;
+
+            var result =await HttpsClient.PostAsync(wmsIpAddress, inputJson);
+            content.OK(data: result);
+
+            var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.ToString());
+            if (!respone.Success)
+            {
+                MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, respone.MOMMessage, SysConfigConst.AgingInput);
+            }
+            else
+            {
+                MoMErrorMsg.DeleteMoMErrorMsg(0, input.TrayBarcode);
+            }
+
+            LogFactory.GetLog("闈欑疆闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�").Info(true, $"\r\r--------------------------------------");
+            LogFactory.GetLog("闈欑疆闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�").Info(true, input.TrayBarcode);
+            LogFactory.GetLog("闈欑疆闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�").Info(true, result);
         }
         catch (Exception err)
         {
-            Console.WriteLine(err.Message.ToString());
+            //MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.AgingInput);
+            //Console.WriteLine(err.Message.ToString());
+            LogFactory.GetLog("闈欑疆闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�").Error(true, $"\r\r--------------------------------------");
+            LogFactory.GetLog("闈欑疆闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�").Error(true, err.StackTrace);
         }
-        return Task.FromResult<dynamic>(null);
+        return content;
     }
 
     /// <summary>
@@ -32,18 +77,86 @@
     /// </summary>
     /// <param name="input">鍑哄簱鏁版嵁</param>
     /// <returns></returns>
-    public async Task<dynamic> GetOCVOutputAsync(AgingOutputDto input)
+    public async Task<WebResponseContent> GetOCVOutputAsync(AgingOutputDto input)
     {
+        WebResponseContent content = new WebResponseContent();
         try
         {
-            //TODO: Implement the logic to get the aging input for the given id
-            var inputJson = input.ToDictionary();
-            var x = await HttpsClient.PostAsync("https://localhost:7274/api/AgingInOrOutInput", inputJson);
+            input.SessionId = Guid.NewGuid().ToString();
+            input.EmployeeNo = "MITest";
+            input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input); // Specify the namespace explicitly
+            var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
+            var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
+            var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.AgingOutput)?.ConfigValue;
+            if (wmsBase == null || ipAddress == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+            var wmsIpAddress = wmsBase + ipAddress;
+
+            var result = HttpsClient.PostAsync(wmsIpAddress, inputJson).Result;
+
+            var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.ToString());
+            if (!respone.Success)
+            {
+                MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, respone.MOMMessage, SysConfigConst.AgingOutput);
+            }
+            else
+            {
+                MoMErrorMsg.DeleteMoMErrorMsg(0, input.TrayBarcode);
+            }
+
+            content.OK(data: result);
+            LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Info(true, $"\r\r--------------------------------------");
+            LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Info(true, input.TrayBarcode);
+            LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Info(true, result);
         }
         catch (Exception err)
         {
-            Console.WriteLine(err.Message.ToString());
+            //MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.AgingOutput);
+            //Console.WriteLine(err.Message.ToString());
+            LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Error(true, $"\r\r--------------------------------------");
+            LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Error(true, err.StackTrace);
+            content.Error(err.Message);
         }
-        return Task.FromResult<dynamic>(null);
+        return content;
+    }
+
+
+    public async Task<WebResponseContent> Change(EqptRunDto input)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            input.SessionId = Guid.NewGuid().ToString();
+            input.EmployeeNo = "MITest";
+            input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input); // Specify the namespace explicitly
+            var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
+            var MOMBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
+            var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.EqptRun)?.ConfigValue;
+            if (MOMBase == null || ipAddress == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+            var MOMIpAddress = MOMBase + ipAddress;
+
+            var result = HttpsClient.PostAsync(MOMIpAddress, inputJson).Result;
+
+            //var respone = JsonConvert.DeserializeObject<EqptRunDTO>(result.ToString());
+            
+            content.OK(data: result);
+            LogFactory.GetLog("鎹㈠瀷").Info(true, $"\r\r--------------------------------------");
+            LogFactory.GetLog("鎹㈠瀷").Info(true, input.EquipmentCode);
+            LogFactory.GetLog("鎹㈠瀷").Info(true, result);
+        }
+        catch (Exception err)
+        {
+            LogFactory.GetLog("鎹㈠瀷").Error(true, $"\r\r--------------------------------------");
+            LogFactory.GetLog("鎹㈠瀷").Error(true, err.StackTrace);
+            content.Error(err.Message);
+        }
+        return content;
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3