|
@@ -1,16 +1,29 @@
|
|
|
package com.sooka.sponest.lawenforcement.device.service.impl;
|
|
|
|
|
|
+import com.ruoyi.common.core.utils.SpringUtils;
|
|
|
import com.sooka.sponest.lawenforcement.device.domain.DeviceBO;
|
|
|
+import com.sooka.sponest.lawenforcement.device.domain.SensorEventVo;
|
|
|
+import com.sooka.sponest.lawenforcement.device.domain.StaticEntity;
|
|
|
import com.sooka.sponest.lawenforcement.device.service.IDeviceService;
|
|
|
+import com.sooka.sponest.lawenforcement.feignClient.service.RemoteLawenforcementEventService;
|
|
|
+import com.sooka.sponest.monitor.api.RemoteDeviceService;
|
|
|
+import com.sooka.sponest.monitor.api.domain.VisuForestCloudCameraBO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.concurrent.*;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class DeviceServiceImpl implements IDeviceService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RemoteLawenforcementEventService eventService;
|
|
|
+
|
|
|
// 用于存储定时任务的Map,key为deviceCode
|
|
|
private final ConcurrentHashMap<String, ScheduledFuture<?>> scheduledTasks = new ConcurrentHashMap<>();
|
|
|
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
|
|
@@ -37,6 +50,25 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
/*
|
|
|
* 此处发送开机未执法告警
|
|
|
*/
|
|
|
+ VisuForestCloudCameraBO cloudCameraBO = new VisuForestCloudCameraBO();
|
|
|
+ cloudCameraBO.setDeviceCode(deviceCode);
|
|
|
+ List<Map<String, Object>> data = SpringUtils.getBean(RemoteDeviceService.class).selectByCameraId(cloudCameraBO).getData();
|
|
|
+ //创建事件实体类
|
|
|
+ SensorEventVo sensorEventVo = new SensorEventVo(
|
|
|
+ StaticEntity.EVENT_TYPE,//事件分类(大类)
|
|
|
+ StaticEntity.EVENT_TYPE_XL,//事件分类(小类)
|
|
|
+ deviceCode+"设备发生"+StaticEntity.EVENT_NAME+"事件,开机时长为60分钟!",//事件描述
|
|
|
+ data.get(0).get("longitude").toString(),//经度
|
|
|
+ data.get(0).get("latitude").toString(),//纬度
|
|
|
+ deviceCode,//传感器id
|
|
|
+ bo.getName(),//传感器名称
|
|
|
+ new Date(),//上报时间
|
|
|
+ null,//地址
|
|
|
+ null//图片
|
|
|
+ );
|
|
|
+ //发送事件
|
|
|
+ eventService.sendEvent(sensorEventVo);
|
|
|
+
|
|
|
cancelTask(deviceCode); // 确保任务只执行一次
|
|
|
};
|
|
|
// 延迟60分钟执行
|