middleware('auth'); } public function index(Request $request, OrderPackageFilters $filters) { /** @var UserService $userService */ $userService = app('UserService'); /** @var array $owner_ids */ $owner_ids = $userService->getUserHasOwners(auth()->id()); $owner_ids = array_map(function ($item) { return $item = (int)$item; }, $owner_ids); $paginateParams = $request->input(); $orderPackages = OrderPackage::query() ->filter($filters) ->whereIn('owner_id', $owner_ids) //订单取消的不显示 ->whereIn('order_id', function ($query) { $query->from('orders')->select('id')->where('wms_status', '!=','订单取消'); }) ->with([ 'order.logistic', 'orderPackageExpressRoute', 'order.batch:id,wms_type', 'order.OracleDOCOrderHeader:orderno,notes,WaveNo', 'rejectedBill' => function ($query) { $query->select('id', 'logistic_number', 'logistic_number_return')->where('logistic_number', '原单退回'); }, 'orderPackageRemarks' => function ($query) { $query->with('user')->orderByDesc('created_at'); }, 'order.owner', 'order.issue' => function ($query) { $query->with(['issueType', 'logs' => function ($query) { $query->with('user')->orderBy('created_at', 'DESC'); }]); }]) ->orderByDesc('id') ->simplePaginate($request->paginate ?? 50); $logistics = Logistic::all(); $owners = app("OwnerService")->getIntersectPermitting(); return view('package.logistic.index', compact('orderPackages', 'logistics', 'owners', 'paginateParams')); } /** * 获取查询条件下的总条数 * @param Request $request * @param OrderPackageFilters $filters * @return array */ public function getTotal(Request $request, OrderPackageFilters $filters): array { /** @var UserService $userService */ $userService = app('UserService'); /** @var array $owner_ids */ $owner_ids = $userService->getPermittingOwnerIds(auth()->user()); $owner_ids = array_map(function ($item) { return $item = (int)$item; }, $owner_ids); $total = OrderPackage::query() ->selectRaw("count(*) as total") ->filter($filters) ->whereIn('owner_id', $owner_ids) ->first(); return ['success' => true, 'data' => ['total' => $total->total]]; } public function update(Request $request) { $data = []; if ('无' == $request->input('exception_type')) { $data['exception_type'] = $request->input('exception_type'); $data['exception'] = "否"; } else { $data['exception_type'] = $request->input('exception_type'); } OrderPackage::query()->where('id', $request['id'])->update($data); //更新统计数据 event(new UpdateOrderPackageExceptionListenerEvent([$request['id']])); } public function batchUpdate(Request $request) { $status = $request->input('status'); if (!empty($status)) { $data = [ 'status' => OrderPackage::switchStatus($status), //标记为手动更新 'is_manual_update' => true, ]; if ($status === '已签收') { $data['exception_status'] = 0; } OrderPackage::query()->whereIn('logistic_number', $request->input('logistic_numbers'))->update($data); } else if (!empty($request->input('exceptionStatus'))) { OrderPackage::query()->whereIn('logistic_number', $request->input('logistic_numbers'))->update([ 'exception_status' => OrderPackage::switchExceptionStatus($request->input('exceptionStatus')), //标记为手动更新 'is_manual_update' => true, ]); } } /** * @throws Exception */ public function export(Request $request, OrderPackageFilters $filters) { ini_set('max_execution_time', 300); /** @var UserService $userService */ $userService = app('UserService'); $owner_ids = $userService->getPermittingOwnerIds(auth()->user()); $query = OrderPackage::query() ->whereIn('owner_id', $owner_ids) //订单取消的不显示 ->whereIn('order_id', function ($query) { $query->from('orders')->select('id')->where('wms_status', '!=','订单取消'); }) ->filter($filters) ->with([ 'order.logistic', 'orderPackageExpressRoute', 'rejectedBill' => function ($query) { $query->select('id', 'logistic_number', 'logistic_number_return')->where('logistic_number', '原单退回'); }, 'orderPackageRemarks' => function ($query) { $query->with('user')->orderByDesc('created_at'); }, 'order.owner', 'order.issue' => function ($query) { $query->with(['issueType', 'logs' => function ($query) { $query->with('user')->orderBy('created_at', 'DESC'); }]); }]) ->orderByDesc('id'); if ($request->exists('checkAllSign')) { $orderPackages = $query->orderByDesc('id')->get(); } else { $orderPackages = $query ->whereIn('logistic_number', explode(',', $request['data'])) ->orderByDesc('id')->get(); } $row = [ '单号', '状态', '快递公司', '货主', '省份', '复核时间', '收货时间', '称重时间', '快递路由', '退件状态', '订单备注', '客服备注', '情况说明', '问题类别', '波次规则', '波次号', '说明', '操作者', '时间', ]; $json = []; foreach ($orderPackages as $orderPackage) { $transfer_status = ""; if ($orderPackage->orderPackageExpressRoute != null) { if (is_array($orderPackage->orderPackageExpressRoute->order_package_express_routes) && !empty($orderPackage->orderPackageExpressRoute->order_package_express_routes)) { foreach ($orderPackage->orderPackageExpressRoute->order_package_express_routes as $transfer) { $transferItemStr = ""; $transferItemStr = $transferItemStr . $transfer['accept_address'] ?? '' . " " . $transfer['remark'] ?? '' . " " . $transfer['accept_time'] ?? ''; $transfer_status = $transfer_status . $transferItemStr . ",\r\n"; } } } $remark = ""; if (!empty($orderPackage->orderPackageRemarks)) { foreach ($orderPackage->orderPackageRemarks as $remarkItem) { $remark = $remark . $remarkItem->content ?? '' . '-' . $remarkItem->user->name ?? '' . '-' . $remarkItem->created_at ?? '' . ",\r\n"; } } $logsContent = ""; $users = ""; $logCreatedAt = ""; if ($orderPackage->order && $orderPackage->order->issue) { foreach ($orderPackage->order->issue->logs as $log) { $logsContent = $logsContent . $log->content . ",\r\n"; $name = ''; if (!empty($log->user)) { $name = $log->user->name; } $users = $users . $name . ",\r\n"; $logCreatedAt = $logCreatedAt . $log->created_at . ",\r\n"; } } $data = [ $orderPackage->logistic_number ?? '',//单号 $orderPackage->status ?? '',//状态 $orderPackage->order->logistic->name ?? '',//快递公司 $orderPackage->order->owner->name ?? '',//货主 $orderPackage->order->province ?? '',//省份 $orderPackage->sent_at ? $orderPackage->sent_at->toDateTimeString() : '',//复核时间 $orderPackage->received_at ? $orderPackage->received_at->toDateTimeString() : '',//收货时间 $orderPackage->weighed_at ? $orderPackage->weighed_at->toDateTimeString() : '',//称重时间 $transfer_status ?? '',//快递路由 empty($orderPackage->rejectedBill) ? '无' : '有',//退件状态 $orderPackage->order->OracleDOCOrderHeader->notes ?? '',//订单备注 $remark ?? '',//客服备注 $orderPackage->order->issue->result_explain ?? '',//情况说明 $orderPackage->order->issue->issueType->name ?? '',//问题类别 $orderPackage->order->batch->wms_type ?? '',//波次规则 $orderPackage->order->OracleDOCOrderHeader->waveno ?? '',//波次号 $logsContent ?? '',//说明 $users ?? '',//操作者 $logCreatedAt ?? '',//时间 ]; $json[] = $data; } return Export::make($row, $json, "包裹快递"); } }