From c321182cdcbc7d6489d969810f0610e48ac2b5ed Mon Sep 17 00:00:00 2001 From: 杨张扬 <634643841@qq.com> Date: 星期三, 23 七月 2025 17:40:22 +0800 Subject: [PATCH] 双钱-需求变更:增加了两个搬送流程,增加了两个库区,主要是修改对空托上线脱皮机的逻辑 --- models/TN_Location.cs | 13 ++ Program.cs | 6 core/Monitor.cs | 121 +++++++++++++++++++ api/ApiHelper.cs | 133 ++++++++++++++++++++++ config/config.json | 2 api/ApiModel.cs | 9 + process/TaskProcess.cs | 2 core/WCSCore.cs | 8 config/configDesc.txt | 5 api/MoboxController.cs | 15 ++ 10 files changed, 296 insertions(+), 18 deletions(-) diff --git a/Program.cs b/Program.cs index f8a5e94..1e3de45 100644 --- a/Program.cs +++ b/Program.cs @@ -132,7 +132,9 @@ tasks.Add(GetTask(WCSCore.Dispatch)); //娣诲姞鑷畾涔夌嚎绋�- tasks.Add(GetTask(Monitor.CheckEmptyCnt));//妫�祴绌烘墭鐩�+ tasks.Add(GetTask(Monitor.CheckEmptyCnt));//妫�祴绌烘墭鐩�绌烘墭鍫嗗彔鍏ュ簱 + + tasks.Add(GetTask(Monitor.CheckEmptyLoc_YclOutLineArea));//妫�祴鍘熸潗鏂欎骇绾夸笅绾块檮杩戞槸鍚︽湁绌轰綅 tasks.Add(GetTask(Monitor.CheckCntAndBoard));//鍚屾 TN_Container 鍧囪瀹炴椂鏄剧ず @@ -147,7 +149,7 @@ tasks.Add(GetTask(Monitor.CGOkCheck));// 鍦ㄥ妫�尯妫�祴鐗╁搧鍚堟牸锛屽悎鏍肩殑鐗╁搧鑷姩鍥炲簱 - tasks.Add(GetTask(Monitor.XBChekcFull));//绾胯竟婊℃墭璐т綅鑷姩瑙g粦 + //tasks.Add(GetTask(Monitor.XBChekcFull));//绾胯竟婊℃墭璐т綅鑷姩瑙g粦 Task.WaitAll(tasks.ToArray()); } diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index b28f30d..9424570 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -326,6 +326,132 @@ } /// <summary> + /// 绾胯竟绌烘墭鍒扮┖鎵樺爢鍙犲尯 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static SimpleResult EmptyLineToEmptyMax(EmptyLineToEmptyMaxInfo model) + { + LogHelper.Info("瑙﹀彂API锛氱嚎杈圭┖鎵樺埌绌烘墭鍫嗗彔鍖� + JsonConvert.SerializeObject(model), "API"); + var result = new SimpleResult();//杩斿洖缁撴灉 + try + { + var db = new SqlHelper<object>().GetInstance(); + + if (model.cntCount<=0) + { + result.resultCode = 1; + result.resultMsg = $"鍙傛暟cntCount蹇呴』澶т簬0锛屽嵆鏈�皯瑕佹湁涓�釜绌烘墭"; + LogHelper.Info(result.resultMsg); + return result; + } + + var startLoc = db.Queryable<TN_Location>().First(it => it.S_CODE == model.startLoc); + + if (startLoc == null) + { + result.resultCode = 2; + result.resultMsg = $"鏈壘鍒拌璧风偣{model.startLoc}"; + LogHelper.Info(result.resultMsg); + return result; + } + + var settingArea = Settings.Areas[13]; + if (startLoc.S_AREA_CODE != settingArea) + { + result.resultCode = 3; + result.resultMsg = $"璇ヨ捣鐐箋model.startLoc}蹇呴』鍦ㄦ搴撳尯鍐厈settingArea}"; + LogHelper.Info(result.resultMsg); + return result; + } + + if (startLoc.N_LOCK_STATE != 0 || startLoc.S_LOCK_STATE != "鏃�) + { + result.resultCode = 4; + result.resultMsg = $"璇ヨ捣鐐箋model.startLoc}宸查攣瀹氾紝浠诲姟姝e湪鎼�"; + LogHelper.Info(result.resultMsg); + return result; + } + + //鏌ヨ绗﹀悎鐨勬湭閿佸畾宸插惎鐢ㄦ寚瀹氳揣鍖虹殑褰撳墠鏁伴噺鍚堣鍚庢渶鎺ヨ繎瀹归噺鐨勮揣浣嶏紝缁堢偣 + var endLoc = db.Queryable<TN_Location>(). + Where(a => a.N_CURRENT_NUM + model.cntCount <= a.N_CAPACITY && a.S_AREA_CODE == Settings.Areas[3] && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y"). + ToList().OrderByDescending(a => a.N_CURRENT_NUM + model.cntCount - a.N_CAPACITY).ThenBy(a => a.N_ROW).ThenBy(a => a.N_COL).ToList().First(); + + using (var trans = db.Ado.UseTran()) + { + startLoc.N_CURRENT_NUM = model.cntCount; + startLoc.N_LOCK_STATE = 2; + startLoc.S_LOCK_STATE = "鍑哄簱閿�; + + endLoc.N_LOCK_STATE = 1; + endLoc.S_LOCK_STATE = "鍏ュ簱閿�; + + string cntStr = ""; + for (int i = 0; i < model.cntCount; i++) + { + cntStr += Guid.NewGuid().ToString("D")+","; + } + cntStr.Trim(','); + var locCnt = new TN_Loc_Container() + { + S_LOC_CODE = startLoc.S_CODE, + S_CNTR_CODE = cntStr, + }; + + var task = new TN_Task() + { + S_CODE = WCSHelper.GenerateTaskNo(), + S_START_AREA = startLoc.S_AREA_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_START_LOC = startLoc.S_CODE, + S_END_LOC = endLoc.S_CODE, + S_TYPE = "绌烘墭涓嬬嚎鍫嗗彔", + N_PRIORITY = 3, + N_SCHEDULE_TYPE = 1, + N_B_STATE = 0, + S_B_STATE = "绛夊緟", + S_CNTR_CODE = locCnt.S_CNTR_CODE, + }; + + if ( + db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() == 1 && + db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() == 1 && + db.Insertable<TN_Loc_Container>(locCnt).ExecuteCommand() == 1 && + db.Insertable<TN_Task>(task).ExecuteCommand() == 1 + ) + { + Task task1 = Task.Run(() => + { + WMSHelper.InsertOpInfo(model.staff, "鐐瑰鐐�, locCnt.S_CNTR_CODE); + }); + + trans.CommitTran(); + result.resultCode = 0; + result.resultMsg = $"鍒涘缓 绌烘墭涓嬬嚎鍫嗗彔 浠诲姟鎴愬姛锛岃捣鐐癸細{startLoc.S_CODE}锛岀粓鐐癸細{endLoc.S_CODE}"; + LogHelper.Info(result.resultMsg); + return result; + } + else + { + trans.RollbackTran(); + result.resultCode = 12; + result.resultMsg = $"鍒涘缓 绌烘墭涓嬬嚎鍫嗗彔 浠诲姟澶辫触锛岃捣鐐癸細{startLoc.S_CODE}锛岀粓鐐癸細{endLoc.S_CODE}"; + LogHelper.Info(result.resultMsg); + return result; + } + } + } + catch (Exception ex) + { + result.resultCode = -1; + result.resultMsg = $"PDA婊℃墭澶嶆鍒ゆ柇锛屽彂鐢熶簡寮傚父锛歿ex.Message}"; + LogHelper.Info(result.resultMsg); + return result; + } + } + + /// <summary> /// 绾胯竟绌烘墭鍒板師鏉愭枡杈撻�绾� /// </summary> /// <param name="model"></param> @@ -398,7 +524,7 @@ if (endLoc.S_AREA_CODE != endLocArea) { result.resultCode = 8; - result.resultMsg = $"姝よ揣浣嶏細{endLoc.S_CODE}锛屼笉灞炰簬鍘熸潗鏂欎骇绾跨┖鎵樺尯{endLocArea}"; + result.resultMsg = $"姝よ揣浣嶏細{endLoc.S_CODE}锛屼笉灞炰簬鍘熸潗鏂欎骇绾跨┖鎵樹笂绾垮彛搴撳尯{endLocArea}"; LogHelper.Info(result.resultMsg); return result; } @@ -472,6 +598,11 @@ Settings.LineSorting = 0; } + Task task1 = Task.Run(() => + { + WMSHelper.InsertOpInfo(model.staff, "鐐瑰鐐�, Cnt); + }); + trans.CommitTran(); result.resultCode = 0; diff --git a/api/ApiModel.cs b/api/ApiModel.cs index 7e0e8f7..14f623e 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -468,6 +468,15 @@ public class EmptyLineToLineInfo { public string startLoc { get; set; }//璧风偣 + + public string staff { get; set; } = "None";//鎿嶄綔浜�+ } + + public class EmptyLineToEmptyMaxInfo + { + public string startLoc { get; set; }//璧风偣 + public int cntCount { get; set; }//瀹瑰櫒鏁伴噺 + public string staff { get; set; } = "None";//鎿嶄綔浜� } } } diff --git a/api/MoboxController.cs b/api/MoboxController.cs index a21f68b..1dc0148 100644 --- a/api/MoboxController.cs +++ b/api/MoboxController.cs @@ -226,7 +226,7 @@ } /// <summary> - /// 绾胯竟绌烘墭鍒板師鏉愭枡杈撻�绾�+ /// 绾胯竟绌烘墭鍒板師鏉愭枡浜х嚎 /// </summary> /// <param name="model"></param> /// <returns></returns> @@ -236,5 +236,18 @@ { return ApiHelper.EmptyLineToLine(model); } + + + /// <summary> + /// 绾胯竟绌烘墭鍒扮┖鎵樺爢鍙犲尯 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + [Route("EmptyLineToEmptyMax")] + public SimpleResult EmptyLineToEmptyMax(EmptyLineToEmptyMaxInfo model) + { + return ApiHelper.EmptyLineToEmptyMax(model); + } } } diff --git a/config/config.json b/config/config.json index 9d81c1b..f135d4d 100644 --- a/config/config.json +++ b/config/config.json @@ -4,7 +4,7 @@ "SqlServer": "Data Source=127.0.0.1;Initial Catalog=DoubleCoinTest;User ID=sa;Password=123456;", "TCPServerIP": "127.0.0.1", "TCPServerPort": 8085, - "Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4", "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9", "SQKQ10", "SQKQ11", "SQKQ12", "线边空托区编码", "原材料产线空托区编码" ], + "Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4", "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9", "SQKQ10", "SQKQ11", "SQKQ12", "线边空托区编码13", "原材料产线空托区编码14", "原材料产线附近空托库区15", "空托货架库区16" ], "S7TestMoni": true, "IsOpenScanCode": true, "ProductionLine": [ diff --git a/config/configDesc.txt b/config/configDesc.txt index 158f271..7a4291e 100644 --- a/config/configDesc.txt +++ b/config/configDesc.txt @@ -4,10 +4,11 @@ "HostToAgvServerUrl": "http://127.0.0.1:9988/HostToAGV.cgi",//杩炴帴AGV绠$悊绯荤粺鐨勫湴鍧� "TCPServerIP": "127.0.0.1",//Socket鏈嶅姟绔湴鍧�紝鐢ㄤ簬杩炴帴AGV璇诲崱鍣ㄥ苟閫氳 "TCPServerPort": 8085,//Socket鏈嶅姟绔鍙o紝鐢ㄤ簬杩炴帴AGV璇诲崱鍣ㄥ苟閫氳 -"Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4" , "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9" , "SQKQ10", "SQKQ11" , "SQKQ12", "SQKQ13", "SQKQ14" ], +"Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4" , "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9" , "SQKQ10", "SQKQ11" , "SQKQ12", "SQKQ13", "SQKQ14" , "SQKQ15", "SQKQ16" ], // 鍘熸潗鏂欎骇绾垮簱鍖篠QKQ0鈥斺�銆嬫弧鎵樼紦瀛樺簱鍖篠QKQ1鈥斺�銆嬪姞宸ョ嚎绾胯竟鍖篠QKQ2鈥斺�銆嬬┖鎵樺爢鍙犲尯SQKQ3鈥斺�銆嬬┖鎵樼紦瀛樺簱鍖篠QKQ4鈥斺�銆� //浜哄伐鎷嗙洏鍖篠QKQ5鈥斺�銆嬩汉宸ョ┖鎵樺尯SQKQ6鈥斺�銆嬩汉宸ユ娊妫�尯SQKQ7鈥斺�銆嬫媶鐩樹笉鍚堟牸鍖篠QKQ8鈥斺�銆嬬О閲嶅尯SQKQ9 -//鈥斺�銆嬩綑鏂欒捣鐐瑰尯SQKQ10鈥斺�銆嬫鍝佸洖鐐夊尯SQKQ11 鈥斺�銆嬭繃鏈熸殏瀛樺尯SQKQ12 鈥斺�銆嬬嚎杈圭┖鎵樺尯SQKQ13 鈥斺�銆嬪師鏉愭枡浜х嚎绌烘墭搴撳尯SQKQ14 +//鈥斺�銆嬩綑鏂欒捣鐐瑰尯SQKQ10鈥斺�銆嬫鍝佸洖鐐夊尯SQKQ11 鈥斺�銆嬭繃鏈熸殏瀛樺尯SQKQ12 鈥斺�銆嬬嚎杈圭┖鎵樺尯SQKQ13 鈥斺�銆嬪師鏉愭枡浜х嚎绌烘墭涓婄嚎鍙e簱鍖篠QKQ14 +//鈥斺�銆嬪師鏉愭枡浜х嚎闄勮繎绌烘墭搴撳尯SQKQ15鈥斺�銆嬬┖鎵樿揣鏋跺簱鍖篠QKQ16 "S7TestMoni": true,//濡傛灉涓簍rue锛岃烦杩嘢7閫氳娴嬭瘯锛屽彧鑳戒娇鐢≒DA "IsOpenScanCode": true,//濡傛灉涓簍rue锛屽紑鍚鍗″櫒鎵爜鍔熻兘锛屽鏋滀负false锛屼笉寮�惎 diff --git a/core/Monitor.cs b/core/Monitor.cs index f15790e..06e1625 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -351,11 +351,105 @@ } /// <summary> + /// 妫�祴鍘熸潗鏂欎骇绾夸笅绾块檮杩戞槸鍚︽湁绌轰綅 + /// </summary> + internal static void CheckEmptyLoc_YclOutLineArea() + { + try + { + var db = new SqlHelper<object>().GetInstance(); + + var endLoc = db.Queryable<TN_Location>(). + Where(o => o.S_AREA_CODE == Settings.Areas[15] + && o.N_LOCK_STATE == 0 + && o.S_LOCK_STATE == "鏃� + && o.C_ENABLE == "Y" + && o.N_CURRENT_NUM == 0 + && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).NotAny() + ).//鍘熸潗鏂欎骇绾块檮杩戠┖鎵樺簱鍖�+ First(); + + if (endLoc == null) + { + LogHelper.Info($"鍘熸潗鏂欎骇绾块檮杩戠┖鎵樺簱鍖簕Settings.Areas[15]}锛屽凡婊★紝鏃犻渶鍐嶅叆绌烘墭"); + return; + } + + var startLoc = db.Queryable<TN_Location>(). + Where(o => o.S_AREA_CODE == Settings.Areas[3] + && o.N_LOCK_STATE == 0 + && o.S_LOCK_STATE == "鏃� + && o.C_ENABLE == "Y" + && o.N_CURRENT_NUM > 0 + && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).Any() + ).ToList().//绌烘墭鍫嗗彔搴撳尯 + OrderByDescending(o => o.N_CURRENT_NUM). + First(); + + if (startLoc == null) + { + startLoc = db.Queryable<TN_Location>(). + Where(o => o.S_AREA_CODE == Settings.Areas[16] + && o.N_LOCK_STATE == 0 + && o.S_LOCK_STATE == "鏃� + && o.C_ENABLE == "Y" + && o.N_CURRENT_NUM > 0 + && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).Any() + ).ToList().//绌烘墭璐ф灦搴撳尯 + OrderByDescending(o => o.N_CURRENT_NUM). + First(); + } + + if (startLoc == null) + { + LogHelper.Info($"璧风偣娌℃湁鎵惧埌鍚堥�鐨勭┖鎵樿揣浣嶏紝瑕佹眰鏈夎揣"); + return; + } + + var cntrList = db.Queryable<TN_Loc_Container>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).OrderBy(a => a.T_CREATE, OrderByType.Asc).ToList(); + + if (cntrList.Count < 1) + { + LogHelper.Info($"璧风偣{startLoc.S_CODE}鏈壘鍒拌揣浣嶅鍣ㄥ叧绯讳俊鎭�); + return; + } + + string cntrString = ""; + for (int i = 0; i < cntrList.Count; i++) + { + if (i == cntrList.Count - 1)//鏈�悗涓�釜瀛楃涓茶繛鎺ヤ笉鍔犻�鍙�+ { + cntrString += cntrList[i].S_CNTR_CODE; + } + else + { + cntrString += cntrList[i].S_CNTR_CODE + ","; + } + } + + if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "绌烘墭鑷姩涓婄嚎", 3, cntrString))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+ { + LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 + LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+ + LogHelper.Info($"鐢熸垚绌烘墭鑷姩涓婄嚎浠诲姟鎴愬姛锛屽鍣細{cntrString}锛岃捣鐐癸細{startLoc.S_CODE}"); + } + else + { + LogHelper.Info($"鐢熸垚绌烘墭鑷姩涓婄嚎浠诲姟澶辫触锛屽鍣細{cntrString}锛岃捣鐐癸細{startLoc.S_CODE}"); + } + } + catch (Exception ex) + { + + } + } + + /// <summary> /// 绾胯竟婊℃墭璐т綅鑷姩瑙g粦 /// </summary> internal static void XBChekcFull() { - var db = new SqlHelper<object>().GetInstance(); try { @@ -991,12 +1085,29 @@ } var endLoc = db.Queryable<TN_Location>(). - Where(a => a.S_AREA_CODE == Settings.Areas[4] && a.N_LOCK_STATE == 0 + Where(a => a.S_AREA_CODE == Settings.Areas[15] && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny() - ). - OrderBy(a => a.N_CURRENT_NUM, OrderByType.Asc). - First(); + ).First();//鍏堟壘 鍘熸潗鏂欎骇绾块檮杩戠┖鎵樺簱鍖�+ + if (endLoc == null) + { + endLoc = db.Queryable<TN_Location>(). + Where(a => a.S_AREA_CODE == Settings.Areas[16] && a.N_LOCK_STATE == 0 + && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 + && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny() + ).First(); + }// 鍐嶆壘 绌烘墭璐ф灦搴撳尯 + + if (endLoc == null) + { + endLoc = db.Queryable<TN_Location>(). + Where(a => a.S_AREA_CODE == Settings.Areas[4] && a.N_LOCK_STATE == 0 + && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 + && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny() + ).First(); + }// 鏈�悗鎵�绌烘墭缂撳瓨搴撳尯 + if (endLoc == null) { diff --git a/core/WCSCore.cs b/core/WCSCore.cs index ac280b4..68db574 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -89,7 +89,7 @@ Task task3 = Task.Run(() => { - EmptyInStackArea(tN_Task); + EmptyInStackArea(tN_Task);//绌烘墭涓嬬嚎鍫嗗彔 }); Task task1 = Task.Run(() => @@ -149,7 +149,6 @@ } }); - Task task12 = Task.Run(() => { if (tN_Task.S_TYPE == "PDA婊℃墭涓嬬嚎鍏ュ簱" || tN_Task.S_TYPE == "PLC婊℃墭涓嬬嚎鍏ュ簱") @@ -208,9 +207,8 @@ else { //瀹夊叏璇锋眰绛�- TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data); + //TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data); } - } else { @@ -589,7 +587,7 @@ //鏌ヨ绗﹀悎鐨勬湭閿佸畾宸插惎鐢ㄦ寚瀹氳揣鍖虹殑褰撳墠鏁伴噺鍚堣鍚庢渶鎺ヨ繎瀹归噺鐨勮揣浣嶏紝缁堢偣 var endLoc = db.Queryable<TN_Location>(). Where(a => a.N_CURRENT_NUM + item.N_CURRENT_NUM <= a.N_CAPACITY && a.S_AREA_CODE == Settings.Areas[3] && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y"). - OrderBy(a => a.N_CURRENT_NUM + item.N_CURRENT_NUM - a.N_CAPACITY, OrderByType.Desc).First(); + ToList().OrderByDescending(a => a.N_CURRENT_NUM + item.N_CURRENT_NUM - a.N_CAPACITY).ThenBy(a=>a.N_ROW).ThenBy(a => a.N_COL).ToList().First(); if (endLoc == null) { diff --git a/models/TN_Location.cs b/models/TN_Location.cs index fe55430..08f0c17 100644 --- a/models/TN_Location.cs +++ b/models/TN_Location.cs @@ -20,8 +20,21 @@ public string S_AGV_SITE { get; set; } public int N_CURRENT_NUM { get; set; } + /// <summary> + /// 灞�+ /// </summary> public int N_LAYER { get; set; } + /// <summary> + /// 琛孿鎺�+ /// </summary> + public int N_ROW { get; set; } + + /// <summary> + /// 鍒�+ /// </summary> + public int N_COL { get; set; } + /// <summary> /// 0鏃�1鍏ュ簱閿�2鍑哄簱閿�3鍏跺畠閿�diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index 749ed00..b3bc424 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -143,7 +143,7 @@ start = LocationHelper.GetAgvSite(mst.S_START_LOC); end = LocationHelper.GetAgvSite(mst.S_END_LOC); - if (mst.S_TYPE == "绌烘墭涓嬬嚎鍫嗗彔") + if (mst.S_TYPE.Contains("绌烘墭涓嬬嚎鍫嗗彔")) { end = LocationHelper.GetAgvSite(mst.S_END_LOC,true); } -- Gitblit v1.9.1