| xqd
@@ -141,7 +141,6 @@ class DataController extends BaseController
|
|
|
if($request->input('chart_type') == 'pie') return $this->getPieData($request);
|
|
|
else if($request->input('chart_type') == 'radar') return $this->getRadarData($request);
|
|
|
$orders = $this->getOrders($request);
|
|
|
- if(!$orders) return $this->error(['msg' => '']);
|
|
|
$names = [];
|
|
|
$values = [];
|
|
|
// year|month
|
| xqd
@@ -432,61 +431,101 @@ class DataController extends BaseController
|
|
|
}
|
|
|
public function getSingleStat(Request $request)
|
|
|
{
|
|
|
- //租赁订单
|
|
|
- $items = Order::where('type', 1);
|
|
|
- //2021-3-1
|
|
|
- $date = $request->input('date');
|
|
|
+ //如果初始进来不传筛选的年份,那就默认选择当前的年份
|
|
|
+ $project_year = $request->input('project_year')? $request->input('project_year'):date('Y',time());
|
|
|
//如果有项目id,那就用项目id,如果没有就默认选择第一个项目
|
|
|
- $project_id = $request->input('project_id') ? $request->input('project_id') : Project::where('id','>',1)->first()->id;
|
|
|
- //找到这个项目
|
|
|
- $project = Project::find($project_id);
|
|
|
- //在订单表里面获取到对应项目的订单集合
|
|
|
- $items = $items->where('project_id', $project->id);
|
|
|
- //判断按年还是按月
|
|
|
+ if ($request->input('project_id')!=-1)
|
|
|
+ {
|
|
|
+ $all_project = 0;
|
|
|
+ $project_id = $request->input('project_id') ? $request->input('project_id') : Project::where('id','>',1)->first()->id;
|
|
|
+ $project = Project::find($project_id);
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ $all_project = 1;
|
|
|
+ }
|
|
|
$sort_type = $request->input('sort_type') == 'year' ? 'year' : 'month';
|
|
|
- //如果有传时间,那就用时间,如果没有传时间,那就用本地的时间
|
|
|
- $date = $date ? $date : Carbon::now()->toDateString();
|
|
|
$values = [];
|
|
|
$names = [];
|
|
|
$name = $sort_type == 'year' ? '每年租赁金额' : '每月租赁金额';
|
|
|
if($sort_type == 'month') {
|
|
|
- //2020-03-01 00:00:00
|
|
|
- $start_at = Carbon::createFromTimeString($date . ' 00:00:00')->toDateTimeString();
|
|
|
- //2021-03-01 00:00:00
|
|
|
- $end_at = Carbon::createFromTimeString($date . ' 00:00:00')->addYear()->toDateTimeString();
|
|
|
- $items = $items->where([
|
|
|
- ['created_at', '>=', $start_at],
|
|
|
- ['created_at', '<', $end_at]
|
|
|
- ]);
|
|
|
- $items = $items->get();
|
|
|
- for($i = 1; $i < 13; ++$i) {
|
|
|
- $start_at = Carbon::createFromTimeString($date . ' 00:00:00')->addMonths($i - 1)->toDateTimeString();
|
|
|
- $end_at = Carbon::createFromTimeString($date . ' 00:00:00')->addMonths($i)->toDateTimeString();
|
|
|
- $value = $items->where('created_at', '>=', $start_at)->where('created_at', '<', $end_at)->sum('money') / 100;
|
|
|
+ $start_at = $project_year.'-01-01 00:00:00';
|
|
|
+ $end_at = ($project_year+1).'-01-01 00:00:00';
|
|
|
+ for($i = 1; $i < 13; $i++) {
|
|
|
+ if ($i>9&&$i!=12)
|
|
|
+ {
|
|
|
+ $start_month_at = $project_year.'-'.$i.'-01 00:00:00';
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ $start_month_at = $project_year.'-0'.$i.'-01 00:00:00';
|
|
|
+ }
|
|
|
+ if ($i>=9&&$i!=12)
|
|
|
+ {
|
|
|
+ $end_month_at = $project_year.'-'.($i+1).'-01 00:00:00';
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ $end_month_at = $project_year.'-0'.($i+1).'-01 00:00:00';
|
|
|
+ }
|
|
|
+ if ($i==12)
|
|
|
+ {
|
|
|
+ $start_month_at = $project_year.'-'.$i.'-01 00:00:00';
|
|
|
+ $end_month_at = ($project_year+1).'-01-01 00:00:00';
|
|
|
+ }
|
|
|
+ if ($all_project == 0)
|
|
|
+ {
|
|
|
+ $value = Order::where('type',1)
|
|
|
+ ->where('project_id', $project->id)
|
|
|
+ ->whereBetween('created_at',[$start_at,$end_at])
|
|
|
+ ->whereBetween('created_at',[$start_month_at,$end_month_at])
|
|
|
+ ->sum('money');
|
|
|
+ $value = $value/100;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ $value = Order::where('type',1)
|
|
|
+ ->whereBetween('created_at',[$start_at,$end_at])
|
|
|
+ ->whereBetween('created_at',[$start_month_at,$end_month_at])
|
|
|
+ ->sum('money');
|
|
|
+ $value = $value/100;
|
|
|
+ }
|
|
|
array_push($values, $value);
|
|
|
array_push($names, $i . '月');
|
|
|
}
|
|
|
} else {
|
|
|
- $start_at = Carbon::createFromTimeString($date . ' 00:00:00')->toDateTimeString();
|
|
|
- $end_at = Carbon::now()->addYear(1)->toDateTimeString();
|
|
|
- $items = $items->where([
|
|
|
- ['created_at', '>=', $start_at],
|
|
|
- ['created_at', '<', $end_at]
|
|
|
- ]);
|
|
|
- $items = $items->get();
|
|
|
- $cnt = 1;
|
|
|
- $next_year = Carbon::now()->toDateTimeString();
|
|
|
- do {
|
|
|
- $start_at = Carbon::createFromTimeString($date . ' 00:00:00')->addYears($cnt - 1)->toDateTimeString();
|
|
|
- $end_at = Carbon::createFromTimeString($date . ' 00:00:00')->addYears($cnt)->toDateTimeString();
|
|
|
- $value = $items->where('created_at', '>=', $start_at)->where('created_at', '<', $end_at)->sum('money') / 100;
|
|
|
- array_push($values, $value);
|
|
|
- array_push($names, Carbon::createFromTimeString($date . ' 00:00:00')->addYear($cnt - 1)->year . '年');
|
|
|
- $cnt = $cnt + 1;
|
|
|
- } while($cnt < 10 && $end_at <= $next_year);
|
|
|
+ $start=2020;
|
|
|
+ $now = date('Y',time());
|
|
|
+ $year = [];
|
|
|
+ for ($i = 0;$i<=($now-$start);$i++)
|
|
|
+ {
|
|
|
+ array_push($year,($start+$i));
|
|
|
+ array_push($names,($start+$i).'年');
|
|
|
+ }
|
|
|
+ foreach ($year as $v)
|
|
|
+ {
|
|
|
+ $start_year_at = $v.'-01-01 00:00:00';
|
|
|
+ $end_year_at = ($v+1).'-01-01 00:00:00';
|
|
|
+ if ($all_project == 0)
|
|
|
+ {
|
|
|
+ $value = Order::where('type',1)
|
|
|
+ ->where('project_id', $project->id)
|
|
|
+ ->whereBetween('created_at',[$start_year_at,$end_year_at])
|
|
|
+ ->sum('money');
|
|
|
+ $value = $value/100;
|
|
|
+ }else{
|
|
|
+ $value = Order::where('type',1)
|
|
|
+ ->whereBetween('created_at',[$start_year_at,$end_year_at])
|
|
|
+ ->sum('money');
|
|
|
+ $value = $value/100;
|
|
|
+ }
|
|
|
|
|
|
+ array_push($values, $value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($all_project == 0)
|
|
|
+ {
|
|
|
+ return $this->success(['data' => compact('values', 'names', 'project', 'name')]);
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ return $this->success(['data' => compact('values', 'names', 'name')]);
|
|
|
}
|
|
|
- return $this->success(['data' => compact('values', 'names', 'project', 'name')]);
|
|
|
}
|
|
|
|
|
|
public function getMaxStat(Request $request)
|