hanfucheng 7 hónapja
szülő
commit
39d5d5212d

+ 42 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/domain/SensorEventVo.java

@@ -0,0 +1,42 @@
+package com.sooka.sponest.lawenforcement.device.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @Auther: mjq
+ * @Date: 2023/6/17 - 06 - 17 - 9:30
+ * @Description: com.sooka.sponest.event.centereventteventcatalogue.domain.sensor
+ * @version: 1.0
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SensorEventVo {
+
+    private String eventType;// 事件分类(大类)
+
+    private String eventTypeXl;// 事件分类(小类)
+
+    private String eventDescription;// 事件描述
+
+    private String longitude;// 经度
+
+    private String latitude;// 纬度
+
+    private String sensorId;// 传感器id
+
+    private String reportor;// 传感器名称
+
+    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
+    public Date reportTime;// 上报时间
+
+    private String address;// 地址
+
+    private String picture;// 图片
+
+}

+ 16 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/domain/StaticEntity.java

@@ -0,0 +1,16 @@
+package com.sooka.sponest.lawenforcement.device.domain;
+
+public class StaticEntity {
+
+    public static final String EVENT_TYPE = "13";
+    public static final String EVENT_TYPE_XL = "1301";
+    public static final String EVENT_NAME = "开机未执法预警";
+
+
+    public static String setContent(String enterpriseName, String storagetankName, String eventName, String threshold, String current) {
+        // 定义模板
+//        String template = "【%s】的【%s】发生【%s】, 设定阈值【%s】:当前值【%s】";
+        String template = "%s的%s发生%s, 设定阈值:%s, 当前值:%s, 请及时处理!";
+        return String.format(template, enterpriseName, storagetankName, eventName, threshold, current);
+    }
+}

+ 32 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/service/impl/DeviceServiceImpl.java

@@ -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分钟执行

+ 29 - 0
src/main/java/com/sooka/sponest/lawenforcement/feignClient/factory/RemoteLawenforcementEventServiceFallbackFactory.java

@@ -0,0 +1,29 @@
+package com.sooka.sponest.lawenforcement.feignClient.factory;
+
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.sooka.sponest.lawenforcement.device.domain.SensorEventVo;
+import com.sooka.sponest.lawenforcement.feignClient.service.RemoteLawenforcementEventService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RemoteLawenforcementEventServiceFallbackFactory implements FallbackFactory<RemoteLawenforcementEventService> {
+
+    private static final Logger log = LoggerFactory.getLogger(RemoteLawenforcementEventServiceFallbackFactory.class);
+
+
+    @Override
+    public RemoteLawenforcementEventService create(Throwable cause) {
+        log.error("数字住建->事件中心->服务调用失败:{}", cause.getMessage());
+        return new RemoteLawenforcementEventService() {
+
+            @Override
+            public AjaxResult sendEvent(SensorEventVo sensorEventVo) {
+                return AjaxResult.error("数字执法-上报事件调用失败:" + cause.getMessage());
+            }
+
+        };
+    }
+}

+ 21 - 0
src/main/java/com/sooka/sponest/lawenforcement/feignClient/service/RemoteLawenforcementEventService.java

@@ -0,0 +1,21 @@
+package com.sooka.sponest.lawenforcement.feignClient.service;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.sooka.sponest.lawenforcement.device.domain.SensorEventVo;
+import com.sooka.sponest.lawenforcement.feignClient.factory.RemoteLawenforcementEventServiceFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+@FeignClient(
+        contextId = "RemoteLawenforcementEventService",
+        value = ServiceNameConstants.LAWENFORCEMENT_SERVICE,
+        fallbackFactory = RemoteLawenforcementEventServiceFallbackFactory.class
+//        , url = "${sooka.service.data}"
+)
+public interface RemoteLawenforcementEventService {
+
+    @PostMapping("/fireIncident/insertHousingConstructionEvent")
+    AjaxResult sendEvent(SensorEventVo sensorEventVo);
+
+}

+ 1 - 1
src/main/java/com/sooka/sponest/lawenforcement/record/controller/LawenforcementRecordController.java

@@ -96,7 +96,7 @@ public class LawenforcementRecordController extends BaseController {
     }
 
     @GetMapping("/getDeivceList")
-    public AjaxResult getDeivceList(){
+    public R getDeivceList(){
         System.out.println(" 获取设备列表 ");
         VisuForestCloudCameraBO visuForestCloudCameraBO = new VisuForestCloudCameraBO();
         visuForestCloudCameraBO.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());