id; $worker = AdminUser::query() ->filter($filter) ->where('type', AdminUser::TYPE_WORKER) ->orderByDesc('id'); if (!Admin::isAdministrator()) { $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); if (count($area_ids) !== 0) { $worker = $worker->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; $worker = $worker->where('area_id', $area_id); } } $worker = $request->get('all') ? $worker->get() : $worker->paginate(); // $bike = $bike->get(); return $this->ok(WorkerResource::collection($worker)); } /** * create * * @return void *@author Fx * */ public function create() { // } /** * store 添加地勤 * * @param WorkerRequest $request * @param AdminUser $worker * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function store(WorkerRequest $request, AdminUser $worker) { // $admin_id = Admin::user()->id; $inputs = $request->validated(); $inputs['password'] = bcrypt('123456789'); $inputs['admin_id'] = $admin_id; // 添加者id $inputs['type'] = AdminUser::TYPE_WORKER; $worker->create($inputs); return $this->ok(WorkerResource::make($worker)); } /** * show * * @param $id * @return void *@author Fx * */ public function show($id) { // } /** * edit * * @param $id * @return void *@author Fx * */ public function edit($id) { // } /** * update 更新地勤 * * @param WorkerRequest $request * @param AdminUser $worker * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function update(WorkerRequest $request, AdminUser $worker) { // $inputs = $request->validated(); $worker->update($inputs); return $this->created(WorkerResource::make($worker)); } /** * destroy 删除地勤 * * @param AdminUser $worker * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function destroy(AdminUser $worker) { // $worker->delete(); return $this->noContent(); } /** * resetPassword 重置密码 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function resetPassword(Request $request) { $id = $request->get('id'); if (empty($id)) return $this->error('参数错误'); $worker = AdminUser::query()->find($id); $worker->password = bcrypt('123456789'); $res = $worker->save(); if ($res) { return $this->ok($res); } else { return $this->error('重置失败,请联系管理员'); } } /** * workOrderChart 工单统计折线图 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx */ public function workOrderChart(Request $request) { $worker_id = $request->get('worker_id') ?? ''; $admin_id = Admin::user()->id; // 验证次地勤是否属于该区域管理员 if (!Admin::isAdministrator()) { $worker_area_id = AdminUser::find($worker_id)->area_id; $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); if (!in_array($worker_area_id, $area_ids)) { return $this->error('暂无权限'); } } $workOrderType = $request->get('work_order_type') ?? ''; $month = $request->get('monthVal') ? Carbon::make($request->get('monthVal')) : Carbon::today()->subMonth()->format('Y-m-01 00:00:00'); $endtime = Carbon::make($month)->addMonth()->format('Y-m-01 00:00:00'); $workOrder = WorkOrder::query() ->where('status', WorkOrder::STATUS_OK) ->whereDate('fix_end_time', '>', $month) ->whereDate('fix_end_time', '<', $endtime); if (!empty($workOrderType)) { $workOrder = $workOrder->where('type', $workOrderType); } if (!empty($worker_id)) { $workOrder = $workOrder->where('work_over_id', $worker_id); } $workOrder = $workOrder->selectRaw('DATE_FORMAT(fix_end_time,"%Y/%m/%d") as date,count(id) as value') ->groupBy('date')->get(); // 根据人员分组 $workOrderByworker = WorkOrder::query() ->with(['workerOver']); if (!Admin::isAdministrator()) { // 非超级管理员只显示地勤人员 $workOrderByworker = $workOrderByworker->whereHas('workerOver', function ($query) { $query->where('admin_users.type', AdminUser::TYPE_WORKER); }); }; $workOrderByworker = $workOrderByworker ->where('status', WorkOrder::STATUS_OK) ->whereDate('fix_end_time', '>', $month) ->whereDate('fix_end_time', '<', $endtime) ->groupBy('work_over_id') ->select('work_over_id', DB::raw('count(id) as type_total_sum')) ->get(); //根据工单类型区分 $workOrderByTypes = WorkOrder::query() ->where('status', WorkOrder::STATUS_OK) ->whereDate('fix_end_time', '>', $month) ->whereDate('fix_end_time', '<', $endtime); if (!empty($worker_id)) { $workOrderByTypes = $workOrderByTypes->where('work_over_id', $worker_id); } $workOrderByTypes = $workOrderByTypes ->groupBy('type') ->select('type', DB::raw('count(id) as type_total_sum')) ->get(); //总计 $workOrderByTypesTotal = WorkOrder::query() ->where('status', WorkOrder::STATUS_OK) ->whereDate('fix_end_time', '>', $month) ->whereDate('fix_end_time', '<', $endtime); if (!empty($worker_id)) { $workOrderByTypesTotal = $workOrderByTypesTotal->where('work_over_id', $worker_id); } $workOrderByTypesTotal = $workOrderByTypesTotal->count('id'); foreach ($workOrderByTypes as &$v) { $v['type_name'] = WorkOrder::$typeMaps[$v->type]; } $workOrderByTypes[] = ['id' => '', 'type_name' => '当月总计', 'type_total_sum' => $workOrderByTypesTotal]; return $this->ok(['workOrder' => $workOrder, 'workOrderByTypes' => $workOrderByTypes, 'workOrderByworker' => $workOrderByworker]); } }