id; $workOrder = WorkOrder::query() ->filter($filter) ->orderByDesc('id'); if(!Admin::isAdministrator()){ $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); if(count($area_ids) !== 0){ $workOrder = $workOrder->whereIn('area_id',$area_ids); }else{ $area_id = AdminUserArea::query()->where('admin_id',$admin_id)->first('area_id'); $area_id = $area_id->area_id ?? 0; $workOrder = $workOrder->where('area_id',$area_id); } } $workOrder = $request->get('all') ? $workOrder->get() : $workOrder->paginate(); return $this->ok(WorkOrderResource::collection($workOrder)); } /** * workOrderType 工单类型 * * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function workOrderType(){ $type = WorkOrder::$typeMaps; $data = []; foreach ($type as $k=>$v){ $arr = []; $arr['id'] = $k; $arr['name'] = $v; $data[] = $arr; } return $this->ok($data); } /** * addWorkOrder 添加工单 * * @param Request $request * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function addWorkOrder(Request $request){ $reason = $request->get('reason') ?? ''; $bike_no = $request->get('bike_no') ?? ''; $type = $request->get('type') ?? ''; if(empty($reason) || empty($bike_no) || empty($type)) return $this->error('参数错误'); $bike = Bike::where('bike_no',$bike_no)->first(); if(empty($bike)) { Log::error('找不到车辆相关信息,车辆编号为'.$bike_no); return $this->error('找不到车辆相关信息'); } $data = [ 'work_no' => WorkOrder::makeWorkNo(), 'bike_no' => $bike_no, 'bike_id' => $bike->id, 'source' => WorkOrder::SOURCE_ADMIN, 'planned' => WorkOrder::PLANNED_STATUS_MEET, 'area_id' => $bike->put_area_id, 'type' => $type, 'reason' => $reason, 'type_name' => WorkOrder::$typeMaps[$type], 'insert_time' => Carbon::now(), ]; // 验证是否存在数据 $verify = [ 'type' => $type, 'bike_id' => $bike->id, 'status' => WorkOrder::STATUS_NO, ]; $workOrder=WorkOrder::firstOrCreate($verify,$data); if($workOrder->wasRecentlyCreated){ // 新用户处理 return $this->ok('添加成功'); }else{ return $this->error('已经存在该类型工单,无需重复添加'); } } /** * mulOverWorkOrder 批量设为已完成 * * @param Request $request * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function mulOverWorkOrder(Request $request){ $workOrderIds = $request->get('ids') ?? []; if(empty($workOrderIds)) return $this->error('参数错误'); $admin_id = Admin::user()->id; try{ WorkOrder::whereIn('id',$workOrderIds)->where('status',WorkOrder::STATUS_NO)->update([ 'planned' => WorkOrder::PLANNED_STATUS_OVER, 'status' => WorkOrder::STATUS_OK, 'fix_start_time' => Carbon::now(), 'worker_id' => $admin_id, 'work_over_id' => $admin_id, 'fix_end_time' => Carbon::now(), ]); }catch (\Exception $exception){ Log::error($exception->getMessage()); return $this->error('操作失败,请联系管理员'); } return $this->ok('操作成功'); } /** * mulAssignWorkOrder 批量指派 * * @param Request $request * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function mulAssignWorkOrder(Request $request){ $workOrderIds = $request->get('ids') ?? []; $worker_id = $request->get('worker_id') ?? ''; if(empty($workOrderIds) || empty($worker_id)) return $this->error('参数错误'); $admin_id = Admin::user()->id; try{ WorkOrder::whereIn('id',$workOrderIds)->where('status',WorkOrder::STATUS_NO)->where('planned',WorkOrder::PLANNED_STATUS_MEET)->update([ 'planned' => WorkOrder::PLANNED_STATUS_WORK, 'fix_start_time' => Carbon::now(), 'worker_id' => $worker_id, 'work_over_id' => $admin_id, ]); }catch (\Exception $exception){ Log::error($exception->getMessage()); return $this->error('操作失败,请联系管理员'); } return $this->ok('操作成功'); } }