Browse Source

新增预报到统计导出

master
Hjj 2 days ago
parent
commit
90489936fe
  1. 11
      app/Admin/Controllers/UserFollowOverviewController.php
  2. 73
      app/Admin/Extensions/Exporter/FollowStatisticsExporter.php
  3. 19
      app/Admin/Repositories/UserFollowOverview.php

11
app/Admin/Controllers/UserFollowOverviewController.php

@ -2,6 +2,7 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Extensions\Exporter\FollowStatisticsExporter;
use App\Admin\Metrics\Examples\Follow\Ajax\AllCollegesFollowChartsAjax; use App\Admin\Metrics\Examples\Follow\Ajax\AllCollegesFollowChartsAjax;
use App\Admin\Metrics\Examples\Follow\AllColleges; use App\Admin\Metrics\Examples\Follow\AllColleges;
use App\Admin\Metrics\Examples\Follow\AllCollegesCharts; use App\Admin\Metrics\Examples\Follow\AllCollegesCharts;
@ -70,18 +71,18 @@ class UserFollowOverviewController extends AdminController
$grid->disableActions(); $grid->disableActions();
$grid->disableRefreshButton(); $grid->disableRefreshButton();
$grid->disableRowSelector(); $grid->disableRowSelector();
$grid->disableToolbar();
$grid->paginate(10); $grid->paginate(10);
$grid->export(new FollowStatisticsExporter());
$followStatus = UserFollowStatus::query()->get()->toArray(); $followStatus = UserFollowStatus::query()->orderBy('id', 'asc')->get()->toArray();
$showInfo = AdminFollowShow::query()->where(['user_id' => Admin::user()['id']])->first(); $showInfo = AdminFollowShow::query()->where(['user_id' => Admin::user()['id']])->first();
$collegeAll = SecondaryCollege::query()->whereIn('id', $showInfo['secondary_college_id'] ?? [])->pluck("name", "id")->toArray(); $collegeAll = SecondaryCollege::query()->whereIn('id', $showInfo['secondary_college_id'] ?? [])->pluck("name", "id")->toArray();
$grid->combine('总录取', ['enroll_number', 'enroll_man_student', 'enroll_girl_student']); $grid->addTableClass(['table-text-center'])->combine('总录取', ['enroll_number', 'enroll_man_student', 'enroll_girl_student']);
$grid->combine('未联系', ['out_number', 'out_man_student', 'out_girl_student']); $grid->addTableClass(['table-text-center'])->combine('未联系', ['out_number', 'out_man_student', 'out_girl_student']);
foreach ($followStatus as $k => $v) { foreach ($followStatus as $k => $v) {
$grid->combine($v['name'], ["total_number{$v['id']}", "man_student{$v['id']}", "girl_student{$v['id']}"]); $grid->addTableClass(['table-text-center'])->combine($v['name'], ["total_number{$v['id']}", "man_student{$v['id']}", "girl_student{$v['id']}"]);
} }
$grid->column('secondary_college_id', '二级学院'); $grid->column('secondary_college_id', '二级学院');

73
app/Admin/Extensions/Exporter/FollowStatisticsExporter.php

@ -0,0 +1,73 @@
<?php
namespace App\Admin\Extensions\Exporter;
use App\Models\UserFollowStatus;
use Dcat\Admin\Grid\Exporters\AbstractExporter;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
class FollowStatisticsExporter extends AbstractExporter implements WithMapping, WithHeadings, FromCollection
{
use Exportable;
protected $titles = [];
public function __construct()
{
$this->fileName = '新生回访统计数据-' . date('Y-m-d') . '.xlsx'; //拼接下载文件名称
$this->titles = ['学院基础信息', '', '总录取', '', '', '未联系', '', ''];
foreach (UserFollowStatus::query()->orderBy('id', 'asc')->get('name')->toArray() as $key => $item) {
$this->titles[] = $item['name'];
$this->titles[] = '';
$this->titles[] = '';
}
parent::__construct();
}
public function export()
{
// TODO: Implement export() method.
$this->download($this->fileName)->prepare(request())->send();
exit;
}
public function collection()
{
$data = $this->buildData();
$newData[2] = ['二级学院', '专业', '总人数', '男生', '女生', '总人数', '男生', '女生'];
foreach (UserFollowStatus::query()->get('id')->toArray() as $key => $item) {
$newData[2][] = '总人数';
$newData[2][] = '男生';
$newData[2][] = '女生';
}
foreach ($data as $key => $item) {
$newData[] = $item;
}
// TODO: Implement collection() method.
return collect($newData);
}
public function headings(): array
{
// TODO: Implement headings() method.
return $this->titles;
}
public function map($row): array
{
// 直接返回row 导出全部字段 dd($row);
// return $row;
foreach ($row as $k => $v) {
$row[$k] = (string)$v;
}
// TODO: Implement map() method.
return $row;
}
}

19
app/Admin/Repositories/UserFollowOverview.php

@ -13,6 +13,7 @@ use Dcat\Admin\Admin;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
use Dcat\Admin\Repositories\EloquentRepository; use Dcat\Admin\Repositories\EloquentRepository;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class UserFollowOverview extends EloquentRepository class UserFollowOverview extends EloquentRepository
{ {
@ -25,6 +26,8 @@ class UserFollowOverview extends EloquentRepository
public function get(Grid\Model $model) public function get(Grid\Model $model)
{ {
$model->usePaginate(true);
$export = $model->filter()->input('_export_');
$secondary_college_id = $model->filter()->input('secondary_college_id'); $secondary_college_id = $model->filter()->input('secondary_college_id');
$speciality_id = $model->filter()->input('speciality_id'); $speciality_id = $model->filter()->input('speciality_id');
@ -37,9 +40,9 @@ class UserFollowOverview extends EloquentRepository
// 新生数据 // 新生数据
$studentsIds = AdmissionNewStudents::query()->where(["is_new_student" => "1"])->pluck('idCard')->toArray(); $studentsIds = AdmissionNewStudents::query()->where(["is_new_student" => "1"])->pluck('idCard')->toArray();
// 回访状态 // 回访状态
$followStatus = UserFollowStatus::query()->get()->toArray(); $followStatus = UserFollowStatus::query()->orderBy('id', 'asc')->get()->toArray();
$collegesName = SecondaryCollege::query()->pluck('name', 'id')->toArray(); $collegesName = SecondaryCollege::query()->pluck('name', 'id')->toArray();
$all = Model::query() $data = Model::query()
->where(function ($query) use ($showInfo) { ->where(function ($query) use ($showInfo) {
if ($showInfo) { if ($showInfo) {
if ($showInfo['type'] == '1') { if ($showInfo['type'] == '1') {
@ -58,9 +61,15 @@ class UserFollowOverview extends EloquentRepository
$query->where('id', $speciality_id); $query->where('id', $speciality_id);
}) })
->orderByDesc('id') ->orderByDesc('id')
->paginate($perPage) ->select(['id', 'secondary_college_id', 'speciality_name']);
->toArray();
if ($export == 'all') {
$data = $data->get()->toArray();
$all['total'] = count($data);
$all['data'] = $data;
} else {
$all = $data->paginate($perPage)->toArray();
}
foreach ($all['data'] as $key => $value) { foreach ($all['data'] as $key => $value) {
$all['data'][$key]["secondary_college_id"] = $collegesName[$value['secondary_college_id']] ?? null; $all['data'][$key]["secondary_college_id"] = $collegesName[$value['secondary_college_id']] ?? null;
@ -112,6 +121,8 @@ class UserFollowOverview extends EloquentRepository
$all['data'][$key]["out_girl_student"] -= $all['data'][$key]["girl_student{$followId}"]; $all['data'][$key]["out_girl_student"] -= $all['data'][$key]["girl_student{$followId}"];
} }
unset($all['data'][$key]['id']);
} }
return $model->makePaginator( return $model->makePaginator(

Loading…
Cancel
Save