ConvertBimFile.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. use Illuminate\Support\Facades\Storage;
  15. /**
  16. * 处理BIM的轻量化转换
  17. */
  18. class ConvertBimFile implements ShouldQueue
  19. {
  20. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  21. private $fileId;
  22. private BimFileBO $bimFileBO;
  23. private $fileStream;
  24. /**
  25. * Create a new job instance.
  26. */
  27. public function __construct(int $fileId, BimFileBO $bimFileBO, ?UploadedFile $fileStream = null)
  28. {
  29. $this->fileId = $fileId;
  30. $this->bimFileBO = $bimFileBO;
  31. $this->fileStream = $fileStream;
  32. }
  33. /**
  34. * Execute the job.
  35. */
  36. public function handle(): void
  37. {
  38. $file = File::find($this->fileId);
  39. if ($file && $file->bimFile) {
  40. if (empty($this->fileStream)) {
  41. $this->bimFileBO->modelDownloadUrl = Storage::url($file->pathname);
  42. }
  43. $bimInfo = BIMFactory::make($file->bimFile->bim_driver)->uploadFile($this->fileStream, $this->bimFileBO);
  44. BimFile::where('file_id', $file->id)->update($bimInfo);
  45. }
  46. }
  47. }