1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace App\Exports;
- use App\Models\Project;
- use App\Services\Project\ProjectGanttService;
- use Illuminate\Support\Collection;
- use Maatwebsite\Excel\Concerns\Exportable;
- use Maatwebsite\Excel\Concerns\FromCollection;
- use Maatwebsite\Excel\Concerns\ShouldAutoSize;
- use Maatwebsite\Excel\Concerns\WithHeadings;
- use Maatwebsite\Excel\Concerns\WithMapping;
- use Maatwebsite\Excel\Events\AfterSheet;
- use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
- class ProjectGanttExport implements FromCollection, WithMapping, WithHeadings, ShouldAutoSize
- {
- use Exportable;
- private static $index = 1;
- public function collection()
- {
- $project = Project::allowed(request()->project_id)->findOrFail(request()->project_id);
- $group = in_array(
- request()->get("group"),
- ['requirement_id','assign','task_type']
- ) ? request()->get("group") : "task_type";
- return new Collection((new ProjectGanttService())->gantt($project, $group));
- }
- public function map($project): array
- {
- if (isset($project['duration'])){
- $displayId = self::$index++;
- }else{
- $displayId = $project['text'] == 'Empty'?'':$project['text'];
- $project['text'] = '';
- }
- return [
- $displayId,
- $project['text'],
- $project['start_date'],
- $project['end_date'],
- isset($project['duration'])?$project['duration'].'%':'',
- $project['assign_to'],
- ];
- }
- public function headings(): array
- {
- return [
- 'ID',
- 'Name',
- 'StartTime',
- 'EndTime',
- 'Duration',
- 'AssignTo',
- ];
- }
- public function columnFormats(): array
- {
- return [
- 'B' => NumberFormat::FORMAT_DATE_DDMMYYYY, //日期
- 'C' => NumberFormat::FORMAT_NUMBER_00, //金额保留两位小数
- ];
- }
- }
|