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