From b3ff80e45d24a821ca0731983b1546b48570cdf1 Mon Sep 17 00:00:00 2001
From: xby-y <2251528873@qq.com>
Date: 星期四, 09 四月 2026 14:28:51 +0800
Subject: [PATCH] 添加日志信息
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 198 ++++++++++++++++++-------------------------------
1 files changed, 73 insertions(+), 125 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..d5b2b8f 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)
@@ -242,26 +160,25 @@
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); //鑾峰彇鍏ュ簱浠诲姟
List<Dt_Task> YKtasks = _taskService.QueryStackerCraneYKTasks(commonStackerCrane.DeviceCode);
-
if (task != null)
{
- if(task.Roadway=="SC02") return task; //濡傛灉鏈変换鍔″垯鐩存帴涓嬪彂缁欏爢鍨涙満
- if(task.Depth==1) return task;
- //2娣变綅杩涜鍒ゆ柇鏄惁瑕佺Щ搴�
- Dt_Task dt_Task = _taskService.RequestWMSTaskMovelibrary(task);
+ if (task.Roadway == "SC02") return task; //濡傛灉鏈変换鍔″垯鐩存帴涓嬪彂缁欏爢鍨涙満
+ if (task.Depth == 1) return task;
+ //2娣变綅杩涜鍒ゆ柇鏄惁瑕佺Щ搴�
+ Dt_Task dt_Task = OutTaskMovelibrary(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,33 +192,42 @@
{
//杩涜鑾峰彇鍫嗗灈鏈哄嚭搴撲换鍔�
List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode);
- foreach (var item in tasks)
- {
- if (OutTaskStationIsOccupied(item) != null)
+ foreach (var item in tasks)
{
- if (item.Roadway == "SC01")
+ if (OutTaskStationIsOccupied(item) != null)
{
- 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
+ {
+ return item;
+ }
}
- else
- {
- return item;
- }
- }
+
}
}
-
-
return task;
}
private Dt_Task? OutTaskMovelibrary([NotNull] Dt_Task task)
{
- string[] targetCodes = task.SourceAddress.Split("-");
+ string[] targetCodes;
+ if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
+ {
+ targetCodes = task.TargetAddress.Split("-");
+
+ }
+ else
+ {
+ targetCodes = task.SourceAddress.Split("-");
+
+ }
if (targetCodes[1] == "001")
{
targetCodes[1] = "002";
@@ -337,15 +263,37 @@
if (device != null)
{
OtherDevice conveyorLine = (OtherDevice)device;
- DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied"); //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
- if (deviceProDTO != null)
+
+ if (task.TargetAddress == "2021" || task.TargetAddress == "2020" || task.TargetAddress == "2009")
{
- bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress); //鍒ゆ柇杈撻�佺嚎鏄惁鍏佽鏀捐揣淇″彿
- if (!B_Event_Test)
+ DeviceProDTO? deviceProDTO2007 = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == "2007" && x.DeviceProParamName == "IsOccupied"); //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
+ DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied"); //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
+
+ if (deviceProDTO != null)
{
- return task;
+ bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress); //鍒ゆ柇杈撻�佺嚎鏄惁鍏佽鏀捐揣淇″彿
+ bool B_Event_Test2007 = conveyorLine.Communicator.Read<bool>(deviceProDTO2007.DeviceProAddress); //鍒ゆ柇2007杈撻�佺嚎鏄惁鍏佽鏀捐揣淇″彿
+
+ if (!B_Event_Test && !B_Event_Test2007)
+ {
+ return task;
+ }
+ }
+
+ }
+ else
+ {
+ DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied"); //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
+ if (deviceProDTO != null)
+ {
+ bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress); //鍒ゆ柇杈撻�佺嚎鏄惁鍏佽鏀捐揣淇″彿
+ if (!B_Event_Test)
+ {
+ return task;
+ }
}
}
+
}
}
catch (Exception ex)
--
Gitblit v1.9.3