1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?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();
- }
- }
- /**
- * 保存轻量化后的模型信息
- * @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;
- }
- }
- }
|