SyncBimConvertStatus.php 1.4 KB

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