ExportTaskJob.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace General\Jobs;
  3. use General\Helpers\ExcelHelper;
  4. use General\Services\Export\AbstractDataExportHandle;
  5. use General\Services\Export\AbstractExportTask;
  6. use Illuminate\Bus\Queueable;
  7. use Illuminate\Queue\SerializesModels;
  8. use Illuminate\Queue\InteractsWithQueue;
  9. use Illuminate\Contracts\Queue\ShouldQueue;
  10. use Illuminate\Foundation\Bus\Dispatchable;
  11. class ExportTaskJob implements ShouldQueue
  12. {
  13. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  14. private $task;
  15. private $export_handle;
  16. /**
  17. * Create a new job instance.
  18. *
  19. * @return void
  20. */
  21. public function __construct(AbstractExportTask $task, AbstractDataExportHandle $handle)
  22. {
  23. $this->task = $task;
  24. $this->export_handle = $handle;
  25. }
  26. /**
  27. * Execute the job.
  28. *
  29. * @return void
  30. */
  31. public function handle()
  32. {
  33. \Log::info('ExportTaskJob_start:'.json_encode($this->task));
  34. $task_model = $this->task->getModel();
  35. $this->task->setStatus(AbstractExportTask::running);
  36. $data = $this->export_handle->getExportData();
  37. $headers = $this->export_handle->getHeaders();
  38. $file_name = md5($task_model->id . strtotime($task_model->created_at)) . ".csv";
  39. $local_path = storage_path('tmp');
  40. \Log::info('ExportTaskJob_task_id_start:'.$task_model->id);
  41. ExcelHelper::saveFileCsv($headers, $data, $file_name, $local_path);
  42. $this->task->saveExportTaskFile($local_path, $file_name);
  43. unlink($local_path . '/' . $file_name);
  44. \Log::info('ExportTaskJob_task_id_end:'.$task_model->id);
  45. }
  46. }