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 @@ - -