service = app(WorkOrderService::class); $this->detailService = app(WorkOrderDetailService::class); $this->commoditiesService = app(WorkOrderCommoditiesService::class); $this->logService = app(WorkOrderLogService::class); $this->orderService = app(OrderService::class); $this->ownerService = app(OwnerService::class); $this->orderIssueTypeService = app(OrderIssueTypeService::class); } /** * 承运商标记处理中 * @param Request $request * @return array */ public function logisticHandlerTagApi(Request $request): array { if (Gate::denies('订单管理-工单处理-承运商编辑')) return ['success' => false, 'message' => '没有对应权限']; $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id')); if($detail->status === '完成') return ['success' => false, 'message' => '工单已完成,请刷新重试']; $this->service->logisticHandlerTag($detail); $data = $this->service->getDefaultWith($detail->work_order_id); return ['success' => true,'data' => $data]; } public function index(Request $request, WorkOrderFilters $filters) { if (Gate::denies('订单管理-工单处理-查询')) return redirect('/'); $workOrders = WorkOrder::query()->filter($filters)->defaultWith()->paginate($request['paginate'] ?? 50); $logistics = Logistic::all(); $orderIssueTypes = $this->orderIssueTypeService->getWorkOrderIssueType(); $owners = $this->ownerService->getAuthorizedOwners(); $this->service->tags($workOrders); return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners')); } /** * 工单生成问题件 * @param Request $request * @return array */ public function buildOrderIssueApi(Request $request): array { if (Gate::denies('订单管理-订单问题件生成')) return ['success' => false, 'message' => '没有对应权限']; $work_orders = WorkOrder::query()->whereIn('id', $request['ids'])->get(); if (count($work_orders) == 0) return ['success' => false, 'message' => '刷新当前页面重试']; if (OrderIssue::query()->whereIn('order_id', $work_orders->map(function ($item) { return $item['order_id']; }))->exists()) { return ['success' => false, 'message' => '已有对应的问题件']; } $result = $this->service->buildOrderIssue($work_orders); if (!$result['success']) return $result; $workOrders = WorkOrder::query()->defaultWith()->whereIn('id', $request['ids'])->get(); $this->service->tags($workOrders); return ['success' => true, 'data' => $workOrders]; } public function destroyApi($id): array { if (Gate::denies('订单管理-工单处理-删除')) return ['success' => false, 'message' => '没有对应权限']; $workOrder = $this->service->find($id); if (!$workOrder){ return ['success' => false, 'message' => '对应工单信息未找到']; } else { if ($workOrder->status == '已处理') { return ['success' => false, 'message' => '对应工单已处理,拒绝删除']; } } WorkOrder::query()->where('id', $id)->Delete(); return ['success' => true]; } public function checkWorkOrderApi(Request $request): array { $nos = $request->input('no',''); if (is_string($nos)){ $nos = [$nos]; } $data = $this->service->checkWorkOrder($nos); return ['success' => true,'data' => $data]; } /** * 货主完结工单 * @param Request $request * @return array */ public function ownerEndWorkOrderApi(Request $request): array { if (Gate::denies('订单管理-工单处理-货主编辑')) return ['success' => false, 'message' => '没有对应权限']; $detail_id = $request->input('detail_id'); $detail = WorkOrderDetail::query()->with('workOrder')->where('id',$detail_id)->first(); if (!$detail || !$detail->workOrder){ return ['success'=>false,'message' => '参数异常']; } try { $this->service->ownerEndWorkOrderDetail($detail); return ['success'=>true]; } catch (\Exception $e) { return ['success' => false,'message' => '工单完结异常']; } } /** * 货主批量完结工单 * @param Request $request * @return array */ public function ownerBatchEndWorkOrderApi(Request $request): array { if (Gate::denies('订单管理-工单处理-货主编辑')) return ['success' => false, 'message' => '没有对应权限']; $detail_ids = $request->input('detail_ids',[]); if (count($detail_ids) == 0) return ['success' => false,'message' => '参数异常']; $details = WorkOrderDetail::query()->find($detail_ids); if (count($details) == 0 ) return ['success' => false,'message' => '参数异常']; try { $this->service->ownerBatchEndWorkOrderDetails($details); return ['success' => true]; } catch (\Exception $e) { return ['success' => false, 'message' => '工单完结异常,请刷新后重试']; } } }