model = new DoctorModel(); } public function index() { //设置过滤方法 $this->request->filter(['strip_tags']); if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('keyField')) { return $this->selectpage(); } list($where, $sort, $order, $offset, $limit) = $this->buildparams($this->searchFields, true); // 过滤机构 $childInsIds = $this->auth->getMyInsId(); if($childInsIds == false){ $more = false; } else { $more = ['institution_id' => ['in', $this->auth->getMyInsId()]]; } $range_where = false; if($this->request->has('range')){ $range = $this->request->param('range'); $between = [ substr($range, 0, 19), substr($range, 22, 19), ]; $range_where = [ 'createdAt' => ['between', $between] ]; } $join = [ ['institution i', 'd.institution_id = i.id', 'LEFT'], ]; $field = [ 'd.id','d.realname','d.institution_id','i.name as institution_name', '0 as local_report','0 as local_review','0 as remote_report','0 as remote_review', '0 as initiate_remote' ]; $list = $this->model->alias('d') ->join($join) ->where($where) ->where($more) ->order($sort, $order) ->group('d.id') ->limit($offset, $limit) ->column($field); $total = $this->model->alias('d') ->join($join) ->where($where) ->where($more) ->group('d.id') ->count(); $list = collection($list)->toArray(); // 查询报告 $doctor_ids = array_column($list,'id'); $reports = model('report','model\report') ->where($range_where) ->where(function ($query) use ($doctor_ids) { $query->whereIn('report_doctor_id',$doctor_ids); $query->whereOr(['review_doctor_id'=>['in',$doctor_ids]]); }) ->field('report_doctor_id,review_doctor_id,type') ->select(); foreach ($reports as $val){ if(isset($list[$val['report_doctor_id']])){ if($val['type'] == '1'){ $list[$val['report_doctor_id']]['local_report'] ++; } else { $list[$val['report_doctor_id']]['remote_report'] ++; } } if(isset($list[$val['review_doctor_id']])){ if($val['type'] == '1'){ $list[$val['review_doctor_id']]['local_review'] ++; } else { $list[$val['review_doctor_id']]['remote_review'] ++; } } } // 查询远程诊断 $remote_data = model('Remote','model\remote') ->where($range_where) ->whereIn('req_doctor_id', $doctor_ids) ->column('req_doctor_id'); foreach ($remote_data as $val){ $list[$val]['initiate_remote'] ++; } $list = array_values($list); $result = array("total" => $total, "rows" => $list); return json($result); } return $this->view->fetch(); } }