paperId = $paperId; $this->includeKpExplain = $includeKpExplain; $this->onQueue('pdf'); } public function handle(ExamPdfExportService $pdfExportService): void { $paper = Paper::with('questions')->find($this->paperId); if (! $paper || $paper->questions->isEmpty()) { Log::warning('RegeneratePdfJob: 跳过无题目试卷', ['paper_id' => $this->paperId]); return; } $useKpExplain = $this->includeKpExplain ?? ($paper->paper_type !== 0); try { Log::info('RegeneratePdfJob: 开始', ['paper_id' => $this->paperId]); $pdfUrl = $pdfExportService->generateUnifiedPdf($this->paperId, $useKpExplain); if ($pdfUrl) { Log::info('RegeneratePdfJob: 成功', ['paper_id' => $this->paperId, 'pdf_url' => $pdfUrl]); } else { Log::warning('RegeneratePdfJob: 返回空', ['paper_id' => $this->paperId]); } } catch (\Exception $e) { Log::error('RegeneratePdfJob: 异常', [ 'paper_id' => $this->paperId, 'error' => $e->getMessage(), ]); throw $e; } } }