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