Browse Source

统一导出方法

gogs 1 year ago
parent
commit
0cf0a2404f

+ 6 - 3
app/Exports/CommonExport.php

@@ -32,7 +32,7 @@ class CommonExport implements FromCollection, WithEvents, WithStrictNullComparis
         //这边处理数据格式
         //这边处理数据格式
 
 
         //关于表单的合并
         //关于表单的合并
-        $params = $this->data['params'];
+        $params = isset($this->data['params']) ?? [];
 
 
         $style = [
         $style = [
             AfterSheet::class => function (AfterSheet $event) use($params) {
             AfterSheet::class => function (AfterSheet $event) use($params) {
@@ -43,8 +43,11 @@ class CommonExport implements FromCollection, WithEvents, WithStrictNullComparis
 
 
 
 
                 //合并相关
                 //合并相关
-                $merge = $params['merge'];
-                $event->sheet->getDelegate()->setMergeCells($merge);
+                if(isset($params['merge'])){
+                    $merge = $params['merge'];
+                    $event->sheet->getDelegate()->setMergeCells($merge);
+                }
+
             },
             },
         ];
         ];
 
 

+ 1 - 0
app/Exports/MyExport.php

@@ -14,6 +14,7 @@ class MyExport {
 
 
     public function commonExport($data,$path = ''){
     public function commonExport($data,$path = ''){
 
 
+        if(empty($path)) $path = date('YmdHis').rand(1000,9999).'.xlsx';
         $param = $data;
         $param = $data;
         $export = new CommonExport($param);
         $export = new CommonExport($param);
         $date = date('Ymd');
         $date = date('Ymd');

+ 12 - 0
app/Http/Controllers/Api/ExcelController.php

@@ -2,6 +2,7 @@
 namespace App\Http\Controllers\Api;
 namespace App\Http\Controllers\Api;
 
 
 use App\Exports\MyExport;
 use App\Exports\MyExport;
+use App\Service\Excel\ExcelService;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 
 
 //导入导出
 //导入导出
@@ -20,4 +21,15 @@ class ExcelController extends BaseController
         return  $excel->excelDownload($file_name);
         return  $excel->excelDownload($file_name);
     }
     }
 
 
+    public function excelExport(Request $request){
+        $service = new ExcelService();
+        list($status,$data) = $service->excelExport($request);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
 }
 }

+ 11 - 11
app/Http/Controllers/Api/OaController.php

@@ -3,7 +3,7 @@
 namespace App\Http\Controllers\Api;
 namespace App\Http\Controllers\Api;
 
 
 
 
-use App\Service\Oa\OaService;
+use App\Service\Oa\ExcelService;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 
 
 
 
@@ -18,7 +18,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $userData = $request->userData->toArray();
         $userData = $request->userData->toArray();
         list($status,$data) = $service->oaList($request->all());
         list($status,$data) = $service->oaList($request->all());
 
 
@@ -34,7 +34,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaDetail($request->all());
         list($status,$data) = $service->oaDetail($request->all());
 
 
@@ -50,7 +50,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaAdd($request->all());
         list($status,$data) = $service->oaAdd($request->all());
 
 
@@ -66,7 +66,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaEdit($request->all());
         list($status,$data) = $service->oaEdit($request->all());
 
 
@@ -82,7 +82,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaDel($request->all());
         list($status,$data) = $service->oaDel($request->all());
 
 
@@ -99,7 +99,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->createOaOrder($request->all());
         list($status,$data) = $service->createOaOrder($request->all());
 
 
@@ -117,7 +117,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaOrderList($request->all());
         list($status,$data) = $service->oaOrderList($request->all());
 
 
@@ -132,7 +132,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaOrderDetail($request->all(),$user);
         list($status,$data) = $service->oaOrderDetail($request->all(),$user);
 
 
@@ -146,7 +146,7 @@ class OaController extends BaseController
     public function oaCheck(Request $request)
     public function oaCheck(Request $request)
     {
     {
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaCheck($request->all(),$user);
         list($status,$data) = $service->oaCheck($request->all(),$user);
 
 
@@ -162,7 +162,7 @@ class OaController extends BaseController
     {
     {
 
 
 
 
-        $service = new OaService();
+        $service = new ExcelService();
         $user = $request->userData->toArray();
         $user = $request->userData->toArray();
         list($status,$data) = $service->oaSubType($request->all());
         list($status,$data) = $service->oaSubType($request->all());
 
 

+ 75 - 0
app/Service/Excel/ExcelService.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace App\Service\Excel;
+
+
+use App\Exports\MyExport;
+use App\Model\Header_ext;
+use App\Model\SysMenu;
+use Illuminate\Support\Facades\DB;
+use App\Service\Service;
+
+/**
+ * 相关
+ * @package App\Models
+ */
+class ExcelService extends Service
+{
+
+
+
+    public function excelExport($request){
+        $data = $request->all();
+        $menu_id = $data['menu_id'];
+        $list = $this->excelGetData($menu_id,$request);
+        $list_key = Header_ext::where('menu_id',$menu_id)->select('key','value','type')->orderBy('sort','asc')->get()->toArray();
+
+        $excel_top_list = [];
+        $excel_list = [];
+        foreach ($list_key as $v){
+            $excel_top_list[] = $v['value'];
+        }
+        $excel_list[] = $excel_top_list;
+        foreach ($list as $v){
+            $detail = [];
+            foreach ($list_key as $vv){
+                if($vv['type'] === '2') $value = date('Y-m-d H:i:s',$v[$vv['key']]);
+                else $value = $v[$vv['key']];
+                $detail[] = $value;
+            }
+            $excel_list[] = $detail;
+        }
+        $myExport = new MyExport();
+        $data = $myExport->commonExport(['data'=>$excel_list]);
+
+        return [true,$data];
+    }
+
+
+    public function excelGetData($menu_id,$request){
+        $api = SysMenu::where('id',$menu_id)->value('api');
+        $path = $this->getMenu();
+        $control = '\\'.$path[$api]["controller"];
+        $act = $path[$api]["act"];
+        $new = new $control();
+        $detail = $new->$act($request);
+//        if(!isset($detail['data']['data'][0])) $detail['data']['data'][0] = $detail['data'];
+        return $detail['data']['data'];
+    }
+
+    public function getMenu(){
+        $app = App();
+        $routes = $app->routes->getRoutes();
+        $path = [];
+        foreach ($routes as $k => $value) {
+            if(!isset($value->action['controller'])) continue;
+            $act = explode('@',$value->action['controller']);
+            if(!isset($act[1])) continue;
+            $path[$value->uri]['act'] = $act[1];
+            $path[$value->uri]['controller'] = $act[0];
+        }
+
+        return $path;
+    }
+
+}

+ 1 - 0
routes/api.php

@@ -25,6 +25,7 @@ Route::any('uploadFiles/{file_name}', 'Api\FileUploadController@getFile');
 
 
 Route::group(['middleware'=> ['checkLogin']],function ($route){
 Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('getHeaderSetting', 'Api\HeaderWordController@getHeaderSettings');
     $route->any('getHeaderSetting', 'Api\HeaderWordController@getHeaderSettings');
+    $route->any('excelExport', 'Api\ExcelController@excelExport');
     $route->any('HeaderSettingsAdd', 'Api\HeaderWordController@add');
     $route->any('HeaderSettingsAdd', 'Api\HeaderWordController@add');
     $route->any('HeaderSettingsDetail', 'Api\HeaderWordController@detail');
     $route->any('HeaderSettingsDetail', 'Api\HeaderWordController@detail');