service = new SalesAnnualTargetsService(); } public function total(Request $request) { $param = $request->all(); if (empty($param['year'])) { return $this->error('year不能为空'); } $data = SalesAnnualTargets::select('annual_target','corp_id') ->whereNull('user_id') ->where('year',$param['year']) ->orderBy('corp_id') ->get() ->toArray(); foreach ($data as &$value) { $where = []; $where[] = ['year', '=', $param['year']]; if (!empty($value['corp_id'])) { $where[] = ['corp_id', '=', $value['corp_id']]; } $value['achieved'] = SalesMonthlyTargets::where($where)->sum('achieved'); $value['progress'] = empty($value['annual_target'])?'100%':number_format(($value['achieved']/$value['annual_target']*100),2) . '%'; $value['corp_name'] = empty($value['corp_id'])?'集团':Corp::where(['id' => $value['corp_id']])->value('name'); } return $this->success($data); } public function ranking(Request $request){ $param = $request->all(); $year = empty($param['year']) ? date('Y') : $param['year']; $where = []; $where[] = ['year', '=', $year]; $ranking = SalesMonthlyTargets::select('corp_id', 'user_id', Db::raw('SUM(achieved) AS achieved')) ->where($where) ->groupBy('corp_id', 'user_id') ->orderBy('achieved', 'desc') ->get(); foreach ($ranking as $key => $value) { $ranking[$key]['corp_name'] = Corp::where(['id' => $value['corp_id']])->value('name'); $ranking[$key]['user_name'] = User::where(['id' => $value['user_id']])->value('name'); } return $this->success($ranking); } public function achievedUserByMonth(Request $request){ $param = $request->all(); $year = empty($param['year']) ? date('Y') : $param['year']; $where = []; $where[] = ['year', '=', $year]; $ranking = SalesMonthlyTargets::select('corp_id', 'user_id', 'month', Db::raw('SUM(achieved) AS achieved')) ->where($where) ->groupBy('corp_id', 'user_id', 'month') ->orderBy('month', 'asc') ->get(); $result = []; foreach ($ranking as $key => $value) { $result[$value['user_id']]['month'][] = $value; $ranking[$key]['corp_name'] = Corp::where(['id' => $value['corp_id']])->value('name'); $ranking[$key]['user_name'] = User::where(['id' => $value['user_id']])->value('name'); } foreach ($result as $key => $value) { $result[$key]['user_name'] = User::where(['id' => $key])->value('name'); } return $this->success($result); } /** * 个人年度目标完成度(百分比) * @param Request $request * @return \support\Response */ public function userProgressh(Request $request){ $param = $request->all(); $year = empty($param['year']) ? date('Y') : $param['year']; $where = []; $where[] = ['year', '=', $year]; $achieved = SalesMonthlyTargets::select('corp_id', 'user_id', Db::raw('SUM(achieved) AS achieved')) ->where($where) ->groupBy('corp_id', 'user_id') ->orderBy('achieved', 'desc') ->get() ->toArray(); $sort = []; foreach ($achieved as $key => $value) { $achieved[$key]['corp_name'] = Corp::where(['id' => $value['corp_id']])->value('name'); $achieved[$key]['user_name'] = User::where(['id' => $value['user_id']])->value('name'); $target = SalesAnnualTargets::where(['user_id' => $value['user_id']])->value('annual_target'); $achieved[$key]['progressh'] = empty($target) ? 0 : round(($value['achieved'] / $target) * 100, 2); $sort[] = $achieved[$key]['progressh']; } array_multisort($sort, SORT_DESC, SORT_NUMERIC, $achieved); foreach ($achieved as $key => $value) { $achieved[$key]['progressh'] = $value['progressh'].'%'; } return $this->success($achieved); } /** * 个人累积完成数量(辆) * @param Request $request * @return \support\Response */ public function userAchieved(Request $request){ $param = $request->all(); $year = empty($param['year']) ? date('Y') : $param['year']; $where = []; $where[] = ['year', '=', $year]; $achieved = SalesMonthlyTargets::select('corp_id', 'user_id', Db::raw('SUM(achieved) AS achieved')) ->where($where) ->groupBy('corp_id', 'user_id') ->orderBy('achieved', 'desc') ->get() ->toArray(); foreach ($achieved as $key => $value) { $achieved[$key]['corp_name'] = Corp::where(['id' => $value['corp_id']])->value('name'); $achieved[$key]['user_name'] = User::where(['id' => $value['user_id']])->value('name'); $target = SalesAnnualTargets::where(['user_id' => $value['user_id']])->value('annual_target'); $achieved[$key]['annual_target'] = empty($target)?0:$target; } return $this->success($achieved); } }