ConvertBimFile.php 1.5 KB

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