链街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.

83 lines
2.4 KiB

  1. <?php
  2. namespace App\Admin\Actions\Exporter;
  3. use Maatwebsite\Excel\Concerns\FromArray;
  4. use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
  5. use Maatwebsite\Excel\Concerns\ShouldAutoSize;
  6. use Maatwebsite\Excel\Concerns\WithTitle;
  7. use App\Admin\Repositories\v3\OrderDeliveryReport;
  8. use App\Models\v3\LanzuEmployees as EmployeesModel;
  9. use App\Models\ImsCjdcOrderMain as OrderMainModel;
  10. use App\Models\v3\Market as MarketModel;
  11. use Maatwebsite\Excel\Concerns\WithStyles;
  12. use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
  13. /**
  14. * 配送统计总配送费
  15. */
  16. class OrderDeliveryDetailSheet implements FromArray, WithStrictNullComparison, ShouldAutoSize, WithTitle, WithStyles
  17. {
  18. private $params;
  19. public function __construct(array $params)
  20. {
  21. $this->params = $params;
  22. }
  23. public function array(): array
  24. {
  25. $titles = [[
  26. '配送人员',
  27. '订单编号',
  28. '下单市场',
  29. '下单时间',
  30. '订单配送费(元)',
  31. ]];
  32. $data = $this->getData($this->params);
  33. $markets = MarketModel::getMarketArray();
  34. $list = [];
  35. $baseFee = config('admin.delivery.base_fee');
  36. foreach ($data as $value){
  37. $global_order_id = $value['global_order_id'] ?? '';
  38. $delivery_money = $value['delivery_money'] ?? 0;
  39. $list[] = [
  40. $value['name'] ?? '',
  41. ' '.$global_order_id,
  42. $markets[$value['market_id']] ?? '',
  43. date('Y-m_d H:i:s',$value['created_at']),
  44. $delivery_money+$baseFee
  45. ];
  46. }
  47. return array_merge($titles,$list);
  48. }
  49. public function styles(Worksheet $sheet)
  50. {
  51. return [
  52. 1 => ['font' => ['size' => 12]],
  53. ];
  54. }
  55. /**
  56. * 获取数据
  57. */
  58. public function getData($option = [])
  59. {
  60. $params = $option;
  61. $repository = new OrderDeliveryReport();
  62. $selects = EmployeesModel::TABLE_NAME.'.name,global_order_id,'.OrderMainModel::$tableName.'.market_id,'.OrderMainModel::$tableName.'.created_at,delivery_money';
  63. $orderGoods = $repository->getDataModel($selects,$params);
  64. $list = $orderGoods->get()->toArray();
  65. return $list;
  66. }
  67. /**
  68. * sheet 表名称
  69. * @return string
  70. */
  71. public function title(): string
  72. {
  73. return '配送明细';
  74. }
  75. }