From 1319cb7072623dff12369a889af766db2d166def Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期一, 28 七月 2025 17:58:47 +0800 Subject: [PATCH] 叠盘机优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs | 141 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 114 insertions(+), 27 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs index 528b307..186c504 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs @@ -15,6 +15,7 @@ using System.Diagnostics.Eventing.Reader; using System.IdentityModel.Protocols.WSTrust; using System.Linq; +using System.Net.NetworkInformation; using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; @@ -47,7 +48,7 @@ else { LogHelper.Info($"浠诲姟{mst.S_CODE} 鎵樼洏涓虹┖ ,鍙В閿佽揣浣�); - LocationHelper.UnlockLoc(mst.S_START_LOC); + LocationHelper.UnlockLocDeleteCntrs(mst.S_START_LOC); } } else @@ -79,18 +80,26 @@ { //鏍规嵁瀹㈡埛鐜板満瑕佹眰锛屽鏋滃彇璐у畬鎴愪换鍔″け璐ヤ汉宸ユ媺鍒扮粓鐐癸紝鎴戜滑灏卞綋鍗歌揣瀹屾垚澶勭悊锛涘鏋滄槸浜哄伐鎷夎蛋鍒板叾瀹冨尯鍩燂紝鎴戜滑灏辫В閿佺粓鐐癸紝鍒犻櫎鎵樼洏銆� //缁堢偣缁戝畾 + //鐗╂枡鍒颁綅閫氱煡 + if (mst.S_TYPE == "鍑哄钩搴� || mst.S_TYPE == "浣欐枡杩斿洖") + { + string urlitem = Settings.tableUrls.Find(a => a.id == 5).url; + TaskProcess.MESIteminfoback(mst, urlitem); + } + if ((mst.S_NOTE == "鍑哄簱" || mst.S_NOTE == "寮傚父搴撳尯鍏ュ簱") && !string.IsNullOrEmpty(mst.S_MES_NO)) + { + string urlitem = Settings.tableUrls.Find(a => a.id == 5).url; + TaskProcess.MESIteminfoback(mst, urlitem); + } CacheBitUpdate(mst, false); LocationHelper.UnLockLoc(mst.S_END_LOC); } else { - //璧风偣缁堢偣瑙i攣 LocationHelper.UnLockLoc(mst.S_START_LOC); LocationHelper.UnLockLoc(mst.S_END_LOC); - } - } /// <summary> @@ -99,7 +108,7 @@ /// <param name="model">璇锋眰鍙傛暟</param> /// <param name="url">鍦板潃</param> /// <param name="TN_Task">浠诲姟</param> - internal static void OperateReq(AgvTaskState model, string url, WCSTask TN_Task) + internal static void OperateReq(AgvTaskState model, string url, WCSTask TN_Task, string name) { try { @@ -159,6 +168,7 @@ //浜曟澗鍙犵洏鏈哄畨鍏ㄤ氦浜� if (TN_Task.S_NOTE == "绌烘墭鍥炲簱") { + LogHelper.Info($"-------鍙犵洏鏈哄畨鍏ㄨ姹�-----"); var Device = Settings.deviceInfos.Where(a => a.TN_Location == TN_Task.S_START_LOC).FirstOrDefault(); if (Device != null) { @@ -187,7 +197,7 @@ } else { - if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state)) + if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) { // NDCHelper.ChangeParam(TN_Task.S_CODE.Trim(), 1101, 18); NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); @@ -211,9 +221,20 @@ } if (TN_Task.S_NOTE == "绌烘墭鍥炲簱") { + LogHelper.Info($"-------鍙犵洏鏈哄畨鍏ㄨ姹�-----"); var Device = Settings.deviceInfos.Where(a => a.TN_Location == TN_Task.S_START_LOC).FirstOrDefault(); if (Device != null) { + if (!S7Helper.WriteDpj(Device.address, 1002, 0)) + { + Task.Run(() => + { + while (!S7Helper.WriteDpj(Device.address, 1002, 0)) + { + Thread.Sleep(1000); + } + }); + } //鍐欏叆澶辫触閲嶆柊鍐欏叆 if (!S7Helper.WriteDpj(Device.address, 1001, 1)) { @@ -225,16 +246,7 @@ } }); } - if (!S7Helper.WriteDpj(Device.address, 1002, 0)) - { - Task.Run(() => - { - while (!S7Helper.WriteDpj(Device.address, 1002, 0)) - { - Thread.Sleep(1000); - } - }); - } + } else { @@ -290,7 +302,7 @@ } else { - if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state)) + if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) { NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); } @@ -344,7 +356,6 @@ } catch (Exception ex) { - LogHelper.Info($"OperateReq Error ==銆媨ex.ToString()}"); } @@ -361,7 +372,7 @@ /// <param name="type"></param> /// <param name="taskStatus"></param> /// <returns></returns> - internal static bool OperateReqByPost(string url, string tasknum, string ordernum, string station, int type, int taskStatus) + internal static bool OperateReqByPost(string url, string tasknum, string ordernum, string station, int type, int taskStatus, string name) { bool permit = false; try @@ -386,6 +397,7 @@ LogHelper.Info($"瀹夊叏璇锋眰澶辫触=>msg:{result.msg}"); ApiHelper.AddErrorInfo("瀹夊叏浜や簰澶辫触", result.msg, "", tasknum); } + ApiHelper.AddInfo(name, "瀹夊叏璇锋眰", date, JsonConvert.SerializeObject(result), "Post", url); return permit; } catch (Exception) @@ -436,6 +448,7 @@ LogHelper.Info($"瀹夊叏璇锋眰澶辫触=>msg:{result.err_msg}"); ApiHelper.AddErrorInfo("瀹夊叏浜や簰澶辫触", result.err_msg, "", no); } + ApiHelper.AddInfo("YCL", "瀹夊叏璇锋眰", date, JsonConvert.SerializeObject(result), "Post", url); return permit; } catch (Exception) @@ -461,7 +474,7 @@ if (taskLimit != null) { Console.WriteLine($"浠诲姟锛歿mst.S_CODE},璧风偣浠撳簱锛歿mst.S_START_WH}宸茬粡绂佺敤鎺ㄩ�"); - return result; + return false; } var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO == mst.S_EQ_NO).ToList(); @@ -490,7 +503,7 @@ { var mst2 = mstbyEqno.Where(a => a.S_TYPE == "鐢垫1").First(); if (mst2 == null) - { + { return result; } else @@ -561,14 +574,22 @@ internal static bool SendTask(WCSTask mst) { - + var db = new SqlHelper<object>().GetInstance(); var result = false; var start = "0"; var end = "0"; var taskType = mst.S_TYPE.Trim(); + var list = db.Queryable<Location>().ToList().Count; + // if (mst.N_B_STATE == 0) { if (mst.N_SCHEDULE_TYPE == 1) { LogHelper.Info($"浠诲姟鎺ㄩ�鏁版嵁锛歿JsonConvert.SerializeObject(mst)}"); + if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC)) + { + LogHelper.Info($"浠诲姟{mst.S_CODE},璧风偣缁堢偣鏈夌┖鍙傛暟锛屼笉鎺ㄩ�浠诲姟"); + } + + start = LocationHelper.GetAgvSite(mst.S_START_LOC); end = LocationHelper.GetAgvSite(mst.S_END_LOC); //if (mst.N_START_LAYER > 1) @@ -666,7 +687,22 @@ // } return result; } - + /// <summary> + /// 绌烘墭绛夊緟浠诲姟 瓒呮椂5鍒嗙粍鐩存帴鎺ㄩ� + /// </summary> + /// <param name="mst"></param> + /// <returns></returns> + internal static void WaitSend(WCSTask mst) + { + // 璁$畻涓庡綋鍓嶆椂闂寸殑宸� + TimeSpan timeDifference = DateTime.Now - mst.T_CREATE; + if (timeDifference.TotalMinutes > 5) + { + var db = new SqlHelper<WCSTask>().GetInstance(); + mst.S_B_STATE = "绛夊緟"; + db.Updateable(mst).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand(); + } + } /// <summary> /// 浠诲姟鐘舵�鍥炴姤 /// </summary> @@ -674,7 +710,7 @@ /// <param name="orderNum">鍗曞彿</param> /// <param name="taskStatus">浠诲姟鐘舵�</param> /// <param name="url">涓婃姤鎺ュ彛</param> - public static void Reportback(string taskNum, string orderNum, int taskStatus, string url) + public static void Reportback(string taskNum, string orderNum, int taskStatus, string url, string ly) { LogHelper.Info($"------------寮�浠诲姟鍥炴姤-----------"); try @@ -704,6 +740,7 @@ { LogHelper.Info($"浠诲姟鍥炴姤澶辫触=>msg:{result.msg}"); } + ApiHelper.AddInfo(ly, "浠诲姟鐘舵�鍥炴姤", date, JsonConvert.SerializeObject(result), "Post", url); } catch (Exception ex) { @@ -757,6 +794,7 @@ { LogHelper.Info($"浠诲姟鍥炴姤澶辫触="); } + ApiHelper.AddInfo("Wms", "浠诲姟鐘舵�鍥炴姤", date, JsonConvert.SerializeObject(result), "Post", url); } catch (Exception ex) { @@ -802,6 +840,7 @@ { LogHelper.Info($"浠诲姟鍥炴姤澶辫触=>msg:{result.err_msg}"); } + ApiHelper.AddInfo("YCL", "浠诲姟鐘舵�鍥炴姤", date, JsonConvert.SerializeObject(result), "Post", url); } catch (Exception ex) { @@ -826,7 +865,24 @@ //鑾峰彇鏃堕棿鎴� var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); statusarrive.RequestId = "鏉弶AGV" + time; - + string info = ""; + switch (status) + { + case 1: + info = "agv宸叉帴鍙楀師鏂欏簱涓嬪彂鐨勪换鍔�; + break; + case 4: + info = "agv宸插彇璐у畬鎴�; + break; + case 6: + info = "agv宸插嵏璐у埌鎸囧畾浣嶇疆"; + break; + case 2: + info = "agv宸插畬鎴愰�鏂欎换鍔�; + break; + } + string message = "1"; + if (status == 7) { message = "agv浠诲姟宸插彇娑�; } int flag = 0; if (mst.S_NOTE == "绮夋枡") { @@ -836,11 +892,20 @@ StatusArrive statusArrive = new StatusArrive(); statusarrive.UseToken = "iFQ5fExGrLYLXliHYWzs"; statusArrive.TaskNumber = mst.S_EQ_NO; - statusArrive.LocationNum = mst.S_END_LOC; + if (status == 1 || status == 3 || status == 4) + { + statusArrive.LocationNum = mst.S_START_LOC; + } + else + { + statusArrive.LocationNum = mst.S_END_LOC; + } statusArrive.Time = DateTime.Now.ToString(); statusArrive.Status = status.ToString(); statusArrive.Rfid = mst.S_CNTR_CODE; statusArrive.Flag = flag; + statusArrive.Info = info; + statusArrive.Message = message; //statusArrives.Add(statusArrive); statusarrive.data = statusArrive; @@ -861,6 +926,7 @@ { LogHelper.Info($"浠诲姟鍥炴姤澶辫触=>msg:{result.imsg}"); } + ApiHelper.AddInfo("Mes", "浠诲姟鐘舵�鍥炴姤", date, JsonConvert.SerializeObject(result), "Post", url); } catch (Exception ex) { @@ -892,6 +958,7 @@ //绮夋枡鍥炲簱涓嶉渶瑕佸洖鎶� if (cntritem != null && mst.S_TYPE == "浣欐枡杩斿洖" && cntritem.S_ITEM_CODE.StartsWith("4X")) { + LogHelper.Info("绮夋枡鍥炲簱涓嶉渶瑕佸埌浣嶅彂閫佺墿鏂欏埌浣�); return; } //鑾峰彇鏃堕棿鎴�@@ -911,8 +978,24 @@ if (cntritem != null) { + string curBagNum = null; + string weightBag = null; + string initBagNum = null; + if ((int)cntritem.F_QTY > 0) + { + curBagNum = cntritem.F_QTY.ToString(); + } + if (!string.IsNullOrEmpty(cntritem.F_WEIGHT1) && int.Parse(cntritem.F_WEIGHT1) > 0) + { + weightBag = cntritem.F_WEIGHT1; + } + if (!string.IsNullOrEmpty(cntritem.F_QTY1) && int.Parse(cntritem.F_QTY1) > 0) + { + initBagNum = cntritem.F_QTY1; + } list.Add(new MesItemBackInfoModel() { + LotNumber = cntritem.S_BATCH_NO, PartNumber = cntritem.S_ITEM_CODE, Subpool = cntritem.Subpool, @@ -923,7 +1006,10 @@ Rfid = cntritem.S_CNTR_CODE, Qty = cntritem.F_WEIGHT, PartLevel = cntritem.LEV, - WmsLot = cntritem.WmsLot + WmsLot = cntritem.WmsLot, + WeightBag = weightBag, + CurBagNum = curBagNum, + InitBagNum = initBagNum }); @@ -949,6 +1035,7 @@ { LogHelper.Info($"鐗╂枡鍒颁綅鍥炴姤澶辫触=>msg:{result.imsg}"); } + ApiHelper.AddInfo("Mes", "鐗╂枡鍒颁綅鍥炴姤", date, JsonConvert.SerializeObject(result), "Post", url); } catch (Exception ex) { -- Gitblit v1.9.1