diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/EventSubscriptionClient.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/EventSubscriptionClient.java new file mode 100644 index 0000000..e9d41d8 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/EventSubscriptionClient.java @@ -0,0 +1,79 @@ +package com.dkl.large.utli; + + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.hikvision.artemis.sdk.ArtemisHttpUtil; +import com.hikvision.artemis.sdk.config.ArtemisConfig; + +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +public class EventSubscriptionClient { + public static String GetCameraPreviewURL() throws Exception { + + /** + * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. + */ + ArtemisConfig config = new ArtemisConfig(); + config.host = "10.22.245.160:10443"; // 平台的ip端口 + config.appKey = "20976813"; // 密钥appkey + config.appSecret = "KCCXzxhyTFCelIg4SRIz";// 密钥appSecret + + /** + * STEP2:设置OpenAPI接口的上下文 + */ + final String ARTEMIS_PATH = "/artemis"; + + /** + * STEP3:设置接口的URI地址 + */ + final String previewURLsApi = ARTEMIS_PATH + "/eventService/v1/eventSubscriptionByEventTypes"; +// final String previewURLsApi = ARTEMIS_PATH + "/api/eventService/v1/eventUnSubscriptionByEventTypes"; + Map path = new HashMap(2) { + { + put("https://", previewURLsApi);//根据现场环境部署确认是http还是https + } + }; + + /** + * STEP4:设置参数提交方式 + */ + String contentType = "application/json"; + + /** + * STEP5:组装请求参数 + */ +// +// jsonBody.put("expand", "streamform=rtp"); + // 构建JSON请求体 + String body = "{\n" + + " \"eventTypes\": [\"72057594960675584\"],\n" + + " \"subWay\": 1,\n" + + " \"eventDest\": \"https://10.22.245.245:17000/prod-api/large/cameraAnalysis/eventRcv\",\n" + + " \"subType\": 0\n" + + "}"; + +// String body = "{\n" + +// " \"eventTypes\": [\"72057594960675584\"] // 事件等级数组\n" + +// "}\n"; + /** + * STEP6:调用接口 + */ + String result = ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, contentType , null);// post请求application/json类型参数 + if(result != null) { + JSONObject json = JSON.parseObject(result); + return result; + } + + return ""; + } + + public static void main(String[] args) throws Exception { + String result = GetCameraPreviewURL(); + System.out.println("result结果示例: " + result); + } +} diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/GetCameraPreviewURL.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/GetCameraPreviewURL.java new file mode 100644 index 0000000..bf3cd03 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/GetCameraPreviewURL.java @@ -0,0 +1,77 @@ +package com.dkl.large.utli; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.hikvision.artemis.sdk.ArtemisHttpUtil; +import com.hikvision.artemis.sdk.config.ArtemisConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +public class GetCameraPreviewURL { + private static final Logger log = LoggerFactory.getLogger(GetCameraPreviewURL.class); + public static String GetCameraPreviewURL(String unifiedCode ) throws Exception { + + /** + * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. + */ + ArtemisConfig config = new ArtemisConfig(); + config.host = "10.22.245.160:10443"; // 平台的ip端口 + config.appKey = "20976813"; // 密钥appkey + config.appSecret = "KCCXzxhyTFCelIg4SRIz";// 密钥appSecret + + /** + * STEP2:设置OpenAPI接口的上下文 + */ + final String ARTEMIS_PATH = "/artemis"; + + /** + * STEP3:设置接口的URI地址 + */ + final String previewURLsApi = ARTEMIS_PATH + "/api/video/v1/cameras/previewURLs"; + Map path = new HashMap(2) { + { + put("https://", previewURLsApi);//根据现场环境部署确认是http还是https + } + }; + log.info(path.toString()); + /** + * STEP4:设置参数提交方式 + */ + String contentType = "application/json"; + + /** + * STEP5:组装请求参数 + */ + JSONObject jsonBody = new JSONObject(); +// jsonBody.put("cameraIndexCode", "61011668001310570411"); + jsonBody.put("cameraIndexCode", unifiedCode); + jsonBody.put("streamType", 0); + jsonBody.put("protocol", "wss"); + jsonBody.put("transmode", 1); +// jsonBody.put("expand", "streamform=rtp"); + String body = jsonBody.toJSONString(); + /** + * STEP6:调用接口 + */ + String result = ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, contentType , null);// post请求application/json类型参数 + log.info(result); + if(result != null) { + JSONObject json = JSON.parseObject(result); + if("0".equals(json.getString("code"))) { + String wsUrl = json.getJSONObject("data").getString("url"); + System.out.println("获取到的WebSocket地址:" + wsUrl); + return wsUrl; + } + } + + return ""; + } + + public static void main(String[] args) throws Exception { + String result = GetCameraPreviewURL("61011668001310570411"); + System.out.println("result结果示例: " + result); + } +} diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/ImageDownloadUtil.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/ImageDownloadUtil.java new file mode 100644 index 0000000..50ff612 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/ImageDownloadUtil.java @@ -0,0 +1,6 @@ +package com.dkl.large.utli; + +public class ImageDownloadUtil { + +} + diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/KafkaMessageData.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/KafkaMessageData.java new file mode 100644 index 0000000..8b9ee87 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/KafkaMessageData.java @@ -0,0 +1,94 @@ +package com.dkl.large.utli; + +import com.alibaba.fastjson.JSON; +import com.dkl.common.config.DklConfig; +import com.dkl.common.utils.ServletUtils; +import com.dkl.common.utils.file.FileUploadUtils; +import com.dkl.large.domain.KafkaMessage; +import com.dkl.large.mapper.KafkaMessageMapper; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.time.Duration; +import java.util.*; + +@Component("KafkaMessageData") +public class KafkaMessageData { + private static final Logger log = LoggerFactory.getLogger(KafkaMessageData.class); + @Autowired + private KafkaMessageMapper kafkaMessageMapper; + + public void getimage() + { + List kafkaMessageList =new ArrayList<>(); + // Kafka 配置 + String bootstrapServers = "10.17.122.104:31090"; + String topic = "ifaas-tpd-scence"; + // 创建消费者配置 + Properties properties = new Properties(); + properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + properties.put(ConsumerConfig.GROUP_ID_CONFIG, "kafka-message-fetcher-group"); + properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest"); // 从最新的消息开始读取 + + // 创建 Kafka 消费者 + KafkaConsumer consumer = new KafkaConsumer<>(properties); + consumer.subscribe(Collections.singletonList(topic)); + + // 获取最近5条消息 + int messageCount = 0; + try { + // 持续进行消息拉取,直到获取5条为止 + // 拉取消息(1秒超时) + ConsumerRecords records = consumer.poll(Duration.ofMillis(1000)); + // 遍历处理每条消息 + records.forEach(record -> { + String messageValue = record.value(); + System.out.println("收到 Kafka 消息: " + messageValue); + + try { + // 1. JSON 消息体转实体类 + KafkaMessage kafkaMessage = JSON.parseObject(messageValue, KafkaMessage.class); + kafkaMessage.setCreateTime(new Date()); + + // 转换为 MultipartFile + MultipartFile multipartFile = new UrlMultipartFile( kafkaMessage.getImageUrl()); + // 上传文件路径 + String filePath = DklConfig.getUploadPath(); + log.error("上传文件路径 {}", filePath); + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(filePath, multipartFile); + log.error("fileName一次 {}", fileName); + kafkaMessage.setImageUrl(fileName); + //返回的地址需要处理 + kafkaMessageMapper.insertKafkaMessage(kafkaMessage); +// kafkaMessageList.add(kafkaMessage); + } catch (Exception e) { + e.printStackTrace(); + } + }); +// for (ConsumerRecord record : records) { +// System.out.printf("Offset = %d, Key = %s, Value = %s%n", record.offset(), record.key(), record.value()); +// messageCount++; +// if (messageCount >= 5) { +// break; +// } +// } + } finally { + consumer.close(); // 关闭消费者 + } + + } + + +} diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/UrlMultipartFile.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/UrlMultipartFile.java new file mode 100644 index 0000000..267c2e8 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/UrlMultipartFile.java @@ -0,0 +1,79 @@ +package com.dkl.large.utli; + +import org.springframework.web.multipart.MultipartFile; +import org.springframework.util.FileCopyUtils; + +import java.io.*; +import java.net.URL; + +public class UrlMultipartFile implements MultipartFile { + + private final String name; + private final String originalFilename; + private final String contentType; + private final byte[] content; + + public UrlMultipartFile(String imageUrl) throws IOException { + this("file", imageUrl); + } + + public UrlMultipartFile(String name, String imageUrl) throws IOException { + this.name = name; + this.originalFilename = extractFileName(imageUrl); + this.contentType = "image/jpeg"; // 根据实际情况调整 + + // 从URL下载文件内容 + URL url = new URL(imageUrl); + try (InputStream inputStream = url.openStream()) { + this.content = FileCopyUtils.copyToByteArray(inputStream); + } + } + + @Override + public String getName() { + return name; + } + + @Override + public String getOriginalFilename() { + return originalFilename; + } + + @Override + public String getContentType() { + return contentType; + } + + @Override + public boolean isEmpty() { + return content == null || content.length == 0; + } + + @Override + public long getSize() { + return content.length; + } + + @Override + public byte[] getBytes() throws IOException { + return content; + } + + @Override + public InputStream getInputStream() throws IOException { + return new ByteArrayInputStream(content); + } + + @Override + public void transferTo(File dest) throws IOException, IllegalStateException { + FileCopyUtils.copy(content, dest); + } + + private String extractFileName(String url) { + int lastSlashIndex = url.lastIndexOf('/'); + if (lastSlashIndex != -1 && lastSlashIndex < url.length() - 1) { + return url.substring(lastSlashIndex + 1); + } + return "downloaded_file.jpg"; + } +} \ No newline at end of file diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/jmUtil.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/jmUtil.java new file mode 100644 index 0000000..160cbe7 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/jmUtil.java @@ -0,0 +1,56 @@ +package com.dkl.large.utli; + + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.koal.kms.sdk.ed.KmsSdkException; +import com.dkl.common.core.domain.entity.SysDept; +import com.dkl.common.utils.StringUtils; +import com.dkl.large.domain.DklActivity; +import com.dkl.large.domain.DklMonitoringPoints; +import com.dkl.large.mapper.DklActivityMapper; +import com.dkl.large.mapper.DklMonitoringPointsMapper; +import com.dkl.large.service.IDklMonitoringPointsService; +import com.dkl.system.service.ISysDeptService; +import okhttp3.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static org.springframework.util.SerializationUtils.serialize; + +public class jmUtil { +// @Autowired +// private static DklActivityMapper dklActivityMapper; +// public static void main(String[] args) throws KmsSdkException { +// DklActivity dklActivity = new DklActivity(); +// dklActivity.setDelFlag("0"); +// List list =dklActivityMapper.selectDklActivityList(dklActivity); +// for (DklActivity dklActivityInfo : list) { +// String dutyPeople =null; +// String dutyPhone=null; +// if (StringUtils.isNotEmpty(dklActivityInfo.getDutyPeople())&&("0").equals(dklActivityInfo.getDelFlag())) { +// dutyPeople = EnciphermentUtil.kmsDencrypt(dutyPeople); +// +// } +// if (StringUtils.isNotEmpty(dklActivityInfo.getDutyPhone())&&("0").equals(dklActivityInfo.getDelFlag())) { +// dutyPhone = EnciphermentUtil.kmsDencrypt(dutyPhone); +// } +// if (StringUtils.isNotEmpty(dklActivityInfo.getSigenCode())&&("0").equals(dklActivityInfo.getDelFlag())) { +// byte[] bytes = serialize(dutyPeople+","+dutyPhone); +// String isor = EnciphermentUtil.kmsSign(bytes); +// dklActivityInfo.setSigenCode(isor); +// dklActivityMapper.updateDklActivity(dklActivityInfo); +// } +// } +// } + +} + + diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/jsonUtil.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/jsonUtil.java new file mode 100644 index 0000000..75fe957 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/utli/jsonUtil.java @@ -0,0 +1,122 @@ +package com.dkl.large.utli; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.dkl.common.core.domain.entity.SysDept; +import com.dkl.common.utils.StringUtils; +import okhttp3.*; + +import java.io.IOException; +import java.util.Date; + +public class jsonUtil { + + public static void main(String[] args) { + OkHttpClient client = new OkHttpClient(); + + // 构建请求体 + MediaType mediaType = MediaType.parse("application/json"); +// RequestBody body = RequestBody.create(mediaType, "{\n" + +// " \"jsonObject\": {\n" + +// " \"zbxh\": \"12081501\"\n" + +// " },\n" + +// " \"method\": \"GET\",\n" + +// " \"pageNum\": 1,\n" + +// " \"pageSize\": 100,\n" + +// " \"path\": \"/edataservice/api/sjzb\",\n" + +// " \"secret\": \"d156b5aacb301f6c27416c5fb1eb347f4ae5abd92381ee32129fa04740c369dd\",\n" + +// " \"sortType\": \"desc\"\n" + +// "}"); + + RequestBody body = RequestBody.create(mediaType, "{\n" + + " \"jsonObject\" : {\n" + +// " \"jcsj\" : \"2025-10-24\"\n" + + " },\n" + + " \"method\" : \"GET\",\n" + + " \"pageNum\" : 1,\n" + + " \"pageSize\" : 100,\n" + + " \"path\" : \"/edataservice/api/qycnqs\",\n" + + " \"secret\" : \"a9a87a9968429ad186b4ec901c5285198c0d3cbc675bfb207387faae0c71eec2\",\n" + + " \"sortParam\" : \"\",\n" + + " \"sortType\" : \"desc\"\n" + + "}"); + + + // 构建请求 + Request request = new Request.Builder() + .url("http://10.22.245.216:29999/jeecg-data-service/edataservice/api/") + .post(body) + .addHeader("Content-Type", "application/json") + .build(); + + // 执行请求并处理响应 + try (Response response = client.newCall(request).execute()) { +// System.out.println("Response Code: " + response.code()); +// System.out.println("Response Body: " + response.body().string()); + String jsonString = response.body().string(); + System.out.println(jsonString); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + public void getDeptAll() throws IOException { + OkHttpClient client = new OkHttpClient(); + + // 构建请求体 + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, "{\n" + + " \"jsonObject\": {\n" + + " \"key\": \"value\"\n" + + " },\n" + + " \"method\": \"GET\",\n" + + " \"pageNum\": 1,\n" + + " \"pageSize\": 1000000,\n" + + " \"path\": \"/edataservice/api/zzjgxx\",\n" + + " \"secret\": \"7231958b69385ff66a1900584a72c0b85dbc0b602d54ec7a23f9ccdeeb17018c\",\n" + + " \"sortParam\": \"zzjgdm\",\n" + + " \"sortType\": \"ASC\"\n" + + "}"); + + // 构建请求 + Request request = new Request.Builder() + .url("http://10.22.245.216:29999/jeecg-data-service/edataservice/api/") + .post(body) + .addHeader("Content-Type", "application/json") + .build(); + + // 执行请求并处理响应 + try (Response response = client.newCall(request).execute()) { +// System.out.println("Response Code: " + response.code()); +// System.out.println("Response Body: " + response.body().string()); + String jsonString = response.body().string(); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + try { + // 解析JSON字符串为JsonNode对象 + JsonNode rootNode = objectMapper.readTree(jsonString); + + // 获取code字段的值 + String code = rootNode.get("code").asText(); + System.out.println("Code: " + code); + + // 获取success字段的值 + boolean success = rootNode.get("success").asBoolean(); + System.out.println("Success: " + success); + + // 获取data字段的值(是一个数组) + JsonNode dataNode = rootNode.get("result"); + JsonNode dataList= dataNode.get("records"); + + } catch (IOException e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/Dkl-Vue-master/dkl-large/src/main/resources/mapper/large/DklWarningInformationProcessMapper.xml b/Dkl-Vue-master/dkl-large/src/main/resources/mapper/large/DklWarningInformationProcessMapper.xml new file mode 100644 index 0000000..85660b0 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/resources/mapper/large/DklWarningInformationProcessMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, warning_signs, delegate_personnel, delegation_time, delegation_dept, disposal_measures, disposal_results, disposal_status, create_by, create_time, update_by, update_time, del_flag, handle_id from dkl_warning_information_process + + + + + + + + insert into dkl_warning_information_process + + warning_signs, + delegate_personnel, + delegation_time, + delegation_dept, + disposal_measures, + disposal_results, + disposal_status, + create_by, + create_time, + update_by, + update_time, + del_flag, + handle_id, + + + #{warningSigns}, + #{delegatePersonnel}, + #{delegationTime}, + #{delegationDept}, + #{disposalMeasures}, + #{disposalResults}, + #{disposalStatus}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{delFlag}, + #{handleId}, + + + + + update dkl_warning_information_process + + warning_signs = #{warningSigns}, + delegate_personnel = #{delegatePersonnel}, + delegation_time = #{delegationTime}, + delegation_dept = #{delegationDept}, + disposal_measures = #{disposalMeasures}, + disposal_results = #{disposalResults}, + disposal_status = #{disposalStatus}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + handle_id = #{handleId}, + + where id = #{id} + + + + delete from dkl_warning_information_process where id = #{id} + + + + delete from dkl_warning_information_process where id in + + #{id} + + +