ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -4,21 +4,18 @@ import javax.servlet.http.HttpServletResponse; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.ruoyi.common.constant.CameraConstants; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.device.camera.service.impl.CameraSdkServiceImpl; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.device.hiksdk.service.impl.HikClientServiceImpl; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inspect.service.IArdVideoInspectTaskService; import com.ruoyi.media.service.IVtduService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -101,6 +98,10 @@ @Log(title = "ç¸æºè®¾å¤", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ArdCameras camera) { if (CameraConstants.NOT_UNIQUE.equals(ardCamerasService.checkCameraIpAndPortUnique(camera))) { return error("æ°å¢ç¸æº'" + camera.getIp()+":"+camera.getPort() + "'失败ï¼ç¸æºå·²åå¨"); } int i = ardCamerasService.insertArdCameras(camera); if (i > 0) { cameraSdkService.logout(camera.getId()); @@ -117,6 +118,10 @@ @Log(title = "ç¸æºè®¾å¤", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArdCameras camera) { if (CameraConstants.NOT_UNIQUE.equals(ardCamerasService.checkCameraIpAndPortUnique(camera))) { return error("ä¿®æ¹ç¸æº'" + camera.getIp()+":"+camera.getPort() + "'失败ï¼ç¸æºå·²åå¨"); } int i = ardCamerasService.updateArdCameras(camera); if (i > 0) { cameraSdkService.logout(camera.getId()); ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
@@ -1,11 +1,10 @@ package com.ruoyi.device.camera.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.device.camera.domain.ArdCameras; import org.apache.ibatis.annotations.Param; /** * ç¸æºè®¾å¤Mapperæ¥å£ @@ -77,4 +76,13 @@ * @return é¨é¨å表 */ public List<ArdCameras> selectArdCamerasByDeptId(Long deptId); /** * æ ¡éªç¸æºæ¯å¦å¯ä¸ * * @param ip ç¸æºip * @param port ç¸æºç«¯å£ * @return ç¸æºä¿¡æ¯ */ public ArdCameras checkCameraIpAndPortUnique(@Param("ip") String ip, @Param("port")Integer port); } ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
@@ -1,6 +1,6 @@ package com.ruoyi.device.camera.service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -97,4 +97,12 @@ * 2023/8/17 13:56:36 */ public List<ArdCameras> getNearCamerasWithPolygon(SchedulingParam param); /** * æ ¡éªç¸æºæ¯å¦å¯ä¸ * * @param camera ç¸æº * @return ç»æ */ public String checkCameraIpAndPortUnique(ArdCameras camera); } ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -4,17 +4,16 @@ import java.util.stream.Collectors; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.CameraConstants; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.mapper.ArdChannelMapper; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IMediaService; import com.ruoyi.media.service.IVtduService; import com.ruoyi.scheduling.domian.SchedulingParam; import com.ruoyi.utils.gis.GisUtil; @@ -51,8 +50,6 @@ private ArdChannelMapper ardChannelMapper; @Resource private IVtduService vtduService; @Resource private IMediaService mediaService; @PostConstruct @@ -425,4 +422,21 @@ return null; } /** * æ ¡éªç¸æºæ¯å¦å¯ä¸ * * @param camera ç¸æº * @return ç»æ */ @Override public String checkCameraIpAndPortUnique(ArdCameras camera) { String id = camera.getId(); String ip = camera.getIp(); Integer port = camera.getPort(); ArdCameras info = ardCamerasMapper.checkCameraIpAndPortUnique(ip, port); if (StringUtils.isNotNull(info) && !info.getId().equals(id)) { return CameraConstants.NOT_UNIQUE; } return CameraConstants.UNIQUE; } } ard-work/src/main/java/com/ruoyi/media/controller/VtduController.java
@@ -9,6 +9,7 @@ import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.media.service.IMediaService; import com.ruoyi.media.service.impl.MediaServiceImpl; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -80,11 +81,13 @@ CameraCmd cmd = new CameraCmd(cameraId, chanNo); Map<String, Object> videoCompressionCfg = cameraSdkService.getVideoCompressionCfg(cmd); String videoEncType = (String) videoCompressionCfg.get("videoEncType"); if (videoEncType != null) { if (!videoEncType.equals("æ åh264")) { vtdu.setIsCode("1"); } else { vtdu.setIsCode("0"); } } //æµåªä½ä¸å卿°å¢ï¼å卿´æ° if (!mediaService.checkNameExist(name)) { mediaService.addPath(name, vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
@@ -35,7 +35,7 @@ @Slf4j(topic = "vtdu") @Order(2) public class MediaServiceImpl implements IMediaService, ApplicationRunner { private static List<String> mediaNameList = new ArrayList<>(); public static List<String> mediaNameList = new ArrayList<>(); @Resource MediaClient mediaClient; @@ -90,6 +90,7 @@ if (!checkNameExist(name)) { mediaClient.addPath(name, conf); mediaNameList.add(name); } map.put("rtspUrl", rtspUrl); @@ -184,6 +185,7 @@ try { if (checkNameExist(name)) { mediaClient.removePath(name); mediaNameList.remove(name); } } catch (ForestRuntimeException ex) { log.error("ç§»é¤æµåªä½å¼å¸¸ï¼" + ex.getMessage()); @@ -473,20 +475,19 @@ */ @Override public List<String> getNameList() { List<String> nameList = new ArrayList<>(); try { String paths = mediaClient.paths(); JsonsRoot jsonsRoot = JSONObject.parseObject(paths, JsonsRoot.class); List<Items> items = jsonsRoot.getItems(); for (Items item : items) { nameList.add(item.getName()); mediaNameList.add(item.getName()); } } catch (ForestNetworkException ex) { log.error("è·åæµåªä½nameå表å¼å¸¸ï¼" + ex.getMessage()); } catch (ForestRuntimeException ex) { log.error("è·åæµåªä½nameå表å¼å¸¸ï¼" + ex.getMessage()); } return nameList; return mediaNameList; } /** ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -275,4 +275,7 @@ from ard_cameras where dept_id = #{deptId} </select> <select id="checkCameraIpAndPortUnique" resultMap="ArdCamerasResult"> select * from ard_cameras where ip=#{ip} and port=#{port} limit 1 </select> </mapper> ruoyi-common/src/main/java/com/ruoyi/common/constant/CameraConstants.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.common.constant; /** * ç¸æºå¸¸éä¿¡æ¯ * * @author ruoyi */ public class CameraConstants { /** æ ¡éªè¿åç»æç */ public final static String UNIQUE = "0"; public final static String NOT_UNIQUE = "1"; }