ExcelService.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Service\Excel;
  3. use App\Exports\MyExport;
  4. use App\Model\Header_ext;
  5. use App\Model\SysMenu;
  6. use Illuminate\Support\Facades\DB;
  7. use App\Service\Service;
  8. /**
  9. * 相关
  10. * @package App\Models
  11. */
  12. class ExcelService extends Service
  13. {
  14. public function excelExport($request){
  15. $data = $request->all();
  16. $menu_id = $data['menu_id'];
  17. $list = $this->excelGetData($menu_id,$request);
  18. $list_key = Header_ext::where('menu_id',$menu_id)->select('key','value','type')->orderBy('sort','asc')->get()->toArray();
  19. $excel_top_list = [];
  20. $excel_list = [];
  21. foreach ($list_key as $v){
  22. $excel_top_list[] = $v['value'];
  23. }
  24. $excel_list[] = $excel_top_list;
  25. foreach ($list as $v){
  26. $detail = [];
  27. foreach ($list_key as $vv){
  28. if($vv['type'] === '2') $value = date('Y-m-d H:i:s',$v[$vv['key']]);
  29. else $value = $v[$vv['key']];
  30. $detail[] = $value;
  31. }
  32. $excel_list[] = $detail;
  33. }
  34. $myExport = new MyExport();
  35. $data = $myExport->commonExport(['data'=>$excel_list]);
  36. return [true,$data];
  37. }
  38. public function excelGetData($menu_id,$request){
  39. $api = SysMenu::where('id',$menu_id)->value('api');
  40. $path = $this->getMenu();
  41. $control = '\\'.$path[$api]["controller"];
  42. $act = $path[$api]["act"];
  43. $new = new $control();
  44. $detail = $new->$act($request);
  45. // if(!isset($detail['data']['data'][0])) $detail['data']['data'][0] = $detail['data'];
  46. return $detail['data']['data'];
  47. }
  48. public function getMenu(){
  49. $app = App();
  50. $routes = $app->routes->getRoutes();
  51. $path = [];
  52. foreach ($routes as $k => $value) {
  53. if(!isset($value->action['controller'])) continue;
  54. $act = explode('@',$value->action['controller']);
  55. if(!isset($act[1])) continue;
  56. $path[$value->uri]['act'] = $act[1];
  57. $path[$value->uri]['controller'] = $act[0];
  58. }
  59. return $path;
  60. }
  61. }