From ebd95250c0f82ed59cc3d28b0626c94f7c9bbd83 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Thu, 17 Jul 2025 15:53:35 +0800 Subject: [PATCH] =?UTF-8?q?[1078]=20=E5=A2=9E=E5=8A=A0=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vmp/jt1078/bean/JTPositionBaseInfo.java | 6 ++ .../jt1078/controller/JT1078Controller.java | 6 +- .../iot/vmp/jt1078/proc/request/J0500.java | 1 - web/src/api/jtDevice.js | 10 +++ web/src/store/modules/jtDevice.js | 12 +++- web/src/views/jtDevice/dialog/controlDoor.vue | 62 +++++++++++++++++++ web/src/views/jtDevice/list.vue | 9 ++- 7 files changed, 101 insertions(+), 5 deletions(-) create mode 100755 web/src/views/jtDevice/dialog/controlDoor.vue diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTPositionBaseInfo.java b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTPositionBaseInfo.java index b150f771c..209ea457f 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTPositionBaseInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTPositionBaseInfo.java @@ -3,9 +3,11 @@ package com.genersoft.iot.vmp.jt1078.bean; import com.genersoft.iot.vmp.jt1078.util.BCDUtil; import io.netty.buffer.ByteBuf; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.extern.slf4j.Slf4j; import java.nio.ByteBuffer; +@Slf4j @Schema(description = "位置基本信息") public class JTPositionBaseInfo { @@ -65,6 +67,10 @@ public class JTPositionBaseInfo { public static JTPositionBaseInfo decode(ByteBuf buf) { JTPositionBaseInfo positionInfo = new JTPositionBaseInfo(); + if (buf.readableBytes() < 17) { + log.error("[位置基本信息] 解码失败,长度不足: {}", buf.readableBytes()); + return positionInfo; + } positionInfo.setAlarmSign(new JTAlarmSign(buf.readInt())); positionInfo.setStatus(new JTStatus(buf.readInt())); 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 2f4f5ace6..0c75b1fb5 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 @@ -570,11 +570,13 @@ public class JT1078Controller { log.info("[JT-车门控制] phoneNumber: {}, open: {},", phoneNumber, open); JTPositionBaseInfo positionBaseInfo = service.controlDoor(phoneNumber, open); - + if (positionBaseInfo == null || positionBaseInfo.getStatus() == null) { + return WVPResult.fail(ErrorCode.ERROR100.getCode(), "控制失败"); + } if (open == !positionBaseInfo.getStatus().isDoorLocking()) { return WVPResult.success(null); }else { - return WVPResult.fail(ErrorCode.ERROR100); + return WVPResult.fail(ErrorCode.ERROR100.getCode(), "控制失败"); } } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0500.java b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0500.java index f3e1dbe6f..97f3dfdbb 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0500.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0500.java @@ -27,7 +27,6 @@ public class J0500 extends Re { protected Rs decode0(ByteBuf buf, Header header, Session session) { int respNo = buf.readUnsignedShort(); positionInfo = JTPositionBaseInfo.decode(buf); - log.info("[JT-车辆控制应答]: {}", positionInfo.toString()); SessionManager.INSTANCE.response(header.getPhoneNumber(), "0500", (long) respNo, positionInfo); return null; } diff --git a/web/src/api/jtDevice.js b/web/src/api/jtDevice.js index a30a5f3f3..f95a1b82b 100644 --- a/web/src/api/jtDevice.js +++ b/web/src/api/jtDevice.js @@ -307,5 +307,15 @@ export function connection(data) { data: data }) } +export function controlDoor({ phoneNumber, open}) { + return request({ + method: 'get', + url: '/api/jt1078/control/door', + params: { + phoneNumber: phoneNumber, + open: open + } + }) +} diff --git a/web/src/store/modules/jtDevice.js b/web/src/store/modules/jtDevice.js index 8dc196065..b3333d628 100644 --- a/web/src/store/modules/jtDevice.js +++ b/web/src/store/modules/jtDevice.js @@ -1,6 +1,6 @@ import { add, - addChannel, connection, controlPlayback, deleteDevice, factoryReset, + addChannel, connection, controlDoor, controlPlayback, deleteDevice, factoryReset, fillLight, getRecordTempUrl, linkDetection, play, ptz, queryAttribute, queryChannels, queryConfig, @@ -300,6 +300,16 @@ const actions = { reject(error) }) }) + }, + controlDoor({ commit }, param) { + return new Promise((resolve, reject) => { + controlDoor(param).then(response => { + const { data } = response + resolve(data) + }).catch(error => { + reject(error) + }) + }) } } diff --git a/web/src/views/jtDevice/dialog/controlDoor.vue b/web/src/views/jtDevice/dialog/controlDoor.vue new file mode 100755 index 000000000..2c98998ba --- /dev/null +++ b/web/src/views/jtDevice/dialog/controlDoor.vue @@ -0,0 +1,62 @@ + + + diff --git a/web/src/views/jtDevice/list.vue b/web/src/views/jtDevice/list.vue index a14f2f1df..5fdee9c63 100755 --- a/web/src/views/jtDevice/list.vue +++ b/web/src/views/jtDevice/list.vue @@ -152,6 +152,7 @@ + @@ -164,11 +165,12 @@ import textMsg from './dialog/textMsg.vue' import telephoneCallback from './dialog/telephoneCallback.vue' import driverInfo from './dialog/driverInfo.vue' import connectionServer from './dialog/connectionServer.vue' +import controlDoor from './dialog/controlDoor.vue' export default { name: 'App', components: { - deviceEdit, configInfo, attribute, position, textMsg, telephoneCallback, driverInfo, connectionServer + deviceEdit, configInfo, attribute, position, textMsg, telephoneCallback, driverInfo, connectionServer, controlDoor }, data() { return { @@ -283,6 +285,8 @@ export default { this.factoryReset(itemData) } else if (command === 'reset') { this.reset(itemData) + } else if (command === 'door') { + this.controlDoor(itemData) } else if (command === 'connection') { this.connection(itemData) } else { @@ -359,6 +363,9 @@ export default { connection: function(itemData) { this.$refs.connectionServer.openDialog(itemData.phoneNumber) }, + controlDoor: function(itemData) { + this.$refs.controlDoor.openDialog(itemData.phoneNumber) + }, linkDetection: function(itemData) { this.$store.dispatch('jtDevice/linkDetection', itemData.phoneNumber) .then((data) => {