1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace App\Services\File;
- use App\Libraries\BIM\BIMFactory;
- use App\Libraries\BIM\Glendale\Glendale;
- use App\Models\BimFile;
- use Illuminate\Support\Arr;
- use Illuminate\Support\Facades\Log;
- class BimService
- {
- /**
- * 更新模型轻量化状态
- * @param string $bimFileId
- * @param int $sourceStatus
- * @return void
- */
- public function setGlendaleModelCovertStatus(string $bimFileId, int $sourceStatus)
- {
- if (empty($bimFileId)) {
- return;
- }
- $convertStatus = Glendale::mapSourceStatus($sourceStatus);
- $bimFile = BimFile::where("bim_file_id", $bimFileId)->where('bim_driver', 'glendale')->first();
- if ($bimFile && ($bimFile->convert_status != $convertStatus || $bimFile->source_status != $sourceStatus)) {
- $bimFile->convert_status = $convertStatus;
- $bimFile->source_status = $sourceStatus;
- $bimFile->save();
- }
- }
- public function getGlendaleBimInfo(BimFile $bimFile)
- {
- $glendale = new Glendale;
- $result = $glendale->getModelDetail($bimFile);
-
- $stationUrl = config('bim.glendale.host');
- $result = Arr::only($result, ['modelAccessAddress', 'lightweightName', 'fileOwnership', 'floorJsonURL', 'fileType', 'initiatingUser', 'modelType', 'name']);
- $result['stationUrl'] = $stationUrl;
- $result['stationToken'] = config('bim.glendale.token');
- $result['modelType'] = $bimFile->model_type;
- return $result;
- }
- /**
- * 保存轻量化后的模型信息
- * @param \App\Models\BimFile $bimFile
- * @return BimFile
- */
- public function storeBimInfo(BimFile $bimFile): BimFile
- {
- try {
- $infoArr = BIMFactory::make($bimFile->bim_driver)->getModelDetail($bimFile);
- $extra = Arr::only($infoArr, ['softwareType', 'dataVersion', 'fileOwnership', 'achievementFileSize', 'configJson', 'callbackInterfaceURL']);
- if ($infoArr) {
- $bimFile->extra = $extra;
- }
- if (isset($infoArr['status']) && $infoArr['status'] != $bimFile->source_status) {
- $bimFile->source_status = $infoArr['status'];
- $bimFile->convert_status = Glendale::mapSourceStatus($infoArr['status']);
- }
- $bimFile->save();
- } catch (\Throwable $th) {
- Log::error('storeBimInfo Fail:' . $th->getMessage());
- } finally {
- return $bimFile;
- }
- }
- public function syncGlendaleBimData(BimFile $bimFile)
- {
- $glendale = new Glendale;
- return $glendale->syncDB($bimFile->bim_file_id);
- }
- }
|