SyncBimConvertStatus.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Models\BimFile;
  4. use App\Models\Enums\BimFileConvertStatus;
  5. use App\Services\File\BIM\BIMFactory;
  6. use Carbon\Carbon;
  7. use Illuminate\Console\Command;
  8. use Illuminate\Database\Eloquent\Collection;
  9. class SyncBimConvertStatus extends Command
  10. {
  11. /**
  12. * The name and signature of the console command.
  13. *
  14. * @var string
  15. */
  16. protected $signature = 'lpc:sync-bim-convert-status';
  17. /**
  18. * The console command description.
  19. *
  20. * @var string
  21. */
  22. protected $description = 'sync bim convert status';
  23. /**
  24. * Execute the console command.
  25. */
  26. public function handle()
  27. {
  28. BimFile::query()
  29. ->where("created_at", ">=", Carbon::now()->subDay())
  30. ->whereIn("convert_status", BimFileConvertStatus::unfinishedStatus())
  31. ->chunkById(2000, function (Collection $bimFiles) {
  32. $this->queryStatus($bimFiles);
  33. });
  34. }
  35. protected function queryStatus(Collection $bimFiles)
  36. {
  37. foreach ($bimFiles as $bimFile) {
  38. try {
  39. $statusArr = BIMFactory::make($bimFile->bim_driver)->findConvertStatus($bimFile->bim_data_set_id);
  40. $bimFile->fill($statusArr);
  41. $bimFile->save();
  42. } catch (\Exception $exception) {
  43. }
  44. }
  45. }
  46. }