648540858
2022-03-17 59ef6e67d3a1357c19039527dac47747e2ac20fe
统一国标设备与级联平台字符集的使用
8个文件已修改
142 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/ParentPlatformList.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -105,7 +105,7 @@
    private boolean firsRegister;
    /**
     * 字符集, 支持 utf-8 与 gb2312
     * 字符集, 支持 UTF-8 与 GB2312
     */
    private String charset ;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
@@ -223,7 +223,7 @@
        CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(Request.MESSAGE), Request.MESSAGE);
        MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
        // 设置编码, 防止中文乱码
        messageFactory.setDefaultContentEncodingCharset("gb2312");
        messageFactory.setDefaultContentEncodingCharset(parentPlatform.getCharacterSet());
        request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
                toHeader, viaHeaders, maxForwards);
        List<String> agentParam = new ArrayList<>();
@@ -235,58 +235,4 @@
        request.setContent(content, contentTypeHeader);
        return request;
    }
//    public Request createNotifyRequest(ParentPlatform parentPlatform, String content, CallIdHeader callIdHeader, String viaTag, String fromTag, SubscribeInfo subscribeInfo) throws PeerUnavailableException, ParseException, InvalidArgumentException {
//        Request request = null;
//        // sipuri
//        SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort());
//        // via
//        ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
//        ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
//                parentPlatform.getTransport(), viaTag);
//        viaHeader.setRPort();
//        viaHeaders.add(viaHeader);
//        // from
//        SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(),
//                parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort());
//        Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
//        FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
//        // to
//        SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerGBDomain());
//        Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
//        ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, subscribeInfo.getFromTag());
//
//        // Forwards
//        MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
//        // ceq
//        CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(Request.NOTIFY), Request.NOTIFY);
//        MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
//        // 设置编码, 防止中文乱码
//        messageFactory.setDefaultContentEncodingCharset("gb2312");
//        request = messageFactory.createRequest(requestURI, Request.NOTIFY, callIdHeader, cSeqHeader, fromHeader,
//                toHeader, viaHeaders, maxForwards);
//        List<String> agentParam = new ArrayList<>();
//        agentParam.add("wvp-pro");
//        UserAgentHeader userAgentHeader = sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);
//        request.addHeader(userAgentHeader);
//
//        EventHeader event = sipFactory.createHeaderFactory().createEventHeader(subscribeInfo.getEventType());
//        if (subscribeInfo.getEventId() != null) {
//            event.setEventId(subscribeInfo.getEventId());
//        }
//
//        request.addHeader(event);
//
//        SubscriptionStateHeader active = sipFactory.createHeaderFactory().createSubscriptionStateHeader("active");
//        request.setHeader(active);
//
//        String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort();
//        Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory()
//                .createSipURI(parentPlatform.getDeviceGBId(), sipAddress));
//        request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
//
//        ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
//        request.setContent(content, contentTypeHeader);
//        return request;
//    }
}
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -1120,8 +1120,9 @@
    @Override
    public boolean deviceStatusQuery(Device device, SipSubscribe.Event errorEvent) {
        try {
            String charset = device.getCharset();
            StringBuffer catalogXml = new StringBuffer(200);
            catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            catalogXml.append("<Query>\r\n");
            catalogXml.append("<CmdType>DeviceStatus</CmdType>\r\n");
            catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -1153,7 +1154,8 @@
    public boolean deviceInfoQuery(Device device) {
        try {
            StringBuffer catalogXml = new StringBuffer(200);
            catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            catalogXml.append("<Query>\r\n");
            catalogXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
            catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -1185,7 +1187,8 @@
    public boolean catalogQuery(Device device, SipSubscribe.Event errorEvent) {
        try {
            StringBuffer catalogXml = new StringBuffer(200);
            catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            catalogXml.append("<Query>\r\n");
            catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
            catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -1224,7 +1227,8 @@
        }
        try {
            StringBuffer recordInfoXml = new StringBuffer(200);
            recordInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            recordInfoXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            recordInfoXml.append("<Query>\r\n");
            recordInfoXml.append("<CmdType>RecordInfo</CmdType>\r\n");
            recordInfoXml.append("<SN>" + sn + "</SN>\r\n");
@@ -1396,7 +1400,8 @@
    public boolean mobilePostitionQuery(Device device, SipSubscribe.Event errorEvent) {
        try {
            StringBuffer mobilePostitionXml = new StringBuffer(200);
            mobilePostitionXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            mobilePostitionXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            mobilePostitionXml.append("<Query>\r\n");
            mobilePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
            mobilePostitionXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -1431,7 +1436,8 @@
    public boolean mobilePositionSubscribe(Device device, int expires, int interval) {
        try {
            StringBuffer subscribePostitionXml = new StringBuffer(200);
            subscribePostitionXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            subscribePostitionXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            subscribePostitionXml.append("<Query>\r\n");
            subscribePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
            subscribePostitionXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -1473,7 +1479,8 @@
    public boolean alarmSubscribe(Device device, int expires, String startPriority, String endPriority, String alarmMethod, String alarmType, String startTime, String endTime) {
        try {
            StringBuffer cmdXml = new StringBuffer(200);
            cmdXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            cmdXml.append("<Query>\r\n");
            cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
            cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -1518,7 +1525,8 @@
    public boolean catalogSubscribe(Device device, SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) {
        try {
            StringBuffer cmdXml = new StringBuffer(200);
            cmdXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            String charset = device.getCharset();
            cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
            cmdXml.append("<Query>\r\n");
            cmdXml.append("<CmdType>Catalog</CmdType>\r\n");
            cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -215,8 +215,9 @@
            return false;
        }
        try {
            String characterSet = parentPlatform.getCharacterSet();
            StringBuffer catalogXml = new StringBuffer(600);
            catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet +"\"?>\r\n");
            catalogXml.append("<Response>\r\n");
            catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
            catalogXml.append("<SN>" +sn + "</SN>\r\n");
@@ -280,8 +281,9 @@
            return false;
        }
        try {
            String characterSet = parentPlatform.getCharacterSet();
            StringBuffer deviceInfoXml = new StringBuffer(600);
            deviceInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            deviceInfoXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
            deviceInfoXml.append("<Response>\r\n");
            deviceInfoXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
            deviceInfoXml.append("<SN>" +sn + "</SN>\r\n");
@@ -319,8 +321,9 @@
            return false;
        }
        try {
            String characterSet = parentPlatform.getCharacterSet();
            StringBuffer deviceStatusXml = new StringBuffer(600);
            deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
            deviceStatusXml.append("<Response>\r\n");
            deviceStatusXml.append("<CmdType>DeviceStatus</CmdType>\r\n");
            deviceStatusXml.append("<SN>" +sn + "</SN>\r\n");
@@ -350,8 +353,9 @@
        }
        try {
            String characterSet = parentPlatform.getCharacterSet();
            StringBuffer deviceStatusXml = new StringBuffer(600);
            deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
            deviceStatusXml.append("<Notify>\r\n");
            deviceStatusXml.append("<CmdType>MobilePosition</CmdType>\r\n");
            deviceStatusXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
@@ -418,8 +422,9 @@
                                   SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent,  SipSubscribe.Event okEvent )
            throws NoSuchFieldException, IllegalAccessException, SipException, ParseException {
        MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
        String characterSet = parentPlatform.getCharacterSet();
         // 设置编码, 防止中文乱码
        messageFactory.setDefaultContentEncodingCharset("gb2312");
        messageFactory.setDefaultContentEncodingCharset(characterSet);
        Dialog dialog  = subscribeInfo.getDialog();
        if (dialog == null) return;
        SIPRequest notifyRequest = (SIPRequest)dialog.createRequest(Request.NOTIFY);
@@ -462,27 +467,13 @@
    }
//    private Request getCatalogNotifyRequestForCatalogAddOrUpdate(ParentPlatform parentPlatform, DeviceChannel channel, int size, String type,
//                                            SubscribeInfo subscribeInfo) throws ParseException, InvalidArgumentException,
//            PeerUnavailableException, NoSuchFieldException, IllegalAccessException {
//        String catalogXmlContent = getCatalogXmlContentForCatalogAddOrUpdate(parentPlatform, channel, size, type, subscribeInfo);
//
//        CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
//                : udpSipProvider.getNewCallId();
//        callIdHeader.setCallId(subscribeInfo.getCallId());
//        String tm = Long.toString(System.currentTimeMillis());
//
//        Request request = headerProviderPlarformProvider.createNotifyRequest(parentPlatform, catalogXmlContent,
//                callIdHeader, "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""),"FromRegister" + tm, subscribeInfo);
//        return request;
//    }
    private  String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, DeviceChannel channel, int sumNum, String type, SubscribeInfo subscribeInfo) {
        StringBuffer catalogXml = new StringBuffer(600);
        if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
            channel.setParentId(parentPlatform.getDeviceGBId());
        }
        catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
        String characterSet = parentPlatform.getCharacterSet();
        catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
        catalogXml.append("<Notify>\r\n");
        catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
        catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
@@ -554,8 +545,9 @@
        if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
            channel.setParentId(parentPlatform.getDeviceGBId());
        }
        String characterSet = parentPlatform.getCharacterSet();
        StringBuffer catalogXml = new StringBuffer(600);
        catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
        catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
        catalogXml.append("<Notify>\r\n");
        catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
        catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
@@ -576,8 +568,9 @@
            return false;
        }
        try {
            String characterSet = parentPlatform.getCharacterSet();
            StringBuffer recordXml = new StringBuffer(600);
            recordXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
            recordXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
            recordXml.append("<Response>\r\n");
            recordXml.append("<CmdType>RecordInfo</CmdType>\r\n");
            recordXml.append("<SN>" +recordInfo.getSn() + "</SN>\r\n");
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -155,7 +155,7 @@
                    if (device == null) {
                        device = new Device();
                        device.setStreamMode("UDP");
                        device.setCharset("gb2312");
                        device.setCharset("GB2312");
                        device.setDeviceId(deviceId);
                        device.setFirsRegister(true);
                    }else {
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -141,6 +141,7 @@
        String now = this.format.format(System.currentTimeMillis());
        device.setUpdateTime(now);
        Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
        device.setCharset(device.getCharset().toUpperCase());
        if (deviceByDeviceId == null) {
            device.setCreateTime(now);
            redisCatchStorage.updateDevice(device);
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -29,6 +29,7 @@
import com.genersoft.iot.vmp.conf.SipConfig;
import java.util.List;
import java.util.Locale;
/**
 * 级联平台管理
@@ -230,6 +231,7 @@
            wvpResult.setMsg("missing parameters");
            return new ResponseEntity<>(wvpResult, HttpStatus.BAD_REQUEST);
        }
        parentPlatform.setCharacterSet(parentPlatform.getCharacterSet().toUpperCase());
        ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId());
        boolean updateResult = storager.updateParentPlatform(parentPlatform);
web_src/src/components/ParentPlatformList.vue
@@ -43,12 +43,12 @@
          <el-table-column prop="channelCount" label="通道数" width="120" align="center"></el-table-column>
          <el-table-column label="订阅信息" width="240" align="center" fixed="right">
            <template slot-scope="scope">
              <i v-if="scope.row.alarmSubscribe" style="font-size: 1.5rem;" title="报警订阅" class="subscribe-on iconfont icon-gbaojings" ></i>
              <i v-if="!scope.row.alarmSubscribe" style="font-size: 1.5rem;" title="报警订阅" class="subscribe-off iconfont icon-gbaojings" ></i>
              <i v-if="scope.row.catalogSubscribe" title="目录订阅"  class="subscribe-on iconfont icon-gjichus" ></i>
              <i v-if="!scope.row.catalogSubscribe" title="目录订阅" class="subscribe-off iconfont icon-gjichus" ></i>
              <i v-if="scope.row.gpsSubscribe" title="位置订阅" class="subscribe-on iconfont icon-gxunjians" ></i>
              <i v-if="!scope.row.gpsSubscribe" title="位置订阅" class="subscribe-off iconfont icon-gxunjians" ></i>
              <i v-if="scope.row.alarmSubscribe" style="font-size: 20px" title="报警订阅" class="iconfont icon-gbaojings subscribe-on " ></i>
              <i v-if="!scope.row.alarmSubscribe" style="font-size: 20px" title="报警订阅" class="iconfont icon-gbaojings subscribe-off " ></i>
              <i v-if="scope.row.catalogSubscribe" title="目录订阅"  class="iconfont icon-gjichus subscribe-on" ></i>
              <i v-if="!scope.row.catalogSubscribe" title="目录订阅" class="iconfont icon-gjichus subscribe-off" ></i>
              <i v-if="scope.row.gpsSubscribe" title="位置订阅" class="iconfont icon-gxunjians subscribe-on" ></i>
              <i v-if="!scope.row.gpsSubscribe" title="位置订阅" class="iconfont icon-gxunjians subscribe-off" ></i>
            </template>
          </el-table-column>
@@ -182,10 +182,10 @@
<style>
.subscribe-on{
  color: #409EFF;
  font-size: 1.3rem;
  font-size: 18px;
}
.subscribe-off{
  color: #afafb3;
  font-size: 1.3rem;
  font-size: 18px;
}
</style>