Bladeren bron

审批进度

lsm12139 1 maand geleden
bovenliggende
commit
7d64b3b086
3 gewijzigde bestanden met toevoegingen van 63 en 1 verwijderingen
  1. 38 1
      app/Http/Controllers/API/ApprovalController.php
  2. 24 0
      app/Repositories/ApprovalRepository.php
  3. 1 0
      routes/api.php

+ 38 - 1
app/Http/Controllers/API/ApprovalController.php

@@ -25,12 +25,15 @@ use App\Models\Enums\ObjectAction;
 use App\Models\Enums\ObjectApprovalStatus;
 use App\Models\File;
 use App\Models\Folder;
+use App\Models\Scopes\CompanyScope;
 use App\Repositories\ActionRepository;
+use App\Repositories\ApprovalRepository;
 use App\Services\Approval\ActionService;
 use App\Services\Approval\StoreService;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
+use function Symfony\Component\Translation\t;
 
 class ApprovalController extends Controller
 {
@@ -84,7 +87,7 @@ class ApprovalController extends Controller
         $approvalObjectType = ApprovalObjectType::from($approval->object_type);
         $object = $approvalObjectType
             ->modelBuilder()
-            ->find($approval->object_id);
+            ->findOrFail($approval->object_id);
 
         $actions = Action::with(['createdBy', 'file'])->where([
             'object_type' => $approvalObjectType->actionObjectType(),
@@ -138,6 +141,40 @@ class ApprovalController extends Controller
         return $this->noContent();
     }
 
+    public function detail(Request $request)
+    {
+        //判断是否已经有审批
+        $approvalList = Approval::query()
+            ->withoutGlobalScope(CompanyScope::class)
+            ->where('object_type', $request->get('object_type'))
+            ->where('object_id', $request->get('object_id'))
+            ->get();
+        $approval = '';
+        foreach ($approvalList as $item) {
+            if (in_array($request->get('file_id'),$item->sub_object_ids)){
+                $approval = $item;
+            }
+        }
+        //Get total approvalFlow
+        if ($approval) {
+            $approvalFlow = ApprovalFlow::query()->withoutGlobalScope(CompanyScope::class)->find($approval->approval_flow_id);
+        }else{
+            return $this->success([
+                'data' => [],
+            ]);
+        }
+
+        //获取审批时间
+        $action = Action::with(['createdBy', 'file'])->where([
+            'object_type' => $request->get('object_type'),
+            'object_id' => $request->get('object_id'),
+            'additional_id' => $approval->id,
+        ])->orderBy("created_at")->get();
+
+        return $this->success([
+            'data' => ApprovalRepository::approvalDetail($approvalFlow,ActionByApprovalLogResource::collection($action)),
+        ]);
+    }
     /**
      * Update the specified resource in storage.
      */

+ 24 - 0
app/Repositories/ApprovalRepository.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Repositories;
+
+
+use App\Models\ApprovalFlow;
+
+class ApprovalRepository
+{
+    public static function approvalDetail(ApprovalFlow $approvalFlow, $action): array
+    {
+        //获取整个流程
+        $nodes = isset($approvalFlow->nodes) ? $approvalFlow->nodes : [];
+
+        foreach ($nodes as $k=> &$value) {
+            $value['approval_log']   = isset($action[$k]) ? $action[$k] : [];
+        }
+
+        return $nodes;
+    }
+
+
+
+}

+ 1 - 0
routes/api.php

@@ -156,6 +156,7 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
         Route::post("approval/{approval}/copy-container-file", [API\ApprovalController::class, "copyContainerFile"])
             ->name("approval.copy-container-file");
 
+        Route::post("approval-detail", [API\ApprovalController::class, "detail"])->name("approval.detail");
 
         Route::get("asset/{asset}/dynamic", [API\AssetController::class, "dynamic"])->name("asset.dynamic");