|
@@ -121,10 +121,22 @@ class DataController extends BaseController
|
|
return $order_devices->pluck('order_id')->unique();
|
|
return $order_devices->pluck('order_id')->unique();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //柱形图展示
|
|
public function getStat(Request $request)
|
|
public function getStat(Request $request)
|
|
{
|
|
{
|
|
$info = [];
|
|
$info = [];
|
|
$device_arr = $request->input('device_ids');
|
|
$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');
|
|
$device_name_arr = $request->input('device_name_ids');
|
|
$spec_arr = $request->input('spec_ids');
|
|
$spec_arr = $request->input('spec_ids');
|
|
if (array_sum($device_arr) != 0)
|
|
if (array_sum($device_arr) != 0)
|
|
@@ -141,6 +153,7 @@ class DataController extends BaseController
|
|
if($request->input('chart_type') == 'pie') return $this->getPieData($request);
|
|
if($request->input('chart_type') == 'pie') return $this->getPieData($request);
|
|
else if($request->input('chart_type') == 'radar') return $this->getRadarData($request);
|
|
else if($request->input('chart_type') == 'radar') return $this->getRadarData($request);
|
|
$orders = $this->getOrders($request);
|
|
$orders = $this->getOrders($request);
|
|
|
|
+ if(!$orders) return $this->error(['msg' => '']);
|
|
$names = [];
|
|
$names = [];
|
|
$values = [];
|
|
$values = [];
|
|
// year|month
|
|
// year|month
|
|
@@ -171,6 +184,7 @@ class DataController extends BaseController
|
|
return $this->success(['data' => compact('values', 'names', 'legends','info')]);
|
|
return $this->success(['data' => compact('values', 'names', 'legends','info')]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //雷达图
|
|
public function getRadarData(Request $request)
|
|
public function getRadarData(Request $request)
|
|
{
|
|
{
|
|
$orders = $this->getOrders($request);
|
|
$orders = $this->getOrders($request);
|
|
@@ -234,6 +248,7 @@ class DataController extends BaseController
|
|
return $days;
|
|
return $days;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //饼状图
|
|
public function getPieData(Request $request)
|
|
public function getPieData(Request $request)
|
|
{
|
|
{
|
|
$order_ids = $this->getOrderIds($request);
|
|
$order_ids = $this->getOrderIds($request);
|
|
@@ -252,6 +267,7 @@ class DataController extends BaseController
|
|
return $this->success(['data' => compact('data', 'legends')]);
|
|
return $this->success(['data' => compact('data', 'legends')]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //明细图
|
|
public function getDetailData(Request $request)
|
|
public function getDetailData(Request $request)
|
|
{
|
|
{
|
|
// $order_ids = $this->getOrderIds($request);
|
|
// $order_ids = $this->getOrderIds($request);
|
|
@@ -422,114 +438,70 @@ class DataController extends BaseController
|
|
{
|
|
{
|
|
$start=2020;
|
|
$start=2020;
|
|
$now = date('Y',time());
|
|
$now = date('Y',time());
|
|
- $years_arr = [[
|
|
|
|
- 'text' => '请选择年份',
|
|
|
|
- 'value' => ''
|
|
|
|
- ]];
|
|
|
|
|
|
+ $years_arr = [];
|
|
for ($i = 0;$i<=($now-$start);$i++)
|
|
for ($i = 0;$i<=($now-$start);$i++)
|
|
{
|
|
{
|
|
- $years_arr[$i+1]['text'] = ($start+$i).'年';
|
|
|
|
- $years_arr[$i+1]['value'] = $i+1;
|
|
|
|
|
|
+ array_push($years_arr,($start+$i).'年');
|
|
}
|
|
}
|
|
return $this->success(['msg' => '操作成功', 'data' => $years_arr]);
|
|
return $this->success(['msg' => '操作成功', 'data' => $years_arr]);
|
|
}
|
|
}
|
|
public function getSingleStat(Request $request)
|
|
public function getSingleStat(Request $request)
|
|
{
|
|
{
|
|
- //如果初始进来不传筛选的年份,那就默认选择当前的年份
|
|
|
|
- $project_year = $request->input('project_year')? $request->input('project_year'):date('Y',time());
|
|
|
|
|
|
+ //租赁订单
|
|
|
|
+ $items = Order::where('type', 1);
|
|
|
|
+ //2021-3-1
|
|
|
|
+ $date = $request->input('date');
|
|
//如果有项目id,那就用项目id,如果没有就默认选择第一个项目
|
|
//如果有项目id,那就用项目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;
|
|
|
|
- }
|
|
|
|
|
|
+ $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);
|
|
|
|
+ //判断按年还是按月
|
|
$sort_type = $request->input('sort_type') == 'year' ? 'year' : 'month';
|
|
$sort_type = $request->input('sort_type') == 'year' ? 'year' : 'month';
|
|
|
|
+ //如果有传时间,那就用时间,如果没有传时间,那就用本地的时间
|
|
|
|
+ $date = $date ? $date : Carbon::now()->toDateString();
|
|
$values = [];
|
|
$values = [];
|
|
$names = [];
|
|
$names = [];
|
|
$name = $sort_type == 'year' ? '每年租赁金额' : '每月租赁金额';
|
|
$name = $sort_type == 'year' ? '每年租赁金额' : '每月租赁金额';
|
|
if($sort_type == 'month') {
|
|
if($sort_type == 'month') {
|
|
- $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;
|
|
|
|
- }
|
|
|
|
|
|
+ //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;
|
|
array_push($values, $value);
|
|
array_push($values, $value);
|
|
array_push($names, $i . '月');
|
|
array_push($names, $i . '月');
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- $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;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ $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($values, $value);
|
|
- }
|
|
|
|
- }
|
|
|
|
- if ($all_project == 0)
|
|
|
|
- {
|
|
|
|
- return $this->success(['data' => compact('values', 'names', 'project', 'name')]);
|
|
|
|
- }else
|
|
|
|
- {
|
|
|
|
- return $this->success(['data' => compact('values', 'names', 'name')]);
|
|
|
|
|
|
+ array_push($names, Carbon::createFromTimeString($date . ' 00:00:00')->addYear($cnt - 1)->year . '年');
|
|
|
|
+ $cnt = $cnt + 1;
|
|
|
|
+ } while($cnt < 10 && $end_at <= $next_year);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+ return $this->success(['data' => compact('values', 'names', 'project', 'name')]);
|
|
}
|
|
}
|
|
|
|
|
|
public function getMaxStat(Request $request)
|
|
public function getMaxStat(Request $request)
|
|
@@ -621,4 +593,96 @@ class DataController extends BaseController
|
|
$names = $projects->pluck('name');
|
|
$names = $projects->pluck('name');
|
|
return $this->success(['data' => compact('values', 'names')]);
|
|
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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|