Просмотр исходного кода

工单批量生成拦截工单

loustwo 4 лет назад
Родитель
Сommit
6e4d0b02cc

+ 13 - 1
app/Http/Controllers/WorkOrderCancelInterceptController.php

@@ -29,7 +29,6 @@ class WorkOrderCancelInterceptController extends Controller
         if (Gate::denies('订单管理-订单-生成工单'))
             return ['success' => false, 'message' => '没有对应权限'];
         $this->orderService->syncOrderByCodes([$request->input('order_no')]);
-
         if ($this->service->checkWorkOrder($request->input('order_no')))
             return ['success' => false, 'message' => '当前订单已有相同类型的工单'];
 
@@ -41,6 +40,19 @@ class WorkOrderCancelInterceptController extends Controller
         }
     }
 
+    // 批量拦截工单生成
+    public function batchStoreApi(Request $request): array
+    {
+        if (Gate::denies('订单管理-订单-生成工单'))
+            return ['success' => false, 'message' => '没有对应权限'];
+        $this->orderService->syncOrderByCodes($request->input('order_nos'));
+        if ($this->service->checkWorkOrders($request->input('order_nos'))){
+            return ['success' => false, 'message' => '当前订单已有相同类型的工单'];
+        }
+        $this->service->batchStore($request->all());
+        return ['success' => true];
+    }
+
     public function logisticHandlerApi(Request $request): array
     {
         if (Gate::denies('订单管理-工单处理-承运商编辑'))

+ 13 - 0
app/Http/Controllers/WorkOrderInterceptController.php

@@ -36,6 +36,19 @@ class WorkOrderInterceptController extends Controller
         return ['success' => true];
     }
 
+    // 拦截工单批量生成
+    public function batchStoreApi(Request $request): array
+    {
+        if (Gate::denies('订单管理-订单-生成工单'))
+            return ['success' => false, 'message' => '没有对应权限'];
+        $this->orderService->syncOrderByCodes($request->input('order_nos'));
+        if ($this->service->checkWorkOrders($request->input('order_nos'))){
+            return ['success' => false, 'message' => '当前订单已有相同类型的工单'];
+        }
+        $this->service->batchStore($request->all());
+        return ['success' => true];
+    }
+
 
 
     public function logisticHandlerApi(Request $request):array

+ 20 - 0
app/Services/WorkOrderCancelInterceptService.php

@@ -36,6 +36,18 @@ class WorkOrderCancelInterceptService extends WorkOrderService
             ->where('work_order_id',$workOrder['id'])->exists();
     }
 
+    public function checkWorkOrders($nos)
+    {
+        $issueType = $this->issueTypeService->firstOrCreate(['name' => '取消拦截']);
+        $orderQuery = Order::query()->select('id')->whereIn('code',$nos);
+        $workOrder = WorkOrder::query()->select('id')->whereIn('order_id',$orderQuery)->first();
+        if (!$workOrder) return false;
+        return WorkOrderDetail::query()
+            ->where('order_issue_type_id',$issueType['id'])
+            ->where('work_order_id',$workOrder['id'])->exists();
+    }
+
+
     public function store($params)
     {
         $issueType = $this->issueTypeService->firstOrCreate(['name' => '取消拦截']);
@@ -47,6 +59,14 @@ class WorkOrderCancelInterceptService extends WorkOrderService
         $this->logService->createLog($detail, '创建', '创建工单');
     }
 
+    public function batchStore($params)
+    {
+        foreach ($params['order_nos'] as $order_no){
+            $param = ['order_no' =>  $order_no, 'remark' => $params['remark']];
+            $this->store($param);
+        }
+    }
+
     /**
      * 承运商处理 和 编辑
      * @param WorkOrderDetail $detail

+ 23 - 0
app/Services/WorkOrderInterceptService.php

@@ -41,6 +41,17 @@ class WorkOrderInterceptService extends WorkOrderService
             ->where('work_order_id',$workOrder['id'])->exists();
     }
 
+    public function checkWorkOrders($nos)
+    {
+        $issueType = $this->issueTypeService->firstOrCreate(['name' => '拦截']);
+        $orderQuery = Order::query()->select('id')->whereIn('code',$nos);
+        $workOrder = WorkOrder::query()->select('id')->whereIn('order_id',$orderQuery)->first();
+        if (!$workOrder) return false;
+        return WorkOrderDetail::query()
+            ->where('order_issue_type_id',$issueType['id'])
+            ->where('work_order_id',$workOrder['id'])->exists();
+    }
+
     /*
     * 拦截工单处理流程
     * 1:创建
@@ -63,6 +74,18 @@ class WorkOrderInterceptService extends WorkOrderService
         $this->logService->createLog($detail, '创建', '创建');
     }
 
+    /**
+     * 批量拦截 工单创建
+     * @param $params
+     */
+    public function batchStore($params)
+    {
+        foreach ($params['order_nos'] as $order_no){
+            $param = ['order_no' => $order_no,'remark' => $params['remark']];
+            $this->store($param);
+        }
+    }
+
     /**
      * 承运商处理 和  编辑承运商已处理
      * @param WorkOrderDetail $detail

+ 11 - 4
resources/views/order/index/delivering.blade.php

@@ -1316,7 +1316,7 @@
                     images.splice(i, 1);
                 },
                 buildWorkOrder() {  // 生成工单
-                    if (['信息更改', '错漏发', '破损','拦截'].includes(this.workOrder.orderIssueType) && checkData.length !== 1) {
+                    if (['信息更改', '错漏发', '破损'].includes(this.workOrder.orderIssueType) && checkData.length !== 1) {
                         window.tempTip.show('该类型不能批量操作');
                         return;
                     }
@@ -1338,9 +1338,16 @@
                 },
                 createInterceptWorkOrder() {        // 拦截
                     let formData = new FormData();
-                    formData.append('order_no',checkData[0]);
-                    formData.append('remark',this.workOrder ? (this.workOrder.remark ? this.workOrder.remark.info : '') : '');
-                    let url = "{{route('workOrder.intercept.storeApi')}}";
+                    let url = null;
+                    if(checkData.length===1){
+                        formData.append('order_no',checkData[0]);
+                        formData.append('remark',this.workOrder ? (this.workOrder.remark ? this.workOrder.remark.info : '') : '');
+                        url = "{{route('workOrder.intercept.storeApi')}}";
+                    } else if (checkData.length > 1){
+                        checkData.forEach(e=>formData.append('order_nos[]',e));
+                        formData.append('remark',this.workOrder ? (this.workOrder.remark ? this.workOrder.remark.info : '') : '');
+                        url = "{{route('workOrder.intercept.BatchStoreApi')}}";
+                    }
                     this.createWorkOrder(formData,url);
                 },
                 createCancelInterceptWorkOrder(){

+ 2 - 0
routes/apiLocal.php

@@ -280,6 +280,7 @@ Route::prefix('workOrder')->group(function(){
     Route::post('logisticTag','WorkOrderController@logisticHandlerTagApi')->name('workOrder.logistic.handlerTagApi');      // 承运商处理标记
     Route::prefix('intercept')->group(function(){           // 拦截
         Route::post('store','WorkOrderInterceptController@storeApi')->name('workOrder.intercept.storeApi');                                     // 拦截订单创建
+        Route::post('store/batch','WorkOrderInterceptController@batchStoreApi')->name('workOrder.intercept.BatchStoreApi');                                     // 拦截订单创建
         Route::post('logistic/header','WorkOrderInterceptController@logisticHandlerApi')->name('workOrder.intercept.logistic.handlerApi');        // 承运商处理
         Route::post('baoShi/review','WorkOrderInterceptController@baoShiReviewApi')->name('workOrder.intercept.baoShi.reviewApi');              // 宝时终审
         Route::post('baoShi/batchReview','WorkOrderInterceptController@baoShiBatchReviewApi')->name('workOrder.intercept.baoShi.batchReviewApi');              // 宝时终审
@@ -287,6 +288,7 @@ Route::prefix('workOrder')->group(function(){
     });
     Route::prefix('cancelIntercept')->group(function(){           // 取消拦截
         Route::post('store','WorkOrderCancelInterceptController@storeApi')->name('workOrder.cancelIntercept.storeApi');                                     // 拦截订单创建
+        Route::post('store/batch','WorkOrderCancelInterceptController@batchStoreApi')->name('workOrder.cancelIntercept.BatchStoreApi');                                     // 拦截订单创建
         Route::post('logistic/header','WorkOrderCancelInterceptController@logisticHandlerApi')->name('workOrder.cancelIntercept.logistic.handlerApi');        // 承运商处理
         Route::post('baoShi/review','WorkOrderCancelInterceptController@baoShiReviewApi')->name('workOrder.cancelIntercept.baoShi.reviewApi');              // 宝时终审
     });