From 6d2faa6e299bdfe545ee339269e64f2900229147 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 16 七月 2025 17:29:26 +0800 Subject: [PATCH] 添加AGV实时状态反馈接口、看板获取AGV状态接口 --- core/WCSCore.cs | 409 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 267 insertions(+), 142 deletions(-) diff --git a/core/WCSCore.cs b/core/WCSCore.cs index c7fe69d..9ca3c44 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -2,7 +2,6 @@ using HH.WCS.Mobox3.AnGang.dispatch; using HH.WCS.Mobox3.AnGang.models; using HH.WCS.Mobox3.AnGang.process; -using HH.WCS.Mobox3.AnGang.config; using Newtonsoft.Json; using SqlSugar; using System; @@ -15,12 +14,13 @@ namespace HH.WCS.Mobox3.AnGang.core { - internal class WCSCore - { + internal class WCSCore { + public static string AgvState = string.Empty; + public static ReturnResult OperateAgvTaskStatus(AgvTaskState model) { var result = new ReturnResult(); try { - if (model.state > 0 && model.state < 1000) { + if (model.state > 0) { // AGV 鎵ц浠诲姟鐨勯�杈戝鐞� if (!AgvTaskProcessOk(model)) { // 鎵ц涓峅K锛岃鏄庢病鏈夋壘鍒颁换鍔�@@ -74,6 +74,7 @@ if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱 || TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) { var captureTask = Task.Run(() => { CapturePic(TN_Task); + LogHelper.Info($"{TN_Task}锛氭媿鐓ask缁撴潫"); }); } @@ -81,6 +82,14 @@ var setEndLocTask = Task.Run(() => { // 鍙浠诲姟涓轰骇鍝佸叆搴�PDA)锛屽氨闇�閲嶆柊鎸囧畾缁堢偣锛堥粯璁ndLoc涓�"锛� SetEndLoc(TN_Task); + LogHelper.Info("璁剧疆缁堢偣Task缁撴潫"); + }); + } + + if (TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) { + var weightTask = Task.Run(() => { + UpdateWeight(TN_Task); + LogHelper.Info("绉伴噸Task缁撴潫"); }); } @@ -95,6 +104,7 @@ break; case 2: // 瀹屾垚 WCSHelper.End(TN_Task); // 浠诲姟鐘舵�鏀规垚缁撴潫 + break; case 7: // 寮傚父 TaskProcess.OperateStatus(TN_Task, 7); // 寮傚父澶勭悊 @@ -111,181 +121,296 @@ public static void CapturePic(TN_Task model) { var db = new SqlHelper<object>().GetInstance(); - var filepath = SnapManager.GetCapturePicturePath(); - if (string.IsNullOrEmpty(filepath)) { - LogHelper.Info("鍥剧墖鍦板潃涓虹┖"); - return; + try { + var filepath = SnapManager.GetCapturePicturePath(); + if (string.IsNullOrEmpty(filepath)) { + LogHelper.Info("鍥剧墖鍦板潃涓虹┖"); + return; + } + + if (db.Updateable<TN_Loc_Container>() + .SetColumns(d => d.S_IMG_URL == filepath) + .Where(d => d.S_CNTR_CODE == model.S_CNTR_CODE).ExecuteCommand() <= 0) { + + LogHelper.Info($"鍥剧墖URL '{filepath}' 鍐欏叆鏁版嵁搴撳け璐�); + return; + } } - - if (db.Updateable<TN_CG_Detail>() - .SetColumns(d => d.S_IMG_URL == filepath) - .Where(d => d.S_CNTR_CODE == model.S_CNTR_CODE).ExecuteCommand() <= 0) { - - LogHelper.Info($"鍥剧墖URL '{filepath}' 鍐欏叆鏁版嵁搴撳け璐�); - return; + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗛敊璇細{ex.Message}"); } } public static void SetEndLoc(TN_Task tn_task) { var db = new SqlHelper<object>().GetInstance(); - var endLoc = db.Queryable<TN_Location>() - .First(a => a.S_CODE == tn_task.S_END_LOC); + var info = ""; + try { + var endLoc = db.Queryable<TN_Location>() + .First(a => a.S_CODE == tn_task.S_END_LOC); - // 濡傛灉宸茬粡璁剧疆鐨勭粓鐐硅揣浣嶏紝灏变笉瑕佸啀杩涘叆杩欎釜娴佺▼ - if (endLoc != null) { - LogHelper.Info("宸茬粡璁剧疆浜嗙粓鐐硅揣浣嶏細" + JsonConvert.SerializeObject(endLoc)); - return; + // 濡傛灉宸茬粡璁剧疆鐨勭粓鐐硅揣浣嶏紝灏变笉瑕佸啀杩涘叆杩欎釜娴佺▼ + if (endLoc != null) { + LogHelper.Info("宸茬粡璁剧疆浜嗙粓鐐硅揣浣嶏細" + JsonConvert.SerializeObject(endLoc)); + return; + } + + var cgDetail = db.Queryable<TN_CG_Detail>() + .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).First(); + + if (cgDetail == null) { + LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氬綋鍓嶄换鍔$殑鎵樼洏鍙峰湪鐗╂枡琛ㄤ腑涓嶅瓨鍦�); + return; + } + + var data = GZRobot.CustomBuf(); + + if (data.Count == 0) { + LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氭病鏈夋帴鍙楀埌鏉ヨ嚜鍥借嚜AGV鐨勯噸閲忎俊鎭�); + //cgDetail.F_QTY = 0; // 涓嶈缃负绌猴紝渚夸簬娴嬭瘯鏃堕鍏堣缃竴涓甯稿� + } + else { + var weight_str = data[0].parameter_varchar200_up.Split(';')[1].Split('-')[1]; + + var weight = float.Parse(weight_str); + cgDetail.F_QTY = weight; + tn_task.F_WEIGHT = weight; + + using (var tran = db.Ado.UseTran()) { + if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_QTY).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info("淇敼鐗╂枡琛ㄩ噸閲忓け璐�); + return; + } + + if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info("淇敼浠诲姟琛ㄩ噸閲忓け璐�); + return; + } + + tran.CommitTran(); + } + + LogHelper.Info($"淇敼浠诲姟鍙穥tn_task.S_CODE}鐗╂枡閲嶉噺涓簕weight}", "HosttoagvTask"); + if (weight > 2000) { + LogHelper.Info($"鐗╂枡閲嶉噺瓒呰繃2t", "HosttoagvTask"); + } + } + + // 缁堢偣璐ф灦涓虹┖鏃讹紝涓嶅垽鏂紝浜ょ粰浜哄伐澶勭悊 + if (tn_task.S_END_LOC == "0") { + LogHelper.Info("缁堢偣璐ф灦涓虹┖锛屼笉澶勭悊"); + return; + } + + if (!int.TryParse(tn_task.S_END_LOC.Trim(), out int row)) { + LogHelper.Info($"缁堢偣璐ф灦鍙�'{tn_task.S_END_LOC}' 鏃犳硶杞垚鏁板瓧"); + return; + } + + //row -= 100; // 111-118 => 1-8 + + // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣�+ if (cgDetail.F_QTY > 2000) { + // 閲嶉噺瓒呰繃 2t + endLoc = null; + LogHelper.Info("閲嶉噺瓒呰繃2t锛屼笉鍏佽鍏ュ簱"); + + // 浼犻�缁欏浗鑷狝GV + if (GZRobot.TryGetInteractionInfoId(tn_task.S_CODE, out var id1)) { + if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { + type_name = "GET_DST", + interaction_info_id = id1, + info_status = "error", + })) { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask"); + } + else { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask"); + } + } + else { + LogHelper.Info($"AGV锛氳幏鍙栦换鍔tn_task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask"); + } + + return; // 瓒呴噸浼氳嚜宸眗eturn锛屽鏋滃浗鑷猘gv娌℃帴鍙楀埌涔熶笉闇�鎻愬墠return + } + else if (cgDetail.F_QTY > 1500) { + // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-2灞傝揣鏋�+ endLoc = db.Queryable<TN_Location>() + .First(a => a.N_ROW == row && a.N_LAYER <= 2 + && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y"); + } + else if (cgDetail.F_QTY > 0) { + // 閲嶉噺鏈秴杩�.5t锛屽湪鎸囧畾璐ф灦闅忎究閫夋嫨1涓�+ endLoc = db.Queryable<TN_Location>().Where(a => a.N_ROW == row + && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") + .OrderBy(a => a.N_LAYER > 2 ? 0 : 1).First(); // 浼樺厛閫夊眰绾ч珮鐨�+ } + else { + // 娌℃湁鎺ユ敹鍒伴噸閲忥紝鎴栭噸閲忓嚭閿�+ endLoc = null; + LogHelper.Info($"閿欒鐨勯噸閲忎俊鎭細{cgDetail.F_QTY}"); + return; + } + + // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮揣浣嶏紝缃┖锛岀瓑寰匬DA閲嶆柊纭畾 + if (endLoc == null) { + tn_task.S_END_AREA = Settings.Areas[AreaIndex.H璐ф灦鍖篯[0]; // HJQ + tn_task.S_END_LOC = "0"; + + // 涓嶉渶瑕佸啀缁橤Z AGV浼犵┖鍊硷紝涓�紑濮嬪氨娌$粰鍏蜂綋璐т綅锛屽彧缁欎簡Area + //var request = new UpdateInteractInfo { + // interaction_info_id = 3, // 鏇存敼缁堢偣淇℃伅 + // info_status = "active", + // return_value = "", + //}; + //GZRobot.UpdateInteractInfo(request); + + if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) + .ExecuteCommand() > 0) { + //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+ LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); + } + else { + LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); + } + } + else { + // 鎵惧埌鍚堥�鐨勮揣浣嶏紝鎺ㄩ� + tn_task.S_END_LOC = endLoc.S_CODE; + + LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ + // 浼犻�缁欏浗鑷狝GV + if (GZRobot.TryGetInteractionInfoId(tn_task.S_CODE, out var id2)) { + if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { + type_name = "GET_DST", + interaction_info_id = id2, + info_status = "invalid", + return_value = LocationHelper.GetAgvSite(tn_task.S_END_LOC), // 鐩墠浣跨敤agvsite + })) { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask"); + } + else { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask"); + return; + } + } + else { + LogHelper.Info($"AGV锛氳幏鍙栦换鍔tn_task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask"); + return; + } + + using (var tran = db.Ado.UseTran()) { + if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) + .ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE}'淇敼澶辫触锛岀粓鐐硅揣鏋朵负{endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); + } + if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + info = $"鏇存柊缁堢偣璐т綅閿佺姸鎬佸け璐ワ細璧风偣璐т綅{endLoc.S_CODE}"; + LogHelper.Info(info); + } + + tran.CommitTran(); + } + } } - - var cgDetail = db.Queryable<TN_CG_Detail>() - .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).First(); - - if (cgDetail == null) { - LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氬綋鍓嶄换鍔$殑鎵樼洏鍙峰湪鐗╂枡琛ㄤ腑涓嶅瓨鍦�); - return; + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗛敊璇細{ex.Message}"); } + } - var data = GZRobot.CustomBuf(); + public static void UpdateWeight(TN_Task tn_task) { + var db = new SqlHelper<object>().GetInstance(); - if (data.Count == 0) { - LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氭病鏈夋帴鍙楀埌鏉ヨ嚜鍥借嚜AGV鐨勯噸閲忎俊鎭�); - //return; // TODO 姝e紡杩愯鏈夊浗鑷狝GV鐨勬椂鍊欐仮澶�- } - else { - var weight = float.Parse(data[0].parameter_varchar200_up); + try { + + var cgDetail = db.Queryable<TN_CG_Detail>() + .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).First(); + + if (cgDetail == null) { + LogHelper.Info("鏇存柊鐗╂枡閲嶉噺澶辫触锛氬綋鍓嶄换鍔$殑鎵樼洏鍙峰湪鐗╂枡琛ㄤ腑涓嶅瓨鍦�); + return; + } + + var data = GZRobot.CustomBuf(); + + if (data.Count == 0) { + LogHelper.Info("鏇存柊鐗╂枡閲嶉噺澶辫触锛氭病鏈夋帴鍙楀埌鏉ヨ嚜鍥借嚜AGV鐨勯噸閲忎俊鎭�); + return; + } + var weight_str = data[0].parameter_varchar200_up.Split(';')[1].Split('-')[1]; + + var weight = float.Parse(weight_str); cgDetail.F_QTY = weight; if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_QTY).ExecuteCommand() <= 0) { LogHelper.Info("淇敼鐗╂枡琛ㄩ噸閲忓け璐�); return; } + + LogHelper.Info($"淇敼浠诲姟鍙穥tn_task.S_CODE}鐗╂枡閲嶉噺涓簕weight}", "HosttoagvTask"); + + } + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗛敊璇細{ex.Message}"); } - // 缁堢偣璐ф灦涓虹┖鏃讹紝涓嶅垽鏂紝浜ょ粰浜哄伐澶勭悊 - if (tn_task.S_END_LOC == "0") { - LogHelper.Info("缁堢偣璐ф灦涓虹┖锛屼笉澶勭悊"); - return; - } - - if (!int.TryParse(tn_task.S_END_LOC.Trim(), out int row)) { - LogHelper.Info($"缁堢偣璐ф灦鍙�'{tn_task.S_END_LOC}' 鏃犳硶杞垚鏁板瓧"); - return; - } - - // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣�- if (cgDetail.F_QTY > 1500) { - // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-3灞傝揣鏋�- endLoc = db.Queryable<TN_Location>() - .First(a => a.N_ROW == row && a.N_LAYER <= 3 - && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y"); - } - else if (cgDetail.F_QTY > 0) { - // 閲嶉噺鏈秴杩�.5t锛屽湪鎸囧畾璐ф灦闅忎究閫夋嫨1涓�- endLoc = db.Queryable<TN_Location>().First(a => a.N_ROW == row - && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y"); - } - else { - // 娌℃湁鎺ユ敹鍒伴噸閲忥紝鎴栭噸閲忓嚭閿�- endLoc = null; - LogHelper.Info($"閿欒鐨勯噸閲忎俊鎭細{cgDetail.F_QTY}"); - return; - } - - // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮揣浣嶏紝缃┖锛岀瓑寰匬DA閲嶆柊纭畾 - if (endLoc == null) { - tn_task.S_END_AREA = "HJQ"; - tn_task.S_END_LOC = "0"; - - // 涓嶉渶瑕佸啀缁橤Z AGV浼犵┖鍊硷紝涓�紑濮嬪氨娌$粰鍏蜂綋璐т綅锛屽彧缁欎簡Area - - //var request = new UpdateInteractInfo { - // interaction_info_id = 3, // 鏇存敼缁堢偣淇℃伅 - // info_status = "active", - // return_value = "", - //}; - - //GZRobot.UpdateInteractInfo(request); - if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) - .ExecuteCommand() > 0) { - //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�- LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); - } - else { - LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); - } - } - else { - // 鎵惧埌鍚堥�鐨勮揣浣嶏紝鎺ㄩ� - tn_task.S_END_LOC = endLoc.S_CODE; - - if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) - .ExecuteCommand() > 0) { - LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�- LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); - } - else { - LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼澶辫触锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); - } - } } /// <summary> /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 /// </summary> - internal static void Dispatch() - { + internal static void Dispatch() { //鏌ヨ浠诲姟 //鑾峰彇鎵�湁绛夊緟鐨勪换鍔� var list = WCSHelper.GetWaitingTaskList(); LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API"); - if (list.Count > 0) - { - list.ForEach(task => - { + if (list.Count > 0) { + list.ForEach(task => { //浣跨敤鑷畾涔変换鍔℃帹閫� TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 - //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧 - }); } - else - { + else { LogHelper.Info("鏆傛棤浠诲姟"); } } - public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) { - var gzResult = new ReturnResult(); - //var db = new SqlHelper<object>().GetInstance(); - //ModbusHelper.Relink(); - - //var productionLineInfo = Settings.ProductionLines[0]; - //var prodLineDevice = new ProductionLineDevice(productionLineInfo.PlcIp, productionLineInfo.PlcPort); - //if (!prodLineDevice.LoadDeviceStateOk()) { - // LogHelper.Info("鍔犺浇璁惧淇℃伅澶辫触"); - //} - - //var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no); - //if (tn_task == null) { - // LogHelper.Info($"浠诲姟鍙�'{model.task_no}' 涓嶅瓨鍦�); - //} - - //if (prodLineDevice.SystemState == 1 - // && prodLineDevice.FullOffline == 1 && tn_task.S_TYPE == "鎴愬搧鑳朵笅绾�鎵樼洏(WMS)") { - // if (!prodLineDevice.SetAgvPicking(1)) { - // LogHelper.Info("鍐欏叆杈撻�绾�PLC 澶辫触"); - // } - //} - - //if (prodLineDevice.SystemState == 1 - // && prodLineDevice.AllowAgvPlacePallet == 1 && tn_task.S_TYPE == "绌烘墭鐩樹笂绾�WMS)") { - // if (!prodLineDevice.SetAgvPlacingPallet(1)) { - // LogHelper.Info("鍐欏叆杈撻�绾�PLC 澶辫触"); - // } - //} - - //LogHelper.Info(JsonConvert.SerializeObject(prodLineDevice, Formatting.Indented)); + // DOC 4. 绔欏彴鐢宠瀹夊叏浜や簰 RCS->WMS + public static gzResult SafetyInteraction(SafetyInteractionInfo model) { + var gzResult = new gzResult() { + code = 0, + msg = "success" + }; + // 鐩墠璇ラ」鐩病鏈夌珯鍙板畨鍏ㄤ氦浜掔殑鍔熻兘 return gzResult; } + + public static string agvRealtimeStateReport(agvRealtimeStateReportInfo model) { + var res = string.Empty; + switch (model.agvStatusID) { + case 1: res = "in_system"; break; + case 2: res = "out_system"; break; + case 3: res = "online"; break; + case 4: res = "offline"; break; + case 5: res = "ready"; break; + case 6: res = "not_ready"; break; + case 7: res = "in_dispatch"; break; + case 8: res = "out_dispatch"; break; + case 9: res = "running"; break; + case 10: res = "not_running"; break; + } + AgvState = res; + return res; + } } } -- Gitblit v1.9.1