Kaynağa Gözat

测试数据

cqpCow 2 yıl önce
ebeveyn
işleme
df42679205

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

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

+ 32 - 0
app/Http/Middleware/CheckLogin.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Middleware;
 
+use App\Model\SystemRecord;
 use App\Service\EmployeeService;
 use Closure;
 use App\Service\TokenService;
@@ -40,6 +41,37 @@ class CheckLogin
         //写入user信息
         $request->userData = $data;
 
+        $this->insert($request->path(),$data);//系统操作日志
         return $next($request);
     }
+
+    public function insert($uri,$data){
+        if (getenv('HTTP_CLIENT_IP')) {
+            $ip = getenv('HTTP_CLIENT_IP');
+        }
+        elseif (getenv('HTTP_X_REAL_IP')) {
+            $ip = getenv('HTTP_X_REAL_IP');
+        } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
+            $ip = getenv('HTTP_X_FORWARDED_FOR');
+            $ips = explode(',', $ip);
+            $ip = $ips[0];
+        } elseif (getenv('REMOTE_ADDR')) {
+            $ip = getenv('REMOTE_ADDR');
+        } else {
+            $ip = '0.0.0.0';
+        }
+
+        $map = config("routemap.map");
+        if(isset($map[$uri])){
+            $content = $map[$uri];
+            $account  = $data['account'];
+
+            SystemRecord::insert([
+                'account' => $account,
+                'crt_time' => time(),
+                'ip' => $ip,
+                'content' => $content
+            ]);
+        }
+    }
 }

+ 6 - 7
app/Http/Middleware/RequestLog.php

@@ -32,16 +32,14 @@ class RequestLog
             $ip = '0.0.0.0';
         }
         $params = $request->all();
-        Log::channel('request')->info('request', ['param'=>json_encode($params),'ip' => $ip,'uri'=>$request->path()]);
+        $uri = $request->path();
+        Log::channel('request')->info('request', ['param'=>json_encode($params),'ip' => $ip,'uri'=>$uri]);
 
         $map = config("routemap.map");
-        if(isset($map[$request->path()])){
-            $content = $map[$request->path()];
+        if($uri == 'api/login'){
+            $content = $map[$uri];
             $account = '';
-            if(! empty($request->userData)){
-                $user = $request->userData->toArray();
-                $account  = $user['account'];
-            }elseif(! empty($params['account'])){
+            if(! empty($params['account'])){
                 $account = $params['account'];
             }
             SystemRecord::insert([
@@ -51,6 +49,7 @@ class RequestLog
                 'content' => $content
             ]);
         }
+
         return $next($request);
     }
 }

+ 2 - 2
app/Service/DeviceService.php

@@ -162,12 +162,12 @@ class DeviceService extends Service
         if(empty($data['gateway_id'])) return [false,'网关不能为空'];
 
         if($is_add){
-            $bool = Device::whereRaw("code = '{$data['code']}' OR title = '{$data['title']}'")
+            $bool = Device::whereRaw("(code = '{$data['code']}' OR title = '{$data['title']}')")
                 ->where('del_time',0)
                 ->exists();
         }else{
             if(empty($data['id'])) return [false,'id不能为空!'];
-            $bool = Device::whereRaw("code = '{$data['code']}' OR title = '{$data['title']}'")
+            $bool = Device::whereRaw("(code = '{$data['code']}' OR title = '{$data['title']}')")
                 ->where('id','<>',$data['id'])
                 ->where('del_time',0)
                 ->exists();

+ 59 - 3
app/Service/ScreenService.php

@@ -147,9 +147,12 @@ class ScreenService extends Service
             $tmp_online = $online[$value['id']] ?? 0;
             $tmp_coordinate = $gps[$value['id']] ?? 0;
             $tmp_exception = $exception[$value['id']] ?? 0;
-            $data['data'][$key]['is_online'] = Screen::$online[$tmp_online] ?? '';
-            $data['data'][$key]['coordinate'] = Screen::$gps[$tmp_coordinate] ?? '';
-            $data['data'][$key]['is_exception'] = Screen::$exception[$tmp_exception] ?? '';
+            $data['data'][$key]['is_online'] = $tmp_online;
+            $data['data'][$key]['coordinate'] = $tmp_coordinate;
+            $data['data'][$key]['is_exception'] = $tmp_exception;
+            $data['data'][$key]['is_online_name'] = Screen::$online[$tmp_online] ?? '';
+            $data['data'][$key]['coordinate_name'] = Screen::$gps[$tmp_coordinate] ?? '';
+            $data['data'][$key]['is_exception_name'] = Screen::$exception[$tmp_exception] ?? '';
         }
 
         return $data;
@@ -184,6 +187,7 @@ class ScreenService extends Service
             ->leftJoin('device as b','b.id','a.device_id')
             ->leftJoin('device_type as c','c.id','b.device_type_id')
             ->where('a.screen_id',$data['screen_id'])
+            ->where('a.del_time',0)
             ->select('a.id','b.id as device_id','b.title','b.code','b.gateway_id','b.device_type_id','b.remark','c.title as device_type_name');
 
         $list = $this->limit($model,'',$data);
@@ -222,6 +226,8 @@ class ScreenService extends Service
         if(empty($one)) return [false,'仓网关不存在!'];
         if(empty($two)) return [false,'设备网关不存在!'];
         if($one->gateway_id != $two->gateway_id) return [false,'设备网关与仓网关不一致!'];
+
+        return [true, ''];
     }
 
     public function screenRemoveDevice($data){
@@ -276,4 +282,54 @@ class ScreenService extends Service
 
         return [true,['node_one' => $posts_a,'node_two'=>$posts_b,'node_three'=>$posts_c]];
     }
+
+    public function screenHistoryList($data){
+        if(empty($data['screen_id'])) return [false,'请选择仓或台'];
+        if(empty($data['device_type_id'])) return [false,'设备类型不能为空'];
+        if($data['device_type_id'] == DeviceType::type_one && empty($data['type']))  return [false,'传感器类型时需传递TYPE'];
+        if(empty($data['time'][0]) || empty($data['time'][1])) return [false,'时间不能为空'];
+
+        //获取仓或台的设备ID
+        $device = ScreenDevice::where('del_time',0)
+            ->where('screen_id',$data['screen_id'])
+            ->select('device_id')
+            ->get()->toArray();
+        $device = array_column($device,'device_id');
+
+        //设备的分组信息 按照设备类型
+        $device = Device::whereIn('id',$device)
+            ->where('device_type_id',$data['device_type_id'])
+            ->select('code','device_type_id')
+            ->get()->toArray();
+
+        $time = $this->changeDateToTimeStampAboutRange($data['time']);
+        $model = SystemL::whereIn('device_no', array_column($device,'code'))
+            ->select('data_point_name','value','time','device_no')
+            ->orderBy('id','desc');
+        $model->where('time','>=',$time[0] * 1000);
+        $model->where('time','<',$time[1] * 1000);
+        if(! empty($data['type'])){
+            if($data['type'] == 1){
+                $model->where('data_point_name','LIKE', '%'. '温度' .'%');
+            }else{
+                $model->where('data_point_name','LIKE', '%'. '湿度' .'%');
+            }
+        }
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillHistoryData($list);
+
+        return [true,$list];
+    }
+
+    public function fillHistoryData($data){
+        if(empty($data['data'])) return $data;
+
+        foreach ($data['data'] as $key => $value){
+            $time = $value['time'] / 1000;
+            $data['data'][$key]['time'] = date("Y-m-d H:i:s",$time);
+        }
+
+        return $data;
+    }
 }

+ 3 - 0
config/routemap.php

@@ -18,6 +18,9 @@ return [
         'api/gatewayDel' => '网关删除',
         'api/deviceTypeAdd' => '设备类型添加',
         'api/deviceTypeDel' => '设备类型删除',
+        'api/deviceAdd' => '设备添加',
+        'api/deviceEdit' => '设备编辑',
+        'api/deviceDel' => '设备删除',
         'api/screenAdd' => '仓或台添加',
         'api/screenEdit' => '仓或台编辑',
         'api/screenDel' => '仓或台删除',

+ 1 - 0
routes/api.php

@@ -74,6 +74,7 @@ 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('systemRecordList', 'Api\SystemRecordController@orderList');