链街Dcat后台
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.
 
 
 
 

93 lines
2.7 KiB

<?php
namespace 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;
$baseFee = config('admin.delivery.base_fee');
$repository = new OrderDeliveryReport();
$selects = EmployeesModel::TABLE_NAME.'.name,SUM( CASE WHEN delivery_money=0 THEN '.$baseFee.' when delivery_money>0 THEN delivery_money+'.$baseFee.' 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 '配送统计';
}
}