Quellcode durchsuchen

调整项目关联的资产需求组树

kely vor 8 Monaten
Ursprung
Commit
34f3f0aa0d
3 geänderte Dateien mit 48 neuen und 20 gelöschten Zeilen
  1. 39 19
      app/Http/Controllers/API/ProjectController.php
  2. 5 0
      app/Models/Asset.php
  3. 4 1
      routes/api.php

+ 39 - 19
app/Http/Controllers/API/ProjectController.php

@@ -22,6 +22,7 @@ use App\Http\Resources\API\RequirementGroupResource;
 use App\Http\Resources\API\SimplePlanResource;
 use App\Http\Resources\API\ProjectRequirementResource;
 use App\Http\Resources\API\ProjectResource;
+use App\Models\Asset;
 use App\Models\Enums\ActionObjectType;
 use App\Models\Enums\FileObjectType;
 use App\Models\Enums\ObjectAction;
@@ -63,31 +64,50 @@ class ProjectController extends Controller
         return ProjectResource::collection($projectAsset);
     }
 
-    public function treeIndex(string $id){
+    public function projectAssetTree(string $id){
         $project = Project::allowed($id)->findOrFail($id);
 
         //获取项目所关联的需求所在需求分组的id
-        $requirementsGroupIds=$project->requirementsGroup ->pluck('id')->unique()->toArray();
-
-        // 加载项目中的所有Asset及其关联的RequirementGroup
-        $assetsWithRequirementGroups = $project->assets()->with('requirementGroups')->get();
-
-        $filteredAssets = $assetsWithRequirementGroups->map(function ($asset) use ($requirementsGroupIds) {
-            if (empty($requirementsGroupIds)) {
-                // 如果$requirementsGroupIds为空,则清空requirementGroups集合
-                $asset->setRelation('requirementGroups', collect());
-            } else {
-                // 否则,过滤requirementGroups集合
-                $asset->setRelation('requirementGroups', $asset->requirementGroups->filter(function ($group) use ($requirementsGroupIds) {
-                    return in_array($group->id, $requirementsGroupIds);
-                }));
-            }
-
-            return $asset;
+//       $requirementsGroupIds=$project->requirementsGroup ->pluck('id')->unique()->toArray();
+
+//        // 加载项目中的所有Asset及其关联的RequirementGroup
+//        $assetsWithRequirementGroups = $project->assets()->with('requirementGroups')->get();
+//
+//        $filteredAssets = $assetsWithRequirementGroups->map(function ($asset) use ($requirementsGroupIds) {
+//            if (empty($requirementsGroupIds)) {
+//                // 如果$requirementsGroupIds为空,则清空requirementGroups集合
+//                $asset->setRelation('requirementGroups', collect());
+//            } else {
+//                // 否则,过滤requirementGroups集合
+//                $asset->setRelation('requirementGroups', $asset->requirementGroups->filter(function ($group) use ($requirementsGroupIds) {
+//                    return in_array($group->id, $requirementsGroupIds);
+//                }));
+//            }
+//
+//            return $asset;
+//        });
+
+
+//      return  AssetRequirementGroupTreeResource::collection($filteredAssets);
+        $projectLinkAssets = $project->assets()->select('assets.id', 'assets.name', 'assets.parent_id')->get();
+        $projectLinkAssets->each(function ($assets){
+            $assets->type='asset';
+            $assets->uniId=$assets->type.'_'.$assets->id;
         });
+        return $this->success([
+            'data' => make_tree($projectLinkAssets->toArray())
+        ]);
 
 
-        return  AssetRequirementGroupTreeResource::collection($filteredAssets);
+    }
+
+    public function projectRequirementGroupsTree(string $id){
+        $projectRequirementsGroup=Asset::query()->findOrFail($id)->projectRequirementsGroup()->select('requirement_groups.id', 'requirement_groups.name','requirement_groups.asset_id')->get();
+        $projectRequirementsGroup->each(function ($requirementsgroups){
+            $requirementsgroups->type='requirementsgroups';
+            $requirementsgroups->uniId=$requirementsgroups->type.'_'.$requirementsgroups->id;
+        });
+        return $projectRequirementsGroup;
 
     }
 

+ 5 - 0
app/Models/Asset.php

@@ -107,4 +107,9 @@ class Asset extends Model
         return $this->belongsTo(AssetGroup::class, 'group_id');
     }
 
+    public function projectRequirementsGroup(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
+    {
+        return $this->belongsToMany(RequirementGroup::class, 'project_requirement');
+    }
+
 }

+ 4 - 1
routes/api.php

@@ -162,7 +162,10 @@ Route::middleware(['auth:sanctum'])->group(function () {
         Route::get("plan-by-assets", [API\PlanController::class, "byAssets"])->name("plan.by-assets");
         Route::get("requirement-by-assets", [API\RequirementController::class, "byAssets"])->name("requirement.by-assets");
 
-        Route::get("project-tree/{project_id}", [API\ProjectController::class, "treeIndex"])->name("project.project-tree");
+        //Route::get("project-tree/{project_id}", [API\ProjectController::class, "treeIndex"])->name("project.project-tree");
+        Route::get("project-asset-tree/{project_id}", [API\ProjectController::class, "projectAssetTree"])->name("project.project-asset-tree");
+        Route::get("project-requirementGroups-tree/{asset_id}", [API\ProjectController::class, "projectRequirementGroupsTree"])->name("project.project-requirementGroups-tree");
+
 
         Route::get("project-link-requirements-group/{project_id}",[API\ProjectController::class, "requirementsLinkGroup"])->name("project.link-requirements-group");