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

82 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. foreach ($data as $value){
  36. $global_order_id = $value['global_order_id'] ?? '';
  37. $delivery_money = $value['delivery_money'] ?? 0;
  38. $list[] = [
  39. $value['name'] ?? '',
  40. ' '.$global_order_id,
  41. $markets[$value['market_id']] ?? '',
  42. date('Y-m_d H:i:s',$value['created_at']),
  43. $delivery_money+3.5
  44. ];
  45. }
  46. return array_merge($titles,$list);
  47. }
  48. public function styles(Worksheet $sheet)
  49. {
  50. return [
  51. 1 => ['font' => ['size' => 12]],
  52. ];
  53. }
  54. /**
  55. * 获取数据
  56. */
  57. public function getData($option = [])
  58. {
  59. $params = $option;
  60. $repository = new OrderDeliveryReport();
  61. $selects = EmployeesModel::TABLE_NAME.'.name,global_order_id,'.OrderMainModel::$tableName.'.market_id,'.OrderMainModel::$tableName.'.created_at,delivery_money';
  62. $orderGoods = $repository->getDataModel($selects,$params);
  63. $list = $orderGoods->get()->toArray();
  64. return $list;
  65. }
  66. /**
  67. * sheet 表名称
  68. * @return string
  69. */
  70. public function title(): string
  71. {
  72. return '配送明细';
  73. }
  74. }