setUpOptions(); } //初始化方法,主要是调用$this->options()方法,执行整个option的初始化操作。 protected function setUpOptions() { $this->options([ "chart"=>[ "height"=>350, //高度 "type"=>"bar", //chart 类型 ], ]); $data = [[ "name" => "报到率", "data" => [], ]]; $label = []; // 执行你的数据查询逻辑 //取出当前年份 $config = Config::query()->where([ "unique_identification" => "annual_session" ])->first(); //二级学院 $list = SecondaryCollege::query()->where([ "status" => SecondaryCollege::STATUS_YES ])->get(["id", "name"])->toArray(); //不为空时 if(!empty($list)){ foreach($list as $key => $item){ //取出该学院下的专业 $speciality = Speciality::query()->where([ "status" => Speciality::STATUS_YES, "secondary_college_id" => $item["id"], ])->get()->toArray(); //专业ID $specialityIds = array_column($speciality, "id"); //二级学院已录入的学生 $importStudents = AdmissionNewStudents::query()->where([ "annual_session" => $config->data, "status" => AdmissionNewStudents::STATUS_YES, ])->whereIn("speciality_id", $specialityIds)->get("idCard")->toArray(); if(!empty($importStudents)){ $idcardList = array_column($importStudents, "idCard"); //根据身份证集取出已注册的用户 $userList = UsersMember::query()->whereIn("idcard", $idcardList)->where("status", UsersMember::STATUS_YES)->get("unique_number")->toArray(); if(!empty($userList)){ $userList = array_column($userList, "unique_number"); //线下迎新有几步 $stepCount = OfflineStep::query()->where("status", OfflineStep::STATUS_YES)->count(); //检测是否存在线下报到步骤,存在则视为已到校 $completedOfflineStep = CompletedOfflineStep::query()->whereIn("unique_number", $userList)->where("annual_session", $config->data)->where("step_id",">=",$stepCount)->count(); //报到率 $registering = ($completedOfflineStep / count($importStudents) * 100) ; $list[$key]["registering"] = $registering; } } } foreach($list as $item){ array_push($label, $item["name"]); if(!empty($item["registering"])){ array_push($data[0]["data"], $item["registering"]); }else{ array_push($data[0]["data"], 0); } } } $this->option("series",$data); $this->option("labels",$label); $this->option("yaxis",["max" => 100]); //Y轴最大值 } }