gogs 1 năm trước cách đây
mục cha
commit
e584bb29a5
2 tập tin đã thay đổi với 191 bổ sung2 xóa
  1. 185 2
      app/Http/Controllers/Api/ScreenController.php
  2. 6 0
      routes/api.php

+ 185 - 2
app/Http/Controllers/Api/ScreenController.php

@@ -7,6 +7,7 @@ use App\Model\DeviceData;
 use App\Model\DeviceSite;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Redis;
 
 
 class ScreenController extends BaseController
@@ -188,8 +189,8 @@ class ScreenController extends BaseController
             $models[$k]['w_week_num'] = $run_month_key[$k]??0;
 
 
-            $models[$k]['rate_w'] = $now_w_key[$k]??0;
-            $models[$k]['rate_y'] = $now_y_key[$k]??0;
+            $models[$k]['rate_w'] = isset($now_w_key[$k]) ?sprintf('%.2f',$now_w_key[$k]):0;
+            $models[$k]['rate_y'] =  isset($now_y_key[$k]) ? sprintf('%.2f',$now_y_key[$k]):0;
         }
         sort($models);
         return $this->json_return(200,'',$models);
@@ -237,4 +238,186 @@ class ScreenController extends BaseController
         return number_format($minute * 1.5 / 60,2);
     }
 
+    //温度明细、折线
+    public function wd(Request $request){
+
+        //明细
+        $request = $request->all();
+        $start = isset($request['start_time']) ? $request['start_time'] : time()-3000;
+//        $end = isset($request['start_time']) ? $request['start_time'] : time();
+        $key = DeviceSite::where('site',1)->wherein('title',['温度'])->groupBy('key')->pluck('key')->toArray();
+        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select(DB::raw("DATE_FORMAT(FROM_UNIXTIME(crt_time), '%Y-%m-%d %H:%i') as c"),'device_name','happening_data')->get()->toArray();
+
+        $list_key = [];
+        $device_key = [];
+        foreach ($list as $k=>$v){
+            $v['device_name'] = substr(str_replace('广西大王椰','',$v['device_name']),0,19);
+            if(!in_array($v['device_name'],$device_key))$device_key[] = $v['device_name'];
+            $list_key[$v['device_name']][$v['c']] = sprintf('%.2f',$v['happening_data']*1);
+//            $list_key[]
+            $list[$k] = $v;
+        }
+//        die('ss');
+        $time_list = [];
+        $data_key = [];
+        for ($i=$start;$i<time();$i= $i+60){
+            $time_key = date('Y-m-d H:i',$i);
+            $time_list[] = $time_key;
+            foreach ($device_key as $v){
+                if(isset($list_key[$v][$time_key])) $data_key[$v][] = $list_key[$v][$time_key];
+                else $data_key[$v][] = 0;
+            }
+        }
+        $return = [];
+        $return[0][] =  '设备名称';
+        foreach ($time_list as $v){
+            $return[0][] = $v;
+        }
+        $n = 0;
+        foreach ($data_key as $k=>$v){
+            $n++;
+            $return[$n][] = $k;
+            foreach ($v as $vv){
+                $return[$n][] = $vv;
+            }
+        }
+//        var_dump($time_list);
+//        var_dump($data_key);die;
+        //折线
+//        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select('crt_time','device_name','happening_data')->get()->toArray();
+        return $this->json_return(200,'',['return'=>$return,'list'=>$list]);
+    }
+    //压力明细、折线
+    public function yl(Request $request){
+
+        //明细
+        $request = $request->all();
+        $start = isset($request['start_time']) ? $request['start_time'] : time()-3000;
+//        $end = isset($request['start_time']) ? $request['start_time'] : time();
+        $key = DeviceSite::where('site',1)->wherein('title',['主缸压力','压力'])->groupBy('key')->pluck('key')->toArray();
+        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select(DB::raw("DATE_FORMAT(FROM_UNIXTIME(crt_time), '%Y-%m-%d %H:%i') as c"),'device_name','happening_data')->get()->toArray();
+
+        $list_key = [];
+        $device_key = [];
+        foreach ($list as $k=>$v){
+            $v['device_name'] = substr(str_replace('广西大王椰','',$v['device_name']),0,19);
+            if(!in_array($v['device_name'],$device_key))$device_key[] = $v['device_name'];
+            $list_key[$v['device_name']][$v['c']] = sprintf('%.2f',$v['happening_data']*1);
+//            $list_key[]
+            $list[$k] = $v;
+        }
+//        die('ss');
+        $time_list = [];
+        $data_key = [];
+        for ($i=$start;$i<time();$i= $i+60){
+            $time_key = date('Y-m-d H:i',$i);
+            $time_list[] = $time_key;
+            foreach ($device_key as $v){
+                if(isset($list_key[$v][$time_key])) $data_key[$v][] = $list_key[$v][$time_key];
+                else $data_key[$v][] = 0;
+            }
+        }
+        $return = [];
+        $return[0][] =  '设备名称';
+        foreach ($time_list as $v){
+            $return[0][] = $v;
+        }
+        $n = 0;
+        foreach ($data_key as $k=>$v){
+            $n++;
+            $return[$n][] = $k;
+            foreach ($v as $vv){
+                $return[$n][] = $vv;
+            }
+        }
+//        var_dump($time_list);
+//        var_dump($data_key);die;
+        //折线
+//        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select('crt_time','device_name','happening_data')->get()->toArray();
+        return $this->json_return(200,'',['return'=>$return,'list'=>$list]);
+    }
+
+    //故障明细、折线
+    public function gz(Request $request){
+
+        //明细
+        $request = $request->all();
+        $start = isset($request['start_time']) ? $request['start_time'] : time()-864000;
+//        $end = isset($request['start_time']) ? $request['start_time'] : time();
+        $key = DeviceSite::where('site',1)->wherein('title',['急停'])->groupBy('key')->pluck('key')->toArray();
+        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->where('happening_data',1)->select('crt_time','device_name','happening_data')->get()->toArray();
+        foreach ($list as &$v){
+            $v['device_name'] = substr(str_replace('广西大王椰','',$v['device_name']),0,19);
+            $v['crt_time'] = date('Y-m-d H:i:s',$v['crt_time']);
+        }
+        //折线
+//        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select('crt_time','device_name','happening_data')->get()->toArray();
+        return $this->json_return(200,'',$list);
+    }
+
+    //机器云明细,机器云折线
+    public function deviceAll(Request $request){
+
+        //明细
+        $request = $request->all();
+        $start = isset($request['start_time']) ? $request['start_time'] : time()-300;
+//        $end = isset($request['start_time']) ? $request['start_time'] : time();
+        $key = DeviceSite::where('site',1)->groupBy('key')->pluck('title','key')->toArray();
+        $key_list = [];
+        foreach ($key as $k=>$v){
+            $key_list[] = $k;
+        }
+        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key_list)->select('crt_time','device_name','happening_data','dev_eui')->paginate(100, '', 'page', 1)->toArray();
+        $list = $list['data'];
+        foreach ($list as &$v){
+            $v['device_name'] = substr(str_replace('广西大王椰','',$v['device_name']),0,19);
+            $v['crt_time'] = date('Y-m-d H:i:s',$v['crt_time']);
+            $v['title'] = $key[$v['dev_eui']];
+        }
+        //折线
+//        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select('crt_time','device_name','happening_data')->get()->toArray();
+        return $this->json_return(200,'',$list);
+    }
+
+    //机器云明细,机器云折线
+    public function deviceChart(Request $request){
+
+        //明细
+        $request = $request->all();
+        $start = isset($request['start_time']) ? $request['start_time'] : time()-5000;
+//        $end = isset($request['start_time']) ? $request['start_time'] : time();
+        $key = DeviceSite::where('site',1)->wherein('title',['温度'])->groupBy('key')->pluck('key')->toArray();
+        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select(DB::raw('count(1) as count'),'device_name')->groupBy('dev_eui')->get()->toArray();
+        foreach ($list as &$v){
+            $v['device_name'] = substr(str_replace('广西大王椰','',$v['device_name']),0,19);
+        }
+        //折线
+//        $list = DeviceData::where('crt_time','>=',$start)->wherein('dev_eui',$key)->select('crt_time','device_name','happening_data')->get()->toArray();
+        return $this->json_return(200,'',$list);
+    }
+
+    public function inout(){
+        $key = 'inout_key';
+        $a = Redis::get($key);
+        if(empty($a)){
+            $a = 1;
+        } else{
+            if($a == 1) $a = 2;
+            else $a = 1;
+        }
+        Redis::set($key,$a);
+
+        if($a = 1) $type = '出库';
+        else $type = '入库';
+
+        $detail = [
+            'project'=>'四川省北圆建材有限责任公司',
+            'type'=>$type,
+            'num'=>'100',
+            'order_no'=>'CK2023100901736',
+            $type.'时间'=>date('Y-m-d H:i:s'),
+        ];
+        return $this->json_return(200,'',$detail);
+    }
+
 }

+ 6 - 0
routes/api.php

@@ -24,6 +24,12 @@ Route::any('man_device', 'Api\JobController@processDataJobAddDeviceMan');
 Route::any('del', 'Api\JobController@delKey');
 Route::any('oee', 'Api\ScreenController@oee');
 Route::any('wyOee', 'Api\ScreenController@wyOee');
+Route::any('wd', 'Api\ScreenController@wd');
+Route::any('yl', 'Api\ScreenController@yl');
+Route::any('gz', 'Api\ScreenController@gz');
+Route::any('deviceAll', 'Api\ScreenController@deviceAll');
+Route::any('deviceChart', 'Api\ScreenController@deviceChart');
+Route::any('inout', 'Api\ScreenController@inout');
 
 Route::group(['middleware'=> []],function ($route){
     $route->any('menuAdd', 'Api\SysMenuController@add');