|
@@ -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();
|
|
|
|