From 51af2794f47d5b68496edbc09d0ccb168347f02b Mon Sep 17 00:00:00 2001
From: HuBingJie <3146306518@qq.com>
Date: 星期六, 22 十一月 2025 10:19:05 +0800
Subject: [PATCH] 1
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 182 ++++++++++++++++-----------------------------
1 files changed, 66 insertions(+), 116 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 a66eea1..53bb9e4 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,9 +45,10 @@
private readonly ICacheService _cacheService; private readonly IRepository<Dt_Router> _routerRepository;
private readonly IRepository<Dt_StationManger> _stationMangerRepository;
private readonly IRepository<Dt_Task> _taskRepository;
+ private readonly CommonConveyorLineJob _lineJob;
//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)
+ public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IRepository<Dt_Router> routerRepository, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> taskRepository, CommonConveyorLineJob lineJob)
{
_taskService = taskService;
_routerService = routerService;
@@ -55,6 +56,7 @@
_routerService = routerService;
_stationMangerRepository = stationMangerRepository;
_taskRepository = taskRepository;
+ _lineJob = lineJob;
}
public Task Execute(IJobExecutionContext context)
@@ -111,97 +113,6 @@
}
- /*
- // 娣诲姞浜嬩欢璁㈤槄鐘舵�佹爣璁�
- 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);
-
- // 浣跨敤閿佺‘淇濈嚎绋嬪畨鍏ㄧ殑浜嬩欢璁㈤槄
- lock (_lockObject)
- {
- string deviceKey = speStackerCrane.DeviceCode;
- if (!_eventSubscribedMap.ContainsKey(deviceKey) || !_eventSubscribedMap[deviceKey])
- {
- getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;
- _eventSubscribedMap[deviceKey] = true;
- }
- }
-
- getStackerObject.CheckStackerCraneTaskCompleted();
- if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal)
- {
- 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 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)
{
SpeStackerCrane? speStackerCrane = sender as SpeStackerCrane;
@@ -232,6 +143,13 @@
private Dt_Task? GetTasks(SpeStackerCrane commonStackerCrane)
{
Dt_Task? task;
+ // PLC鐘舵�佹鏌ワ細WorkType蹇呴』涓�0锛堢┖闂茬姸鎬侊級
+ var workType = commonStackerCrane.GetValue<StackerCraneDBName, byte>(StackerCraneDBName.StackerCraneWorkStatus);
+ //var workType = commonStackerCrane.GetValue<StackerCraneDBName, byte>(StackerCraneDBName.StackerCraneWorkStatus);
+ if (workType != 0)
+ {
+ return null;
+ }
//鍫嗗灈鏈烘墽琛屼腑
if (_taskRepository.QueryFirst(x => x.DeviceCode == commonStackerCrane.DeviceCode && x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt()) != null)
@@ -245,23 +163,23 @@
if (task != null)
{
- if(task.Roadway=="SC02") return task; //濡傛灉鏈変换鍔″垯鐩存帴涓嬪彂缁欏爢鍨涙満
- if(task.Depth==1) return task;
- //2娣变綅杩涜鍒ゆ柇鏄惁瑕佺Щ搴�
+ if (task.Roadway == "SC02") return task; //濡傛灉鏈変换鍔″垯鐩存帴涓嬪彂缁欏爢鍨涙満
+ if (task.Depth == 1) return task;
+ //2娣变綅杩涜鍒ゆ柇鏄惁瑕佺Щ搴�
Dt_Task dt_Task = _taskService.RequestWMSTaskMovelibrary(task);
if (dt_Task != null) return dt_Task;
}
- else if (YKtasks.Count > 0)
+ 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;
+ 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
{
@@ -275,23 +193,34 @@
{
//杩涜鑾峰彇鍫嗗灈鏈哄嚭搴撲换鍔�
List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode);
- foreach (var item in tasks)
- {
- if (OutTaskStationIsOccupied(item) != null)
- {
- 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
+ foreach (var item in tasks)
+ {
+ //if (item.TargetAddress == "2021"||item.TargetAddress == "2020")
+ //{
+ // ////bool IsOccupied = _lineJob.GetPick();
+
+ // //if (!IsOccupied)
+ // //{
+ // // return null;
+ // //}
+ //}
+ if (OutTaskStationIsOccupied(item) != null)
{
- return item;
+ 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;
+ }
}
- }
+
}
}
@@ -346,6 +275,27 @@
return task;
}
}
+ //if (task.NextAddress == "2021" || task.NextAddress == "2020")
+ //{
+ // DeviceProDTO? deviceProDTO1 = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == "2008" || x.DeviceChildCode == "2009" || x.DeviceChildCode == "2015" || x.DeviceChildCode == "2016" && x.DeviceProParamName == "IsOccupied"); //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
+ // if (deviceProDTO != null)
+ // {
+ // bool IsOccupied2008 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
+ // bool IsOccupied2009 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
+ // bool IsOccupied2015 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
+ // bool IsOccupied2016 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
+
+ // //鍒ゆ柇鏄惁鎴愮珛
+ // if (IsOccupied2008 && IsOccupied2009 && IsOccupied2015 && IsOccupied2016)
+ // {
+ // return null;
+ // }
+ // else
+ // {
+ // return task;
+ // }
+ // }
+ //}
}
}
catch (Exception ex)
--
Gitblit v1.9.3