Sfoglia il codice sorgente

alg模块审计修复代码同步

linft 2 anni fa
parent
commit
4cc293db29
100 ha cambiato i file con 522 aggiunte e 678 eliminazioni
  1. 4 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/alarm/utils/AlarmUtil.java
  2. 12 15
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/FaceApi.java
  3. 8 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/FaceManagerApi.java
  4. 13 29
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/controller/FireDeviceController.java
  5. 2 7
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/service/impl/FireDeviceLogServiceImpl.java
  6. 4 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/service/impl/FireDeviceServiceImpl.java
  7. 1 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/utils/FireDeviceStatusTask.java
  8. 13 13
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/utils/FireLaborUtil.java
  9. 1 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/component/AppStartedListener.java
  10. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/controller/AlgorithmController.java
  11. 1 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/controller/SignInCheckController.java
  12. 0 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/domain/DataPostAnalysisRespDto.java
  13. 0 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/domain/ImgPostResponse.java
  14. 11 14
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/CheckService.java
  15. 0 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/FireImageService.java
  16. 1 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/PeopleCheckResultValidImpl.java
  17. 1 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/SendSginAccessLogService.java
  18. 2 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/impl/AlgorithmServiceImpl.java
  19. 6 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/Base64DecodedMultipartFile.java
  20. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/Base64ToMultipartFile.java
  21. 12 44
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/FileUploadUtils.java
  22. 1 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/VideoUtils.java
  23. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/common/VideoManagerConstants.java
  24. 1 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/conf/ProxyServletConfig.java
  25. 11 12
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/SipLayer.java
  26. 15 14
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java
  27. 2 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/DeviceChannel.java
  28. 4 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/GbStream.java
  29. 1 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/MediaStream.java
  30. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/ParentPlatform.java
  31. 3 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/PlatformGbStream.java
  32. 0 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/RecordInfos.java
  33. 6 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/RecordItem.java
  34. 1 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java
  35. 6 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/session/SsrcConfig.java
  36. 3 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/session/VideoStreamSessionManager.java
  37. 0 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/SIPProcessorFactory.java
  38. 2 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/callback/CheckForAllRecordsThread.java
  39. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
  40. 6 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
  41. 6 8
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
  42. 32 30
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
  43. 15 10
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
  44. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/SIPRequestAbstractProcessor.java
  45. 3 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/AckRequestProcessor.java
  46. 3 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java
  47. 2 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/CancelRequestProcessor.java
  48. 13 21
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
  49. 13 29
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
  50. 2 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java
  51. 7 15
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/SubscribeRequestProcessor.java
  52. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/ByeResponseProcessor.java
  53. 1 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/CancelResponseProcessor.java
  54. 2 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java
  55. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/OtherResponseProcessor.java
  56. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/RegisterResponseProcessor.java
  57. 9 8
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/utils/DateUtil.java
  58. 7 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/utils/NumericUtil.java
  59. 10 7
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/utils/XmlUtil.java
  60. 16 23
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMHttpHookListener.java
  61. 2 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java
  62. 0 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMMediaListManager.java
  63. 3 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMRESTfulUtils.java
  64. 2 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMRTPServerFactory.java
  65. 7 7
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMRunner.java
  66. 6 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/dto/MediaServerItem.java
  67. 4 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/dto/StreamProxyItem.java
  68. 5 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/dto/StreamPushItem.java
  69. 20 14
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/onvif/impl/ONVIFServerIMpl.java
  70. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/GbStreamServiceImpl.java
  71. 2 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/MediaServerServiceImpl.java
  72. 5 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/PlayServiceImpl.java
  73. 6 7
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/StreamProxyServiceImpl.java
  74. 3 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/StreamPushServiceImpl.java
  75. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/IRedisCatchStorage.java
  76. 0 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/dao/DeviceMobilePositionMapper.java
  77. 10 18
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/impl/RedisCatchStorageImpl.java
  78. 10 16
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
  79. 2 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/ConfigConst.java
  80. 7 10
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/GpsUtil.java
  81. 3 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/JarFileUtils.java
  82. 10 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/SerializeUtils.java
  83. 2 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/redis/FastJsonRedisSerializer.java
  84. 34 65
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/redis/RedisUtil.java
  85. 3 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
  86. 4 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
  87. 7 7
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/device/DeviceControl.java
  88. 9 9
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
  89. 2 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
  90. 1 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/media/MediaController.java
  91. 2 3
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/platform/PlatformController.java
  92. 2 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/platformGbStream/PlatformGbStreamController.java
  93. 18 19
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/play/PlayController.java
  94. 4 7
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/playback/DownloadController.java
  95. 4 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
  96. 5 5
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/ptz/PtzController.java
  97. 2 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/record/GBRecordController.java
  98. 2 2
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/log/LogController.java
  99. 8 4
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/onvif/ONVIFController.java
  100. 0 0
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/server/ServerController.java

+ 4 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/alarm/utils/AlarmUtil.java

@@ -52,8 +52,7 @@ public class AlarmUtil {
      */
     @PostConstruct
     private void alarmInint(){
-//        sendGet(Routes.SystemStatusSnapshot);
-//        sendPost(new AlarmEntrty(Routes.NoticePush, new String[]{"18681887295"}, SendTypes.Call+"","启动项目电话报警服务测试!"));
+        // 链接超时 项目启动会失败
     }
 
     /**
@@ -67,8 +66,8 @@ public class AlarmUtil {
         String result = HttpUtil.post(url, alarmEntrty.toString());
 
         logger.info("语音报警发送结果:" + result);
-        Map<String, String> map = JSONObject.parseObject(result, Map.class);
-        return map;
+
+        return JSONObject.parseObject(result, Map.class);
     }
 
     /**
@@ -115,7 +114,7 @@ public class AlarmUtil {
                                 logger.info("数据data: "+  alarmLog.toString());
                                 if("失败".equals(map.get("status"))){
                                     logger.info("重发数据: "+  alarmLog.toString());
-                                    // TODO 运行异常 需记录 重拨ID或手机号 避免一次运行多次拨号
+                                    // 运行异常 需记录 重拨ID或手机号 避免一次运行多次拨号
                                     if(!failPhones.contains(alarmLog.getPhone()) && redisService.getCacheObject("retry" + alarmLog.getPhone()) == null){
                                         failPhones.add(alarmLog.getPhone());
                                         redisService.setCacheObject("retry" + alarmLog.getPhone(), alarmLog.getPhone(),150L, TimeUnit.SECONDS);

+ 12 - 15
zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/FaceApi.java

@@ -41,8 +41,8 @@ public class FaceApi {
     private static final int taskSize = 50;
 
     private static ExecutorService pool = Executors.newFixedThreadPool(taskSize);
-    
-    private Logger logger = LoggerFactory.getLogger(FaceApi.class);
+
+    private static Logger logger = LoggerFactory.getLogger(FaceApi.class);
 
     @Autowired
     private FaceRecognitionService faceService;
@@ -67,7 +67,7 @@ public class FaceApi {
             }
         }
         List<FaceInfo> faceInfos = faceService.faceDetect(imageInfo);
-        if(null==faceInfos || faceInfos.size()==0){
+        if(null==faceInfos || faceInfos.isEmpty()){
             return ResultData.fail("识别中");
         }
         FaceFeature faceFeature = faceService.faceFeature(imageInfo, faceInfos);
@@ -83,7 +83,7 @@ public class FaceApi {
             fileToFile = FileUtils.multipartFileToFile(file);
             ImageInfo  imageInfo = faceService.getImageInfo(fileToFile);
             List<FaceInfo> faceInfos = faceService.faceDetect(imageInfo);
-            if(null==faceInfos || faceInfos.size()==0){
+            if(null==faceInfos || faceInfos.isEmpty()){
                 return ResultData.fail("请讲脸放到摄像头正中央!");
             }
             return ResultData.success(faceInfos);
@@ -134,7 +134,7 @@ public class FaceApi {
             }
         }
         List<FaceInfo> faceInfos = faceService.faceDetect(imageInfo);
-        if(null==faceInfos || faceInfos.size()==0){
+        if(null==faceInfos || faceInfos.isEmpty()){
             return ResultData.fail("识别中");
         }
         FaceFeature faceFeature = faceService.faceFeature(imageInfo, faceInfos);
@@ -181,11 +181,10 @@ public class FaceApi {
                 ResultData r=(ResultData)future.get();
                 if(r.getCode()==200){
                     long time2=System.currentTimeMillis();
-                    System.out.println("执行时间:"+(time2-time));
+                    logger.info("执行时间:"+(time2-time));
                     return r;
                 }
             }
-            //pool.shutdown();
         }
         return ResultData.fail("未获取实验室安全准入人脸数据!");
     }
@@ -214,8 +213,8 @@ public class FaceApi {
             String dateTime = DateUtils.getDate();
             ResultData dutyUserData = remoteDutyService.selectDutyUser(faceCompare.getLabId(),dateTime);
             //判断是否当天值班
-            if(null==dutyUserData && dutyUserData.getCode()!= HttpStatus.SUCCESS){
-                return ResultData.fail("获取值班人员识别!");
+            if(null==dutyUserData || dutyUserData.getCode()!= HttpStatus.SUCCESS){
+                return ResultData.fail("获取值班人员失败!");
             }
             List<Map<String,Object>> dutyList= (List<Map<String, Object>>) dutyUserData.getData();
             for(Map<String,Object> dutyMap:dutyList){
@@ -237,17 +236,15 @@ public class FaceApi {
 
     //获取流文件
     private static void inputStreamToFile(InputStream ins, File file) {
-        try {
-            OutputStream os = new FileOutputStream(file);
+        try(OutputStream os = new FileOutputStream(file)) {
             int bytesRead = 0;
             byte[] buffer = new byte[8192];
             while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                 os.write(buffer, 0, bytesRead);
             }
-            os.close();
             ins.close();
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("inputStreamToFile异常:"+e);
         }
     }
 
@@ -273,9 +270,9 @@ public class FaceApi {
                     .collect(Collectors.toList());
             for(Future future:lists){
                 String r=(String)future.get();
-                System.out.println(r);
+                logger.info(r);
             }
         long time2=System.currentTimeMillis();
-        System.out.println(time2-time);
+        logger.info((time2-time)+"");
     }
 }

+ 8 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/FaceManagerApi.java

@@ -9,12 +9,15 @@ import com.zd.common.face.config.FaceProperties;
 import com.zd.model.domain.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
@@ -32,6 +35,8 @@ import java.util.Set;
 @RequestMapping("/faceManagerApi")
 public class FaceManagerApi {
 
+    private  static final Logger logger = LoggerFactory.getLogger(FaceManagerApi.class);
+
     @Autowired
     FaceEngineFactory faceEngineFactory;
 
@@ -39,7 +44,7 @@ public class FaceManagerApi {
     FaceProperties faceProperties;
 
 
-    final static Set<String> libSet = new HashSet<>();
+     static final Set<String> libSet = new HashSet<>();
     static {
         libSet.add("libarcsoft_face.dll");
         libSet.add("libarcsoft_face_engine.dll");
@@ -82,11 +87,11 @@ public class FaceManagerApi {
                         v.transferTo(touch);
                         tempFile.put(k,touch);
                     } catch (IOException e) {
-                        e.printStackTrace();
+                        logger.error("创建lib文件出错:"+e.getMessage());
                         throw new ServiceException("创建lib文件出错:"+e.getMessage());
                     }
                 });
-                //todo 这里应该先备份一次
+                //这里应该先备份一次
                 temp.forEach((a,b)->{
                     FileUtil.copy(path + File.separator +a,path + File.separator +a+"_copy",true);
                 });

+ 13 - 29
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/controller/FireDeviceController.java

@@ -25,12 +25,12 @@ import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.entity.RemoteLabHardware;
 import com.zd.model.page.TableDataInfo;
 import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
@@ -45,6 +45,8 @@ import java.util.concurrent.TimeUnit;
 @RequestMapping("/firedevice")
 public class FireDeviceController extends BaseController {
 
+    private Logger logger = LoggerFactory.getLogger(FireDeviceController.class);
+
     @Autowired
     private IFireDeviceService fireDeviceService;
 
@@ -124,8 +126,7 @@ public class FireDeviceController extends BaseController {
         HardwareFireDeviceVO vo = new HardwareFireDeviceVO();
         vo.setSubjectId(subjectId);
         List<HardwareFireDeviceVO> list = fireDeviceService.selectHardwareFireDeviceList(vo);
-        logger.info("是否配置灭火设备:"+list.size());
-        if (list.size() == 0) {
+        if (list==null || list.isEmpty()) {
             map.put("smoke", smoke);
             map.put("temperature", temperature);
             map.put("fire", fire);
@@ -146,8 +147,6 @@ public class FireDeviceController extends BaseController {
             }
 
             //根据编码从redis获取该设备状态
-            //String str = "{\"msg\":\"NO:5号设备故障 NO:10号设备火警 \",\"fireNumber\":1,\"fireStatus\":true,\"startSpray\":\"0\",\"gasSpray\":\"0\"}";
-            //JSONObject strJson = JSONObject.parseObject(str);
             JSONObject strJson = redisService.getCacheObject(list.get(0).getDeviceCode());
             if (StringUtils.isNotNull(strJson)) {
                 Integer fireNumber = (Integer) strJson.get("fireNumber");
@@ -223,8 +222,6 @@ public class FireDeviceController extends BaseController {
         }
 
         //根据编码从redis获取该设备状态
-        /*String str = "{\"msg\":\"NO:5号设备故障 NO:10号设备火警 \",\"fireNumber\":1,\"fireStatus\":true,\"startSpray\":\"0\",\"gasSpray\":\"0\"}";
-        JSONObject strJson = JSONObject.parseObject(str);*/
         JSONObject strJson = redisService.getCacheObject(deviceCode);
         if (StringUtils.isNotNull(strJson)) {
             Integer fireNumber = (Integer) strJson.get("fireNumber");
@@ -246,7 +243,7 @@ public class FireDeviceController extends BaseController {
             HardwareFireDeviceVO vo = new HardwareFireDeviceVO();
             vo.setDeviceCode(deviceCode);
             List<HardwareFireDeviceVO> list = fireDeviceService.selectHardwareFireDeviceList(vo);
-            if(list.size()>0){
+            if(list!=null && !list.isEmpty()){
                 subjectId = list.get(0).getSubjectId();
                 redisService.setCacheObject(CacheConstants.FIRE_DEVICE_DETAILS+list.get(0).getDeviceCode(),list.get(0),300L, TimeUnit.MINUTES);
             }else{
@@ -306,16 +303,6 @@ public class FireDeviceController extends BaseController {
         return ResultData.success(map);
     }
 
-    /***
-     * 确定执行一键灭火
-     * 缓存10秒
-     * @return
-     */
-/*    @GetMapping(value = "/isConfirmlOutFile")
-    public ResultData isConfirmlOutFile(Long subjectId){
-        redisService.setCacheObject(CANCEL_OUTFILE+subjectId,"1",6L, TimeUnit.SECONDS);
-        return ResultData.success(1);
-    }*/
 
     /***
      * 取消执行一键灭火
@@ -373,7 +360,8 @@ public class FireDeviceController extends BaseController {
         try {
             Thread.sleep(waitTime*1000);
         } catch (InterruptedException e) {
-            e.printStackTrace();
+            logger.error("outFirePc异常:"+e);
+            Thread.currentThread().interrupt();
         }
         Map<String, Object> map = new HashMap<>();
         //设备是否在线
@@ -400,9 +388,10 @@ public class FireDeviceController extends BaseController {
             logger.info("=========开始一键灭火=======");
             //执行灭火指令
             try {
-                map = outFireCom(subjectId,map);
+                outFireCom(subjectId,map);
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                logger.error("startTT异常:"+e);
+                Thread.currentThread().interrupt();
             }
         }
     }
@@ -419,7 +408,7 @@ public class FireDeviceController extends BaseController {
         //灭火设备类型
         hd.setIsPcfire(1);
         List<RemoteLabHardware> hdlist = remoteLaboratoryService.remoteList(hd).getData();
-        if (hdlist.size() == 0) {
+        if (hdlist==null || hdlist.isEmpty()) {
             logger.info("该实验室尚未配置关联硬件!");
             return  map;
         } else if (hdlist.size() < 2) {
@@ -627,7 +616,7 @@ public class FireDeviceController extends BaseController {
         HardwareFireDeviceVO vo = new HardwareFireDeviceVO();
         vo.setDeviceCode(deviceCode);
         List<HardwareFireDeviceVO> list = fireDeviceService.selectHardwareFireDeviceList(vo);
-        if(list.size()>0){
+        if(list!=null && !list.isEmpty()){
             return ResultData.success(list.get(0));
         }else{
             return ResultData.success(null);
@@ -640,9 +629,4 @@ public class FireDeviceController extends BaseController {
         return ResultData.success( redisService.getCacheObject(code));
     }
 
-    public static void main(String[] args) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("fireStatus",1);
-        System.out.println(JSON.toJSONString(map));
-    }
 }

+ 2 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/service/impl/FireDeviceLogServiceImpl.java

@@ -4,7 +4,6 @@ package com.zd.alg.fire.service.impl;
 import com.zd.alg.fire.mapper.FireDeviceLogMapper;
 import com.zd.alg.fire.mapper.FireDeviceMapper;
 import com.zd.alg.fire.service.IFireDeviceLogService;
-import com.zd.alg.fire.utils.FireDeviceStatusTask;
 import com.zd.algorithm.api.fire.entity.HardwareFireDeviceLog;
 import com.zd.algorithm.api.fire.entity.vo.HardwareFireDeviceVO;
 import com.zd.common.core.redis.RedisService;
@@ -110,10 +109,6 @@ public class FireDeviceLogServiceImpl implements IFireDeviceLogService {
     @Override
     public String insertFireAutomatic(String code){
         String str=null;
-        /*SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Date date = new Date(System.currentTimeMillis());
-        System.out.println(sdf.format(date));*/
-
         // redis取值,当天日志是否添加
         String isExist = redisService.getCacheObject(CacheConstants.FIRE_LOG_IS_EXIST);
         if(StringUtils.isNotNull(isExist)){
@@ -123,13 +118,13 @@ public class FireDeviceLogServiceImpl implements IFireDeviceLogService {
             HardwareFireDeviceVO vo = new HardwareFireDeviceVO();
             vo.setDeviceCode(code);
             List<HardwareFireDeviceVO> list = fireDeviceMapper.selectHardwareFireDeviceList(vo);
-            if(list.size()>0){
+            if(list!=null && !list.isEmpty()){
                 //自动灭火日志添加
                 HardwareFireDeviceLog fireDeviceLog = new HardwareFireDeviceLog();
                 fireDeviceLog.setFireDeviceId(list.get(0).getId());
                 fireDeviceLog.setFlgTime(new Date());
                 List<HardwareFireDeviceLog> loglist = fireDeviceLogMapper.selectLabFireDeviceLogList(fireDeviceLog);
-                if(loglist.size()==0){
+                if(loglist==null || loglist.isEmpty()){
                     fireDeviceLog.setRunType(1);
                     fireDeviceLog.setCreateTime(new Date());
                     fireDeviceLogMapper.insertLabFireDeviceLog(fireDeviceLog);

+ 4 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/service/impl/FireDeviceServiceImpl.java

@@ -3,7 +3,6 @@ package com.zd.alg.fire.service.impl;
 
 import com.zd.alg.fire.mapper.FireDeviceMapper;
 import com.zd.alg.fire.service.IFireDeviceService;
-import com.zd.alg.fire.utils.FireDeviceStatusTask;
 import com.zd.algorithm.api.fire.entity.HardwareFireDevice;
 import com.zd.algorithm.api.fire.entity.vo.HardwareFireDeviceVO;
 import com.zd.common.core.exception.ServiceException;
@@ -64,7 +63,7 @@ public class FireDeviceServiceImpl implements IFireDeviceService {
         vo.setDeviceCode(fireDevice.getDeviceCode());
         vo.setSubjectId(fireDevice.getSubjectId());
         List<HardwareFireDeviceVO> list = hardwareFireDeviceMapper.selectHardwareFireDeviceList(vo);
-        if (list.size() > 0) {
+        if (list!=null && !list.isEmpty()) {
             throw new ServiceException("采集器编号已经存在!");
         }
 
@@ -72,7 +71,7 @@ public class FireDeviceServiceImpl implements IFireDeviceService {
         vo.setRelayCode(fireDevice.getRelayCode());
         vo.setSubjectId(fireDevice.getSubjectId());
         list = hardwareFireDeviceMapper.selectHardwareFireDeviceList(vo);
-        if (list.size() > 0) {
+        if (list!=null && !list.isEmpty()) {
             throw new ServiceException("继电器编号已经存在!");
         }
 
@@ -96,7 +95,7 @@ public class FireDeviceServiceImpl implements IFireDeviceService {
         vo.setDeviceCode(fireDevice.getDeviceCode());
         vo.setSubjectId(fireDevice.getSubjectId());
         List<HardwareFireDeviceVO> list = hardwareFireDeviceMapper.selectHardwareFireDeviceList(vo);
-        if (list.size() > 0 && !list.get(0).getId().equals(fireDevice.getId())) {
+        if (list!=null && !list.isEmpty() && !list.get(0).getId().equals(fireDevice.getId())) {
             throw new ServiceException("采集器编号已经存在!");
         }
 
@@ -104,7 +103,7 @@ public class FireDeviceServiceImpl implements IFireDeviceService {
         vo.setRelayCode(fireDevice.getRelayCode());
         vo.setSubjectId(fireDevice.getSubjectId());
         list = hardwareFireDeviceMapper.selectHardwareFireDeviceList(vo);
-        if (list.size() > 0 && !list.get(0).getId().equals(fireDevice.getId())) {
+        if (list!=null && !list.isEmpty() && !list.get(0).getId().equals(fireDevice.getId())) {
             throw new ServiceException("继电器编号已经存在!");
         }
 

+ 1 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/utils/FireDeviceStatusTask.java

@@ -17,9 +17,6 @@ import com.zd.model.domain.ResultData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -63,12 +60,11 @@ public class FireDeviceStatusTask {
                 redisService.setCacheObject(CacheConstants.FIRE_DEVICE_LIST, list, 60L, TimeUnit.MINUTES);
             }
 
-            if (list != null && list.size() > 0) {
+            if (list != null && !list.isEmpty()) {
                 for (HardwareFireDeviceVO vo : list) {
                     //根据主机地址-位获取主机状态指令
                     String activeCode = FireLaborUtil.getFireActiveOrder(vo.getDeviceUrl());
                     //向mqtt发送状态信息
-                    //byte[] activeCodeByte=activeCode.getBytes(StandardCharsets.UTF_8);
                     byte[] activeCodeByte = ReUtil.hexStringToByteArray(activeCode);
                     mqttSend.send(MqttConstants.TOPIC_FIRE_DEVICE + vo.getDeviceCode(), activeCodeByte);
                     //兼容指令无反应问题

+ 13 - 13
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/utils/FireLaborUtil.java

@@ -1,6 +1,8 @@
 package com.zd.alg.fire.utils;
 
 import com.alibaba.fastjson.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.*;
 
@@ -10,6 +12,10 @@ import java.util.*;
  * @descprition 该类用于通过传参获取动态指令,进行状态查询,当收到状态火警的时候给传感器信号
  */
 public class FireLaborUtil {
+    static final Logger logger = LoggerFactory.getLogger(FireLaborUtil.class);
+
+    private FireLaborUtil(){}
+
     //功能码
     private static final  String FUNCTION_CODE="03";
     //起始地址高字节
@@ -20,7 +26,7 @@ public class FireLaborUtil {
     private static final  String All_REGISTER="00 24";
 
 
-    public static final Map<String, String> statusMap = new HashMap<String, String>();
+    private static final Map<String, String> statusMap = new HashMap<>();
     static {
         statusMap.put("00","无事件");
         statusMap.put("01","火警");
@@ -33,7 +39,7 @@ public class FireLaborUtil {
      * 静态map,用于存储 寄存器状态说明
      *
      */
-    public static final Map<Integer, String> myMap_0 = new HashMap<Integer, String>();
+    private static final Map<Integer, String> myMap_0 = new HashMap<>();
     static {
         myMap_0.put(1, "01 02");
         myMap_0.put(2, "03 04");
@@ -91,13 +97,13 @@ public class FireLaborUtil {
         boolean fireStatus=false;
         String msg="";
         int fireNumber=0;
-        //returnCodes="02 03 48 00 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 40 3D ";
+        // returnCodes="02 03 48 00 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 40 3D ";
         returnCodes=returnCodes.replace(" ","");
-        System.out.println("returnCodes length:"+returnCodes.length());
+        logger.info("returnCodes length:"+returnCodes.length());
         String registerCode=returnCodes.substring(6,returnCodes.length()-20);
-        System.out.println("registerCode:"+registerCode);
+        logger.info("registerCode:"+registerCode);
         String mainCode=returnCodes.substring(134,returnCodes.length()-4);
-        System.out.println("mainCode:"+mainCode);
+        logger.info("mainCode:"+mainCode);
         List<String> registerCodeList=parseArrayList(registerCode);
         Set<String> statusSet=statusMap.keySet();
         if(registerCodeList.contains("01")){
@@ -142,7 +148,7 @@ public class FireLaborUtil {
         if(addressBit>=10){
             return String.valueOf(addressBit);
         }
-        return String.format("%0"+2+"x", Integer.valueOf(addressBit));
+        return String.format("%0"+2+"x", addressBit);
     }
 
     /**
@@ -200,10 +206,4 @@ public class FireLaborUtil {
         return hexString;
     }
 
-    public static void main(String[] args) {
-        String msg="";
-        System.out.println(getFireActiveOrder(2));
-        JSONObject jsonObject=getFireStatus("0");
-        System.out.println(jsonObject.toJSONString());
-    }
 }

+ 1 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/component/AppStartedListener.java

@@ -39,14 +39,13 @@ public class AppStartedListener implements ApplicationListener<ApplicationStarte
             //关闭服务
             applicationStartedEvent.getApplicationContext().close();
         } catch (IOException e) {
-            e.printStackTrace();
             logger.error("检查日志地址连通性测试失败!url:{},请检查实验室项目是否正常,或url配置是否正确!", algorithmYml.getCheckLogUrl());
         } finally {
             if (in != null) {
                 try {
                     in.close();
                 } catch (IOException e) {
-                    e.printStackTrace();
+                    logger.info("日志地址连通性异常:"+e);
                 }
             }
         }
@@ -73,7 +72,6 @@ public class AppStartedListener implements ApplicationListener<ApplicationStarte
                 value.setCheckResultValid((CheckResultValid) o);
             } catch (Exception e) {
                 logger.error("算法结果解析注入失败!");
-                e.printStackTrace();
                 logger.error("关闭项目!!!!请检查算法结果解析配置!!");
                 //关闭服务
                 applicationStartedEvent.getApplicationContext().close();
@@ -95,7 +93,6 @@ public class AppStartedListener implements ApplicationListener<ApplicationStarte
 
             } catch (Exception e) {
                 logger.error("视频算法结果解析注入失败!");
-                e.printStackTrace();
                 logger.error("关闭项目!!!!请检查算法结果解析配置!!");
                 //关闭服务
                 applicationStartedEvent.getApplicationContext().close();

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/controller/AlgorithmController.java

@@ -40,7 +40,7 @@ public class AlgorithmController {
     @PostMapping("/warningCheck")
     public ResultData warningCheck(@RequestBody @Validated AlgorithmWarningBo bo) {
         //检查配置
-        if (warningProperties == null && warningProperties.getEnable() == null
+        if (warningProperties == null || warningProperties.getEnable() == null
                 || warningProperties.getEnable().equals(Boolean.FALSE)
                 || warningProperties.getCode() == null) {
             return ResultData.fail("未配置识别参数或未启用");

+ 1 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/controller/SignInCheckController.java

@@ -1,7 +1,6 @@
 package com.zd.alg.forward.controller;
 
 import com.alibaba.fastjson.JSONObject;
-import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.zd.alg.forward.config.AlgorithmYml;
 import com.zd.alg.forward.domain.VideoRequestData;
 import com.zd.alg.forward.serivce.CheckService;
@@ -12,7 +11,6 @@ import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.Assert;
 import com.zd.common.core.utils.UUID;
-import com.zd.common.swagger.config.Knife4jConfiguration;
 import com.zd.model.constant.BaseConstants;
 import com.zd.model.constant.HttpStatus;
 import com.zd.model.domain.R;
@@ -35,7 +33,6 @@ import java.util.Optional;
  * 签到验证
  */
 @Api(tags = {"签到验证:算法转发服务"})
-@ApiSupport(author = Knife4jConfiguration.Author.ZP)
 @RestController
 @RequestMapping("/signIn/check")
 public class SignInCheckController {
@@ -162,7 +159,7 @@ public class SignInCheckController {
         Integer aid = videoRequestData.getAid();
         if (aid != null) {
             if (aid.equals(9610)) {
-                //logger.info("=====================>测试回调了。。。{}",videoRequestData.getAlgo_name());
+                logger.info("=====================>测试回调了。。。{}",videoRequestData.getAlgo_name());
                 checkService.sendAlarm(videoRequestData);
             } else if (aid.equals(9690)) {
                 checkService.playMp3();

+ 0 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/domain/DataPostAnalysisRespDto.java

@@ -8,7 +8,6 @@ import java.util.List;
 public class DataPostAnalysisRespDto {
 
     private Integer aid;
-    private Integer cid;
     private String did;
     private String extension;
     private List<AnalysisData> analysisDatas;

+ 0 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/domain/ImgPostResponse.java

@@ -2,8 +2,6 @@ package com.zd.alg.forward.domain;
 
 import lombok.Data;
 
-import java.util.Map;
-
 /**
  * 图片算法返回值
  */

+ 11 - 14
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/CheckService.java

@@ -5,10 +5,12 @@ import cn.hutool.core.util.RandomUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.alg.forward.config.AlgorithmYml;
-import com.zd.alg.forward.domain.*;
+import com.zd.alg.forward.domain.AlgorithmResponseResult;
+import com.zd.alg.forward.domain.AnalysisReturnData;
+import com.zd.alg.forward.domain.ImgPostResponse;
+import com.zd.alg.forward.domain.VideoRequestData;
 import com.zd.alg.forward.serivce.mqtt.CommonSend;
 import com.zd.alg.forward.utils.Base64DecodedMultipartFile;
-import com.zd.alg.forward.utils.FileUploadUtils;
 import com.zd.alg.forward.utils.HttpUtils;
 import com.zd.alg.mqtt.entiy.MessageBody;
 import com.zd.algorithm.api.alarm.entity.AlarmEntrty;
@@ -30,7 +32,6 @@ import com.zd.model.entity.SysFile;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.core.io.FileSystemResource;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -249,7 +250,6 @@ public class CheckService {
                     }
                 } else {
                     assert send != null;
-                    //logger.error("【调用算法服务】 算法服务调用失败,响应信息:"+ JSONObject.toJSONString(send));
                     return R.fail("算法服务错误,请重试!");
                 }
             }
@@ -327,7 +327,6 @@ public class CheckService {
         algorithm.setSubId(subId);
         algorithm.setAlgorithmType("image");
         algorithm.setAlgorithmName(checkValid.getAlgorithmName());
-        //logger.info("【算法服务】 添加日志记录实体:"+JSONObject.toJSONString(algorithm));
         return laboratoryService.saveAlgorithmData(algorithm);
     }
 
@@ -362,7 +361,6 @@ public class CheckService {
             algorithm.setRespData(responseResult.getResponseBody());
             algorithm.setRespCode(responseResult.getCode());
             algorithm.setUpdateTime(new Date());
-            //logger.info("【算法服务】 更新日志实体信息:"+JSONObject.toJSONString(algorithm));
             laboratoryService.update(algorithm);
         } catch (Exception e) {
             logger.error("【调用算法服务】调用算法服务后,更新日志记录发生异常", e);
@@ -415,7 +413,6 @@ public class CheckService {
             }
             if (responseResult.getIsPass()) {
                 //加奖励分
-                // laboratoryService.addRecord();
             }
             return R.ok();
         }
@@ -564,9 +561,7 @@ public class CheckService {
             //用HttpEntity封装整个请求报文
             HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(params, headers);
             String paramUrl = algorithmYml.getImgPostUrl();
-            //logger.info(paramUrl);
             JSONObject body = restTemplateLocal.postForObject(paramUrl, files, JSONObject.class);
-            //logger.info(body.toJSONString());
             return body;
         } catch (Exception e){
             logger.error("【算法服务】 send方法执行异常,异常信息:",e);
@@ -581,25 +576,27 @@ public class CheckService {
      * @param imgFilePath 路径
      * @return
      */
-    public String generateImage(String imgStr, String imgFilePath) {// 对字节数组字符串进行Base64解码并生成图片
+    public String generateImage(String imgStr, String imgFilePath) {
+        // 对字节数组字符串进行Base64解码并生成图片
         BASE64Decoder decoder = new BASE64Decoder();
-        try {
+        try ( OutputStream out = new FileOutputStream(imgFilePath)){
             // Base64解码
             byte[] bytes = decoder.decodeBuffer(imgStr);
             for (int i = 0; i < bytes.length; ++i) {
-                if (bytes[i] < 0) {// 调整异常数据
+                // 调整异常数据
+                if (bytes[i] < 0) {
                     bytes[i] += 256;
                 }
             }
             // 生成jpeg图片
             imgFilePath += "/" + UUID.randomUUID() + ".jpeg";
-            OutputStream out = new FileOutputStream(imgFilePath);
             out.write(bytes);
             out.flush();
-            out.close();
             return imgFilePath;
         } catch (Exception e) {
+            logger.error("generateImage异常:"+e);
             return null;
         }
     }
+
 }

+ 0 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/FireImageService.java

@@ -47,7 +47,6 @@ public class FireImageService {
 
     @Resource
     private RestTemplate restTemplate;
-
     @Resource
     private SendSginAccessLogService sendSginAccessLogService;
 
@@ -68,7 +67,6 @@ public class FireImageService {
             if (streamUrl != null && !"".equals(streamUrl)) {
                 catchImage(streamUrl);
             }
-            //log.error("=========调用产生异常:未配置流媒体地址============");
         } catch (ServiceException | IOException e) {
             //异常回调,防止系统因异常问题被杀死
             log.error("=========调用产生异常:{}============", e.getMessage());
@@ -116,7 +114,6 @@ public class FireImageService {
         ImgPostResponse<DataPostAnalysisRespDto> send = HttpUtils.send(restTemplate, files, algorithmYml);
         if (send == null || send.getStatus_code() != SUCCESS_CODE) {
             assert send != null;
-            //log.error(send.getMessage());
             return;
         }
         DataPostAnalysisRespDto data = send.getData();

+ 1 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/PeopleCheckResultValidImpl.java

@@ -22,13 +22,8 @@ public class PeopleCheckResultValidImpl implements VideoCheckResultValid{
     @Autowired
     AlgorithmYml algorithmYml;
 
-//    private void initAttr()
-//    {
-//        sendSginAccessLogService= SpringUtils.getBean(SendSginAccessLogService.class);
-//        algorithmYml = SpringUtils.getBean(AlgorithmYml.class);
-//    }
+    private PeopleCheckResultValidImpl() {
 
-    public PeopleCheckResultValidImpl() {
     }
 
     @Override

+ 1 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/SendSginAccessLogService.java

@@ -227,7 +227,7 @@ public class SendSginAccessLogService {
         params.put("hardwareNum", properties.getHardwareNum());
         params.put("subId", properties.getLabId());
         params.put("val", 1);
-        // todo 发送火焰预警时,在缓存中存储redis数据,供小程序端展示使用  是否需要在redis中表明是哪个项目 方便后面查询
+        // 发送火焰预警时,在缓存中存储redis数据,供小程序端展示使用  是否需要在redis中表明是哪个项目 方便后面查询
         String jsonString = JSON.toJSONString(params);
         String key = CacheDevice.FIRE_CAMERA_KEY.getRedisKey()+":"+properties.getLabId();
         redisTemplate.opsForValue().set(key, jsonString, CacheDevice.FIRE_CAMERA_KEY.getRedisTime(), TimeUnit.HOURS);
@@ -246,10 +246,6 @@ public class SendSginAccessLogService {
 
     private <T> R<T> send(Map<String, Object> params, String url, HttpMethod method, ParameterizedTypeReference<R<T>> reference) {
         HttpEntity<Map<String, Object>> requestEntity = getMapHttpEntity(params);
-        logger.info("调用url={}",url);
-        logger.info("调用method={}",JSON.toJSONString(method));
-        logger.info("调用requestEntity={}", JSON.toJSONString(requestEntity));
-        logger.info("reference={}", JSON.toJSONString(reference));
         ResponseEntity<R<T>> exchange = restTemplateLocal.exchange(url, method, requestEntity, reference);
         R<T> body = exchange.getBody();
         if (body != null && body.getCode() == HttpStatus.UNAUTHORIZED) {

+ 2 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/impl/AlgorithmServiceImpl.java

@@ -67,7 +67,6 @@ public class AlgorithmServiceImpl implements AlgorithmService {
         Long logId = insertRequestRecordLog(subId, subName, fileUrl, name);
         log.info("【调用算法服务】 添加算法调用日志,返回logId = "+ logId);
 
-       // File toFile = multipartFileToFile(file);
         //========= 获取算法INFO ===========
         AlgorithmYml.CheckValid checkValid = algorithmYml.getCheckValid(Integer.valueOf(code));
         MultiValueMap<String, Object> params = getStringObjectMultiValueMap(checkValid, id.toString());
@@ -89,7 +88,7 @@ public class AlgorithmServiceImpl implements AlgorithmService {
                 vo.setOriginalImage(fileUrl);
                 vo.setResultImage(algorithm.getAlgorithmResult());
                 vo.setIsAlert(!responseResult.getIsPass());
-                Boolean State = (responseResult.getObjects() != null && responseResult.getObjects().size() > 0) ? Boolean.TRUE : Boolean.FALSE;
+                Boolean State = (responseResult.getObjects() != null && !responseResult.getObjects().isEmpty()) ? Boolean.TRUE : Boolean.FALSE;
                 vo.setState(State);
                 return vo;
             }
@@ -105,7 +104,6 @@ public class AlgorithmServiceImpl implements AlgorithmService {
         algorithm.setOriginalImg(url);
         algorithm.setAlgorithmType("image");
         algorithm.setAlgorithmName(algorithmName);
-        //logger.info("【算法服务】 添加日志记录实体:"+JSONObject.toJSONString(algorithm));
         R alg = laboratoryService.saveAlgorithmData(algorithm);
         if (alg.getCode() == HttpStatus.SUCCESS) {
             return alg.getData() != null?Long.valueOf(alg.getData()+""):null;
@@ -139,7 +137,6 @@ public class AlgorithmServiceImpl implements AlgorithmService {
             algorithm.setRespData(responseResult.getResponseBody());
             algorithm.setRespCode(responseResult.getCode());
             algorithm.setUpdateTime(new Date());
-            //logger.info("【算法服务】 更新日志实体信息:"+JSONObject.toJSONString(algorithm));
             laboratoryService.update(algorithm);
             return algorithm;
         } catch (Exception e) {
@@ -172,7 +169,7 @@ public class AlgorithmServiceImpl implements AlgorithmService {
                 List<Object> objects = (List<Object>) modelResult.get("objects");
                 //是否验证通过
                 //算法厂家技术人员前期要添加objects判断精准性,后面对接人员要让去掉对objects的判断
-                if (algorithmData.getOrDefault("is_alert", "").toString().equals("false") && !objects.isEmpty()) {
+                if (algorithmData.getOrDefault("is_alert", "").toString().equals("false") && objects!=null && !objects.isEmpty()) {
                     //不报警,代表验证通过
                     responseResult.setIsPass(Boolean.TRUE);
                 } else {

+ 6 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/Base64DecodedMultipartFile.java

@@ -1,11 +1,15 @@
 package com.zd.alg.forward.utils;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.web.multipart.MultipartFile;
 import sun.misc.BASE64Decoder;
 
 import java.io.*;
 
 public class Base64DecodedMultipartFile implements MultipartFile {
+    static Logger logger = LoggerFactory.getLogger(Base64DecodedMultipartFile.class);
+
     private final byte[] imgContent;
     private final String header;
 
@@ -54,7 +58,7 @@ public class Base64DecodedMultipartFile implements MultipartFile {
     }
 
     @Override
-    public void transferTo(File dest) throws IOException, IllegalStateException {
+    public void transferTo(File dest) throws IOException {
         new FileOutputStream(dest).write(imgContent);
     }
 
@@ -86,7 +90,7 @@ public class Base64DecodedMultipartFile implements MultipartFile {
             }
             return new Base64DecodedMultipartFile(b, baseStrs[0]);
         } catch (IOException e) {
-            e.printStackTrace();
+            logger.error("MultipartFile异常:"+e);
             return null;
         }
     }

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/Base64ToMultipartFile.java

@@ -68,7 +68,7 @@ public class Base64ToMultipartFile implements MultipartFile{
     }
 
     @Override
-    public void transferTo(File file) throws IOException, IllegalStateException {
+    public void transferTo(File file) throws IOException {
         try (FileOutputStream fos = new FileOutputStream(file)) {
             fos.write(fileContent);
         }

+ 12 - 44
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/FileUploadUtils.java

@@ -20,10 +20,13 @@ import java.io.IOException;
  * @author zd
  */
 public class FileUploadUtils {
+
+    private FileUploadUtils(){}
+
     /**
      * 默认大小 50M
      */
-    public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
+    public static final long DEFAULT_MAX_SIZE = 50L * 1024L * 1024L;
 
     /**
      * 默认的文件名最大长度 100
@@ -59,11 +62,10 @@ public class FileUploadUtils {
      * @throws InvalidExtensionException            文件校验异常
      */
     public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
-            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
+            throws IOException,
             InvalidExtensionException {
         int fileNamelength = file.getOriginalFilename().length();
         if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {
-//            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
             throw new ServiceException("图片名字太长,请修改名字后,从新上传!");
         }
 
@@ -73,52 +75,19 @@ public class FileUploadUtils {
 
         File desc = getAbsoluteFile(baseDir, fileName);
         file.transferTo(desc);
-        String pathFileName = getPathFileName(fileName);
-        return pathFileName;
+        return getPathFileName(fileName);
     }
-//
-//    /**
-//     * 文件上传 -不修改文件名
-//     *
-//     * @param baseDir          相对应用的基目录
-//     * @param file             上传的文件
-//     * @param allowedExtension 上传文件类型
-//     * @return 返回上传成功的文件名
-//     * @throws FileSizeLimitExceededException       如果超出最大大小
-//     * @throws FileNameLengthLimitExceededException 文件名太长
-//     * @throws IOException                          比如读写文件出错时
-//     * @throws InvalidExtensionException            文件校验异常
-//     */
-//    public static final String uploadNoUpdateName(String baseDir, MultipartFile file, String[] allowedExtension)
-//            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
-//            InvalidExtensionException {
-//        int fileNamelength = file.getOriginalFilename().length();
-//        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {
-//            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
-//        }
-//
-//        assertAllowed(file, allowedExtension);
-//
-////        String fileName = extractFilename(file);
-//
-//        String originalFilename = file.getOriginalFilename();
-//        File desc = getAbsoluteFile(baseDir, originalFilename);
-//        file.transferTo(desc);
-//        String pathFileName = getPathFileName(originalFilename);
-//        return pathFileName;
-//    }
+
 
     /**
      * 编码文件名
      */
     public static final String extractFilename(MultipartFile file) {
-        String fileName = file.getOriginalFilename();
         String extension = getExtension(file);
-        fileName = DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension;
-        return fileName;
+        return DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension;
     }
 
-    private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
+    private static final File getAbsoluteFile(String uploadDir, String fileName) {
         File desc = new File(uploadDir + File.separator + fileName);
 
         if (!desc.exists()) {
@@ -129,9 +98,8 @@ public class FileUploadUtils {
         return desc.isAbsolute() ? desc : desc.getAbsoluteFile();
     }
 
-    private static final String getPathFileName(String fileName) throws IOException {
-        String pathFileName = "/" + fileName;
-        return pathFileName;
+    private static final String getPathFileName(String fileName) {
+        return   "/" + fileName;
     }
 
     /**
@@ -142,7 +110,7 @@ public class FileUploadUtils {
      * @throws InvalidExtensionException      文件校验异常
      */
     public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
-            throws FileSizeLimitExceededException, InvalidExtensionException {
+            throws InvalidExtensionException {
         long size = file.getSize();
         if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE) {
             throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);

+ 1 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/utils/VideoUtils.java

@@ -44,11 +44,7 @@ public class VideoUtils {
      */
     public static BufferedImage frameToBufferedImage(Frame frame) {
         //创建BufferedImage对象
-//        try (Java2DFrameConverter converter = new Java2DFrameConverter()) {
-//            return converter.getBufferedImage(frame);
-//        }
         Java2DFrameConverter converter = new Java2DFrameConverter();
-        BufferedImage bufferedImage = converter.getBufferedImage(frame);
-        return bufferedImage;
+        return converter.getBufferedImage(frame);
     }
 }

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/common/VideoManagerConstants.java

@@ -52,5 +52,5 @@ public class VideoManagerConstants {
 
 	public static final String MEDIA_TRANSACTION_USED_PREFIX = "VMP_media_transaction_";
 
-	public static final long REDIS_ERPIRE = 12*60*60;
+	public static final long REDIS_ERPIRE = 12*60*60L;
 }

+ 1 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/conf/ProxyServletConfig.java

@@ -25,7 +25,7 @@ import java.net.ConnectException;
 @Configuration
 public class ProxyServletConfig {
 
-    private final static Logger logger = LoggerFactory.getLogger(ProxyServletConfig.class);
+    private  static final Logger logger = LoggerFactory.getLogger(ProxyServletConfig.class);
 
     @Autowired
     private IMediaServerService mediaServerService;
@@ -92,7 +92,6 @@ public class ProxyServletConfig {
 
             String uri = null;
             if (mediaInfo != null) {
-//                String realRequestURI = requestURI.substring(requestURI.indexOf(mediaInfo.getId())+ mediaInfo.getId().length());
                 uri = String.format("http://%s:%s", mediaInfo.getIp(), mediaInfo.getHttpPort());
             }else {
                 uri = "http://127.0.0.1:" + serverPort +"/index/hook/null"; // 只是一个能返回404的请求而已, 其他的也可以
@@ -188,7 +187,6 @@ public class ProxyServletConfig {
 
             String uri = null;
             if (mediaInfo != null) {
-//                String realRequestURI = requestURI.substring(requestURI.indexOf(mediaInfo.getId())+ mediaInfo.getId().length());
                 uri = String.format("http://%s:%s", mediaInfo.getIp(), mediaInfo.getRecordAssistPort());
             }else {
                 uri = "http://127.0.0.1:" + serverPort +"/index/hook/null"; // 只是一个能返回404的请求而已, 其他的也可以

+ 11 - 12
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/SipLayer.java

@@ -29,7 +29,7 @@ import gov.nist.javax.sip.SipStackImpl;
 @Component
 public class SipLayer implements SipListener {
 
-	private final static Logger logger = LoggerFactory.getLogger(SipLayer.class);
+	private  static final Logger logger = LoggerFactory.getLogger(SipLayer.class);
 
 	@Autowired
 	private SipConfig sipConfig;
@@ -103,9 +103,9 @@ public class SipLayer implements SipListener {
 			logger.error("无法使用 [ {}:{} ]作为SIP[ TCP ]服务,可排查: 1. sip.monitor-ip 是否为本机网卡IP; 2. sip.port 是否已被占用"
 					, sipConfig.getMonitorIp(), sipConfig.getPort());
 		} catch (TooManyListenersException e) {
-			e.printStackTrace();
+			logger.error("TooManyListenersException异常:"+e);
 		} catch (ObjectInUseException e) {
-			e.printStackTrace();
+			logger.error("ObjectInUseException异常:"+e);
 		}
 		return tcpSipProvider;
 	}
@@ -119,16 +119,15 @@ public class SipLayer implements SipListener {
 			udpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "UDP");
 			udpSipProvider = (SipProviderImpl)sipStack.createSipProvider(udpListeningPoint);
 			udpSipProvider.addSipListener(this);
-//			udpSipProvider.setAutomaticDialogSupportEnabled(false);
 		} catch (TransportNotSupportedException e) {
 			e.printStackTrace();
 		} catch (InvalidArgumentException e) {
 			logger.error("无法使用 [ {}:{} ]作为SIP[ UDP ]服务,可排查: 1. sip.monitor-ip 是否为本机网卡IP; 2. sip.port 是否已被占用"
 					, sipConfig.getMonitorIp(), sipConfig.getPort());
 		} catch (TooManyListenersException e) {
-			e.printStackTrace();
+			logger.error("TooManyListenersException异常"+e);
 		} catch (ObjectInUseException e) {
-			e.printStackTrace();
+			logger.error("ObjectInUseException异常"+e);
 		}
 		logger.info("Sip Server UDP 启动成功 port [" + sipConfig.getMonitorIp() + ":" + sipConfig.getPort() + "]");
 		return udpSipProvider;
@@ -159,8 +158,8 @@ public class SipLayer implements SipListener {
 			try {
 				processor.process(evt, this, sipConfig);
 			} catch (ParseException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
+				// Auto-generated catch block
+				logger.error("processResponse异常:"+e);
 			}
 
 			if (evt.getResponse() != null && sipSubscribe.getOkSubscribesSize() > 0 ) {
@@ -200,7 +199,7 @@ public class SipLayer implements SipListener {
 	 */
 	@Override
 	public void processTimeout(TimeoutEvent timeoutEvent) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 
 	}
 
@@ -216,7 +215,7 @@ public class SipLayer implements SipListener {
 	 */
 	@Override
 	public void processIOException(IOExceptionEvent exceptionEvent) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 	}
 
 	/**
@@ -231,7 +230,7 @@ public class SipLayer implements SipListener {
 	 */
 	@Override
 	public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 	}
 
 	/**
@@ -246,7 +245,7 @@ public class SipLayer implements SipListener {
 	 */
 	@Override
 	public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 	}
 
 }

+ 15 - 14
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java

@@ -37,8 +37,8 @@ import javax.sip.message.Request;
 import javax.sip.message.Response;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
 import java.util.Date;
-import java.util.Random;
 
 /**
  * Implements the HTTP digest authentication method server side functionality.
@@ -85,18 +85,20 @@ public class DigestServerAuthenticationHelper  {
      * @return a generated nonce.
      */
     private String generateNonce() {
-        // Get the time of day and run MD5 over it.
-        Date date = new Date();
-        long time = date.getTime();
-        Random rand = new Random();
-        long pad = rand.nextLong();
-        // String nonceString = (new Long(time)).toString()
-        //         + (new Long(pad)).toString();
-        String nonceString = Long.valueOf(time).toString()
-                + Long.valueOf(pad).toString();
-        byte mdbytes[] = messageDigest.digest(nonceString.getBytes());
-        // Convert the mdbytes array into a hex string.
-        return toHexString(mdbytes);
+        try {
+            // Get the time of day and run MD5 over it.
+            Date date = new Date();
+            long time = date.getTime();
+            // 随机数方法变更
+            long pad = SecureRandom.getInstanceStrong().nextLong();
+            String nonceString = Long.toString(time)
+                    + Long.toString(pad);
+            byte mdbytes[] = messageDigest.digest(nonceString.getBytes());
+            return toHexString(mdbytes);
+        }catch (NoSuchAlgorithmException e) {
+            logger.error("generateNonce:"+e);
+        }
+        return null;
     }
 
     public Response generateChallenge(HeaderFactory headerFactory, Response response, String realm) {
@@ -202,7 +204,6 @@ public class DigestServerAuthenticationHelper  {
         String HA2 = toHexString(mdbytes);
         logger.debug("HA1: " + HA1);
         logger.debug("HA2: " + HA2);
-        // String cnonce = authHeader.getCNonce();
         logger.debug("nonce: " + nonce);
         logger.debug("nc: " + ncStr);
         logger.debug("cnonce: " + cnonce);

+ 2 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/DeviceChannel.java

@@ -191,6 +191,8 @@ public class DeviceChannel {
 			case 4:
 				this.PTZTypeText = "遥控枪机";
 				break;
+			default:
+				break;
 		}
 	}
 

+ 4 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/GbStream.java

@@ -15,18 +15,22 @@ public class GbStream extends PlatformGbStream{
     private String streamType;
     private boolean status;
 
+    @Override
     public String getApp() {
         return app;
     }
 
+    @Override
     public void setApp(String app) {
         this.app = app;
     }
 
+    @Override
     public String getStream() {
         return stream;
     }
 
+    @Override
     public void setStream(String stream) {
         this.stream = stream;
     }

+ 1 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/MediaStream.java

@@ -13,6 +13,7 @@ import java.util.Map;
  */
 public class MediaStream {
 
+private MediaStream(){}
 
     /**
      * 视频描述f参数

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/ParentPlatform.java

@@ -90,7 +90,7 @@ public class ParentPlatform {
 
     /**
      * RTCP流保活
-     * TODO 预留, 暂不实现
+     * 预留, 暂不实现
      */
     private boolean rtcp;
 

+ 3 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/PlatformGbStream.java

@@ -1,5 +1,8 @@
 package com.zd.alg.iot.vmp.gb28181.bean;
 
+/**
+ * @author zp
+ */
 public class PlatformGbStream {
     private String app;
     private String stream;

+ 0 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/RecordInfos.java

@@ -1,8 +1,6 @@
 package com.zd.alg.iot.vmp.gb28181.bean;
 
 
-//import gov.nist.javax.sip.header.SIPDate;
-
 import java.util.List;
 
 /**

+ 6 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/RecordItem.java

@@ -1,6 +1,9 @@
 package com.zd.alg.iot.vmp.gb28181.bean;
 
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import javax.validation.constraints.NotNull;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -13,6 +16,8 @@ import java.util.Date;
  */
 public class RecordItem  implements Comparable<RecordItem>{
 
+	private Logger logger = LoggerFactory.getLogger(RecordItem.class);
+
 	private String deviceId;
 
 	private String name;
@@ -115,7 +120,7 @@ public class RecordItem  implements Comparable<RecordItem>{
 				return 1;
 			}
 		} catch (ParseException e) {
-			e.printStackTrace();
+			logger.error("compareTo异常:"+e);
 		}
 		return 0;
 	}

+ 1 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java

@@ -46,9 +46,6 @@ public class PlatformNotRegisterEventLister implements ApplicationListener<Platf
     @Autowired
     private SipConfig config;
 
-    // @Autowired
-    // private RedisUtil redis;
-
     @Override
     public void onApplicationEvent(PlatformNotRegisterEvent event) {
 
@@ -61,8 +58,7 @@ public class PlatformNotRegisterEventLister implements ApplicationListener<Platf
         }
         // 查询是否有推流, 如果有则都停止
         List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServer(event.getPlatformGbID());
-        logger.info("停止[ {} ]的所有推流size", sendRtpItems.size());
-        if (sendRtpItems != null && sendRtpItems.size() > 0) {
+        if (sendRtpItems != null && !sendRtpItems.isEmpty()) {
             logger.info("停止[ {} ]的所有推流", event.getPlatformGbID());
             StringBuilder app = new StringBuilder();
             StringBuilder stream = new StringBuilder();

+ 6 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/session/SsrcConfig.java

@@ -1,6 +1,8 @@
 package com.zd.alg.iot.vmp.gb28181.session;
 
 import com.zd.alg.iot.vmp.utils.ConfigConst;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -9,6 +11,8 @@ import java.util.Set;
 
 public class SsrcConfig {
 
+    Logger logger = LoggerFactory.getLogger(SsrcConfig.class);
+
     /**
      * zlm流媒体服务器Id
      */
@@ -81,7 +85,7 @@ public class SsrcConfig {
             isUsed.remove(sn);
             notUsed.add(sn);
         }catch (NullPointerException e){
-            System.out.printf("11111");
+            logger.error("releaseSsrc NullPointerException"+e);
         }
     }
 
@@ -92,7 +96,7 @@ public class SsrcConfig {
     private String getSN() {
         String sn = null;
         int index = 0;
-        if (notUsed.size() == 0) {
+        if (notUsed==null || notUsed.isEmpty()) {
             throw new RuntimeException("ssrc已经用完");
         } else if (notUsed.size() == 1) {
             sn = notUsed.get(0);

+ 3 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/session/VideoStreamSessionManager.java

@@ -51,8 +51,7 @@ public class VideoStreamSessionManager {
 		SsrcTransaction ssrcTransaction = getSsrcTransaction(deviceId, channelId);
 		if (ssrcTransaction == null) return null;
 		byte[] transactionByteArray = ssrcTransaction.getTransaction();
-		ClientTransaction clientTransaction = (ClientTransaction)SerializeUtils.deSerialize(transactionByteArray);
-		return clientTransaction;
+		return (ClientTransaction)SerializeUtils.deSerialize(transactionByteArray);
 	}
 
 	public SIPDialog getDialog(String deviceId, String channelId){
@@ -60,13 +59,11 @@ public class VideoStreamSessionManager {
 		if (ssrcTransaction == null) return null;
 		byte[] dialogByteArray = ssrcTransaction.getDialog();
 		if (dialogByteArray == null) return null;
-		SIPDialog dialog = (SIPDialog)SerializeUtils.deSerialize(dialogByteArray);
-		return dialog;
+		return (SIPDialog)SerializeUtils.deSerialize(dialogByteArray);
 	}
 
 	public SsrcTransaction getSsrcTransaction(String deviceId, String channelId){
-		SsrcTransaction ssrcTransaction = (SsrcTransaction)redisUtil.get(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + deviceId + "_" + channelId);
-		return ssrcTransaction;
+		return (SsrcTransaction)redisUtil.get(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + deviceId + "_" + channelId);
 	}
 
 	public String getStreamId(String deviceId, String channelId){

+ 0 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/SIPProcessorFactory.java

@@ -106,8 +106,6 @@ public class SIPProcessorFactory {
 	public ISIPRequestProcessor createRequestProcessor(RequestEvent evt) {
 		Request request = evt.getRequest();
 		String method = request.getMethod();
-//		logger.info("接收到消息:"+request.getMethod());
-//		sipSubscribe.getSubscribe(evt.getServerTransaction().getBranchId()).response(evt);
 		if (Request.INVITE.equals(method)) {
 			InviteRequestProcessor processor = new InviteRequestProcessor();
 			processor.setRequestEvent(evt);

+ 2 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/callback/CheckForAllRecordsThread.java

@@ -29,13 +29,14 @@ public class CheckForAllRecordsThread extends Thread {
         this.recordInfos = recordInfos;
     }
 
+    @Override
     public void run() {
 
         String cacheKey = this.key;
 
         for (long stop = System.nanoTime() + TimeUnit.SECONDS.toNanos(10); stop > System.nanoTime();) {
             List<Object> cacheKeys = redis.scan(cacheKey + "_*");
-            List<RecordItem> totalRecordList = new ArrayList<RecordItem>();
+            List<RecordItem> totalRecordList = new ArrayList<>();
             for (int i = 0; i < cacheKeys.size(); i++) {
                 totalRecordList.addAll((List<RecordItem>) redis.get(cacheKeys.get(i).toString()));
             }

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java

@@ -45,7 +45,7 @@ public class DeferredResultHolder {
 
 	public static final String CALLBACK_CMD_BROADCAST = "CALLBACK_BROADCAST";
 
-	private Map<String, DeferredResult> map = new ConcurrentHashMap<String, DeferredResult>();
+	private Map<String, DeferredResult> map = new ConcurrentHashMap<>();
 
 	public void put(String key, DeferredResult result) {
 		map.put(key, result);

+ 6 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java

@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.UUID;
 
 /**
- * @Description: 平台命令request创造器 TODO 冗余代码太多待优化
+ * @Description: 平台命令request创造器 冗余代码太多待优化
  * @author: panll
  * @date: 2020年5月6日 上午9:29:02
  */
@@ -38,7 +38,7 @@ public class SIPRequestHeaderPlarformProvider {
 		// sipuri
 		SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
 		// via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(),
 				parentPlatform.getTransport(), viaTag);
 		viaHeader.setRPort();
@@ -80,7 +80,7 @@ public class SIPRequestHeaderPlarformProvider {
 		SipURI requestLine = sipFactory.createAddressFactory().createSipURI(platform.getServerGBId(),
 				platform.getServerIP() + ":" + platform.getServerPort());
 		//via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(platform.getServerIP(), platform.getServerPort(), platform.getTransport(), viaTag);
 		viaHeader.setRPort();
 		viaHeaders.add(viaHeader);
@@ -144,13 +144,13 @@ public class SIPRequestHeaderPlarformProvider {
 				cNonce = UUID.randomUUID().toString();
 
 			}else if ("auth-int".equals(qop)){
-				// TODO
+					//auth-int
 			}
 		}
 		String HA1 = DigestUtils.md5DigestAsHex((parentPlatform.getDeviceGBId() + ":" + realm + ":" + parentPlatform.getPassword()).getBytes());
 		String HA2=DigestUtils.md5DigestAsHex((Request.REGISTER + ":" + requestURI.toString()).getBytes());
 
-		StringBuffer reStr = new StringBuffer(200);
+		StringBuilder reStr = new StringBuilder(200);
 		reStr.append(HA1);
 		reStr.append(":");
 		reStr.append(nonce);
@@ -190,7 +190,7 @@ public class SIPRequestHeaderPlarformProvider {
 		// sipuri
 		SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort());
 		// via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
 				parentPlatform.getTransport(), null);
 		viaHeader.setRPort();

+ 6 - 8
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java

@@ -18,7 +18,7 @@ import org.springframework.stereotype.Component;
 import com.zd.alg.iot.vmp.gb28181.bean.Device;
 
 /**
- * @Description:摄像头命令request创造器 TODO 冗余代码太多待优化
+ * @Description:摄像头命令request创造器 冗余代码太多待优化
  * @author: dgs
  * @date: 2020年5月6日 上午9:29:02
  */
@@ -36,7 +36,7 @@ public class SIPRequestHeaderProvider {
 		// sipuri
 		SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
 		// via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
 		viaHeader.setRPort();
 		viaHeaders.add(viaHeader);
@@ -67,7 +67,7 @@ public class SIPRequestHeaderProvider {
 		//请求行
 		SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
 		//via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
 		viaHeader.setRPort();
 		viaHeaders.add(viaHeader);
@@ -89,7 +89,6 @@ public class SIPRequestHeaderProvider {
 		request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
 
 		Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
-		// Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
 		request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
 		// Subject
 		SubjectHeader subjectHeader = sipFactory.createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
@@ -104,7 +103,7 @@ public class SIPRequestHeaderProvider {
 		//请求行
 		SipURI requestLine = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
 		// via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getIp(), device.getPort(), device.getTransport(), viaTag);
 		viaHeader.setRPort();
 		viaHeaders.add(viaHeader);
@@ -125,7 +124,6 @@ public class SIPRequestHeaderProvider {
 		request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
 
 		Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
-		// Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
 		request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
 
 		ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
@@ -138,7 +136,7 @@ public class SIPRequestHeaderProvider {
 		//请求行
 		SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
 		// via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
 		viaHeaders.add(viaHeader);
 		//from
@@ -168,7 +166,7 @@ public class SIPRequestHeaderProvider {
 		// sipuri
 		SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
 		// via
-		ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
+		ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
 		ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(),
 				device.getTransport(), viaTag);
 		viaHeader.setRPort();

+ 32 - 30
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java

@@ -230,7 +230,7 @@ public class SIPCommander implements ISIPCommander {
 			int zoomSpeed) {
 		try {
 			String cmdStr= cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed);
-			StringBuffer ptzXml = new StringBuffer(200);
+			StringBuilder ptzXml = new StringBuilder(200);
 			ptzXml.append("<?xml version=\"1.0\" ?>\r\n");
 			ptzXml.append("<Control>\r\n");
 			ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -271,7 +271,7 @@ public class SIPCommander implements ISIPCommander {
 		try {
 			String cmdStr= frontEndCmdString(cmdCode, parameter1, parameter2, combineCode2);
 			logger.info("控制字符串:" + cmdStr);
-			StringBuffer ptzXml = new StringBuffer(200);
+			StringBuilder ptzXml = new StringBuilder(200);
 			ptzXml.append("<?xml version=\"1.0\" ?>\r\n");
 			ptzXml.append("<Control>\r\n");
 			ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -305,7 +305,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean fronEndCmd(Device device, String channelId, String cmdString) {
 		try {
-			StringBuffer ptzXml = new StringBuffer(200);
+			StringBuilder ptzXml = new StringBuilder(200);
 			ptzXml.append("<?xml version=\"1.0\" ?>\r\n");
 			ptzXml.append("<Control>\r\n");
 			ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -356,7 +356,7 @@ public class SIPCommander implements ISIPCommander {
 				subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey);
 			});
 			//
-			StringBuffer content = new StringBuffer(200);
+			StringBuilder content = new StringBuilder(200);
 			content.append("v=0\r\n");
 			content.append("o="+"00000"+" 0 0 IN IP4 "+ mediaServerItem.getSdpIp() +"\r\n");
 			content.append("s=Play\r\n");
@@ -409,7 +409,6 @@ public class SIPCommander implements ISIPCommander {
 				}
 			}
 			//验证1:获取码流
-			//content.append("a="+MediaStream.getMe diaStreamA(dpi)+"\r\n");
 			content.append("y="+ssrcInfo.getSsrc()+"\r\n");//ssrc
 			//验证2:设置编码格式、分辨率、帧数、码率类型、码率大小、编码格式、码率大小
 			content.append("f="+MediaStream.getMediaStreamF(dpi)+"\r\n");
@@ -461,7 +460,7 @@ public class SIPCommander implements ISIPCommander {
 				subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey);
 			});
 
-			StringBuffer content = new StringBuffer(200);
+			StringBuilder content = new StringBuilder(200);
 	        content.append("v=0\r\n");
 	        content.append("o="+sipConfig.getId()+" 0 0 IN IP4 "+sipConfig.getIp()+"\r\n");
 	        content.append("s=Playback\r\n");
@@ -563,7 +562,7 @@ public class SIPCommander implements ISIPCommander {
 				subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey);
 			});
 
-			StringBuffer content = new StringBuffer(200);
+			StringBuilder content = new StringBuilder(200);
 	        content.append("v=0\r\n");
 	        content.append("o="+sipConfig.getId()+" 0 0 IN IP4 "+sipConfig.getIp()+"\r\n");
 	        content.append("s=Download\r\n");
@@ -673,7 +672,7 @@ public class SIPCommander implements ISIPCommander {
 					eventListenersField.setAccessible(true);
 					eventListenersField.set(dialog, new HashSet<>());
 				} catch (NoSuchFieldException | IllegalAccessException e) {
-					e.printStackTrace();
+					logger.error("streamByeCmd异常:"+e);
 				}
 			}
 
@@ -706,6 +705,7 @@ public class SIPCommander implements ISIPCommander {
 			}
 		} catch (SipException | ParseException e) {
 			e.printStackTrace();
+			logger.error("streamByeCmd异常:"+e);
 		}
 	}
 
@@ -729,7 +729,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean audioBroadcastCmd(Device device) {
 		try {
-			StringBuffer broadcastXml = new StringBuffer(200);
+			StringBuilder broadcastXml = new StringBuilder(200);
 			broadcastXml.append("<?xml version=\"1.0\" ?>\r\n");
 			broadcastXml.append("<Notify>\r\n");
 			broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
@@ -754,7 +754,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public void audioBroadcastCmd(Device device, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer broadcastXml = new StringBuffer(200);
+			StringBuilder broadcastXml = new StringBuilder(200);
 			broadcastXml.append("<?xml version=\"1.0\" ?>\r\n");
 			broadcastXml.append("<Notify>\r\n");
 			broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
@@ -783,7 +783,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean recordCmd(Device device, String channelId, String recordCmdStr, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -815,7 +815,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean teleBootCmd(Device device) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -844,7 +844,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean guardCmd(Device device, String guardCmdStr, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -872,7 +872,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean alarmCmd(Device device, String alarmMethod, String alarmType, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -916,7 +916,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean iFrameCmd(Device device, String channelId) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -954,7 +954,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean homePositionCmd(Device device, String channelId, String enabled, String resetTime, String presetIndex, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
@@ -1004,7 +1004,7 @@ public class SIPCommander implements ISIPCommander {
 	 */
 	@Override
 	public boolean deviceConfigCmd(Device device) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 		return false;
 	}
 
@@ -1022,7 +1022,7 @@ public class SIPCommander implements ISIPCommander {
 	public boolean deviceBasicConfigCmd(Device device, String channelId, String name, String expiration,
 										String heartBeatInterval, String heartBeatCount, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Control>\r\n");
 			cmdXml.append("<CmdType>DeviceConfig</CmdType>\r\n");
@@ -1076,7 +1076,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean deviceStatusQuery(Device device, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer catalogXml = new StringBuffer(200);
+			StringBuilder catalogXml = new StringBuilder(200);
 			catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			catalogXml.append("<Query>\r\n");
 			catalogXml.append("<CmdType>DeviceStatus</CmdType>\r\n");
@@ -1108,7 +1108,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean deviceInfoQuery(Device device) {
 		try {
-			StringBuffer catalogXml = new StringBuffer(200);
+			StringBuilder catalogXml = new StringBuilder(200);
 			catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			catalogXml.append("<Query>\r\n");
 			catalogXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
@@ -1142,7 +1142,7 @@ public class SIPCommander implements ISIPCommander {
 		// 清空通道
 		storager.cleanChannelsForDevice(device.getDeviceId());
 		try {
-			StringBuffer catalogXml = new StringBuffer(200);
+			StringBuilder catalogXml = new StringBuilder(200);
 			catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			catalogXml.append("<Query>\r\n");
 			catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
@@ -1176,7 +1176,7 @@ public class SIPCommander implements ISIPCommander {
 	public boolean recordInfoQuery(Device device, String channelId, String startTime, String endTime) {
 
 		try {
-			StringBuffer recordInfoXml = new StringBuffer(200);
+			StringBuilder recordInfoXml = new StringBuilder(200);
 			recordInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			recordInfoXml.append("<Query>\r\n");
 			recordInfoXml.append("<CmdType>RecordInfo</CmdType>\r\n");
@@ -1221,7 +1221,7 @@ public class SIPCommander implements ISIPCommander {
 	public boolean alarmInfoQuery(Device device, String startPriority, String endPriority, String alarmMethod, String alarmType,
 								 String startTime, String endTime, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Query>\r\n");
 			cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
@@ -1271,7 +1271,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean deviceConfigQuery(Device device, String channelId, String configType,  SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Query>\r\n");
 			cmdXml.append("<CmdType>ConfigDownload</CmdType>\r\n");
@@ -1306,7 +1306,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean presetQuery(Device device, String channelId, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer cmdXml = new StringBuffer(200);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" ?>\r\n");
 			cmdXml.append("<Query>\r\n");
 			cmdXml.append("<CmdType>PresetQuery</CmdType>\r\n");
@@ -1340,7 +1340,7 @@ public class SIPCommander implements ISIPCommander {
 	@Override
 	public boolean mobilePostitionQuery(Device device, SipSubscribe.Event errorEvent) {
 		try {
-			StringBuffer mobilePostitionXml = new StringBuffer(200);
+			StringBuilder mobilePostitionXml = new StringBuilder(200);
 			mobilePostitionXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			mobilePostitionXml.append("<Query>\r\n");
 			mobilePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
@@ -1375,7 +1375,7 @@ public class SIPCommander implements ISIPCommander {
 	 */
 	public boolean mobilePositionSubscribe(Device device, int expires, int interval) {
 		try {
-			StringBuffer subscribePostitionXml = new StringBuffer(200);
+			StringBuilder subscribePostitionXml = new StringBuilder(200);
 			subscribePostitionXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			subscribePostitionXml.append("<Query>\r\n");
 			subscribePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
@@ -1391,7 +1391,7 @@ public class SIPCommander implements ISIPCommander {
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
 					: udpSipProvider.getNewCallId();
 
-			Request request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" ,callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
+			Request request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" ,callIdHeader);
 			transmitRequest(device, request);
 
 			return true;
@@ -1417,7 +1417,7 @@ public class SIPCommander implements ISIPCommander {
 	 */
 	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);
+			StringBuilder cmdXml = new StringBuilder(200);
 			cmdXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
 			cmdXml.append("<Query>\r\n");
 			cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
@@ -1486,7 +1486,9 @@ public class SIPCommander implements ISIPCommander {
 			sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), okEvent);
 		}
 
-		clientTransaction.sendRequest();
+		if(clientTransaction!=null){
+			clientTransaction.sendRequest();
+		}
 		return clientTransaction;
 	}
 }

+ 15 - 10
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java

@@ -80,6 +80,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
                     callIdHeader = udpSipProvider.getNewCallId();
                 }
 
+                if(callIdHeader==null){
+                    return false;
+                }
                 request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, 1L, "FromRegister" + tm, null, callIdHeader);
                 // 将 callid 写入缓存, 等注册成功可以更新状态
                 redisCatchStorage.updatePlatformRegisterInfo(callIdHeader.getCallId(), parentPlatform.getServerGBId());
@@ -104,13 +107,13 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
             transmitRequest(parentPlatform, request, null, okEvent);
             return true;
         } catch (ParseException e) {
-            e.printStackTrace();
+            logger.error("ParseException异常:"+e);
         } catch (InvalidArgumentException e) {
-            e.printStackTrace();
+            logger.error("InvalidArgumentException异常:"+e);
         } catch (PeerUnavailableException e) {
-            e.printStackTrace();
+            logger.error("PeerUnavailableException异常:"+e);
         } catch (SipException e) {
-            e.printStackTrace();
+            logger.error("SipException异常:"+e);
         }
         return false;
     }
@@ -120,7 +123,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
         String callId = null;
         try {
 
-            StringBuffer keepaliveXml = new StringBuffer(200);
+            StringBuilder keepaliveXml = new StringBuilder(200);
             keepaliveXml.append("<?xml version=\"1.0\"?>\r\n");
             keepaliveXml.append("<Notify>\r\n");
             keepaliveXml.append("<CmdType>Keepalive</CmdType>\r\n");
@@ -188,7 +191,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
             return false;
         }
         try {
-            StringBuffer catalogXml = new StringBuffer(600);
+            StringBuilder catalogXml = new StringBuilder(600);
             catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
             catalogXml.append("<Response>\r\n");
             catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
@@ -205,8 +208,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
                 catalogXml.append("<Owner>" + channel.getOwner() + "</Owner>\r\n");
                 catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
                 catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
-                catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");// TODO 当前不能添加分组, 所以暂时没有父节点
-                catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n"); // TODO 当前不能添加分组, 所以暂时没有父节点
+                // 当前不能添加分组, 所以暂时没有父节点
+                catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
+                // 当前不能添加分组, 所以暂时没有父节点
+                catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
                 catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
                 catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
                 catalogXml.append("<Status>" + (channel.getStatus() == 0?"OFF":"ON") + "</Status>\r\n");
@@ -245,7 +250,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
             return false;
         }
         try {
-            StringBuffer deviceInfoXml = new StringBuffer(600);
+            StringBuilder deviceInfoXml = new StringBuilder(600);
             deviceInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
             deviceInfoXml.append("<Response>\r\n");
             deviceInfoXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
@@ -284,7 +289,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
             return false;
         }
         try {
-            StringBuffer deviceStatusXml = new StringBuffer(600);
+            StringBuilder deviceStatusXml = new StringBuilder(600);
             deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
             deviceStatusXml.append("<Response>\r\n");
             deviceStatusXml.append("<CmdType>DeviceStatus</CmdType>\r\n");

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/SIPRequestAbstractProcessor.java

@@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class SIPRequestAbstractProcessor implements ISIPRequestProcessor {
 
-	private final static Logger logger = LoggerFactory.getLogger(SIPRequestAbstractProcessor.class);
+	private  static final Logger logger = LoggerFactory.getLogger(SIPRequestAbstractProcessor.class);
 
 	protected RequestEvent evt;
 

+ 3 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/AckRequestProcessor.java

@@ -41,11 +41,9 @@ public class AckRequestProcessor extends SIPRequestAbstractProcessor {
 	 */
 	@Override
 	public void process(RequestEvent evt, Integer dpi) {
-		//Request request = evt.getRequest();
 		Dialog dialog = evt.getDialog();
 		if (dialog == null) return;
-		//DialogState state = dialog.getState();
-		if (/*request.getMecodewwthod().equals(Request.INVITE) &&*/ dialog.getState()== DialogState.CONFIRMED) {
+		if (dialog.getState()== DialogState.CONFIRMED) {
 			String platformGbId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(FromHeader.NAME)).getAddress().getURI()).getUser();
 			String channelId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(ToHeader.NAME)).getAddress().getURI()).getUser();
 			SendRtpItem sendRtpItem =  redisCatchStorage.querySendRTPServer(platformGbId, channelId);
@@ -73,7 +71,6 @@ public class AckRequestProcessor extends SIPRequestAbstractProcessor {
 			param.put("dst_url",sendRtpItem.getIp());
 			param.put("dst_port", sendRtpItem.getPort());
 			param.put("is_udp", is_Udp);
-			//param.put ("src_port", sendRtpItem.getLocalPort());
 			// 设备推流查询,成功后才能转推
 			boolean rtpPushed = false;
 			long startTime = System.currentTimeMillis();
@@ -90,7 +87,6 @@ public class AckRequestProcessor extends SIPRequestAbstractProcessor {
 							logger.info("等待设备推流[{}/{}].......",
 									streamInfo.getApp() ,streamInfo.getStreamId());
 							Thread.sleep(1000);
-							continue;
 						}
 					} else {
 						rtpPushed = true;
@@ -98,7 +94,8 @@ public class AckRequestProcessor extends SIPRequestAbstractProcessor {
 								streamInfo.getApp() ,streamInfo.getStreamId());
 					}
 				} catch (InterruptedException e) {
-					e.printStackTrace();
+					logger.error("process异常:"+e);
+					Thread.currentThread().interrupt();
 				}
 			}
 		}

+ 3 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java

@@ -86,11 +86,11 @@ public class ByeRequestProcessor extends SIPRequestAbstractProcessor {
 				}
 			}
 		} catch (SipException e) {
-			e.printStackTrace();
+			logger.error("SipException 异常:"+e);
 		} catch (InvalidArgumentException e) {
-			e.printStackTrace();
+			logger.error("InvalidArgumentException 异常:"+e);
 		} catch (ParseException e) {
-			e.printStackTrace();
+			logger.error("ParseException 异常:"+e);
 		}
 	}
 

+ 2 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/CancelRequestProcessor.java

@@ -15,13 +15,11 @@ public class CancelRequestProcessor extends SIPRequestAbstractProcessor {
 	 * 处理CANCEL请求
 	 *
 	 * @param evt
-	 * @param layer
-	 * @param transaction
-	 * @param config
+	 * @param dpi
 	 */
 	@Override
 	public void process(RequestEvent evt, Integer dpi) {
-		// TODO 优先级99 Cancel Request消息实现,此消息一般为级联消息,上级给下级发送请求取消指令
+		//优先级99 Cancel Request消息实现,此消息一般为级联消息,上级给下级发送请求取消指令
 
 	}
 

+ 13 - 21
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java

@@ -133,9 +133,7 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 				//  获取支持的格式
 				Vector mediaDescriptions = sdp.getMediaDescriptions(true);
 				// 查看是否支持PS 负载96
-				//String ip = null;
 				int port = -1;
-				//boolean recvonly = false;
 				boolean mediaTransmissionTCP = false;
 				Boolean tcpActive = null;
 				for (Object description : mediaDescriptions) {
@@ -145,7 +143,6 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 					Vector mediaFormats = media.getMediaFormats(false);
 					if (mediaFormats.contains("96")) {
 						port = media.getMediaPort();
-						//String mediaType = media.getMediaType();
 						String protocol = media.getProtocol();
 
 						// 区分TCP发流还是udp, 当前默认udp
@@ -171,7 +168,6 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 				}
 				String username = sdp.getOrigin().getUsername();
 				String addressStr = sdp.getOrigin().getAddress();
-				//String sessionName = sdp.getSessionName().getValue();
 				logger.info("[上级点播]用户:{}, 地址:{}:{}, ssrc:{}", username, addressStr, port, ssrc);
 				Device device  = null;
 				// 通过 channel 和 gbStream 是否为null 值判断来源是直播流合适国标
@@ -205,12 +201,11 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 					// 通知下级推流,
 					PlayResult playResult = playService.play(mediaServerItem,device.getDeviceId(), channelId, (mediaServerItemInUSe, responseJSON)->{
 						// 收到推流, 回复200OK, 等待ack
-						// if (sendRtpItem == null) return;
 						sendRtpItem.setStatus(1);
 						redisCatchStorage.updateSendRTPSever(sendRtpItem);
-						// TODO 添加对tcp的支持
+						// 添加对tcp的支持
 
-						StringBuffer content = new StringBuffer(200);
+						StringBuilder content = new StringBuilder(200);
 						content.append("v=0\r\n");
 						content.append("o="+"00000"+" 0 0 IN IP4 "+mediaServerItemInUSe.getSdpIp()+"\r\n");
 						content.append("s=Play\r\n");
@@ -225,11 +220,11 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 						try {
 							responseAck(evt, content.toString());
 						} catch (SipException e) {
-							e.printStackTrace();
+							logger.error("SipException 异常:"+e);
 						} catch (InvalidArgumentException e) {
-							e.printStackTrace();
+							logger.error("InvalidArgumentException 异常:"+e);
 						} catch (ParseException e) {
-							e.printStackTrace();
+							logger.error("ParseException 异常:"+e);
 						}
 					} ,((event) -> {
 						// 未知错误。直接转发设备点播的错误
@@ -266,8 +261,8 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 
 					sendRtpItem.setStatus(1);
 					redisCatchStorage.updateSendRTPSever(sendRtpItem);
-					// TODO 添加对tcp的支持
-					StringBuffer content = new StringBuffer(200);
+					// 添加对tcp的支持
+					StringBuilder content = new StringBuilder(200);
 					content.append("v=0\r\n");
 					content.append("o="+"00000"+" 0 0 IN IP4 "+mediaServerItem.getSdpIp()+"\r\n");
 					content.append("s=Play\r\n");
@@ -282,11 +277,11 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 					try {
 						responseAck(evt, content.toString());
 					} catch (SipException e) {
-						e.printStackTrace();
+						logger.error("SipException 异常:"+e);
 					} catch (InvalidArgumentException e) {
-						e.printStackTrace();
+						logger.error("InvalidArgumentException 异常:"+e);
 					} catch (ParseException e) {
-						e.printStackTrace();
+						logger.error("ParseException 异常:"+e);
 					}
 				}
 
@@ -316,7 +311,6 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 					Vector mediaDescriptions = sdp.getMediaDescriptions(true);
 					// 查看是否支持PS 负载96
 					int port = -1;
-					//boolean recvonly = false;
 					boolean mediaTransmissionTCP = false;
 					Boolean tcpActive = null;
 					for (int i = 0; i < mediaDescriptions.size(); i++) {
@@ -359,13 +353,11 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
 			}
 
 		} catch (SipException | InvalidArgumentException | ParseException e) {
-			e.printStackTrace();
-			logger.warn("sdp解析错误");
-			e.printStackTrace();
+			logger.warn("sdp解析错误:"+e);
 		} catch (SdpParseException e) {
-			e.printStackTrace();
+			logger.warn("SdpParseException:"+e);
 		} catch (SdpException e) {
-			e.printStackTrace();
+			logger.warn("SdpException:"+e);
 		}
 	}
 

+ 13 - 29
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java

@@ -57,7 +57,7 @@ import java.util.UUID;
 @SuppressWarnings(value={"unchecked", "rawtypes"})
 public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 
-	public static volatile List<String> threadNameList = new ArrayList();
+	public static List<String> threadNameList = new ArrayList();
 
 	private UserSetup userSetup = (UserSetup) SpringBeanFactory.getBean("userSetup");
 
@@ -81,7 +81,7 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 
 	private IDeviceAlarmService deviceAlarmService;
 
-	private final static String CACHE_RECORDINFO_KEY = "CACHE_RECORDINFO_";
+	private static final String CACHE_RECORDINFO_KEY = "CACHE_RECORDINFO_";
 
 	private static final String MESSAGE_KEEP_ALIVE = "Keepalive";
 	private static final String MESSAGE_CONFIG_DOWNLOAD = "ConfigDownload";
@@ -95,7 +95,6 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 	private static final String MESSAGE_DEVICE_CONTROL = "DeviceControl";
 	private static final String MESSAGE_DEVICE_CONFIG = "DeviceConfig";
 	private static final String MESSAGE_MOBILE_POSITION = "MobilePosition";
-	// private static final String MESSAGE_MOBILE_POSITION_INTERVAL = "Interval";
 	private static final String MESSAGE_PRESET_QUERY = "PresetQuery";
 
 	/**
@@ -259,6 +258,7 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 					if (offLineDetector.isOnline(deviceId)) {
 						publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
 					} else {
+						//暂无逻辑
 					}
 				}
 			}
@@ -277,10 +277,9 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 		try {
 			Element rootElement = getRootElement(evt);
 			String deviceId = XmlUtil.getText(rootElement, "DeviceID");
-			//String result = XmlUtil.getText(rootElement, "Result");
 			// 回复200 OK
 			responseAck(evt);
-			if (rootElement.getName().equals("Response")) {//} !StringUtils.isEmpty(result)) {
+			if (rootElement.getName().equals("Response")) {
 				// 此处是对本平台发出DeviceControl指令的应答
 				JSONObject json = new JSONObject();
 				XmlUtil.node2Json(rootElement, json);
@@ -322,8 +321,10 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 									}
 									AlgorithmApplication.restart();
 								} catch (InterruptedException ignored) {
+									logger.error("processMessageDeviceControl异常:"+ignored);
+									Thread.currentThread().interrupt();
 								} catch (ObjectInUseException e) {
-									e.printStackTrace();
+									logger.error("processMessageDeviceControl异常:"+e);
 								}
 							}
 						});
@@ -419,7 +420,7 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 			String deviceId = XmlUtil.getText(rootElement, "DeviceID");
 			// 回复200 OK
 			responseAck(evt);
-			if (rootElement.getName().equals("Response")) {//   !StringUtils.isEmpty(result)) {
+			if (rootElement.getName().equals("Response")) {
 				// 此处是对本平台发出DeviceControl指令的应答
 				JSONObject json = new JSONObject();
 				XmlUtil.node2Json(rootElement, json);
@@ -518,9 +519,8 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 			AddressImpl address = (AddressImpl) fromHeader.getAddress();
 			SipUri uri = (SipUri) address.getURI();
 			String platformId = uri.getUser();
-			// if (deviceListElement == null) { // 存在DeviceList则为响应 catalog, 不存在DeviceList则为查询请求
 			if (name.equalsIgnoreCase("Query")) { // 区分是Response——查询响应,还是Query——查询请求
-				// TODO 后续将代码拆分
+				// 后续将代码拆分
 				ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
 				if (parentPlatform == null) {
 					response404Ack(evt);
@@ -537,14 +537,14 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 					List<GbStream> gbStreams = storager.queryGbStreamListInPlatform(parentPlatform.getServerGBId());
 					int size = channelReduces.size() + gbStreams.size();
 					// 回复级联的通道
-					if (channelReduces.size() > 0) {
+					if (channelReduces!=null && !channelReduces.isEmpty()) {
 						for (ChannelReduce channelReduce : channelReduces) {
 							DeviceChannel deviceChannel = storager.queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId());
 							cmderFroPlatform.catalogQuery(deviceChannel, parentPlatform, sn, fromHeader.getTag(), size);
 						}
 					}
 					// 回复直播的通道
-					if (gbStreams.size() > 0) {
+					if (gbStreams!=null && !gbStreams.isEmpty()) {
 						for (GbStream gbStream : gbStreams) {
 							DeviceChannel deviceChannel = new DeviceChannel();
 							deviceChannel.setChannelId(gbStream.getGbId());
@@ -554,12 +554,10 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 							deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
 							deviceChannel.setManufacture("wvp-pro");
 							deviceChannel.setStatus(gbStream.isStatus()?1:0);
-//							deviceChannel.setParentId(parentPlatform.getDeviceGBId());
 							deviceChannel.setRegisterWay(1);
 							deviceChannel.setCivilCode(cmder.getSipConfig().getDomain());
 							deviceChannel.setModel("live");
 							deviceChannel.setOwner("wvp-pro");
-//							deviceChannel.setAddress("test");
 							deviceChannel.setParental(0);
 							deviceChannel.setSecrecy("0");
 							deviceChannel.setSecrecy("0");
@@ -747,7 +745,6 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 						storager.insertMobilePosition(mobilePosition);
 					}
 				}
-				System.out.println("存储报警信息、报警分类");
 				// 存储报警信息、报警分类
 				deviceAlarmService.add(deviceAlarm);
 
@@ -795,26 +792,13 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 				if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
 			}
 
-//			if (device != null && device.getOnline() == 1) {
-//
-//				if (offLineDetector.isOnline(deviceId)) {
-//					publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
-//				} else {
-//				}
-//			}else {
-////				logger.warn("收到[ "+deviceId+" ]心跳信息, 但是设备" + (device == null? "不存在":"离线") + ", 回复401");
-////				Response response = getMessageFactory().createResponse(Response.UNAUTHORIZED, evt.getRequest());
-////				getServerTransaction(evt).sendResponse(response);
-//				publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
-//
-//			}
 		} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
 			e.printStackTrace();
 		}
 	}
 
 	/***
-	 * 处理RecordInfo设备录像列表Message请求 TODO 过期时间暂时写死180秒,后续与DeferredResult超时时间保持一致
+	 * 处理RecordInfo设备录像列表Message请求 ,过期时间暂时写死180秒,后续与DeferredResult超时时间保持一致
 	 *
 	 * @param evt
 	 */
@@ -849,7 +833,7 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
 				deferredResultHolder.invokeResult(msg);
 			} else {
 				Iterator<Element> recordListIterator = recordListElement.elementIterator();
-				List<RecordItem> recordList = new ArrayList<RecordItem>();
+				List<RecordItem> recordList = new ArrayList<>();
 				if (recordListIterator != null) {
 					RecordItem record = new RecordItem();
 					logger.info("处理录像列表数据...");

+ 2 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java

@@ -49,7 +49,7 @@ public class NotifyRequestProcessor extends SIPRequestAbstractProcessor {
 
 	private UserSetup userSetup = (UserSetup) SpringBeanFactory.getBean("userSetup");
 
-    private final static Logger logger = LoggerFactory.getLogger(MessageRequestProcessor.class);
+    private static final Logger logger = LoggerFactory.getLogger(MessageRequestProcessor.class);
 
 	private IVideoManagerStorager storager;
 
@@ -196,7 +196,7 @@ public class NotifyRequestProcessor extends SIPRequestAbstractProcessor {
 				}
 				storager.insertMobilePosition(mobilePosition);
 			}
-			// TODO: 需要实现存储报警信息、报警分类
+			// 需要实现存储报警信息、报警分类
 
 			// 回复200 OK
 			response200Ok(evt);

+ 7 - 15
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/request/impl/SubscribeRequestProcessor.java

@@ -1,19 +1,15 @@
 package com.zd.alg.iot.vmp.gb28181.transmit.request.impl;
 
-import java.text.ParseException;
+import com.zd.alg.iot.vmp.gb28181.transmit.request.SIPRequestAbstractProcessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import javax.sip.InvalidArgumentException;
 import javax.sip.RequestEvent;
 import javax.sip.ServerTransaction;
-import javax.sip.SipException;
 import javax.sip.header.ExpiresHeader;
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 
-import com.zd.alg.iot.vmp.gb28181.transmit.request.SIPRequestAbstractProcessor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * @Description:SUBSCRIBE请求处理器
  * @author: dgs
@@ -38,8 +34,9 @@ public class SubscribeRequestProcessor extends SIPRequestAbstractProcessor {
 			if (response != null) {
 				ExpiresHeader expireHeader = getHeaderFactory().createExpiresHeader(30);
 				response.setExpires(expireHeader);
+				logger.info("response : " + response.toString());
 			}
-			logger.info("response : " + response.toString());
+
 			ServerTransaction transaction = getServerTransaction(evt);
 			if (transaction != null) {
 				transaction.sendResponse(response);
@@ -48,13 +45,8 @@ public class SubscribeRequestProcessor extends SIPRequestAbstractProcessor {
 			} else {
 				logger.info("processRequest serverTransactionId is null.");
 			}
-
-		} catch (ParseException e) {
-			e.printStackTrace();
-		} catch (SipException e) {
-			e.printStackTrace();
-		} catch (InvalidArgumentException e) {
-			e.printStackTrace();
+		} catch (Exception e) {
+			logger.error("process."+e);
 		}
 	}
 }

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/ByeResponseProcessor.java

@@ -24,7 +24,7 @@ public class ByeResponseProcessor implements ISIPResponseProcessor {
 	 */
 	@Override
 	public void process(ResponseEvent evt, SipLayer layer, SipConfig config) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 	}
 
 }

+ 1 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/CancelResponseProcessor.java

@@ -20,12 +20,11 @@ public class CancelResponseProcessor implements ISIPResponseProcessor {
 	 *
 	 * @param evt
 	 * @param layer
-	 * @param transaction
 	 * @param config
 	 */
 	@Override
 	public void process(ResponseEvent evt, SipLayer layer, SipConfig config) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 
 	}
 

+ 2 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java

@@ -28,7 +28,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class InviteResponseProcessor implements ISIPResponseProcessor {
 
-	 private final static Logger logger = LoggerFactory.getLogger(InviteResponseProcessor.class);
+	 private static final Logger logger = LoggerFactory.getLogger(InviteResponseProcessor.class);
 
 	@Autowired
 	private VideoStreamSessionManager streamSession;
@@ -46,6 +46,7 @@ public class InviteResponseProcessor implements ISIPResponseProcessor {
 			int statusCode = response.getStatusCode();
 			// trying不会回复
 			if (statusCode == Response.TRYING) {
+				//trying不会回复
 			}
 			// 成功响应
 			// 下发ack
@@ -59,10 +60,6 @@ public class InviteResponseProcessor implements ISIPResponseProcessor {
 				requestURI.setPort(event.getRemotePort());
 				reqAck.setRequestURI(requestURI);
 				logger.info("向 " + event.getRemoteIpAddress() + ":" + event.getRemotePort() + "回复ack");
-				SipURI sipURI = (SipURI)dialog.getRemoteParty().getURI();
-				String deviceId = requestURI.getUser();
-				String channelId = sipURI.getUser();
-
 				dialog.sendAck(reqAck);
 
 			}

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/OtherResponseProcessor.java

@@ -24,7 +24,7 @@ public class OtherResponseProcessor implements ISIPResponseProcessor {
 	 */
 	@Override
 	public void process(ResponseEvent evt, SipLayer layer, SipConfig config) {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 
 	}
 

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/response/impl/RegisterResponseProcessor.java

@@ -37,7 +37,7 @@ public class RegisterResponseProcessor implements ISIPResponseProcessor {
 	@Autowired
 	private IRedisCatchStorage redisCatchStorage;
 
-	public RegisterResponseProcessor() {
+	private RegisterResponseProcessor() {
 	}
 
 	/**

+ 9 - 8
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/utils/DateUtil.java

@@ -1,5 +1,8 @@
 package com.zd.alg.iot.vmp.gb28181.utils;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -11,19 +14,19 @@ import java.util.Locale;
  * @date:   2020年5月8日 下午3:24:42
  */
 public class DateUtil {
+    private DateUtil(){}
 
-	//private static final String yyyy_MM_dd_T_HH_mm_ss_SSSXXX = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
+    private static Logger logger = LoggerFactory.getLogger(DateUtil.class);
 	private static final String yyyy_MM_dd_T_HH_mm_ss_SSSXXX = "yyyy-MM-dd'T'HH:mm:ss";
     private static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
 
 	public static String yyyy_MM_dd_HH_mm_ssToISO8601(String formatTime) {
-
         SimpleDateFormat oldsdf = new SimpleDateFormat(yyyy_MM_dd_HH_mm_ss, Locale.getDefault());
         SimpleDateFormat newsdf = new SimpleDateFormat(yyyy_MM_dd_T_HH_mm_ss_SSSXXX, Locale.getDefault());
         try {
             return newsdf.format(oldsdf.parse(formatTime));
         } catch (ParseException e) {
-            e.printStackTrace();
+            logger.error("ssToISO8601:"+e);
         }
         return "";
     }
@@ -35,7 +38,7 @@ public class DateUtil {
         try {
             return newsdf.format(oldsdf.parse(formatTime));
         } catch (ParseException e) {
-            e.printStackTrace();
+            logger.error("ISO8601Toyyyy_MM_dd_HH_mm_ss:"+e);
         }
         return "";
     }
@@ -46,11 +49,9 @@ public class DateUtil {
 		Date date;
 		try {
 			date = format.parse(formatTime);
-			Long timestamp=date.getTime()/1000;
-			//转换为Date类
-			return timestamp;
+            return date.getTime()/1000;
 		} catch (ParseException e) {
-			e.printStackTrace();
+            logger.error("yyyy_MM_dd_HH_mm_ssToTimestamp:"+e);
 		}
 		return 0;
 	}

+ 7 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/utils/NumericUtil.java

@@ -10,6 +10,8 @@ import org.slf4j.LoggerFactory;
  */
 public class NumericUtil {
 
+    private NumericUtil(){}
+
     private static Logger logger = LoggerFactory.getLogger(NumericUtil.class);
 
     /**
@@ -20,10 +22,10 @@ public class NumericUtil {
     public static boolean isDouble(String str) {
         try {
             Double num2 = Double.valueOf(str);
-//            logger.debug(num2 + " is a valid numeric string!");
+            logger.debug(num2 + " is a valid numeric string!");
             return true;
         } catch (Exception e) {
-//            logger.debug(str + " is an invalid numeric string!");
+            logger.debug(str + " is an invalid numeric string!");
             return false;
         }
     }
@@ -35,11 +37,11 @@ public class NumericUtil {
      */
     public static boolean isInteger(String str) {
         try {
-            int num2 = Integer.valueOf(str);
-//            logger.debug(num2 + " is an integer!");
+            int num2 = Integer.parseInt(str);
+            logger.debug(num2 + " is an integer!");
             return true;
         } catch (Exception e) {
-//            logger.debug(str + " is not an integer!");
+            logger.debug(str + " is not an integer!");
             return false;
         }
     }

+ 10 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/utils/XmlUtil.java

@@ -23,12 +23,15 @@ import org.springframework.util.StringUtils;
  * 基于dom4j的工具包
  *
  *
+ * @author zp
  */
 public class XmlUtil {
+    private XmlUtil(){}
+
     /**
      * 日志服务
      */
-    private static Logger LOG = LoggerFactory.getLogger(XmlUtil.class);
+    private static Logger logger = LoggerFactory.getLogger(XmlUtil.class);
 
     /**
      * 解析XML为Document对象
@@ -45,7 +48,7 @@ public class XmlUtil {
         try {
             document = saxReader.read(sr);
         } catch (DocumentException e) {
-            LOG.error("解析失败", e);
+            logger.error("解析失败", e);
         }
         return null == document ? null : document.getRootElement();
     }
@@ -75,10 +78,10 @@ public class XmlUtil {
      */
     public static List<Map<String, Object>> listNodes(Element node, String nodeName) {
         if (null == node) {
-            return null;
+            return new ArrayList<>();
         }
         // 初始化返回
-        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+        List<Map<String, Object>> listMap = new ArrayList<>();
         // 首先获取当前节点的所有属性节点
         List<Attribute> list = node.attributes();
 
@@ -87,7 +90,7 @@ public class XmlUtil {
         for (Attribute attribute : list) {
             if (nodeName.equals(node.getName())) {
                 if (null == map) {
-                    map = new HashMap<String, Object>();
+                    map = new HashMap<>();
                     listMap.add(map);
                 }
                 // 取到的节点属性放到map中
@@ -125,7 +128,7 @@ public class XmlUtil {
         }
 
         for (Element e : chdEl) {   // 有子元素
-            if (!e.elements().isEmpty()) {  // 子元素也有子元素
+            if (e.elements()!=null && !e.elements().isEmpty()) {  // 子元素也有子元素
                 JSONObject chdjson = new JSONObject();
                 node2Json(e, chdjson);
                 Object o = json.get(e.getName());
@@ -144,7 +147,7 @@ public class XmlUtil {
                     }
                     json.put(e.getName(), jsona);
                 } else {
-                    if (!chdjson.isEmpty()) {
+                    if (chdjson!=null && !chdjson.isEmpty()) {
                         json.put(e.getName(), chdjson);
                     }
                 }

+ 16 - 23
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMHttpHookListener.java

@@ -39,7 +39,7 @@ import javax.servlet.http.HttpServletRequest;
 @RequestMapping("/index/hook")
 public class ZLMHttpHookListener {
 
-	private final static Logger logger = LoggerFactory.getLogger(ZLMHttpHookListener.class);
+	private static final Logger logger = LoggerFactory.getLogger(ZLMHttpHookListener.class);
 
 	@Autowired
 	private SIPCommander cmder;
@@ -82,11 +82,10 @@ public class ZLMHttpHookListener {
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_flow_report API调用,参数:" + json.toString());
 		}
-		String mediaServerId = json.getString("mediaServerId");
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -100,13 +99,12 @@ public class ZLMHttpHookListener {
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_http_access API 调用,参数:" + json.toString());
 		}
-		String mediaServerId = json.getString("mediaServerId");
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("err", "");
 		ret.put("path", "");
 		ret.put("second", 600);
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -132,7 +130,7 @@ public class ZLMHttpHookListener {
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -159,7 +157,7 @@ public class ZLMHttpHookListener {
 		ret.put("enableHls", true);
 		ret.put("enableMP4", userSetup.isRecordPushLive());
 		ret.put("enableRtxp", true);
-		return new ResponseEntity<String>(ret.toString(), HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(), HttpStatus.OK);
 	}
 
 	/**
@@ -173,11 +171,10 @@ public class ZLMHttpHookListener {
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_record_mp4 API调用,参数:" + json.toString());
 		}
-		String mediaServerId = json.getString("mediaServerId");
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -191,11 +188,10 @@ public class ZLMHttpHookListener {
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_rtsp_realm API调用,参数:" + json.toString());
 		}
-		String mediaServerId = json.getString("mediaServerId");
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("realm", "");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 
@@ -210,12 +206,11 @@ public class ZLMHttpHookListener {
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_rtsp_auth API调用,参数:" + json.toString());
 		}
-		String mediaServerId = json.getString("mediaServerId");
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("encrypted", false);
 		ret.put("passwd", "test");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -229,9 +224,7 @@ public class ZLMHttpHookListener {
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_shell_login API调用,参数:" + json.toString());
 		}
-		// TODO 如果是带有rtpstream则开启按需拉流
-		// String app = json.getString("app");
-		// String stream = json.getString("stream");
+		// 如果是带有rtpstream则开启按需拉流
 		String mediaServerId = json.getString("mediaServerId");
 		ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_shell_login, json);
 		if (subscribe != null ) {
@@ -245,7 +238,7 @@ public class ZLMHttpHookListener {
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -308,7 +301,7 @@ public class ZLMHttpHookListener {
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -350,12 +343,12 @@ public class ZLMHttpHookListener {
 			if (mediaServerItem != null && "-1".equals(mediaServerItem.getStreamNoneReaderDelayMS())) {
 				ret.put("close", false);
 			}
-			return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+			return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 		}else {
 			JSONObject ret = new JSONObject();
 			ret.put("code", 0);
 			ret.put("close", false);
-			return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+			return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 		}
 	}
 
@@ -402,7 +395,7 @@ public class ZLMHttpHookListener {
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 
 	/**
@@ -419,7 +412,7 @@ public class ZLMHttpHookListener {
 		String remoteAddr = request.getRemoteAddr();
 		jsonObject.put("ip", remoteAddr);
 		List<ZLMHttpHookSubscribe.Event> subscribes = this.subscribe.getSubscribes(ZLMHttpHookSubscribe.HookType.on_server_started);
-		if (subscribes != null  && subscribes.size() > 0) {
+		if (subscribes != null  && !subscribes.isEmpty()) {
 			for (ZLMHttpHookSubscribe.Event subscribe : subscribes) {
 				subscribe.response(null, jsonObject);
 			}
@@ -427,6 +420,6 @@ public class ZLMHttpHookListener {
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
-		return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+		return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
 	}
 }

+ 2 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java

@@ -39,7 +39,7 @@ public class ZLMHttpHookSubscribe {
     public void addSubscribe(HookType type, JSONObject hookResponse, Event event) {
         Map<JSONObject, Event> eventMap = allSubscribes.get(type);
         if (eventMap == null) {
-            eventMap = new HashMap<JSONObject, Event>();
+            eventMap = new HashMap<>();
             allSubscribes.put(type,eventMap);
         }
         eventMap.put(hookResponse, event);
@@ -101,10 +101,9 @@ public class ZLMHttpHookSubscribe {
      * @return
      */
     public List<Event> getSubscribes(HookType type) {
-        // ZLMHttpHookSubscribe.Event event= null;
         Map<JSONObject, Event> eventMap = allSubscribes.get(type);
         if (eventMap == null) {
-            return null;
+            return new ArrayList<>();
         }
         List<Event> result = new ArrayList<>();
         for (JSONObject key : eventMap.keySet()) {

+ 0 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMMediaListManager.java

@@ -52,10 +52,8 @@ public class ZLMMediaListManager {
             String dataStr = mediaList.getString("data");
 
             Integer code = mediaList.getInteger("code");
-            Map<String, StreamPushItem> result = new HashMap<>();
             List<StreamPushItem> streamPushItems = null;
             // 获取所有的国标关联
-//            List<GbStream> gbStreams = gbStreamMapper.selectAllByMediaServerId(mediaServerItem.getId());
             if (code == 0 ) {
                 if (dataStr != null) {
                     streamPushItems = streamPushService.handleJSON(dataStr, mediaServerItem);
@@ -96,7 +94,6 @@ public class ZLMMediaListManager {
             String dataStr = json.getString("data");
 
             Integer code = json.getInteger("code");
-            Map<String, StreamPushItem> result = new HashMap<>();
             List<StreamPushItem> streamPushItems = null;
             if (code == 0 ) {
                 if (dataStr != null) {

+ 3 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMRESTfulUtils.java

@@ -18,7 +18,7 @@ import java.util.Objects;
 @Component
 public class ZLMRESTfulUtils {
 
-    private final static Logger logger = LoggerFactory.getLogger(ZLMRESTfulUtils.class);
+    private static final Logger logger = LoggerFactory.getLogger(ZLMRESTfulUtils.class);
 
     public interface RequestCallback{
         void run(JSONObject response);
@@ -32,7 +32,7 @@ public class ZLMRESTfulUtils {
 
         FormBody.Builder builder = new FormBody.Builder();
         builder.add("secret",mediaServerItem.getSecret());
-        if (param != null && param.keySet().size() > 0) {
+        if (param != null && !param.keySet().isEmpty()) {
             for (String key : param.keySet()){
                 if (param.get(key) != null) {
                     builder.add(key, param.get(key).toString());
@@ -88,11 +88,10 @@ public class ZLMRESTfulUtils {
     public void sendPostForImg(MediaServerItem mediaServerItem, String api, Map<String, Object> param, String targetPath, String fileName) {
         OkHttpClient client = new OkHttpClient();
         String url = String.format("http://%s:%s/index/api/%s",  mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api);
-        JSONObject responseJSON = null;
         logger.debug(url);
         FormBody.Builder builder = new FormBody.Builder();
         builder.add("secret",mediaServerItem.getSecret());
-        if (param != null && param.keySet().size() > 0) {
+        if (param != null && !param.keySet().isEmpty()) {
             for (String key : param.keySet()){
                 if (param.get(key) != null) {
                     builder.add(key, param.get(key).toString());

+ 2 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMRTPServerFactory.java

@@ -133,7 +133,7 @@ public class ZLMRTPServerFactory {
         String playSsrc = serverItem.getSsrcConfig().getPlaySsrc();
         int localPort = createRTPServer(serverItem, playSsrc);
         if (localPort != -1) {
-            // TODO 高并发时可能因为未放入缓存而ssrc冲突
+            // 高并发时可能因为未放入缓存而ssrc冲突
             serverItem.getSsrcConfig().releaseSsrc(playSsrc);
             closeRTPServer(serverItem, playSsrc);
         }else {
@@ -168,7 +168,7 @@ public class ZLMRTPServerFactory {
         String playSsrc = serverItem.getSsrcConfig().getPlaySsrc();
         int localPort = createRTPServer(serverItem, playSsrc);
         if (localPort != -1) {
-            // TODO 高并发时可能因为未放入缓存而ssrc冲突
+            // 高并发时可能因为未放入缓存而ssrc冲突
             serverItem.getSsrcConfig().releaseSsrc(ssrc);
             closeRTPServer(serverItem, playSsrc);
         }else {

+ 7 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/ZLMRunner.java

@@ -20,7 +20,7 @@ import java.util.*;
 @Order(value=1)
 public class ZLMRunner implements CommandLineRunner {
 
-    private final static Logger logger = LoggerFactory.getLogger(ZLMRunner.class);
+    private static final Logger logger = LoggerFactory.getLogger(ZLMRunner.class);
 
     private Map<String, Boolean> startGetMedia;
 
@@ -51,7 +51,6 @@ public class ZLMRunner implements CommandLineRunner {
             if (zlmServerConfig !=null ) {
                 startGetMedia.remove(zlmServerConfig.getGeneralMediaServerId());
                 mediaServerService.handLeZLMServerConfig(zlmServerConfig);
-//                zLmRunning(zlmServerConfig);
             }
         });
 
@@ -60,7 +59,7 @@ public class ZLMRunner implements CommandLineRunner {
 
         // 获取所有的zlm, 并开启主动连接
         List<MediaServerItem> all = mediaServerService.getAllFromDatabase();
-        if (all.size() == 0) {
+        if (all.isEmpty()) {
             all.add(mediaConfig.getMediaSerItem());
         }
         for (MediaServerItem mediaServerItem : all) {
@@ -77,7 +76,7 @@ public class ZLMRunner implements CommandLineRunner {
             }).start();
         }
         Timer timer = new Timer();
-        // 2分钟后未连接到则不再去主动连接, TODO 并对重启前使用此在zlm的通道发送bye
+        // 2分钟后未连接到则不再去主动连接, 并对重启前使用此在zlm的通道发送bye
         timer.schedule(new TimerTask() {
             @Override
             public void run() {
@@ -88,9 +87,9 @@ public class ZLMRunner implements CommandLineRunner {
                 }
                 startGetMedia = null;
             }
-            //  TODO 清理数据库中与redis不匹配的zlm
+            //清理数据库中与redis不匹配的zlm
             }
-        }, 60 * 1000 * 2);
+        }, 60 * 1000 * 2L);
     }
 
     public ZLMServerConfig getMediaServerConfig(MediaServerItem mediaServerItem) {
@@ -110,7 +109,8 @@ public class ZLMRunner implements CommandLineRunner {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                Thread.currentThread().interrupt();
+                logger.error("getMediaServerConfig异常:"+e);
             }
             ZLMServerConfig = getMediaServerConfig(mediaServerItem);
         }

+ 6 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/dto/MediaServerItem.java

@@ -78,11 +78,14 @@ public class MediaServerItem{
         rtpProxyPort = zlmServerConfig.getRtpProxyPort();
         rtspPort = zlmServerConfig.getRtspPort();
         rtspSSLPort = zlmServerConfig.getRtspSSlport();
-        autoConfig = true; // 默认值true;
+        //默认true
+        autoConfig = true;
         secret = zlmServerConfig.getApiSecret();
         streamNoneReaderDelayMS = zlmServerConfig.getGeneralStreamNoneReaderDelayMS();
-        rtpEnable = false; // 默认使用单端口;直到用户自己设置开启多端口
-        recordAssistPort = 0; // 默认关闭
+        // 默认使用单端口;直到用户自己设置开启多端口
+        rtpEnable = false;
+        // 默认关闭
+        recordAssistPort = 0;
 
     }
 

+ 4 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/dto/StreamProxyItem.java

@@ -28,18 +28,22 @@ public class StreamProxyItem extends GbStream {
         this.type = type;
     }
 
+    @Override
     public String getApp() {
         return app;
     }
 
+    @Override
     public void setApp(String app) {
         this.app = app;
     }
 
+    @Override
     public String getStream() {
         return stream;
     }
 
+    @Override
     public void setStream(String stream) {
         this.stream = stream;
     }

+ 5 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/media/zlm/dto/StreamPushItem.java

@@ -92,7 +92,7 @@ public class StreamPushItem extends GbStream implements Comparable<StreamPushIte
 
     @Override
     public int compareTo(@NotNull StreamPushItem streamPushItem) {
-        return Long.valueOf(this.createStamp - streamPushItem.getCreateStamp().intValue()).intValue();
+        return Long.valueOf(this.createStamp - streamPushItem.getCreateStamp()).intValue();
     }
 
     public static class MediaSchema {
@@ -117,18 +117,22 @@ public class StreamPushItem extends GbStream implements Comparable<StreamPushIte
     }
 
 
+    @Override
     public String getApp() {
         return app;
     }
 
+    @Override
     public void setApp(String app) {
         this.app = app;
     }
 
+    @Override
     public String getStream() {
         return stream;
     }
 
+    @Override
     public void setStream(String stream) {
         this.stream = stream;
     }

+ 20 - 14
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/onvif/impl/ONVIFServerIMpl.java

@@ -39,7 +39,7 @@ import java.util.*;
 @Service
 public class ONVIFServerIMpl implements IONVIFServer {
 
-    private final static Logger logger = LoggerFactory.getLogger(ONVIFServerIMpl.class);
+    private static final Logger logger = LoggerFactory.getLogger(ONVIFServerIMpl.class);
 
     @Autowired
     private IStreamProxyService streamProxyService;
@@ -63,7 +63,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
             @Override
             public void onDevicesFound(List<Device> devices) {
                 logger.info("搜索中***********");
-                if (devices == null || devices.size() == 0) return;
+                if (devices == null || devices.isEmpty()) return;
                 for (Device device : devices){
                     logger.info(device.getHostName());
                     deviceMap.put(device.getHostName(),  device);
@@ -82,7 +82,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
                 try {
                     callBack.run(0, result);
                 } catch (IOException e) {
-                    e.printStackTrace();
+                    logger.error("onDiscoveryFinished:"+e);
                 }
             }
         });
@@ -94,7 +94,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
             try {
                 callBack.run(400, null);
             } catch (IOException e) {
-                e.printStackTrace();
+                logger.error("getRTSPUrl:"+e);
             }
         }
         OnvifManager onvifManager = new OnvifManager();
@@ -111,7 +111,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
                 try {
                     callBack.run(errorCode, errorMessage);
                 } catch (IOException e) {
-                    e.printStackTrace();
+                    logger.error("onError:"+e);
                 }
             }
         });
@@ -132,7 +132,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
                                         try {
                                             callBack.run(0, uri);
                                         } catch (IOException e) {
-                                            e.printStackTrace();
+                                            logger.error("onMediaProfilesReceived:"+e);
                                         }
                                     });
                                 }
@@ -145,7 +145,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
             try {
                 callBack.run(400, e.getMessage());
             } catch (IOException ex) {
-                ex.printStackTrace();
+                logger.error("IOException:"+e);
             }
         }
     }
@@ -190,6 +190,9 @@ public class ONVIFServerIMpl implements IONVIFServer {
     public String stopRecord(MediaServerItem mediaServerItem, Map<String, Object> param){
         param.put("api","stopRecord");
         JSONObject jsonObject=getCommonRecord(mediaServerItem,param);
+        if(jsonObject==null || jsonObject.isEmpty()){
+            return null;
+        }
         String separator= File.separator;
         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
         String strTime=simpleDateFormat.format(new Date());
@@ -199,9 +202,8 @@ public class ONVIFServerIMpl implements IONVIFServer {
         Integer code=jsonObject.getInteger("code");
         if(code==0){
             List<String> fileLlist=getFileName(urlPath);
-            logger.error("fileLlist size:"+fileLlist.size());
-            if(null!=fileLlist && fileLlist.size()>0){
-                //fileLlist=fileLlist.stream().sorted(Comparator.comparing(String::toString).reversed()).collect(Collectors.toList());
+            if(!fileLlist.isEmpty()){
+                logger.error("fileLlist size:"+fileLlist.size());
                 return returnPath+fileLlist.get(fileLlist.size()-1);
             }else{
                 return null;
@@ -217,6 +219,9 @@ public class ONVIFServerIMpl implements IONVIFServer {
         param.put("api","close_streams");
         param.put("force",1);
         JSONObject jsonObject=getCommonRecord(mediaServerItem,param);
+        if(jsonObject==null || jsonObject.isEmpty()){
+            return false;
+        }
         Integer code=jsonObject.getInteger("code");
         Integer count_closed=jsonObject.getInteger("count_closed");
         if(code==0 && count_closed>0){
@@ -235,7 +240,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
         String url = String.format("http://%s:%s/index/api/%s",  mediaServerItem.getIp(), mediaServerItem.getHttpPort(), param.get("api"));
         FormBody.Builder builder = new FormBody.Builder();
         builder.add("secret",mediaServerItem.getSecret());
-        if (param != null && param.keySet().size() > 0) {
+        if (!param.isEmpty()) {
             for (String key : param.keySet()){
                 if (param.get(key) != null) {
                     builder.add(key, param.get(key).toString());
@@ -254,7 +259,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
                 return JSONObject.parseObject(response.body().string());
             }
         } catch (IOException e) {
-            e.printStackTrace();
+            logger.error("getCommonRecord:"+e);
         }
         return null;
     }
@@ -263,8 +268,9 @@ public class ONVIFServerIMpl implements IONVIFServer {
         List<String> list=new ArrayList<>();
         File f = new File(path);//获取路径  F:测试目录
         if (!f.exists()) {
-            System.out.println(path + " not exists");//不存在就输出
-            return null;
+            //不存在就输出
+            logger.error(path + " not exists");
+            return list;
         }
         File fa[] = f.listFiles();//用数组接收  F:笔记总结C#, F:笔记总结if语句.txt
         for (int i = 0; i < fa.length; i++) {//循环遍历

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/GbStreamServiceImpl.java

@@ -19,7 +19,7 @@ import java.util.List;
 @Service
 public class GbStreamServiceImpl implements IGbStreamService {
 
-    private final static Logger logger = LoggerFactory.getLogger(GbStreamServiceImpl.class);
+    private static final Logger logger = LoggerFactory.getLogger(GbStreamServiceImpl.class);
 
     @Autowired
     DataSourceTransactionManager dataSourceTransactionManager;

+ 2 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/MediaServerServiceImpl.java

@@ -132,7 +132,7 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
     }
 
     /**
-     * zlm 重启后重置他的推流信息, TODO 给正在使用的设备发送停止命令
+     * zlm 重启后重置他的推流信息,给正在使用的设备发送停止命令
      * @param mediaServerItem
      */
     @Override
@@ -184,7 +184,7 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
         String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX;
         Set<String> mediaServerIdSet = redisUtil.zRevRange(key, 0, -1);
         List<MediaServerItem> result = new ArrayList<>();
-        if (mediaServerIdSet != null && mediaServerIdSet.size() > 0) {
+        if (mediaServerIdSet != null && !mediaServerIdSet.isEmpty()) {
             for (String mediaServerId : mediaServerIdSet) {
                 String serverKey = VideoManagerConstants.MEDIA_SERVER_PREFIX + mediaServerId;
                 result.add((MediaServerItem) redisUtil.get(serverKey));
@@ -312,7 +312,6 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
     public void addCount(String mediaServerId) {
         if (mediaServerId == null) return;
         String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX;
-        Double aDouble = redisUtil.zScore(key, mediaServerId);
         redisUtil.zIncrScore(key, mediaServerId, 1);
     }
 

+ 5 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/PlayServiceImpl.java

@@ -46,7 +46,7 @@ import java.util.UUID;
 @Service
 public class PlayServiceImpl implements IPlayService {
 
-    private final static Logger logger = LoggerFactory.getLogger(PlayServiceImpl.class);
+    private static final Logger logger = LoggerFactory.getLogger(PlayServiceImpl.class);
 
     @Autowired
     private IVideoManagerStorager storager;
@@ -102,7 +102,7 @@ public class PlayServiceImpl implements IPlayService {
         playResult.setDevice(device);
         UUID uuid = UUID.randomUUID();
         playResult.setUuid(uuid.toString());
-        DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(userSetup.getPlayTimeout());
+        DeferredResult<ResponseEntity<String>> result = new DeferredResult<>(userSetup.getPlayTimeout());
         playResult.setResult(result);
         // 录像查询以channelId作为deviceId查询
         resultHolder.put(DeferredResultHolder.CALLBACK_CMD_PlAY + uuid, result);
@@ -133,7 +133,6 @@ public class PlayServiceImpl implements IPlayService {
             // 点播结束时调用截图接口
             try {
                 String classPath = ResourceUtils.getURL("classpath:").getPath();
-                // System.out.println(classPath);
                 logger.info("=====================classPath=====================",classPath);
                 // 兼容打包为jar的class路径
                 if(classPath.contains("jar")) {
@@ -164,7 +163,7 @@ public class PlayServiceImpl implements IPlayService {
                     }
                 }
             } catch (FileNotFoundException e) {
-                e.printStackTrace();
+                logger.error("FileNotFoundException:"+e);
             }
         });
         if (streamInfo == null) {
@@ -209,7 +208,7 @@ public class PlayServiceImpl implements IPlayService {
                 msg.setId(DeferredResultHolder.CALLBACK_CMD_PlAY + uuid);
                 WVPResult wvpResult = new WVPResult();
                 wvpResult.setCode(-1);
-                wvpResult.setMsg(String.format("点播失败, redis缓存streamId等于null"));
+                wvpResult.setMsg("点播失败, redis缓存streamId等于null");
                 msg.setData(wvpResult);
                 resultHolder.invokeResult(msg);
                 return playResult;
@@ -236,7 +235,7 @@ public class PlayServiceImpl implements IPlayService {
                 }
             } else {
                 logger.info("==================rtpInfo不满足条件=================",rtpInfo);
-                // TODO 点播前是否重置状态
+                //点播前是否重置状态
                 redisCatchStorage.stopPlay(streamInfo);
                 storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
                 logger.info("==================RTP 关闭流=================",rtpInfo);

+ 6 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/StreamProxyServiceImpl.java

@@ -28,7 +28,7 @@ import java.util.List;
 @Service
 public class StreamProxyServiceImpl implements IStreamProxyService {
 
-    private final static Logger logger = LoggerFactory.getLogger(StreamProxyServiceImpl.class);
+    private static final Logger logger = LoggerFactory.getLogger(StreamProxyServiceImpl.class);
 
     @Autowired
     private IVideoManagerStorager videoManagerStorager;
@@ -37,7 +37,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
     private IRedisCatchStorage redisCatchStorage;
 
     @Autowired
-    private ZLMRESTfulUtils zlmresTfulUtils;;
+    private ZLMRESTfulUtils zlmresTfulUtils;
 
     @Autowired
     private StreamProxyMapper streamProxyMapper;
@@ -69,7 +69,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
         }
         String dstUrl = String.format("rtmp://%s:%s/%s/%s", mediaInfo.getStreamIp(), mediaInfo.getRtmpPort(), param.getApp(), param.getStream());
         param.setDst_url(dstUrl);
-        StringBuffer result = new StringBuffer();
+        StringBuilder result = new StringBuilder();
         boolean streamLive = false;
         param.setMediaServerId(mediaInfo.getId());
         // 更新
@@ -140,8 +140,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
     public JSONObject removeStreamProxyFromZlm(StreamProxyItem param) {
         if (param ==null) return null;
         MediaServerItem mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
-        JSONObject result = zlmresTfulUtils.closeStreams(mediaServerItem, param.getApp(), param.getStream());
-        return result;
+        return zlmresTfulUtils.closeStreams(mediaServerItem, param.getApp(), param.getStream());
     }
 
     @Override
@@ -159,7 +158,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
                 // 如果关联了国标那么移除关联
                 gbStreamMapper.del(app, stream);
                 platformGbStreamMapper.delByAppAndStream(app, stream);
-                // TODO 如果关联的推流, 那么状态设置为离线
+                //如果关联的推流, 那么状态设置为离线
             }
         }
 
@@ -169,7 +168,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
     public boolean start(String app, String stream) {
         boolean result = false;
         StreamProxyItem streamProxy = videoManagerStorager.queryStreamProxy(app, stream);
-        if (!streamProxy.isEnable() &&  streamProxy != null) {
+        if (streamProxy != null && !streamProxy.isEnable()) {
             JSONObject jsonObject = addStreamProxyToZlm(streamProxy);
             if (jsonObject == null) return false;
             if (jsonObject.getInteger("code") == 0) {

+ 3 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/service/impl/StreamPushServiceImpl.java

@@ -43,10 +43,11 @@ public class StreamPushServiceImpl implements IStreamPushService {
 
     @Override
     public List<StreamPushItem> handleJSON(String jsonData, MediaServerItem mediaServerItem) {
-        if (jsonData == null) return null;
+        if (jsonData == null) {
+            return new ArrayList<>();
+        }
 
         Map<String, StreamPushItem> result = new HashMap<>();
-
         List<MediaItem> mediaItems = JSON.parseObject(jsonData, new TypeReference<List<MediaItem>>() {});
         for (MediaItem item : mediaItems) {
 

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/IRedisCatchStorage.java

@@ -104,8 +104,8 @@ public interface IRedisCatchStorage {
      * 获取mediaServer节点
      * @param mediaServerId
      * @return
+     *  MediaServerItem getMediaInfo(String mediaServerId);
      */
-//    MediaServerItem getMediaInfo(String mediaServerId);
 
     /**
      * 设置所有设备离线

+ 0 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/dao/DeviceMobilePositionMapper.java

@@ -4,7 +4,6 @@ import java.util.List;
 
 import com.zd.alg.iot.vmp.gb28181.bean.MobilePosition;
 import org.apache.ibatis.annotations.*;
-//import org.springframework.stereotype.Repository;
 
 @Mapper
 //@Repository

+ 10 - 18
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/impl/RedisCatchStorageImpl.java

@@ -13,7 +13,6 @@ import com.zd.alg.iot.vmp.utils.redis.RedisUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -29,8 +28,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
     @Autowired
     private DeviceChannelMapper deviceChannelMapper;
 
-    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
     /**
      * 开始播放时将流存入redis
      *
@@ -71,14 +68,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
     @Override
     public StreamInfo queryPlayByStreamId(String steamId) {
         List<Object> playLeys = redis.scan(String.format("%S_%s_*", VideoManagerConstants.PLAYER_PREFIX, steamId));
-        if (playLeys == null || playLeys.size() == 0) return null;
+        if (playLeys == null || playLeys.isEmpty()) return null;
         return (StreamInfo)redis.get(playLeys.get(0).toString());
     }
 
     @Override
     public StreamInfo queryPlaybackByStreamId(String steamId) {
         List<Object> playLeys = redis.scan(String.format("%S_%s_*", VideoManagerConstants.PLAY_BLACK_PREFIX, steamId));
-        if (playLeys == null || playLeys.size() == 0) return null;
+        if (playLeys == null || playLeys.isEmpty()) return null;
         return (StreamInfo)redis.get(playLeys.get(0).toString());
     }
 
@@ -88,16 +85,15 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
         List<Object> playLeys = redis.scan(String.format("%S_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX,
                 deviceId,
                 channelId));
-        if (playLeys == null || playLeys.size() == 0) return null;
+        if (playLeys == null || playLeys.isEmpty()) return null;
         return (StreamInfo)redis.get(playLeys.get(0).toString());
     }
 
     @Override
     public Map<String, StreamInfo> queryPlayByDeviceId(String deviceId) {
         Map<String, StreamInfo> streamInfos = new HashMap<>();
-//		List<Object> playLeys = redis.keys(String.format("%S_*_%S_*", VideoManagerConstants.PLAYER_PREFIX, deviceId));
         List<Object> players = redis.scan(String.format("%S_*_%S_*", VideoManagerConstants.PLAYER_PREFIX, deviceId));
-        if (players.size() == 0) return streamInfos;
+        if (players==null || players.isEmpty()) return streamInfos;
         for (int i = 0; i < players.size(); i++) {
             String key = (String) players.get(i);
             StreamInfo streamInfo = (StreamInfo)redis.get(key);
@@ -131,17 +127,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
 
     @Override
     public StreamInfo queryPlaybackByDevice(String deviceId, String code) {
-        // String format = String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
-        //         deviceId,
-        //         code);
         List<Object> playLeys = redis.scan(String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
                 deviceId,
                 code));
-        if (playLeys == null || playLeys.size() == 0) {
+        if (playLeys == null || playLeys.isEmpty()) {
             playLeys = redis.scan(String.format("%S_*_*_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
                     deviceId));
         }
-        if (playLeys == null || playLeys.size() == 0) return null;
+        if (playLeys == null || playLeys.isEmpty()) return null;
         return (StreamInfo)redis.get(playLeys.get(0).toString());
     }
 
@@ -254,18 +247,17 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
     public boolean isChannelSendingRTP(String channelId) {
         String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX + "*_" + channelId;
         List<Object> RtpStreams = redis.scan(key);
-        if (RtpStreams.size() > 0) {
+        if (RtpStreams!=null && !RtpStreams.isEmpty()) {
             return true;
-        } else {
-            return false;
         }
+        return false;
     }
 
     @Override
     public void clearCatchByDeviceId(String deviceId) {
         List<Object> playLeys = redis.scan(String.format("%S_*_%s_*", VideoManagerConstants.PLAYER_PREFIX,
                 deviceId));
-        if (playLeys.size() > 0) {
+        if (playLeys!=null && !playLeys.isEmpty()) {
             for (Object key : playLeys) {
                 redis.del(key.toString());
             }
@@ -273,7 +265,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
 
         List<Object> playBackers = redis.scan(String.format("%S_*_%s_*", VideoManagerConstants.PLAY_BLACK_PREFIX,
                 deviceId));
-        if (playBackers.size() > 0) {
+        if (playBackers!=null && !playBackers.isEmpty()) {
             for (Object key : playBackers) {
                 redis.del(key.toString());
             }

+ 10 - 16
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/storager/impl/VideoManagerStoragerImpl.java

@@ -118,7 +118,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 			device.setCreateTime(now);
 			return deviceMapper.add(device) > 0;
 		}else {
-			//logger.info("*****************************更新设备状态***************************");
+			//更新设备状态
 			return deviceMapper.update(device) > 0;
 		}
 
@@ -209,8 +209,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 	@Override
 	public List<Device> queryVideoDeviceList() {
 
-		List<Device> deviceList =  deviceMapper.getDevices();
-		return deviceList;
+		return  deviceMapper.getDevices();
 	}
 
 	/**
@@ -321,7 +320,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 	@Override
 	public boolean updateParentPlatform(ParentPlatform parentPlatform) {
 		int result = 0;
-		ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); // .getDeviceGBId());
+		ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId());
 		if (parentPlatform.getId() == null ) {
 			result = platformMapper.addParentPlatform(parentPlatform);
 			if (parentPlatformCatch == null) {
@@ -410,7 +409,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 		List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values());
 		// 对剩下的数据进行存储
 		int result = 0;
-		if (channelReducesToAdd.size() > 0) {
+		if (!channelReducesToAdd.isEmpty()) {
 			result = platformChannelMapper.addChannels(platformId, channelReducesToAdd);
 		}
 
@@ -420,22 +419,17 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 
 	@Override
 	public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
-
-		int result = platformChannelMapper.delChannelForGB(platformId, channelReduces);
-
-		return result;
+		return platformChannelMapper.delChannelForGB(platformId, channelReduces);
 	}
 
 	@Override
 	public DeviceChannel queryChannelInParentPlatform(String platformId, String channelId) {
-		DeviceChannel channel = platformChannelMapper.queryChannelInParentPlatform(platformId, channelId);
-		return channel;
+		return platformChannelMapper.queryChannelInParentPlatform(platformId, channelId);
 	}
 
 	@Override
 	public Device queryVideoDeviceByPlatformIdAndChannelId(String platformId, String channelId) {
-		Device device = platformChannelMapper.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId);
-		return device;
+		return platformChannelMapper.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId);
 	}
 
 	/**
@@ -500,7 +494,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 			dataSourceTransactionManager.commit(transactionStatus);     //手动提交
 			result = true;
 		}catch (Exception e) {
-			e.printStackTrace();
+			logger.error("updateStreamProxy:"+e);
 			dataSourceTransactionManager.rollback(transactionStatus);
 		}
 		return result;
@@ -574,10 +568,10 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
 
 	@Override
 	public void updateMediaList(List<StreamPushItem> streamPushItems) {
-		if (streamPushItems == null || streamPushItems.size() == 0) return;
+		if (streamPushItems == null || streamPushItems.isEmpty()) return;
 		logger.info("updateMediaList:  " + streamPushItems.size());
 		streamPushMapper.addAll(streamPushItems);
-		// TODO 待优化
+		// 待优化
 		for (int i = 0; i < streamPushItems.size(); i++) {
 			gbStreamMapper.setStatus(streamPushItems.get(i).getApp(), streamPushItems.get(i).getStream(), true);
 		}

+ 2 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/ConfigConst.java

@@ -1,6 +1,8 @@
 package com.zd.alg.iot.vmp.utils;
 
 public class ConfigConst {
+    private ConfigConst(){}
+
     /**
      * 播流最大并发个数
      */

+ 7 - 10
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/GpsUtil.java

@@ -4,6 +4,7 @@ import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.Socket;
+import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 
 import com.zd.alg.iot.vmp.gb28181.bean.BaiduPoint;
@@ -11,17 +12,15 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class GpsUtil {
+    private GpsUtil(){}
 
     private static Logger logger = LoggerFactory.getLogger(GpsUtil.class);
 
     public static BaiduPoint Wgs84ToBd09(String xx, String yy) {
-
-
-        try {
-            Socket s = new Socket("api.map.baidu.com", 80);
-            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
+        try (Socket s = new Socket("api.map.baidu.com", 80)){
+            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream(), StandardCharsets.UTF_8));
             OutputStream out = s.getOutputStream();
-            StringBuffer sb = new StringBuffer("GET /ag/coord/convert?from=0&to=4");
+            StringBuilder sb = new StringBuilder("GET /ag/coord/convert?from=0&to=4");
             sb.append("&x=" + xx + "&y=" + yy);
             sb.append("&callback=BMap.Convertor.cbk_3976 HTTP/1.1\r\n");
             sb.append("User-Agent: Java/1.6.0_20\r\n");
@@ -33,7 +32,6 @@ public class GpsUtil {
             String json = "";
             String tmp = "";
             while ((tmp = br.readLine()) != null) {
-                // logger.info(tmp);
                 json += tmp;
             }
 
@@ -49,14 +47,13 @@ public class GpsUtil {
                 bdPoint.setBdLng(new String(decode(x)));
                 bdPoint.setBdLat(new String(decode(y)));
                 return bdPoint;
-                //return (new String(decode(x)) + "," + new String(decode(y)));
             } else {
                 logger.info("gps坐标无效!!");
             }
             out.close();
             br.close();
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("Wgs84ToBd09异常:"+e);
         }
         return null;
     }
@@ -69,7 +66,7 @@ public class GpsUtil {
     public static byte[] decode(String str) {
         byte[] bt = null;
         final Base64.Decoder decoder = Base64.getDecoder();
-        bt = decoder.decode(str); // .decodeBuffer(str);
+        bt = decoder.decode(str);
         return bt;
     }
 }

+ 3 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/JarFileUtils.java

@@ -40,11 +40,10 @@ public class JarFileUtils {
             if (entry != null) {
                 InputStream in = jarFile.getInputStream(entry);
 
-                StringBuilder sb = new StringBuilder();
                 br = new BufferedReader(new InputStreamReader(in));
-                String line = "";
+                String line = null;
                 while ((line = br.readLine()) != null) {
-                    if (line != null && line.contains(":")) {
+                    if (line.contains(":")) {
                         int index = line.indexOf(":");
                         map.put(line.substring(0, index).trim(), line.substring(index + 1, line.length()).trim());
                     }
@@ -62,7 +61,7 @@ public class JarFileUtils {
                     jarFile.close();
                 }
             } catch (IOException e) {
-                e.printStackTrace();
+                log.error("readJarFile:"+e);
             }
         }
         return map;

+ 10 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/SerializeUtils.java

@@ -1,19 +1,26 @@
 package com.zd.alg.iot.vmp.utils;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.*;
 
 public class SerializeUtils {
+    private  SerializeUtils(){}
+
+    private static Logger logger = LoggerFactory.getLogger(SerializeUtils.class);
+
     public static byte[] serialize(Object obj){
         byte[] bytes = null;
         try {
-            ByteArrayOutputStream baos=new ByteArrayOutputStream();;
+            ByteArrayOutputStream baos=new ByteArrayOutputStream();
             ObjectOutputStream oos=new ObjectOutputStream(baos);
             oos.writeObject(obj);
             bytes=baos.toByteArray();
             baos.close();
             oos.close();
         } catch (IOException e) {
-            e.printStackTrace();
+            logger.error("serialize:"+e);
         }
         return bytes;
     }
@@ -24,7 +31,7 @@ public class SerializeUtils {
             ObjectInputStream ois=new ObjectInputStream(bais);
             obj=ois.readObject();
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("deSerialize:"+e);
         }
         return obj;
     }

+ 2 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/redis/FastJsonRedisSerializer.java

@@ -1,6 +1,7 @@
 package com.zd.alg.iot.vmp.utils.redis;
 
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 
 import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.data.redis.serializer.SerializationException;
@@ -15,7 +16,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
  */
 public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {
 
-	public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
+	public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
 
     private Class<T> clazz;
 

+ 34 - 65
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/utils/redis/RedisUtil.java

@@ -3,6 +3,8 @@ package com.zd.alg.iot.vmp.utils.redis;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.*;
 import org.springframework.stereotype.Component;
@@ -17,6 +19,8 @@ import org.springframework.util.CollectionUtils;
 @SuppressWarnings(value = {"rawtypes", "unchecked"})
 public class RedisUtil {
 
+    private Logger logger = LoggerFactory.getLogger(RedisUtil.class);
+
 	@Autowired
     private RedisTemplate redisTemplate;
 
@@ -33,7 +37,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("expire:"+e);
             return false;
         }
     }
@@ -56,7 +60,7 @@ public class RedisUtil {
         try {
             return redisTemplate.hasKey(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("hasKey:"+e);
             return false;
         }
     }
@@ -78,7 +82,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("del:"+e);
             return false;
         }
     }
@@ -105,7 +109,7 @@ public class RedisUtil {
             redisTemplate.opsForValue().set(key, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("set:"+e);
             return false;
         }
     }
@@ -126,7 +130,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("set:"+e);
             return false;
         }
     }
@@ -139,6 +143,7 @@ public class RedisUtil {
      */
     public long incr(String key, long delta) {
         if (delta < 0) {
+            logger.error("递增因子必须大于 0");
             throw new RuntimeException("递增因子必须大于 0");
         }
         return redisTemplate.opsForValue().increment(key, delta);
@@ -152,6 +157,7 @@ public class RedisUtil {
      */
     public long decr(String key, long delta) {
         if (delta < 0) {
+            logger.error("递减因子必须大于 0");
             throw new RuntimeException("递减因子必须大于 0");
         }
         return redisTemplate.opsForValue().increment(key, delta);
@@ -189,7 +195,7 @@ public class RedisUtil {
             redisTemplate.opsForHash().putAll(key, map);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("hmset:"+e);
             return false;
         }
     }
@@ -209,7 +215,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("hmset:"+e);
             return false;
         }
     }
@@ -226,7 +232,7 @@ public class RedisUtil {
             redisTemplate.opsForHash().put(key, item, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("hset:"+e);
             return false;
         }
     }
@@ -247,7 +253,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("hset:"+e);
             return false;
         }
     }
@@ -304,8 +310,8 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForSet().members(key);
         } catch (Exception e) {
-            e.printStackTrace();
-            return null;
+            logger.error("sGet:"+e);
+            return new HashSet<>();
         }
     }
 
@@ -319,7 +325,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForSet().isMember(key, value);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("sHasKey:"+e);
             return false;
         }
     }
@@ -334,7 +340,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForSet().add(key, values);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("sSet:"+e);
             return 0;
         }
     }
@@ -354,7 +360,7 @@ public class RedisUtil {
             }
             return count;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("sSet:"+e);
             return 0;
         }
     }
@@ -368,7 +374,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForSet().size(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("sGetSetSize:"+e);
             return 0;
         }
     }
@@ -383,7 +389,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForSet().remove(key, values);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("setRemove:"+e);
             return 0;
         }
     }
@@ -516,8 +522,8 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForList().range(key, start, end);
         } catch (Exception e) {
-            e.printStackTrace();
-            return null;
+            logger.error("lGet:"+e);
+            return new ArrayList<>();
         }
     }
 
@@ -530,7 +536,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForList().size(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lGet:"+e);
             return 0;
         }
     }
@@ -547,7 +553,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForList().index(key, index);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lGetIndex:"+e);
             return null;
         }
     }
@@ -563,7 +569,7 @@ public class RedisUtil {
             redisTemplate.opsForList().rightPush(key, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lSet:"+e);
             return false;
         }
     }
@@ -583,7 +589,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lSet:"+e);
             return false;
         }
     }
@@ -599,7 +605,7 @@ public class RedisUtil {
             redisTemplate.opsForList().rightPushAll(key, values);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lSetList:"+e);
             return false;
         }
     }
@@ -619,7 +625,7 @@ public class RedisUtil {
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lSetList:"+e);
             return false;
         }
     }
@@ -636,7 +642,7 @@ public class RedisUtil {
             redisTemplate.opsForList().set(key, index, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lUpdateIndex:"+e);
             return false;
         }
     }
@@ -654,7 +660,7 @@ public class RedisUtil {
         try {
             return redisTemplate.opsForList().remove(key, count, value);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("lRemove:"+e);
             return 0;
         }
     }
@@ -669,8 +675,8 @@ public class RedisUtil {
             Set<String> set = redisTemplate.keys(key);
             return new ArrayList<>(set);
         } catch (Exception e) {
-            e.printStackTrace();
-            return null;
+            logger.error("keys:"+e);
+            return new ArrayList<>();
         }
     }
 
@@ -680,30 +686,6 @@ public class RedisUtil {
      * @param query 查询参数
      * @return
      */
-//    public List<Object> scan(String query) {
-//        List<Object> result = new ArrayList<>();
-//        try {
-//            Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field",
-//                    ScanOptions.scanOptions().match(query).count(1000).build());
-//            while (cursor.hasNext()) {
-//                Map.Entry<Object,Object> entry = cursor.next();
-//                result.add(entry.getKey());
-//                Object key = entry.getKey();
-//                Object valueSet = entry.getValue();
-//            }
-//            //关闭cursor
-//            cursor.close();
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//        return result;
-//    }
-
-    /**
-     * 模糊查询
-     * @param query 查询参数
-     * @return
-     */
     public List<Object> scan(String query) {
         Set<String> keys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
             Set<String> keysTmp = new HashSet<>();
@@ -713,19 +695,6 @@ public class RedisUtil {
             }
             return keysTmp;
         });
-//        Set<String> keys = (Set<String>) redisTemplate.execute(new RedisCallback<Set<String>>(){
-//
-//            @Override
-//            public Set<String> doInRedis(RedisConnection connection) throws DataAccessException {
-//                Set<String> keysTmp = new HashSet<>();
-//                Cursor<byte[]> cursor = connection.scan(new ScanOptions.ScanOptionsBuilder().match(query).count(1000).build());
-//                while (cursor.hasNext()) {
-//                    keysTmp.add(new String(cursor.next()));
-//                }
-//            return keysTmp;
-//            }
-//        });
-
         return new ArrayList<>(keys);
     }
 

+ 3 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java

@@ -38,7 +38,7 @@ import org.springframework.web.context.request.async.DeferredResult;
 @RequestMapping("/api/position")
 public class MobilePositionController {
 
-    private final static Logger logger = LoggerFactory.getLogger(MobilePositionController.class);
+    private static final Logger logger = LoggerFactory.getLogger(MobilePositionController.class);
 
     @Autowired
     private IVideoManagerStorager storager;
@@ -118,9 +118,9 @@ public class MobilePositionController {
 			msg.setData(String.format("获取移动位置信息失败,错误码: %s, %s", response.getStatusCode(), response.getReasonPhrase()));
 			resultHolder.invokeResult(msg);
 		});
-        DeferredResult<ResponseEntity<MobilePosition>> result = new DeferredResult<ResponseEntity<MobilePosition>>(5*1000L);
+        DeferredResult<ResponseEntity<MobilePosition>> result = new DeferredResult<>(5*1000L);
 		result.onTimeout(()->{
-			logger.warn(String.format("获取移动位置信息超时"));
+			logger.warn("获取移动位置信息超时");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_CATALOG+deviceId);

+ 4 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/device/DeviceConfig.java

@@ -34,7 +34,7 @@ import org.springframework.web.context.request.async.DeferredResult;
 @RequestMapping("/api/device/config")
 public class DeviceConfig {
 
-    private final static Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
+    private static final Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
 
     @Autowired
     private IVideoManagerStorager storager;
@@ -84,7 +84,7 @@ public class DeviceConfig {
 		});
         DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
 		result.onTimeout(() -> {
-			logger.warn(String.format("设备配置操作超时, 设备未返回应答指令"));
+			logger.warn("设备配置操作超时, 设备未返回应答指令");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICECONFIG + (StringUtils.isEmpty(channelId) ? deviceId : channelId));
@@ -92,7 +92,7 @@ public class DeviceConfig {
 			json.put("DeviceID", deviceId);
 			json.put("Status", "Timeout");
 			json.put("Description", "设备配置操作超时, 设备未返回应答指令");
-			msg.setData(json); //("看守位控制操作超时, 设备未返回应答指令");
+			msg.setData(json); //看守位控制操作超时, 设备未返回应答指令
 			resultHolder.invokeResult(msg);
 		});
 		resultHolder.put(DeferredResultHolder.CALLBACK_CMD_DEVICECONFIG + (StringUtils.isEmpty(channelId) ? deviceId : channelId), result);
@@ -129,7 +129,7 @@ public class DeviceConfig {
 		});
         DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String >> (3 * 1000L);
 		result.onTimeout(()->{
-			logger.warn(String.format("获取设备配置超时"));
+			logger.warn("获取设备配置超时");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_CONFIGDOWNLOAD + (StringUtils.isEmpty(channelId) ? deviceId : channelId));

+ 7 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/device/DeviceControl.java

@@ -35,7 +35,7 @@ import org.springframework.web.context.request.async.DeferredResult;
 @RequestMapping("/api/device/control")
 public class DeviceControl {
 
-    private final static Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
+    private static final Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
 
     @Autowired
     private IVideoManagerStorager storager;
@@ -69,7 +69,7 @@ public class DeviceControl {
             return new ResponseEntity<>(json.toJSONString(), HttpStatus.OK);
         } else {
             logger.warn("设备远程启动API调用失败!");
-            return new ResponseEntity<String>("设备远程启动API调用失败!", HttpStatus.INTERNAL_SERVER_ERROR);
+            return new ResponseEntity<>("设备远程启动API调用失败!", HttpStatus.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -103,7 +103,7 @@ public class DeviceControl {
 		});
         DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
 		result.onTimeout(() -> {
-			logger.warn(String.format("开始/停止录像操作超时, 设备未返回应答指令"));
+			logger.warn("开始/停止录像操作超时, 设备未返回应答指令");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + (StringUtils.isEmpty(channelId) ? deviceId : channelId));
@@ -141,7 +141,7 @@ public class DeviceControl {
 		});
         DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
 		result.onTimeout(() -> {
-			logger.warn(String.format("布防/撤防操作超时, 设备未返回应答指令"));
+			logger.warn("布防/撤防操作超时, 设备未返回应答指令");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + deviceId);
@@ -182,7 +182,7 @@ public class DeviceControl {
 		});
         DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
 		result.onTimeout(() -> {
-			logger.warn(String.format("报警复位操作超时, 设备未返回应答指令"));
+			logger.warn("报警复位操作超时, 设备未返回应答指令");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + deviceId);
@@ -220,7 +220,7 @@ public class DeviceControl {
 			return new ResponseEntity<>(json.toJSONString(), HttpStatus.OK);
 		} else {
 			logger.warn("强制关键帧API调用失败!");
-			return new ResponseEntity<String>("强制关键帧API调用失败!", HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<>("强制关键帧API调用失败!", HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
 
@@ -260,7 +260,7 @@ public class DeviceControl {
 		});
         DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
 		result.onTimeout(() -> {
-			logger.warn(String.format("看守位控制操作超时, 设备未返回应答指令"));
+			logger.warn("看守位控制操作超时, 设备未返回应答指令");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + (StringUtils.isEmpty(channelId) ? deviceId : channelId));

+ 9 - 9
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/device/DeviceQuery.java

@@ -35,7 +35,7 @@ import java.util.Map;
 @RequestMapping("/api/device/query")
 public class DeviceQuery {
 
-	private final static Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
+	private static final Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
 
 	@Autowired
 	private IVideoManagerStorager storager;
@@ -186,9 +186,9 @@ public class DeviceQuery {
 			msg.setData(String.format("同步通道失败,错误码: %s, %s", response.getStatusCode(), response.getReasonPhrase()));
 			resultHolder.invokeResult(msg);
 		});
-        DeferredResult<ResponseEntity<Device>> result = new DeferredResult<ResponseEntity<Device>>(15*1000L);
+        DeferredResult<ResponseEntity<Device>> result = new DeferredResult<>(15*1000L);
 		result.onTimeout(()->{
-			logger.warn(String.format("设备通道信息同步超时"));
+			logger.warn("设备通道信息同步超时");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_CATALOG+deviceId);
@@ -216,7 +216,7 @@ public class DeviceQuery {
 		}
 
 		if (offLineDetector.isOnline(deviceId)) {
-			return new ResponseEntity<String>("不允许删除在线设备!", HttpStatus.NOT_ACCEPTABLE);
+			return new ResponseEntity<>("不允许删除在线设备!", HttpStatus.NOT_ACCEPTABLE);
 		}
 		// 清除redis记录
 		boolean isSuccess = storager.delete(deviceId);
@@ -227,7 +227,7 @@ public class DeviceQuery {
 			return new ResponseEntity<>(json.toString(),HttpStatus.OK);
 		} else {
 			logger.warn("设备信息删除API调用失败!");
-			return new ResponseEntity<String>("设备信息删除API调用失败!", HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<>("设备信息删除API调用失败!", HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
 
@@ -355,9 +355,9 @@ public class DeviceQuery {
 			msg.setData(String.format("获取设备状态失败,错误码: %s, %s", response.getStatusCode(), response.getReasonPhrase()));
 			resultHolder.invokeResult(msg);
 		});
-        DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(2*1000L);
+        DeferredResult<ResponseEntity<String>> result = new DeferredResult<>(2*1000L);
 		result.onTimeout(()->{
-			logger.warn(String.format("获取设备状态超时"));
+			logger.warn("获取设备状态超时");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + deviceId);
@@ -408,9 +408,9 @@ public class DeviceQuery {
 			msg.setData(String.format("设备报警查询失败,错误码: %s, %s", response.getStatusCode(), response.getReasonPhrase()));
 			resultHolder.invokeResult(msg);
 		});
-        DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String >> (3 * 1000L);
+        DeferredResult<ResponseEntity<String>> result = new DeferredResult<> (3 * 1000L);
 		result.onTimeout(()->{
-			logger.warn(String.format("设备报警查询超时"));
+			logger.warn("设备报警查询超时");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_ALARM + deviceId);

+ 2 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java

@@ -1,16 +1,14 @@
 package com.zd.alg.iot.vmp.vmanager.gb28181.gbStream;
 
+import com.github.pagehelper.PageInfo;
 import com.zd.alg.iot.vmp.gb28181.bean.GbStream;
+import com.zd.alg.iot.vmp.service.IGbStreamService;
 import com.zd.alg.iot.vmp.storager.IVideoManagerStorager;
 import com.zd.alg.iot.vmp.vmanager.gb28181.gbStream.bean.GbStreamParam;
-import com.zd.alg.iot.vmp.service.IGbStreamService;
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -20,8 +18,6 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/gbStream")
 public class GbStreamController {
 
-    private final static Logger logger = LoggerFactory.getLogger(GbStreamController.class);
-
     @Autowired
     private IGbStreamService gbStreamService;
 

+ 1 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/media/MediaController.java

@@ -1,16 +1,14 @@
 package com.zd.alg.iot.vmp.vmanager.gb28181.media;
 
 import com.zd.alg.iot.vmp.common.StreamInfo;
-import com.zd.alg.iot.vmp.service.IStreamPushService;
 import com.zd.alg.iot.vmp.service.IMediaService;
+import com.zd.alg.iot.vmp.service.IStreamPushService;
 import com.zd.alg.iot.vmp.storager.IVideoManagerStorager;
 import com.zd.model.domain.WVPResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
@@ -22,8 +20,6 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping(value = "/api/media")
 public class MediaController {
 
-    private final static Logger logger = LoggerFactory.getLogger(MediaController.class);
-
     @Autowired
     private IVideoManagerStorager storager;
 

+ 2 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/platform/PlatformController.java

@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/platform")
 public class PlatformController {
 
-    private final static Logger logger = LoggerFactory.getLogger(PlatformController.class);
+    private static final Logger logger = LoggerFactory.getLogger(PlatformController.class);
 
     @Autowired
     private IVideoManagerStorager storager;
@@ -105,9 +105,8 @@ public class PlatformController {
         ){
             return new ResponseEntity<>("missing parameters", HttpStatus.BAD_REQUEST);
         }
-        // TODO 检查是否已经存在,且注册成功, 如果注册成功,需要先注销之前再,修改并注册
+        // 检查是否已经存在,且注册成功, 如果注册成功,需要先注销之前再,修改并注册
 
-        // ParentPlatform parentPlatformOld = storager.queryParentPlatById(parentPlatform.getDeviceGBId());
         ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId());
 
         boolean updateResult = storager.updateParentPlatform(parentPlatform);

+ 2 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/platformGbStream/PlatformGbStreamController.java

@@ -1,15 +1,13 @@
 package com.zd.alg.iot.vmp.vmanager.gb28181.platformGbStream;
 
+import com.github.pagehelper.PageInfo;
 import com.zd.alg.iot.vmp.gb28181.bean.GbStream;
-import com.zd.alg.iot.vmp.storager.IVideoManagerStorager;
 import com.zd.alg.iot.vmp.service.IGbStreamService;
-import com.github.pagehelper.PageInfo;
+import com.zd.alg.iot.vmp.storager.IVideoManagerStorager;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -19,7 +17,6 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/platform_gb_stream")
 public class PlatformGbStreamController {
 
-    private final static Logger logger = LoggerFactory.getLogger(PlatformGbStreamController.class);
 
     @Autowired
     private IGbStreamService gbStreamService;

+ 18 - 19
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/play/PlayController.java

@@ -41,7 +41,7 @@ import java.util.*;
 @RequestMapping("/api/play")
 public class PlayController {
 
-	private final static Logger logger = LoggerFactory.getLogger(PlayController.class);
+	private static final Logger logger = LoggerFactory.getLogger(PlayController.class);
 
 	@Autowired
 	private SIPCommander cmder;
@@ -106,7 +106,7 @@ public class PlayController {
         String deviceStr[] = deviceIds.split(",");
         List<String> deviceList = Arrays.asList(deviceStr);
         List<DeviceChannel> deviceChannelList = playService.queryChannelByDeviceId(deviceList, page, count);
-        if (deviceChannelList != null && deviceChannelList.size() > 0) {
+        if (deviceChannelList != null && !deviceChannelList.isEmpty()) {
 			for (DeviceChannel deviceChannel : deviceChannelList) {
 				// 获取可用的zlm
 				Device device = storager.queryVideoDevice(deviceChannel.getDeviceId());
@@ -143,7 +143,7 @@ public class PlayController {
 		logger.debug(String.format("设备预览/回放停止API调用,streamId:%s_%s", deviceId, channelId ));
 
 		UUID uuid = UUID.randomUUID();
-		DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>();
+		DeferredResult<ResponseEntity<String>> result = new DeferredResult<>();
 
 		// 录像查询以channelId作为deviceId查询
 		resultHolder.put(DeferredResultHolder.CALLBACK_CMD_STOP + uuid, result);
@@ -161,8 +161,7 @@ public class PlayController {
 				storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
 				RequestMessage msg = new RequestMessage();
 				msg.setId(DeferredResultHolder.CALLBACK_CMD_STOP + uuid);
-				//Response response = event.getResponse();
-				msg.setData(String.format("success"));
+				msg.setData("success");
 				resultHolder.invokeResult(msg);
 			}
 			mediaServerService.closeRTPServer(device, channelId);
@@ -212,21 +211,21 @@ public class PlayController {
 		}
 		if (streamInfo == null) {
 			logger.warn("视频转码API调用失败!, 视频流已经停止!");
-			return new ResponseEntity<String>("未找到视频流信息, 视频流可能已经停止", HttpStatus.OK);
+			return new ResponseEntity<>("未找到视频流信息, 视频流可能已经停止", HttpStatus.OK);
 		}
 		MediaServerItem mediaInfo = mediaServerService.getOne(streamInfo.getMediaServerId());
 		JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaInfo, streamId);
 		if (!rtpInfo.getBoolean("exist")) {
 			logger.warn("视频转码API调用失败!, 视频流已停止推流!");
-			return new ResponseEntity<String>("推流信息在流媒体中不存在, 视频流可能已停止推流", HttpStatus.OK);
+			return new ResponseEntity<>("推流信息在流媒体中不存在, 视频流可能已停止推流", HttpStatus.OK);
 		} else {
 			String dstUrl = String.format("rtmp://%s:%s/convert/%s", "127.0.0.1", mediaInfo.getRtmpPort(),
 					streamId );
 			String srcUrl = String.format("rtsp://%s:%s/rtp/%s", "127.0.0.1", mediaInfo.getRtspPort(), streamId);
 			JSONObject jsonObject = zlmresTfulUtils.addFFmpegSource(mediaInfo, srcUrl, dstUrl, "1000000", true, false, null);
-			logger.info(jsonObject.toJSONString());
 			JSONObject result = new JSONObject();
-			if (jsonObject != null && jsonObject.getInteger("code") == 0) {
+			if (jsonObject != null && !jsonObject.isEmpty() && jsonObject.getInteger("code") == 0) {
+				   logger.info(jsonObject.toJSONString());
 				   result.put("code", 0);
 				JSONObject data = jsonObject.getJSONObject("data");
 				if (data != null) {
@@ -238,7 +237,7 @@ public class PlayController {
 				result.put("code", 1);
 				result.put("msg", "cover fail");
 			}
-			return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK);
+			return new ResponseEntity<>( result.toJSONString(), HttpStatus.OK);
 		}
 	}
 
@@ -257,30 +256,30 @@ public class PlayController {
 		if (mediaServerId == null) {
 			result.put("code", 400);
 			result.put("msg", "mediaServerId is null");
-			return new ResponseEntity<String>( result.toJSONString(), HttpStatus.BAD_REQUEST);
+			return new ResponseEntity<>( result.toJSONString(), HttpStatus.BAD_REQUEST);
 		}
 		MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
 		if (mediaInfo == null) {
 			result.put("code", 0);
 			result.put("msg", "使用的流媒体已经停止运行");
-			return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK);
+			return new ResponseEntity<>( result.toJSONString(), HttpStatus.OK);
 		}else {
 			JSONObject jsonObject = zlmresTfulUtils.delFFmpegSource(mediaInfo, key);
-			logger.info(jsonObject.toJSONString());
-			if (jsonObject != null && jsonObject.getInteger("code") == 0) {
+			if (jsonObject != null && !jsonObject.isEmpty() && jsonObject.getInteger("code") == 0) {
+				logger.info(jsonObject.toJSONString());
 				result.put("code", 0);
 				JSONObject data = jsonObject.getJSONObject("data");
 				if (data != null && data.getBoolean("flag")) {
 					result.put("code", "0");
 					result.put("msg", "success");
 				}else {
-
+					// 暂无逻辑
 				}
 			}else {
 				result.put("code", 1);
 				result.put("msg", "delFFmpegSource fail");
 			}
-			return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK);
+			return new ResponseEntity<>( result.toJSONString(), HttpStatus.OK);
 		}
 
 
@@ -297,7 +296,7 @@ public class PlayController {
             logger.debug("语音广播API调用");
         }
         Device device = storager.queryVideoDevice(deviceId);
-		DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
+		DeferredResult<ResponseEntity<String>> result = new DeferredResult<>(3 * 1000L);
         if (device == null) {
 			resultHolder.put(DeferredResultHolder.CALLBACK_CMD_BROADCAST + deviceId, result);
 			RequestMessage msg = new RequestMessage();
@@ -325,7 +324,7 @@ public class PlayController {
 		});
 
 		result.onTimeout(() -> {
-			logger.warn(String.format("语音广播操作超时, 设备未返回应答指令"));
+			logger.warn("语音广播操作超时, 设备未返回应答指令");
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_BROADCAST + deviceId);
 			JSONObject json = new JSONObject();
@@ -376,7 +375,7 @@ public class PlayController {
 		JSONObject result = new JSONObject();
 		result.put("code",0);
 		result.put("data",streamInfoResult);
-		return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK);
+		return new ResponseEntity<>( result.toJSONString(), HttpStatus.OK);
 	}
 
 }

+ 4 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/playback/DownloadController.java

@@ -38,7 +38,7 @@ import java.util.UUID;
 @RequestMapping("/api/download")
 public class DownloadController {
 
-	private final static Logger logger = LoggerFactory.getLogger(DownloadController.class);
+	private static final Logger logger = LoggerFactory.getLogger(DownloadController.class);
 
 	@Autowired
 	private SIPCommander cmder;
@@ -49,9 +49,6 @@ public class DownloadController {
 	@Autowired
 	private IRedisCatchStorage redisCatchStorage;
 
-	// @Autowired
-	// private ZLMRESTfulUtils zlmresTfulUtils;
-
 	@Autowired
 	private IPlayService playService;
 
@@ -77,7 +74,7 @@ public class DownloadController {
 			logger.debug(String.format("历史媒体下载 API调用,deviceId:%s,channelId:%s,downloadSpeed:%s", deviceId, channelId, downloadSpeed));
 		}
 		UUID uuid = UUID.randomUUID();
-		DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(30000L);
+		DeferredResult<ResponseEntity<String>> result = new DeferredResult<>(30000L);
 		// 超时处理
 		result.onTimeout(()->{
 			logger.warn(String.format("设备下载响应超时,deviceId:%s ,channelId:%s", deviceId, channelId));
@@ -136,10 +133,10 @@ public class DownloadController {
 			JSONObject json = new JSONObject();
 			json.put("deviceId", deviceId);
 			json.put("channelId", channelId);
-			return new ResponseEntity<String>(json.toString(), HttpStatus.OK);
+			return new ResponseEntity<>(json.toString(), HttpStatus.OK);
 		} else {
 			logger.warn("设备历史媒体下载停止API调用失败!");
-			return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
 }

+ 4 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/playback/PlaybackController.java

@@ -36,7 +36,7 @@ import java.util.UUID;
 @RequestMapping("/api/playback")
 public class PlaybackController {
 
-	private final static Logger logger = LoggerFactory.getLogger(PlaybackController.class);
+	private static final Logger logger = LoggerFactory.getLogger(PlaybackController.class);
 
 	@Autowired
 	private SIPCommander cmder;
@@ -71,7 +71,7 @@ public class PlaybackController {
 			logger.debug(String.format("设备回放 API调用,deviceId:%s ,channelId:%s", deviceId, channelId));
 		}
 		UUID uuid = UUID.randomUUID();
-		DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(30000L);
+		DeferredResult<ResponseEntity<String>> result = new DeferredResult<>(30000L);
 
 		Device device = storager.queryVideoDevice(deviceId);
 		if (device == null) {
@@ -138,10 +138,10 @@ public class PlaybackController {
 			JSONObject json = new JSONObject();
 			json.put("deviceId", deviceId);
 			json.put("channelId", channelId);
-			return new ResponseEntity<String>(json.toString(), HttpStatus.OK);
+			return new ResponseEntity<>(json.toString(), HttpStatus.OK);
 		} else {
 			logger.warn("设备录像回放停止API调用失败!");
-			return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
 }

+ 5 - 5
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/ptz/PtzController.java

@@ -27,7 +27,7 @@ import com.zd.alg.iot.vmp.storager.IVideoManagerStorager;
 @RequestMapping("/api/ptz")
 public class PtzController {
 
-	private final static Logger logger = LoggerFactory.getLogger(PtzController.class);
+	private static final Logger logger = LoggerFactory.getLogger(PtzController.class);
 
 	@Autowired
 	private SIPCommander cmder;
@@ -66,7 +66,7 @@ public class PtzController {
 		Device device = storager.queryVideoDevice(deviceId);
 
 		cmder.frontEndCmd(device, channelId, cmdCode, horizonSpeed, verticalSpeed, zoomSpeed);
-		return new ResponseEntity<String>("success",HttpStatus.OK);
+		return new ResponseEntity<>("success",HttpStatus.OK);
 	}
 
 	@ApiOperation("通用前端控制命令")
@@ -87,7 +87,7 @@ public class PtzController {
 		Device device = storager.queryVideoDevice(deviceId);
 
 		cmder.frontEndCmd(device, channelId, cmdCode, parameter1, parameter2, combindCode2);
-		return new ResponseEntity<String>("success",HttpStatus.OK);
+		return new ResponseEntity<>("success",HttpStatus.OK);
 	}
 
 	@ApiOperation("预置位查询")
@@ -108,9 +108,9 @@ public class PtzController {
 			msg.setData(String.format("获取设备预置位失败,错误码: %s, %s", response.getStatusCode(), response.getReasonPhrase()));
 			resultHolder.invokeResult(msg);
 		});
-        DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String >> (3 * 1000L);
+        DeferredResult<ResponseEntity<String>> result = new DeferredResult<> (3 * 1000L);
 		result.onTimeout(()->{
-			logger.warn(String.format("获取设备预置位超时"));
+			logger.warn("获取设备预置位超时");
 			// 释放rtpserver
 			RequestMessage msg = new RequestMessage();
 			msg.setId(DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + (StringUtils.isEmpty(channelId) ? deviceId : channelId));

+ 2 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/gb28181/record/GBRecordController.java

@@ -23,7 +23,7 @@ import org.springframework.web.context.request.async.DeferredResult;
 @RequestMapping("/api/gb_record")
 public class GBRecordController {
 
-	private final static Logger logger = LoggerFactory.getLogger(GBRecordController.class);
+	private static final Logger logger = LoggerFactory.getLogger(GBRecordController.class);
 
 	@Autowired
 	private SIPCommander cmder;
@@ -51,7 +51,7 @@ public class GBRecordController {
 		Device device = storager.queryVideoDevice(deviceId);
 		cmder.recordInfoQuery(device, channelId, startTime, endTime);
 		// 指定超时时间 1分钟30秒
-		DeferredResult<ResponseEntity<RecordInfos>> result = new DeferredResult<ResponseEntity<RecordInfos>>(90*1000L);
+		DeferredResult<ResponseEntity<RecordInfos>> result = new DeferredResult<>(90*1000L);
 		// 录像查询以channelId作为deviceId查询
 		resultHolder.put(DeferredResultHolder.CALLBACK_CMD_RECORDINFO+channelId, result);
 		result.onTimeout(()->{

+ 2 - 2
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/log/LogController.java

@@ -26,7 +26,7 @@ import java.text.SimpleDateFormat;
 @RequestMapping("/api/log")
 public class LogController {
 
-    private final static Logger logger = LoggerFactory.getLogger(LogController.class);
+    private static final Logger logger = LoggerFactory.getLogger(LogController.class);
 
     @Autowired
     private ILogService logService;
@@ -49,7 +49,7 @@ public class LogController {
         wvpResult.setCode(0);
         wvpResult.setMsg("success");
         wvpResult.setData(count);
-        return new ResponseEntity<WVPResult<String>>(wvpResult, HttpStatus.OK);
+        return new ResponseEntity<>(wvpResult, HttpStatus.OK);
     }
 
 

+ 8 - 4
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/onvif/ONVIFController.java

@@ -7,6 +7,7 @@ import com.zd.alg.iot.vmp.gb28181.transmit.callback.RequestMessage;
 import com.zd.alg.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.zd.alg.iot.vmp.onvif.IONVIFServer;
 import com.zd.alg.iot.vmp.service.IMediaServerService;
+import com.zd.common.core.utils.FileConfigUtils;
 import com.zd.model.domain.WVPResult;
 import com.zd.model.constant.HttpStatus;
 import io.swagger.annotations.Api;
@@ -26,14 +27,14 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-@SuppressWarnings(value = {"rawtypes", "unchecked"})
+
 @Api(tags = "onvif设备")
 @CrossOrigin
 @RestController
 @RequestMapping("/api/onvif")
 public class ONVIFController {
 
-    private final static Logger logger = LoggerFactory.getLogger(ONVIFController.class);
+    private static final Logger logger = LoggerFactory.getLogger(ONVIFController.class);
 
     @Autowired
     private IMediaServerService mediaServerService;
@@ -44,6 +45,9 @@ public class ONVIFController {
     @Autowired
     private IONVIFServer onvifServer;
 
+    @Autowired
+    private FileConfigUtils fileConfigUtils;
+
 
     @ApiOperation("搜索")
     @ApiImplicitParam(name = "timeout", value = "超时时间", required = true, dataTypeClass = Integer.class)
@@ -156,7 +160,7 @@ public class ONVIFController {
                 Map<String,Object> map=new HashMap<>();
                 map.put("type",1);
                 map.put("vhost","__defaultVhost__");
-                map.put("customized_path","/home/upload");
+                map.put("customized_path",fileConfigUtils.getFilePath());
                 map.put("max_second",360000);
                 String name=hostname.replace(".","");
                 String appName="app"+name;
@@ -197,7 +201,7 @@ public class ONVIFController {
     @GetMapping(value = "/stopRecord")
     public DeferredResult <ResponseEntity<WVPResult>> stopRecord(@RequestParam(value = "timeout", required = false, defaultValue = "3000") Integer timeout,
                                  @RequestParam(value = "hostname", required = true) String hostname){
-        DeferredResult<ResponseEntity<WVPResult>> result = new DeferredResult<>(timeout + 10L);;
+        DeferredResult<ResponseEntity<WVPResult>> result = new DeferredResult<>(timeout + 10L);
         RequestMessage msg = new RequestMessage();
         UUID uuid = UUID.randomUUID();
         resultHolder.put(DeferredResultHolder.CALLBACK_ONVIF + uuid, result);

+ 0 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/server/ServerController.java


Some files were not shown because too many files changed in this diff