From b6837f097e9cdb2645368aed4ddb03f580c331e4 Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期一, 05 五月 2025 17:29:07 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/CommonConveyorLightJob.cs |   68 +++++++++++++++++++++++++++++----
 1 files changed, 59 insertions(+), 9 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/CommonConveyorLightJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/CommonConveyorLightJob.cs"
index 99f0584..dfdcbfc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/CommonConveyorLightJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/CommonConveyorLightJob.cs"
@@ -6,6 +6,8 @@
 using HslCommunication.WebSocket;
 using Quartz;
 using WIDESEAWCS_Common;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
@@ -18,6 +20,7 @@
 
         private readonly ITaskRepository _taskRepository;
         private readonly WebSocketServer _webSocketServer;
+        private readonly IContainerRepository _containerRepository;
 
         public CommonConveyorLightJob(ITaskRepository taskRepository, WebSocketServer webSocketServer)
         {
@@ -33,15 +36,48 @@
                 OtherDevice otherDevice = (OtherDevice)value;
                 try
                 {
+                    bool[] stationStatusArray = otherDevice.Communicator.Read<bool>("DB15.922.0", 16);
+
+                    bool[] releaseArray = otherDevice.Communicator.Read<bool>("DB15.924.0", 16);
+
                     string? dbAddress = otherDevice.DeviceProDTOs.OrderBy(x => x.DeviceProOffset).Select(x => x.DeviceProAddress).FirstOrDefault();
                     if (!string.IsNullOrEmpty(dbAddress))
                     {
                         List<string> deviceChildCodes = otherDevice.DeviceProDTOs.GroupBy(x => x.DeviceChildCode).Select(x => x.Key).ToList();
                         for (int i = 0; i < deviceChildCodes.Count; i++)
                         {
+                            if (LightStatusStorage.StationStautsDic.ContainsKey(deviceChildCodes[i]))
+                            {
+                                LightStatusStorage.StationStautsDic[deviceChildCodes[i]] = stationStatusArray[i];
+                            }
+                            else
+                            {
+                                LightStatusStorage.StationStautsDic.Add(deviceChildCodes[i], stationStatusArray[i]);
+                            }
+
+                            if (LightStatusStorage.StationReleaseDic.ContainsKey(deviceChildCodes[i]))
+                            {
+                                LightStatusStorage.StationReleaseDic[deviceChildCodes[i]] = releaseArray[i];
+                            }
+                            else
+                            {
+                                LightStatusStorage.StationReleaseDic.Add(deviceChildCodes[i], releaseArray[i]);
+                            }
+
                             if (!LightStatusStorage.LightStatusDic.ContainsKey(deviceChildCodes[i]))
                             {
                                 LightStatusStorage.LightStatusDic.Add(deviceChildCodes[i], LightStatusEnum.None);
+                                if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightCompleted, deviceChildCodes[i]))
+                                    otherDevice.SetValue(LightStatusEnum.LightCompleted, false, deviceChildCodes[i]);
+
+                                if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightError, deviceChildCodes[i]))
+                                    otherDevice.SetValue(LightStatusEnum.LightError, false, deviceChildCodes[i]);
+
+                                if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightWorking, deviceChildCodes[i]))
+                                    otherDevice.SetValue(LightStatusEnum.LightWorking, false, deviceChildCodes[i]);
+
+                                if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightVoice, deviceChildCodes[i]))
+                                    otherDevice.SetValue(LightStatusEnum.LightVoice, false, deviceChildCodes[i]);
                             }
                             else
                             {
@@ -92,19 +128,33 @@
                                     Dt_Task task = _taskRepository.QueryFirst(x => x.NextAddress.Contains(deviceChildCodes[i]));
                                     if (task == null)
                                     {
-                                        if (!otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightCompleted, deviceChildCodes[i]))
-                                            otherDevice.SetValue(LightStatusEnum.LightCompleted, true, deviceChildCodes[i]);
+                                        Dt_Container container = _containerRepository.QueryFirst(x => x.ContainerCode == deviceChildCodes[i]);
+                                        if (container != null && container.ContainerStatus == ContainerStatusEnum.ReadyRelease.ObjToInt())
+                                        {
+                                            container.ContainerStatus = ContainerStatusEnum.Release.ObjToInt();
 
-                                        if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightError, deviceChildCodes[i]))
-                                            otherDevice.SetValue(LightStatusEnum.LightError, false, deviceChildCodes[i]);
+                                            _containerRepository.UpdateData(container);
 
-                                        if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightWorking, deviceChildCodes[i]))
-                                            otherDevice.SetValue(LightStatusEnum.LightWorking, false, deviceChildCodes[i]);
+                                            if (!otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightCompleted, deviceChildCodes[i]))
+                                                otherDevice.SetValue(LightStatusEnum.LightCompleted, true, deviceChildCodes[i]);
 
-                                        if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightVoice, deviceChildCodes[i]))
-                                            otherDevice.SetValue(LightStatusEnum.LightVoice, false, deviceChildCodes[i]);
+                                            if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightError, deviceChildCodes[i]))
+                                                otherDevice.SetValue(LightStatusEnum.LightError, false, deviceChildCodes[i]);
 
-                                        //_webSocketServer鍙戦�佹暟鎹�
+                                            if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightWorking, deviceChildCodes[i]))
+                                                otherDevice.SetValue(LightStatusEnum.LightWorking, false, deviceChildCodes[i]);
+
+                                            if (otherDevice.GetValue<LightStatusEnum, bool>(LightStatusEnum.LightVoice, deviceChildCodes[i]))
+                                                otherDevice.SetValue(LightStatusEnum.LightVoice, false, deviceChildCodes[i]);
+
+                                            //_webSocketServer鍙戦�佹暟鎹�
+                                            _webSocketServer.PublishAllClientPayload(new
+                                            {
+                                                stationCode = deviceChildCodes[i],
+                                                release = 1,
+                                            }.Serialize());
+                                        }
+
                                     }
                                 }
                                 else if (LightStatusStorage.LightStatusDic[deviceChildCodes[i]] == LightStatusEnum.Ready)

--
Gitblit v1.9.3