From ef0ed9877417b7efb3a6ec72121bee56720f6939 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期六, 01 七月 2023 17:28:04 +0800 Subject: [PATCH] 优化提交 --- ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | 77 ++++++---- ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java | 36 ++-- ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java | 26 +-- ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java | 2 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 222 +++++++++++++++++-------------- ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java | 4 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java | 9 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 10 ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java | 4 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 17 + 10 files changed, 218 insertions(+), 189 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java index fcf5f7e..b90aa40 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java +++ b/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("姝e湪鎺掗槦銆恜riority銆�" + task.getPriority()+"銆恘um銆�" + task.getNum() + "銆恆larmTime銆�" + 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("姝e湪鎺掗槦銆恜riority銆�" + task.getPriority()+"銆恘um銆�" + task.getNum() + "銆恆larmTime銆�" + task.getAlarmTime()); + } + } + @Data + @AllArgsConstructor + static class Obj + { + Integer priority; + Integer num; + String alarmTime; + } } diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java index 659afcc..c3ff35d 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java +++ b/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": diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java b/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java index ae971ad..f8962b2 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java +++ b/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java @@ -9,15 +9,14 @@ /** * 闆疯揪鎶ヨMapper鎺ュ彛 - * + * * @author ard * @date 2023-06-28 */ -public interface ArdAlarmRadarMapper -{ +public interface ArdAlarmRadarMapper { /** * 鏌ヨ闆疯揪鎶ヨ - * + * * @param id 闆疯揪鎶ヨ涓婚敭 * @return 闆疯揪鎶ヨ */ @@ -25,7 +24,7 @@ /** * 鏌ヨ闆疯揪鎶ヨ鍒楄〃 - * + * * @param ardAlarmRadar 闆疯揪鎶ヨ * @return 闆疯揪鎶ヨ闆嗗悎 */ @@ -33,7 +32,7 @@ /** * 鏂板闆疯揪鎶ヨ - * + * * @param ardAlarmRadar 闆疯揪鎶ヨ * @return 缁撴灉 */ @@ -41,7 +40,7 @@ /** * 淇敼闆疯揪鎶ヨ - * + * * @param ardAlarmRadar 闆疯揪鎶ヨ * @return 缁撴灉 */ @@ -49,7 +48,7 @@ /** * 鍒犻櫎闆疯揪鎶ヨ - * + * * @param id 闆疯揪鎶ヨ涓婚敭 * @return 缁撴灉 */ @@ -57,25 +56,26 @@ /** * 鎵归噺鍒犻櫎闆疯揪鎶ヨ - * + * * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 * @return 缁撴灉 */ 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); + 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); + String getCameraByRadar(String radarId); - /** - * 鏌ユ壘5鍒嗛挓鍐呭紩瀵艰繃鐨勮褰� - * */ - public ArdAlarmRadar getArdAlarmRadarWithGuide(ArdAlarmRadar ardAlarmRadar); + /** + * 鏌ユ壘5鍒嗛挓鍐呭紩瀵艰繃鐨勮褰� + */ + public ArdAlarmRadar getArdAlarmRadarWithGuide(ArdAlarmRadar ardAlarmRadar); - public int getArdAlarmRadarWithNotGuide(@Param("ardAlarmRadar")ArdAlarmRadar ardAlarmRadar, @Param("guideTime")Date guideTime); + public int getArdAlarmRadarWithNotGuide(@Param("ardAlarmRadar") ArdAlarmRadar ardAlarmRadar, @Param("guideTime") Date guideTime); + } diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java index 4ed36a0..79aa9f5 100644 --- a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java +++ b/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; diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java index 9f39667..db9981e 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java @@ -39,6 +39,4 @@ String recordBucketName; /*褰曞儚鏂囦欢鍚嶇О*/ String recordObjectName; - /*鏄惁涓婁紶minio*/ - boolean isUploadMinio; } diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java index 3f9325e..2d43e0e 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java @@ -2,13 +2,11 @@ import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; - -import java.io.IOException; import java.util.Map; /** * @ClassName: sdkClinet - * @Description:娴峰悍鎿嶄綔瀹㈡埛绔帴鍙g被 + * @Description: 娴峰悍鎿嶄綔瀹㈡埛绔帴鍙g被 * @Author: Administrator * @Date: 2023骞�01鏈�17鏃� 15:59 * @Version: 1.0 @@ -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); + + //鍋滄褰曞儚-涓嶄笂浼爉inio + void recordStopNotToMinio(CameraCmd cmd); } diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java index 3a4971f..590b551 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java +++ b/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);//杞崲鎴恇ase64涓� 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銆佽缃畆esponse 鍝嶅簲澶� //璁剧疆椤甸潰涓嶇紦瀛�,娓呯┖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,53 +1263,125 @@ 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); - GlobalVariable.previewMap.remove(cameraId); - log.debug("鍋滄褰撳墠褰曞儚"); - } - int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); - if (lRealHandle == -1) { - log.error("鍙栨祦澶辫触" + hCNetSDK.NET_DVR_GetLastError()); - 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 ""; - } - log.debug("褰曞儚寮�濮�"); - } else { - if (GlobalVariable.previewMap.containsKey(cameraId)) { - Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); - hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); - GlobalVariable.previewMap.remove(cameraId); - } - log.debug("褰曞儚鍋滄"); - //瀛樺叆minio - String BucketName = cmd.getRecordBucketName(); - 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"; - boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType); - if (b) { - String url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName; - log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); - return url; - } + if (GlobalVariable.previewMap.containsKey(cameraId)) { + Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); + hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); + GlobalVariable.previewMap.remove(cameraId); + log.debug("鍋滄褰撳墠褰曞儚"); } - return ""; + int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); + if (lRealHandle == -1) { + log.error("鍙栨祦澶辫触" + hCNetSDK.NET_DVR_GetLastError()); + 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; + } + log.debug("褰曞儚寮�濮�"); + } 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;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆 + 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;//鎾斁绐楀彛鐨勫彞鏌勶紝涓篘ULL琛ㄧず涓嶈В鐮佹樉绀恒�� + 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); + GlobalVariable.previewMap.remove(cameraId); + } + log.debug("褰曞儚鍋滄"); + //瀛樺叆minio + String BucketName = cmd.getRecordBucketName(); + String ObjectName = cmd.getRecordObjectName(); + String ContentType = "video/MP4"; + FileInputStream stream = new FileInputStream(path); + String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); + String recordName = cameraId + "/" + time + "/" + ObjectName + ".mp4"; + boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType); + if (b) { + url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName; + log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); + } + return url; } 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;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆 + 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;//鎾斁绐楀彛鐨勫彞鏌勶紝涓篘ULL琛ㄧず涓嶈В鐮佹樉绀恒�� + 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()); + } + } } \ No newline at end of file diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java index bda1c8a..4b5e098 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/imageUtil/waterMarkUtil.java @@ -17,8 +17,7 @@ import java.io.OutputStream; /** - * 鍥剧墖姘村嵃宸ュ叿绫� - * + * 鍥剧墖姘村嵃宸ュ叿绫� */ 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("缁欏浘鐗囨坊鍔犳按鍗版枃瀛楀畬姣�"); -// } - - diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java index e8123e7..4c32163 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java +++ b/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 { /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/ 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()); diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java index b56f6f3..d440ac7 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java +++ b/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); } /*鍋滄浠诲姟*/ -- Gitblit v1.9.3