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