You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?phpnamespace App\Admin\Actions\Exporter;
use Maatwebsite\Excel\Concerns\FromArray;use Maatwebsite\Excel\Concerns\WithStrictNullComparison;use Maatwebsite\Excel\Concerns\ShouldAutoSize;use Maatwebsite\Excel\Concerns\WithTitle;use Maatwebsite\Excel\Concerns\WithHeadings;use Maatwebsite\Excel\Concerns\WithStyles;
use App\Admin\Repositories\v3\OrderDeliveryReport;use App\Models\v3\LanzuEmployees as EmployeesModel;use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
/** * 配送统计总配送费 */class OrderDeliveryTotalSheet implements FromArray, WithStrictNullComparison, ShouldAutoSize, WithTitle, WithHeadings, WithStyles{ private $params;
public function __construct(array $params) { $this->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 '配送统计'; }}
|