From 33ef96c0b10aea2a5c9cee18dbc39cdf169ccf92 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期一, 13 十月 2025 15:32:41 +0800
Subject: [PATCH] 优化四向车任务反馈流程
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 49 ++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index d748ee3..f48c058 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -9,6 +9,7 @@
using Furion.Logging;
using IoTClient;
using NewLife.Reflection;
+using Newtonsoft.Json;
using Org.BouncyCastle.Ocsp;
using SixLabors.ImageSharp.ColorSpaces;
using WCS.Application.Entity;
@@ -40,7 +41,7 @@
AGV(mod); // AGV璋冨害
break;
case PLCTypeEnum.ShuttleCar: //绌挎杞�
- //if (mod.PlcIdIP == "10.26.254.28")
+ //if (mod.PlcIdIP == "10.26.254.28")
//{
// break;
//}
@@ -191,6 +192,21 @@
}
if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
{
+ //鏌ユ壘璇ヤ换鍔$殑涓婁竴鏉″瓙浠诲姟瀹屾垚鏃堕棿鍜屽綋鍓嶆椂闂撮棿闅旓紝濡傛灉闂撮殧鏃堕棿澶煭璇存槑鏈夐棶棰橈紝绛�3绉掑悗鍐嶆墽琛�
+ var carTaskAfter = _db.Queryable<WcsCarTasks>().First(m => m.IsDelete == false && m.Status == TaskStatusEnum.Complete && m.CarTaskNo != valueTaskStr
+ && m.CarNo == modDevice.PlcIdIP && m.TaskNo == carTask.TaskNo);
+ if (carTaskAfter != null && carTaskAfter.UpdateTime != null)
+ {
+ TimeSpan difference = DateTime.Now - Convert.ToDateTime(carTaskAfter.UpdateTime);
+ double seconds = difference.TotalSeconds;
+ if (seconds < 3)
+ {
+ Log.Error($"鍥涘悜杞︾浜屾潯瀛愪换鍔″弽棣堝畬鎴愭椂闂村紓甯�:{carTaskNext.TaskNo}");
+ Thread.Sleep(3000);
+ break;
+ }
+ }
+
carTask.Status = TaskStatusEnum.Complete;
carTask.UpdateTime = DateTime.Now;
_db.Updateable(carTask).ExecuteCommand();
@@ -209,6 +225,19 @@
}
//鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
+ //carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing && m.CarTaskNo != valueTaskStr).OrderBy(m => m.CreateTime).First();
+ if (carTaskNext != null)
+ {
+ if (carTaskNext.CarTaskNo != null && carTaskNext.CarTaskNo < valueTaskStr)
+ {
+ carTaskNext.Status = TaskStatusEnum.Complete;
+ carTaskNext.UpdateTime = DateTime.Now;
+ _db.Updateable(carTaskNext).ExecuteCommand();
+
+ carTaskNext = null;
+ Log.Error($"鍥涘悜杞︾涓�鏉″瓙浠诲姟娌¤嚜鍔ㄥ畬鎴�:{carTaskNext.TaskNo}");
+ }
+ }
//鎬讳换鍔′笅娌℃湁鍏朵粬鏈墽琛屽皬杞︾殑浠诲姟 鍙樻洿鎬讳换鍔′俊鎭�
if (carTaskNext == null && modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
{
@@ -542,18 +571,23 @@
var modPosTaskStatus2 = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鐘舵��");
var (resultTaskStatus2, valueTaskStatus2) = plcConn.GetDBValue(modPosTaskStatus.PosType, modPosTaskStatus.PlcPos);
- if (resultCar.IsSucceed && valueCar == 1 && resultTaskStatus2.IsSucceed && (valueTaskStatus2 == 0 || valueTaskStatus2 == 1))
+ if (resultCar.IsSucceed && valueCar == 1 && resultTaskStatus2.IsSucceed && (valueTaskStatus2 == 0 || valueTaskStatus2 == 1))
{
- //鍏堝浣�
- var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
- plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1");
+ var carnew = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
+
+ if (carnew == null)
+ {
+ //鍏堝浣�
+ var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
+ plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1");
+ }
}
else
{
return;
}
- List<Result> listResult = new List<Result>();
+ List<Result> listResult = new List<Result>();
//鑾峰彇灏忚溅浠诲姟鍙�
var carTaskNo = FourWayCarUtil.GetTaskNo();
@@ -1436,10 +1470,11 @@
new {type = "SITE" , code = modTask.StartLocate},
new { type = "PILE_COUNT", code = modTask.Qty }
};
+
taskModel.targetRoute.Add(new targetRoute() {
seq = 0,
type = "MIX_CONDITION",
- code = code.ToString() // "[{\"type":\"SITE", code = modTask.StartLocate },new { type = "PILE_COUNT", code = modTask.Qty }]"
+ code = JsonConvert.SerializeObject(code) // "[{\"type":\"SITE", code = modTask.StartLocate },new { type = "PILE_COUNT", code = modTask.Qty }]"
});
--
Gitblit v1.8.0