ExportTaskJob.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. public $tries = 1;
  17. public $timeout = 300;
  18. /**
  19. * Create a new job instance.
  20. *
  21. * @return void
  22. */
  23. public function __construct(AbstractExportTask $task, AbstractDataExportHandle $handle)
  24. {
  25. $this->task = $task;
  26. $this->export_handle = $handle;
  27. }
  28. /**
  29. * Execute the job.
  30. *
  31. * @return void
  32. */
  33. public function handle()
  34. {
  35. try {
  36. \Log::info('ExportTaskJob_start_new:'.json_encode($this->task));
  37. if(count((array)$this->task) == 0){
  38. \Log::info('ExportTaskJob_start_null_return:'.json_encode($this->task));
  39. return false;
  40. }
  41. \Log::info('ExportTaskJob_start2:'.json_encode($this->export_handle));
  42. $task_model = $this->task->getModel();
  43. \Log::info('ExportTaskJob_start3:');
  44. $this->task->setStatus(AbstractExportTask::running);
  45. \Log::info('ExportTaskJob_start4:');
  46. $data = $this->export_handle->getExportData();
  47. \Log::info('ExportTaskJob_start5:');
  48. $headers = $this->export_handle->getHeaders();
  49. \Log::info('ExportTaskJob_start6:');
  50. $file_name = md5($task_model->id . strtotime($task_model->created_at)) . ".csv";
  51. $local_path = storage_path('tmp');
  52. \Log::info('ExportTaskJob_task_id_start:'.$task_model->id);
  53. ExcelHelper::saveFileCsv($headers, $data, $file_name, $local_path);
  54. $this->task->saveExportTaskFile($local_path, $file_name);
  55. unlink($local_path . '/' . $file_name);
  56. \Log::info('ExportTaskJob_task_id_end:'.$task_model->id);
  57. } catch (\Exception $e){
  58. \Log::info('ExportTaskJob_ept:'.$e->getMessage());
  59. return false;
  60. }
  61. }
  62. }