where('approver_id', $request->user->uid) ->where('status', 'approved') ->count('id'); $pending = Db::table('approval_records') ->where('approver_id', $request->user->uid) ->where('status', 'pending') ->count('id'); $unclaimed = Db::table('fin_payment_apply') ->where('doc_user_id', $request->user->uid) ->where('receipt_id', 0) ->count('id'); $claimed = Db::table('fin_payment_apply') ->where('doc_user_id', $request->user->uid) ->where('receipt_id', '>', 0) ->count('id'); $twentyFourHoursAgo = time() - (24 * 3600); $timeout = Db::table('fin_payment_apply') ->where('doc_user_id', $request->user->uid) ->where('fin_payment_apply.submit_files', '') ->where('receipt_id', '>', 0) ->where('claimed_at', '<', $twentyFourHoursAgo) ->count('id'); return $this->success([ 'approved' => $approved, 'pending' => $pending, 'unclaimed' => $unclaimed, 'claimed' => $claimed, 'timeout' => $timeout ]); } // 曲线 public function curve() { $groupIds = Db::table('user_group') ->where('scenario_code', 'stock_orders') ->pluck('id'); $userIds = Db::table('user_group_members') ->whereIn('group_id', $groupIds) ->pluck('user_id'); $list = Db::table('stock_orders') ->join('user', 'stock_orders.salesperson_id', '=', 'user.id') ->whereIn('stock_orders.salesperson_id', $userIds) ->whereIn('stock_orders.approval_status', [0, 1, 2]) ->whereNull('stock_orders.deleted_at') ->groupBy('stock_orders.salesperson_id', 'user.name') ->selectRaw('user.name, count(*) as count') ->pluck('count', 'name') ->toArray(); $optionType = []; $counts = []; foreach ($list as $key=>$val) { $optionType[] = $key; $counts[] = $val; } $arr = [ "optionType" => $optionType, "counts" => $counts ]; return $this->success($arr); } // 审批 public function approval(Request $request) { $list = Db::table('approval_records as ar') ->join('approval_instances as ai', 'ar.instance_id', '=', 'ai.id') ->join('stock_orders as so', 'ai.biz_id', '=', 'so.id') ->where('ar.approver_id', $request->user->uid) ->where('ar.status', 'pending') ->where('ai.flow_type', 'stock_orders') ->where('ai.biz_type', 'stock_orders') ->where('ai.status', 'processing') ->whereNull('so.deleted_at') ->select( 'so.order_no', 'ai.created_at as approval_created_at', 'so.salesperson_snapshot as salesperson_name' ) ->get() ->map(function($item) { return [ 'order_no' => $item->order_no, 'approval_created_at' => date('Y-m-d H:i:s', strtotime($item->approval_created_at)), // 格式化时间 'salesperson_name' => $item->salesperson_name ]; }) ->toArray(); return $this->success($list); } // 认领 public function claim(Request $request) { $type = $request->get('type'); if ($type == 'unclaimed') { $list = Db::table('fin_payment_apply') ->join('sys_currency', 'fin_payment_apply.currency_id', '=', 'sys_currency.id') ->where('fin_payment_apply.doc_user_id', $request->user->uid) ->where('fin_payment_apply.receipt_id', 0) ->get([ 'fin_payment_apply.id', 'fin_payment_apply.created_at', 'fin_payment_apply.doc_user_id', 'fin_payment_apply.payment_entity', 'fin_payment_apply.payment_account', 'fin_payment_apply.currency_id', 'sys_currency.currency_name', 'fin_payment_apply.amount', 'fin_payment_apply.apply_no' ]); foreach ($list as $key => &$val) { $val->created_at = date('Y-m-d H:i:s', $val->created_at); } unset($val); } else { $twentyFourHoursAgo = time() - (24 * 3600); $list = Db::table('fin_payment_apply') ->join('user', 'fin_payment_apply.doc_user_id', '=', 'user.id') ->join('sys_currency', 'fin_payment_apply.currency_id', '=', 'sys_currency.id') ->where('fin_payment_apply.doc_user_id', $request->user->uid) ->where('fin_payment_apply.submit_files', '') ->where('fin_payment_apply.receipt_id', '>', 0) ->where('fin_payment_apply.claimed_at', '<', $twentyFourHoursAgo) ->get([ 'fin_payment_apply.id', 'fin_payment_apply.created_at', 'fin_payment_apply.doc_user_id', 'user.name', 'fin_payment_apply.payment_entity', 'fin_payment_apply.payment_account', 'fin_payment_apply.currency_id', 'sys_currency.currency_name', 'fin_payment_apply.amount', 'fin_payment_apply.apply_no' ]); foreach ($list as $key => &$val) { $stockIds = Db::table('fin_payment_stock') ->where('payment_apply_id', $val->id) ->pluck('stock_id') ->toArray(); $val->order_no = Db::table('stock_orders') ->whereIn('id', $stockIds) ->pluck('order_no') ->toArray(); $val->created_at = date('Y-m-d H:i:s', $val->created_at); } unset($val); } return $this->success($list); } }