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'}/`,