cqpCow 1 рік тому
батько
коміт
0408929b5d

+ 12 - 0
app/Http/Controllers/Api/ScreenController.php

@@ -111,6 +111,18 @@ class ScreenController extends BaseController
         }
     }
 
+    public function screenTrendChart(Request $request){
+        $service = new ScreenService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->screenTrendChart($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function screenHistoryList(Request $request){
         $service = new ScreenService();
         $userData = $request->userData->toArray();

+ 32 - 1
app/Service/ScreenService.php

@@ -108,7 +108,7 @@ class ScreenService extends Service
     public function orderList($data){
         $model = Screen::where('del_time',0)
             ->select('*')
-            ->orderBy('id','desc');
+            ->orderBy('id','asc');
 
         if(! empty($data['type'])) $model->where('type',$data['type']);
         if(! empty($data['area_id'])) $model->where('area_id', $data['area_id']);
@@ -341,6 +341,37 @@ class ScreenService extends Service
         return [true,['node_one' => $posts_a,'node_two'=>$posts_b,'node_three'=>$posts_c]];
     }
 
+    public function screenTrendChart($data){
+        if(empty($data['device_no'])) return [false,'请选择设备'];
+        if(count($data['device_no']) > 4) return [false,'一次最多选择4个设备'];
+        if(empty($data['time'][0]) || empty($data['time'][1])) return [false,'时间不能为空'];
+
+        $time = $this->changeDateToTimeStampAboutRange($data['time']);
+        $model = SystemL::whereIn('device_no', $data['device_no'])
+            ->select('value','time','device_no')
+            ->orderBy('id','asc');
+        $model->where('time','>=',$time[0] * 1000);
+        $model->where('time','<',$time[1] * 1000);
+        $list = $model->get()->toArray();
+        $list = $this->fillScreenTrendChart($list);
+
+        return [true,$list];
+    }
+
+    public function fillScreenTrendChart($data){
+        if(empty($data)) return $data;
+
+        $return = [];
+        foreach ($data as $value){
+            $return[$value['device_no']][] = [
+                'time' => date('Y-m-d H:i:s',$value['time'] / 1000),
+                'value' => $value['value']
+            ];
+        }
+
+        return $return;
+    }
+
     public function screenHistoryList($data){
         if(empty($data['screen_id'])) return [false,'请选择仓或台'];
         if(empty($data['device_type_id'])) return [false,'设备类型不能为空'];

+ 2 - 1
routes/api.php

@@ -77,7 +77,8 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('screenDevice', 'Api\ScreenController@screenDevice');//仓绑定设备
     $route->any('screenRemoveDevice', 'Api\ScreenController@screenRemoveDevice');//仓移除设备
     $route->any('screenDeviceDataRealTimeList', 'Api\ScreenController@screenDeviceDataRealTimeList');//仓设备实时数据列表
-    $route->any('screenHistoryList', 'Api\ScreenController@screenHistoryList');//历史数据
+    $route->any('screenDeviceDataRealTimeList', 'Api\ScreenController@screenDeviceDataRealTimeList');//仓设备实时数据列表
+    $route->any('screenTrendChart', 'Api\ScreenController@screenTrendChart');//历史数据
     $route->any('screenGps', 'Api\ScreenController@screenGps');//gps定位
 
     //操作日志