From 74ca5a83f24c53c48ad7e6f5b7739649fb411546 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 17 七月 2025 17:19:53 +0800
Subject: [PATCH] 优化部分日志和未使用代码

---
 util/WebHelper.cs          |  176 ++++++++++++++++++++++
 util/SqlHelper.cs          |   11 
 api/DebugController.cs     |  128 ---------------
 util/HttpHelper.cs         |    5 
 wms/LocationHelper.cs      |   11 
 models/TN_Container.cs     |    2 
 api/AgvController.cs       |  134 ----------------
 util/LogHelper.cs          |    1 
 process/TaskProcess.cs     |    3 
 HH.WCS.Mobox3.DSZSH.csproj |    1 
 10 files changed, 190 insertions(+), 282 deletions(-)

diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj
index 570c813..393f918 100644
--- a/HH.WCS.Mobox3.DSZSH.csproj
+++ b/HH.WCS.Mobox3.DSZSH.csproj
@@ -270,6 +270,7 @@
     <Compile Include="api\WMSController.cs" />
     <Compile Include="dispatch\HostToAGV.cs" />
     <Compile Include="util\LogHelper.cs" />
+    <Compile Include="util\WebHelper.cs" />
     <Compile Include="wms\LocationHelper.cs" />
     <Compile Include="wms\SYSHelper.cs" />
     <Compile Include="Program.cs" />
diff --git a/api/AgvController.cs b/api/AgvController.cs
index 1a6e3f4..f01ab17 100644
--- a/api/AgvController.cs
+++ b/api/AgvController.cs
@@ -29,7 +29,7 @@
         [HttpPost]
         [Route("AGVCallbackState")]
         public ReturnResult AGVCallbackState(AgvTaskState model){
-            LogHelper.InfoHostToAGV("NDC浠诲姟鐘舵�鍥炴姤", model);
+            LogHelper.InfoHostToAGV("AGVCallbackState锛歂DC浠诲姟鐘舵�鍥炴姤", model);
             return WCSCore.OperateAgvTaskStatus(model);
         }
 
@@ -41,138 +41,8 @@
         [HttpPost]
         [Route("SafetyInteraction")]
         public ReturnResult SafetyInteraction(SafetyInteractionInfo model) {
-            LogHelper.InfoHostToAGV("AGV涓庝骇绾胯繘琛屽畨鍏ㄤ氦浜�, model);
+            LogHelper.InfoHostToAGV("SafetyInteraction锛欰GV涓庝骇绾胯繘琛屽畨鍏ㄤ氦浜�, model);
             return WCSCore.SafetyInteraction(model);
         }
-
-        // 澶囩敤锛歊equest 璇锋眰鎺堟潈 ---------------------------------------------
-
-        // 妯℃嫙瀛樺偍鐨凙ppKey鍜孉ppSecret锛堝疄闄呭簲瀛樺偍鍦ㄦ暟鎹簱鎴栭厤缃腑锛�-        private static readonly Dictionary<string, string> AppSecrets = new Dictionary<string, string> {
-            { "testAppKey", "7a8f9b3d2e1c6a5b4c8d7e6f" }
-        };
-
-        // 鍏佽鐨勬椂闂村樊锛堢锛夛紝鐢ㄤ簬楠岃瘉鏃堕棿鎴�-        private const int AllowedTimeDiff = 300; // 5鍒嗛挓
-
-        private CheckHeadersResult CheckHeaders(System.Net.Http.Headers.HttpRequestHeaders headers) {
-            // 蹇呴』瀛楁楠岃瘉
-            if (!headers.Contains("AppKey") || !headers.Contains("ReqVerify") || !headers.Contains("ReqTime")) {
-                return CreateCheckHeadersResult(false, HttpStatusCode.BadRequest, "缂哄皯蹇呰璇锋眰澶村弬鏁�);
-            }
-
-            var headerModel = new SecureRequest {
-                AppKey = headers.GetValues("AppKey").First(),
-                ReqVerify = headers.GetValues("ReqVerify").First(),
-                ReqTime = long.Parse(headers.GetValues("ReqTime").First()),
-            };
-
-            // 楠岃瘉Header
-            var validationResult = ValidateHeaders(headerModel);
-            if (validationResult != null) {
-                return validationResult;
-            }
-
-            return CreateCheckHeadersResult(true);
-        }
-
-        private CheckHeadersResult ValidateHeaders(SecureRequest request) {
-            // 瀹炵幇鎵�湁Header楠岃瘉閫昏緫
-
-            // 楠岃瘉AppKey鏄惁瀛樺湪
-            if (!AppSecrets.TryGetValue(request.AppKey, out var appSecret)) {
-                return CreateCheckHeadersResult(false, HttpStatusCode.Unauthorized, "鏃犳晥鐨凙ppKey");
-            }
-
-            // 楠岃瘉鏃堕棿鎴虫槸鍚﹀湪鍏佽鑼冨洿鍐�-            var currentTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
-            if (Math.Abs(currentTime - request.ReqTime) > AllowedTimeDiff) {
-                return CreateCheckHeadersResult(false, HttpStatusCode.Unauthorized, "璇锋眰宸茶繃鏈�);
-            }
-
-            // 璁$畻楠岃瘉涓�-            var expectedVerify = CalculateRequestVerify(request.AppKey, appSecret, request.ReqTime);
-
-            // 楠岃瘉璇锋眰绛惧悕
-            if (!string.Equals(expectedVerify, request.ReqVerify, StringComparison.OrdinalIgnoreCase)) {
-                return CreateCheckHeadersResult(false, HttpStatusCode.Unauthorized, "楠岃瘉澶辫触");
-            }
-
-            return null;
-        }
-
-        /// <summary>
-        /// 鏋勯�涓�釜鎴愬姛缁撴灉鐨凴esponseMessage
-        /// </summary>
-        /// <example><code><![CDATA[
-        /// var res = ApiHelper.OperateAgvTaskStatus(model);
-        /// return CreateSuccessResponse(res);
-        /// ]]></code></example>
-        /// <param name="code"></param>
-        /// <param name="data"></param>
-        /// <returns></returns>
-        private IHttpActionResult CreateSuccessResponse(HttpStatusCode code, object data) {
-            return ResponseMessage(new HttpResponseMessage(code) {
-                Headers = { },
-                Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json")
-            });
-        }
-
-        /// <summary>
-        /// 鏋勯�涓�釜澶辫触缁撴灉鐨凴esponseMessage
-        /// </summary>
-        /// <example><code><![CDATA[
-        /// var headers = Request.Headers;
-        /// var checkRes = CheckHeaders(headers);
-        /// if (!checkRes.isSuccess) {
-        ///     return CreateErrorResponse(checkRes.code, checkRes.message);
-        /// }
-        /// ]]></code></example>
-        /// <param name="code"></param>
-        /// <param name="message"></param>
-        /// <returns></returns>
-        private IHttpActionResult CreateErrorResponse(HttpStatusCode code, string message) {
-            return ResponseMessage(new HttpResponseMessage(code) {
-                Headers = { },
-                Content = new StringContent(message)
-            });
-        }
-
-        private CheckHeadersResult CreateCheckHeadersResult(bool isSuccess, HttpStatusCode code = HttpStatusCode.OK, string message = "") {
-            return new CheckHeadersResult {
-                code = code,
-                message = message,
-                isSuccess = isSuccess
-            };
-        }
-
-        // 璁$畻璇锋眰楠岃瘉涓�-        private string CalculateRequestVerify(string appKey, string appSecret, long reqTime) {
-            using (var md5 = MD5.Create()) {
-                var input = $"{appKey}{appSecret}{reqTime}";
-                var inputBytes = Encoding.UTF8.GetBytes(input);
-                var hashBytes = md5.ComputeHash(inputBytes);
-
-                // 灏嗗瓧鑺傛暟缁勮浆鎹负鍗佸叚杩涘埗瀛楃涓�-                var sb = new StringBuilder();
-                foreach (var b in hashBytes) {
-                    sb.Append(b.ToString("x2"));
-                }
-                return sb.ToString();
-            }
-        }
-    }
-
-    // 璇锋眰妯″瀷
-    public class SecureRequest {
-        public string AppKey { get; set; }
-        public long ReqTime { get; set; }
-        public string ReqVerify { get; set; }
-    }
-
-    public class CheckHeadersResult {
-        public bool isSuccess { get; set; }
-        public HttpStatusCode code { get; set; }
-        public string message { get; set; }
     }
 }
diff --git a/api/DebugController.cs b/api/DebugController.cs
index 6934fdb..d2f7485 100644
--- a/api/DebugController.cs
+++ b/api/DebugController.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.IO;
 using System.Runtime.ConstrainedExecution;
 using System.Web.Http;
 
@@ -53,133 +54,6 @@
             returnResult.ResultList.Add(temp4);
 
             agvTaskState.state = 5;
-            var temp5 = WCSCore.OperateAgvTaskStatus(agvTaskState);
-            returnResult.ResultList.Add(temp5);
-
-            agvTaskState.state = 6;
-            var temp6 = WCSCore.OperateAgvTaskStatus(agvTaskState);
-            returnResult.ResultList.Add(temp6);
-
-            agvTaskState.state = 2;
-            var temp2 = WCSCore.OperateAgvTaskStatus(agvTaskState);
-            returnResult.ResultList.Add(temp2);
-
-            return returnResult;
-        }
-
-        /// <summary>
-        /// 妯℃嫙AGV鍥炴姤浠诲姟鐘舵�锛堟寚瀹氫笅涓�釜鐘舵�锛岀敤浜庨渶瑕佸垎娈垫祴璇曠殑鍦烘櫙锛�br/>
-        /// 鎬ц兘鐩稿杈冨樊锛屼粎鐢ㄤ簬娴嬭瘯锛屼竴鑸笉浣跨敤
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        [HttpPost]
-        [Route("AgvReports")]
-        public ReturnResults AgvReports(AgvReportsInfo model) {
-            var db = new SqlHelper<object>().GetInstance();
-            ReturnResults returnResult = new ReturnResults();
-            returnResult.ResultList = new List<ReturnResult>();
-            var agvTaskState = new AgvTaskState() {
-                task_no = model.TaskId,
-                forklift_no = model.ForkliftNo,
-            };
-
-            var taskAction = db.Queryable<TN_Task_Action>()
-                .Where(t => t.S_TASK_CODE == model.TaskId)
-                .OrderBy(t => new { create = SqlFunc.Desc(t.T_CREATE) }).First(); // 鏈�悗涓�釜Action鐘舵�
-
-            var lastState = taskAction?.N_ACTION_CODE ?? 0;
-
-            if (model.NextState <= 0 || model.NextState >= 7) {
-                LogHelper.Info("灏忚溅鍥炴姤鐘舵�涓嶅湪134562鐨勮寖鍥村唴");
-            }
-
-            // 0 ==> 1,3,4,5,6,2
-            if (lastState == 0 && model.NextState >= 1) {
-                agvTaskState.state = 1;
-                var temp = WCSCore.OperateAgvTaskStatus(agvTaskState);
-                returnResult.ResultList.Add(temp);
-            }
-            // 0,1 ==> 3,4,5,6,2
-            if (lastState < 2 && model.NextState >= 2) {
-                agvTaskState.state = 3;
-                var temp = WCSCore.OperateAgvTaskStatus(agvTaskState);
-                returnResult.ResultList.Add(temp);
-            }
-            // 0,1,3 ==> 4,5,6,2
-            if (lastState < 4 && lastState != 2 && (model.NextState >= 3 || model.NextState == 2)) {
-                agvTaskState.state = 4;
-                var temp = WCSCore.OperateAgvTaskStatus(agvTaskState);
-                returnResult.ResultList.Add(temp);
-            }
-            // 0,1,3,4 ==> 5,6,2
-            if (lastState < 5 && lastState != 2 && (model.NextState >= 4 || model.NextState == 2)) {
-                agvTaskState.state = 5;
-                var temp = WCSCore.OperateAgvTaskStatus(agvTaskState);
-                returnResult.ResultList.Add(temp);
-            }
-            // 0,1,3,4,5 ==> 6,2
-            if (lastState < 6 && lastState != 2 && (model.NextState >= 5 || model.NextState == 2)) {
-                agvTaskState.state = 6;
-                var temp = WCSCore.OperateAgvTaskStatus(agvTaskState);
-                returnResult.ResultList.Add(temp);
-            }
-            // 0,1,3,4,5,6 ==> 2
-            if (lastState != 2 && model.NextState == 2) {
-                agvTaskState.state = 2;
-                var temp = WCSCore.OperateAgvTaskStatus(agvTaskState);
-                returnResult.ResultList.Add(temp);
-            }
-
-            return returnResult;
-        }
-
-        /// <summary>
-        /// AGV鐘舵�涓�敭鍥炴姤134
-        /// </summary>
-        /// <param name="model">瀹瑰櫒鍙�/param>
-        /// <returns></returns>
-        [HttpPost]
-        [Route("AGVSeriesReports14")]
-        public ReturnResults AGVSeriesReports14(UpdateTaskState model) {
-            var agvTaskState = new AgvTaskState() {
-                task_no = model.TaskID,
-                forklift_no = model.ForkliftNo,
-                state = 1
-            };
-            ReturnResults returnResult = new ReturnResults();
-            returnResult.ResultList = new List<ReturnResult>();
-
-            var temp1 = WCSCore.OperateAgvTaskStatus(agvTaskState);
-            returnResult.ResultList.Add(temp1);
-
-            agvTaskState.state = 3;
-            var temp3 = WCSCore.OperateAgvTaskStatus(agvTaskState);
-            returnResult.ResultList.Add(temp3);
-
-            agvTaskState.state = 4;
-            var temp4 = WCSCore.OperateAgvTaskStatus(agvTaskState);
-            returnResult.ResultList.Add(temp4);
-
-            return returnResult;
-        }
-
-        /// <summary>
-        /// AGV鐘舵�涓�敭鍥炴姤562
-        /// </summary>
-        /// <param name="model">瀹瑰櫒鍙�/param>
-        /// <returns></returns>
-        [HttpPost]
-        [Route("AGVSeriesReports62")]
-        public ReturnResults AGVSeriesReports62(UpdateTaskState model) {
-            var agvTaskState = new AgvTaskState() {
-                task_no = model.TaskID,
-                forklift_no = model.ForkliftNo,
-                state = 5
-            };
-            ReturnResults returnResult = new ReturnResults();
-            returnResult.ResultList = new List<ReturnResult>();
-
             var temp5 = WCSCore.OperateAgvTaskStatus(agvTaskState);
             returnResult.ResultList.Add(temp5);
 
diff --git a/models/TN_Container.cs b/models/TN_Container.cs
index 0f11666..d39ed3d 100644
--- a/models/TN_Container.cs
+++ b/models/TN_Container.cs
@@ -26,7 +26,7 @@
 
         [SugarColumn(IsIgnore = true)]
         [Navigate(NavigateType.OneToMany, nameof(TN_CG_Detail.S_CNTR_CODE), nameof(S_CODE))]
-        public List<TN_CG_Detail> CntrItemRels { get; set; } 
+        public List<TN_CG_Detail> CntrItemRels { get; set; }
 
     }
 }
diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index c3a3343..adca1cd 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -23,14 +23,13 @@
             if (load) {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
-                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                LocationHelper.UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
             else {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
                 LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
-
         }
 
         /// <summary>
diff --git a/util/HttpHelper.cs b/util/HttpHelper.cs
index d509893..44c3df4 100644
--- a/util/HttpHelper.cs
+++ b/util/HttpHelper.cs
@@ -84,7 +84,6 @@
             Stream stream = null;
             WebResponse rsp = null;
             try {
-
                 rsp = request.GetResponse();
                 stream = rsp.GetResponseStream();
                 reader = new StreamReader(stream);
@@ -101,7 +100,6 @@
                 if (stream != null) stream.Close();
                 if (rsp != null) rsp.Close();
             }
-
         }
 
         public string Post(string url, string postData, string contentType = "application/json", string sessionId = "") {
@@ -137,7 +135,6 @@
                 if (stream != null) stream.Close();
                 if (rsp != null) rsp.Close();
             }
-
         }
 
         public string Post(string url, Dictionary<string, string> dic) {
@@ -173,7 +170,6 @@
             }
             catch (Exception e)
             {
-
                 LogHelper.Info($"PostWithCookie res={e.Message}", "API");
                 return "";
             }
@@ -183,7 +179,6 @@
                 if (stream != null) stream.Close();
                 if (rsp != null) rsp.Close();
             }
-
         }
 
         public string Put(string url, string postData, string contentType = "application/json", string sessionId = "")
diff --git a/util/LogHelper.cs b/util/LogHelper.cs
index bb0e16d..7621d26 100644
--- a/util/LogHelper.cs
+++ b/util/LogHelper.cs
@@ -83,7 +83,6 @@
             Info($"AGV浠诲姟锛歿taskName}" + JsonConvert.SerializeObject(model), "HosttoagvTask");
         }
         #endregion
-
     }
 
     internal class LogFactory
diff --git a/util/SqlHelper.cs b/util/SqlHelper.cs
index 94c166d..f8327ed 100644
--- a/util/SqlHelper.cs
+++ b/util/SqlHelper.cs
@@ -6,20 +6,19 @@
 namespace HH.WCS.Mobox3.DSZSH.util {
     //https://www.donet5.com/Home/Doc
     public class SqlHelper<T> where T : class, new() {
+        // NOTE锛氬鏋滅敤Oracle鏁版嵁搴擄紝闇�鍖匫racle.ManagedDataAccess/21.15.0锛岀幆澧僴etframework 4.6.2锛堝お鏂颁簡4.8鏈夌殑鏈嶅姟鍣ㄥ畨瑁呬笉涓婂幓锛� 
-        /// <summary>
-        /// 濡傛灉鐢∣racle鏁版嵁闇�鍖匫racle.ManagedDataAccess/21.15.0锛岀幆澧僴etframework 4.62锛屽お鏂颁簡4.8鏈夌殑鏈嶅姟鍣ㄥ畨瑁呬笉涓婂幓
-        /// </summary>
-        /// <param name="url"></param>
-        /// <returns></returns>
         public SqlSugarClient GetInstance(string url = "") {
             //鍒涘缓鏁版嵁搴撳璞�             SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() {
                 ConnectionString = string.IsNullOrEmpty(url) ? Settings.SqlServer : url,
+
                 //ConnectionString = @"Data Source=192.168.1.198\sql2008;Initial Catalog=OIMobox;User ID=sa;Password=sa@2015",
                 DbType = DbType.SqlServer,
+
                 //ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OIMobox)));User Id=system;Password=Am123123;",
                 //DbType = DbType.Oracle,
+
                 IsAutoCloseConnection = true,
                 InitKeyType = InitKeyType.Attribute//浠庣壒鎬ц鍙栦富閿嚜澧炰俊鎭�             });
@@ -63,7 +62,5 @@
 
             return db;
         }
-
     }
-
 }
diff --git a/util/WebHelper.cs b/util/WebHelper.cs
new file mode 100644
index 0000000..06c7464
--- /dev/null
+++ b/util/WebHelper.cs
@@ -0,0 +1,176 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HH.WCS.Mobox3.DSZSH.util {
+    // 灏濊瘯浼樺寲HttpHelper
+    public class WebHelper : IDisposable {
+        private readonly HttpClient _httpClient;
+        private readonly int _timeoutSeconds;
+
+        public WebHelper(int timeoutSeconds = 3) {
+            _httpClient = new HttpClient();
+            _timeoutSeconds = timeoutSeconds;
+            _httpClient.Timeout = TimeSpan.FromSeconds(_timeoutSeconds);
+        }
+
+        #region 寮傛鏂规硶
+        public async Task<string> GetAsync(string url, Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Get, url)) {
+                    AddHeaders(request, headers);
+
+                    var response = await _httpClient.SendAsync(request);
+                    response.EnsureSuccessStatusCode();
+
+                    return await response.Content.ReadAsStringAsync();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"GET request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+
+        public async Task<string> PostAsync(string url, string content, string contentType = "application/json", Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Post, url)) {
+                    AddHeaders(request, headers);
+
+                    request.Content = new StringContent(content, Encoding.UTF8, contentType);
+                    var response = await _httpClient.SendAsync(request);
+                    response.EnsureSuccessStatusCode();
+
+                    return await response.Content.ReadAsStringAsync();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"POST request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+
+        public async Task<string> PutAsync(string url, string content, string contentType = "application/json", Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Put, url)) {
+                    AddHeaders(request, headers);
+
+                    request.Content = new StringContent(content, Encoding.UTF8, contentType);
+                    var response = await _httpClient.SendAsync(request);
+                    response.EnsureSuccessStatusCode();
+
+                    return await response.Content.ReadAsStringAsync();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"PUT request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+
+        public async Task<string> DeleteAsync(string url, Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Delete, url)) {
+                    AddHeaders(request, headers);
+
+                    var response = await _httpClient.SendAsync(request);
+                    response.EnsureSuccessStatusCode();
+
+                    return await response.Content.ReadAsStringAsync();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"DELETE request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+        #endregion
+
+        #region 鍚屾鏂规硶
+        public string WebGet(string url, Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Get, url)) {
+                    AddHeaders(request, headers);
+
+                    var response = _httpClient.SendAsync(request).GetAwaiter().GetResult();
+                    response.EnsureSuccessStatusCode();
+
+                    return response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"GET request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+
+        public string WebPost(string url, string postData, string contentType = "application/json", Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Post, url)) {
+                    AddHeaders(request, headers);
+
+                    request.Content = new StringContent(postData, Encoding.UTF8, contentType);
+                    var response = _httpClient.SendAsync(request).GetAwaiter().GetResult();
+                    response.EnsureSuccessStatusCode();
+
+                    return response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"POST request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+
+        public string WebPut(string url, string putData, string contentType = "application/json", Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Put, url)) {
+                    AddHeaders(request, headers);
+
+                    request.Content = new StringContent(putData, Encoding.UTF8, contentType);
+                    var response = _httpClient.SendAsync(request).GetAwaiter().GetResult();
+                    response.EnsureSuccessStatusCode();
+
+                    return response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"PUT request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+
+        public string WebDelete(string url, Dictionary<string, string> headers = null) {
+            try {
+                using (var request = new HttpRequestMessage(HttpMethod.Delete, url)) {
+                    AddHeaders(request, headers);
+
+                    var response = _httpClient.SendAsync(request).GetAwaiter().GetResult();
+                    response.EnsureSuccessStatusCode();
+
+                    return response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
+                }
+            }
+            catch (Exception e) {
+                LogHelper.Info($"DELETE request failed: {e.Message}", "API");
+                return string.Empty;
+            }
+        }
+        #endregion
+
+        private void AddHeaders(HttpRequestMessage request, Dictionary<string, string> headers) {
+            if (headers != null) {
+                foreach (var header in headers) {
+                    request.Headers.TryAddWithoutValidation(header.Key, header.Value);
+                }
+            }
+        }
+
+        public void Dispose() {
+            _httpClient?.Dispose();
+        }
+    }
+}
diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index fea5c42..3ab86d1 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -143,15 +143,14 @@
         /// <param name="loc"></param>
         /// <param name="cntrs"></param>
         /// <returns></returns>
-        public static string UnBindingLoc(string loc, List<string> cntrs)
+        public static string UnbindLocCntr(string loc, List<string> cntrs)
         {
             var db = new SqlHelper<object>().GetInstance();
             var logs = $"璐т綅锛歿loc}锛屽鍣細{JsonConvert.SerializeObject(cntrs)}";
             try
             {
                 var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList();
-                if (lcrList.Count == 0)
-                {
+                if (lcrList.Count == 0) {
                     LogHelper.Info($"璐т綅鏃犻渶瑙g粦瀹瑰櫒锛屽湪鏁版嵁搴撲腑鏈壘鍒皗JsonConvert.SerializeObject(cntrs)}鐩稿叧鐨勮揣浣嶅鍣ㄥ叧绯昏〃淇℃伅");
                 }
                 cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList();
@@ -180,14 +179,12 @@
                         }
 
                         log = JsonConvert.SerializeObject(location);
-                        if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0)
-                        {
+                        if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) {
                             tran.CommitTran();
 
                             LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔燂紝{log}");
                         }
-                        else
-                        {
+                        else {
                             tran.RollbackTran();
 
                             LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐ワ紝{log}");

--
Gitblit v1.9.1