From 4f22994cdbf1254005def8bb7639cbfd3fd2b450 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期六, 25 三月 2023 10:04:57 +0800 Subject: [PATCH] 优化国标级联的更新 --- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java | 52 ----------------- web_src/src/components/dialog/platformEdit.vue | 6 +- src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java | 6 ++ src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java | 80 +++++++++++++++++++++++++- 4 files changed, 86 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java b/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java index 17f8b37..12a03b4 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java @@ -26,6 +26,12 @@ boolean add(ParentPlatform parentPlatform); /** + * 娣诲姞绾ц仈骞冲彴 + * @param parentPlatform 绾ц仈骞冲彴 + */ + boolean update(ParentPlatform parentPlatform); + + /** * 骞冲彴涓婄嚎 * @param parentPlatform 骞冲彴淇℃伅 */ diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java index 136689c..d7d9f6c 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java @@ -11,8 +11,8 @@ import com.genersoft.iot.vmp.service.IPlatformService; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; -import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; -import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper; +import com.genersoft.iot.vmp.storager.dao.*; +import com.genersoft.iot.vmp.utils.DateUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; @@ -40,6 +40,15 @@ @Autowired private ParentPlatformMapper platformMapper; + + @Autowired + private PlatformCatalogMapper catalogMapper; + + @Autowired + private PlatformChannelMapper platformChannelMapper; + + @Autowired + private PlatformGbStreamMapper platformGbStreamMapper; @Autowired private IRedisCatchStorage redisCatchStorage; @@ -113,6 +122,69 @@ } @Override + public boolean update(ParentPlatform parentPlatform) { + parentPlatform.setCharacterSet(parentPlatform.getCharacterSet().toUpperCase()); + ParentPlatform parentPlatformOld = platformMapper.getParentPlatById(parentPlatform.getId()); + parentPlatform.setUpdateTime(DateUtil.getNow()); + if (!parentPlatformOld.getTreeType().equals(parentPlatform.getTreeType())) { + // 鐩綍缁撴瀯鍙戠敓鍙樺寲锛屾竻绌轰箣鍓嶇殑鍏宠仈鍏崇郴 + logger.info("淇濆瓨骞冲彴{}鏃跺彂鐜扮洰褰曠粨鏋勫彉鍖栵紝娓呯┖鍏宠仈鍏崇郴", parentPlatform.getDeviceGBId()); + catalogMapper.delByPlatformId(parentPlatformOld.getServerGBId()); + platformChannelMapper.delByPlatformId(parentPlatformOld.getServerGBId()); + platformGbStreamMapper.delByPlatformId(parentPlatformOld.getServerGBId()); + } + + // 鍋滄蹇冭烦瀹氭椂 + final String keepaliveTaskKey = KEEPALIVE_KEY_PREFIX + parentPlatformOld.getServerGBId(); + dynamicTask.stop(keepaliveTaskKey); + // 鍋滄娉ㄥ唽瀹氭椂 + final String registerTaskKey = REGISTER_KEY_PREFIX + parentPlatformOld.getServerGBId(); + dynamicTask.stop(registerTaskKey); + // 娉ㄩ攢鏃х殑 + try { + commanderForPlatform.unregister(parentPlatformOld, null, eventResult -> { + logger.info("[鍥芥爣绾ц仈] 娉ㄩ攢鎴愬姛锛� 骞冲彴锛歿}", parentPlatformOld.getServerGBId()); + }); + } catch (InvalidArgumentException | ParseException | SipException e) { + logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 娉ㄩ攢: {}", e.getMessage()); + } + + // 鏇存柊鏁版嵁搴� + if (parentPlatform.getCatalogGroup() == 0) { + parentPlatform.setCatalogGroup(1); + } + if (parentPlatform.getAdministrativeDivision() == null) { + parentPlatform.setAdministrativeDivision(parentPlatform.getAdministrativeDivision()); + } + + platformMapper.updateParentPlatform(parentPlatform); + // 鏇存柊redis + redisCatchStorage.delPlatformCatchInfo(parentPlatformOld.getServerGBId()); + ParentPlatformCatch parentPlatformCatch = new ParentPlatformCatch(); + parentPlatformCatch.setParentPlatform(parentPlatform); + parentPlatformCatch.setId(parentPlatform.getServerGBId()); + redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch); + // 娉ㄥ唽 + if (parentPlatform.isEnable()) { + // 淇濆瓨鏃跺惎鐢ㄥ氨鍙戦�佹敞鍐� + // 娉ㄥ唽鎴愬姛鏃剁敱绋嬪簭鐩存帴璋冪敤浜唎nline鏂规硶 + try { + commanderForPlatform.register(parentPlatform, eventResult -> { + logger.info("[鍥芥爣绾ц仈] {},娣诲姞鍚戜笂绾ф敞鍐屽け璐ワ紝璇风‘瀹氫笂绾у钩鍙板彲鐢ㄦ椂閲嶆柊淇濆瓨", parentPlatform.getServerGBId()); + }, null); + } catch (InvalidArgumentException | ParseException | SipException e) { + logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈: {}", e.getMessage()); + } + } + // 閲嶆柊寮�鍚畾鏃舵敞鍐岋紝 浣跨敤缁娑堟伅 + // 閲嶆柊寮�濮嬪績璺充繚娲� + + + return false; + } + + + @Override public void online(ParentPlatform parentPlatform) { logger.info("[鍥芥爣绾ц仈]锛歿}, 骞冲彴涓婄嚎/鏇存柊娉ㄥ唽", parentPlatform.getServerGBId()); platformMapper.updateParentPlatformStatus(parentPlatform.getServerGBId(), true); @@ -137,7 +209,7 @@ ()-> { registerTask(parentPlatform); }, - (parentPlatform.getExpires() - 10) *1000); + (parentPlatform.getExpires()) *1000); } @@ -183,7 +255,7 @@ logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佸績璺�: {}", e.getMessage()); } }, - (parentPlatform.getKeepTimeout() - 10)*1000); + (parentPlatform.getKeepTimeout())*1000); } } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java index 7628f7c..e233d1b 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java @@ -205,58 +205,8 @@ ) { throw new ControllerException(ErrorCode.ERROR400); } - parentPlatform.setCharacterSet(parentPlatform.getCharacterSet().toUpperCase()); - ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId()); - parentPlatform.setUpdateTime(DateUtil.getNow()); - if (!parentPlatformOld.getTreeType().equals(parentPlatform.getTreeType())) { - // 鐩綍缁撴瀯鍙戠敓鍙樺寲锛屾竻绌轰箣鍓嶇殑鍏宠仈鍏崇郴 - logger.info("淇濆瓨骞冲彴{}鏃跺彂鐜扮洰褰曠粨鏋勫彉鍖栵紝娓呯┖鍏宠仈鍏崇郴", parentPlatform.getDeviceGBId()); - storager.cleanContentForPlatform(parentPlatform.getServerGBId()); - } - boolean updateResult = storager.updateParentPlatform(parentPlatform); - - if (updateResult) { - // 淇濆瓨鏃跺惎鐢ㄥ氨鍙戦�佹敞鍐� - if (parentPlatform.isEnable()) { - if (parentPlatformOld != null && parentPlatformOld.isStatus()) { - try { - commanderForPlatform.unregister(parentPlatformOld, null, null); - } catch (InvalidArgumentException | ParseException | SipException e) { - logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 娉ㄩ攢: {}", e.getMessage()); - } - try { - Thread.sleep(500); - } catch (InterruptedException e) { - logger.error("[绾跨▼浼戠湢澶辫触] : {}", e.getMessage()); - } - // 鍙淇濆瓨灏卞彂閫佹敞鍐� - try { - commanderForPlatform.register(parentPlatform, null, null); - } catch (InvalidArgumentException | ParseException | SipException e) { - logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 娉ㄥ唽: {}", e.getMessage()); - } - - } else { - // 鍙淇濆瓨灏卞彂閫佹敞鍐� - try { - commanderForPlatform.register(parentPlatform, null, null); - } catch (InvalidArgumentException | ParseException | SipException e) { - logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 娉ㄥ唽: {}", e.getMessage()); - } - } - } else if (parentPlatformOld != null && parentPlatformOld.isEnable() && !parentPlatform.isEnable()) { // 鍏抽棴鍚敤鏃舵敞閿� - try { - commanderForPlatform.unregister(parentPlatformOld, null, null); - } catch (InvalidArgumentException | ParseException | SipException e) { - logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 娉ㄩ攢: {}", e.getMessage()); - } - // 鍋滄璁㈤槄鐩稿叧鐨勫畾鏃朵换鍔� - subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId()); - } - } else { - throw new ControllerException(ErrorCode.ERROR100.getCode(),"鍐欏叆鏁版嵁搴撳け璐�"); - } + platformService.update(parentPlatform); } /** diff --git a/web_src/src/components/dialog/platformEdit.vue b/web_src/src/components/dialog/platformEdit.vue index 2a41e6a..be7c505 100644 --- a/web_src/src/components/dialog/platformEdit.vue +++ b/web_src/src/components/dialog/platformEdit.vue @@ -157,7 +157,7 @@ devicePort: null, username: null, password: null, - expires: 300, + expires: 3600, keepTimeout: 60, transport: "UDP", characterSet: "GB2312", @@ -305,7 +305,7 @@ devicePort: null, username: null, password: null, - expires: 300, + expires: 3600, keepTimeout: 60, transport: "UDP", characterSet: "GB2312", @@ -332,7 +332,7 @@ }, checkExpires: function() { if (this.platform.enable && this.platform.expires === "0") { - this.platform.expires = "300"; + this.platform.expires = "3600"; } }, rtcpCheckBoxChange: function (result){ -- Gitblit v1.8.0