ソースを参照

问题件导出 应送达时间的显示 提货日期,应送达时间,签收时间 导出不显示时分秒

ajun 5 年 前
コミット
49dafe47c4

+ 69 - 8
app/Http/Controllers/OrderTrackingController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Logistic;
+use App\OrderTracking;
 use App\Services\LogService;
 use App\Services\OrderTrackingService;
 use App\Services\OwnerService;
@@ -60,16 +61,76 @@ class OrderTrackingController extends Controller
             return redirect(url('/'));
         /** @var OrderTrackingService $service */
         $service = app(OrderTrackingService::class);
-        $sql = $service->getSql($request->input());
+        $orderTrackings = $service->getOrderTrackings($request->input());
+//        $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'];
+        $rule = ["pick_up_at"=> "mysqlDate",'planning_sent_at'=>"mysqlDate"];
+
         $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",'planning_sent_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']);
+        $mergeColumn = ['A','B','C','D','E','F','J','N','P','P','Q','R','S','T','U','V','M'];
+        $mergeRow = [];
+        $list=[];
+        $start_row = 0;
+        $order_client_code_temp = '';
+        $row_count = 0;
+        foreach ($orderTrackings as $index=> $orderTracking) {
+            if($order_client_code_temp==''){
+                $order_client_code_temp=$orderTracking->order_client_code;
+                $row_count=1;
+            }else if($order_client_code_temp==$orderTracking->order_client_code){
+                $row_count++;
+                if($index == $orderTrackings->count()-1){
+                    if($row_count>1){
+                        $end_row=$index+2;
+                        $start_row = $index+3-$row_count;
+                        $mergeRow[(string)($start_row)]=(string)($end_row);
+                    }
+                }
+            }else if($order_client_code_temp!=$orderTracking->order_client_code){
+                if($row_count>1){
+                    $end_row=$index+1;
+                    $start_row = $index+2-$row_count;
+                    $mergeRow[(string)($start_row)]=(string)($end_row);
+                }
+                $start_row=$index+2;
+                $row_count=1;
+                $order_client_code_temp = $orderTracking->order_client_code;
+            }
+            $order_client_code = $orderTracking->web_order_number?'':$orderTracking->order_client_code;
+            $web_order_number = $orderTracking->web_order_number??'';
+            $pick_up_at=str_split($orderTracking->pick_up_at,10)[0];
+            $planning_sent_at=str_split($orderTracking->planning_sent_at,10)[0];
+            $signed_at=str_split($orderTracking->signed_at,10)[0];
+            $list[]=[
+                $orderTracking->owner->name ?? '',
+                $order_client_code,
+                $web_order_number,
+                $pick_up_at=='0000-00-00'?'':$pick_up_at,
+                $orderTracking->sala,
+                $orderTracking->client,
+                $orderTracking->commodities->commodity->sku ?? '',
+                $orderTracking->commodities->commodity->name ?? '',
+                $orderTracking->commodities->amount ?? '',
+                $orderTracking->order_remark,
+                $orderTracking->gross_weight,
+                $orderTracking->bulk,
+                $orderTracking->pallet_total,
+                $orderTracking->commodities->package->order->logistic->name ??'',
+                $orderTracking->commodities->package->logistic_number??'',
+                $orderTracking->commodities->package->order->city ?? '',
+                $planning_sent_at=='0000-00-00'?'':$planning_sent_at,
+                $orderTracking->is_on_duty_shift,
+                $orderTracking->is_arrival,
+                $signed_at=='0000-00-00'?'':$signed_at,
+                $orderTracking->receive_bill_status,
+                $orderTracking->remark,
+            ];
+        }
+//        dd($mergeRow,$list );
+        $post=Http::post(config('go.export.url'),['type'=>'base','data'=>json_encode(['row'=>$row,'list'=>$list,'mergeColumn'=>$mergeColumn,'mergeRow'=>$mergeRow],JSON_UNESCAPED_UNICODE),
+            'createFormat'=>'merge']);
+
         if ($post->status() == 500){
             throw new Exception($post->header("Msg"));
         }

+ 9 - 0
app/Services/OrderTrackingService.php

@@ -135,6 +135,15 @@ class OrderTrackingService
                ->selectRaw('owners.name owners_name')
             ->sql();
     }
+
+    public function getOrderTrackings($params)
+    {
+        if($params['data'] ?? false){
+            $params['ids'] = $params['data'];
+        }
+        return  $this->getConditionQuery($params)->get();
+    }
+
     /**
      * @param $startData
      */