fileName = $this->fileName.'_'.time().'.xlsx';//拼接下载文件名称 $this->titles = [ "id" => "床位ID", "sex" => "性别", "dormitory_type" => "宿舍类型", "multiple_worlds" => "几人间", "living_area" => "生活区", "building_id" => "楼栋", "floor_id" => "楼层", "dormitory_number" => "宿舍号", "bed_id" => "床号", "college" => "二级学院", "speciality" => "专业", "annual_session" => "年份", "status" => "状态", "name" => "姓名", "mobile" => "手机号", "idcard" => "身份证" ]; parent::__construct(); } public function export() { // TODO: Implement export() method. $this->download($this->fileName)->prepare(request())->send(); exit; } public function collection() { // TODO: Implement collection() method. // return collect($this->buildData()); //取出床位详细信息 // $dormitoryBed = AllocationDormitoryBed::query()->where("id", $id)->first(); //宿舍类型 $dormitoryTypeInfo = DormitoryType::query()->get()->toArray(); $dormitoryTypeInfo = array_column($dormitoryTypeInfo, null, "id"); //多人间 $multipleInfo = MultipleWorld::query()->get()->toArray(); $multipleInfo = array_column($multipleInfo, null, "id"); //生活区 $livingInfo = LivingArea::query()->get()->toArray(); $livingInfo = array_column($livingInfo, null, "id"); //楼栋 $buildingInfo = Building::query()->get()->toArray(); $buildingInfo = array_column($buildingInfo, null, "id"); //楼层 $floorInfo = Floor::query()->get()->toArray(); $floorInfo = array_column($floorInfo, null, "id"); //宿舍号 $dormitory = DormitoryNumber::query()->get()->toArray(); $dormitory = array_column($dormitory, null, "id"); //床位号 $bed = Bed::query()->get()->toArray(); $bed = array_column($bed, null, "id"); //取出专业 $specialityInfo = Speciality::query()->get()->toArray(); $specialityInfo = array_column($specialityInfo, null, "id"); //取出二级学院 $collegeInfo = SecondaryCollege::query()->get()->toArray(); $collegeInfo = array_column($collegeInfo, null, "id"); $config = Config::query()->where([ "unique_identification" => "annual_session" ])->first(); //取出当前学年所有正常的床位 $selectList = SelectedDormitory::query()->where([ "status" => SelectedDormitory::STATUS_YES, "annual_session" => $config->data, ])->get()->toArray(); $selectListIds = []; if(!empty($selectList)){ $selectListIds = array_column($selectList, null, "allocation_dormitory_id"); } $chunk_list = array_chunk($this->buildData(), 1000); $newList = []; foreach($chunk_list as $value){ foreach($value as $item){ // $bedInfo = SelectedDormitory::getBedInfoByIdNew($item["id"]); $mobile = ""; $name = ""; $idcard = ""; if(!empty($selectListIds)){ if(array_key_exists($item["id"], $selectListIds)){ $userInfo = UsersMember::query()->where("unique_number", $selectListIds[$item["id"]]["unique_number"])->first(); $mobile = $userInfo->mobile; $name = $userInfo->name; $idcard = $userInfo->idcard; } } $data = [ "id" => $item["id"], "sex" => $item["sex"] == 1 ? "男" : "女", "dormitory" => $dormitoryTypeInfo[$item["dormitory_type"]]["dormitory"], "multipleInfo" => $multipleInfo[$item["multiple_worlds"]]["people"], "livingInfo" => $livingInfo[$item["living_area"]]["title"], "buildingInfo" => $buildingInfo[$item["building_id"]]["building_title"], "floorInfo" => $floorInfo[$item["floor_id"]]["floor_title"], "dormitoryNumber" => $dormitory[$item["dormitory_number"]]["dormitory_number"], "bedNumber" => $bed[$item["bed_id"]]["bed_number"], "collegeInfo" => $collegeInfo[$specialityInfo[$item["speciality_id"]]["secondary_college_id"]]["name"], "specialityName" => $specialityInfo[$item["speciality_id"]]["speciality_name"], "mobile" => $mobile, "name" => $name, "idcard" => $idcard, "status" => $item['status'] == 1 ? "正常" : "禁用", "annual_session" => $item["annual_session"], ]; array_push($newList, $data); } } return collect($newList); } public function headings(): array { // TODO: Implement headings() method. return $this->titles(); } public function mapOld($row): array { $bedInfo = SelectedDormitory::getBedInfoByIdNew($row["id"]); $status = $row['status'] == 1 ? "正常" : "禁用"; $mobile = ""; $name = ""; $idcard = ""; //检测该床位是否被选,被选则取出用户信息 $selectInfo = SelectedDormitory::query()->where([ "allocation_dormitory_id" => $row["id"], "annual_session" => $row["annual_session"], "status" => SelectedDormitory::STATUS_YES ])->first(); if(!empty($selectInfo)){ $userInfo = UsersMember::query()->where("unique_number", $selectInfo["unique_number"])->first(); $mobile = $userInfo->mobile; $name = $userInfo->name; $idcard = $userInfo->idcard; } // TODO: Implement map() method. return [ $row['id'], $bedInfo["sex"], $bedInfo["dormitory"], $bedInfo["multipleInfo"], $bedInfo["livingInfo"], $bedInfo["buildingInfo"], $bedInfo["floorInfo"], $bedInfo["dormitoryNumber"], $bedInfo["bedNumber"], $bedInfo["collegeInfo"], $bedInfo["specialityName"], $row['annual_session'], $status, $name, $mobile, "'".$idcard, ]; } public function map($row): array { // TODO: Implement map() method. return [ $row['id'], $row["sex"], $row["dormitory"], $row["multipleInfo"], $row["livingInfo"], $row["buildingInfo"], $row["floorInfo"], $row["dormitoryNumber"], $row["bedNumber"], $row["collegeInfo"], $row["specialityName"], $row['annual_session'], $row["status"], $row["name"], $row["mobile"], "'".$row["idcard"], ]; } }