From cefc87ad4798fb0d0162d6da3d9bb1aff100a361 Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Fri, 11 Jul 2025 21:41:50 +0800
Subject: [PATCH] =?UTF-8?q?[1078]=20=E5=AE=8C=E5=96=84=E6=8A=93=E5=9B=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../vmp/conf/security/WebSecurityConfig.java | 1 +
.../iot/vmp/jt1078/bean/JTMediaEventInfo.java | 6 +++
.../jt1078/controller/JT1078Controller.java | 6 +--
.../iot/vmp/jt1078/proc/request/J0801.java | 8 ----
.../service/impl/jt1078ServiceImpl.java | 1 +
web/src/views/jtDevice/channel/index.vue | 39 +++++++++++++++----
6 files changed, 42 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
index e146a396d..ff7c77deb 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
@@ -101,6 +101,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
defaultExcludes.add("/api/device/query/snap/**");
defaultExcludes.add("/index/hook/abl/**");
defaultExcludes.add("/api/jt1078/playback/download");
+ defaultExcludes.add("/api/jt1078/snap");
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTMediaEventInfo.java b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTMediaEventInfo.java
index 6622d87f9..4a6b7e494 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTMediaEventInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTMediaEventInfo.java
@@ -26,6 +26,9 @@ public class JTMediaEventInfo {
@Schema(description = "媒体数据")
private byte[] mediaData;
+ @Schema(description = "位置信息汇报")
+ private JTPositionBaseInfo positionBaseInfo;
+
public static JTMediaEventInfo decode(ByteBuf buf) {
JTMediaEventInfo jtMediaEventInfo = new JTMediaEventInfo();
@@ -35,6 +38,9 @@ public class JTMediaEventInfo {
jtMediaEventInfo.setEventCode(buf.readUnsignedByte());
jtMediaEventInfo.setChannelId(buf.readUnsignedByte());
+ ByteBuf byteBuf = buf.readSlice(28);
+ jtMediaEventInfo.setPositionBaseInfo(JTPositionBaseInfo.decode(byteBuf));
+
byte[] bytes = new byte[buf.readableBytes()];
buf.readBytes(bytes);
jtMediaEventInfo.setMediaData(bytes);
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java b/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java
index b73908f90..1c16b38b9 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java
@@ -871,15 +871,15 @@ public class JT1078Controller {
@Operation(summary = "JT-抓图", security = @SecurityRequirement(name = JwtUtils.HEADER))
@Parameter(name = "phoneNumber", description = "设备编号", required = true)
@Parameter(name = "channelId", description = "通道编号", required = true)
- @PostMapping("/snap")
+ @GetMapping("/snap")
public void snap(HttpServletResponse response, String phoneNumber, Integer channelId){
log.info("[JT-抓图] 设备编号: {}, 通道编号: {}", phoneNumber, channelId );
Assert.notNull(channelId, "缺少通道编号");
try {
ServletOutputStream outputStream = response.getOutputStream();
- response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
- response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(phoneNumber + "_" + channelId + ".jpg", "UTF-8"));
+ response.setContentType(MediaType.IMAGE_JPEG_VALUE);
+// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(phoneNumber + "_" + channelId + ".jpg", "UTF-8"));
service.snap(phoneNumber, channelId, outputStream);
}catch (Exception e) {
throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage());
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0801.java b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0801.java
index dee2cbd5c..38cc2596a 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0801.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0801.java
@@ -27,17 +27,9 @@ public class J0801 extends Re {
private final static Logger log = LoggerFactory.getLogger(J0801.class);
- private JTPositionBaseInfo positionBaseInfo;
-
@Override
protected Rs decode0(ByteBuf buf, Header header, Session session) {
JTMediaEventInfo mediaEventInfo = JTMediaEventInfo.decode(buf);
- ByteBuf byteBuf = buf.readSlice(28);
- positionBaseInfo = JTPositionBaseInfo.decode(byteBuf);
- File mediaEventFile = new File("mediaEvent");
- if (!mediaEventFile.exists()) {
- mediaEventFile.mkdirs();
- }
log.info("[JT-多媒体数据上传]: {}", mediaEventInfo);
SessionManager.INSTANCE.response(header.getPhoneNumber(), "0801", null, mediaEventInfo);
return null;
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java
index 1ae58730d..4e4f636a9 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java
@@ -761,6 +761,7 @@ public class jt1078ServiceImpl implements Ijt1078Service {
log.info("[JT-抓图] 图片上传完成,抓图编号: {}, 设备编号: {}, 通道编号: {}", ids.get(0), phoneNumber, channelId);
try {
outputStream.write(mediaEventInfo.getMediaData());
+ outputStream.flush();
} catch (IOException e) {
log.info("[JT-抓图] 数据写入异常,抓图编号: {}, 设备编号: {}, 通道编号: {}", ids.get(0), phoneNumber, channelId, e);
throw new ControllerException(ErrorCode.ERROR100.getCode(), "数据写入异常");
diff --git a/web/src/views/jtDevice/channel/index.vue b/web/src/views/jtDevice/channel/index.vue
index 2f5cd91c0..37e6f3573 100755
--- a/web/src/views/jtDevice/channel/index.vue
+++ b/web/src/views/jtDevice/channel/index.vue
@@ -116,22 +116,19 @@
-
-