ConvertBimFile.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Jobs;
  3. use App\BO\BimFileBO;
  4. use App\Libraries\BIM\BIMFactory;
  5. use App\Models\BimFile;
  6. use App\Models\File;
  7. use Illuminate\Bus\Queueable;
  8. use Illuminate\Contracts\Queue\ShouldBeUnique;
  9. use Illuminate\Contracts\Queue\ShouldQueue;
  10. use Illuminate\Foundation\Bus\Dispatchable;
  11. use Illuminate\Http\UploadedFile;
  12. use Illuminate\Queue\InteractsWithQueue;
  13. use Illuminate\Queue\SerializesModels;
  14. /**
  15. * 处理BIM的轻量化转换
  16. */
  17. class ConvertBimFile implements ShouldQueue
  18. {
  19. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  20. private $fileId;
  21. private BimFileBO $bimFileBO;
  22. private $file;
  23. /**
  24. * Create a new job instance.
  25. */
  26. public function __construct(int $fileId, BimFileBO $bimFileBO, ?UploadedFile $file = null)
  27. {
  28. $this->fileId = $fileId;
  29. $this->bimFileBO = $bimFileBO;
  30. $this->file = $file;
  31. }
  32. /**
  33. * Execute the job.
  34. */
  35. public function handle(): void
  36. {
  37. $file = File::find($this->fileId);
  38. if ($file) {
  39. $bimInfo = BIMFactory::make()->uploadFile($this->file, $this->bimFileBO);
  40. BimFile::query()->create([
  41. 'file_id' => $file->id,
  42. ...$bimInfo
  43. ]);
  44. }
  45. }
  46. }