service = app('OrderPackageCommoditiesService'); $this->orderService = app('OrderService'); $this->orderHeaderService = app('OracleDocOrderHeaderService'); } public function testRegroupOrderCommodities() { $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('AddTime')->first(); if(!$orderHeader){ $this->assertNull($orderHeader); return ; } $orderHeaders = OracleDOCOrderHeader::query()->where('sostatus',99) ->where('addtime','>=',$orderHeader->addtime) ->get(); $this->orderService->syncOrder($orderHeaders); $order_nos = data_get($orderHeaders,'*.orderno'); $order_commodities = OrderPackageCommodities::query()->with(['commodity','package.order'])->whereHas('package',function($query)use($order_nos){ $query->whereHas('order',function ($query)use($order_nos){ $query->whereIn('code',$order_nos); }); })->get(); $params = $this->service->regroupOrderCommodities($order_commodities); $_params = []; $orderHeaders->each(function($order_header)use(&$_params){ $order_header->actAllocationDetails->each(function($detail)use(&$_params){ $order_no = $detail->orderno; $logistic_number = $detail->picktotraceid; $sku = $detail->sku; $key = ' orderno='.$order_no.' logsitic_number='.$logistic_number.' sku='.$sku.' '; if(isset($_params[$key])){ $_params[$key]['amount'] += $detail->qty_each; }else{ $_params[$key] = [ 'orderno'=>$order_no, 'logistic_number'=>$logistic_number, 'sku' => $sku, 'amount' => $sku, 'owner_code' => $detail->customerid ]; } }); }); foreach ($_params as $key=>$param) { $this->assertNotEmpty($params[$key]); } } }