diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java index 4be1ec1..201967a 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java @@ -21,4 +21,6 @@ public interface RemoteConfigService { */ String selectStreamIp(); + + String selectStreamType(String deviceSn); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/common/util/Md5Utils.java b/dk-modules/sample/src/main/java/org/dromara/sample/common/util/Md5Utils.java new file mode 100644 index 0000000..7eccf44 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/common/util/Md5Utils.java @@ -0,0 +1,68 @@ +package org.dromara.sample.common.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +/** + * Md5加密方法 + * + * @author ruoyi + */ +public class Md5Utils +{ + private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); + + private static byte[] md5(String s) + { + MessageDigest algorithm; + try + { + algorithm = MessageDigest.getInstance("MD5"); + algorithm.reset(); + algorithm.update(s.getBytes("UTF-8")); + byte[] messageDigest = algorithm.digest(); + return messageDigest; + } + catch (Exception e) + { + log.error("MD5 Error...", e); + } + return null; + } + + private static final String toHex(byte hash[]) + { + if (hash == null) + { + return null; + } + StringBuffer buf = new StringBuffer(hash.length * 2); + int i; + + for (i = 0; i < hash.length; i++) + { + if ((hash[i] & 0xff) < 0x10) + { + buf.append("0"); + } + buf.append(Long.toString(hash[i] & 0xff, 16)); + } + return buf.toString(); + } + + public static String hash(String s) + { + try + { + return new String(toHex(md5(s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } + catch (Exception e) + { + log.error("not supported charset...{}", e); + return s; + } + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/EngineRecordController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/EngineRecordController.java new file mode 100644 index 0000000..a1f7d75 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/EngineRecordController.java @@ -0,0 +1,87 @@ +package org.dromara.sample.manage.controller; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.fasterxml.jackson.databind.JsonNode; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.exception.CloudSDKErrorEnum; +import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum; +import org.dromara.sample.manage.model.dto.CallBackDTO; +import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO; +import org.dromara.sample.manage.model.dto.EventsDTO; +import org.dromara.sample.manage.model.entity.WarningRecordEntity; +import org.dromara.sample.manage.service.IDeviceService; +import org.dromara.sample.manage.service.IEngineRecordService; +import org.dromara.sample.manage.service.IWarningRecordService; +import org.dromara.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/15 + */ +@RestController +@Slf4j +@RequestMapping("${url.manage.prefix}${url.manage.version}/engineRecord") +@Tag(name = "无人机设备模块") +public class EngineRecordController { + + @Autowired + private IEngineRecordService engineRecordService; + @Autowired + private IWarningRecordService warningRecordService; + + /** + * 启动星罗引擎。 + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/startEngine") + @Operation(summary = "启动星罗引擎。", description = "启动星罗引擎") + public HttpResultResponse> startEngine(@RequestBody Map objectMap) { + return HttpResultResponse.success(engineRecordService.startEngine(objectMap)); + } + + @PostMapping("/closeEngine") + @Operation(summary = "关闭星罗引擎。", description = "关闭星罗引擎") + public HttpResultResponse closeEngine(@RequestBody Map objectMap) { + engineRecordService.closeEngine(objectMap); + return HttpResultResponse.success(); + } + + @PostMapping("/some") + @Operation(summary = "存储推流的预警(对外接口)。", description = "存储推流的预警(对外接口)。") + public void some(@RequestBody CallBackDTO callBackVo){ + WarningRecordEntity warningRecord = new WarningRecordEntity(); + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(callBackVo.getEvents())){ + for (EventsDTO eventsVo :callBackVo.getEvents()){ + warningRecord.setTaskId(callBackVo.getTaskId()); + warningRecord.setAlgoId(eventsVo.getAlgoId()); + warningRecord.setEventId(eventsVo.getEventId()); + warningRecord.setExtraType(eventsVo.getExtraType()); + warningRecord.setPicUrl(eventsVo.getPicUrl()); + warningRecord.setTimestamp(eventsVo.getTimestamp()); + list.add(warningRecord); + } + warningRecordService.saveBatch(list); + System.out.println(callBackVo); + } + + + + + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java index ae6737a..9e403c9 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java @@ -1,12 +1,23 @@ package org.dromara.sample.manage.controller; import cn.hutool.core.convert.Convert; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import io.seata.common.util.StringUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import net.bytebuddy.implementation.bytecode.Throw; import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; import org.dromara.common.redis.utils.RedisOpsUtils; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.mqtt.CommonTopicRequest; @@ -17,12 +28,19 @@ import org.dromara.common.sdk.mqtt.property.PropertySetPublish; import org.dromara.common.sdk.mqtt.services.ServicesPublish; import org.dromara.common.sdk.mqtt.services.ServicesReplyReceiver; import org.dromara.common.sdk.mqtt.services.TopicServicesRequest; +import org.dromara.sample.common.util.Md5Utils; import org.dromara.sample.manage.model.dto.*; +import org.dromara.sample.media.mapper.IFileMapper; import org.dromara.system.api.RemoteConfigService; +import org.json.JSONObject; import org.springframework.web.bind.annotation.*; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.*; +import static org.apache.commons.compress.utils.ArchiveUtils.sanitize; import static org.dromara.common.sdk.mqtt.MqttGatewayPublish.DEFAULT_RETRY_COUNT; import static org.dromara.common.sdk.mqtt.MqttGatewayPublish.DEFAULT_RETRY_TIMEOUT; @@ -50,6 +68,7 @@ public class MegaphoneController { @DubboReference private RemoteConfigService remoteConfigService; + /** * 喊话器-开始播放文档(对应遥控器的录音广播模式) * Get the topology list of all online devices in one workspace. @@ -276,4 +295,126 @@ public class MegaphoneController { MegaphoneDTO megaphoneDTO = (MegaphoneDTO) RedisOpsUtils.get(key); return HttpResultResponse.success(megaphoneDTO); } + + + /** + * 获取媒体流ip + * Get the topology list of all online devices in one workspace. + * @return + */ +// @PostMapping("/getAlgorithm") +// @Operation(summary = "第三方星罗接口", description = "获取媒体流ip。") +// public HttpResultResponse getAlgorithm(@RequestBody Map objectMap +// ) { +// //获取token +// //设置请求Header和Body(如JSON) +// String md5 = Md5Utils.hash("xuzhou_ai"); +// JSONObject jsonObj = new JSONObject(); +// jsonObj.put("username", sanitize("xuzhou_ai")); // sanitize函数见下文 +// jsonObj.put("password", sanitize(md5)); +// String responseBody = PostRequest(jsonObj, "http://60.204.247.65:8100/Third/Login"); +// JSONObject jsonObject = new JSONObject(responseBody); +// // 逐层获取 data -> token +// JSONObject data = jsonObject.getJSONObject("data"); +// String token = data.getString("token"); +// String sceneResponseBody = null; +// String algorithmResponseBody = null; +// //查询用户开通的场景 +// if (StringUtils.isNotEmpty(token)){ +// try { +// URI uri = new URIBuilder("http://60.204.247.65:8100/V2/AI/WX/User/Scene") +// .build(); +// sceneResponseBody = GetRequest(uri, token); +// } catch (URISyntaxException e) { +// throw new RuntimeException(e); +// } +// JSONObject jsonObject1 = new JSONObject(sceneResponseBody); +// // 逐层获取 data -> token +// JSONObject data1 = jsonObject.getJSONObject("data"); +// String scene = data1.getString("scene"); +// +// //查询场景算法 +// List extra_type_list = new ArrayList<>(); +// try { +// URI uri = new URIBuilder("http://60.204.247.65:8100/V2/AI/WX/User/ExtraType/Get") +// .addParameter("scene",scene) +// .addParameter("if_open","1") +// .build(); +// algorithmResponseBody = GetRequest(uri, token); +// ObjectMapper mapper = new ObjectMapper(); +// ExtraTypeResponse response = mapper.readValue(algorithmResponseBody,ExtraTypeResponse.class); +// List list = response.getData(); +// for (ExtraType extraType : list) { +// extra_type_list.add(extraType.getExtra_type()); +// break; +// } +// } catch (URISyntaxException | JsonProcessingException e) { +// throw new RuntimeException(e); +// } +// +// JSONObject jsonObj2 = new JSONObject(); +// jsonObj2.put("scene", scene); // sanitize函数见下文 +// jsonObj2.put("callback_url", objectMap.get("callback_url")); +// jsonObj2.put("input_url", objectMap.get("input_url")); +// jsonObj2.put("push_url", objectMap.get("push_url")); +// jsonObj2.put("play_url", objectMap.get("play_url")); +// String responseBody2 = PostRequest(jsonObj2, "http://60.204.247.65:8100/Third/Engine/Start"); +// JSONObject jsonObject2 = new JSONObject(responseBody2); +// } +// +// return HttpResultResponse.success(); +// } +// +// +// public String PostRequest( JSONObject jsonObj, String url +// ) { +// try (CloseableHttpClient httpClient = HttpClients.createDefault()) { +// // 1. 创建POST请求对象 +// HttpPost post = new HttpPost(url); +// StringEntity requestEntity = new StringEntity(jsonObj.toString(), "UTF-8"); +// requestEntity.setContentType("application/json"); +// post.setEntity(requestEntity); +// post.setHeader("Accept", "application/json"); +// // 3. 执行请求并获取响应 +// try (CloseableHttpResponse response = httpClient.execute(post)) { +// String responseBody = EntityUtils.toString(response.getEntity()); +// if (response.getStatusLine().getStatusCode() == 200) { +// return responseBody; +// } else { +// throw new RuntimeException("第三方接口调用失败!"); +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return null; +// +// } +// +// public String GetRequest(URI uri, String token +// ) { +// try (CloseableHttpClient httpClient = HttpClients.createDefault()) { +//// URI uri = new URIBuilder("https://api.example.com/data") +//// .addParameter("param1", "value1") +//// .addParameter("param2", "value2") +//// .build(); +// HttpGet httpGet = new HttpGet(uri); +// httpGet.setHeader("token",token); +// try (CloseableHttpResponse response = httpClient.execute(httpGet)) { +// // 处理响应 +// String responseBody = EntityUtils.toString(response.getEntity()); +// if (response.getStatusLine().getStatusCode() == 200){ +// return responseBody; +// }else { +// throw new RuntimeException("第三方接口调用失败!"); +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return null; +// +// } + + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java index 89ef7f8..f94cc91 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java @@ -1,24 +1,31 @@ package org.dromara.sample.manage.controller; +import cn.hutool.core.convert.Convert; +import io.seata.common.util.StringUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.mqtt.CommonTopicRequest; import org.dromara.common.sdk.mqtt.MegaphoneTopicRequest; import org.dromara.common.sdk.mqtt.MqttGatewayPublish; import org.dromara.common.sdk.mqtt.TopicConst; import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.dto.StreamTypeDTO; import org.dromara.sample.manage.model.dto.TextDTO; import org.dromara.sample.manage.model.entity.PlayTextEntity; import org.dromara.sample.manage.service.IDeviceService; import org.dromara.sample.manage.service.IPlayTextService; +import org.dromara.system.api.RemoteConfigService; import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Map; import java.util.Objects; import java.util.UUID; @@ -37,6 +44,8 @@ public class PlayTextController { @Autowired private IPlayTextService playTextService; + + /** * 获取一个工作区中所有在线设备的列表。 * Get the topology list of all online devices in one workspace. @@ -73,5 +82,13 @@ public class PlayTextController { return HttpResultResponse.success(pageText); } + @PostMapping("/streamType") + @Operation(summary = "获取媒体流算法类型。", description = "获取媒体流算法类型。") + public HttpResultResponse grtStreamType(@RequestBody Map objectMap + ) { + + return playTextService.streamType(objectMap); + } + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IEngineRecordMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IEngineRecordMapper.java new file mode 100644 index 0000000..6e4e4e4 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IEngineRecordMapper.java @@ -0,0 +1,16 @@ +package org.dromara.sample.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.sample.manage.model.entity.DeviceEntity; +import org.dromara.sample.manage.model.entity.EngineRecordEntity; + +/** + * + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public interface IEngineRecordMapper extends BaseMapper { + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/WarningRecordMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/WarningRecordMapper.java new file mode 100644 index 0000000..80e3e34 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/WarningRecordMapper.java @@ -0,0 +1,18 @@ +package org.dromara.sample.manage.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.dromara.sample.manage.model.entity.WarningRecordEntity; + +/** + * 设备对象-》用于存储设备Mapper接口 + * + * @author wuyuan + * @date 2022-10-25 + */ +@Mapper +public interface WarningRecordMapper extends BaseMapper { + +} + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/CallBackDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/CallBackDTO.java new file mode 100644 index 0000000..2100bd4 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/CallBackDTO.java @@ -0,0 +1,30 @@ +package org.dromara.sample.manage.model.dto; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 设备对象-》用于存储设备对象 iot_device + * + * @author wuyuan + * @date 2022-10-25 + */ +@TableName("iot_device") +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class CallBackDTO implements Serializable { + //任务 id + private String taskId; + + //检测事件列表 + private List events; + + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/Engine.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/Engine.java new file mode 100644 index 0000000..afe1245 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/Engine.java @@ -0,0 +1,31 @@ +package org.dromara.sample.manage.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * The entity class of the device + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Engine implements Serializable { + + + + private String task_id; + + private String mission_batch; + + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/EngineResponse.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/EngineResponse.java new file mode 100644 index 0000000..3aa3061 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/EngineResponse.java @@ -0,0 +1,31 @@ +package org.dromara.sample.manage.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * The entity class of the device + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EngineResponse implements Serializable { + + private Long code; + + private String message; + + private Engine data; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/EventsDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/EventsDTO.java new file mode 100644 index 0000000..37be3cf --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/EventsDTO.java @@ -0,0 +1,45 @@ +package org.dromara.sample.manage.model.dto; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 设备对象-》用于存储设备对象 iot_device + * + * @author wuyuan + * @date 2022-10-25 + */ +@TableName("iot_device") +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class EventsDTO implements Serializable { + //算法 id") + private Integer algoId; + + //算法类型字符串") + private String extraType; + + + //分配的事件 id") + private String eventId; + + + //保存后图片的 url") + private String picUrl; + + + //事件时间戳,单位:毫秒") + private Integer timestamp; + + //检测事件列表") + private List objects; + + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ExtraType.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ExtraType.java new file mode 100644 index 0000000..92c0aaa --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ExtraType.java @@ -0,0 +1,46 @@ +package org.dromara.sample.manage.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * The entity class of the device + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExtraType implements Serializable { + + private Long id; + + private String sence; + + private String type; + + private String extra_type; + + private String model; + + private String user; + + private int difficult; + + private int if_open; + + private int sence_id; + + private Double conf; + + private int aiConfig; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ExtraTypeResponse.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ExtraTypeResponse.java new file mode 100644 index 0000000..a4a320b --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ExtraTypeResponse.java @@ -0,0 +1,31 @@ +package org.dromara.sample.manage.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * The entity class of the device + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExtraTypeResponse implements Serializable { + + private Long code; + + private String message; + + private List data; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ObjectsDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ObjectsDTO.java new file mode 100644 index 0000000..96f66b8 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/ObjectsDTO.java @@ -0,0 +1,49 @@ +package org.dromara.sample.manage.model.dto; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 设备对象-》用于存储设备对象 iot_device + * + * @author wuyuan + * @date 2022-10-25 + */ +@TableName("iot_device") +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class ObjectsDTO implements Serializable { + //画面运动方向角度,-180度 到 180度") + private String anglePx; + + //属性截图,base64编码") + private String attrImage; + + //属性名称,车牌,人脸,或其他") + private String attrName; + + //属性文字") + private String attrText; + + //类别唯一ID") + private String classId; + + //画面像素速度,单位(像素/秒)") + private Integer speedPx; + + //追踪ID") + private String trackId; + + //目标中心X") + private Integer x; + + //目标中心Y") + private Integer y; + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/StreamTypeDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/StreamTypeDTO.java new file mode 100644 index 0000000..bdbd47d --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/StreamTypeDTO.java @@ -0,0 +1,37 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StreamTypeDTO { + private String jobId; + + private String jobName; + + private String labelCn; + + + private String labelEn; + + private Long deptId; + + private String deptName; + + private String deviceSn; + + private String lat; + + private String lng; + + private String images; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/EngineRecordEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/EngineRecordEntity.java new file mode 100644 index 0000000..ebffdb9 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/EngineRecordEntity.java @@ -0,0 +1,48 @@ +package org.dromara.sample.manage.model.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * The entity class of the EngineRecord + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "engine_record") +public class EngineRecordEntity implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + @TableField(value = "device_sn") + private String deviceSn; + + @TableField(value = "extra_type") + private String extraType; + + @TableField(value = "task_id") + private String taskId; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + @TableField(value = "push_url") + private String pushUrl; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WarningRecordEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WarningRecordEntity.java new file mode 100644 index 0000000..70f8e17 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WarningRecordEntity.java @@ -0,0 +1,55 @@ +package org.dromara.sample.manage.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 设备对象-》用于存储设备对象 iot_device + * + * @author wuyuan + * @date 2022-10-25 + */ +@TableName("warning_record") +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class WarningRecordEntity implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + private String id; + + @TableField(value = "task_id") + private String taskId; + + @TableField(value = "algo_id") + //算法 id") + private Integer algoId; + + @TableField(value = "extra_type") + //算法类型字符串") + private String extraType; + + @TableField(value = "event_id") + //分配的事件 id") + private String eventId; + + @TableField(value = "pic_url") + //保存后图片的 url") + private String picUrl; + + @TableField(value = "timestamp") + //事件时间戳,单位:毫秒") + private Integer timestamp; + + + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IEngineRecordService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IEngineRecordService.java new file mode 100644 index 0000000..44944ad --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IEngineRecordService.java @@ -0,0 +1,32 @@ +package org.dromara.sample.manage.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum; +import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost; +import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum; +import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.config.version.GatewayManager; +import org.dromara.common.websocket.dto.BizCodeEnum; +import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO; +import org.dromara.sample.manage.model.dto.TopologyDeviceDTO; +import org.dromara.sample.manage.model.param.DeviceQueryParam; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public interface IEngineRecordService { + + Map startEngine(Map objectMap); + + void closeEngine(Map objectMap); +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java index 97603b2..5ba0751 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java @@ -17,6 +17,7 @@ import org.dromara.sample.manage.model.entity.PlayTextEntity; import org.dromara.sample.manage.model.param.DeviceQueryParam; import java.util.List; +import java.util.Map; import java.util.Optional; /** @@ -34,4 +35,6 @@ public interface IPlayTextService { PaginationData pageText(Long page, Long pageSize); + HttpResultResponse streamType(Map objectMap); + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWarningRecordService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWarningRecordService.java new file mode 100644 index 0000000..16ce42e --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWarningRecordService.java @@ -0,0 +1,15 @@ +package org.dromara.sample.manage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.sample.manage.model.entity.WarningRecordEntity; + +/** + * 设备对象-》用于存储设备Service接口 + * + * @author wuyuan + * @date 2022-10-25 + */ +public interface IWarningRecordService extends IService{ + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/EngineRecordServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/EngineRecordServiceImpl.java new file mode 100644 index 0000000..50c040b --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/EngineRecordServiceImpl.java @@ -0,0 +1,246 @@ +package org.dromara.sample.manage.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.seata.common.util.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.dromara.common.sdk.cloudapi.device.*; +import org.dromara.common.sdk.cloudapi.firmware.*; +import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService; +import org.dromara.common.sdk.cloudapi.property.api.AbstractPropertyService; +import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl; +import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel; +import org.dromara.common.sdk.common.*; +import org.dromara.common.sdk.config.version.GatewayManager; +import org.dromara.common.sdk.exception.CloudSDKException; +import org.dromara.common.sdk.mqtt.IMqttTopicService; +import org.dromara.common.sdk.mqtt.MqttGatewayPublish; +import org.dromara.common.sdk.mqtt.events.EventsSubscribe; +import org.dromara.common.sdk.mqtt.osd.OsdSubscribe; +import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum; +import org.dromara.common.sdk.mqtt.property.PropertySetSubscribe; +import org.dromara.common.sdk.mqtt.requests.RequestsSubscribe; +import org.dromara.common.sdk.mqtt.services.ServicesReplyData; +import org.dromara.common.sdk.mqtt.services.ServicesSubscribe; +import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; +import org.dromara.common.sdk.mqtt.state.StateSubscribe; +import org.dromara.common.sdk.mqtt.status.StatusSubscribe; +import org.dromara.common.websocket.dto.BizCodeEnum; +import org.dromara.sample.common.error.CommonErrorEnum; +import org.dromara.sample.common.util.Md5Utils; +import org.dromara.sample.component.mqtt.model.EventsReceiver; +import org.dromara.sample.control.model.enums.DroneAuthorityEnum; +import org.dromara.sample.manage.mapper.IDeviceMapper; +import org.dromara.sample.manage.mapper.IDeviceProMapper; +import org.dromara.sample.manage.mapper.IEngineRecordMapper; +import org.dromara.sample.manage.model.dto.*; +import org.dromara.sample.manage.model.entity.DeviceEntity; +import org.dromara.sample.manage.model.entity.DeviceProEntity; +import org.dromara.sample.manage.model.entity.EngineRecordEntity; +import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum; +import org.dromara.sample.manage.model.enums.PropertySetFieldEnum; +import org.dromara.sample.manage.model.enums.UserTypeEnum; +import org.dromara.sample.manage.model.param.DeviceQueryParam; +import org.dromara.sample.manage.model.receiver.BasicDeviceProperty; +import org.dromara.sample.manage.service.*; +import org.dromara.sample.websocket.service.IWebSocketMessageService; +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.net.URI; +import java.net.URISyntaxException; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +import static org.apache.commons.compress.utils.ArchiveUtils.sanitize; + +/** + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Service +@Slf4j +@Transactional +public class EngineRecordServiceImpl implements IEngineRecordService { + @Resource + IEngineRecordMapper mapper; + + + @Override + public Map startEngine(Map objectMap){ + EngineRecordEntity record = new EngineRecordEntity(); + //获取token + //设置请求Header和Body(如JSON) + String md5 = Md5Utils.hash("xuzhou_ai"); + JSONObject jsonObj = new JSONObject(); + jsonObj.put("username", sanitize("xuzhou_ai")); // sanitize函数见下文 + jsonObj.put("password", sanitize(md5)); + String responseBody = PostRequest(jsonObj, "http://60.204.247.65:8100/Third/Login"); + JSONObject jsonObject = new JSONObject(responseBody); + // 逐层获取 data -> token + JSONObject data = jsonObject.getJSONObject("data"); + String token = data.getString("token"); + String sceneResponseBody = null; + String algorithmResponseBody = null; + //查询用户开通的场景 + if (StringUtils.isNotEmpty(token)){ + try { + URI uri = new URIBuilder("http://60.204.247.65:8100/V2/AI/WX/User/Scene") + .build(); + sceneResponseBody = GetRequest(uri, token); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + JSONObject jsonObject1 = new JSONObject(sceneResponseBody); + // 逐层获取 data -> token + JSONObject data1 = jsonObject.getJSONObject("data"); + String scene = data1.getString("scene"); + + //查询场景算法 + List extra_type_list = new ArrayList<>(); + try { + URI uri = new URIBuilder("http://60.204.247.65:8100/V2/AI/WX/User/ExtraType/Get") + .addParameter("scene",scene) + .addParameter("if_open","1") + .build(); + algorithmResponseBody = GetRequest(uri, token); + ObjectMapper mapper = new ObjectMapper(); + ExtraTypeResponse response = mapper.readValue(algorithmResponseBody,ExtraTypeResponse.class); + List list = response.getData(); + for (ExtraType extraType : list) { + extra_type_list.add(extraType.getExtra_type()); + break; + } + } catch (URISyntaxException | JsonProcessingException e) { + throw new RuntimeException(e); + } + + JSONObject jsonObj2 = new JSONObject(); + jsonObj2.put("scene", scene); // sanitize函数见下文 + jsonObj2.put("callback_url", objectMap.get("callback_url")); + jsonObj2.put("input_url", objectMap.get("input_url")); + jsonObj2.put("push_url", objectMap.get("push_url")); + jsonObj2.put("play_url", objectMap.get("play_url")); + String responseBody2 = PostRequest(jsonObj2, "http://60.204.247.65:8100/Third/Engine/Start"); + ObjectMapper mapper1 = new ObjectMapper(); + EngineResponse response = null; + try { + response = mapper1.readValue(responseBody2, EngineResponse.class); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + objectMap.put("task_id",response.getData().getTask_id()); + record.setPushUrl(objectMap.get("push_url").toString()); + record.setDeviceSn(objectMap.get("device_sn").toString()); + record.setTaskId(response.getData().getTask_id()); + record.setExtraType(String.join(",", extra_type_list)); + } + Map map = new HashMap(); + map.put("callback_url", objectMap.get("callback_url")); + map.put("input_url", objectMap.get("input_url")); + map.put("push_url", objectMap.get("push_url")); + map.put("play_url", objectMap.get("play_url")); + map.put("task_id", objectMap.get("task_id")); + //添加启动引擎记录 + mapper.insert(record); + return map; + } + + @Override + public void closeEngine(Map objectMap) { + JSONObject jsonObj2 = new JSONObject(); + EngineRecordEntity record = mapper.selectOne(new LambdaQueryWrapper().eq(EngineRecordEntity::getDeviceSn, objectMap.get("device_sn"))); + if (record == null){ + throw new RuntimeException("关闭引擎失败!"); + } + jsonObj2.put("task_id", record.getTaskId()); // sanitize函数见下文 + String responseBody2 = PostRequest(jsonObj2, "http://60.204.247.65:8100/Third/Engine/Stop"); + JSONObject json = new JSONObject(responseBody2); + // 方式2:安全获取(先判空再转换) + Object dataObj = json.get("data"); + if(dataObj != null && dataObj instanceof Integer) { + int data = (Integer) dataObj; + if (data ==1){ + mapper.delete(new LambdaQueryWrapper().eq(EngineRecordEntity::getDeviceSn, objectMap.get("device_sn"))); + }else { + throw new RuntimeException("关闭引擎失败!"); + } + } else { + throw new RuntimeException("关闭引擎失败!"); + } + + + } + + + public String PostRequest( JSONObject jsonObj, String url + ) { + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + // 1. 创建POST请求对象 + HttpPost post = new HttpPost(url); + StringEntity requestEntity = new StringEntity(jsonObj.toString(), "UTF-8"); + requestEntity.setContentType("application/json"); + post.setEntity(requestEntity); + post.setHeader("Accept", "application/json"); + // 3. 执行请求并获取响应 + try (CloseableHttpResponse response = httpClient.execute(post)) { + String responseBody = EntityUtils.toString(response.getEntity()); + if (response.getStatusLine().getStatusCode() == 200) { + return responseBody; + } else { + throw new RuntimeException("第三方接口调用失败!"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + public String GetRequest(URI uri, String token + ) { + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { +// URI uri = new URIBuilder("https://api.example.com/data") +// .addParameter("param1", "value1") +// .addParameter("param2", "value2") +// .build(); + HttpGet httpGet = new HttpGet(uri); + httpGet.setHeader("token",token); + try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + // 处理响应 + String responseBody = EntityUtils.toString(response.getEntity()); + if (response.getStatusLine().getStatusCode() == 200){ + return responseBody; + }else { + throw new RuntimeException("第三方接口调用失败!"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java index ccf0eba..fdc0179 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java @@ -1,28 +1,37 @@ package org.dromara.sample.manage.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import io.seata.common.util.StringUtils; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.firmware.*; import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService; import org.dromara.common.sdk.cloudapi.property.api.AbstractPropertyService; import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl; import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel; -import org.dromara.common.sdk.common.*; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.common.sdk.common.Pagination; +import org.dromara.common.sdk.common.PaginationData; import org.dromara.common.sdk.config.version.GatewayManager; import org.dromara.common.sdk.exception.CloudSDKException; +import org.dromara.common.sdk.mqtt.CommonTopicRequest; import org.dromara.common.sdk.mqtt.IMqttTopicService; import org.dromara.common.sdk.mqtt.MqttGatewayPublish; import org.dromara.common.sdk.mqtt.events.EventsSubscribe; import org.dromara.common.sdk.mqtt.osd.OsdSubscribe; +import org.dromara.common.sdk.mqtt.property.PropertySetPublish; import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum; import org.dromara.common.sdk.mqtt.property.PropertySetSubscribe; import org.dromara.common.sdk.mqtt.requests.RequestsSubscribe; +import org.dromara.common.sdk.mqtt.services.ServicesPublish; import org.dromara.common.sdk.mqtt.services.ServicesReplyData; import org.dromara.common.sdk.mqtt.services.ServicesSubscribe; import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; @@ -43,16 +52,14 @@ import org.dromara.sample.manage.model.enums.UserTypeEnum; import org.dromara.sample.manage.model.param.DeviceQueryParam; import org.dromara.sample.manage.model.receiver.BasicDeviceProperty; import org.dromara.sample.manage.service.*; +import org.dromara.system.api.RemoteConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import java.time.LocalDateTime; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -68,6 +75,11 @@ public class PlayTextServiceImpl implements IPlayTextService { @Autowired private IPlayTextMapper playTextMapper; + @Resource + private MqttGatewayPublish gatewayPublish; + + @DubboReference + private RemoteConfigService remoteConfigService; @Override public HttpResultResponse insertPlayText(PlayTextEntity param) { @@ -107,4 +119,22 @@ public class PlayTextServiceImpl implements IPlayTextService { .orderByDesc(true,PlayTextEntity::getId)); return new PaginationData(pagination.getRecords(), new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal())); } + + @Override + public HttpResultResponse streamType(Map objectMap) { + String top = "task/image/disobey/streamType"; + //发送mqtt + String s = remoteConfigService.selectStreamType(objectMap.get("deviceSn").toString()); + if (StringUtils.isNotEmpty(s)){ + String[] split = s.split(","); + objectMap.put("deptId",split[0]); + objectMap.put("deptName",split[1]); + objectMap.put("labelEn",split[2]); + objectMap.put("labelCn",split[3]); + StreamTypeDTO param = Convert.convert(StreamTypeDTO.class, objectMap); + gatewayPublish.publish(top,new CommonTopicRequest<>() + .setData(Objects.requireNonNull(param)),1); + } + return HttpResultResponse.error("请求成功"); + } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WarningRecordServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WarningRecordServiceImpl.java new file mode 100644 index 0000000..7199e94 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WarningRecordServiceImpl.java @@ -0,0 +1,20 @@ +package org.dromara.sample.manage.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sample.manage.mapper.WarningRecordMapper; +import org.dromara.sample.manage.model.entity.WarningRecordEntity; +import org.dromara.sample.manage.service.IWarningRecordService; +import org.springframework.stereotype.Service; + +/** + * 设备对象-》用于存储设备Service业务层处理 + * + * @author wuyuan + * @date 2022-10-25 + */ +@Service +@Slf4j +public class WarningRecordServiceImpl extends ServiceImpl implements IWarningRecordService { + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java index 21be450..85cd78a 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java @@ -36,4 +36,10 @@ public class RemoteConfigServiceImpl implements RemoteConfigService { return ip; } + @Override + public String selectStreamType(String deviceSn) { + String ip =sysConfigService.selectStreamType(deviceSn); + return ip; + } + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java index e8dda5f..5a7c566 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java @@ -86,4 +86,6 @@ public interface ISysConfigService { String selectStreamIp(); + String selectStreamType(String deviceSn); + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index 0899e3c..721962c 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -210,4 +210,11 @@ public class SysConfigServiceImpl implements ISysConfigService { return sysConfig.getConfigValue(); } + @Override + public String selectStreamType(String deviceSn) { + SysConfig sysConfig = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(SysConfig::getConfigKey, "streamType").eq(SysConfig::getConfigValue, deviceSn)); + return sysConfig.getRemark(); + } + }