From 76ec3d1b60988478d40159ae2b5590f3674f99a4 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Fri, 8 Mar 2024 17:41:52 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=BF=87=E6=97=B6?= =?UTF-8?q?=E7=9A=84dockerFile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOCKERFILE | 130 ----------------------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 DOCKERFILE diff --git a/DOCKERFILE b/DOCKERFILE deleted file mode 100644 index f2a2ffa01..000000000 --- a/DOCKERFILE +++ /dev/null @@ -1,130 +0,0 @@ -#很久没维护了,已经与定前版本不匹配 - - -FROM ubuntu:20.04 AS build - -ARG DEBIAN_FRONTEND=noninteractive -ENV TZ=Asia/Shanghai - -EXPOSE 18080/tcp - -EXPOSE 5060/tcp -EXPOSE 5060/udp - -EXPOSE 6379/tcp - -EXPOSE 18081/tcp - -EXPOSE 80/tcp -EXPOSE 1935/tcp -EXPOSE 554/tcp -EXPOSE 554/udp -EXPOSE 30000-30500/tcp -EXPOSE 30000-30500/udp - -ENV LC_ALL zh_CN.UTF-8 - -# 使用了自己的settings.xml作为maven的源,加快打包速度 -RUN apt-get update && \ - DEBIAN_FRONTEND="noninteractive" && \ - apt-get install -y --no-install-recommends openjdk-11-jre git maven nodejs npm build-essential tcl language-pack-zh-hans \ - cmake curl vim ca-certificates tzdata libmysqlclient-dev redis-server libssl-dev libx264-dev libfaac-dev ffmpeg -WORKDIR /home - -RUN git clone https://gitee.com/pan648540858/maven.git && \ - cp maven/settings.xml /usr/share/maven/conf/ && \ - git clone https://gitee.com/pan648540858/wvp-GB28181.git && \ - git clone https://gitee.com/pan648540858/wvp-pro-assist.git - # 编译前端界面 -WORKDIR /home/wvp-GB28181/web_src - -RUN npm install && \ - npm run build && \ - mkdir -p /opt/wvp/config && \ - mkdir -p /opt/assist/config && \ - cp /home/wvp-GB28181/src/main/resources/application-dev.yml /opt/wvp/config/application.yml && \ - cp /home/wvp-pro-assist/src/main/resources/application-dev.yml /opt/assist/config/application.yml - - # wvp打包 -WORKDIR /home/wvp-GB28181 -RUN mvn compile && \ - mvn package && \ - cp /home/wvp-GB28181/target/wvp*.jar /opt/wvp/ - - # wvp 录像管理打包 -WORKDIR /home/wvp-pro-assist -RUN mvn compile && \ - mvn package && \ - cp /home/wvp-pro-assist/target/*.jar /opt/assist/ - - # zlm打包 -WORKDIR /home -RUN mkdir -p /opt/media && \ - git clone --depth=1 https://gitee.com/xia-chu/ZLMediaKit && \ - cd ZLMediaKit && git submodule update --init --recursive && \ - mkdir -p build release/linux/Release/ &&\ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Release .. && \ - make -j4 && \ - rm -rf ../release/linux/Release/config.ini && \ - cp -r ../release/linux/Release/* /opt/media && \ - mkdir -p /opt/media/www/record - - - # 清理 - RUN rm -rf /home/wiki && \ - rm -rf /home/wvp-GB28181 && \ - apt-get autoremove -y git maven nodejs npm && \ - apt-get clean -y && \ - rm -rf /var/lib/apt/lists/*dic - -WORKDIR /opt/wvp -RUN echo '#!/bin/bash' > run.sh && \ - echo 'echo ${WVP_IP}' >> run.sh && \ - echo 'echo ${WVP_CONFIG}' >> run.sh && \ - echo 'redis-server --daemonize yes --bind 0.0.0.0' >> run.sh && \ - echo 'cd /opt/assist' >> run.sh && \ - echo 'nohup java -jar *.jar --userSettings.record=/opt/media/www/record/ &' >> run.sh && \ - echo 'nohup /opt/media/MediaServer -d -m 3 &' >> run.sh && \ - echo 'cd /opt/wvp' >> run.sh && \ - echo 'if [-n "${WVP_CONFIG}"]; then' >> run.sh && \ - echo ' java -jar *.jar --spring.config.location=/opt/wvp/config/application.yml --media.record-assist-port=18081 ${WVP_CONFIG}' >> run.sh && \ - echo 'else' >> run.sh && \ - echo ' java -jar *.jar --spring.config.location=/opt/wvp/config/application.yml --media.record-assist-port=18081 --media.ip=127.0.0.1 --media.sdp-ip=${WVP_IP} --sip.ip=${WVP_IP} --media.stream-ip=${WVP_IP}' >> run.sh && \ - echo 'fi' >> run.sh -RUN chmod +x run.sh - -FROM ubuntu:20.04 - -ARG DEBIAN_FRONTEND=noninteractive -ENV TZ=Asia/Shanghai - -EXPOSE 18080/tcp - -EXPOSE 5060/tcp -EXPOSE 5060/udp - -EXPOSE 6379/tcp - -EXPOSE 18081/tcp - -EXPOSE 80/tcp -EXPOSE 1935/tcp -EXPOSE 554/tcp -EXPOSE 554/udp -EXPOSE 30000-30500/tcp -EXPOSE 30000-30500/udp - -ENV LC_ALL zh_CN.UTF-8 - -RUN apt-get update && \ - DEBIAN_FRONTEND="noninteractive" && \ - apt-get install -y --no-install-recommends openjdk-11-jre tcl language-pack-zh-hans \ - ca-certificates tzdata libmysqlclient21 redis-server libssl1.1 libx264-155 libfaac0 ffmpeg && \ - apt-get autoremove -y && \ - apt-get clean -y && \ - rm -rf /var/lib/apt/lists/*dic - -WORKDIR /opt/wvp -COPY --from=build /opt /opt -CMD ["sh", "run.sh"] From ad4e61d7e7bde642c0cfa35cc54d7b9e9a2eba03 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Mon, 11 Mar 2024 14:22:40 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E9=9F=B3=E9=A2=91=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_src/src/components/channelList.vue | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index 8af42692f..24f494683 100755 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -100,9 +100,9 @@ {{ scope.row.location }} - + - - {{ scope.row.PTZTypeText }} + {{ scope.row.ptztypeText }} @@ -312,7 +312,7 @@ export default { that.total = res.data.data.total; that.deviceChannelList = res.data.data.list; that.deviceChannelList.forEach(e => { - e.PTZType = e.PTZType + ""; + e.ptztype = e.ptztype + ""; that.$set(e, "edit", false); that.$set(e, "location", ""); if (e.longitude && e.latitude) { @@ -460,7 +460,7 @@ export default { this.total = res.data.data.total; this.deviceChannelList = res.data.data.list; this.deviceChannelList.forEach(e => { - e.PTZType = e.PTZType + ""; + e.ptztype = e.ptztype + ""; this.$set(e, "edit", false); this.$set(e, "location", ""); if (e.longitude && e.latitude) { From 010e73b0c7e4454fe1e354460c0de69b347d7361 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Mon, 11 Mar 2024 22:56:24 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=92=8C=E5=88=86=E5=B1=8F=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E5=B0=BA=E5=AF=B8=E5=BC=82=E5=B8=B8=E7=9A=84?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_src/src/components/common/jessibuca.vue | 24 +++++++++++++------ .../src/components/dialog/devicePlayer.vue | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/web_src/src/components/common/jessibuca.vue b/web_src/src/components/common/jessibuca.vue index 3419bb590..afd422297 100755 --- a/web_src/src/components/common/jessibuca.vue +++ b/web_src/src/components/common/jessibuca.vue @@ -1,6 +1,6 @@ + style="width:100%; height: 100%; background-color: #000000;margin:0 auto;position: relative;"> @@ -49,16 +49,23 @@ export default { created() { let paramUrl = decodeURIComponent(this.$route.params.url) this.$nextTick(() => { + console.log(2222) this.updatePlayerDomSize() - window.onresize = () => { - this.updatePlayerDomSize() - } + window.onresize = this.updatePlayerDomSize if (typeof (this.videoUrl) == "undefined") { this.videoUrl = paramUrl; } this.btnDom = document.getElementById("buttonsBox"); }) }, + // mounted() { + // const ro = new ResizeObserver(entries => { + // entries.forEach(entry => { + // this.updatePlayerDomSize() + // }); + // }); + // ro.observe(this.$refs.container); + // }, watch: { videoUrl: { handler(val, _) { @@ -74,15 +81,18 @@ export default { let dom = this.$refs.container; let width = dom.parentNode.clientWidth let height = (9 / 16) * width + console.log(height) - const clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight) - if (height > clientHeight) { - height = clientHeight + console.log(dom.clientHeight) + if (height > dom.clientHeight) { + height = dom.clientHeight width = (16 / 9) * height } if (width > 0 && height > 0) { dom.style.width = width + 'px'; dom.style.height = height + "px"; + console.log(width) + console.log(height) } }, create() { diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue index 5239219e3..f6bd2b23c 100755 --- a/web_src/src/components/dialog/devicePlayer.vue +++ b/web_src/src/components/dialog/devicePlayer.vue @@ -7,7 +7,7 @@ v-if="Object.keys(this.player).length > 1"> From cb5afce55eec2badda5090c27564e43f201ac9af Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Tue, 12 Mar 2024 23:55:00 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E5=AF=B9=E8=AE=B2=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=9A=84?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/gb28181/session/AudioBroadcastManager.java | 1 + .../transmit/event/request/impl/InviteRequestProcessor.java | 5 ++++- .../response/cmd/BroadcastResponseMessageHandler.java | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java index 03aa7497c..343d2a6ec 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java @@ -25,6 +25,7 @@ public class AudioBroadcastManager { public void update(AudioBroadcastCatch audioBroadcastCatch) { if (SipUtils.isFrontEnd(audioBroadcastCatch.getDeviceId())) { + audioBroadcastCatch.setChannelId(audioBroadcastCatch.getDeviceId()); data.put(audioBroadcastCatch.getDeviceId(), audioBroadcastCatch); }else { data.put(audioBroadcastCatch.getDeviceId() + audioBroadcastCatch.getChannelId(), audioBroadcastCatch); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java index 4646b38d6..80844353e 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java @@ -977,7 +977,10 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements } if (device != null) { logger.info("收到设备" + requesterId + "的语音广播Invite请求"); - String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId() + broadcastCatch.getChannelId(); + String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId(); + if (!SipUtils.isFrontEnd(device.getDeviceId())) { + key += broadcastCatch.getChannelId(); + } dynamicTask.stop(key); try { responseAck(request, Response.TRYING); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java index 4b6bbbc25..6ab75d206 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java @@ -11,6 +11,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; +import com.genersoft.iot.vmp.gb28181.utils.SipUtils; import com.genersoft.iot.vmp.service.IPlayService; import gov.nist.javax.sip.message.SIPRequest; import org.dom4j.Element; @@ -77,7 +78,10 @@ public class BroadcastResponseMessageHandler extends SIPRequestProcessorParent i audioBroadcastCatch.setStatus(AudioBroadcastCatchStatus.WaiteInvite); audioBroadcastManager.update(audioBroadcastCatch); // 等待invite消息, 超时则结束 - String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId() + channelId; + String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId(); + if (!SipUtils.isFrontEnd(device.getDeviceId())) { + key += audioBroadcastCatch.getChannelId(); + } dynamicTask.startDelay(key, ()->{ logger.info("[语音广播]等待invite消息超时:{}/{}", device.getDeviceId(), channelId); playService.stopAudioBroadcast(device.getDeviceId(), channelId); From e1d476a54a7aa72f429e41e5c2957b77edbeb0a7 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Wed, 13 Mar 2024 15:24:09 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=94=B6=E5=88=B0redis?= =?UTF-8?q?=E6=8E=A8=E5=8A=A8=E7=9A=84=E6=8E=A8=E6=B5=81=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=86=85=E5=AE=B9=E9=87=8D=E5=A4=8D=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/service/IGbStreamService.java | 4 ++++ .../iot/vmp/service/IStreamPushService.java | 3 +++ .../vmp/service/impl/GbStreamServiceImpl.java | 7 ++++++- .../service/impl/StreamPushServiceImpl.java | 5 +++++ .../RedisPushStreamStatusListMsgListener.java | 21 +++++++++++++------ .../iot/vmp/storager/dao/GbStreamMapper.java | 4 ++++ .../vmp/storager/dao/StreamPushMapper.java | 9 ++++++++ .../gb28181/gbStream/GbStreamController.java | 7 ++++--- 8 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java b/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java index 43f1a8a67..e40909779 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java @@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; import com.github.pagehelper.PageInfo; import java.util.List; +import java.util.Map; /** * 级联国标平台关联流业务接口 @@ -71,4 +72,7 @@ public interface IGbStreamService { void delAllPlatformInfo(String platformId, String catalogId); List getGbChannelWithGbid(String gbId); + + Map getAllGBId(); + } diff --git a/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java b/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java index 333b7b319..10b1eff1c 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java @@ -115,4 +115,7 @@ public interface IStreamPushService { */ ResourceBaseInfo getOverview(); + Map getAllAppAndStreamMap(); + + } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java index 9fcbb4071..c2c9d725a 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java @@ -19,11 +19,11 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.List; +import java.util.Map; @Service @DS("master") @@ -268,4 +268,9 @@ public class GbStreamServiceImpl implements IGbStreamService { public List getGbChannelWithGbid(String gbId) { return gbStreamMapper.selectByGBId(gbId); } + + @Override + public Map getAllGBId() { + return gbStreamMapper.getAllGBId(); + } } 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 13c452c1f..e2d7e68c8 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java @@ -548,4 +548,9 @@ public class StreamPushServiceImpl implements IStreamPushService { return new ResourceBaseInfo(total, online); } + + @Override + public Map getAllAppAndStreamMap() { + return streamPushMapper.getAllAppAndStreamMap(); + } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java index cb34ff591..24a19f3e8 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java +++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java @@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.service.redisMsg; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; +import com.genersoft.iot.vmp.gb28181.bean.GbStream; import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; import com.genersoft.iot.vmp.service.IGbStreamService; import com.genersoft.iot.vmp.service.IMediaServerService; @@ -19,6 +20,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentLinkedQueue; /** @@ -57,7 +59,8 @@ public class RedisPushStreamStatusListMsgListener implements MessageListener { try { List streamPushItems = JSON.parseArray(new String(msg.getBody()), StreamPushItem.class); //查询全部的app+stream 用于判断是添加还是修改 - List allAppAndStream = streamPushService.getAllAppAndStream(); + Map allAppAndStream = streamPushService.getAllAppAndStreamMap(); + Map allGBId = gbStreamService.getAllGBId(); /** * 用于存储更具APP+Stream过滤后的数据,可以直接存入stream_push表与gb_stream表 @@ -67,9 +70,15 @@ public class RedisPushStreamStatusListMsgListener implements MessageListener { for (StreamPushItem streamPushItem : streamPushItems) { String app = streamPushItem.getApp(); String stream = streamPushItem.getStream(); - boolean contains = allAppAndStream.contains(app + stream); + boolean contains = allAppAndStream.containsKey(app + stream); //不存在就添加 if (!contains) { + if (allGBId.containsKey(streamPushItem.getGbId())) { + GbStream gbStream = allGBId.get(streamPushItem.getGbId()); + logger.warn("[REDIS消息-推流设备列表更新] 国标编号重复: {}, 已分配给{}/{}", + streamPushItem.getGbId(), gbStream.getApp(), gbStream.getStream()); + continue; + } streamPushItem.setStreamType("push"); streamPushItem.setCreateTime(DateUtil.getNow()); streamPushItem.setMediaServerId(mediaServerService.getDefaultMediaServer().getId()); @@ -77,25 +86,25 @@ public class RedisPushStreamStatusListMsgListener implements MessageListener { streamPushItem.setOriginTypeStr("rtsp_push"); streamPushItem.setTotalReaderCount("0"); streamPushItemForSave.add(streamPushItem); + allGBId.put(streamPushItem.getGbId(), streamPushItem); } else { //存在就只修改 name和gbId streamPushItemForUpdate.add(streamPushItem); } } - if (streamPushItemForSave.size() > 0) { - + if (!streamPushItemForSave.isEmpty()) { logger.info("添加{}条",streamPushItemForSave.size()); logger.info(JSONObject.toJSONString(streamPushItemForSave)); streamPushService.batchAdd(streamPushItemForSave); } - if(streamPushItemForUpdate.size()>0){ + if(!streamPushItemForUpdate.isEmpty()){ logger.info("修改{}条",streamPushItemForUpdate.size()); logger.info(JSONObject.toJSONString(streamPushItemForUpdate)); gbStreamService.updateGbIdOrName(streamPushItemForUpdate); } }catch (Exception e) { - logger.warn("[REDIS消息-推流设备列表更新] 发现未处理的异常, \r\n{}", JSON.toJSONString(message)); + logger.warn("[REDIS消息-推流设备列表更新] 发现未处理的异常, \r\n{}", new String(message.getBody())); logger.error("[REDIS消息-推流设备列表更新] 异常内容: ", e); } } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java index 6591e3f9d..3790bdabb 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java @@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; @Mapper @Repository @@ -170,4 +171,7 @@ public interface GbStreamMapper { @Select("SELECT status FROM wvp_stream_push WHERE app=#{app} AND stream=#{stream}") Boolean selectStatusForPush(@Param("app") String app, @Param("stream") String stream); + @MapKey("gbId") + @Select("SELECT * from wvp_gb_stream") + Map getAllGBId(); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java index 682f07c6d..daf21eff6 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; @Mapper @Repository @@ -195,4 +196,12 @@ public interface StreamPushMapper { "" + "") List getListIn(List streamPushItems); + + @MapKey("vhost") + @Select("SELECT CONCAT(wsp.app, wsp.stream) as vhost, wsp.app, wsp.stream, wgs.gb_id, wgs.name " + + " from wvp_stream_push wsp " + + " left join wvp_gb_stream wgs on wgs.app = wsp.app and wgs.stream = wsp.stream") + Map getAllAppAndStreamMap(); + + } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java index d47918014..e65a57950 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java @@ -3,10 +3,9 @@ package com.genersoft.iot.vmp.vmanager.gb28181.gbStream; import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.gb28181.bean.GbStream; -import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.service.IGbStreamService; import com.genersoft.iot.vmp.service.IPlatformService; -import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import com.genersoft.iot.vmp.service.IStreamPushService; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.gb28181.gbStream.bean.GbStreamParam; import com.github.pagehelper.PageInfo; @@ -20,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; @Tag(name = "视频流关联到级联平台") @@ -34,6 +32,9 @@ public class GbStreamController { @Autowired private IGbStreamService gbStreamService; + @Autowired + private IStreamPushService service; + @Autowired private IPlatformService platformService; From dc8869be4972b35e4f5a045cb5408ae01f2aad14 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Wed, 13 Mar 2024 15:40:30 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=94=B6=E5=88=B0redis?= =?UTF-8?q?=E6=8E=A8=E5=8A=A8=E7=9A=84=E6=8E=A8=E6=B5=81=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=96=B0=E5=86=85=E5=AE=B9=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redisMsg/RedisPushStreamStatusListMsgListener.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java index 24a19f3e8..65239c8f0 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java +++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisPushStreamStatusListMsgListener.java @@ -75,7 +75,7 @@ public class RedisPushStreamStatusListMsgListener implements MessageListener { if (!contains) { if (allGBId.containsKey(streamPushItem.getGbId())) { GbStream gbStream = allGBId.get(streamPushItem.getGbId()); - logger.warn("[REDIS消息-推流设备列表更新] 国标编号重复: {}, 已分配给{}/{}", + logger.warn("[REDIS消息-推流设备列表更新-INSERT] 国标编号重复: {}, 已分配给{}/{}", streamPushItem.getGbId(), gbStream.getApp(), gbStream.getStream()); continue; } @@ -88,6 +88,12 @@ public class RedisPushStreamStatusListMsgListener implements MessageListener { streamPushItemForSave.add(streamPushItem); allGBId.put(streamPushItem.getGbId(), streamPushItem); } else { + if (allGBId.containsKey(streamPushItem.getGbId())) { + GbStream gbStream = allGBId.get(streamPushItem.getGbId()); + logger.warn("[REDIS消息-推流设备列表更新-UPDATE] 国标编号重复: {}, 已分配给{}/{}", + streamPushItem.getGbId(), gbStream.getApp(), gbStream.getStream()); + continue; + } //存在就只修改 name和gbId streamPushItemForUpdate.add(streamPushItem); } From d1624e2d064c56dffc5a798f0cd038a3b18b0d4b Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Wed, 13 Mar 2024 16:13:05 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E4=BD=8D=E7=BD=AE=E8=AE=A2=E9=98=85=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index 3da284507..1dc7db448 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -575,8 +575,8 @@ public class DeviceServiceImpl implements IDeviceService { }else if (device.getSubscribeCycleForMobilePosition() == 0) { // 取消订阅 - deviceInStore.setSubscribeCycleForCatalog(0); - removeCatalogSubscribe(deviceInStore, null); + deviceInStore.setSubscribeCycleForMobilePosition(0); + removeMobilePositionSubscribe(deviceInStore, null); } } if (deviceInStore.getGeoCoordSys() != null) { From da4ac962d05194d59bb93684b7aa049b70053ee4 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Wed, 13 Mar 2024 16:37:45 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=93=E5=8C=85?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=EF=BC=8C=E9=85=8D=E7=BD=AE=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=94=BE=E5=88=B0jar=E5=8C=85=E6=97=81=E8=BE=B9=E5=B9=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4jar=E5=86=85=E9=83=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pom.xml b/pom.xml index b316e9807..7ec73b81c 100644 --- a/pom.xml +++ b/pom.xml @@ -382,6 +382,44 @@ true + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + **/all-application.yml + **/application.yml + **/application-*.yml + **/local.jks + + + + + maven-resources-plugin + + + copy-resources + package + + copy-resources + + + + + src/main/resources + + application.yml + application-*.yml + + + + ${project.build.directory} + + + +