Merge remote-tracking branch 'origin/dev' into dev
| | |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.ruoyi.utils.tube.GeoPoint; |
| | | import com.ruoyi.utils.tube.TubeTools; |
| | | import com.ruoyi.utils.websocket.util.WebSocketUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | String alarmpointName = ardAlarmRadar.getName();//兴趣点名称 |
| | | ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName); |
| | | if (well == null) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("80000", alarmpointName); |
| | | WebSocketUtils.sendMessageAll(map); |
| | | String filePath = ARDConfig.getDownloadPath() + "noExistWell.txt"; |
| | | writeStringToFile(alarmpointName, filePath); |
| | | continue; |
| | |
| | | @ApiOperation("获取权限及下属权限下的相机")
|
| | | public AjaxResult getCamerasByDeptId() {
|
| | | Long deptId = SecurityUtils.getDeptId();
|
| | | List<Map<String,Object>> camerasList = ardCamerasService.getCamerasByDeptId(deptId);
|
| | | String userId = SecurityUtils.getUserId();
|
| | | List<Map<String,Object>> camerasList = ardCamerasService.getCamerasByDeptId(deptId,userId);
|
| | | return AjaxResult.success(camerasList);
|
| | | }
|
| | |
|
| | |
| | | */ |
| | | public ArdCameras checkCameraIpAndPortUnique(@Param("ip") String ip, @Param("port")Integer port); |
| | | |
| | | public List<Map<String, Object>> getCamerasByDeptId(Long deptId); |
| | | public List<Map<String, Object>> getCamerasByDeptId(@Param("deptId")Long deptId,@Param("userId")String userId); |
| | | |
| | | public Boolean getCameraOperationByCameraId(@Param("id") String id, @Param("userId") String userId); |
| | | |
| | |
| | | */ |
| | | public String checkCameraIpAndPortUnique(ArdCameras camera); |
| | | |
| | | public List<Map<String,Object>> getCamerasByDeptId(Long deptId); |
| | | public List<Map<String,Object>> getCamerasByDeptId(Long deptId,String userId); |
| | | |
| | | public Boolean getCameraOperationByCameraId(String id,String userId); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getCamerasByDeptId(Long deptId) { |
| | | List<Map<String, Object>> result = ardCamerasMapper.getCamerasByDeptId(deptId); |
| | | public List<Map<String, Object>> getCamerasByDeptId(Long deptId,String userId) { |
| | | List<Map<String, Object>> result = ardCamerasMapper.getCamerasByDeptId(deptId,userId); |
| | | return result; |
| | | } |
| | | |
| | |
| | | public int updateArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask) {
|
| | | ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername());
|
| | | ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate());
|
| | | // ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
|
| | | ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
|
| | | insertArdVideoInspectTaskStep(ardVideoInspectTask);
|
| | | return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
|
| | | }
|
| | |
| | | }
|
| | | if (StringUtils.isNotNull(ardVideoInspectTaskStepList)) {
|
| | | for (ArdVideoInspectTaskStep ardVideoInspectTaskStep : ardVideoInspectTaskStepList) {
|
| | | if (ardVideoInspectTaskStep.getId() == null) {
|
| | | //新的步骤,添加
|
| | | ardVideoInspectTaskStep.setId(IdUtils.simpleUUID());
|
| | | ardVideoInspectTaskStepMapper.insertArdVideoInspectTaskStep(ardVideoInspectTaskStep);
|
| | | } else {
|
| | | //已有步骤,更新
|
| | | ardVideoInspectTaskStepMapper.updateArdVideoInspectTaskStep(ardVideoInspectTaskStep);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | |
| | | @Value("${mediamtx.host}") |
| | | String mediamtxHost; |
| | | |
| | | @Override |
| | | public void run(ApplicationArguments args) throws Exception { |
| | | mediaNameList = getNameList(); |
| | | if(mediaNameList.size()>0) |
| | | { |
| | | if (mediaNameList.size() > 0) { |
| | | removePath(mediaNameList.toArray(new String[0])); |
| | | mediaNameList.clear(); |
| | | } |
| | |
| | | //默认软解码 |
| | | String cmd = "ffmpeg -rtsp_transport tcp -i " + sourceUrl + " -vcodec libx264 -preset:v ultrafast -r 25 -keyint_min 25 -g 60 -sc_threshold 0 -threads 6 -b:v 2048k -acodec opus -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH"; |
| | | if (mode.equals("0")) {//硬解码 |
| | | cmd = rootPath+"ffmpeg -hwaccel cuvid -c:v hevc_cuvid -rtsp_transport tcp -i " + sourceUrl + " -c:v h264_nvenc -r 25 -g 60 -sc_threshold 0 -threads 6 -b:v 2048k -bf 0 -acodec opus -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH"; |
| | | cmd = rootPath + "ffmpeg -hwaccel cuvid -c:v hevc_cuvid -rtsp_transport tcp -i " + sourceUrl + " -c:v h264_nvenc -r 25 -g 60 -sc_threshold 0 -threads 6 -b:v 2048k -bf 0 -acodec opus -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH"; |
| | | } |
| | | conf.setRunOnDemand(cmd); |
| | | conf.setRunOnDemandRestart(true); |
| | |
| | | conf.setSourceProtocol("tcp"); |
| | | |
| | | if (!checkNameExist(name)) { |
| | | mediaClient.addPath(name, conf); |
| | | mediaNameList.add(name); |
| | | mediaClient.addPath(name, conf); |
| | | mediaNameList.add(name); |
| | | } |
| | | |
| | | map.put("rtspUrl", rtspUrl); |
| | |
| | | |
| | | @Override |
| | | public void removePath(String[] names) { |
| | | for (String name : names) { |
| | | if (checkNameExist(name)) { |
| | | mediaClient.removePath(name); |
| | | log.info("删除成功"); |
| | | try { |
| | | for (String name : names) { |
| | | if (checkNameExist(name)) { |
| | | mediaClient.removePath(name); |
| | | } |
| | | } |
| | | } catch (Exception ex) { |
| | | log.error("批量移除流媒体异常:" + ex.getMessage()); |
| | | } |
| | | } |
| | | |
| | |
| | | NET_DVR_NOINIT(3, "SDK未初始化"), |
| | | NET_DVR_NETWORK_FAIL_CONNECT(7, "连接设备失败。设备不在线或网络原因引起的连接超时等"), |
| | | NET_DVR_NETWORK_RECV_TIMEOUT(10, "从设备接收数据超时"), |
| | | NET_DVR_NETWORK_ERRORDATA(11, "传送的数据有误。发送给设备或者从设备接收到的数据错误,如远程参数配置时输入设备不支持的值。"); |
| | | NET_DVR_NETWORK_ERRORDATA(11, "传送的数据有误。发送给设备或者从设备接收到的数据错误,如远程参数配置时输入设备不支持的值"), |
| | | NET_DVR_DVROPRATEFAILED(29, "设备操作失败"); |
| | | /** |
| | | * 枚举码 |
| | | */ |
| | |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.alarm.radar.mapper.ArdAlarmRadarPumpMapper"> |
| | | |
| | | |
| | | <resultMap type="ArdAlarmRadarPump" id="ArdAlarmRadarPumpResult"> |
| | | <result property="id" column="id" /> |
| | | <result property="name" column="name" /> |
| | |
| | | </resultMap> |
| | | |
| | | <sql id="selectArdAlarmRadarPumpVo"> |
| | | select id, name, target_id, alarm_type, alarm_time, longitude, latitude, record_url1, view_time, create_by, create_time, user_id, dept_id, guide_time from ard_alarm_radar_pump |
| | | select id, name, target_id, alarm_type, alarm_time, longitude, latitude, record_url, view_time, create_by, create_time, user_id, dept_id, guide_time from ard_alarm_radar_pump |
| | | </sql> |
| | | |
| | | <select id="selectArdAlarmRadarPumpList" parameterType="ArdAlarmRadarPump" resultMap="ArdAlarmRadarPumpResult"> |
| | | <include refid="selectArdAlarmRadarPumpVo"/> |
| | | <where> |
| | | <where> |
| | | <if test="name != null and name != ''"> and name like '%'||#{name}||'%'</if> |
| | | <if test="targetId != null and targetId != ''"> and target_id = #{targetId}</if> |
| | | <if test="alarmType != null and alarmType != ''"> and alarm_type = #{alarmType}</if> |
| | |
| | | </where> |
| | | order by alarm_time desc |
| | | </select> |
| | | |
| | | |
| | | <select id="selectArdAlarmRadarPumpById" parameterType="String" resultMap="ArdAlarmRadarPumpResult"> |
| | | <include refid="selectArdAlarmRadarPumpVo"/> |
| | | where id = #{id} |
| | | </select> |
| | | |
| | | |
| | | <insert id="insertArdAlarmRadarPump" parameterType="ArdAlarmRadarPump"> |
| | | insert into ard_alarm_radar_pump |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | |
| | | </delete> |
| | | |
| | | <delete id="deleteArdAlarmRadarPumpByIds" parameterType="String"> |
| | | delete from ard_alarm_radar_pump where id in |
| | | delete from ard_alarm_radar_pump where id in |
| | | <foreach item="id" collection="array" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | |
| | | from ard_alarm_radar_pump |
| | | where alarm_time >= #{start} and alarm_time <= #{end} group by date order by date |
| | | </select> |
| | | </mapper> |
| | | </mapper> |
| | |
| | | where ip = #{ip}
|
| | | and port = #{port} limit 1
|
| | | </select>
|
| | | <select id="getCamerasByDeptId" resultType="java.util.Map" parameterType="java.lang.Long">
|
| | | with recursive rsd as (
|
| | | select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
|
| | | ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
|
| | | case sdd0.dict_label
|
| | | when '海康' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
|
| | | when '大华' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&subtype=1')
|
| | | end as rtsp
|
| | | from sys_dept sd
|
| | | inner join ard_cameras ac on sd.dept_id = ac.dept_id
|
| | | inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
|
| | | inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
|
| | | inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
|
| | | inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
|
| | | where sd.dept_id = #{deptId}
|
| | | and sdt.dict_type = 'camera_type' and (sdd.dict_label = '小光电' or sdd.dict_label = '大光电')
|
| | | and sdt0.dict_type = 'factory'
|
| | | union
|
| | | select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
|
| | | ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
|
| | | case sdd0.dict_label
|
| | | when '海康' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
|
| | | when '大华' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&subtype=1')
|
| | | end as rtsp
|
| | | from sys_dept csd
|
| | | inner join rsd on rsd."deptId" = csd.parent_id
|
| | | inner join ard_cameras ac on csd.dept_id = ac.dept_id
|
| | | inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
|
| | | inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
|
| | | inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
|
| | | inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
|
| | | and sdt.dict_type = 'camera_type' and (sdd.dict_label = '小光电' or sdd.dict_label = '大光电')
|
| | | and sdt0.dict_type = 'factory'
|
| | | )
|
| | | select distinct * from rsd order by "dictLabel"
|
| | | <select id="getCamerasByDeptId" resultType="java.util.Map" >
|
| | | select distinct * from (
|
| | | with recursive rsd as (
|
| | | select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
|
| | | ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
|
| | | case sdd0.dict_label
|
| | | when '海康' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
|
| | | when '大华' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&subtype=1')
|
| | | end as rtsp
|
| | | from sys_dept sd
|
| | | inner join ard_cameras ac on sd.dept_id = ac.dept_id
|
| | | inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
|
| | | inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
|
| | | inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
|
| | | inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
|
| | | where sd.dept_id = #{deptId}
|
| | | and sdt.dict_type = 'camera_type' and (sdd.dict_label = '小光电' or sdd.dict_label = '大光电')
|
| | | and sdt0.dict_type = 'factory'
|
| | | union
|
| | | select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
|
| | | ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
|
| | | case sdd0.dict_label
|
| | | when '海康' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
|
| | | when '大华' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&subtype=1')
|
| | | end as rtsp
|
| | | from sys_dept csd
|
| | | inner join rsd on rsd."deptId" = csd.parent_id
|
| | | inner join ard_cameras ac on csd.dept_id = ac.dept_id
|
| | | inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
|
| | | inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
|
| | | inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
|
| | | inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
|
| | | and sdt.dict_type = 'camera_type' and (sdd.dict_label = '小光电' or sdd.dict_label = '大光电')
|
| | | and sdt0.dict_type = 'factory')
|
| | | select * from rsd
|
| | | union
|
| | | select ac.id,ac.name,ac.ip,ac.port,ac.username,ac.password,ac.longitude,ac.latitude,ac.altitude,ac.channel,ac.dept_id as "deptId",
|
| | | ac.gdtype,ac.state,sdd.dict_label as "dictLabel",sdd0.dict_label as factory,
|
| | | case sdd0.dict_label
|
| | | when '海康' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/h264/ch1/main/av_stream')
|
| | | when '大华' then concat('rtsp://',ac.username,':',ac.password,'@',ac.ip,':',ac.rtsp_port,'/cam/realmonitor?channel=1&subtype=1')
|
| | | end as rtsp from sys_user_role sur
|
| | | inner join sys_role_dept srd on sur.role_id = srd.role_id
|
| | | inner join ard_cameras ac on srd.dept_id = ac.dept_id
|
| | | inner join sys_dict_data sdd on ac.gdtype = sdd.dict_value
|
| | | inner join sys_dict_type sdt on sdd.dict_type = sdt.dict_type
|
| | | inner join sys_dict_data sdd0 on ac.factory = sdd0.dict_value
|
| | | inner join sys_dict_type sdt0 on sdd0.dict_type = sdt0.dict_type
|
| | | where sur.user_id = #{userId} and sdt.dict_type = 'camera_type' and (sdd.dict_label = '小光电' or sdd.dict_label = '大光电') and sdt0.dict_type = 'factory'
|
| | | )t order by "dictLabel"
|
| | | </select>
|
| | | <select id="getCameraOperationByCameraId" resultType="java.lang.Boolean" parameterType="java.lang.String">
|
| | | select
|