From d58196721475e968769d708d9c14f60dd8d5671f Mon Sep 17 00:00:00 2001
From: HuBingJie <3146306518@qq.com>
Date: 星期四, 13 十一月 2025 22:20:14 +0800
Subject: [PATCH] 1
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 144 ++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 133 insertions(+), 11 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index 8af5db4..a66eea1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -45,6 +45,7 @@
private readonly ICacheService _cacheService; private readonly IRepository<Dt_Router> _routerRepository;
private readonly IRepository<Dt_StationManger> _stationMangerRepository;
private readonly IRepository<Dt_Task> _taskRepository;
+ //bool SCres = false;
public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IRepository<Dt_Router> routerRepository, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> taskRepository)
{
@@ -57,22 +58,86 @@
}
public Task Execute(IJobExecutionContext context)
+ {
+ try
+ {
+
+ SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
+ if (speStackerCrane != null)
+ {
+ GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
+ if (!getStackerObject.IsEventSubscribed)
+ {
+ getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;
+ }
+ getStackerObject.CheckStackerCraneTaskCompleted();
+ if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal)
+ {
+ //var a = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
+ Dt_Task? task = GetTasks(speStackerCrane);
+ if (task != null)
+ {
+ WriteInfo("鏌ユ壘鍫嗗灈鏈轰换鍔″彿", $"浠诲姟淇℃伅,浠诲姟鍙�:{task.TaskNum}锛屽爢鍨涙満缂栧彿{speStackerCrane.DeviceCode}");
+ bool sendFlag = true;
+ if (sendFlag)
+ {
+ StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); //杞崲涓哄爢鍨涙満浠诲姟
+ if (stackerCraneTaskCommand != null)
+ {
+ sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand); //鍙戦�佸爢鍨涙満浠诲姟
+ if (sendFlag)
+ {
+ speStackerCrane.SetValue(StackerCraneDBName.CommandSend, 1);//鍚姩鍛戒护
+ speStackerCrane.LastTaskType = task.TaskType;
+ task.Dispatchertime = DateTime.Now;
+ task.ExceptionMessage = "";
+
+ WebResponseContent webResponseContent = _taskService.UpdateTaskStatusToNext(task.TaskNum);
+ //寤舵椂1s
+ Thread.Sleep(1000);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (Exception)
+ {
+
+ throw;
+ }
+ return Task.CompletedTask;
+ }
+
+
+ /*
+ // 娣诲姞浜嬩欢璁㈤槄鐘舵�佹爣璁�
+ private static readonly Dictionary<string, bool> _eventSubscribedMap = new Dictionary<string, bool>();
+ private static readonly object _lockObject = new object();
+ public Task Execute(IJobExecutionContext context)
{
try
{
-
SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
if (speStackerCrane != null)
{
GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
- if (!getStackerObject.IsEventSubscribed)
+
+ // 浣跨敤閿佺‘淇濈嚎绋嬪畨鍏ㄧ殑浜嬩欢璁㈤槄
+ lock (_lockObject)
{
- getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;
+ string deviceKey = speStackerCrane.DeviceCode;
+ if (!_eventSubscribedMap.ContainsKey(deviceKey) || !_eventSubscribedMap[deviceKey])
+ {
+ getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;
+ _eventSubscribedMap[deviceKey] = true;
+ }
}
+
getStackerObject.CheckStackerCraneTaskCompleted();
if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal)
{
- var a = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
Dt_Task? task = GetTasks(speStackerCrane);
if (task != null)
{
@@ -80,16 +145,17 @@
bool sendFlag = true;
if (sendFlag)
{
- StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+ StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); //杞崲涓哄爢鍨涙満浠诲姟
if (stackerCraneTaskCommand != null)
{
- sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand);
+ sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand); //鍙戦�佸爢鍨涙満浠诲姟
if (sendFlag)
{
speStackerCrane.SetValue(StackerCraneDBName.CommandSend, 1);//鍚姩鍛戒护
speStackerCrane.LastTaskType = task.TaskType;
task.Dispatchertime = DateTime.Now;
task.ExceptionMessage = "";
+
WebResponseContent webResponseContent = _taskService.UpdateTaskStatusToNext(task.TaskNum);
//寤舵椂1s
Thread.Sleep(1000);
@@ -100,14 +166,41 @@
}
}
}
- catch (Exception)
+ catch (Exception ex)
{
-
+ WriteError("鍫嗗灈鏈轰换鍔℃墽琛屽紓甯�", ex.Message);
throw;
}
return Task.CompletedTask;
}
+ private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, StackerCraneTaskCompletedEventArgs e)
+ {
+ SpeStackerCrane? speStackerCrane = sender as SpeStackerCrane;
+ if (speStackerCrane != null)
+ {
+ // 浣跨敤閿佺‘淇濆悓涓�浠诲姟涓嶄細琚苟鍙戝鐞�
+ lock (_lockObject)
+ {
+ if (speStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+ {
+ var currentTaskNum = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
+ WriteInfo("鍫嗗灈鏈轰换鍔″畬鎴�", $"PLC浠诲姟鍙�:{currentTaskNum}, 绯荤粺浠诲姟鍙�:{e.TaskNum}, 鏃堕棿:{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}");
+
+ _taskService.StackCraneTaskCompleted(e.TaskNum);
+ WriteInfo("鍫嗗灈鏈轰换鍔″畬鎴愬弽棣堜换鍔″彿", $"浠诲姟淇℃伅,浠诲姟鍙�:{e.TaskNum}");
+ speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+
+ WriteInfo("鍫嗗灈鏈轰换鍔$姸鎬佹洿鏂�", $"浠诲姟{e.TaskNum}瀹屾垚鐘舵�佸凡璁剧疆");
+ }
+ else
+ {
+ WriteInfo("鍫嗗灈鏈轰换鍔¢噸澶嶅畬鎴愪簨浠�", $"浠诲姟鍙�:{e.TaskNum} 宸茶澶勭悊锛屽拷鐣ラ噸澶嶄簨浠�");
+ }
+ }
+ }
+ }
+ */
private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, StackerCraneTaskCompletedEventArgs e)
{
@@ -118,13 +211,19 @@
{
var TaskNum = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
WriteInfo("鍫嗗灈鏈轰换鍔″畬鎴�", $"浠诲姟鍙�:{TaskNum}");
- _taskService.StackCraneTaskCompleted(e.TaskNum);
+ bool res = _taskService.StackCraneTaskCompleted(e.TaskNum);
+ if(res == true)
+ {
+ speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+
+ }
WriteInfo("鍫嗗灈鏈轰换鍔″畬鎴愬弽棣堜换鍔″彿", $"浠诲姟淇℃伅,浠诲姟鍙�:{e.TaskNum}");
- speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+ return;
+ //SCres=true;
}
}
}
-
+
/// <summary>
/// 鑾峰彇浠诲姟
/// </summary>
@@ -141,6 +240,9 @@
}
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); //鑾峰彇鍏ュ簱浠诲姟
+ List<Dt_Task> YKtasks = _taskService.QueryStackerCraneYKTasks(commonStackerCrane.DeviceCode);
+
+
if (task != null)
{
if(task.Roadway=="SC02") return task; //濡傛灉鏈変换鍔″垯鐩存帴涓嬪彂缁欏爢鍨涙満
@@ -149,6 +251,25 @@
Dt_Task dt_Task = _taskService.RequestWMSTaskMovelibrary(task);
if (dt_Task != null) return dt_Task;
+ }
+ else if (YKtasks.Count > 0)
+ {
+ foreach (var item in YKtasks)
+ {
+ if (item.Roadway == "SC01")
+ {
+ if (item.Depth == 1) return item;
+ //璋冨彇WMS鎺ュ彛杩涜鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴�
+ Dt_Task dt_Task = OutTaskMovelibrary(item);
+ if (dt_Task != null) return dt_Task;
+
+ else
+ {
+ return item;
+ }
+ }
+ }
+
}
else
{
@@ -174,6 +295,7 @@
}
}
+
return task;
}
--
Gitblit v1.9.3