| xqd
@@ -121,22 +121,10 @@ class DataController extends BaseController
|
|
|
return $order_devices->pluck('order_id')->unique();
|
|
|
}
|
|
|
|
|
|
- //柱形图展示
|
|
|
public function getStat(Request $request)
|
|
|
{
|
|
|
$info = [];
|
|
|
$device_arr = $request->input('device_ids');
|
|
|
- $start_date = $request->input('start_date');
|
|
|
- $end_date = $request->input('end_date');
|
|
|
- if(count($device_arr)===1){
|
|
|
- //单项目
|
|
|
- $values = [1000,1500];
|
|
|
- $names = $device_arr;
|
|
|
- $projects = Project::whereIn('id', $this->project_ids)->where('id','!=',1)->get();
|
|
|
- $legends = [$start_date,$end_date];
|
|
|
- return $this->success(['data' => compact('values', 'names', 'legends','info')]);
|
|
|
- }
|
|
|
- //多项目
|
|
|
$device_name_arr = $request->input('device_name_ids');
|
|
|
$spec_arr = $request->input('spec_ids');
|
|
|
if (array_sum($device_arr) != 0)
|
| xqd
@@ -153,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
@@ -184,7 +171,6 @@ class DataController extends BaseController
|
|
|
return $this->success(['data' => compact('values', 'names', 'legends','info')]);
|
|
|
}
|
|
|
|
|
|
- //雷达图
|
|
|
public function getRadarData(Request $request)
|
|
|
{
|
|
|
$orders = $this->getOrders($request);
|
| xqd
@@ -248,7 +234,6 @@ class DataController extends BaseController
|
|
|
return $days;
|
|
|
}
|
|
|
|
|
|
- //饼状图
|
|
|
public function getPieData(Request $request)
|
|
|
{
|
|
|
$order_ids = $this->getOrderIds($request);
|
| xqd
@@ -267,7 +252,6 @@ class DataController extends BaseController
|
|
|
return $this->success(['data' => compact('data', 'legends')]);
|
|
|
}
|
|
|
|
|
|
- //明细图
|
|
|
public function getDetailData(Request $request)
|
|
|
{
|
|
|
// $order_ids = $this->getOrderIds($request);
|
| xqd
@@ -438,70 +422,114 @@ class DataController extends BaseController
|
|
|
{
|
|
|
$start=2020;
|
|
|
$now = date('Y',time());
|
|
|
- $years_arr = [];
|
|
|
+ $years_arr = [[
|
|
|
+ 'text' => '请选择年份',
|
|
|
+ 'value' => ''
|
|
|
+ ]];
|
|
|
for ($i = 0;$i<=($now-$start);$i++)
|
|
|
{
|
|
|
- array_push($years_arr,($start+$i).'年');
|
|
|
+ $years_arr[$i+1]['text'] = ($start+$i).'年';
|
|
|
+ $years_arr[$i+1]['value'] = $i+1;
|
|
|
}
|
|
|
return $this->success(['msg' => '操作成功', 'data' => $years_arr]);
|
|
|
}
|
|
|
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')!=0)
|
|
|
+ {
|
|
|
+ $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)
|
| xqd
@@ -593,96 +621,4 @@ class DataController extends BaseController
|
|
|
$names = $projects->pluck('name');
|
|
|
return $this->success(['data' => compact('values', 'names')]);
|
|
|
}
|
|
|
-
|
|
|
- //单项目柱形图
|
|
|
- //多项目柱形图
|
|
|
- //单项目折线图
|
|
|
- //多项目折线图
|
|
|
- //单项目雷达图
|
|
|
- //多项目雷达图
|
|
|
- //单项目饼状图
|
|
|
- //单项目明细图
|
|
|
- //五种图形数据图形(单项目和多项目)接口
|
|
|
- public function picData(Request $request){
|
|
|
-
|
|
|
- $arr = [27, 35];echo $arr;return "";
|
|
|
-
|
|
|
- $project_id = $request->input("project_id");
|
|
|
-
|
|
|
- //单个项目根据年/月/日来分组
|
|
|
- $orderone = Order::where(function($query) use ($project_id){
|
|
|
- $query->where("project_id","=",$project_id);
|
|
|
- })->groupby("DATE_FORMAT(updated_at,'%Y')")->selectRaw('sum(money) as sum, project_id')->pluck('sum', 'project_id');
|
|
|
- //多项目根据项目来分组
|
|
|
- $ordermany = Order::where(function($query) use ($project_id){
|
|
|
- $query->where("project_id","=",$project_id);
|
|
|
- })->groupby('project_id')->selectRaw('sum(money) as sum, project_id')->pluck('sum', 'project_id');
|
|
|
- $param = $request->input("param");
|
|
|
- switch ($param){
|
|
|
- //雷达图
|
|
|
- case 'radar':
|
|
|
- if($request->input("projects_num")>1){
|
|
|
- //多项目雷达图
|
|
|
- echo "多项目雷达图";
|
|
|
- break;
|
|
|
- }
|
|
|
- else {
|
|
|
- //单项目雷达图
|
|
|
- echo "单项目雷达图";
|
|
|
- break;
|
|
|
- }
|
|
|
- //折线图
|
|
|
- case 'line':
|
|
|
- if($request->input("projects_num")>1){
|
|
|
- //多项目
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- else {
|
|
|
- //单项目
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- //饼状图
|
|
|
- case 'pie':
|
|
|
- //只有单项目
|
|
|
- break;
|
|
|
- //明细图
|
|
|
- case 'detail':
|
|
|
- //只有单项目
|
|
|
- break;
|
|
|
- //柱形图
|
|
|
- case 'colunm':
|
|
|
- if($request->input("projects_num")>1){
|
|
|
- //多项目
|
|
|
- //年
|
|
|
- if($request->input("time")=='year'){
|
|
|
- $year = $request->input("time");
|
|
|
- $year = json_decode($year,true);
|
|
|
- $where = "";
|
|
|
- $canshu = '$project_id';
|
|
|
- return $ordermany;
|
|
|
- }
|
|
|
- //月
|
|
|
- else if($request->input("time")=='month'){
|
|
|
-
|
|
|
- }
|
|
|
- //日
|
|
|
- else {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- //单项目
|
|
|
- if($request->input("time_type")=='year'){
|
|
|
- $year = $request->input("time");
|
|
|
- $year = json_decode($year,true);
|
|
|
- $where = "";
|
|
|
- return $orderone;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
}
|