|  |  | 
 |  |  |  | 
 |  |  |                     // 查询平台信息 | 
 |  |  |                     Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); | 
 |  |  |                     if (platform != null && !string.IsNullOrEmpty(platform.Location)) | 
 |  |  |                     var platformNotusable = new List<string> { "2028", "2024","2032","2036","2040" }; | 
 |  |  |                     if (platform != null && !string.IsNullOrEmpty(platform.Location) && !platformNotusable.Contains(platform.PlatCode)) | 
 |  |  |                     { | 
 |  |  |                         if (platform.PlatCode == "2040" || platform.PlatCode == "2036" || platform.PlatCode == "2032" || platform.PlatCode == "2028" || platform.PlatCode == "2024") | 
 |  |  |                         var strings = platform.Location.Split(',').ToList(); | 
 |  |  |                         foreach (var ite in strings) | 
 |  |  |                         { | 
 |  |  |                             Platform platformJZ = _platFormRepository.QueryFirst(x => x.PlatCode == "10086" && x.Status == "Active"); | 
 |  |  |                             if (platformJZ != null) | 
 |  |  |                             // 读取任务命令 | 
 |  |  |                             ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); | 
 |  |  |                             if (command1.InteractiveSignal != 2) | 
 |  |  |                             { | 
 |  |  |                                 var strings = platform.Location.Split(',').ToList(); | 
 |  |  |                                 foreach (var ite in strings) | 
 |  |  |                                 command.InteractiveSignal = writeInteractiveSignal; | 
 |  |  |                                 int count = strings.Count; | 
 |  |  |                                 // 获取处理方法 | 
 |  |  |                                 MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); | 
 |  |  |                                 if (method != null) | 
 |  |  |                                 { | 
 |  |  |                                     // 读取任务命令 | 
 |  |  |                                     ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); | 
 |  |  |                                     if (command1.InteractiveSignal != 2) | 
 |  |  |                                     { | 
 |  |  |                                         command.InteractiveSignal = writeInteractiveSignal; | 
 |  |  |                                         int count = strings.Count; | 
 |  |  |                                         // 获取处理方法 | 
 |  |  |                                         MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); | 
 |  |  |                                         if (method != null) | 
 |  |  |                                         { | 
 |  |  |                                             command.InteractiveSignal = commandWrite.WriteInteractiveSignal; | 
 |  |  |                                             // 调用处理方法 | 
 |  |  |                                             method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); | 
 |  |  |                                         } | 
 |  |  |                                          | 
 |  |  |                                     } | 
 |  |  |                                     command.InteractiveSignal = commandWrite.WriteInteractiveSignal; | 
 |  |  |                                     // 调用处理方法 | 
 |  |  |                                     method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); | 
 |  |  |                                 } | 
 |  |  |  | 
 |  |  |                             } | 
 |  |  |                             //else | 
 |  |  |                             //{ | 
 |  |  |                             //    //ConsoleHelper.WriteErrorLine("静置空托不允许出料"); | 
 |  |  |                             //} | 
 |  |  |                         } | 
 |  |  |                         else | 
 |  |  |                         { | 
 |  |  |                             var strings = platform.Location.Split(',').ToList(); | 
 |  |  |                             foreach (var ite in strings) | 
 |  |  |                             { | 
 |  |  |                                 // 读取任务命令 | 
 |  |  |                                 ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); | 
 |  |  |                                 if (command1.InteractiveSignal != 2) | 
 |  |  |                                 { | 
 |  |  |                                     command.InteractiveSignal = writeInteractiveSignal; | 
 |  |  |                                     int count = strings.Count; | 
 |  |  |                                     // 获取处理方法 | 
 |  |  |                                     MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); | 
 |  |  |                                     if (method != null) | 
 |  |  |                                     { | 
 |  |  |                                         command.InteractiveSignal = commandWrite.WriteInteractiveSignal; | 
 |  |  |                                         // 调用处理方法 | 
 |  |  |                                         method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); | 
 |  |  |                                     } | 
 |  |  |                                      | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         }  | 
 |  |  |                     } | 
 |  |  |                     //if (conveyorLine.DeviceCode == "1001") | 
 |  |  |                     //{ | 
 |  |  |                     //    ConsoleHelper.WriteSuccessLine("ProcessDeviceAsync方法结束时间:" + DateTime.Now.ToString("G") + $"点位:{childDeviceCode}"); | 
 |  |  |                     //} | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  | 
 |  |  |                         { | 
 |  |  |                             // 获取任务的下一目标地址 | 
 |  |  |                             var next = task.NextAddress; | 
 |  |  |                         // 将任务映射为命令 | 
 |  |  |                         var taskCommand = MapTaskCommand(task, command); | 
 |  |  |                         // 恢复任务的下一目标地址 | 
 |  |  |                         task.NextAddress = next; | 
 |  |  |                         // 发送命令到子设备 | 
 |  |  |                         conveyorLine.SendCommand(taskCommand, childDeviceCode); | 
 |  |  |                             // 将任务映射为命令 | 
 |  |  |                             var taskCommand = MapTaskCommand(task, command); | 
 |  |  |                             // 恢复任务的下一目标地址 | 
 |  |  |                             task.NextAddress = next; | 
 |  |  |                             // 发送命令到子设备 | 
 |  |  |                             conveyorLine.SendCommand(taskCommand, childDeviceCode); | 
 |  |  |  | 
 |  |  |                         // 输出警告信息,表示任务已到达子设备并请求扫码入库,下一目标地址 | 
 |  |  |                         var logs = $"【{conveyorLine._deviceName}】任务号:【{command.TaskNum}】,托盘条码:【{command.Barcode}】已到达【{childDeviceCode}】请求扫码入库,下一目标地址【{taskCommand.TargetAddress}】"; | 
 |  |  |                         ConsoleHelper.WriteWarningLine(logs); | 
 |  |  |                             // 输出警告信息,表示任务已到达子设备并请求扫码入库,下一目标地址 | 
 |  |  |                             var logs = $"【{conveyorLine._deviceName}】任务号:【{command.TaskNum}】,托盘条码:【{command.Barcode}】已到达【{childDeviceCode}】请求扫码入库,下一目标地址【{taskCommand.TargetAddress}】"; | 
 |  |  |                             ConsoleHelper.WriteWarningLine(logs); | 
 |  |  |  | 
 |  |  |                         await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); | 
 |  |  |                         WriteInfo(conveyorLine.DeviceName, logs); | 
 |  |  |                             await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); | 
 |  |  |                             WriteInfo(conveyorLine.DeviceName, logs); | 
 |  |  |  | 
 |  |  |                         // 发送任务完成通知 | 
 |  |  |                         ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); | 
 |  |  |                         // 更新任务状态为下一状态 | 
 |  |  |                         _taskService.UpdateTaskStatusToNext(task); | 
 |  |  |                             // 发送任务完成通知 | 
 |  |  |                             ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); | 
 |  |  |                             // 更新任务状态为下一状态 | 
 |  |  |                             _taskService.UpdateTaskStatusToNext(task); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                                 // 如果已有任务数量小于指定索引 | 
 |  |  |                                 if (tasks.Count < Location.Count) | 
 |  |  |                                 { | 
 |  |  |                                     ConsoleHelper.WriteSuccessLine($"{childDeviceCode}"); | 
 |  |  |                                     return childDeviceCode; | 
 |  |  |                                 } | 
 |  |  |                                 else |