ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -29,23 +29,20 @@ import com.ruoyi.utils.tools.GisTool; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.mapper.ArdCamerasMapper; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.utils.tube.GeoPoint; import com.ruoyi.utils.tube.TubeTools; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.PriorityBlockingQueue; import java.util.stream.Collectors; /** * @Description: 全局报警业务 @@ -76,8 +73,6 @@ private ISysConfigService configService; @Resource private ArdCamerasMapper ardCamerasMapper; @Resource private IHikClientService hikClientService; @Resource private RedisCache redisCache; @Resource @@ -137,8 +132,7 @@ .setCount(ardAlarmStealelec.getCount()) .setTotal(ardAlarmStealelec.getTotal()); return globalAlarmData; }) .collect(Collectors.toList()); }).collect(Collectors.toList()); case 1002: List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectListAllByCommand(refreshTime); return ardAlarmCameras.stream() @@ -152,8 +146,7 @@ .setCount(ardAlarmCamera.getCount()) .setTotal(ardAlarmCamera.getTotal()); return globalAlarmData; }) .collect(Collectors.toList()); }).collect(Collectors.toList()); case 1003: List<ArdAlarmRadar> ardAlarmRadars = ardAlarmRadarMapper.selectListAllByCommand(refreshTime, "运动目标检测"); return ardAlarmRadars.stream() @@ -167,8 +160,7 @@ .setCount(ardAlarmRadar.getCount()) .setTotal(ardAlarmRadar.getTotal()); return globalAlarmData; }) .collect(Collectors.toList()); }).collect(Collectors.toList()); case 1004: ardAlarmRadars = ardAlarmRadarMapper.selectListAllByCommand(refreshTime, "热源检测"); return ardAlarmRadars.stream() @@ -182,8 +174,7 @@ .setCount(ardAlarmRadar.getCount()) .setTotal(ardAlarmRadar.getTotal()); return globalAlarmData; }) .collect(Collectors.toList()); }).collect(Collectors.toList()); case 1014: List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectListAllByCommand(refreshTime); return ardAlarmTubes.stream() @@ -198,8 +189,7 @@ .setCount(ardAlarmTube.getCount()) .setTotal(ardAlarmTube.getTotal()); return globalAlarmData; }) .collect(Collectors.toList()); }).collect(Collectors.toList()); default: return null; } @@ -224,38 +214,33 @@ aas.setParams(params); aas.setPageNum(pageNum); aas.setPageSize(pageSize); List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas); return ardAlarmStealelecs; return ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas); case 1002: ArdAlarmCamera aac = new ArdAlarmCamera(); aac.setParams(params); aac.setPageNum(pageNum); aac.setPageSize(pageSize); List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectArdAlarmCameraList(aac); return ardAlarmCameras; return ardAlarmCameraMapper.selectArdAlarmCameraList(aac); case 1003: ArdAlarmRadar aar = new ArdAlarmRadar(); aar.setParams(params); aar.setPageNum(pageNum); aar.setPageSize(pageSize); aar.setAlarmType("运动目标检测"); List<ArdAlarmRadar> ardAlarmRadar = ardAlarmRadarMapper.selectArdAlarmRadarList(aar); return ardAlarmRadar; return ardAlarmRadarMapper.selectArdAlarmRadarList(aar); case 1004: ArdAlarmRadar aarr = new ArdAlarmRadar(); aarr.setParams(params); aarr.setPageNum(pageNum); aarr.setPageSize(pageSize); aarr.setAlarmType("热源检测"); List<ArdAlarmRadar> ardAlarmRadarr = ardAlarmRadarMapper.selectArdAlarmRadarList(aarr); return ardAlarmRadarr; return ardAlarmRadarMapper.selectArdAlarmRadarList(aarr); case 1014: ArdAlarmTube aat = new ArdAlarmTube(); aat.setParams(params); aat.setPageNum(pageNum); aat.setPageSize(pageSize); List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectArdAlarmTubeList(aat); return ardAlarmTubes; return ardAlarmTubeMapper.selectArdAlarmTubeList(aat); } return null; } @@ -277,7 +262,7 @@ if (StringUtils.isNotNull(ardAlarmStealelec)) { String describe = ardAlarmStealelec.getDescribe(); String startTime = fmt.format(ardAlarmStealelec.getStartTime()); int i = ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, startTime, DateUtils.getTime()); ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, startTime, DateUtils.getTime()); return ardAlarmStealelec; } case 1014: @@ -285,7 +270,7 @@ if (StringUtils.isNotNull(ardAlarmTube)) { String tubeId = ardAlarmTube.getTubeId(); String alarmTime = fmt.format(ardAlarmTube.getAlarmTime()); int i = ardAlarmTubeMapper.updateViewTimeByTubeId(tubeId, alarmTime, DateUtils.getTime()); ardAlarmTubeMapper.updateViewTimeByTubeId(tubeId, alarmTime, DateUtils.getTime()); return ardAlarmTube; } default: @@ -423,7 +408,6 @@ if (count >= 3) { ardAlarmRadar.setGuideFlag(1); ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar); //获取雷达所在塔上的大光电 String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId()); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { @@ -532,4 +516,37 @@ return minDistanceCameraId; } public static void main(String[] args) { Comparator<Obj> PriorityDescCom = Comparator.comparingInt(Obj::getPriority).reversed(); Comparator<Obj> NumDescCom = Comparator.comparingInt(Obj::getNum).reversed(); Comparator<Obj> receiveTimeAscCom = Comparator.comparing(Obj::getAlarmTime); Comparator<Obj> comparator = PriorityDescCom.thenComparing(NumDescCom).thenComparing(receiveTimeAscCom); PriorityBlockingQueue<Obj> priorityQueue = new PriorityBlockingQueue<>(1000,comparator); priorityQueue.add(new Obj(999,1,"2023-07-01 16:00:01")); priorityQueue.add(new Obj(999,2,"2023-07-01 16:00:01")); priorityQueue.add(new Obj(999,3,"2023-07-01 16:00:01")); List<Obj> elements = new ArrayList<>(priorityQueue); elements.sort(priorityQueue.comparator()); // 使用队列的比较器进行排序 for (Obj task : elements) { log.info("正在排队【priority】" + task.getPriority()+"【num】" + task.getNum() + "【alarmTime】" + task.getAlarmTime()); } log.info("==================================================================="); priorityQueue.add(new Obj(999,5,"2023-07-01 16:00:01")); PriorityBlockingQueue queue = new PriorityBlockingQueue<>(priorityQueue); while (priorityQueue.size() > 0) { Obj task = priorityQueue.poll(); log.info("正在排队【priority】" + task.getPriority()+"【num】" + task.getNum() + "【alarmTime】" + task.getAlarmTime()); } } @Data @AllArgsConstructor static class Obj { Integer priority; Integer num; String alarmTime; } } ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
@@ -41,22 +41,19 @@ cmd.setOperator(guideTask.getAlarmType()); cmd.setExpired(30); cmd.setRecordBucketName("record"); cmd.setRecordObjectName("alarm"); cmd.setRecordObjectName("alarm_"+guideTask.getAlarmId()); log.debug("开始引导"); boolean guideRes = hikClientService.guideTargetPosition(cmd); if (guideRes) { log.debug("引导成功"); hikClientService.controlLock(cmd);//上锁 cmd.setEnable(true);//开始录像 hikClientService.recordToMinio(cmd);//开始录像 hikClientService.recordStart(cmd);//开始录像 try { Thread.sleep(30000); } catch (InterruptedException e) { log.info("当前任务ID"+guideTask.getAlarmId()+"线程被终止"); } cmd.setEnable(false);//停止录像 cmd.setUploadMinio(true);//上传minio String url = hikClientService.recordToMinio(cmd);//停止录像返回url String url = hikClientService.recordStopToMinio(cmd);//停止录像返回url if (StringUtils.isNotEmpty(url)) { switch (guideTask.getAlarmType()) { case "sys_tube_leak": ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java
@@ -13,8 +13,7 @@ * @author ard * @date 2023-06-28 */ public interface ArdAlarmRadarMapper { public interface ArdAlarmRadarMapper { /** * 查询雷达报警 * @@ -64,18 +63,19 @@ public int deleteArdAlarmRadarByIds(String[] ids); public List<ArdAlarmRadar> selectListAllByCommand(@Param("refreshTime")String refreshTime,@Param("alarmType")String alarmType); int selectCountByAlarmTime(@Param("refreshTime")String refreshTime,@Param("alarmType")String alarmType); /** * 通过雷达id找到关联塔上的大光电id * */ String getCameraByRadar(String radarId); /** * 查找5分钟内引导过的记录 * */ */ public ArdAlarmRadar getArdAlarmRadarWithGuide(ArdAlarmRadar ardAlarmRadar); public int getArdAlarmRadarWithNotGuide(@Param("ardAlarmRadar")ArdAlarmRadar ardAlarmRadar, @Param("guideTime")Date guideTime); } ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java
@@ -3,11 +3,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -26,7 +23,6 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.HashMap; import java.util.List; ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
@@ -39,6 +39,4 @@ String recordBucketName; /*录像文件名称*/ String recordObjectName; /*是否上传minio*/ boolean isUploadMinio; } ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
@@ -2,8 +2,6 @@ import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import java.io.IOException; import java.util.Map; /** @@ -35,7 +33,7 @@ boolean setFocusPos(CameraCmd cmd); //获取聚焦值 Map getFocusPos(CameraCmd cmd); Map<String,Object> getFocusPos(CameraCmd cmd); //设置预置位 boolean setPreset(CameraCmd cmd); @@ -93,9 +91,16 @@ //手动录像 String record(CameraCmd cmd); //手动录像 String recordToMinio(CameraCmd cmd); //引导目标位置 boolean guideTargetPosition(CameraCmd cmd); //开始录像 void recordStart(CameraCmd cmd); //停止录像-上传minio-返回录像url String recordStopToMinio(CameraCmd cmd); //停止录像-不上传minio void recordStopNotToMinio(CameraCmd cmd); } ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -2,7 +2,6 @@ import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.mapper.ArdCamerasMapper; import com.ruoyi.device.hiksdk.common.GlobalVariable; @@ -20,11 +19,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import sun.misc.BASE64Encoder; import javax.annotation.Resource; import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.nio.ByteBuffer; import java.text.DecimalFormat; import java.text.SimpleDateFormat; @@ -618,9 +615,9 @@ NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); m_ptzPosCurrent.wAction = 1; try { String p = String.valueOf((int) ((double) ptz.get("p") * 10)); String t = String.valueOf((int) ((double) ptz.get("t") * 10)); String z = String.valueOf((int) ((double) ptz.get("z") * 10)); String p = String.valueOf((int) (ptz.get("p") * 10)); String t = String.valueOf((int) (ptz.get("t") * 10)); String z = String.valueOf((int) (ptz.get("z") * 10)); m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16)); m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16)); m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16)); @@ -745,8 +742,7 @@ return -1; } else { netDvrPtzLockcfg.read(); int byWorkMode = netDvrPtzLockcfg.byWorkMode; return byWorkMode; return netDvrPtzLockcfg.byWorkMode; } } @@ -871,7 +867,6 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.info("设置透雾失败,请稍后重试" + code); return false; } log.info("设置透雾成功"); return bool; @@ -920,7 +915,6 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.info("设置夜视失败,请稍后重试" + code); return false; } log.info("设置夜视成功"); return bool; @@ -967,7 +961,6 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.info("设置聚焦模式失败,请稍后重试" + code); return false; } log.info("设置聚焦模式成功"); return bool; @@ -1010,7 +1003,7 @@ return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer dwStop; int dwStop; if (enable) { dwStop = 0;//开启 } else { @@ -1020,7 +1013,6 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.info("设置云台加热失败,请稍后重试" + code); return false; } log.info("设置云台加热成功"); return bool; @@ -1064,7 +1056,6 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.info("设置镜头除冰失败,请稍后重试" + code); return false; } log.info("设置镜头除冰成功"); return bool; @@ -1073,7 +1064,7 @@ /** * 截图 返给前端 * * @param cmd * @param cmd 相机命令 */ public String captureJPEGPicture(CameraCmd cmd) { String cameraId = cmd.getCameraId(); @@ -1100,41 +1091,11 @@ boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); log.info("-----------这里开始图片存入内存----------" + is); BASE64Encoder encoder = new BASE64Encoder(); String png_base64 = encoder.encodeBuffer(jpegBuffer);//转换成base64串 png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n log.info("-----------处理完成截图数据----------"); return png_base64; // ByteArrayInputStream in = new ByteArrayInputStream(jpegBuffer.array(), 0, a.getValue()); // OutputStream outputStream = null; // try { // //1、设置response 响应头 //设置页面不缓存,清空buffer // response.reset(); // //字符编码 // response.setCharacterEncoding("UTF-8"); // //二进制传输数据 // response.setContentType("multipart/form-data"); // //设置响应头 // response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpeg", "UTF-8")); // // outputStream = response.getOutputStream(); // // LoginUser loginUser = LoginContext.me().getLoginUser(); // waterMarkUtil.markImageByIO("", in, outputStream, null, "jpeg"); // outputStream.flush(); // } catch (Exception e) { // e.printStackTrace(); // log.error("抓图失败,请稍后重试"); // } finally { // try { // outputStream.close(); // } catch (IOException e) { // log.error("抓图失败,请稍后重试"); // } // } } /** @@ -1264,16 +1225,6 @@ GlobalVariable.previewMap.remove(cameraId); } log.info("录像停止"); //存入minio String BucketName = cmd.getRecordBucketName(); String ObjectName = cmd.getRecordObjectName(); String ContentType = "video/MP4"; FileInputStream stream = new FileInputStream(path); boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType); if (b) { url = MinioUtils.getBucketObjectUrl(BucketName, ObjectName); log.info("上传文件成功!" + MinioClientSingleton.domainUrl + "/" + BucketName + "/" + ObjectName); } } return url; } catch (Exception ex) { @@ -1283,14 +1234,13 @@ } @Override public String recordToMinio(CameraCmd cmd) { public void recordStart(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChannelNum(); String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; return; } Integer userId = GlobalVariable.loginMap.get(cameraId); //强制I帧结构体对象 @@ -1313,7 +1263,6 @@ previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流 previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式 previewinfo.write(); if (enable) { if (GlobalVariable.previewMap.containsKey(cameraId)) { Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); @@ -1323,17 +1272,54 @@ int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); if (lRealHandle == -1) { log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError()); return ""; return; } log.debug("取流成功"); GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); GlobalVariable.previewMap.put(cameraId, lRealHandle); if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) { log.error("保存视频文件到临时文件夹失败 错误码为: " + hCNetSDK.NET_DVR_GetLastError()); return ""; return; } log.debug("录像开始"); } else { } catch (Exception ex) { log.error("开始录像异常" + ex.getMessage()); } } @Override public String recordStopToMinio(CameraCmd cmd) { String url = ""; try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChannelNum(); String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); //region 强制I帧 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 netDvrIFrame.read(); netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置 netDvrIFrame.byStreamType = 0; netDvrIFrame.dwSize = netDvrIFrame.size(); netDvrIFrame.write(); if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) { log.error("强制I帧 错误码为: " + hCNetSDK.NET_DVR_GetLastError()); } //endregion //region 预览参数 NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO(); previewinfo.read(); previewinfo.lChannel = channelNum; previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推 previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。 previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流 previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式 previewinfo.write(); //endregion if (GlobalVariable.previewMap.containsKey(cameraId)) { Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); @@ -1345,21 +1331,57 @@ String ObjectName = cmd.getRecordObjectName(); String ContentType = "video/MP4"; FileInputStream stream = new FileInputStream(path); String simpleUUID = IdUtils.simpleUUID(); String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); String recordName = cameraId + "/" + time + "/" + ObjectName + "_" + simpleUUID + ".mp4"; String recordName = cameraId + "/" + time + "/" + ObjectName + ".mp4"; boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType); if (b) { String url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName; url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName; log.debug("上传文件成功!" + url); } return url; } } return ""; } catch (Exception ex) { log.error("录像异常" + ex.getMessage()); return ""; } } @Override public void recordStopNotToMinio(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChannelNum(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return; } Integer userId = GlobalVariable.loginMap.get(cameraId); //强制I帧结构体对象 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 netDvrIFrame.read(); netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置 netDvrIFrame.byStreamType = 0; netDvrIFrame.dwSize = netDvrIFrame.size(); netDvrIFrame.write(); if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) { log.error("强制I帧 错误码为: " + hCNetSDK.NET_DVR_GetLastError()); } //预览参数 NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO(); previewinfo.read(); previewinfo.lChannel = channelNum; previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推 previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。 previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流 previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式 previewinfo.write(); if (GlobalVariable.previewMap.containsKey(cameraId)) { Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); GlobalVariable.previewMap.remove(cameraId); } log.debug("录像停止"); } catch (Exception ex) { log.error("录像停止异常" + ex.getMessage()); } } } ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java
@@ -18,7 +18,6 @@ /** * 图片水印工具类 * */ public class waterMarkUtil { @@ -31,7 +30,7 @@ // 水印文字字体 private static final Font font = new Font("宋体", Font.BOLD, 30); // 水印文字颜色 private static final Color color = Color.white; private static final Color color = Color.blue; /** * 给图片添加水印文字 @@ -152,15 +151,14 @@ e.printStackTrace(); } } public static void main(String[] args) { String srcImgPath = "G:\\data\\pic\\7aad76110e7c478598da6b82d7446246.jpeg"; String text = "synjones"; // 给图片添加水印文字 //markImage(text, srcImgPath, "G:\\data\\pic\\微信截图水印.png"); // 给图片添加水印文字,水印文字旋转-45 markImage(text, srcImgPath, "G:\\data\\pic\\7aad76110e7c478598da6b82d7446246水印.png", 45); System.out.println("给图片添加水印文字完毕"); } // public static void main(String[] args) { // String srcImgPath = "D:\\testSmile.jpg"; // String text = "JCccc"; // // 给图片添加水印文字 // markImage(text, srcImgPath, "D:\\testSmileWithMark.jpg"); // // 给图片添加水印文字,水印文字旋转-45 // markImage(text, srcImgPath, "D:\\testSmileWithMarkRotate.jpg", -45); // System.out.println("给图片添加水印文字完毕"); // } } ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -6,6 +6,7 @@ import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.mapper.ArdCamerasMapper; @@ -453,8 +454,7 @@ boolean setTargetPosition = hikClientService.guideTargetPosition(cmd); if (setTargetPosition) { /*控制相机巡检成功,开始录像*/ cmd.setEnable(true);//启动录像 hikClientService.recordToMinio(cmd); hikClientService.recordStart(cmd); } else { /*控制失败,当前步骤启动时间置null*/ ardVideoInspectTask.setCurrentStepStartTime(""); @@ -541,11 +541,9 @@ cmd.setCameraId(cameraId); cmd.setChannelNum(channel); cmd.setOperator("sys_patrol_inspect"); cmd.setEnable(false);//停止录像 cmd.setRecordBucketName("record"); cmd.setRecordObjectName("inspect"); cmd.setUploadMinio(true); String url= hikClientService.recordToMinio(cmd); cmd.setRecordObjectName("inspect_"+ IdUtils.fastSimpleUUID()); String url= hikClientService.recordStopToMinio(cmd); /*插入巡检记录*/ ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord(); ardVideoInspectRecord.setStepId(step.getId()); ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
@@ -77,9 +77,7 @@ CameraCmd cmd = new CameraCmd(); cmd.setCameraId(ardVideoInspectTask.getCameraId()); cmd.setChannelNum(ardVideoInspectTask.getChannel()); cmd.setEnable(false);//停止录像 cmd.setUploadMinio(false); hikClientService.recordToMinio(cmd); hikClientService.recordStopNotToMinio(cmd); GlobalVariable.previewMap.remove(cameraId); } /*停止任务*/