where('is_del',0); if(!in_array($group,[1,5]) && $userid){ $userInfo = DB::table('users')->where(['id'=>$userid])->first(); if($userInfo){ $deptIds = []; if(!empty($userInfo->department_ids)){ $deptIds = explode(",", $userInfo->department_ids); } elseif($userInfo->department_id){ $deptIds = [$userInfo->department_id]; } if(count($deptIds) > 0){ $list = $list->whereIn('id', $deptIds); } } } if(isset($searchInfo['status'])){ $list= $list->where('department_status',$searchInfo['status']); } if(!empty($searchInfo['name'])){ $list= $list->where('department_name','like','%'.$searchInfo['name'].'%'); } //只显示执行科室(有科室资源的科室) if(!empty($searchInfo['only_execute'])){ $hasResourceDeptIds = DB::table('s_department_resources') ->where('is_del', 0) ->distinct() ->pluck('department_id'); $list = $list->whereIn('id', $hasResourceDeptIds); } //只显示一级科室(pid=0的顶级科室) if(!empty($searchInfo['only_first_level'])){ $list = $list->where('pid', 0); } //只显示参与预约的科室 if(!empty($searchInfo['appointment_enabled'])){ $list = $list->where('appointment_enabled', 1); } $c=$list->count(); $l=$list ->orderBy('id','desc')->skip(($page-1)*$pageSize) ->take($pageSize)->get() ; //查询科室下的资源总数和子科室数量 foreach ($l as $k=>$v){ $l[$k]->user_list=DB::table('users')->where(['department_id'=>$v->id,'status'=>1])->get(); $l[$k]->resource_count=DB::table('s_department_resources')->where(['department_id'=>$v->id,'is_del'=>0])->count(); $l[$k]->children_count=DB::table('s_department')->where(['pid'=>$v->id,'is_del'=>0])->count(); } return \Yz::Return(true, '查询成功', ['list'=>$l,'count'=>$c]); } public function GetEnableList($arr,$is_all=false) { $list=DB::table('s_department'); if(!in_array($arr['group'],[1,5]) and $is_all===false){ $userInfo = DB::table('users')->where(['id'=>$arr['userid']])->first(); if($userInfo){ $deptIds = []; if(!empty($userInfo->department_ids)){ $deptIds = explode(",", $userInfo->department_ids); } elseif($userInfo->department_id){ $deptIds = [$userInfo->department_id]; } if(count($deptIds) > 0){ $list = $list->whereIn('id', $deptIds); } } } $list= $list->where(['is_del'=>0,'department_status'=>1])->get(); return \Yz::Return(true, '查询成功', ['list'=>$list]); } // 获取筛选后的可用科室列表(仅显示存在执行诊室的科室) public function GetFilteredEnableList($arr, $is_all = false) { $list = DB::table('s_department'); if (!in_array($arr['group'], [1, 5]) && $is_all === false) { $userInfo = DB::table('users')->where(['id' => $arr['userid']])->first(); if ($userInfo) { $deptIds = []; if (!empty($userInfo->department_ids)) { $deptIds = explode(",", $userInfo->department_ids); } elseif ($userInfo->department_id) { $deptIds = [$userInfo->department_id]; } if (count($deptIds) > 0) { $list = $list->whereIn('id', $deptIds); } } } // 基础过滤:启用、未删除 $list = $list->where(['is_del' => 0, 'department_status' => 1]); // 只显示执行科室(在 s_department_resources 表中有记录的科室) $hasResourceDeptIds = DB::table('s_department_resources') ->where('is_del', 0) ->distinct() ->pluck('department_id'); $list = $list->whereIn('id', $hasResourceDeptIds); return \Yz::Return(true, '查询成功', ['list' => $list->get()]); } public function Save($info) { if(isset($info['id'])){ $id=$info['id']; unset($info['id']); $c= DB::table('s_department')->where('id',$id)->update($info); }else{ $info['is_del']=0; $c= DB::table('s_department')->insert($info); } if(!$c){ return \Yz::Return(false, '保存失败', []); }else{ return \Yz::Return(true, '保存成功', []); } } public function Del($id) { //将子科室的pid置0 DB::table('s_department')->where('pid',$id)->where('is_del',0)->update(['pid'=>0]); $c= DB::table('s_department')->where('id',$id)->update(['is_del'=>1]); if(!$c){ return \Yz::Return(false, '删除失败', []); }else{ return \Yz::Return(true, '删除成功', []); } } //获取科室已关联的子科室ID列表 public function GetChildren($department_id) { $ids = DB::table('s_department') ->where('pid', $department_id) ->where('is_del', 0) ->pluck('id'); return \Yz::Return(true, '查询成功', ['ids' => $ids]); } //获取可作为诊室的叶子节点科室列表(空闲的叶子节点:pid=0且无子科室) public function GetLeafList($department_id) { $subIds = DB::table('s_department') ->where('pid', '>', 0) ->where('is_del', 0) ->pluck('pid'); //已关联的子科室IDs(供右侧显示) $childrenIds = DB::table('s_department') ->where('pid', $department_id) ->where('is_del', 0) ->pluck('id'); $list = DB::table('s_department') ->where('is_del', 0) ->where('id', '!=', $department_id) ->where(function($query) use ($subIds, $childrenIds) { $query->where(function($q) use ($subIds) { $q->where('pid', 0)->whereNotIn('id', $subIds); })->orWhereIn('id', $childrenIds); }) ->select('id', 'department_name') ->get(); return \Yz::Return(true, '查询成功', ['list' => $list]); } //保存科室关联诊室关系 public function SaveChildren($department_id, $children_ids) { //先清空旧关联 DB::table('s_department') ->where('pid', $department_id) ->where('is_del', 0) ->update(['pid' => 0]); //设置新关联 if (!empty($children_ids)) { DB::table('s_department') ->whereIn('id', $children_ids) ->update(['pid' => $department_id]); } return \Yz::Return(true, '保存成功', []); } }