isMatchReaderType($context)) { if ($context->currentStep === FinalRinseNode::getName()) { if (!$context->success) Logger::debug("[DryNode] 刷卡错误,当前步骤是终末漂洗,但是刷的读卡器类型不是终末漂洗,对用户进行语音提示刷终末漂洗读卡器"); $context->expectedNextStep = VoiceMessage::PLEASE_SWIPE_DRY; } return false; } // 上一个步骤必须是终末漂洗 if (!$this->isRequiredNode($context->currentStep, [FinalRinseNode::getName()])) { $context->expectedNextStep = VoiceMessage::PLEASE_SWIPE_DISINFECT; return false; } return true; } /** * 具体处理逻辑 */ protected function doHandle(ProcessContext $context): ProcessContext { // 更新步骤 $context->currentStep = '干燥'; $context->needDatabaseOperation = true; $context->dbOperation = DbOperationType::INSERT; $context->needWebSocketNotify = true; return $context; } }