isInStorage) { $context->expectedNextStep = VoiceMessage::PLEASE_SWIPE_STORAGE_OUT; return false; } // 只有需要晨洗且未完成晨洗时才处理 if (!$context->needMorningWash || $context->morningWashed) { return false; } // 检查当前读卡器类型是否匹配 if (!$this->isRequiredNode($context->readerType, ['漂洗', '机洗'])){ $context->expectedNextStep = VoiceMessage::PLEASE_SWIPE_MORNING_WASH; return false; } return true; } /** * 具体处理逻辑 */ protected function doHandle(ProcessContext $context): ProcessContext { Logger::debug("处理晨洗节点"); // 标记晨洗已开始 $context->morningWashed = true; // 设置流程类型 if ($context->readerType === '机洗') { $context->processType = '机洗(晨洗)'; } else { $context->processType = '手工洗(晨洗)'; } // 更新当前步骤 $context->currentStep = self::getName(); $context->needDatabaseOperation = true; $context->dbOperation = DbOperationType::INSERT; $context->needWebSocketNotify = true; return $context; } }