| | |
| | | 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; |
| | |
| | | |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly WebSocketServer _webSocketServer; |
| | | private readonly IContainerRepository _containerRepository; |
| | | |
| | | public CommonConveyorLightJob(ITaskRepository taskRepository, WebSocketServer webSocketServer) |
| | | { |
| | |
| | | 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 |
| | | { |
| | |
| | | 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) |