From 84aa11ef304bfe2409e3ca9e11e04732a83b857f Mon Sep 17 00:00:00 2001 From: hehaibing-1996 Date: Mon, 3 Mar 2025 11:23:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=B3=BB=E7=BB=9F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WCS.BLL/Config/LocalStatic.cs | 2 + WCS.BLL/Manager/MKYBackgroundThread.cs | 78 +++++++++++++++---- WCS.BLL/Tool/Api/ApiHelp.cs | 4 +- .../MKYBackgroundThread/SysOrderResponse.cs | 13 ++++ 4 files changed, 81 insertions(+), 16 deletions(-) diff --git a/WCS.BLL/Config/LocalStatic.cs b/WCS.BLL/Config/LocalStatic.cs index fc33ce1..911f866 100644 --- a/WCS.BLL/Config/LocalStatic.cs +++ b/WCS.BLL/Config/LocalStatic.cs @@ -12,5 +12,7 @@ namespace WCS.BLL.Config /// 0x02绿色 0x04蓝色 /// public static byte CurrentOutStoreColor = 0x02; + + public static string WMSToken = string.Empty; } } diff --git a/WCS.BLL/Manager/MKYBackgroundThread.cs b/WCS.BLL/Manager/MKYBackgroundThread.cs index 694bd70..9e695c0 100644 --- a/WCS.BLL/Manager/MKYBackgroundThread.cs +++ b/WCS.BLL/Manager/MKYBackgroundThread.cs @@ -26,22 +26,22 @@ namespace WCS.BLL.Manager public static void InitBackgroundThread() { #region 调用WMS接口获取具体的库存列表并展示在液晶标签上 - Task.Run(() => - { - while (true) - { - //每5秒同步一次 - Thread.Sleep(5000); - try - { + //Task.Run(() => + //{ + // while (true) + // { + // //每5秒同步一次 + // Thread.Sleep(5000); + // try + // { - } - catch (Exception ex) - { - Logs.Write("【定时任务】刷新库存显示时发生异常!" + ex.Message); - } - } - }); + // } + // catch (Exception ex) + // { + // Logs.Write("【定时任务】刷新库存显示时发生异常!" + ex.Message); + // } + // } + //}); #endregion #region 定时任务:回传数据至WMS系统 @@ -51,6 +51,38 @@ namespace WCS.BLL.Manager { //回传数据的时间间隔 Thread.Sleep(2000); + //先判断是否需要获取token + if (string.IsNullOrEmpty(LocalStatic.WMSToken)) + { + try + { + Logs.Write($"【定时任务:回传数据至WMS系统】token为空 开始获取token", LogsType.Info); + #region 登录获取token + var request = new LoginRequest() + { + userName = "cmeimZtwcs", + password = "Cmeim@ztwcs2024!@#" + }; + var result = ApiHelp.GetDataFromHttpShortTime(@"http://10.41.235.10:18989/login", request, "POST", true); + if (result != null && (result.code == 200)) + { + //获取到最新的token + LocalStatic.WMSToken = result.data; + Logs.Write($"【定时任务:回传数据至WMS系统】调用接口获取token成功!token为{result.data}", LogsType.Info); + } + else if (result != null && (result.code == 500) && result.message.Contains("未查询到条码信息【")) + { + Logs.Write($"【定时任务:回传数据至WMS系统】调用接口获取token失败", LogsType.Info); + } + #endregion + } + catch (Exception ex) + { + Logs.Write($"【定时任务:回传数据至WMS系统】获取token异常" + ex.Message, LogsType.Info); + Logs.Write($"【定时任务:回传数据至WMS系统】获取token异常" + ex.StackTrace, LogsType.Info); + } + } + try { //获取已完成未提交的任务 @@ -142,6 +174,22 @@ namespace WCS.BLL.Manager DbHelp.db.Insertable(uploadedTask).ExecuteCommand(); DbHelp.db.Deleteable(finishedTask).ExecuteCommand(); } + else if (result != null && (result.code == 10000) && +(result.message.Contains("token") || result.message.Contains("请重新登录") || result.message.Contains("无token") || result.message.Contains("无效token") || result.message.Contains("token校验失败")) +) + { + Logs.Write($"【定时任务:回传数据至WMS系统】根据wms接口返回 token已过期或者错误,清空token。", LogsType.Info); + LocalStatic.WMSToken = string.Empty; + break; + } + else if (result != null && (result.code == 500) && + (result.message.Contains("token") || result.message.Contains("请重新登录") || result.message.Contains("无token") || result.message.Contains("无效token") || result.message.Contains("token校验失败")) + ) + { + Logs.Write($"【定时任务:回传数据至WMS系统】根据wms接口返回 token已过期或者错误,清空token。", LogsType.Info); + LocalStatic.WMSToken = string.Empty; + break; + } #endregion //为了调试 diff --git a/WCS.BLL/Tool/Api/ApiHelp.cs b/WCS.BLL/Tool/Api/ApiHelp.cs index 4ce9b0f..4f7e96d 100644 --- a/WCS.BLL/Tool/Api/ApiHelp.cs +++ b/WCS.BLL/Tool/Api/ApiHelp.cs @@ -12,6 +12,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Input; using WCS.BLL; +using WCS.BLL.Config; using WCS.Model; namespace WCS.BLL.Tool @@ -280,6 +281,7 @@ namespace WCS.BLL.Tool if (isSaveLog) Logs.Write($"【{guid}】开始请求调用接口 url:{url} 请求方式:{httpMethod} 数据:{data}", LogsType.Api); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.Headers.Add("token",LocalStatic.WMSToken);//智能制造要求请求增加token request.Method = httpMethod; request.ContentType = "application/json"; request.Timeout = 10000; @@ -324,7 +326,7 @@ namespace WCS.BLL.Tool HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = httpMethod; request.ContentType = "application/json"; - request.Timeout = 2000; + request.Timeout = 3000; if (!string.IsNullOrEmpty(data)) { diff --git a/WCS.Model/ApiModel/MKYBackgroundThread/SysOrderResponse.cs b/WCS.Model/ApiModel/MKYBackgroundThread/SysOrderResponse.cs index 35865b4..aadd246 100644 --- a/WCS.Model/ApiModel/MKYBackgroundThread/SysOrderResponse.cs +++ b/WCS.Model/ApiModel/MKYBackgroundThread/SysOrderResponse.cs @@ -10,4 +10,17 @@ namespace WCS.Model.ApiModel.MKYBackgroundThread public string message { get; set; } public object data { get; set; } } + + public class LoginRequest + { + public string userName { get; set; } = "cmeimZtwcs"; + public string password { get; set; } = "Cmeim@ztwcs2024!@#"; + } + + public class LoginResponse + { + public int code { get; set; } + public string message { get; set; } + public string data { get; set; } + } }