From 73569b329e4ed2293a63e5a739d5fb0314fc4fd8 Mon Sep 17 00:00:00 2001
From: yangpeixing <yangpeixing@hnkhzn.com>
Date: 星期三, 01 四月 2026 15:25:45 +0800
Subject: [PATCH] 1

---
 WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  184 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 182 insertions(+), 2 deletions(-)

diff --git a/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index f23c609..64341d2 100644
--- a/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -26,6 +26,7 @@
 using System.ComponentModel;
 using System.Diagnostics.CodeAnalysis;
 using System.Linq;
+using System.Net.Sockets;
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
@@ -258,6 +259,63 @@
         }
 
         /// <summary>
+        /// 鎺ユ敹鎴愬搧锛岃緟鏂欙紝鑽按WMS浠诲姟淇℃伅
+        /// </summary>
+        /// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent ReceiveWMSCPTask([NotNull] List<WMSTaskDTO> taskDTOs)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                bool flag = false;
+                List<Dt_Task> tasks = new List<Dt_Task>();
+                List<Dt_Task> tasksOld = BaseDal.QueryData();
+                List<Dt_Router> routersAll = _routerRepository.QueryData();
+                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData();
+                foreach (var item in taskDTOs)
+                {
+                    if (tasksOld.FirstOrDefault(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
+                    {
+                        flag = true;
+                        continue;
+                    }
+                    Dt_Task task = _mapper.Map<Dt_Task>(item);
+                    task.Creater = "WMS";
+                    task.TaskState = (int)TaskStatusEnum.New;
+
+                    Dt_Router? router;
+
+                    TaskTypeGroup taskTypeGroup = item.TaskType.GetTaskTypeGroup();
+                    Dt_StationManger? stationManger;
+                    if (taskTypeGroup == TaskTypeGroup.InboundGroup)
+                    {
+                        stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.NextAddress || x.StationDeviceCode == item.SourceAddress);
+                        task.DeviceCode = stationManger.StationDeviceCode;
+                    }
+                    else
+                    {
+                        stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.NextAddress || x.StationDeviceCode == item.NextAddress);
+                        task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
+                        task.DeviceCode = task.Roadway;
+                        //鍑哄簱
+                    }
+                    tasks.Add(task);
+                }
+                BaseDal.AddData(tasks);
+
+                _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
+
+                content = (flag || tasks.Count > 0) ? WebResponseContent.Instance.OK("鎴愬姛") : WebResponseContent.Instance.Error("澶辫触");
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        /// <summary>
         /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
         /// </summary>
         /// <param name="palletCode">鎵樼洏鍙�</param>
@@ -354,7 +412,7 @@
         /// <param name="palletCode"></param>
         /// <param name="sourceAddress"></param>
         /// <returns></returns>
-        public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress)
+        public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, int heightType)
         {
             WebResponseContent content = new WebResponseContent();
             try
@@ -364,7 +422,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
                 }
-                string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
+                string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}");
                 WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                 if (responseContent != null && responseContent.Status && responseContent.Data != null)
                 {
@@ -379,6 +437,103 @@
             catch (Exception ex)
             {
                 content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+
+        public WebResponseContent CPRequestWMSTaskSimple(string palletCode, string sourceAddress, int heightType, string courceAddress)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                string responseStr = HttpHelper.Get($"{address}/api/Task/CPDeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}&courceAddress={courceAddress}");
+                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+                if (responseContent != null && responseContent.Status && responseContent.Data != null)
+                {
+                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
+                    if (taskDTO != null)
+                    {
+                        content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                    }
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        public WebResponseContent ApplyLocation(string palletCode)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                string responseStr = HttpHelper.Get($"{address}/api/Task/ApplyLocation?palletCode={palletCode}");
+                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+                if (responseContent != null && responseContent.Status && responseContent.Data != null)
+                {
+                    return responseContent;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+
+        public WebResponseContent LedShowTask(string stationCode, string palletCode, int taskType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string ledApiAddress = AppSettings.Get("LEDApiAddress");
+                if (string.IsNullOrEmpty(ledApiAddress))
+                {
+                    return WebResponseContent.Instance.Error("鏈壘鍒癓ED鏈嶅姟鍦板潃");
+                }
+                string ipAddress = ledApiAddress;
+                int port = 8888; // 榛樿绔彛
+                string sendData = $"{stationCode}|{palletCode}|{taskType}";
+
+                using (TcpClient tcpClient = new TcpClient())
+                {
+                    tcpClient.ReceiveTimeout = 5000;
+                    tcpClient.SendTimeout = 5000;
+
+                    tcpClient.Connect(ipAddress, port);
+
+                    NetworkStream stream = tcpClient.GetStream();
+                    byte[] data = Encoding.UTF8.GetBytes(sendData);
+                    stream.Write(data, 0, data.Length);
+                    stream.Flush();
+
+                    Console.WriteLine($"鉁� TCP鏁版嵁鍙戦�佹垚鍔燂細{sendData}");
+                }
+
+            }
+            catch (SocketException socketEx)
+            {
+          
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"LED鎺ㄩ�佸け璐ワ細{ex.Message}");
             }
             return content;
         }
@@ -864,5 +1019,30 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+
+        /// <summary>
+        /// 浠诲姟鎵嬪姩瀹屾垚
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<WebResponseContent> ManualTaskCompleted(int taskNum)
+        {
+            try
+            {
+                string url = "http://localhost:9290";
+                if (string.IsNullOrEmpty(url))
+                {
+                    return await Task.FromResult(WebResponseContent.Instance.Error($"鏈壘鍒癢CSApi鍦板潃,璇锋鏌ラ厤缃枃浠�"));
+                }
+                string response = HttpHelper.Post($"{url}/api/Task/TaskCompleted?taskNum=" + taskNum,taskNum.ToString());
+
+                return await Task.FromResult(JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("杩斿洖閿欒"));
+            }
+            catch (Exception ex)
+            {
+                return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message));
+            }
+        }
     }
 }

--
Gitblit v1.9.3