Browse Source

feat:模型对比

waymen 4 months ago
parent
commit
6436a46cef

+ 22 - 0
app/Http/Controllers/API/BimController.php

@@ -14,6 +14,28 @@ use Illuminate\Support\Facades\Auth;
 
 class BimController extends Controller
 {
+    // 模型对比
+    public function getComparison(Request $request, Glendale $glendale)
+    {
+        $inputArr = $this->validate($request, [
+            'bim_file_id' => 'required',
+            'new_bim_file_id' => 'required',
+            'glid' => 'required', //楼层节点id
+            'new_glid' => 'required', //
+        ]);
+
+        $components = $glendale->getFloorComponents($inputArr['bim_file_id'], $inputArr['glid']);
+        $newComponents = $glendale->getFloorComponents($inputArr['new_bim_file_id'], $inputArr['new_glid']);
+
+        $data['create'] = array_values(array_diff($newComponents, $components));
+        $data['update'] = array_values(array_intersect($components, $newComponents));
+        $data['delete'] = array_values(array_diff($components, $newComponents));
+        $data['componets'] = $components;
+        $data['new_componets'] = $newComponents;
+
+        return $this->successData($data);
+    }
+
     // 设置BIM预览图
     public function setPreviewImage(Request $request, Cos $cos)
     {

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

@@ -342,6 +342,34 @@ class Glendale extends BIMAbstract
         return $result;
     }
 
+
+    /**
+     * 获取楼层节点下所有构件ID
+     * @param string $lightweightName
+     * @param string $glid
+     * @return mixed
+     */
+    public function getFloorComponents(string $lightweightName, string $glid): array
+    {
+        $components = [];
+
+        try {
+            $res = Client::getInstance()->get('/api/app/model/GetModelTreeFeatureIdByPid', [
+                'LightweightName' => $lightweightName,
+                'Pid' => $glid,
+            ]);
+
+            $components = explode(',', $res['datas']);
+
+            if (!$components || $res['datas'] == '') {
+                $components = [];
+            }
+        } catch (\Throwable $th) {
+        }
+
+        return $components;
+    }
+
     /**
      * 把引擎数据同步过来
      * @param string $lightweightName

+ 1 - 0
routes/api.php

@@ -286,6 +286,7 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
         Route::put('bim/combine/{combineId}', [API\BimController::class, "combineUpdate"])->name("bim.combine-update");
         Route::get('bim/combined-list', [API\BimController::class, "combinedList"])->name("bim.combined-list");
         Route::delete('bim/combine/{combineId}', action: [API\BimController::class, "combineDelete"])->name("bim.combine-delete");
+        Route::get("bim/comparison", [API\BimController::class, "getComparison"])->name("bim.comparison");
 
         Route::get("container-attachments", [API\ContainerController::class, "attachments"])->name("container.attachments");