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) => {