Переглянути джерело

追踪件修改 文件追踪件导出合并托盘合计 改用go的通用导出

ajun 5 роки тому
батько
коміт
d4758df290

+ 21 - 15
app/Http/Controllers/OrderTrackingController.php

@@ -3,20 +3,13 @@
 namespace App\Http\Controllers;
 
 use App\Logistic;
-use App\OracleActAllocationDetails;
-use App\OracleBasCustomer;
-use App\OracleDOCOrderHeader;
-use App\Order;
-use App\OrderTracking;
-use App\OrderTrackingOwner;
-use App\Owner;
-use App\Services\CommodityService;
 use App\Services\LogService;
 use App\Services\OrderTrackingService;
 use App\Services\OwnerService;
+use Exception;
 use Illuminate\Http\Request;
-use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\Gate;
+use Illuminate\Support\Facades\Http;
 
 class OrderTrackingController extends Controller
 {
@@ -65,12 +58,25 @@ class OrderTrackingController extends Controller
     {
         if (!Gate::allows('订单管理-跟踪'))
             return redirect(url('/'));
-        $service = app('orderTrackingService');
-        if($request->filled('data')){
-            $request['ids'] = $request->input('data');
-            $request['data'] = null;
+        /** @var OrderTrackingService $service */
+        $service = app(OrderTrackingService::class);
+        $sql = $service->getSql($request->input());
+        $row = ['公司','订单号','WEB+订单号','提货日期','销售','客户','SKU','物料描述','数量','订单备注','重量','体积',
+            '托盘合计','运输方式','运输单号','到达城市','应送达时间','是否赶上卡班','到货情况','签收日期','签收单情况','备注'];
+        $column = ['owners_name','order_client_code','web_order_number','pick_up_at','sale','client','sku','sku_name','amount','order_remark',
+            'gross_weight','bulk','pallet_total','logistic_name','logistic_number','city','planning_sent_at','is_on_duty_shift','is_arrival','signed_at','receive_bill_status','remark'];
+        $mergeColumn = ['M'];
+        $rule = ["pick_up_at"=> "mysqlDate"];
+        $post = Http::post(config('go.export.url'),['type'=>'unify','sql'=>$sql, 'connection'=>'mysql','rule' => json_encode($rule),
+            'row'=>json_encode($row,JSON_UNESCAPED_UNICODE), 'column'=>json_encode($column),
+            'mergeColumn'=>json_encode($mergeColumn),'datum'=>'pick_up_at','createFormat'=>'merge']);
+        if ($post->status() == 500){
+            throw new Exception($post->header("Msg"));
         }
-        return $service->export($request->input());
-    }
+        return response($post,200, [
+            "Content-type"=>"application/octet-stream",
+            "Content-Disposition"=>"attachment; filename=订单跟踪件-".date('ymdHis').'.xlsx',
+        ]);
 
+    }
 }

+ 23 - 54
app/Services/OrderTrackingService.php

@@ -3,7 +3,6 @@
 namespace App\Services;
 
 use App\Exports\Export;
-use App\LogisticTiming;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackageCommodities;
@@ -38,7 +37,8 @@ class OrderTrackingService
             $query->with(['commodity', 'package.order.logistic']);
         },])->whereHas('owner', function ($query) use ($owner_ids) {
             $query->whereIn('id', $owner_ids); //货主
-        })->orderByDesc('created_at');
+        })->orderByDesc('order_trackings.created_at')
+        ->orderBy('order_trackings.order_client_code');
 
         $queryParam = [
             'start_at' => ['alias' => 'pick_up_at', 'startDate' => ' 00:00:00'],
@@ -94,9 +94,8 @@ class OrderTrackingService
 
         if ($params['ids'] ?? false) {
             $ids = explode(',', $params['ids']);
-            $query->whereIn('id', $ids);
+            $query->whereIn('order_trackings.id', $ids);
         }
-
         return $query;
     }
 
@@ -105,59 +104,29 @@ class OrderTrackingService
         return $this->getConditionQuery($params)->paginate($params['paginate'] ?? 50);
     }
 
-    public function export($params)
+    public function getSql($params)
     {
-        if ($params['data'] ?? false) { // 按id
-            $trackOrders = $this->getConditionQuery($params);
-        } else {
-            $trackOrders = $this->getConditionQuery($params);
+        if($params['data'] ?? false){
+            $params['ids'] = $params['data'];
         }
-        return $this->downLoadAsExec($trackOrders->get());
+        $order_tracking_colnums = "case order_trackings.order_client_code when  order_trackings.web_order_number then '' when order_trackings.order_client_code then  order_trackings.order_client_code end order_client_code,";
+        $order_tracking_colnums .= 'order_trackings.web_order_number,order_trackings.pick_up_at,order_trackings.sale,order_trackings.client,order_trackings.order_remark,order_trackings.gross_weight,order_trackings.bulk,';
+        $order_tracking_colnums .= 'order_trackings.pallet_total,order_trackings.planning_sent_at,order_trackings.is_on_duty_shift,order_trackings.is_arrival,order_trackings.signed_at,order_trackings.receive_bill_status,order_trackings.remark';
+        return  $this->getConditionQuery($params)->selectRaw($order_tracking_colnums)
+            ->leftJoin('order_package_commodities','order_trackings.order_package_commodity_id','order_package_commodities.id')
+                ->selectRaw('order_package_commodities.amount amount')
+            ->leftJoin('order_packages','order_package_commodities.order_package_id','order_packages.id')
+                ->selectRaw('order_packages.logistic_number logistic_number')
+            ->leftJoin('orders','order_packages.order_id','orders.id')
+                ->selectRaw('orders.city city')
+            ->leftJoin('logistics','orders.logistic_id','logistics.id')
+                ->selectRaw("case logistics.code when 'ZT' then '新杰物流' else  logistics.name end  logistic_name")
+            ->leftJoin('commodities','order_package_commodities.commodity_id','commodities.id')
+                ->selectRaw('commodities.sku sku,commodities.name sku_name')
+            ->leftJoin('owners','orders.owner_id','owners.id')
+               ->selectRaw('owners.name owners_name')
+            ->sql();
     }
-
-    private function downLoadAsExec($trackOrders)
-    {
-        $row = [[
-            'owner_name' => '公司', 'order_client_code' => '订单号', 'web_order_number' => 'WEB+订单号', 'pick_up_at' => '提货日期', 'sale' => '销售',
-            'client' => '客户', 'sku' => 'sku', 'sku_name' => '物料描述', 'sku_amount' => '数量', 'order_remark' => '订单备注',
-            'gross_weight' => '重量', 'bulk' => '体积', 'pallet_total' => '托盘合计', 'package_logistic' => '运输方式', 'package_logistic_number' => '运输单号',
-            'order_city' => '到达城市', 'planning_sent_at' => '应送达时间', 'is_on_duty_shift' => '是否赶上卡班', 'is_arrival' => '到货情况', 'signed_at' => '签收日期',
-            'receive_bill_status' => '签收单情况', 'remark' => '备注']];
-
-        $list = [];
-        $i = 0;
-
-        foreach ($trackOrders as $trackOrder) {
-            $logisticName = $trackOrder['commodities']['package']['order']['logistic']['name'];
-            $logistic_number = $trackOrder['commodities']['package']['logistic_number'];
-            $list[$i]['owner_name'] = $trackOrder['owner']['name'] ?? '';
-            $list[$i]['order_client_code'] = $trackOrder['web_order_number'] ? '' : $trackOrder['order_client_code'];
-            $list[$i]['web_order_number'] = $trackOrder['web_order_number'] ?? '';
-            $list[$i]['pick_up_at'] = $trackOrder['pick_up_at'] ?? '';
-            $list[$i]['sale'] = $trackOrder['sale'] ?? '';
-            $list[$i]['client'] = $trackOrder['client'] ?? '';
-            $list[$i]['sku'] = $trackOrder['commodities']['commodity']['sku'];
-            $list[$i]['sku_name'] = $trackOrder['commodities']['commodity']['name'];
-            $list[$i]['sku_amount'] = $trackOrder['commodities']['amount'];
-            $list[$i]['order_remark'] = $trackOrder['order_remark'];
-            $list[$i]['gross_weight'] = $trackOrder['gross_weight'];
-            $list[$i]['bulk'] = $trackOrder['bulk'];
-            $list[$i]['pallet_total'] = $trackOrder['pallet_total'];
-            $list[$i]['package_logistic'] = $trackOrder['commodities']['package']['order']['logistic']['name'];
-            $list[$i]['package_logistic_number'] = $logisticName  == '新杰物流' ?   ( $trackOrder['web_order_number'] ? $trackOrder['web_order_number'] : $trackOrder['order_client_code']) : $logistic_number;
-            $list[$i]['order_city'] = $trackOrder['commodities']['package']['order']['city'];
-            $list[$i]['planning_sent_at'] = $trackOrder['planning_sent_at'];
-            $list[$i]['is_on_duty_shift'] = $trackOrder['is_on_duty_shift'];
-            $list[$i]['is_arrival'] = $trackOrder['is_arrival'];
-            $list[$i]['signed_at'] = $trackOrder['signed_at'];
-            $list[$i]['receive_bill_status'] = $trackOrder['receive_bill_status'];
-            $list[$i]['remark'] = $trackOrder['remark'];
-            $i++;
-        }
-
-        return Excel::download(new Export($row, $list), date('YmdHis', time()) . '-订单跟踪.xlsx');
-    }
-
     /**
      * @param $startData
      */