소스 검색

调整资产总览的返回数据,新增assetDynamic

kely 9 달 전
부모
커밋
ef000645da

+ 9 - 0
app/Http/Controllers/API/AssetController.php

@@ -166,4 +166,13 @@ class AssetController extends Controller
             'data' => make_tree(array_merge($assets->toArray(),$attachmentArray))
         ]);
     }
+
+    public function dynamic(Request $request, string $id)
+    {
+        $asset = Asset::allowed($id)->findOrFail($id);
+
+        return $this->success([
+            'data' => ActionRepository::AssetDynamic($asset, $request->all())
+        ]);
+    }
 }

+ 1 - 1
app/Http/Controllers/API/RequirementGroupController.php

@@ -64,7 +64,7 @@ class RequirementGroupController extends Controller
     {
 
         $group = RequirementGroup::query()->findOrFail($id);
-        if(!empty($group->children()->first())){
+        if(empty($group->children()->first())){
             $group->delete();
         }
         else{

+ 7 - 7
app/Http/Resources/API/AssetReportResource.php

@@ -15,6 +15,7 @@ use Carbon\Carbon;
 use Illuminate\Http\Request;
 use Illuminate\Http\Resources\Json\JsonResource;
 use Illuminate\Support\Facades\Auth;
+use function Nette\Utils\data;
 
 class AssetReportResource  extends JsonResource
 {
@@ -24,7 +25,7 @@ class AssetReportResource  extends JsonResource
         return[
             'requirement_total' => Requirement::query()->whereIn('asset_id',$this->child_id)->count(),
             'plan_total' => $this->plans()->count(),
-            'prject_total' => $this->projects()->count(),
+            'project_total' => $this->projects()->count(),
             'plan_unexpired_total' => $planTotalCount = $this->plans()->where('begin', '<=', $now)
                 ->where('end', '>=', $now)
                 ->get()
@@ -40,17 +41,16 @@ class AssetReportResource  extends JsonResource
             'code' => $this->code,
             'description' => $this->description?(new \App\Services\File\ImageUrlService)->getImageUrl($this->description):null,
             'status' => $this->status,
-            'created_by' => $this->created_by,
-            'owner' => $this->owner,
+            'created_by' =>new UserProfileResource($this->createdBy),
+            'owner' => new UserProfileResource($this->byOwner),
             'address' => $this->address,
-            'group_id' => $this->group_id,
+            'group_id' => new AssetGroupResource($this->assetGroup),
             'geo_address_code' => $this->geo_address_code,
             'acl' => $this->acl,
-            'whitelist' => $this->whitelist,
             'latitude' => $this->latitude,
             'longitude' => $this->longitude,
-            'parent_id' => $this->parent_id,
-            'created_at' => $this->created_at,
+            'parent_id' => new AssetResource($this->parent),
+            'created_at' => date('Y-m-d',$this->created_at->timestamp)
         ];
     }
 }

+ 15 - 0
app/Models/Asset.php

@@ -85,4 +85,19 @@ class Asset extends Model
         return $this->hasMany(Library::class ,'asset_id')->where('type', 'asset');
     }
 
+    public function createdBy(): \Illuminate\Database\Eloquent\Relations\BelongsTo
+    {
+        return $this->belongsTo(User::class, 'created_by');
+    }
+
+    public function byOwner(): \Illuminate\Database\Eloquent\Relations\BelongsTo
+    {
+        return $this->belongsTo(User::class, 'owner');
+    }
+
+    public function assetGroup(): \Illuminate\Database\Eloquent\Relations\BelongsTo
+    {
+        return $this->belongsTo(AssetGroup::class, 'group_id');
+    }
+
 }

+ 32 - 0
app/Repositories/ActionRepository.php

@@ -255,6 +255,38 @@ class ActionRepository
         return $data;
     }
 
+    public static function AssetDynamic(Asset $asset, array $filter = [])
+    {
+    $actions = Action::query()->filter($filter)
+        ->where("object_type", "asset")
+        ->where("object_id",$asset->id)
+        ->with(['createdBy'])
+        ->selectRaw("*, date_format(created_at, '%Y-%m-%d') as created_date")
+        ->orderBy("created_at")
+        ->get();
+
+    $objectNames = self::objectNamesGroupByType($actions);
+
+    $items = $actions->groupBy("created_date")->toArray();
+    krsort($items);
+
+    $data = [];
+    foreach ($items as $day => $actionItems) {
+        $dayItems = [
+            'date' => $day,
+            'items' => []
+        ];
+
+        foreach ($actionItems as $actionItem) {
+            $dayItems['items'][] = self::actionFormat($actionItem, $objectNames);
+        }
+
+        $data[] = $dayItems;
+    }
+
+    return $data;
+}
+
     /**
      * @param Collection $actions
      * @return array

+ 1 - 0
routes/api.php

@@ -78,6 +78,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
 
         Route::get("asset/{asset_id}/report",[API\AssetController::class, 'report'])->name('asset.report');
         Route::get("asset-tree",[API\AssetController::class, 'tree'])->name('asset.tree');
+        Route::get("asset/{asset}/dynamic", [API\AssetController::class, "dynamic"])->name("asset.dynamic");
 
         Route::patch("requirement/{requirement_id}/close",[API\RequirementController::class, 'close'])->name('requirement.close');
         Route::patch("requirement/{requirement_id}/start",[API\RequirementController::class, 'start'])->name('requirement.start');