|
@@ -3,6 +3,7 @@
|
|
|
namespace App\Service;
|
|
|
|
|
|
use App\Model\Device;
|
|
|
+use App\Model\DeviceType;
|
|
|
use App\Model\Screen;
|
|
|
use App\Model\ScreenDevice;
|
|
|
use App\Model\ScreenGateway;
|
|
@@ -24,6 +25,8 @@ class ScreenService extends Service
|
|
|
$model->size = $data['size'];
|
|
|
$model->type = $data['type'];
|
|
|
$model->remark = $data['remark'];
|
|
|
+ $model->address = $data['address'] ?? '';
|
|
|
+ $model->coordinate = $data['coordinate'] ?? '';
|
|
|
$model->save();
|
|
|
|
|
|
ScreenGateway::where('screen_id',$data['id'])->update(['del_time' => time()]);
|
|
@@ -61,6 +64,8 @@ class ScreenService extends Service
|
|
|
$model->size = $data['size'];
|
|
|
$model->type = $data['type'];
|
|
|
$model->remark = $data['remark'];
|
|
|
+ $model->address = $data['address'] ?? '';
|
|
|
+ $model->coordinate = $data['coordinate'] ?? '';
|
|
|
$model->save();
|
|
|
|
|
|
if(isset($data['gateway_id'])){
|
|
@@ -89,8 +94,6 @@ class ScreenService extends Service
|
|
|
|
|
|
$bool = ScreenDevice::where('del_time',0)->where('screen_id',$data['id'])->exists();
|
|
|
if($bool) return [false,'仓已绑定设备'];
|
|
|
- $bool = ScreenGateway::where('del_time',0)->where('screen_id',$data['id'])->exists();
|
|
|
- if($bool) return [false,'仓已绑定网关'];
|
|
|
|
|
|
Screen::where('id',$data['id'])->update([
|
|
|
'del_time' => time()
|
|
@@ -119,10 +122,39 @@ class ScreenService extends Service
|
|
|
}
|
|
|
|
|
|
$list = $this->limit($model,'',$data);
|
|
|
+ $list = $this->fillOrderList($list);
|
|
|
|
|
|
return [200,$list];
|
|
|
}
|
|
|
|
|
|
+ public function fillOrderList($data){
|
|
|
+ if(empty($data['data'])) return $data;
|
|
|
+
|
|
|
+ $screen_id = array_column($data['data'],'id');
|
|
|
+ $gateway_id = ScreenGateway::whereIn('screen_id',$screen_id)
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->pluck('screen_id','gateway_id')
|
|
|
+ ->toArray();
|
|
|
+ //获取仓是否在线离线状态
|
|
|
+ $online = SystemlService::getIsOnlineStatus($gateway_id);
|
|
|
+ //获取Gps信号判断状态
|
|
|
+ $gps = SystemlService::getGpsStatus($screen_id);
|
|
|
+ //获取是否异常状态判断
|
|
|
+ $exception = SystemlService::getExceptionStatus($screen_id);
|
|
|
+
|
|
|
+ foreach ($data['data'] as $key => $value){
|
|
|
+ $data['data'][$key]['gateway_id'] = $gateway_id[$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'] = Screen::$online[$tmp_online] ?? '';
|
|
|
+ $data['data'][$key]['coordinate'] = Screen::$gps[$tmp_coordinate] ?? '';
|
|
|
+ $data['data'][$key]['is_exception'] = Screen::$exception[$tmp_exception] ?? '';
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
public function screenRule($data,$is_add = true){
|
|
|
if(empty($data['title'])) return [false,'名称不能为空!'];
|
|
|
if(empty($data['code'])) return [false,'编码不能为空!'];
|
|
@@ -148,12 +180,14 @@ class ScreenService extends Service
|
|
|
|
|
|
public function screenDeviceList($data){
|
|
|
if(empty($data['screen_id'])) return [false,'仓ID不能为空'];
|
|
|
- $device = ScreenDevice::from('screen_device as a')
|
|
|
+ $model = ScreenDevice::from('screen_device as a')
|
|
|
->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'])
|
|
|
- ->select('a.id','b.id as device_id','b.title','b.code','b.gateway_id','b.device_type_id')
|
|
|
- ->get()->toArray();
|
|
|
- return [true,$device];
|
|
|
+ ->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);
|
|
|
+ return [true, $list];
|
|
|
}
|
|
|
|
|
|
public function screenDevice($data){
|
|
@@ -182,6 +216,12 @@ class ScreenService extends Service
|
|
|
->whereIn('device_id',$data['device_id'])
|
|
|
->exists();
|
|
|
if($bool) return [false, '设备已经绑定其他仓!'];
|
|
|
+
|
|
|
+ $one = ScreenGateway::where('del_time',0)->where('screen_id',$data['screen_id'])->first();
|
|
|
+ $two = Device::where('del_time',0)->where('id',$data['device_id'])->first();
|
|
|
+ if(empty($one)) return [false,'仓网关不存在!'];
|
|
|
+ if(empty($two)) return [false,'设备网关不存在!'];
|
|
|
+ if($one->gateway_id != $two->gateway_id) return [false,'设备网关与仓网关不一致!'];
|
|
|
}
|
|
|
|
|
|
public function screenRemoveDevice($data){
|
|
@@ -193,11 +233,11 @@ class ScreenService extends Service
|
|
|
}
|
|
|
|
|
|
public function screenDeviceDataRealTimeList($data){
|
|
|
- if(empty($data['id'])) return [false,'请选择仓或台'];
|
|
|
+ if(empty($data['screen_id'])) return [false,'请选择仓或台'];
|
|
|
|
|
|
//获取仓或台的设备ID
|
|
|
$device = ScreenDevice::where('del_time',0)
|
|
|
- ->where('screen_id',$data['id'])
|
|
|
+ ->where('screen_id',$data['screen_id'])
|
|
|
->select('device_id')
|
|
|
->get()->toArray();
|
|
|
$device = array_column($device,'device_id');
|
|
@@ -206,31 +246,32 @@ class ScreenService extends Service
|
|
|
$device = Device::whereIn('id',$device)
|
|
|
->select('code','device_type_id')
|
|
|
->get()->toArray();
|
|
|
- $nodeOne = $nodeTwo = $nodeThree = [];
|
|
|
+ $map = $nodeOne = $nodeTwo = $nodeThree = [];
|
|
|
foreach ($device as $value){
|
|
|
- if($value['device_type_id'] == 3){
|
|
|
+ if(in_array($value['device_type_id'],DeviceType::$node_one)){
|
|
|
$nodeOne[] = $value['code'];
|
|
|
- }elseif(in_array($value['device_type_id'],[1,2,7])){
|
|
|
+ }elseif(in_array($value['device_type_id'],DeviceType::$node_two)){
|
|
|
$nodeTwo[] = $value['code'];
|
|
|
- }else{
|
|
|
+ }elseif(in_array($value['device_type_id'],DeviceType::$node_three)){
|
|
|
$nodeThree[] = $value['code'];
|
|
|
}
|
|
|
+ $map[$value['code']] = $value['device_type_id'];
|
|
|
}
|
|
|
|
|
|
$posts_a = SystemL::whereIn('device_no', $nodeOne)
|
|
|
->select('data_point_name','value')
|
|
|
->orderBy('id','desc')
|
|
|
- ->limit(10)
|
|
|
+ ->limit(20)
|
|
|
->get()->toArray();
|
|
|
$posts_b = SystemL::whereIn('device_no', $nodeTwo)
|
|
|
->select('data_point_name','value')
|
|
|
->orderBy('id','desc')
|
|
|
- ->limit(10)
|
|
|
+ ->limit(20)
|
|
|
->get()->toArray();
|
|
|
$posts_c = SystemL::whereIn('device_no', $nodeThree)
|
|
|
->select('data_point_name','value')
|
|
|
->orderBy('id','desc')
|
|
|
- ->limit(10)
|
|
|
+ ->limit(20)
|
|
|
->get()->toArray();
|
|
|
|
|
|
return [true,['node_one' => $posts_a,'node_two'=>$posts_b,'node_three'=>$posts_c]];
|