소스 검색

Merge branch 'dev' of http://134.175.228.187:10880/kyle/autocde2.0 into dev

kevinlan@lpchku.com 5 달 전
부모
커밋
08650973ad

+ 1 - 0
app/BO/BimFileBO.php

@@ -13,6 +13,7 @@ class BimFileBO
     public int $priority;
     public string $modelDownloadUrl;
     public array $pointCloudConfigJson;
+    public string $modelType;
 
     public function __construct(
         string $extension,

+ 1 - 1
app/Http/Resources/API/FileByObjectResource.php

@@ -30,7 +30,7 @@ class FileByObjectResource extends JsonResource
         ];
 
         if ($this->is_bim == 1 && $this->bimFile && $this->bimFile->convert_status == BimFileConvertStatus::DONE->value) {
-            $data['model_view_url'] = BIMFactory::make($this->bimFile->bim_driver)->getModelViewLink($this->bimFile->bim_data_set_id);
+            $data['model_view_url'] = 'todo';//@todo 跟前端重新对一下判断
         }
 
         return $data;

+ 0 - 5
app/Libraries/BIM/BlackHole/BlackHole.php

@@ -112,11 +112,6 @@ class BlackHole extends BIMAbstract
         return $result['data'] ?? [];
     }
 
-    public function getModelViewLink(string $dataSetId): string
-    {
-        return '';
-    }
-
 
     /**
      * 模型文件上传准备

+ 1 - 1
app/Libraries/BIM/Contacts/BIMContact.php

@@ -20,5 +20,5 @@ interface BIMContact {
 
     public function addToConvertQueue(string $dataSetId): array;
 
-    public function getModelViewLink(string $dataSetId): string;
+    // public function getModelViewLink(string $dataSetId): string;
 }

+ 28 - 11
app/Libraries/BIM/Glendale/Glendale.php

@@ -37,6 +37,11 @@ class Glendale extends BIMAbstract
         return in_array($ext, ['las', 'laz', 'ply', 'xyz']);
     }
 
+    private function isOSGBGISModel(string $modelType): bool
+    {
+        return $modelType == 'osgb';
+    }
+
     /**
      * 构造query的input传参
      * @param \App\BO\BIMFileBO $bimFileBO
@@ -120,12 +125,30 @@ class Glendale extends BIMAbstract
         ]);
     }
 
+    /**
+     * 文件流方式上OSGB GIS模型
+     * @param \Illuminate\Http\UploadedFile $file
+     * @param \App\BO\BIMFileBO $bimFileBO
+     * @return array|null
+     */
+    protected function uploadOSGBModelByStream(UploadedFile $file, BimFileBO $bimFileBO)
+    {
+        return Client::getInstance()->post('/api/app/gismodel/OsgbUploadFile', [
+            'query' => $this->buildQueryParams($bimFileBO),
+            'multipart' => [
+                ['name' => 'file', 'contents' => fopen($file, 'r+'), 'filename' => $bimFileBO->name]
+            ],
+        ]);
+    }
+
     public function uploadFile(UploadedFile $file, BimFileBO $bimFileBO): array
     {
         if (!empty($bimFileBO->modelDownloadUrl)) { //指定URL方式上传
             $result = $this->uploadModelByUrl($bimFileBO);
         } elseif ($this->isPointCloudGISModel($bimFileBO->extension)) { //点云GIS
             $result = $this->uploadPointCloudModelByStream($file, $bimFileBO);
+        } elseif ($this->isOSGBGISModel($bimFileBO->modelType)) { // OSGB 模型
+            $result = $this->uploadOSGBModelByStream($file, $bimFileBO);
         } else { //文件流方式上传
             $result = $this->uploadModelByStream($file, $bimFileBO);
         }
@@ -191,7 +214,7 @@ class Glendale extends BIMAbstract
             return $result;
         }
 
-        if (in_array($file->extension, config('bim.gis_extensions'))) {
+        if (in_array($file->extension, config('bim.gis_extensions')) || ($file->is_bim == 1 && $file->extension == 'zip')) {
             $result = Client::getInstance()->post('/api/app/gismodel/QueryModelInfo', [
                 'query' => [
                     'LightweightName' => $file->bimFile->bim_data_set_id
@@ -218,6 +241,10 @@ class Glendale extends BIMAbstract
         }
 
         $result = Arr::only($result, ['modelAccessAddress', 'lightweightName', 'fileOwnership', 'floorJsonURL', 'fileType', 'initiatingUser', 'modelType', 'name']);
+        if (isset($result['modelAccessAddress'])) {
+            $result['modelAccessAddress'] = str_replace('http://159.75.168.101:18086', 'https://gelan.autocde.com', $result['modelAccessAddress']);
+        }
+        
         // $result['baseUrl'] = config('bim.glendale.base_url');
         $result['stationUrl'] = config('bim.glendale.host');
         $result['stationToken'] = config('bim.glendale.token');
@@ -228,14 +255,4 @@ class Glendale extends BIMAbstract
     {
         return [];
     }
-
-    /**
-     * 获取model的浏览链接
-     * @param string $dataSetId
-     * @return string
-     */
-    public function getModelViewLink(string $dataSetId): string
-    {
-        return config('bim.glendale.view_url') . '/#/webgl?id=' . $dataSetId;
-    }
 }

+ 6 - 9
app/Services/File/Upload/FilesUploadTrait.php

@@ -68,20 +68,17 @@ trait FilesUploadTrait
         ];
 
         $isBimFile = 0;
+        $modelType = $request->input('model_type', '');
 
-        if ($this->isBIM($extension) && $request->object_type == FileObjectType::CONTAINER->value) {
-            $isBimFile = true;
-            // $data['bim'] = BIMFactory::make()->uploadFile($file, [
-            //     // 'modelDownloadUrl' => $modelDownloadUrl,
-            //     'pathname' => $pathname,
-            //     'name' => $file->getClientOriginalName(),//原文件名
-            //     'extension' => $extension,
-            //     'is_cad' => in_array($extension, ['dwg', 'dwf', 'dws', 'dwt']),
-            // ]);
+        if ($this->isBIM($extension) || $modelType == 'osgb' && $request->object_type == FileObjectType::CONTAINER->value) {
             $bimFileBO = new BimFileBO($extension, $file->getClientOriginalName());
+            $bimFileBO->modelType = $modelType;
+            // $bimFileBO->modelDownloadUrl = $modelDownloadUrl;
             $bimFileBO->setPointCloudConfigJson($request->input('pointCloudConfigJson', []));
             
             $data['bim'] = BIMFactory::make()->uploadFile($file, $bimFileBO);
+
+            $isBimFile = true;
         }
 
         $data['file'] = [

+ 0 - 1
config/bim.php

@@ -19,7 +19,6 @@ return [
         'host' => env("GLENDALE_HOST", "http://159.75.168.101:18086"),
         'base_url' => env('GLENDALE_BASE_URL', ''),
         'intranet_host' => env('GLENDALE_INTRANET_HOST', ''),
-        'view_url' => env("GLENDALE_VIEW_URL", "http://159.75.168.101:18083"),
         'token' => env("GLENDALE_TOKEN"),
         'project_id' => env("GLENDALE_PROJECT_ID"),
     ]