From 06eb604f71605c47f015b88b1620b72b6f69df8c Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期一, 22 九月 2025 05:20:41 +0800
Subject: [PATCH] 功能增加,代码优化

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/测试架仓/StackerCraneJob_CSJ.cs |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs"
index 1740fcd..b12e821 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs"
@@ -1,4 +1,5 @@
 锘縰sing AutoMapper;
+using HslCommunication.WebSocket;
 using Microsoft.AspNetCore.Components.Routing;
 using Newtonsoft.Json;
 using Quartz;
@@ -27,6 +28,7 @@
 using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
 using WIDESEAWCS_Tasks.HoisterJob;
 using WIDESEAWCS_Tasks.StackerCraneJob;
+using WIDESEAWCS_Tasks.娴嬭瘯鏋朵粨;
 
 namespace WIDESEAWCS_Tasks
 {
@@ -36,13 +38,15 @@
         private readonly IMapper _mapper;
         private readonly ICacheService _cacheService;
         private readonly ITaskService _taskService;
+        public static CSJReadData cSJReadData = new CSJReadData();
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly ITaskRepository _taskRepository;
         private readonly IRouterService _routerService;
         private readonly IStationMangerRepository _stationMangerRepository;
+        private WebSocketServer _webSocketServer;
         private List<Dt_ApiInfo> apiInfos;
 
-        public StackerCraneJob_CSJ(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IMapper mapper)
+        public StackerCraneJob_CSJ(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IMapper mapper, WebSocketServer webSocketServer)
         {
             _taskService = taskService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -51,6 +55,7 @@
             _stationMangerRepository = stationMangerRepository;
             _cacheService = cacheService;
             _mapper = mapper;
+            _webSocketServer = webSocketServer;
 
             string? apiInfoStr = _cacheService.Get("apiInfos");
             if (!string.IsNullOrEmpty(apiInfoStr))
@@ -81,6 +86,7 @@
                     commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
                     if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
                     {
+                        Thread.Sleep(1000);
                         Dt_Task? task = GetTask(commonStackerCrane);
                         if (task != null)
                         {
@@ -100,6 +106,14 @@
                             }
                         }
                     }
+                    cSJReadData.R_CSJ_Status = ((short)commonStackerCrane.StackerCraneStatusValue);
+                    cSJReadData.R_CSJ_AutoStatus = ((short)commonStackerCrane.StackerCraneAutoStatusValue);
+                    cSJReadData.R_CSJ_WorkStatus = ((short)commonStackerCrane.StackerCraneWorkStatusValue);
+                    cSJReadData.R_CSJ_TaskNum = commonStackerCrane.CurrentTaskNum.ObjToInt();
+                    cSJReadData.R_CSJ_WorkType = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType);
+                    cSJReadData.R_CSJ_TrayType = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.TrayType);
+                    string cSJData = JsonConvert.SerializeObject(cSJReadData);
+                    _webSocketServer.PublishAllClientPayload(cSJData);
                 }
             }
             catch (Exception ex)
@@ -204,13 +218,13 @@
                     }
                 }
             }
-
+            //鍒ゆ柇绉诲簱
             if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
             {
                 if (OutTaskStationIsOccupied(task) == null)
                 {
                     bool flag = false;
-                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
+                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress,task.TaskType).Select(x => x.ChildPosi).ToList();
                     List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
                     foreach (var item in tasks)
                     {
@@ -271,10 +285,16 @@
                     Dt_Task reloTask = _mapper.Map<Dt_Task>(taskDTO);
                     //鍒ゆ柇绉诲簱璐т綅浠诲姟鏄惁宸插瓨鍦紝濡傚瓨鍦ㄥ厛鎵ц
                     Dt_Task existTask = _taskService.QueryStackerExistTask(reloTask.PalletCode, reloTask.SourceAddress);
-                    if (existTask != null)
+                    if (existTask != null && existTask.TaskState == (int)TaskStatusEnum.SC_Execute)
                     {
                         return existTask;
                     }
+                    else if (existTask != null && existTask.TaskState != (int)TaskStatusEnum.SC_Execute)
+                    {
+                        WriteError(commonStackerCrane.DeviceCode, $"浠诲姟{task.TaskNum}娴呰揣浣嶄换鍔existTask.TaskNum}浠诲姟鐘舵�佷笉涓哄爢鍨涘緟鎵ц");
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"浠诲姟{task.TaskNum}娴呰揣浣嶄换鍔existTask.TaskNum}浠诲姟鐘舵�佷笉涓哄爢鍨涘緟鎵ц");
+                        return null;
+                    }
                     else
                     {
                         reloTask.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();

--
Gitblit v1.9.3