From 3909fbf77ad4ebc0dde600ff82710d959f74b5f4 Mon Sep 17 00:00:00 2001 From: 杨张扬 <634643841@qq.com> Date: 星期四, 10 七月 2025 17:49:20 +0800 Subject: [PATCH] AGV会换车,删除库存操作改成收到4执行,去线边的货位自动解绑 --- wms/WCSHelper.cs | 16 ++--- device/ScanCodeHelper.cs | 13 +++- device/TcpServer.cs | 6 - wms/SpecHelper.cs | 103 ++++++++++++++++++++++++++++++++- core/Monitor.cs | 10 --- api/ApiHelper.cs | 12 ---- core/WCSCore.cs | 14 ++++ 7 files changed, 127 insertions(+), 47 deletions(-) diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 7122e40..39fb574 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -1092,11 +1092,6 @@ }; SpecHelper.InsertComponentDetail(target); }); - - Task task27 = Task.Run(() => - { - SpecHelper.DeleteInventoryM(cgInfo.S_ID); - }); } else { @@ -1938,13 +1933,6 @@ SHIFT = model.shift, }; SpecHelper.InsertInventoryM(target); - } - }); - Task task26 = Task.Run(() => - { - if (startLoc.S_AREA_CODE == Settings.Areas[1] && cginfo != null) - { - SpecHelper.DeleteInventoryM(cginfo.S_ID); } }); diff --git a/core/Monitor.cs b/core/Monitor.cs index f79b8a9..2714a0e 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -462,11 +462,6 @@ LocationHelper.LockLoc(startLoc_1.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 LocationHelper.LockLoc(endLoc_1.S_CODE, 1);//缁堢偣鍏ュ簱閿� LogHelper.Info($"鐢熸垚婊℃墭杩囨湡鍑哄簱浠诲姟鎴愬姛锛屽鍣ㄥ彿{outTimeCg.S_CNTR_CODE}锛岃捣鐐箋startLoc_1.S_CODE}锛岀粓鐐箋endLoc_1.S_CODE}"); - - Task task27 = Task.Run(() => - { - SpecHelper.DeleteInventoryM(outTimeCg.S_ID); - }); } } } @@ -943,11 +938,6 @@ LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� LogHelper.Info($"鐢熸垚婊℃墭鍑哄簱澶嶆浠诲姟鎴愬姛锛屽鍣細{cntId.S_CNTR_CODE}锛岃捣鐐癸細{startLoc.S_CODE}锛岀粓鐐癸細{endLoc.S_CODE}"); - - Task task27 = Task.Run(() => - { - SpecHelper.DeleteInventoryM(cgInfo.S_ID); - }); } else { diff --git a/core/WCSCore.cs b/core/WCSCore.cs index 364926e..0d76837 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -35,8 +35,9 @@ } else if (model.state == 1012) { - Task task5 = Task.Run(() => + Task task5 = Task.Run(async () => { + await Task.Delay(3000);//寤舵椂3绉� PostScanCode(model.task_no, model.forklift_no);//鍙嶉鎵爜缁撴灉 }); } @@ -86,6 +87,11 @@ Task task1 = Task.Run(() => { returnS7Ok(tN_Task); + }); + + Task task27 = Task.Run(() => + { + SpecHelper.DeleteInventoryM(tN_Task); }); break; @@ -157,6 +163,11 @@ break; case 2: WCSHelper.End(tN_Task);//浠诲姟鐘舵�鏀规垚缁撴潫 + + Task task16 = Task.Run(() => + { + SpecHelper.RestEndLoc(tN_Task); + }); break; case 7: @@ -473,7 +484,6 @@ { //鎺ㄩ�鎴愬姛 LogHelper.Info($"NDC鍙嶉鎵爜缁撴灉鎴愬姛锛屾壂鐮佺粨鏋滐細{TcpServer.saoMa[agv.ScanAddress].ToString()}"); - } else { diff --git a/device/ScanCodeHelper.cs b/device/ScanCodeHelper.cs index 415ed2b..4c0f05f 100644 --- a/device/ScanCodeHelper.cs +++ b/device/ScanCodeHelper.cs @@ -53,15 +53,20 @@ { var db = new SqlHelper<TN_Task>().GetInstance(); var task = new TN_Task(); - task = db.Queryable<TN_Task>().Where(a => a.S_EQ_NO == agvCode && a.N_B_STATE == 2).OrderByDescending(b => b.T_CREATE).First(); - if (task != null && RFID.Contains(task.S_CNTR_CODE)) + task = db.Queryable<TN_Task>().Where(a => a.S_EQ_NO == agvCode).OrderByDescending(b => b.T_START_TIME).First(); + if (task != null && + ( + RFID == task.S_CNTR_CODE + || RFID.Contains(task.S_CNTR_CODE) + || task.S_CNTR_CODE.Contains(RFID) + )) { - LogHelper.Info($"鏍¢獙鎴愬姛Agv锛歿agvCode}瀹瑰櫒鍙凤細{RFID}"); + LogHelper.Info($"鏍¢獙鎴愬姛Agv锛歿agvCode}锛岃鍗″櫒鐨勫鍣ㄥ彿锛歿RFID}锛屼换鍔$殑瀹瑰櫒鍙凤細{ task.S_CNTR_CODE}"); return true; } else { - LogHelper.Info($"鏍¢獙澶辫触Agv锛歿agvCode}瀹瑰櫒鍙凤細{RFID}"); + LogHelper.Info($"鏍¢獙澶辫触Agv锛歿agvCode}锛岃鍗″櫒鐨勫鍣ㄥ彿锛歿RFID}锛屼换鍔$殑瀹瑰櫒鍙凤細{ task?.S_CNTR_CODE ?? "浠诲姟鏈壘鍒�}"); //鏍¢獙澶辫触灏卞彇娑堜换鍔� //var task1 = Task.Run(() => diff --git a/device/TcpServer.cs b/device/TcpServer.cs index 2f79907..d72eef8 100644 --- a/device/TcpServer.cs +++ b/device/TcpServer.cs @@ -100,8 +100,6 @@ clients.Remove(remote_ip); buffers.Remove(remote_ip); isSend.Remove(remote_ip); - isCheck.Remove(remote_ip); - saoMa.Remove(remote_ip); return; } else @@ -183,7 +181,7 @@ { //鍗峰笜闂ㄥ紑鍏� var plc = Settings.SafeDoorDevices.FirstOrDefault(a => a.IPAddress == remote_ip); - var log = string.Join(",", messageBytes.Select(x => x.ToString())); + var log = BitConverter.ToString(messageBytes); if (plc != null && messageBytes[0] == 0x3F && messageBytes[1] == 0x00 && @@ -229,7 +227,7 @@ } catch (Exception ex) { - + LogHelper.Error(ex.Message, ex); } } diff --git a/wms/SpecHelper.cs b/wms/SpecHelper.cs index 257bb58..afce956 100644 --- a/wms/SpecHelper.cs +++ b/wms/SpecHelper.cs @@ -280,6 +280,90 @@ } /// <summary> + /// 閲嶇疆缁堢偣璐т綅锛屽彧閽堝鍘荤嚎杈圭殑璐у搧 + /// </summary> + /// <param name="tN_Task"></param> + internal static void RestEndLoc(TN_Task tN_Task) + { + try + { + if (tN_Task.S_END_AREA == Settings.Areas[2] || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎")) + { + var db = new SqlHelper<object>().GetInstance(); + + using (var tran = db.Ado.UseTran()) + { + var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == tN_Task.S_END_LOC); + if (endLoc != null) + { + endLoc.N_CURRENT_NUM = 0; + endLoc.N_LOCK_STATE = 0; + endLoc.S_LOCK_STATE = "鏃�; + + if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0) + { + LogHelper.Info($"鏇存柊缁堢偣璐т綅鎴愬姛锛寋JsonConvert.SerializeObject(endLoc)}"); + } + else + { + LogHelper.Info($"鏇存柊缁堢偣璐т綅澶辫触锛寋JsonConvert.SerializeObject(endLoc)}"); + tran.RollbackTran(); + return; + } + + var locCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == endLoc.S_CODE); + + if (locCnt != null) + { + var cgInfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == locCnt.S_CNTR_CODE); + + if (db.Deleteable<TN_Loc_Container>(locCnt).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒缁戝畾鍏崇郴鎴愬姛锛寋JsonConvert.SerializeObject(locCnt)}"); + } + else + { + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒缁戝畾鍏崇郴澶辫触锛寋JsonConvert.SerializeObject(locCnt)}"); + tran.RollbackTran(); + return; + } + + if (cgInfo != null) + { + if (db.Deleteable<TN_CG_Detail>(cgInfo).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎瀹瑰櫒璐у搧鏄庣粏鎴愬姛锛寋JsonConvert.SerializeObject(cgInfo)}"); + } + else + { + LogHelper.Info($"鍒犻櫎瀹瑰櫒璐у搧鏄庣粏澶辫触锛寋JsonConvert.SerializeObject(cgInfo)}"); + tran.RollbackTran(); + return; + } + } + } + } + + tran.CommitTran(); + LogHelper.Info($"閲嶇疆缁堢偣璐т綅锛屾垚鍔燂紝{JsonConvert.SerializeObject(tN_Task)}"); + return; + } + } + else + { + LogHelper.Info($"褰撳墠浠诲姟缁堢偣璐т綅涓嶆槸鍘荤嚎杈癸紝涓嶉渶瑕侀噸缃粓鐐硅揣浣嶏紝{JsonConvert.SerializeObject(tN_Task)}"); + return; + } + + + } + catch (Exception ex) + { + LogHelper.Error("閲嶇疆缁堢偣璐т綅锛屽彧閽堝鍘荤嚎杈圭殑璐у搧 澶辫触", ex); + } + } + + /// <summary> /// 鏇存柊浣欐枡鍥炲簱鏄庣粏 /// </summary> public static void UpdateSurplusDetail(string taskNo,float weight) @@ -387,18 +471,27 @@ /// <summary> /// 鍒犻櫎WMS搴撳瓨鏄庣粏 /// </summary> - public static void DeleteInventoryM(string cg_SID) + public static void DeleteInventoryM(TN_Task taskTn) { try { - var db = new SqlHelper<object>().GetInstance(); - if(db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cg_SID).ExecuteCommand() > 0) + if (taskTn.S_START_AREA == Settings.Areas[1] || taskTn.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎")) //涓嶆槸浠庢弧鎵樼紦瀛樺簱鍖虹Щ鍑哄氨涓嶅垹闄� { - LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屾垚鍔燂紝鐗╂枡涓婚敭锛歿cg_SID}"); + var db = new SqlHelper<object>().GetInstance(); + + if (db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == taskTn.S_ID || it.RFID == taskTn.S_CNTR_CODE).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屾垚鍔燂紝鐗╂枡涓婚敭锛歿taskTn.S_ID}锛屽鍣ㄥ彿锛歿taskTn.S_CNTR_CODE}"); + } + else + { + LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屽け璐ワ紝鐗╂枡涓婚敭锛歿taskTn.S_ID}锛屽鍣ㄥ彿锛歿taskTn.S_CNTR_CODE}"); + } } else { - LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屽け璐ワ紝鐗╂枡涓婚敭锛歿cg_SID}"); + LogHelper.Info($"涓嶆槸浠庢弧鎵樼紦瀛樺簱鍖烘惉鍑虹殑璐т綅锛屼笉闇�鍒犻櫎搴撳瓨鏄庣粏锛岀墿鏂欎富閿細{taskTn.S_ID}锛屽鍣ㄥ彿锛歿taskTn.S_CNTR_CODE}"); + return; } } catch (Exception ex) diff --git a/wms/WCSHelper.cs b/wms/WCSHelper.cs index 8ce42cb..665d4cf 100644 --- a/wms/WCSHelper.cs +++ b/wms/WCSHelper.cs @@ -187,15 +187,11 @@ var db = new SqlHelper<TN_Task>().GetInstance(); if (task != null) { - if (task.N_B_STATE == 1) - { - task.N_B_STATE = 2; - task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); - task.T_START_TIME = System.DateTime.Now; - task.S_EQ_NO = forklift_no; - db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand(); - } - + task.N_B_STATE = 2; + task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); + task.T_START_TIME = System.DateTime.Now; + task.S_EQ_NO = forklift_no; + db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand(); } } internal static void End(TN_Task task) { @@ -244,7 +240,7 @@ { LogHelper.Info($"鍙栨秷浠诲姟: {tN_Task.S_CODE} 缁堢偣鏄弧鎵樼紦瀛樺簱鍖� {tN_Task.S_END_AREA}"); - TaskProcess.OperateStatus(tN_Task, 7);//寮傚父澶勭悊 + TaskProcess.CacheBitCancelUpdate(tN_Task);//寮傚父澶勭悊 } else if (tN_Task.S_START_AREA == HJ || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎"))//璧风偣鏄弧鎵樼紦瀛樺簱鍖� { -- Gitblit v1.9.1