From 0603ed63da0fdaeb2fb71b3455f184427373a018 Mon Sep 17 00:00:00 2001 From: pengmn <pmn@HanInfo> Date: 星期二, 20 五月 2025 10:55:37 +0800 Subject: [PATCH] 升降量表 --- HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 216 insertions(+), 0 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs b/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs index 099bb7f..e083743 100644 --- a/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs @@ -1,5 +1,6 @@ 锘縰sing HH.WCS.HangYang.api; using HH.WCS.HangYang.LISTA.models; +using HH.WCS.HangYang.LISTA.models.wms; using HH.WCS.HangYang.models.other; using HH.WCS.HangYang.util; using Newtonsoft.Json; @@ -14,6 +15,7 @@ using System.Linq.Expressions; using System.Reflection; using System.Runtime.Remoting.Messaging; +using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading; @@ -608,6 +610,7 @@ } return result; } + #region 鏉哀WMS甯姪鏂规硶 /// <summary> /// 鏂板鍏ュ簱鍗�@@ -1237,5 +1240,218 @@ } } #endregion + + #region 鏉哀鍗囬檷閲忚〃甯姪鏂规硶 + /// <summary> + /// MD5鍔犲瘑 + /// </summary> + /// <param name="sInput"></param> + /// <returns></returns> + public static string GetMd5FromString(string sInput) + { + var lstData = Encoding.GetEncoding("utf-8").GetBytes(sInput); + var lstHash = new MD5CryptoServiceProvider().ComputeHash(lstData); + var result = new StringBuilder(32); + for (int i = 0; i < lstHash.Length; i++) + { + result.Append(lstHash[i].ToString("x2").ToUpper()); + } + return result.ToString(); + } + + /// <summary> + /// 鏍规嵁浠诲姟鍗囬噺 + /// </summary> + /// <param name="task"></param> + internal static void AddChange(WCSTask task) + { + var db = new SqlHelper<object>().GetInstance(); + var result = true; + try + { + var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).ToList(); + if (itemlist.Count > 0) + { + var url = Settings.MoboxSeverUrl + "inventory/AddChange"; + //浠撳簱閲忚〃鍗囬噺 + var req = new AddChangeModel { op_type = 5 }; + //搴撳尯閲忚〃鍗囬噺 + var req2 = new AddChangeModel { op_type = 6 }; + itemlist.ForEach(a => + { + LogHelper.Info($"濉厖鏁版嵁"); + LogHelper.Info($"娣诲姞浠撳簱閲忚〃鏁版嵁 浠撳簱{task.S_END_WH} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}"); + req.item_info.Add(new AddChangeModel.itemModel + { + wh_code = task.S_END_WH, + item_code = a.S_ITEM_CODE, + item_name = a.S_ITEM_NAME, + qty = a.F_QTY + }); + LogHelper.Info($"娣诲姞搴撳尯閲忚〃鏁版嵁 搴撳尯{task.S_END_AREA} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}"); + req2.item_info.Add(new AddChangeModel.itemModel + { + wh_code = task.S_END_WH, + area_code = task.S_END_AREA, + item_code = a.S_ITEM_CODE, + item_name = a.S_ITEM_NAME, + qty = a.F_QTY + }); + }); + var reqData = JsonConvert.SerializeObject(req); + var AppKey = Settings.AppKey; + var AppSecret = Settings.AppSecret; + var ReqTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //var ReqTime = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2); + LogHelper.Info($"鍔犲瘑鍓�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime}"); + var ReqVerify = GetMd5FromString(AppKey + AppSecret + ReqTime); + LogHelper.Info($"鍔犲瘑鍚�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ReqVerify={ReqVerify} url={url} req={reqData}"); + var res = new HttpHelper().WebPost(url, reqData, "application/json", AppKey, ReqTime, ReqVerify); + if (!string.IsNullOrEmpty(res)) + { + LogHelper.Info($"mobox 浠撳簱鍗囬噺鎺ュ彛杩斿洖 {res}"); + var moboxres = JsonConvert.DeserializeObject<moboxres>(res); + if (moboxres.err_code != 0) + { + result = false; + } + } + else + { + LogHelper.Info($"mobox 浠撳簱鍗囬噺鎺ュ彛杩斿洖涓虹┖"); + result = false; + } + var reqData2 = JsonConvert.SerializeObject(req2); + var ReqTime2 = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //var ReqTime2 = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2); + LogHelper.Info($"鍔犲瘑鍓�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime2}"); + var ReqVerify2 = GetMd5FromString(AppKey + AppSecret + ReqTime2); + LogHelper.Info($"鍔犲瘑鍚�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime2} ReqVerify={ReqVerify2} url={url} req={reqData2}"); + var res2 = new HttpHelper().WebPost(url, reqData2, "application/json", AppKey, ReqTime2, ReqVerify2); + if (!string.IsNullOrEmpty(res2)) + { + LogHelper.Info($"mobox 搴撳尯鍗囬噺鎺ュ彛杩斿洖 {res2}"); + var moboxres = JsonConvert.DeserializeObject<moboxres>(res); + if (moboxres.err_code != 0) + { + result = false; + } + } + else + { + LogHelper.Info($"mobox 搴撳尯鍗囬噺鎺ュ彛杩斿洖涓虹┖"); + result = false; + } + + } + else LogHelper.Info($"鎵樼洏{task.S_CNTR_CODE} 鍦ㄥ鍣ㄨ揣鍝佹槑缁嗕腑鎵句笉鍒版暟鎹�); + } + catch (Exception ex) + { + LogHelper.Error($"浠撳簱鍗囬噺寮傚父 寮傚父淇℃伅={ex.Message}", ex); + } + } + + /// <summary> + /// 鏍规嵁浠诲姟闄嶉噺 + /// </summary> + /// <param name="task"></param> + internal static void DeleteChange(WCSTask task) + { + var db = new SqlHelper<object>().GetInstance(); + var result = true; + try + { + var wmstask = db.Queryable<WMSTask>().Where(a => a.S_CODE == task.S_OP_CODE).First(); + if (wmstask != null) + { + var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).ToList(); + if (itemlist.Count > 0) + { + var url = Settings.MoboxSeverUrl + "inventory/AddChange"; + //浠撳簱閲忚〃鍗囬噺 + var req = new AddChangeModel { op_type = 4 }; + //搴撳尯閲忚〃鍗囬噺 + var req2 = new AddChangeModel { op_type = 7 }; + itemlist.ForEach(a => + { + LogHelper.Info($"濉厖鏁版嵁"); + LogHelper.Info($"鍑忎粨搴撻噺琛ㄦ暟鎹�浠撳簱{task.S_END_WH} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}"); + req.item_info.Add(new AddChangeModel.itemModel + { + wh_code = wmstask.S_START_WH, + item_code = a.S_ITEM_CODE, + item_name = a.S_ITEM_NAME, + qty = a.F_QTY + }); + LogHelper.Info($"鍑忓簱鍖洪噺琛ㄦ暟鎹�搴撳尯{task.S_END_AREA} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}"); + req2.item_info.Add(new AddChangeModel.itemModel + { + wh_code = wmstask.S_START_WH, + area_code = wmstask.S_START_AREA, + item_code = a.S_ITEM_CODE, + item_name = a.S_ITEM_NAME, + qty = a.F_QTY + }); + }); + var reqData = JsonConvert.SerializeObject(req); + var AppKey = Settings.AppKey; + var AppSecret = Settings.AppSecret; + var ReqTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //var ReqTime = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2); + LogHelper.Info($"鍔犲瘑鍓�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime}"); + var ReqVerify = GetMd5FromString(AppKey + AppSecret + ReqTime); + LogHelper.Info($"鍔犲瘑鍚�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ReqVerify={ReqVerify} url={url} req={reqData}"); + var res = new HttpHelper().WebPost(url, reqData, "application/json", AppKey, ReqTime, ReqVerify); + if (!string.IsNullOrEmpty(res)) + { + LogHelper.Info($"mobox 浠撳簱闄嶉噺鎺ュ彛杩斿洖 {res}"); + var moboxres = JsonConvert.DeserializeObject<moboxres>(res); + if (moboxres.err_code != 0) + { + result = false; + } + } + else + { + LogHelper.Info($"mobox 浠撳簱闄嶉噺鎺ュ彛杩斿洖涓虹┖"); + result = false; + } + var reqData2 = JsonConvert.SerializeObject(req2); + var ReqTime2 = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //var ReqTime2 = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2); + LogHelper.Info($"鍔犲瘑鍓�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime2}"); + var ReqVerify2 = GetMd5FromString(AppKey + AppSecret + ReqTime2); + LogHelper.Info($"鍔犲瘑鍚�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime2} ReqVerify={ReqVerify2} url={url} req={reqData2}"); + var res2 = new HttpHelper().WebPost(url, reqData2, "application/json", AppKey, ReqTime2, ReqVerify2); + if (!string.IsNullOrEmpty(res2)) + { + LogHelper.Info($"mobox 搴撳尯闄嶉噺鎺ュ彛杩斿洖 {res2}"); + var moboxres = JsonConvert.DeserializeObject<moboxres>(res); + if (moboxres.err_code != 0) + { + result = false; + } + } + else + { + LogHelper.Info($"mobox 搴撳尯闄嶉噺鎺ュ彛杩斿洖涓虹┖"); + result = false; + } + + } + else LogHelper.Info($"鎵樼洏{task.S_CNTR_CODE} 鍦ㄥ鍣ㄨ揣鍝佹槑缁嗕腑鎵句笉鍒版暟鎹�); + } + else LogHelper.Info($"鏈壘鍒颁换鍔task.S_CODE} 瀵瑰簲鐨勪綔涓�); + + } + catch (Exception ex) + { + LogHelper.Error($"浠撳簱闄嶉噺寮傚父 寮傚父淇℃伅={ex.Message}", ex); + } + } + + + #endregion } } -- Gitblit v1.9.1