Explorar el Código

优化bim上传处理逻辑

waymen hace 4 meses
padre
commit
b5e3966bc6

+ 11 - 9
app/Jobs/ConvertBimFile.php

@@ -13,6 +13,7 @@ use Illuminate\Foundation\Bus\Dispatchable;
 use Illuminate\Http\UploadedFile;
 use Illuminate\Queue\InteractsWithQueue;
 use Illuminate\Queue\SerializesModels;
+use Illuminate\Support\Facades\Storage;
 
 /**
  * 处理BIM的轻量化转换
@@ -23,16 +24,16 @@ class ConvertBimFile implements ShouldQueue
 
     private $fileId;
     private BimFileBO $bimFileBO;
-    private $file;
+    private $fileStream;
 
     /**
      * Create a new job instance.
      */
-    public function __construct(int $fileId, BimFileBO $bimFileBO, ?UploadedFile $file = null)
+    public function __construct(int $fileId, BimFileBO $bimFileBO, ?UploadedFile $fileStream = null)
     {
         $this->fileId = $fileId;
         $this->bimFileBO = $bimFileBO;
-        $this->file = $file;
+        $this->fileStream = $fileStream;
     }
 
     /**
@@ -42,13 +43,14 @@ class ConvertBimFile implements ShouldQueue
     {
         $file = File::find($this->fileId);
 
-        if ($file) {
-            $bimInfo = BIMFactory::make()->uploadFile($this->file, $this->bimFileBO);
+        if ($file && $file->bimFile) {
+            if (empty($this->fileStream)) {
+                $this->bimFileBO->modelDownloadUrl = Storage::url($file->pathname);
+            }
 
-            BimFile::query()->create([
-                'file_id' => $file->id,
-                ...$bimInfo
-            ]);
+            $bimInfo = BIMFactory::make($file->bimFile->bim_driver)->uploadFile($this->fileStream, $this->bimFileBO);
+
+            BimFile::where('file_id', $file->id)->update($bimInfo);
         }
     }
 }

+ 0 - 1
app/Services/File/Upload/FilesUploadService.php

@@ -66,7 +66,6 @@ class FilesUploadService
         foreach ($uploadedFiles as $uploadedFile) {
             if ($uploadedFile['is_bim'] == 1) {
                 $bimFileBO = new BimFileBO($uploadedFile->extension, $uploadedFile->title, Auth::user()->name, $gisType);
-                $bimFileBO->modelDownloadUrl = Storage::url($uploadedFile->pathname);
                 $bimFileBO->setConfigJson($this->request->input('configJson', []));
                 $bimFileBO->setPointCloudConfigJson($this->request->input('pointCloudConfigJson', []));
                 ConvertBimFile::dispatch($uploadedFile['id'], $bimFileBO);

+ 5 - 0
app/Services/File/Upload/FilesUploadTrait.php

@@ -172,6 +172,11 @@ trait FilesUploadTrait
 
         $file = File::query()->create($fileArr);
 
+        BimFile::create([
+            'file_id' => $file->id,
+            'bim_driver' => config("bim.default"),
+        ]);
+
         return $file;
     }