From 10791386189bc9382fbcb9e8819cd80c6e708976 Mon Sep 17 00:00:00 2001 From: czw <selecti@yeah.net> Date: 星期一, 07 七月 2025 11:18:52 +0800 Subject: [PATCH] 1 --- HnSx/Build/Project/代码/VS自定义类/AutoThread.cs | 1237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1,212 insertions(+), 25 deletions(-) diff --git "a/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" "b/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" index 603683d..94d19bc 100644 --- "a/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" +++ "b/HnSx/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" @@ -29,6 +29,18 @@ using ServiceStack.Messaging.Rcon; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; +using System.Security.RightsManagement; +using static GZ.Projects.HnSx.Clloc.sendTask; +using static GZ.Projects.HnSx.Clloc.modifyTaskPriority; +using static GZ.Projects.HnSx.Clloc.stockInException; +using static GZ.Projects.HnSx.Clloc.taskFeedback; +using static GZ.Projects.HnSx.Clloc.stockInInteraction; +using static GZ.Projects.HnSx.Clloc.cancelTask; +using static GZ.Projects.HnSx.Clloc.palletStackerInteraction; +using static GZ.Projects.HnSx.Clloc.putConveyorTask; +using static GZ.Projects.HnSx.Clloc.reportWeightinfo; +using System.Threading.Channels; +using static GZ.Projects.HnSx.Clloc; namespace GZ.Projects.HnSx { @@ -106,14 +118,12 @@ /// </summary> /// <param name="tag"></param> /// <param name="action"></param> - public void ThreadSettingInit(Tag tag, Action action) + public void ThreadSettingInit(Tag tag) { - } public async void ThreadwebSoc() { - List<object> list = new List<object>(); //read Alldata from database //灏嗘暟鎹紦瀛樺埌鍐呭瓨銆� try @@ -126,9 +136,11 @@ { Thread.Sleep(1000); Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>GGG{i}"); + LogHelper.Info($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>GGG{i}"); var b = WebSocketClientWithReconnect.Instance?.SendAsync($"He >>GGG{i}").Result; Console.WriteLine("鍙戦�瀹屾垚锛侊紒" + b); } + Thread.Sleep(1000); } } catch (Exception ex) @@ -144,11 +156,14 @@ if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { Console.WriteLine($"ip= {ip.ToString()}"); - //new HttpServer(ip.ToString()).HttpServerRun(); + new HttpServer(ip.ToString()).HttpServerRun(); //new TcpServer(ip.ToString()); - //var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync(); - new WebSocketClientWithReconnect($"ws://{ip.ToString()}:8809/socket").StartAsync(); - + //var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync(); http://10.20.66.121:18080 + new WebSocketClientWithReconnect($"ws://10.20.66.121:18080/socket").StartAsync(); + WebSocketClientWithReconnect.Instance.OnMessageReceived += (msg) => + { + reportWeightinfo.channel.Writer.TryWrite(JsonConvert.DeserializeObject<ReportWeightInfoResponse>(msg)); + }; break; } } @@ -159,12 +174,13 @@ } public class HttpServer { + public static readonly HttpHelper apiHelper = new HttpHelper(); System.Net.HttpListener HttpSvcHost = null; public static string _listenerPrefix = ""; public HttpServer(string ip) { - _listenerPrefix = $"http://{ip}:8807/"; + _listenerPrefix = $"http://{ip}:8808/"; } public void HttpServerRun() { @@ -227,6 +243,9 @@ Console.WriteLine(apth + "<<>>" + DateTime.Now.Subtract(data).TotalMilliseconds); } } + public static List<SendTaskHeader> lstr = new List<SendTaskHeader>(); + public static List<PutConveyorTaskHeader> putConveyorTasks = new List<PutConveyorTaskHeader>(); + private System.String HttpSvcListenerCallback_he(System.String method, System.String path, System.String requestJson, out System.Net.HttpStatusCode statusCode) { try @@ -237,71 +256,380 @@ { switch (path) { + case "/api/Wcs/GetTask": + { + statusCode = System.Net.HttpStatusCode.OK; + return JsonConvert.SerializeObject(new + { + 鍑哄叆绉诲簱浠诲姟 = lstr, + 绠变綋鍒嗗彂浠诲姟 = putConveyorTasks + }); + break; + } + case "/api/Wcs/RemoveTask": + { + statusCode = System.Net.HttpStatusCode.OK; + lstr.RemoveAll(x => x.PalletId == requestJson); + putConveyorTasks.RemoveAll(x => x.PalletId == requestJson); + break; + } ///浠诲姟涓嬪彂--WMS-->WC case "/api/Wcs/sendTask": { statusCode = System.Net.HttpStatusCode.OK; - - return JsonConvert.SerializeObject(""); + var req = JsonConvert.DeserializeObject<SendTaskRequest>(requestJson); + if (req.Data == null || lstr.Find(x => x.GroupTaskSequence == req.Data.Header.GroupTaskSequence && x.GroupTaskId == req.Data.Header.GroupTaskId) != null) + return JsonConvert.SerializeObject(new SendTaskResponse + { + Response = new ResponseData + { + Return = new ReturnInfo + { + ReturnCode = "0001", + ReturnDesc = req.Data == null ? "鏃犱换鍔′笅鍙戯紒" : "浠诲姟閲嶅涓嬪彂锛�, + ReturnFlag = "0" + } + } + }); + lstr.Add(req.Data.Header); + return JsonConvert.SerializeObject(new SendTaskResponse + { + Response = new ResponseData + { + Return = new ReturnInfo + { + ReturnCode = "0000", + ReturnDesc = "ok", + ReturnFlag = "1" + } + } + }); } ///鍏ュ簱寮傚父涓婃姤銆�WCS-->WMS case "/api/Wcs/stockInException": { statusCode = System.Net.HttpStatusCode.OK; - - return JsonConvert.SerializeObject(""); + var f = string.IsNullOrEmpty(requestJson) ? lstr.FirstOrDefault() : lstr.Find(x => x.PalletId == requestJson); + var str = apiHelper.Post("http://10.20.66.121:18080/datahubjson/wcs/?method=STOCKINEXCEPTION", JsonConvert.SerializeObject(new StockInExceptionRequest + { + Data = new StockInExceptionData + { + Header = new StockInExceptionHeader + { + OrganizationId = f.OrganizationId, + WarehouseId = f.WarehouseId, + GroupTaskId = f.GroupTaskId, + GroupTaskSequence = f.GroupTaskSequence, + PalletId = f.PalletId, + AddTime = f.AddTime, + AddWho = f.AddWho, + Reason = "搴撲綅鏈夎揣涓嶅彲鐢�, + ReasonCode = "01" + } + } + })); + return str; } ///浠诲姟鐘舵�鍙嶉 WCS-->WM case "/api/Wcs/taskFeedback": { statusCode = System.Net.HttpStatusCode.OK; - + //foreach (var statu in new List<string> { "", "" }) + { + var f = string.IsNullOrEmpty(requestJson) ? lstr.FirstOrDefault() : lstr.Find(x => x.PalletId == requestJson); + var str = apiHelper.Post("http://10.20.66.121:18080/datahubjson/wcs/?method=TASKFEEDBACK", JsonConvert.SerializeObject(new TaskFeedbackRequest + { + Data = new TaskFeedbackData + { + Header = new TaskFeedbackHeader + { + OrganizationId = f.OrganizationId, + WarehouseId = f.WarehouseId, + GroupTaskId = f.GroupTaskId, + GroupTaskSequence = f.GroupTaskSequence, + PalletId = f.PalletId, + FmLocation = f.FmLocation, + FmPosition = f.FmPosition, + ToLocation = f.ToLocation, + ToPosition = f.ToPosition, + TaskStatus = "80", + TaskType = f.TaskType, + CloseTime = DateTime.Now, + CloseWho = f.AddWho + } + } + })); + } return JsonConvert.SerializeObject(""); } ///鍏ュ簱浜や簰 銆俉CS-->WMS case "/api/Wcs/stockInInteraction": { statusCode = System.Net.HttpStatusCode.OK; - - return JsonConvert.SerializeObject(""); + var str = apiHelper.Post("http://10.20.66.121:18080/datahubjson/wcs/?method=STOCKININTERACTION", JsonConvert.SerializeObject(new StockInInteractionRequest + { + Data = new StockInInteractionData + { + Header = new StockInInteractionHeader + { + PalletId = "TP9901", + GrossWeight = 99, + PalletWidth = 99, + FmLocation = "", + FmPosition = "", + AddTime = DateTime.Now, + AddWho = "" + } + } + })); + return str; } ///浠诲姟鍙栨秷銆�WMS-->WCS case "/api/Wcs/cancelTask": { statusCode = System.Net.HttpStatusCode.OK; - - return JsonConvert.SerializeObject(""); + var req = JsonConvert.DeserializeObject<CancelTaskRequest>(requestJson); + var task = lstr.Find(x => x.GroupTaskId == req.Data.Header.GroupTaskId && x.GroupTaskSequence == req.Data.Header.GroupTaskSequence); + if (task == null) + return JsonConvert.SerializeObject(new CancelTaskResponse + { + Response = new ResponseData + { + Return = new ReturnInfo + { + ReturnCode = "0001", + ReturnDesc = "浠诲姟涓嶅瓨鍦紒锛侊紒", + ReturnFlag = "0" + } + } + }); + lstr.Remove(task); + return JsonConvert.SerializeObject(new CancelTaskResponse + { + Response = new ResponseData + { + Return = new ReturnInfo + { + ReturnCode = "0000", + ReturnDesc = "", + ReturnFlag = "1" + } + } + }); } /// 纰熺洏鏈虹敵璇蜂换鍔°� WCS-->WMS case "/api/Wcs/palletStackerInteraction": { statusCode = System.Net.HttpStatusCode.OK; - - return JsonConvert.SerializeObject(""); + var str = apiHelper.Post("http://10.20.66.121:18080/datahubjson/wcs/?method=PALLETSTACKERINTERACTION", JsonConvert.SerializeObject(new PalletStackerInteractionRequest + { + Data = new PalletStackerInteractionData + { + Header = new PalletStackerInteractionHeader + { + PalletId = "TP9901", + TaskId = $"X{DateTime.Now.ToString("yyyy-MM-dd")}001", + TaskType = "PI", + FmLocation = "2FC1076", + AddTime = DateTime.Now, + AddWho = "wcs" + } + } + })); + return str; + //return JsonConvert.SerializeObject(""); } ///淇敼浠诲姟浼樺厛绾�銆�WMS - WCS case "/api/Wcs/modifyTaskPriority": { statusCode = System.Net.HttpStatusCode.OK; + var req = JsonConvert.DeserializeObject<ModifyTaskPriorityRequest>(requestJson); + List<TaskErrorInfo> taskErrorInfos = new List<TaskErrorInfo>(); + if (req != null) + { + foreach (var item in req.Data.Header) + { + var task = lstr.Find(x => x.GroupTaskSequence == item.GroupTaskSequence && x.GroupTaskId == item.GroupTaskId); + if (task != null) + { + task.Priority = item.Priority; + } + else + { + taskErrorInfos.Add(new TaskErrorInfo + { + GroupTaskId = item.GroupTaskId, + GroupTaskSequence = item.GroupTaskSequence, + ErrorCode = "0001", + ErrorDesc = "娌¤繖涓换鍔� + }); + } + } - return JsonConvert.SerializeObject(""); + } + + if (req == null || req.Data.Header.Count == taskErrorInfos.Count) + return JsonConvert.SerializeObject(new ModifyTaskPriorityResponse + { + Response = new ModifyTaskPriorityResponseData + { + Return = new ModifyTaskPriorityReturnInfo + { + ReturnCode = "0001", + ReturnDesc = "娌℃湁浠诲姟鍙洿鏀�, + ReturnFlag = "0" + } + } + }); + else + { + if (taskErrorInfos.Count == 0) + return JsonConvert.SerializeObject(new ModifyTaskPriorityResponse + { + Response = new ModifyTaskPriorityResponseData + { + Return = new ModifyTaskPriorityReturnInfo + { + ReturnCode = "0000", + ReturnFlag = "1" + } + } + }); + else + { + return JsonConvert.SerializeObject(new ModifyTaskPriorityResponse + { + Response = new ModifyTaskPriorityResponseData + { + Return = new ModifyTaskPriorityReturnInfo + { + ReturnCode = "0001", + ReturnDesc = "閮ㄥ垎浠诲姟鍙洿鏀�, + ReturnFlag = "2", + ResultInfo = taskErrorInfos + } + } + }); + } + } + } /// 杈撻�绾夸换鍔℃帹閫併� WMS-->WCS -- 璁板綍绠卞彿鏁版嵁锛屽垎鎷d笅绾垮悗鏍规嵁鎯冲ソ杩涘叆瀵瑰簲鐨勫尯鍩熴� case "/api/Wcs/putConveyorTask": { statusCode = System.Net.HttpStatusCode.OK; + var req = JsonConvert.DeserializeObject<PutConveyorTaskRequest>(requestJson); + List<TaskErrorInfo> taskErrorInfos = new List<TaskErrorInfo>(); + if (req != null) + { + foreach (var item in req.Data.Header) + { + var task = putConveyorTasks.Find(x => x.GroupTaskSequence == item.GroupTaskSequence && x.GroupTaskId == item.GroupTaskId); + if (task == null) + { + putConveyorTasks.Add(item); + } + else + { + taskErrorInfos.Add(new TaskErrorInfo + { + GroupTaskId = item.GroupTaskId, + GroupTaskSequence = item.GroupTaskSequence, + ErrorCode = "0001", + ErrorDesc = "閲嶅" + }); + } + } - return JsonConvert.SerializeObject(""); + } + + if (req == null || req.Data.Header.Count == taskErrorInfos.Count) + return JsonConvert.SerializeObject(new PutConveyorTaskResponse + { + Response = new PutConveyorTaskResponseData + { + Return = new PutConveyorTaskReturnInfo + { + ReturnCode = "0001", + ReturnDesc = "鍏ㄩ儴閲嶅", + ReturnFlag = "0" + } + } + }); + else + { + if (taskErrorInfos.Count == 0) + return JsonConvert.SerializeObject(new PutConveyorTaskResponse + { + Response = new PutConveyorTaskResponseData + { + Return = new PutConveyorTaskReturnInfo + { + ReturnCode = "0000", + ReturnFlag = "1" + } + } + }); + else + { + return JsonConvert.SerializeObject(new PutConveyorTaskResponse + { + Response = new PutConveyorTaskResponseData + { + Return = new PutConveyorTaskReturnInfo + { + ReturnCode = "0001", + ReturnDesc = "閮ㄥ垎閲嶅", + ReturnFlag = "2", + ResultInfo = taskErrorInfos + } + } + }); + } + } } ///涓婃姤绉伴噸灏哄 - websocket .杩欓噷鍐欑潃浣滀负璁板綍 case "/api/Wcs/reportWeightinfo": { statusCode = System.Net.HttpStatusCode.OK; + if (/*list.Count > 0 && */WebSocketClientWithReconnect.GetWebSocketState() == WebSocketState.Open) + //for (int i = 60000; i < 70000; i++) + { + //Thread.Sleep(1000); + var req = new ReportWeightInfoRequest + { + Data = new ReportWeightInfoData + { + Header = new ReportWeightInfoHeader + { + DeliveryNo = "F00001", + GrossWeight = 99, + Cube = 66, + AddTime = DateTime.Now, + AddWho = "WCS" + } + } + }; + //Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>GGG{i}"); + LogHelper.Info(JsonConvert.SerializeObject(req)); + var b = WebSocketClientWithReconnect.Instance?.SendAsync(JsonConvert.SerializeObject(req)).Result; + Console.WriteLine(req.Data.Header.DeliveryNo + "鍙戦�瀹屾垚锛侊紒" + b); + if (b == true) + { + // 绛夊緟鐗瑰畾鍝嶅簲 - return JsonConvert.SerializeObject(""); + var rr = reportWeightinfo.GetChinnnl().Result; + + LogHelper.Info("鎺ユ敹" + JsonConvert.SerializeObject(rr)); + //} + return JsonConvert.SerializeObject(rr); + } + else return "鍙戦�澶辫触銆�; + } } + break; } break; } @@ -471,6 +799,8 @@ public class WebSocketClientWithReconnect { + //public static List<object> SendList = new List<object>(); + public static ClientWebSocket _webSocket; private static WebSocketClientWithReconnect _instance; private readonly Uri _serverUri; @@ -479,7 +809,7 @@ public event Action<string> OnMessageReceived = msg => Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}>>>Received: {msg}"); public event Action OnConnected = () => Console.WriteLine("Connected to server"); - public event Action OnDisconnected = () => Console.WriteLine("Disconnected from server"); + public event Action OnDisconnected = () => Console.WriteLine("Disconnected from webSocket server"); public event Action<Exception> OnError = ex => Console.WriteLine($"Error: {ex.Message}"); public WebSocketClientWithReconnect(string serverUrl, int reconnectDelayMs = 5000) @@ -590,7 +920,7 @@ var bytes = System.Text.Encoding.UTF8.GetBytes(message); await _webSocket.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, _cts.Token); - return true; + return true; } } @@ -860,7 +1190,7 @@ else { logger = LogFactory.CreateLogger(name); - if (logger != null) + if (logger != null && !loggers.Keys.Contains(name)) { loggers.Add(name, logger); } @@ -971,5 +1301,862 @@ #endregion [鑷畾涔夌被][20250323145505759][LogFactory] } + + public class HttpHelper + { + #region [鑷畾涔夌被][20250325095622918][HttpHelper] + public string Post(string url, string postData, string contentType = "application/json", string sessionId = "") + { + LogHelper.Info(url + "+" + postData); + WebRequest request = WebRequest.Create(url); + request.Method = "POST"; + byte[] byteArray = Encoding.UTF8.GetBytes(postData); + request.ContentType = contentType; + request.ContentLength = byteArray.Length; + request.Timeout = 15000; + if (sessionId != "") + { + request.Headers.Set("ASP.NET_SessionId", sessionId); + } + + //Authorization: UApGP6WW9FsBUqAlzxRGOw == + request.Headers.Set("Authorization", "UApGP6WW9FsBUqAlzxRGOw=="); + StreamReader reader = null; + Stream stream = null; + WebResponse rsp = null; + try + { + stream = request.GetRequestStream(); + stream.Write(byteArray, 0, byteArray.Length); + stream.Close(); + rsp = request.GetResponse(); + stream = rsp.GetResponseStream(); + reader = new StreamReader(stream); + string rrend = reader.ReadToEnd(); + LogHelper.Info($"{url} response={rrend}"); + return rrend; + } + catch (Exception ex) + { + LogHelper.Info($"{url} err={ex.Message}"); + return ""; + } + finally + { + // 閲婃斁璧勬簮 + if (reader != null) reader.Close(); + if (stream != null) stream.Close(); + if (rsp != null) rsp.Close(); + } + + } + #endregion [鑷畾涔夌被][20250325095622918][HttpHelper] + } + public class Clloc + { + public class sendTask + { + /// <summary> + /// 浠诲姟涓嬪彂璇锋眰 + /// </summary> + public class SendTaskRequest + { + /// <summary> + /// 璇锋眰鏁版嵁 + /// </summary> + public SendTaskData Data { get; set; } + } + + public class SendTaskData + { + /// <summary> + /// 璇锋眰澶翠俊鎭�+ /// </summary> + public SendTaskHeader Header { get; set; } + } + + public class SendTaskHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缁勭紪鍙�- 涓婚敭 + /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�- 涓婚敭 + /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 鎵樼洏鍙�+ /// </summary> + public string PalletId { get; set; } + + /// <summary> + /// 鏉ユ簮搴撲綅 + /// </summary> + public string FmLocation { get; set; } + + /// <summary> + /// 鏉ユ簮鐐逛綅 + /// </summary> + public string FmPosition { get; set; } + + /// <summary> + /// 鐩爣搴撲綅鍙�+ /// </summary> + public string ToLocation { get; set; } + + /// <summary> + /// 鐩爣鐐逛綅 + /// </summary> + public string ToPosition { get; set; } + + /// <summary> + /// 鐘舵� - 00:鍒涘缓 + /// </summary> + public string TaskStatus { get; set; } = "00"; + + /// <summary> + /// 浠诲姟绫诲瀷 - PA:鍏ュ簱(涓婃灦/鍥炲簱/绉诲簱), PK:鍑哄簱(鎷h揣/绉诲簱/琛ヨ揣/鐩樼偣), MV:鍊掑簱 + /// </summary> + public string TaskType { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime AddTime { get; set; } + + /// <summary> + /// 鍒涘缓浜�+ /// </summary> + public string AddWho { get; set; } + + /// <summary> + /// 浼樺厛绾�- 1-5(1鏈�珮,5鏈�綆),榛樿3 + /// </summary> + public string Priority { get; set; } = "3"; + + } + + /// <summary> + /// 浠诲姟涓嬪彂鍝嶅簲 + /// </summary> + public class SendTaskResponse + { + public ResponseData Response { get; set; } + } + + public class ResponseData + { + public ReturnInfo Return { get; set; } + } + + public class ReturnInfo + { + /// <summary> + /// 杩斿洖浠g爜 - 0000:鎴愬姛, 鍏朵粬:澶辫触 + /// </summary> + public string ReturnCode { get; set; } + + /// <summary> + /// 杩斿洖鎻忚堪 + /// </summary> + public string ReturnDesc { get; set; } + + /// <summary> + /// 杩斿洖鏍囪 - 1:鎴愬姛, 0:澶辫触 + /// </summary> + public string ReturnFlag { get; set; } + } + } + + public class stockInException + { + /// <summary> + /// 鍏ュ簱寮傚父璇锋眰 + /// </summary> + public class StockInExceptionRequest + { + public StockInExceptionData Data { get; set; } + } + + public class StockInExceptionData + { + public StockInExceptionHeader Header { get; set; } + } + + public class StockInExceptionHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缁勭紪鍙�- 涓婚敭 + /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�- 涓婚敭 + /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 鎵樼洏鍙�+ /// </summary> + public string PalletId { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime AddTime { get; set; } + + /// <summary> + /// 鍒涘缓璁惧 + /// </summary> + public string AddWho { get; set; } + + /// <summary> + /// 寮傚父鍘熷洜鎻忚堪 + /// </summary> + public string Reason { get; set; } + + /// <summary> + /// 寮傚父鍘熷洜浠g爜 - 01:搴撲綅鏈夎揣涓嶅彲鐢� 03:鍏ュ唴浼镐綅澶栦几浣嶆湁璐�+ /// </summary> + public string ReasonCode { get; set; } + + // ... UDF瀛楁 + } + + /// <summary> + /// 鍏ュ簱寮傚父鍝嶅簲 + /// </summary> + public class StockInExceptionResponse + { + public StockInExceptionResponseData Response { get; set; } + } + + public class StockInExceptionResponseData + { + public StockInExceptionReturnInfo Return { get; set; } + } + + public class StockInExceptionReturnInfo : ReturnInfo + { + /// <summary> + /// 鏂板垎閰嶇殑鐩爣搴撲綅 + /// </summary> + public string ToLocation { get; set; } + + /// <summary> + /// 鏂板垎閰嶇殑鐩爣鐐逛綅 + /// </summary> + public string ToPosition { get; set; } + } + } + + public class taskFeedback + { + /// <summary> + /// 浠诲姟鍙嶉璇锋眰 + /// </summary> + public class TaskFeedbackRequest + { + public TaskFeedbackData Data { get; set; } + } + + public class TaskFeedbackData + { + public TaskFeedbackHeader Header { get; set; } + } + + public class TaskFeedbackHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缁勭紪鍙�- 涓婚敭 + /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�- 涓婚敭 + /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 鎵樼洏鍙�+ /// </summary> + public string PalletId { get; set; } + + /// <summary> + /// 鏉ユ簮搴撲綅 + /// </summary> + public string FmLocation { get; set; } + + /// <summary> + /// 鏉ユ簮鐐逛綅 + /// </summary> + public string FmPosition { get; set; } + + /// <summary> + /// 鐩爣搴撲綅鍙�+ /// </summary> + public string ToLocation { get; set; } + + /// <summary> + /// 鐩爣鐐逛綅 + /// </summary> + public string ToPosition { get; set; } + + /// <summary> + /// 鐘舵� - 80:瀹屾垚, 98:寮傚父(鍙栬揣鏃犺揣) + /// </summary> + public string TaskStatus { get; set; } + + /// <summary> + /// 浠诲姟绫诲瀷 - PA:鍏ュ簱, PK:鍑哄簱, MV:鍊掑簱 + /// </summary> + public string TaskType { get; set; } + + /// <summary> + /// 瀹屾垚鏃堕棿 + /// </summary> + public DateTime CloseTime { get; set; } + + /// <summary> + /// 瀹屾垚浜哄憳 + /// </summary> + public string CloseWho { get; set; } + + // ... UDF瀛楁 + } + } + public class stockInInteraction + { + /// <summary> + /// 鍏ュ簱浜や簰璇锋眰 + /// </summary> + public class StockInInteractionRequest + { + public StockInInteractionData Data { get; set; } + } + + public class StockInInteractionData + { + public StockInInteractionHeader Header { get; set; } + } + + public class StockInInteractionHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 鎵樼洏鍙�- 涓婚敭 + /// </summary> + public string PalletId { get; set; } + + /// <summary> + /// 鎬婚噸閲�kg) + /// </summary> + public decimal GrossWeight { get; set; } + + /// <summary> + /// 鐮佺洏瀹藉害(cm) + /// </summary> + public decimal PalletWidth { get; set; } + + /// <summary> + /// 鏉ユ簮搴撲綅 + /// </summary> + public string FmLocation { get; set; } + + /// <summary> + /// 鏉ユ簮鐐逛綅 + /// </summary> + public string FmPosition { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime AddTime { get; set; } + + /// <summary> + /// 鍒涘缓浜�+ /// </summary> + public string AddWho { get; set; } + + // ... UDF01-UDF10 + } + + /// <summary> + /// 鍏ュ簱浜や簰鍝嶅簲 + /// </summary> + public class StockInInteractionResponse + { + public StockInInteractionResponseData Response { get; set; } + } + + public class StockInInteractionResponseData + { + public StockInInteractionReturnInfo Return { get; set; } + } + + public class StockInInteractionReturnInfo : ReturnInfo + { + /// <summary> + /// 浠诲姟缁勭紪鍙�+ /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�+ /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 鐘舵� - 00:鍒涘缓 + /// </summary> + public string TaskStatus { get; set; } + + /// <summary> + /// 浠诲姟绫诲瀷 - PA:鍏ュ簱 + /// </summary> + public string TaskType { get; set; } + + /// <summary> + /// 浼樺厛绾�- 1-5(1鏈�珮) + /// </summary> + public string Priority { get; set; } + + /// <summary> + /// 鐩爣搴撲綅鍙�+ /// </summary> + public string ToLocation { get; set; } + + /// <summary> + /// 鐩爣鐐逛綅 + /// </summary> + public string ToPosition { get; set; } + } + } + public class cancelTask + { + /// <summary> + /// 浠诲姟鍙栨秷璇锋眰 + /// </summary> + public class CancelTaskRequest + { + public CancelTaskData Data { get; set; } + } + + public class CancelTaskData + { + public CancelTaskHeader Header { get; set; } + } + + public class CancelTaskHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缁勭紪鍙�- 涓婚敭 + /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�- 涓婚敭 + /// </summary> + public int GroupTaskSequence { get; set; } + } + + /// <summary> + /// 浠诲姟鍙栨秷鍝嶅簲 + /// </summary> + public class CancelTaskResponse + { + public ResponseData Response { get; set; } + } + } + public class palletStackerInteraction + { + /// <summary> + /// 鍙犵洏鏈轰氦浜掕姹�+ /// </summary> + public class PalletStackerInteractionRequest + { + public PalletStackerInteractionData Data { get; set; } + } + + public class PalletStackerInteractionData + { + public PalletStackerInteractionHeader Header { get; set; } + } + + public class PalletStackerInteractionHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缂栧彿 - 涓婚敭锛岃澶囧彂鍑虹殑璇锋眰ID + /// </summary> + public string TaskId { get; set; } + + /// <summary> + /// 鎵樼洏鍙�+ /// </summary> + public string PalletId { get; set; } + + /// <summary> + /// 绫诲瀷 - PI:鍏ュ簱, PT:鍑哄簱(褰撳墠鏃犲嚭搴撳満鏅� + /// </summary> + public string TaskType { get; set; } + + /// <summary> + /// 璧峰搴撲綅 - 鍙犵洏鏈虹墿鐞嗚捣濮嬩綅缃�+ /// </summary> + public string FmLocation { get; set; } + + /// <summary> + /// 浼樺厛绾�- 1-5(1鏈�珮) + /// </summary> + public string Priority { get; set; } = "3"; + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime AddTime { get; set; } + + /// <summary> + /// 鍒涘缓璁惧 + /// </summary> + public string AddWho { get; set; } + + // ... UDF01-UDF10 + } + + /// <summary> + /// 鍙犵洏鏈轰氦浜掑搷搴�+ /// </summary> + public class PalletStackerInteractionResponse + { + public ResponseData Response { get; set; } + } + + } + public class modifyTaskPriority + { + /// <summary> + /// 淇敼浠诲姟浼樺厛绾ц姹�+ /// </summary> + public class ModifyTaskPriorityRequest + { + public ModifyTaskPriorityData Data { get; set; } + } + + public class ModifyTaskPriorityData + { + public List<ModifyTaskPriorityHeader> Header { get; set; } + } + + public class ModifyTaskPriorityHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缁勭紪鍙�- 涓婚敭 + /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�- 涓婚敭 + /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 浼樺厛绾�- 1-5(1鏈�珮) + /// </summary> + public string Priority { get; set; } + } + + /// <summary> + /// 淇敼浠诲姟浼樺厛绾у搷搴�鏀寔閮ㄥ垎鎴愬姛) + /// </summary> + public class ModifyTaskPriorityResponse + { + public ModifyTaskPriorityResponseData Response { get; set; } + } + + public class ModifyTaskPriorityResponseData + { + public ModifyTaskPriorityReturnInfo Return { get; set; } + } + + public class ModifyTaskPriorityReturnInfo : ReturnInfo + { + /// <summary> + /// 閮ㄥ垎鎴愬姛鏃剁殑閿欒璇︽儏 + /// </summary> + public List<TaskErrorInfo> ResultInfo { get; set; } + } + + public class TaskErrorInfo + { + /// <summary> + /// 浠诲姟缁勭紪鍙�+ /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�+ /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 閿欒浠g爜 + /// </summary> + public string ErrorCode { get; set; } + + /// <summary> + /// 閿欒鍘熷洜 + /// </summary> + public string ErrorDesc { get; set; } + } + } + public class putConveyorTask + { + /// <summary> + /// 杈撻�绾夸换鍔℃帹閫佽姹�+ /// </summary> + public class PutConveyorTaskRequest + { + public PutConveyorTaskData Data { get; set; } + } + + public class PutConveyorTaskData + { + public List<PutConveyorTaskHeader> Header { get; set; } + } + + public class PutConveyorTaskHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 浠诲姟缁勭紪鍙�- 涓婚敭 + /// </summary> + public string GroupTaskId { get; set; } + + /// <summary> + /// 浠诲姟缁勫簭鍙�- 涓婚敭 + /// </summary> + public int GroupTaskSequence { get; set; } + + /// <summary> + /// 绠卞彿 + /// </summary> + public string PalletId { get; set; } + + /// <summary> + /// 绠卞瀷 - 澶х/灏忕/鍛ㄨ浆绠辩紪鐮�+ /// </summary> + public string PalletIdType { get; set; } + + /// <summary> + /// 璐存爣鏍囪 - Y:闇�璐存爣, N:涓嶉渶瑕�+ /// </summary> + public string SyncFlag { get; set; } + + /// <summary> + /// 鐩爣鍖哄煙/閬撳彛 - 鐗╃悊浣嶇疆閬撳彛缂栫爜鎴朆2C澶嶆牳鍙板尯鍩熺紪鐮�+ /// </summary> + public string DLocation { get; set; } + + // ... UDF01-UDF10 + } + + /// <summary> + /// 杈撻�绾夸换鍔℃帹閫佸搷搴�鏀寔閮ㄥ垎鎴愬姛) + /// </summary> + public class PutConveyorTaskResponse + { + public PutConveyorTaskResponseData Response { get; set; } + } + + public class PutConveyorTaskResponseData + { + public PutConveyorTaskReturnInfo Return { get; set; } + } + + public class PutConveyorTaskReturnInfo : ReturnInfo + { + /// <summary> + /// 閮ㄥ垎鎴愬姛鏃剁殑閿欒璇︽儏 + /// </summary> + public List<TaskErrorInfo> ResultInfo { get; set; } + } + } + public class reportWeightinfo + { + public static Channel<ReportWeightInfoResponse> channel = Channel.CreateUnbounded<ReportWeightInfoResponse>(); + + internal static async Task<ReportWeightInfoReturnInfo> GetChinnnl() + { + //var response = await reportWeightinfo.channel.Reader.ReadAllAsync();// foreach (var response in reportWeightinfo.channel.Reader.ReadAllAsync()) + //{ + // return response?.Response?.Return ?? new ReportWeightInfoReturnInfo { ReturnCode = "0001", SortingChute = "0", ReturnDesc = "杩斿洖涓虹┖銆� }; + //} + while (await reportWeightinfo.channel.Reader.WaitToReadAsync(CancellationToken.None)) + { + while (reportWeightinfo.channel.Reader.TryRead(out var response)) + { + return response?.Response?.Return ?? new ReportWeightInfoReturnInfo { ReturnCode = "0001", SortingChute = "0", ReturnDesc = "杩斿洖涓虹┖銆� }; + } + } + return new ReportWeightInfoReturnInfo { ReturnCode = "0001", SortingChute = "0", ReturnDesc = "杩斿洖涓虹┖銆� }; + } + + /// <summary> + /// 涓婃姤绉伴噸淇℃伅璇锋眰 + /// </summary> + public class ReportWeightInfoRequest + { + public ReportWeightInfoData Data { get; set; } + } + + public class ReportWeightInfoData + { + public ReportWeightInfoHeader Header { get; set; } + } + + public class ReportWeightInfoHeader + { + /// <summary> + /// 缁勭粐缂栧彿 - 涓婚敭锛岄粯璁ERCURY + /// </summary> + public string OrganizationId { get; set; } = "MERCURY"; + + /// <summary> + /// 浠撳簱缂栧彿 - 涓婚敭锛岄粯璁N02 + /// </summary> + public string WarehouseId { get; set; } = "HN02"; + + /// <summary> + /// 闈㈠崟鍙�- 涓婚敭 + /// </summary> + public string DeliveryNo { get; set; } + + /// <summary> + /// 閲嶉噺(kg) + /// </summary> + public decimal GrossWeight { get; set; } + + /// <summary> + /// 浣撶Н(绔嬫柟鍘樼背) + /// </summary> + public decimal Cube { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime AddTime { get; set; } + + /// <summary> + /// 鍒涘缓璁惧 + /// </summary> + public string AddWho { get; set; } + + // ... UDF瀛楁 + } + + /// <summary> + /// 涓婃姤绉伴噸淇℃伅鍝嶅簲 + /// </summary> + public class ReportWeightInfoResponse + { + public ReportWeightInfoResponseData Response { get; set; } + } + + public class ReportWeightInfoResponseData + { + public ReportWeightInfoReturnInfo Return { get; set; } + } + + public class ReportWeightInfoReturnInfo : ReturnInfo + { + /// <summary> + /// 鍒嗘嫞閬撳彛 - 杈撻�绾垮揩閫熷垎鎷i亾鍙g紪鐮�+ /// </summary> + public string SortingChute { get; set; } + } + } + + } } #endregion [鑷畾涔夌被-VS][20250701112200484][AutoThread] \ No newline at end of file -- Gitblit v1.9.1