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); } }