diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java index a1ce8ca9..37e636ba 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java @@ -14,6 +14,10 @@ public class GbStream extends PlatformGbStream{ private double latitude; private String streamType; private boolean status; + /** + * GMT unix系统时间戳,单位秒 + */ + public Long createStamp; public String getApp() { return app; @@ -86,4 +90,13 @@ public class GbStream extends PlatformGbStream{ public void setMediaServerId(String mediaServerId) { this.mediaServerId = mediaServerId; } + + + public Long getCreateStamp() { + return createStamp; + } + + public void setCreateStamp(Long createStamp) { + this.createStamp = createStamp; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java index a6c30cf9..a15e01a4 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java @@ -138,6 +138,7 @@ public class ZLMMediaListManager { if (gbStreamMapper.selectOne(transform.getApp(), transform.getStream()) != null) { gbStreamMapper.update(transform); }else { + transform.setCreateStamp(System.currentTimeMillis()); gbStreamMapper.add(transform); } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java index 73e162af..d3c9b1bd 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java @@ -56,11 +56,6 @@ public class StreamPushItem extends GbStream implements Comparable deviceChannelList = new ArrayList<>(); for (GbStream gbStream : gbStreams) { - platformGbStreamMapper.delByAppAndStream(gbStream.getApp(), gbStream.getStream()); + platformGbStreamMapper.delByAppAndStreamAndPlatform(gbStream.getApp(), gbStream.getStream(), platformId); DeviceChannel deviceChannel = new DeviceChannel(); deviceChannel.setChannelId(gbStream.getGbId()); deviceChannelList.add(deviceChannel); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java index ebfa124b..d3d32499 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java @@ -125,6 +125,7 @@ public class StreamPushServiceImpl implements IStreamPushService { public boolean saveToGB(GbStream stream) { stream.setStreamType("push"); stream.setStatus(true); + stream.setCreateStamp(System.currentTimeMillis()); int add = gbStreamMapper.add(stream); // 查找开启了全部直播流共享的上级平台 @@ -305,6 +306,7 @@ public class StreamPushServiceImpl implements IStreamPushService { streamPushItem.setStreamType("push"); streamPushItem.setStatus(true); streamPushItem.setGbId("34020000004111" + gbId); + streamPushItem.setCreateStamp(System.currentTimeMillis()); gbId ++; } int limitCount = 30; diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java index 16924df3..586b5b49 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java @@ -56,7 +56,7 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener selectAll(String platformId); @Select("SELECT * FROM gb_stream WHERE app=#{app} AND stream=#{stream}") @@ -87,12 +87,12 @@ public interface GbStreamMapper { @Insert("") void batchAdd(List subList); diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java index a07e68ee..a9f85104 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java @@ -73,6 +73,6 @@ public interface PlatformGbStreamMapper { " ") List queryPlatFormListForGBWithGBId(String app, String stream, List platforms); - @Select("SELECT * FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream} AND platformId=#{platformId}") - int delByAppAndStreamAndPlatform(String app, String streamId, String platformId); + @Delete("DELETE FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream} AND platformId=#{platformId}") + int delByAppAndStreamAndPlatform(String app, String stream, String platformId); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java index dc4d497c..98f3594e 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java @@ -679,6 +679,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { streamProxyItem.setStatus(true); String now = this.format.format(System.currentTimeMillis()); streamProxyItem.setCreateTime(now); + streamProxyItem.setCreateStamp(System.currentTimeMillis()); try { if (gbStreamMapper.add(streamProxyItem)<0 || streamProxyMapper.add(streamProxyItem) < 0) { //事务回滚 diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java index c0fafd3f..91118442 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java @@ -118,7 +118,6 @@ public class StreamPushController { @ResponseBody public DeferredResult>> uploadChannelFile(@RequestParam(value = "file") MultipartFile file){ - // 最多处理文件一个小时 DeferredResult>> result = new DeferredResult<>(60*60*1000L); // 录像查询以channelId作为deviceId查询 @@ -133,6 +132,23 @@ public class StreamPushController { result.setResult(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(wvpResult)); return result; } + if (file.getContentType() == null) { + WVPResult wvpResult = new WVPResult<>(); + wvpResult.setCode(-1); + wvpResult.setMsg("无法识别文件类型"); + result.setResult(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(wvpResult)); + return result; + } + if (!file.getContentType().endsWith(".xls") + && !file.getContentType().endsWith(".csv") + && !file.getContentType().endsWith(".xlsx") ) { + logger.warn("通道导入文件类型错误"); + WVPResult wvpResult = new WVPResult<>(); + wvpResult.setCode(-1); + wvpResult.setMsg("文件类型错误,请使用"); + result.setResult(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(wvpResult)); + return result; + } // 同时只处理一个文件 if (resultHolder.exist(key, null)) { logger.warn("已有导入任务正在执行"); diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite index 37eefca6..b317a623 100644 Binary files a/src/main/resources/wvp.sqlite and b/src/main/resources/wvp.sqlite differ diff --git a/web_src/src/components/dialog/chooseChannelForCatalog.vue b/web_src/src/components/dialog/chooseChannelForCatalog.vue index 08e180a4..5133caa5 100644 --- a/web_src/src/components/dialog/chooseChannelForCatalog.vue +++ b/web_src/src/components/dialog/chooseChannelForCatalog.vue @@ -239,7 +239,15 @@ export default { disabled: node.level === 1, divided: true, onClick: () => { - this.removeCatalog(data.id, node) + this.$confirm('确定删除?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.removeCatalog(data.id, node) + }).catch(() => { + + }); } }, {