Browse Source

修复多平台同时导入时的bug

pull/399/head
648540858 3 years ago
parent
commit
0e69251281
  1. 1
      src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/RegisterResponseProcessor.java
  2. 58
      src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
  3. 10
      src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java

1
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/RegisterResponseProcessor.java

@ -100,7 +100,6 @@ public class RegisterResponseProcessor extends SIPResponseProcessorAbstract {
subscribeHolder.removeCatalogSubscribe(platformGBId); subscribeHolder.removeCatalogSubscribe(platformGBId);
subscribeHolder.removeMobilePositionSubscribe(platformGBId); subscribeHolder.removeMobilePositionSubscribe(platformGBId);
} }
} }
} }

58
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java

@ -411,38 +411,38 @@ public class StreamPushServiceImpl implements IStreamPushService {
// 遍历存储结果,查找app+Stream->platformId+catalogId的对应关系,然后执行批量写入 // 遍历存储结果,查找app+Stream->platformId+catalogId的对应关系,然后执行批量写入
for (StreamPushItem streamPushItem : streamPushItemsForPlatform) { for (StreamPushItem streamPushItem : streamPushItemsForPlatform) {
List<String[]> platFormInfoList = streamPushItemsForAll.get(streamPushItem.getApp() + streamPushItem.getStream()); List<String[]> platFormInfoList = streamPushItemsForAll.get(streamPushItem.getApp() + streamPushItem.getStream());
if (platFormInfoList != null) { if (platFormInfoList != null && platFormInfoList.size() > 0) {
if (platFormInfoList.size() > 0) { for (String[] platFormInfoArray : platFormInfoList) {
for (String[] platFormInfoArray : platFormInfoList) { StreamPushItem streamPushItemForPlatform = new StreamPushItem();
StreamPushItem streamPushItemForPlatform = new StreamPushItem(); streamPushItemForPlatform.setGbStreamId(streamPushItem.getGbStreamId());
streamPushItemForPlatform.setGbStreamId(streamPushItem.getGbStreamId()); if (platFormInfoArray.length > 0) {
if (platFormInfoArray.length > 0) { // 数组 platFormInfoArray 0 为平台ID。 1为目录ID
// 数组 platFormInfoArray 0 为平台ID。 1为目录ID // 不存在这个平台,则忽略导入此关联关系
// 不存在这个平台,则忽略导入此关联关系 if (platformInfoMap.get(platFormInfoArray[0]) == null
if (platformInfoMap.get(platFormInfoArray[0]) == null || platformInfoMap.get(platFormInfoArray[0]).get(platFormInfoArray[1]) == null) {
|| platformInfoMap.get(platFormInfoArray[0]).get(platFormInfoArray[1]) == null) { logger.info("导入数据时不存在平台或目录{}/{},已导入未分配", platFormInfoArray[0], platFormInfoArray[1] );
logger.info("导入数据时不存在平台或目录{}/{},已导入未分配", platFormInfoArray[0], platFormInfoArray[1] ); continue;
continue;
}
streamPushItemForPlatform.setPlatformId(platFormInfoArray[0]);
List<GbStream> gbStreamList = platformForEvent.get(streamPushItem.getPlatformId());
if (gbStreamList == null) {
gbStreamList = new ArrayList<>();
platformForEvent.put(platFormInfoArray[0], gbStreamList);
}
// 为发送通知整理数据
streamPushItemForPlatform.setName(streamPushItem.getName());
streamPushItemForPlatform.setApp(streamPushItem.getApp());
streamPushItemForPlatform.setStream(streamPushItem.getStream());
streamPushItemForPlatform.setGbId(streamPushItem.getGbId());
gbStreamList.add(streamPushItemForPlatform);
} }
if (platFormInfoArray.length > 1) { streamPushItemForPlatform.setPlatformId(platFormInfoArray[0]);
streamPushItemForPlatform.setCatalogId(platFormInfoArray[1]); if (platFormInfoArray[0].equals("34020000002110000001")) {
System.out.println(111);
} }
streamPushItemListFroPlatform.add(streamPushItemForPlatform); List<GbStream> gbStreamList = platformForEvent.get(platFormInfoArray[0]);
if (gbStreamList == null) {
gbStreamList = new ArrayList<>();
platformForEvent.put(platFormInfoArray[0], gbStreamList);
}
// 为发送通知整理数据
streamPushItemForPlatform.setName(streamPushItem.getName());
streamPushItemForPlatform.setApp(streamPushItem.getApp());
streamPushItemForPlatform.setStream(streamPushItem.getStream());
streamPushItemForPlatform.setGbId(streamPushItem.getGbId());
gbStreamList.add(streamPushItemForPlatform);
}
if (platFormInfoArray.length > 1) {
streamPushItemForPlatform.setCatalogId(platFormInfoArray[1]);
} }
streamPushItemListFroPlatform.add(streamPushItemForPlatform);
} }
} }

10
src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java

@ -168,16 +168,6 @@ public class StreamPushController {
result.setResult(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(wvpResult)); result.setResult(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(wvpResult));
return result; return result;
} }
// if (!file.getContentType().endsWith(".xls")
// && !file.getContentType().endsWith(".csv")
// && !file.getContentType().endsWith(".xlsx") ) {
// logger.warn("通道导入文件类型错误: {}",file.getContentType() );
// WVPResult<Object> wvpResult = new WVPResult<>();
// wvpResult.setCode(-1);
// wvpResult.setMsg("文件类型错误,请使用");
// result.setResult(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(wvpResult));
// return result;
// }
// 同时只处理一个文件 // 同时只处理一个文件
if (resultHolder.exist(key, null)) { if (resultHolder.exist(key, null)) {
logger.warn("已有导入任务正在执行"); logger.warn("已有导入任务正在执行");

Loading…
Cancel
Save