Bladeren bron

测试数据

cqpCow 1 jaar geleden
bovenliggende
commit
2cb599e9be
3 gewijzigde bestanden met toevoegingen van 71 en 16 verwijderingen
  1. 55 12
      app/Service/ScreenService.php
  2. 15 3
      app/Service/Service.php
  3. 1 1
      app/Service/SystemRecordService.php

+ 55 - 12
app/Service/ScreenService.php

@@ -4,6 +4,7 @@ namespace App\Service;
 
 use App\Model\Device;
 use App\Model\DeviceType;
+use App\Model\Gateway;
 use App\Model\Screen;
 use App\Model\ScreenDevice;
 use App\Model\ScreenGateway;
@@ -142,13 +143,14 @@ class ScreenService extends Service
         //获取是否异常状态判断
         $exception = SystemlService::getExceptionStatus($screen_id);
 
+        $g_map = array_flip($gateway_id);
         foreach ($data['data'] as $key => $value){
-            $data['data'][$key]['gateway_id'] = $gateway_id[$value['id']] ?? 0;
+            $data['data'][$key]['gateway_id'] = $g_map[$value['id']] ?? 0;
             $tmp_online = $online[$value['id']] ?? 0;
             $tmp_coordinate = $gps[$value['id']] ?? 0;
             $tmp_exception = $exception[$value['id']] ?? 0;
             $data['data'][$key]['is_online'] = $tmp_online;
-            $data['data'][$key]['coordinate'] = $tmp_coordinate;
+            $data['data'][$key]['is_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] ?? '';
@@ -188,12 +190,38 @@ class ScreenService extends Service
             ->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');
+            ->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','b.size');
 
+        if(! empty($data['gateway_id'])) $model->where('b.gateway_id',$data['gateway_id']);
         $list = $this->limit($model,'',$data);
+        $list = $this->fillData($list);
+
         return [true, $list];
     }
 
+    public function fillData($data){
+        if(empty($data['data'])) return $data;
+
+        $message = SystemlService::getLastData(array_column($data['data'],'code'));
+        foreach ($data['data'] as $key => $value){
+            $is_online = $is_exception = 0;
+            if(isset($message[$value['code']])){
+                $is_online = 1;
+                $tmp = $message[$value['code']];
+                if(in_array($value['device_type_id'],DeviceType::$node_two)){
+                    //传感器类
+                    if(in_array($tmp['data_point_name'],DeviceType::$normal)) $is_exception = 1;
+                }else{
+                    $is_exception = 1;
+                }
+            }
+            $data['data'][$key]['is_online'] = $is_online;
+            $data['data'][$key]['is_exception'] = $is_exception;
+        }
+
+        return $data;
+    }
+
     public function screenDevice($data){
         list($status,$msg) = $this->screenDeviceRule($data);
         if(! $status) return [false,$msg];
@@ -264,19 +292,34 @@ class ScreenService extends Service
             $map[$value['code']] = $value['device_type_id'];
         }
 
-        $posts_a = SystemL::whereIn('device_no', $nodeOne)
-            ->select('data_point_name','value')
-            ->orderBy('id','desc')
+        $posts_a = SystemL::whereIn('t.device_no', $nodeOne)
+            ->select('value',DB::raw("CONCAT(device_name,'-',data_point_name) AS data_point_name"))
+            ->from(DB::raw("(SELECT MAX(id) AS max_id, device_no FROM system_l GROUP BY device_no) AS subquery"))
+            ->join('system_l AS t', function ($join) {
+                $join->on('subquery.max_id', '=', 't.id')
+                    ->on('subquery.device_no', '=', 't.device_no');
+            })
+            ->groupBy('t.device_no')
             ->limit(20)
             ->get()->toArray();
-        $posts_b = SystemL::whereIn('device_no', $nodeTwo)
-            ->select('data_point_name','value')
-            ->orderBy('id','desc')
+        $posts_b = SystemL::whereIn('t.device_no', $nodeTwo)
+            ->select('value',DB::raw("CONCAT(device_name,'-',data_point_name) AS data_point_name"))
+            ->from(DB::raw("(SELECT MAX(id) AS max_id, device_no FROM system_l GROUP BY device_no) AS subquery"))
+            ->join('system_l AS t', function ($join) {
+                $join->on('subquery.max_id', '=', 't.id')
+                    ->on('subquery.device_no', '=', 't.device_no');
+            })
+            ->groupBy('t.device_no')
             ->limit(20)
             ->get()->toArray();
-        $posts_c = SystemL::whereIn('device_no', $nodeThree)
-            ->select('data_point_name','value')
-            ->orderBy('id','desc')
+        $posts_c = SystemL::whereIn('t.device_no', $nodeThree)
+            ->select('value',DB::raw("CONCAT(device_name,'-',data_point_name) AS data_point_name"))
+            ->from(DB::raw("(SELECT MAX(id) AS max_id, device_no FROM system_l GROUP BY device_no) AS subquery"))
+            ->join('system_l AS t', function ($join) {
+                $join->on('subquery.max_id', '=', 't.id')
+                    ->on('subquery.device_no', '=', 't.device_no');
+            })
+            ->groupBy('t.device_no')
             ->limit(20)
             ->get()->toArray();
 

+ 15 - 3
app/Service/Service.php

@@ -258,13 +258,25 @@ class Service
         Cache::forget($key);
     }
 
-    //前端传来的时间转换为时间戳 关于时间段
+    //前端传来的时间转换为时间戳 关于时间段 2023-09-17T16:00:00.000Z
     function changeDateToTimeStampAboutRange($time_range){
         if(empty($time_range[0]) || empty($time_range[1])) return [];
 
+        // 创建一个 DateTime 对象并设置时区为 UTC
+        $dateTime = new \DateTime($time_range[0], new \DateTimeZone('UTC'));
+        $dateTime1 = new \DateTime($time_range[1], new \DateTimeZone('UTC'));
+
+        // 将时区设置为 PRC
+        $dateTime->setTimezone(new \DateTimeZone('Asia/Shanghai'));
+        $dateTime1->setTimezone(new \DateTimeZone('Asia/Shanghai'));
+
+        // 将日期时间格式化为特定格式
+        $formattedDate = $dateTime->format('Y-m-d');
+        $formattedDate1 = $dateTime->format('Y-m-d');
+
         $return = [];
-        $return[] = strtotime($time_range[0] . " 00:00:00");
-        $return[] = strtotime($time_range[1] . " 23:59:59");
+        $return[] = strtotime($formattedDate . " 00:00:00");
+        $return[] = strtotime($formattedDate1 . " 23:59:59");
 
         return $return;
     }

+ 1 - 1
app/Service/SystemRecordService.php

@@ -35,7 +35,7 @@ class SystemRecordService extends Service
     public function warningList($data){
         $list = Warning::where('state',0)
             ->where('value',1)
-            ->select('code','data_point_name','time')
+            ->select('device_name','device_no','data_point_name','time','id')
             ->orderBy('id','desc')
             ->get()->toArray();
         foreach ($list as $key => $value){