From 25f52fdb9a195ab651bff2ebb318119ce7f1f633 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期一, 28 四月 2025 15:19:28 +0800 Subject: [PATCH] 修改问题 --- Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 272 ++++++------------------------------------------------ 1 files changed, 32 insertions(+), 240 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs index 17bcb90..f22caec 100644 --- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs +++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs @@ -90,7 +90,7 @@ /// <summary> /// 鍒濆鍖朠LC杩炴帴 /// </summary> - public static void Init() + public static void Init() { cts.Cancel(); listPlc = _db.Queryable<WcsPlc>() @@ -338,7 +338,7 @@ - Thread.Sleep(1000); + Thread.Sleep(3000); } catch (OperationCanceledException) { @@ -460,266 +460,58 @@ #endregion - #region 鑾峰彇閫傚悎鎵ц褰撳墠浠诲姟鐨勫皬杞� 鐢熸垚璺緞锛堥渶鑰冭檻灏忚溅闃婚樆鎸★級 + // 鑾峰彇閫傚悎鎵ц褰撳墠浠诲姟鐨勫皬杞� 鐢熸垚璺緞锛堥渶鑰冭檻灏忚溅闃婚樆鎸★級 var assignCar = kXCarList.OrderBy(m => m.Level).FirstOrDefault(); if (assignCar == null) { continue;//娌℃湁绌洪棽灏忚溅 } - var data = new List<CarModel>(); + if (assignCar.Level != 0) { //鍒ゆ柇灏忚溅浣嶇疆鏄惁涓庝换鍔$殑璧峰鍌ㄤ綅鐩稿悓,涓嶇浉鍚岋細鑾峰彇灏忚溅鍒板彇璐у偍浣嶈矾寰� var carLocate = assignCar.X.ToString().PadLeft(2, '0')+assignCar.Y.ToString().PadLeft(2, '0')+ assignCar.Z.ToString().PadLeft(2, '0'); //鑾峰彇灏忚溅鍘诲彇璐у偍浣嶄换鍔¤矾寰� var data1 = FourWayCarUtil.GetCarPath(carLocate, waitTask.StartLocate); - var datas = FourWayCarUtil.GetCarPathUp(data1, 0); - data.AddRange(datas); + var datas1 = FourWayCarUtil.GetCarPathUp(data1, 0); + if (datas1 == null) + { + continue; + } + else + { + var bl = FourWayCarUtil.AddCarTask(datas1, kXCarList, assignCar, waitTask,0); + //鍒嗛厤閿欒锛屽垹闄ゅ垎閰嶄俊鎭� + if (!bl) + { + var carTask = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == waitTask.TaskNo).ToList(); + _db.Deleteable(carTask).ExecuteCommand(); + } + } } //鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰� var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, "1"); var datas2 = FourWayCarUtil.GetCarPathUp(data2, 1); - data.AddRange(datas2); - if (data == null) { continue; } - - var preId1 = "";//鍓嶇疆浠诲姟Id - var executionPath1 = "";//浜や簰璺緞 - var executionPath2 = "";//浜や簰璺緞 - var path = "";//鎵�鏈夎矾寰� - var isOk = "1"; //鏄惁瀹屾暣璺緞 1瀹屾暣 2 涓ゆ潯璺緞 - for (int i = 0; i < data.Count; i++) - { - //璺緞鑺傜偣 - var pathXYZ = data[i].X.ToString().PadLeft(2, '0') + data[i].Y.ToString().PadLeft(2, '0') + data[i].Z.ToString().PadLeft(2, '0')+ data[i].NodeCom.ToString(); - path += pathXYZ + ";"; - - //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟 - var taskList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.Path.Contains(pathXYZ)).Select(m => m.Id).Distinct().ToList(); - - foreach (var item in taskList) - { - //鍒ゆ柇濡傛灉鏄畬鏁磋矾寰� 璁板綍浜や簰璺緞 - if (isOk == "1") - { - //if (i == 0) - //{ - // return;//绗竴涓妭鐐规湁鍜屽叾浠栦换鍔¤矾寰勫啿绐侊紝鏃犳硶閬垮厤 - //} - var pathXYZQian = data[i - 1].X.ToString().PadLeft(2, '0') + data[i - 1].Y.ToString().PadLeft(2, '0') + data[i - 1].Z.ToString().PadLeft(2, '0') + data[i].NodeCom.ToString(); - if (!executionPath1.Contains(pathXYZQian)) - { - executionPath1 += pathXYZQian + ";"; - } - executionPath2 += pathXYZQian + ";"; - } - //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id - if (!preId1.Contains(item + "")) - { - preId1 += item + ";"; - } - - isOk = "2"; - } - - if (data[i].IsSendPlc) - { - if (isOk == "1") - { - executionPath1 += pathXYZ + ";"; - } - else - { - executionPath2 += pathXYZ + ";"; - } - - } - + + if (datas2 == null) + { + continue; } - - #endregion - - #region 鍒ゆ柇鏄惁鏈夌┖闂插皬杞﹂樆鎸¤矾寰� 3 - var preId3 = "";//鍓嶇疆浠诲姟Id - foreach (var item in kXCarList) + else { - if (item == assignCar) + var bl = FourWayCarUtil.AddCarTask(datas2,kXCarList,assignCar,waitTask,1); + //鍒嗛厤閿欒锛屽垹闄ゅ垎閰嶄俊鎭� + if (!bl) { - continue;//鎺掗櫎褰撳墠鍒嗛厤浠诲姟鐨勫皬杞� - } - //灏忚溅浣嶇疆 - var carXYZ = item.X.ToString().PadLeft(2, '0') + item.Y.ToString().PadLeft(2, '0') + item.Z.ToString().PadLeft(2, '0') ; - //鍒嗛厤鐨勪换鍔¤矾寰勪腑 褰撳墠灏忚溅鏄惁闃绘尅 - if (path.Contains(carXYZ)) - { - //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟 - var taskList3 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)).ToList(); - - var str3 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜� - - foreach (var item2 in taskList3) - { - str3 += item2.Path; - } - var endLocate3 = ""; - var executionPath3 = ""; - var path3 = ""; - var datas3 = new List<CarModel>(); - //鏌ユ壘鐩爣浣嶇疆 - while (endLocate3 == "" || datas3.Count == 0 || datas3 == null) - { - endLocate3 = FourWayCarUtil.GetCarEndLocation(carXYZ, str3); - var data3 = FourWayCarUtil.GetCarPath(carXYZ, endLocate3, "0"); - datas3 = FourWayCarUtil.GetCarPathUp(data3, 0); - } - foreach (var itemPath in datas3) - { - var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString(); - - path3 += pathXYZ + ";"; - if (itemPath.IsSendPlc) - { - executionPath3 += pathXYZ + ";"; - } - } - WcsTask modTask = new WcsTask() - { - TaskNo = _taskService.GetTaskCode(), - TaskType = TaskTypeEnum.Move, - Type = PLCTypeEnum.ShuttleCar, - StartLocate = carXYZ, - EndLocate = endLocate3, - PalletNo = "", - Status = TaskStatusEnum.Wait, - Levels = 2, - Origin = "WCS" - }; - _db.Insertable(modTask).ExecuteCommand(); - HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); - //绉诲姩灏忚溅 - var carTaskYC = new WcsCarTasks() - { - TaskNo = modTask.TaskNo, - PreId = "", - ExecutionPath = executionPath3, - Path = path3, - CarNo = item.CarPlcIp, - Status = TaskStatusEnum.Wait - }; - var idLong = _db.Insertable(carTaskYC).ExecuteReturnBigIdentity(); - preId3 += idLong + ";"; + waitTask.Status = TaskStatusEnum.Wait; + _db.Updateable(waitTask).ExecuteCommand(); + var carTask = _db.Queryable<WcsCarTasks>().Where(m=>m.IsDelete == false && m.TaskNo == waitTask.TaskNo).ToList(); + _db.Deleteable(carTask).ExecuteCommand(); } } - #endregion - - #region 鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 4 - - //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟 - var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)).ToList(); - var preId4 = "";//鍓嶇疆浠诲姟Id - var str4 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜� - - foreach (var item in taskList4) - { - str4 += item.Path; - } - //鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� - foreach (var item in taskList4) - { - var lastPathList = item.ExecutionPath.Split(';'); - // a;b;c; 鏈�鍚庝竴涓綅鏄�溾�濓紝鎵�浠astPathList.Length - 2 - var lastPath = lastPathList[lastPathList.Length - 2]; - - //濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈閱夎垶涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅 - if (path.Contains(lastPath)) - { - var endLocate = ""; - var executionPath4 = ""; - var path4 = ""; - var datas4 = new List<CarModel>(); - //鏌ユ壘鐩爣浣嶇疆 - while (endLocate == "" || datas4.Count == 0 || datas4 == null) - { - endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4); - var data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate); - datas4 = FourWayCarUtil.GetCarPathUp(data4, 0); - } - foreach (var itemPath in datas4) - { - var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString(); - - path4 += pathXYZ + ";"; - if (itemPath.IsSendPlc) - { - executionPath4 += pathXYZ + ";"; - } - } - WcsTask modTask = new WcsTask() - { - TaskNo = _taskService.GetTaskCode(), - TaskType = TaskTypeEnum.Move, - Type = PLCTypeEnum.ShuttleCar, - StartLocate = lastPath, - EndLocate = endLocate, - PalletNo = "", - Status = TaskStatusEnum.Wait, - Levels = 2, - Origin = "WCS" - }; - _db.Insertable(modTask).ExecuteCommand(); - HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); - //绉诲姩灏忚溅 - var carTaskYC = new WcsCarTasks() - { - TaskNo = modTask.TaskNo, - PreId = "", - ExecutionPath = executionPath4, - Path = path4, - CarNo = item.CarNo, - Status = TaskStatusEnum.Wait - }; - var idLong = _db.Insertable(carTaskYC).ExecuteReturnBigIdentity(); - preId4 += idLong + ";"; - } - } - - #endregion - - #region 鎻掑叆浠诲姟鏁版嵁 鏀瑰彉浠诲姟鐘舵�� - - // 鎻掑叆鍥涘悜杞︿换鍔¤〃 - var carTask1 = new WcsCarTasks() - { - TaskNo = waitTask.TaskNo, - PreId = preId1+ preId3+preId4, - ExecutionPath = executionPath1, - Path = path, - CarNo = assignCar.CarPlcIp, - Status = TaskStatusEnum.Wait - }; - _db.Insertable(carTask1).ExecuteCommand(); - if (!string.IsNullOrWhiteSpace(executionPath1) && isOk == "2") - { - // 鎻掑叆鍥涘悜杞︿换鍔¤〃 - var carTask2 = new WcsCarTasks() - { - TaskNo = waitTask.TaskNo, - PreId = preId1, - ExecutionPath = executionPath2, - Path = path, - CarNo = assignCar.CarPlcIp, - Status = TaskStatusEnum.Wait - }; - _db.Insertable(carTask2).ExecuteCommand(); - } - // 鏀瑰彉鎬讳换鍔¤〃鐘舵�� - waitTask.Status = TaskStatusEnum.Doing; - waitTask.UpdateTime = DateTime.Now; - _db.Updateable(waitTask).ExecuteCommand(); - HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>()); - - #endregion + Thread.Sleep(3000); } -- Gitblit v1.8.0