| | |
| | | using Microsoft.AspNetCore.Components.Routing; |
| | | using HslCommunication.WebSocket; |
| | | using Microsoft.AspNetCore.Components.Routing; |
| | | using Newtonsoft.Json; |
| | | using Quartz; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.Equipment; |
| | | using WIDESEAWCS_IBasicInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Repository; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | using WIDESEAWCS_Tasks.StackerCraneJob; |
| | | using WIDESEAWCS_Tasks; |
| | | using WIDESEAWCS_Core; |
| | | using SqlSugar.Extensions; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | using WIDESEAWCS_QuartzJob.Repository; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane; |
| | | using WIDESEAWCS_Tasks.StackerCraneJob; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_Tasks.åæåº; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | |
| | | private readonly IRouterService _routerService; |
| | | private readonly IRouterRepository _routerRepository; |
| | | private readonly IStationMangerRepository _stationMangerRepository; |
| | | private WebSocketServer _webSocketServer; |
| | | |
| | | public StackerCraneJob_YLSC2(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository) |
| | | public StackerCraneJob_YLSC2(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, WebSocketServer webSocketServer) |
| | | { |
| | | _taskService = taskService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | _routerService = routerService; |
| | | _stationMangerRepository = stationMangerRepository; |
| | | _routerRepository = routerRepository; |
| | | _webSocketServer = webSocketServer; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | |
| | | { |
| | | commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é
ä»»å¡å®æäºä»¶ |
| | | } |
| | | commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ |
| | | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) |
| | | //commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ |
| | | //è·åå½åå åæºç¶æ |
| | | if (commonStackerCrane.CurrentTaskNum > 0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3)) |
| | | { |
| | | StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum); |
| | | CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e); |
| | | } |
| | | else if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)//夿ä¸å |
| | | { |
| | | short stackerError = commonStackerCrane.Communicator.Read<short>("DB1000.54.0"); |
| | | if (stackerError==0) |
| | |
| | | } |
| | | } |
| | | } |
| | | ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == commonStackerCrane.DeviceCode); |
| | | if (deviceInfo != null) |
| | | { |
| | | RoadwayError.Roadways.Remove(deviceInfo); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == commonStackerCrane.DeviceCode); |
| | | if (deviceInfo==null) |
| | | { |
| | | RoadwayError.Roadways.Add(new ErrorDeviceInfo() { Code = commonStackerCrane.DeviceCode, Roadway = commonStackerCrane.DeviceCode }); |
| | | } |
| | | } |
| | | } |
| | | // 设置设å¤ç¼å·ï¼å端ç¨äºè¯å«å åæº |
| | | YL_DB yL_DB = new YL_DB(); |
| | | yL_DB.R_PP_Status = commonStackerCrane.DeviceCode; |
| | | // 设置å åæºç¶æ |
| | | yL_DB.YL_Status = commonStackerCrane.StackerCraneStatusValue switch |
| | | { |
| | | StackerCraneStatus.Fault => 0, |
| | | StackerCraneStatus.Normal => 1, |
| | | StackerCraneStatus.EmergencyStop => 2, |
| | | StackerCraneStatus.Unkonw => 3, |
| | | }; |
| | | yL_DB.YL_AutoStatus = commonStackerCrane.StackerCraneAutoStatusValue switch |
| | | { |
| | | StackerCraneAutoStatus.SemiAutomatic => 1, |
| | | StackerCraneAutoStatus.Maintenance => 2, |
| | | StackerCraneAutoStatus.Automatic => 3, |
| | | StackerCraneAutoStatus.Manual => 4, |
| | | StackerCraneAutoStatus.Unkonw => 5, |
| | | }; |
| | | yL_DB.YL_WorkStatus = commonStackerCrane.StackerCraneWorkStatusValue switch |
| | | { |
| | | StackerCraneWorkStatus.Standby => 1, |
| | | StackerCraneWorkStatus.PickUpCompleted => 2, |
| | | StackerCraneWorkStatus.PickUp => 3, |
| | | StackerCraneWorkStatus.Putting => 5, |
| | | StackerCraneWorkStatus.WorkCompleted => 9, |
| | | }; |
| | | yL_DB.YL_TaskNum = commonStackerCrane.CurrentTaskNum; |
| | | yL_DB.YL_WorkType = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType); |
| | | yL_DB.YL_Row = commonStackerCrane.Communicator.Read<short>("DB1000.46"); |
| | | yL_DB.YL_Column = commonStackerCrane.Communicator.Read<short>("DB1000.48.0"); |
| | | yL_DB.YL_Layer = commonStackerCrane.Communicator.Read<short>("DB1000.50.0"); |
| | | // è¯»åæ¥è¦ä¿¡æ¯ |
| | | short stackerError2 = commonStackerCrane.Communicator.Read<short>("DB1000.54.0"); |
| | | yL_DB.StackerAlarm = stackerError2 == 0 ? "æ " : $"æ¥è¦ä»£ç : {stackerError2}"; |
| | | // åºååå¹¶åéæ°æ® |
| | | string ylDB = JsonConvert.SerializeObject(yL_DB); |
| | | _webSocketServer.PublishAllClientPayload(ylDB); |
| | | |
| | | #region è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | |
| | | EquipmentDTO equipmentDTO = new EquipmentDTO(); |
| | | object obj = new |
| | | { |
| | | commonStackerCrane.DeviceName, |
| | | commonStackerCrane.DeviceCode, |
| | | StackerCraneAutoStatus.Automatic, |
| | | StackerCraneStatus.Normal, |
| | | StackerCraneWorkStatus.Standby, |
| | | TaskNum = commonStackerCrane.CurrentTaskNum, |
| | | WorkType = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType), |
| | | StackerAlarm = commonStackerCrane.Communicator.Read<short>("DB1000.54.0"), |
| | | }; |
| | | equipmentDTO.StackerDataJson = obj.Serialize(); |
| | | _webSocketServer.PublishAllClientPayload(equipmentDTO.Serialize()); |
| | | |
| | | #endregion |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e) |
| | | private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, StackerCraneTaskCompletedEventArgs e) |
| | | { |
| | | CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane; |
| | | if (commonStackerCrane != null) |
| | |
| | | _taskService.UpdateTaskExceptionMessage(taskNum, $"è¾é线åºåºç«ç¹æªé
ç½®,{task.NextAddress}"); |
| | | return WebResponseContent.Instance.Error($"è¾é线åºåºç«ç¹æªé
ç½®,{task.NextAddress}"); |
| | | } |
| | | Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode); |
| | | bool depth = false; |
| | | if (task.Grade > 0 && task.TaskType==TaskTypeEnum.PrintYLOutbound.ObjToInt()) |
| | | { |
| | | depth = true; |
| | | } |
| | | Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode && (depth ? x.Depth == 2 : true)); |
| | | if (router == null) |
| | | { |
| | | _taskService.UpdateTaskExceptionMessage(taskNum, $"æªæ¾å°è·¯ç±ä¿¡æ¯,{task.NextAddress}"); |
| | |
| | | /// <returns></returns> |
| | | private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane) |
| | | { |
| | | //夿æ¯å¦ææ£æ§è¡çä»»å¡ï¼å¦ææåä¸ä¸å |
| | | Dt_Task? taskOld = _taskRepository.QueryFirst(x => x.DeviceCode == commonStackerCrane.DeviceCode && x.Roadway == commonStackerCrane.DeviceCode && x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt()); |
| | | if (taskOld != null) |
| | | { |
| | | return null; |
| | | } |
| | | |
| | | Dt_Task? task; |
| | | if (commonStackerCrane.LastTaskType == null) |
| | | { |
| | | task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); |
| | | task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode); |
| | | } |
| | | else |
| | | { |
| | |
| | | task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); |
| | | if (task == null) |
| | | { |
| | | task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); |
| | | task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode, TaskTypeGroup.OutbondGroup); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //ä¸ä¸ä¸ªä¸ºå
¥åºåæ¥æ¯å¦åå¨åºåºä»»å¡ äº¤æ¿æ§è¡ |
| | | task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); |
| | | task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode, TaskTypeGroup.OutbondGroup); |
| | | if (task == null) |
| | | { |
| | | task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); |
| | |
| | | { |
| | | task.ExceptionMessage = "åºåºç«å°æ æ³ä¸å"; |
| | | _taskRepository.UpdateData(task); |
| | | WriteInfo(task.DeviceCode, $"åºåºç«å°æ æ³ä¸å"); |
| | | } |
| | | } |
| | | else |