浏览代码

修改transtask discharge 控制器模型

ajun 5 年之前
父节点
当前提交
1dacca2d9d
共有 3 个文件被更改,包括 72 次插入49 次删除
  1. 1 0
      app/DischargeTask.php
  2. 59 44
      app/Http/Controllers/DischargeTaskController.php
  3. 12 5
      app/Services/DischargeTaskService.php

+ 1 - 0
app/DischargeTask.php

@@ -36,6 +36,7 @@ class DischargeTask extends Model
         'owner_id','type','numbers','status',
         'income_amount','income_unit','income_unit_price','income_total_cost','income_remark',
         'facilitator_id','expenditure_amount','expenditure_unit','expenditure_unit_price','expenditure_total_cost','expenditure_remark',
+        'income_at','expenditure_at'
     ];
 
     function owner(): BelongsTo

+ 59 - 44
app/Http/Controllers/DischargeTaskController.php

@@ -6,30 +6,38 @@ use App\Components\AsyncResponse;
 use App\Facilitator;
 use App\DischargeTask;
 use App\Filters\DischargeTaskFilters;
+use App\Http\Requests\DischargeTask\DischargeTaskRequest;
 use App\Services\common\ExportService;
 use App\Services\OwnerService;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Gate;
 
 class DischargeTaskController extends Controller
 {
     use AsyncResponse;
-    public function index(Request  $request,DischargeTaskFilters  $filters)
+
+    public function index(Request $request, DischargeTaskFilters $filters)
     {
-        // 权限 ***
-        $dischargeTasks = DischargeTask::query()->with(['facilitator','owner'])->filter($filters)->orderByDesc('id')->paginate($request['paginate'] ?? 50);
+        if (!Gate::allows('运输管理-卸货-查询')) {
+            return redirect(url('/'));
+        }
+        $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner'])->filter($filters)->orderByDesc('id')->paginate($request['paginate'] ?? 50);
         $owners = app(OwnerService::class)->getAuthorizedOwners();
-        $facilitators = Facilitator::query()->select('name','id')->get();
-        return view('transport.discharge.task.index',compact('dischargeTasks','owners','facilitators'));
+        $facilitators = Facilitator::query()->select('name', 'id')->get();
+        return view('transport.discharge.task.index', compact('dischargeTasks', 'owners', 'facilitators'));
     }
 
     // 结算报表
-    public function statementIndex(Request $request,DischargeTaskFilters $filters)
+    public function statementIndex(Request $request, DischargeTaskFilters $filters)
     {
-        // 权限 ***
-        $dischargeStatements  = DischargeTask::query()->with('facilitator')->filter($filters)->orderBy('id')->paginate($request['paginate'] ?? 50);
+        if (!Gate::allows('运输管理-卸货-结算报表-查询')) {
+            return redirect(url('/'));
+        }
+        $dischargeStatements = DischargeTask::query()->with('facilitator')->filter($filters)->orderBy('id')->paginate($request['paginate'] ?? 50);
         $owners = app(OwnerService::class)->getAuthorizedOwners();
-        $facilitators = Facilitator::query()->select('name','id')->get();
-        return view('transport.discharge.statement.index',compact('dischargeStatements','owners','facilitators'));
+        $facilitators = Facilitator::query()->select('name', 'id')->get();
+        return view('transport.discharge.statement.index', compact('dischargeStatements', 'owners', 'facilitators'));
     }
 
 
@@ -44,11 +52,11 @@ class DischargeTaskController extends Controller
     }
 
     // async 创建
-    public function storeApi(Request $request)
+    public function storeApi(DischargeTaskRequest $request)
     {
-        // 权限 ***
+        $this->gate('运输管理-卸货-创建');
         $result = app('DischargeTaskService')->createTask($request->all());
-        if($result['success'])$this->success($result['data']);
+        if ($result['success']) $this->success($result['data']);
         $this->error('任务创建异常,刷新当前页面重试');
     }
 
@@ -69,21 +77,24 @@ class DischargeTaskController extends Controller
     }
 
     // async 编辑
-    public function updateApi(Request $request)
+    public function updateApi(DischargeTaskRequest $request)
     {
-        $dischargeTask = DischargeTask::query()->where('id',$request['id'])->first();
-        $result = app('DischargeTaskService')->updateDischargeTask($dischargeTask,$request->all());
-        if($result['success'])$this->success($result['data']);
+        $this->gate('运输管理-卸货-编辑');
+        $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
+        $result = app('DischargeTaskService')->updateDischargeTask($dischargeTask, $request->all());
+        if ($result['success']) $this->success($result['data']);
         else $this->error($request['message'] ?? '操作异常,请刷新页面重试');
     }
 
     // 修改任务服务商
-    public function updateTaskProviderApi(Request $request)
+    public function updateTaskFacilitatorApi(DischargeTaskRequest $request)
     {
-        // 权限 ***
-        $dischargeTask = DischargeTask::query()->where('id',$request['id'])->first();
-        $result = app('DischargeTaskService')->updateTaskProvider($dischargeTask,$request->all());
-        if($result['success'])$this->success($result['data']);
+        $this->gate('运输管理-卸货-编辑');
+        /** @var  DischargeTask $dischargeTask */
+        $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
+        if (!$dischargeTask) $this->error('没有找对应的卸货任务');
+        $result = app('DischargeTaskService')->updateTaskFacilitator($dischargeTask, $request->all());
+        if ($result['success']) $this->success($result['data']);
         else $this->error($result['message'] ?? '操作异常,请刷新页面重试');
     }
 
@@ -93,44 +104,48 @@ class DischargeTaskController extends Controller
     }
 
     //  async 删除
-    public function destroyApi(Request $request)
+    public function destroyApi(DischargeTaskRequest $request)
     {
-        // 权限 ***
+        $this->gate('运输管理-卸货-删除');
         /** @var DischargeTask $dischargeTask */
-        $dischargeTask = DischargeTask::query()->where('id',$request['id'])->first();
+        $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
         $result = app('DischargeTaskService')->deleteDischargeTask($dischargeTask);
-        if($result['success'])$this->success();
+        if ($result['success']) $this->success();
         else $this->error($result['message']);
     }
 
-
-
     // 执行任务
-    public function executingTaskApi(Request $request)
+    public function executingTaskApi(DischargeTaskRequest $request)
     {
-        $dischargeTask = DischargeTask::query()->where('id',$request['id'])->first();
-        $result = app('DischargeTaskService')->updateTaskProvider($dischargeTask,$request->all());
-        if($result['success'])$this->success($result['data']);
+        $this->gate('运输管理-卸货-编辑');
+        $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
+        $result = app('DischargeTaskService')->updateTaskProvider($dischargeTask, $request->all());
+        if ($result['success']) $this->success($result['data']);
         $this->error($result['message'] ?? '操作异常,请刷新页面重试');
     }
 
-
-    // 卸货任务文件下载
-    public function export(Request $request,DischargeTaskFilters $filters)
+    // 卸货任务下载
+    public function export(Request $request, DischargeTaskFilters $filters): string
     {
-        $dischargeTasks = DischargeTask::query()->with(['Facilitator','owner'])->filter($filters)->orderByDesc('id')->get();
-        $row = ['日期','客户名称','作业名称','入库单号','数量','单位','单价','收费','状态','备注'];
-        $json =  app('DischargeTaskService')->getJson($dischargeTasks);
-        return app(ExportService::class)->json($row,$json,"卸货任务");
+        if (!Gate::allows('运输管理-卸货-查询')) {
+            return '没有权限';
+        }
+        $dischargeTasks = DischargeTask::query()->with(['Facilitator', 'owner'])->filter($filters)->orderByDesc('id')->get();
+        $row = ['日期', '客户名称', '作业名称', '入库单号', '数量', '单位', '单价', '收费', '状态', '备注'];
+        $json = app('DischargeTaskService')->getJson($dischargeTasks);
+        return app(ExportService::class)->json($row, $json, "卸货任务");
     }
 
     // 结算报表下载
-    public function exportStatements(Request $request,DischargeTaskFilters $filters)
+    public function exportStatements(Request $request, DischargeTaskFilters $filters): string
     {
-        $dischargeTasks = DischargeTask::query()->with(['facilitator','owner'])->filter($filters)->orderByDesc('id')->get();
-        $row = ['日期','客户名称','作业名称','入库单号','数量','单位','收入单价','收入合计','服务商','数量','单位','支出单价','支出合计','状态','收入备注','支出备注'];
-        $json =  app('DischargeTaskService')->getStatementsJson($dischargeTasks);
-        return app(ExportService::class)->json($row,$json,"卸货结算报表");
+        if (!Gate::allows('运输管理-卸货-结算报表-查询')) {
+            return '没有权限';
+        }
+        $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner'])->filter($filters)->orderByDesc('id')->get();
+        $row = ['日期', '客户名称', '作业名称', '入库单号', '数量', '单位', '收入单价', '收入合计', '服务商', '数量', '单位', '支出单价', '支出合计', '状态', '收入备注', '支出备注'];
+        $json = app('DischargeTaskService')->getStatementsJson($dischargeTasks);
+        return app(ExportService::class)->json($row, $json, "卸货结算报表");
     }
 
 }

+ 12 - 5
app/Services/DischargeTaskService.php

@@ -2,6 +2,7 @@
 
 namespace App\Services;
 
+use App\Facilitator;
 use App\Traits\ServiceAppAop;
 use App\DischargeTask;
 use Illuminate\Database\Eloquent\Collection;
@@ -15,10 +16,13 @@ class DischargeTaskService
     // 编辑卸货任务
     public function updateDischargeTask(DischargeTask $dischargeTask, array $param): array
     {
-        if ($param['id']) unset($param['id']);
         if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行编辑'];
         $bool = $dischargeTask->update($param);
-        if ($bool) return ['success' => true, 'data' => $dischargeTask];
+        if ($bool){
+            $dischargeTask->refresh();
+            $dischargeTask->loadMissing('owner','facilitator');
+            return ['success' => true, 'data' => $dischargeTask];
+        }
         else return ['success' => false];
     }
 
@@ -35,15 +39,17 @@ class DischargeTaskService
     }
 
     // 指定服务商
-    public function updateTaskProvider(DischargeTask $dischargeTask, array $param): array
+    public function updateTaskFacilitator(DischargeTask $dischargeTask, array $param): array
     {
+        unset($param['owner'],$param['income_at']);
         if ($param['id']) unset($param['id']);
         if ($dischargeTask->status >= 1) return ['success' => false, 'message' => '当前任务状态不可修改'];
         if (empty($param['expenditure_total_cost'])) $param['expenditure_total_cost'] = $param['expenditure_unit_price'] * $param['expenditure_amount'];
+        if (empty($param['expenditure_at'])) $param['expenditure_at'] = now();
         if (empty($param['status'])) $param['status'] = 1;
         $bool = $dischargeTask->update($param);
         if ($bool == 1) {
-            $dischargeTask->loadMissing(['owner']);
+            $dischargeTask->loadMissing('owner','facilitator');
             return ['success' => true, 'data' => $dischargeTask];
         } else return ['success' => false];
     }
@@ -53,6 +59,7 @@ class DischargeTaskService
     {
         if (isset($param['id'])) unset($param['id']);
         if (empty($param['income_total_cost'])) $param['income_total_cost'] = $param['income_unit_price'] * $param['income_amount'];
+        if (empty($param['income_at'])) $param['income_at'] = now();
         if (empty($param['status'])) $param['status'] = 0;
         $dischargeTask = DischargeTask::query()->create($param);
         $dischargeTask->loadMissing('owner');
@@ -97,7 +104,7 @@ class DischargeTaskService
                 $dischargeTask->income_unit_price,                              // 收入单价
                 $dischargeTask->income_total_cost,                              // 收入合计
                 // --- 支出信息
-                $dischargeTask->dischargeProvider->name ?? '',                  // 服务商
+                $dischargeTask->facilitator->name ?? '',                  // 服务商
                 $dischargeTask->expenditure_amount,                             // 数量
                 DischargeTask::units[$dischargeTask->expenditure_unit] ?? '',   // 单位
                 $dischargeTask->expenditure_unit_price,                         // 支出单价