From e3a4181b4e107c8d2dc13f489ec62af28451bf3a Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期一, 28 四月 2025 17:18:12 +0800
Subject: [PATCH] 修改分配任务问题
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 6 +++---
Admin.NET/WCS.Application/Util/FourWayCarUtil.cs | 46 ++++++++++++++++++++++++++++------------------
Admin.NET/WCS.Application/Entity/WcsTask.cs | 7 +++++++
3 files changed, 38 insertions(+), 21 deletions(-)
diff --git a/Admin.NET/WCS.Application/Entity/WcsTask.cs b/Admin.NET/WCS.Application/Entity/WcsTask.cs
index 7333be5..55e109d 100644
--- a/Admin.NET/WCS.Application/Entity/WcsTask.cs
+++ b/Admin.NET/WCS.Application/Entity/WcsTask.cs
@@ -167,4 +167,11 @@
/// 璁惧绫诲瀷
/// </summary>
public PLCTypeEnum? Type { get; set; }
+
+ /// <summary>
+ /// 灏忚溅IP
+ /// </summary>
+ public string? CarIp { get; set; }
+
+
}
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index f9ef369..0f852e9 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -34,7 +34,7 @@
AGV(mod); // AGV璋冨害
break;
case PLCTypeEnum.ShuttleCar: //绌挎杞�
- ShuttleCar(mod);
+ //ShuttleCar(mod);
break;
case PLCTypeEnum.RobotPalletizer:
RobotPalletizer(mod);//鐮佸灈鏈哄櫒浜�
@@ -238,14 +238,14 @@
//瑕佷笅鍙戣矾寰�2浠诲姟
if (carTaskNext != null)
{
- modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.TaskNo == carTaskNext.TaskNo && s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar);
+ modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.TaskNo == carTaskNext.TaskNo && s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP);
carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First();
}
else
{
// 鑾峰彇浠诲姟淇℃伅
- modTask = _db.Queryable<WcsTask>().Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar).OrderBy(m => m.Levels).OrderBy(m => m.CreateTime).First();
+ modTask = _db.Queryable<WcsTask>().Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP).OrderBy(m => m.Levels).OrderBy(m => m.CreateTime).First();
if (modTask == null)
{
return;
diff --git a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
index c4bc14f..596b8d0 100644
--- a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
+++ b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
@@ -196,13 +196,13 @@
executionPath1 += pathXYZQian + ";";
}
executionPath2 += pathXYZQian + ";";
- //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
- if (!preId1.Contains(item + ""))
- {
- preId1 += item + ";";
- }
+
}
-
+ //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
+ if (!preId1.Contains(item + ""))
+ {
+ preId1 += item + ";";
+ }
isOk = "2";
}
@@ -277,7 +277,8 @@
PalletNo = "",
Status = TaskStatusEnum.Wait,
Levels = 999,
- Origin = "WCS"
+ Origin = "WCS",
+ CarIp = item.CarPlcIp
};
_db.Insertable(modTask).ExecuteCommand();
HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -301,7 +302,8 @@
#region 鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 4
//鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟
- var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo!=assignCar.CarPlcIp).ToList();
+ var taskListTask4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo!=assignCar.CarPlcIp).GroupBy(m=>m.TaskNo).Select(m=>m.TaskNo).ToList();
+ var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo != assignCar.CarPlcIp).ToList();
var preId4 = "";//鍓嶇疆浠诲姟Id
var str4 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜�
@@ -310,9 +312,14 @@
str4 += item.Path;
}
//鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔�
- foreach (var item in taskList4)
+ foreach (var item in taskListTask4)
{
- var lastPathList = item.ExecutionPath.Split(';');
+ var lastTask = taskList4.Where(m => m.TaskNo == item ).OrderBy(m=>m.CreateTime).LastOrDefault();
+ if (lastTask == null)
+ {
+ continue;
+ }
+ var lastPathList = lastTask.ExecutionPath.Split(';');
// a;b;c; 鏈�鍚庝竴涓綅鏄�溾�濓紝鎵�浠astPathList.Length - 2
var lastPath = lastPathList[lastPathList.Length - 2];
var lastPath2 = lastPath.Substring(0,6);
@@ -320,6 +327,7 @@
//濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈閱夎垶涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅
if (path.Contains(lastPath2))
{
+
var endLocate = "";
var executionPath4 = "";
var path4 = "";
@@ -327,7 +335,7 @@
//鏌ユ壘鐩爣浣嶇疆
while (endLocate == "" || datas4.Count == 0 || datas4 == null)
{
- endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4);
+ endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4+path);
var data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate);
datas4 = FourWayCarUtil.GetCarPathUp(data4, 0);
}
@@ -351,7 +359,8 @@
PalletNo = "",
Status = TaskStatusEnum.Wait,
Levels = 999,
- Origin = "WCS"
+ Origin = "WCS",
+ CarIp = lastTask.CarNo
};
_db.Insertable(modTask).ExecuteCommand();
HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -362,7 +371,7 @@
PreId = "",
ExecutionPath = executionPath4,
Path = path4,
- CarNo = item.CarNo,
+ CarNo = lastTask.CarNo,
Status = TaskStatusEnum.Wait
};
var idLong = _db.Insertable(carTaskYC).ExecuteReturnSnowflakeId();
@@ -391,7 +400,7 @@
var carTask2 = new WcsCarTasks()
{
TaskNo = waitTask.TaskNo,
- PreId = preId1,
+ PreId = "",
ExecutionPath = executionPath2,
Path = path,
CarNo = assignCar.CarPlcIp,
@@ -399,15 +408,16 @@
};
_db.Insertable(carTask2).ExecuteCommand();
}
+ waitTask.CarIp = assignCar.CarPlcIp;
if (moveType == 1)
{
// 鏀瑰彉鎬讳换鍔¤〃鐘舵��
waitTask.Status = TaskStatusEnum.Doing;
- waitTask.UpdateTime = DateTime.Now;
- _db.Updateable(waitTask).ExecuteCommand();
- HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>());
+ waitTask.UpdateTime = DateTime.Now;
}
-
+ _db.Updateable(waitTask).ExecuteCommand();
+ HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>());
+
return true;
#endregion
}
--
Gitblit v1.8.0