service = app(WorkOrderService::class); $this->detailService = app('WorkOrderDetailService'); $this->commoditiesService = app(WorkOrderCommoditiesService::class); $this->logService = app(WorkOrderLogService::class); $this->orderService = app(OrderService::class); $this->ownerService = app(OwnerService::class); } public function index(Request $request, WorkOrderFilters $filters) { if (Gate::denies('订单管理-工单处理-查询')) return redirect('/'); $workOrders = WorkOrder::query()->filter($filters)->defaultWith()->orderByDesc('work_order_status')->orderBy('created_at')->paginate($request['paginate'] ?? 50); $logistics = Logistic::all(); $orderIssueTypes = $this->service->getIssueType(); $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 updateIssueTypeApi(Request $request): array { if (Gate::denies('订单管理-工单处理-审核')) return ['success' => false, 'message' => '没有对应权限']; WorkOrder::query()->where('id', $request['id'])->update(['order_issue_type_id' => $request['type_id']]); return ['success' => true]; } public function batchUpdateIssueTypeApi(Request $request): array { if (Gate::denies('订单管理-工单处理-审核')) return ['success' => false, 'message' => '没有对应权限']; WorkOrder::query()->whereIn('id', $request['ids'])->update(['order_issue_type_id' => $request['type']]); $items = WorkOrder::query()->defaultWith()->whereIn('id', $request['ids'])->get(); $this->service->tags($items); return ['success' => true, 'data' => $items]; } public function destroyApi($id): array { if (Gate::denies('订单管理-工单处理-删除')) return ['success' => false, 'message' => '没有对应权限']; $workOrder = $this->service->find($id); if (!$workOrder) return ['success' => false, 'message' => '对应工单信息未找到']; 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]; } }