where('shop_id', '<>', 8) ->with([ 'shop:id,name', 'items:id,business_order_id,goods_name,goods_number,external_sku_id' ]) ->orderByDesc('confirm_at') ->filter() ->paginate($request->get('per_page')); return BusinessOrderResource::collection($businessOrders); } public function exportOrderBlank(Request $request) { $shopId = $request->get('shop_id'); $startNo = $request->get('start_no'); $endNo = $request->get('end_no'); $startTime = BusinessOrder::query()->where('shop_id', $shopId)->where('participate_no', $startNo)->value('confirm_at'); $endTime = BusinessOrder::query()->where('shop_id', $shopId)->where('participate_no', $endNo)->value('confirm_at'); $orders = BusinessOrder::query() ->with([ 'items:id,business_order_id,external_sku_id,goods_number,goods_name', 'items.goodsSkuLocation:id,external_sku_id,location,goods_name' ]) ->where('shop_id', $shopId) ->where('confirm_at', '>=', DateTimeUtils::getMicroTime($startTime)) ->where('confirm_at', '<=', DateTimeUtils::getMicroTime($endTime)) ->where('after_sales_status', 0) ->where('cancel_status', 0) ->where('is_supplier', 1) ->orderByDesc('confirm_at') ->get(['id', 'participate_no']); $distribution = []; $no = []; foreach ($orders as $key => $order) { $no[] = $order->participate_no; foreach ($order->items as $item) { $item = $item->toArray(); if (empty($item['external_sku_id'])) { continue; } $local = $item['goods_sku_location'] ? $item['goods_sku_location']['location'] : '货架未找到'; $index = $key + 1; $index = 'P' . $index . "({$order->participate_no}) * " . $item['goods_number']; [$goodsCode, $skuCode] = explode('_', $item['external_sku_id']); if (isset($distribution[$item['external_sku_id']])) { $distribution[$item['external_sku_id']]['p'][] = $index; $distribution[$item['external_sku_id']]['num'] += $item['goods_number']; } else { $distribution[$item['external_sku_id']] = [ 'p' => [$index], 'local' => $local, 'num' => $item['goods_number'], 'goods_name' => $item['goods_name'], 'goods_code' => $goodsCode, ]; } } } $shopName = Shop::query()->where('id', $shopId)->value('name'); ob_end_clean(); return Excel::download(new OrderBlankExport($shopName, $no, $distribution), $shopName . date('Y-m-d H:i:s') . '.xlsx'); } public function groupActivity(Request $request, $shopId) { $todayTime = Carbon::today()->timestamp; $todayTime = DateTimeUtils::getMicroTime($todayTime); return BusinessOrder::query() ->where('shop_id', $shopId) ->where('confirm_at', '>=', $todayTime) ->groupBy(['activity_no', 'activity_title']) ->get(['activity_title', 'activity_no']) ->toArray(); } }