params = $params; } public function headings(): array { $startTime = $this->params['start_time'] ?? null; $endTime = $this->params['end_time'] ?? null; if(empty($startTime) && empty($endTime)){ return ['统计全部']; } if(empty($startTime)){ $startTime = '2020-10-01'; }else{ $endTime = date('Y-m-d'); } return [ '统计时间:'.$startTime.' 至 '.$endTime ]; } public function array(): array { $titles = [[ '配送人员', '总配送费(元)', ]]; $data = $this->getData($this->params); return array_merge($titles,$data); } public function styles(Worksheet $sheet) { $sheet->mergeCells('A1:B1');// 合并 // $sheet->getColumnDimension('A')->setWidth(100); // 列宽 不生效 $sheet->getRowDimension(1)->setRowHeight(20); // 行高 $sheet->getStyle('A1:B1')->getAlignment()->setVertical('center');// 垂直居中 $sheet->getStyle('A1:B1')->getAlignment()->setHorizontal('center');// 水平居中 return [ 1 => ['font' => ['bold' => true,'size' => 12]], 2 => ['font' => ['size' => 12]], ]; } /** * 获取数据 */ public function getData($option = []) { $params = $option; $repository = new OrderDeliveryReport(); $selects = EmployeesModel::TABLE_NAME.'.name,SUM( CASE WHEN delivery_money=0 THEN 3.5 when delivery_money>0 THEN delivery_money+3.5 ELSE 0 END) as total_delivery'; $orderGoods = $repository->getDataModel($selects,$params); $list = $orderGoods->groupBy(EmployeesModel::TABLE_NAME.'.name')->get()->toArray(); return $list; } /** * sheet 表名称 * @return string */ public function title(): string { return '配送统计'; } }