diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
index 42d1381c9..8be6835fd 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -181,6 +181,7 @@ public class VideoManagerConstants {
//************************** 1078 ****************************************
+ public static final String INVITE_INFO_1078_POSITION = "INVITE_INFO_1078_POSITION:";
public static final String INVITE_INFO_1078_PLAY = "INVITE_INFO_1078_PLAY:";
public static final String INVITE_INFO_1078_PLAYBACK = "INVITE_INFO_1078_PLAYBACK:";
public static final String INVITE_INFO_1078_TALK = "INVITE_INFO_1078_TALK:";
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTTerminalMapper.java b/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTTerminalMapper.java
index 814395c6c..65241a8fc 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTTerminalMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTTerminalMapper.java
@@ -103,4 +103,16 @@ public interface JTTerminalMapper {
@Select("SELECT * FROM wvp_jt_terminal where id=#{deviceId}")
JTDevice getDeviceById(@Param("deviceId") Integer deviceId);
+ @Update({""})
+ void batchUpdateDevicePosition(List devices);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0200.java b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0200.java
index b65871232..85f7b4725 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0200.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0200.java
@@ -89,19 +89,11 @@ public class J0200 extends Re {
@Override
protected Rs handler(Header header, Session session, Ijt1078Service service) {
- JTDevice deviceInDb = service.getDevice(header.getPhoneNumber());
J8001 j8001 = new J8001();
j8001.setRespNo(header.getSn());
j8001.setRespId(header.getMsgId());
- if (deviceInDb == null) {
- j8001.setResult(J8001.FAIL);
- }else {
- // TODO 优化为发送异步事件,定时读取队列写入数据库
- deviceInDb.setLongitude(positionInfo.getLongitude());
- deviceInDb.setLatitude(positionInfo.getLatitude());
- service.updateDevice(deviceInDb);
- j8001.setResult(J8001.SUCCESS);
- }
+ j8001.setResult(J8001.SUCCESS);
+ service.updateDevicePosition(header.getPhoneNumber(), positionInfo.getLongitude(), positionInfo.getLatitude());
return j8001;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/service/Ijt1078Service.java b/src/main/java/com/genersoft/iot/vmp/jt1078/service/Ijt1078Service.java
index c1d34ff35..31f1d862c 100644
--- a/src/main/java/com/genersoft/iot/vmp/jt1078/service/Ijt1078Service.java
+++ b/src/main/java/com/genersoft/iot/vmp/jt1078/service/Ijt1078Service.java
@@ -132,4 +132,5 @@ public interface Ijt1078Service {
JTDevice getDeviceById(Integer deviceId);
+ void updateDevicePosition(String phoneNumber, Double longitude, Double latitude);
}
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 7dbec911d..7c58f9aa4 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
@@ -43,7 +43,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.CrossOrigin;
import java.lang.reflect.Field;
import java.util.*;
@@ -1158,4 +1160,32 @@ public class jt1078ServiceImpl implements Ijt1078Service {
public JTDevice getDeviceById(Integer deviceId) {
return jtDeviceMapper.getDeviceById(deviceId);
}
+
+ @Override
+ public void updateDevicePosition(String phoneNumber, Double longitude, Double latitude) {
+ JTDevice device = new JTDevice();
+ device.setPhoneNumber(phoneNumber);
+ device.setLongitude(longitude);
+ device.setLatitude(latitude);
+ device.setUpdateTime(DateUtil.getNow());
+ String key = VideoManagerConstants.INVITE_INFO_1078_POSITION + userSetting.getServerId();
+ redisTemplate.opsForList().leftPush(key, device);
+ }
+
+ @Scheduled(fixedDelay = 1000)
+ public void positionTask(){
+ String key = VideoManagerConstants.INVITE_INFO_1078_POSITION + userSetting.getServerId();
+ int count = 1000;
+ List devices = new ArrayList<>(count);
+ Long size = redisTemplate.opsForList().size(key);
+ if (size == null || size == 0) {
+ return;
+ }
+ long readCount = Math.min(count, size);
+ for (long i = 0L; i < readCount; i++) {
+ devices.add((JTDevice)redisTemplate.opsForList().rightPop(key));
+ }
+ jtDeviceMapper.batchUpdateDevicePosition(devices);
+ }
+
}
diff --git a/web_src/src/components/dialog/jtChannelEdit.vue b/web_src/src/components/dialog/jtChannelEdit.vue
index b7fb4ee36..4148c087d 100755
--- a/web_src/src/components/dialog/jtChannelEdit.vue
+++ b/web_src/src/components/dialog/jtChannelEdit.vue
@@ -64,7 +64,11 @@ export default {
},
onSubmit: function () {
console.log("onSubmit");
- let params = this.form
+ let params = {
+ channelId: this.form.channelId,
+ name: this.form.name,
+ terminalDbId: this.deviceId,
+ }
this.$axios({
method: 'post',
url:`/api/jt1078/terminal/channel/${this.isEdit?'update':'add'}/`,