|  |  |  | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
|---|
|  |  |  | import com.github.xiaoymin.knife4j.annotations.DynamicParameter; | 
|---|
|  |  |  | import com.github.xiaoymin.knife4j.annotations.DynamicParameters; | 
|---|
|  |  |  | import com.ruoyi.alarm.config.domain.ArdAlarmTypeConfig; | 
|---|
|  |  |  | import com.ruoyi.alarm.config.service.IArdAlarmTypeConfigService; | 
|---|
|  |  |  | import io.swagger.annotations.Api; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Log(title = "批量配置报警类型", businessType = BusinessType.INSERT) | 
|---|
|  |  |  | @PostMapping("/batchConfig") | 
|---|
|  |  |  | @ApiOperation("批量配置报警类型") | 
|---|
|  |  |  | @ApiOperationSupport(includeParameters = {"map.userId", "map.commands"}) | 
|---|
|  |  |  | public AjaxResult addBatch(@RequestBody Map<String,Object> map) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return AjaxResult.success(ardAlarmTypeConfigService.insertArdAlarmTypeConfig(map)); | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public int insertArdAlarmTypeConfig(Map<String,Object> configInfo) { | 
|---|
|  |  |  | String userId =(String) configInfo.get("userId"); | 
|---|
|  |  |  | if(userId==null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ardAlarmTypeConfigMapper.deleteArdAlarmTypeConfigByCurrentUserId(userId); | 
|---|
|  |  |  | List<Integer> commands=(List<Integer>) configInfo.get("commands"); | 
|---|
|  |  |  | if(commands==null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(commands.size()==0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.ruoyi.common.annotation.Anonymous; | 
|---|
|  |  |  | import com.ruoyi.common.core.domain.AjaxResult; | 
|---|
|  |  |  | import io.swagger.annotations.Api; | 
|---|
|  |  |  | import io.swagger.annotations.ApiImplicitParam; | 
|---|
|  |  |  | import io.swagger.annotations.ApiImplicitParams; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import org.springframework.beans.propertyeditors.CustomDateEditor; | 
|---|
|  |  |  | import org.springframework.web.bind.WebDataBinder; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | Map<String, Integer> stringIntegerMap = globalAlarmService.selectAlarmLogsCount(); | 
|---|
|  |  |  | return AjaxResult.success(stringIntegerMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @GetMapping("/List") | 
|---|
|  |  |  | @ApiOperation(value = "历史报警报警聚合接口",notes = "通过command和时间查询历史数据") | 
|---|
|  |  |  | @ApiOperationSupport(includeParameters = {"command","beginTime","endTime"},order = 4) | 
|---|
|  |  |  | @ApiImplicitParams({ | 
|---|
|  |  |  | @ApiImplicitParam(name="command",value="报警标识",dataType="integer",paramType="query",example="1001",required=true), | 
|---|
|  |  |  | @ApiImplicitParam(name="beginTime",value="开始时间",dataType="string",paramType="query",example="2023-06-15 00:00:00",required=true), | 
|---|
|  |  |  | @ApiImplicitParam(name="endTime",value="结束时间",dataType="string",paramType="query",example="2023-06-15 14:18:23",required=true), | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | public AjaxResult selectAlarmList(Integer command, String beginTime,String endTime) { | 
|---|
|  |  |  | Object alarmList = globalAlarmService.selectAlarmList(command,beginTime,endTime); | 
|---|
|  |  |  | return AjaxResult.success(alarmList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @ApiModelProperty(value = "报警类型", name = "command", notes = "用来区分报警类型的标记", required = true) | 
|---|
|  |  |  | Integer command; | 
|---|
|  |  |  | String id; | 
|---|
|  |  |  | Date beginTime; | 
|---|
|  |  |  | Date endTime; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition; | 
|---|
|  |  |  | import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | Object updateAlarmViewTime(GlobalAlarmCondition condition); | 
|---|
|  |  |  | public void receiveAlarm(String topic,String message); | 
|---|
|  |  |  | public Map<String,Integer> selectAlarmLogsCount(); | 
|---|
|  |  |  | Object selectAlarmList(Integer command, String beginTime, String endTime); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | private IHikClientService hikClientService; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private RedisCache redisCache; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @描述 按条件查询报警 | 
|---|
|  |  |  | * @参数 [condition] | 
|---|
|  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @描述 按条件更新查看时间 | 
|---|
|  |  |  | * @参数 [condition] | 
|---|
|  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @描述 异步处理接收的报警 | 
|---|
|  |  |  | * @参数 [topic, message] | 
|---|
|  |  |  | 
|---|
|  |  |  | double distance = GisTool.getDistance(cmd.getTargetPosition(), camPosition); | 
|---|
|  |  |  | if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) { | 
|---|
|  |  |  | distanceMap.put(camera.getId(), distance); | 
|---|
|  |  |  | if(StringUtils.isNull(camera.getCamAlarmGuideEnable())) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isNull(camera.getCamAlarmGuideEnable())) { | 
|---|
|  |  |  | camera.setCamAlarmGuideEnable(0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | guideMap.put(camera.getId(),camera.getCamAlarmGuideEnable()); | 
|---|
|  |  |  | 
|---|
|  |  |  | //获取距离字典中最近的一个相机ID | 
|---|
|  |  |  | String minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap); | 
|---|
|  |  |  | log.debug("查找到最近光电:"+minDistanceCameraId+",尝试引导"); | 
|---|
|  |  |  | if(guideMap.get(minDistanceCameraId).equals(0)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (guideMap.get(minDistanceCameraId).equals(0)) { | 
|---|
|  |  |  | log.debug("该光电未开启报警引导"); | 
|---|
|  |  |  | return ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | countMap.put("1014 ", count1014); | 
|---|
|  |  |  | return countMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Object selectAlarmList(Integer command, String beginTime, String endTime) { | 
|---|
|  |  |  | Map<String, Object> params = new HashMap<>(); | 
|---|
|  |  |  | params.put("beginTime", beginTime); | 
|---|
|  |  |  | params.put("endTime", endTime); | 
|---|
|  |  |  | switch (command) { | 
|---|
|  |  |  | case 1001: | 
|---|
|  |  |  | ArdAlarmStealelec aas = new ArdAlarmStealelec(); | 
|---|
|  |  |  | aas.setParams(params); | 
|---|
|  |  |  | List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas); | 
|---|
|  |  |  | return ardAlarmStealelecs; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | case 1014: | 
|---|
|  |  |  | ArdAlarmTube aat = new ArdAlarmTube(); | 
|---|
|  |  |  | aat.setParams(params); | 
|---|
|  |  |  | List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectArdAlarmTubeList(aat); | 
|---|
|  |  |  | return ardAlarmTubes; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public interface ArdAlarmStealelecMapper{ | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查询盗电报警列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param ardAlarmStealelec 盗电报警 | 
|---|
|  |  |  | * @return 盗电报警集合 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public List<ArdAlarmStealelec> selectArdAlarmStealelecList(ArdAlarmStealelec ardAlarmStealelec); | 
|---|
|  |  |  | int insertArdAlarmStealelec(ArdAlarmStealelec record); | 
|---|
|  |  |  | ArdAlarmStealelec selectByPrimaryKey(String id); | 
|---|
|  |  |  | List<ArdAlarmStealelec> selectRealByCondition(@Param("refreshTime")String refreshTime,@Param("deptId")Long deptId); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube; | 
|---|
|  |  |  | import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:list')") | 
|---|
|  |  |  | @GetMapping("/list") | 
|---|
|  |  |  | @ApiOperation("查询管线泄露报警列表") | 
|---|
|  |  |  | public TableDataInfo list(ArdAlarmTube ardAlarmTube) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | startPage(); | 
|---|
|  |  |  | 
|---|
|  |  |  | <result column="dept_id" property="deptId"/> | 
|---|
|  |  |  | </resultMap> | 
|---|
|  |  |  | <sql id="Base_Column_List"> | 
|---|
|  |  |  | id, name, describe, catalog_text, description, start_time, end_time,view_time,longitude,latitude,altitude,create_by,create_time,user_id,dept_id | 
|---|
|  |  |  | id | 
|---|
|  |  |  | , name, describe, catalog_text, description, start_time, end_time,view_time,longitude,latitude,altitude,create_by,create_time,user_id,dept_id | 
|---|
|  |  |  | </sql> | 
|---|
|  |  |  | <select id="selectArdAlarmStealelecList" parameterType="ArdAlarmStealelec" resultMap="BaseResultMap"> | 
|---|
|  |  |  | select | 
|---|
|  |  |  | <include refid="Base_Column_List"/> | 
|---|
|  |  |  | from ard_alarm_stealelec | 
|---|
|  |  |  | <where> | 
|---|
|  |  |  | <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> | 
|---|
|  |  |  | AND start_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> | 
|---|
|  |  |  | AND start_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | </where> | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> | 
|---|
|  |  |  | select | 
|---|
|  |  |  | <include refid="Base_Column_List"/> | 
|---|
|  |  |  | 
|---|
|  |  |  | ORDER BY aas.start_time DESC LIMIT 50 | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | <select id="selectCountByStartTime" resultType="Integer"> | 
|---|
|  |  |  | select count(DISTINCT aas."describe") from ard_alarm_stealelec aas where aas.start_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE ) | 
|---|
|  |  |  | select count(DISTINCT aas."describe") | 
|---|
|  |  |  | from ard_alarm_stealelec aas | 
|---|
|  |  |  | where aas.start_time >= (CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE) | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | <update id="updateViewTimeByDescribe" parameterType="String"> | 
|---|
|  |  |  | update ard_alarm_stealelec | 
|---|
|  |  |  | 
|---|
|  |  |  | </resultMap> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <sql id="selectArdAlarmTubeVo"> | 
|---|
|  |  |  | select id, host, tube_id, tube_name, tube_type, pipe_diameter, color, position, type, alarm_type, alarm_time, watcher, create_time, longitude, latitude, altitude, record_url, view_time from ard_alarm_tube | 
|---|
|  |  |  | select id, | 
|---|
|  |  |  | host, | 
|---|
|  |  |  | tube_id, | 
|---|
|  |  |  | tube_name, | 
|---|
|  |  |  | tube_type, | 
|---|
|  |  |  | pipe_diameter, | 
|---|
|  |  |  | color, | 
|---|
|  |  |  | position, | 
|---|
|  |  |  | type, | 
|---|
|  |  |  | alarm_type, | 
|---|
|  |  |  | alarm_time, | 
|---|
|  |  |  | watcher, | 
|---|
|  |  |  | create_time, | 
|---|
|  |  |  | longitude, | 
|---|
|  |  |  | latitude, | 
|---|
|  |  |  | altitude, | 
|---|
|  |  |  | record_url, | 
|---|
|  |  |  | view_time | 
|---|
|  |  |  | from ard_alarm_tube | 
|---|
|  |  |  | </sql> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <select id="selectArdAlarmTubeList" parameterType="ArdAlarmTube" resultMap="ArdAlarmTubeResult"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <if test="position != null  and position != ''"> and position = #{position}</if> | 
|---|
|  |  |  | <if test="type != null  and type != ''"> and type = #{type}</if> | 
|---|
|  |  |  | <if test="alarmType != null  and alarmType != ''"> and alarm_type = #{alarmType}</if> | 
|---|
|  |  |  | <if test="alarmTime != null "> and alarm_time = #{alarmTime}</if> | 
|---|
|  |  |  | <!--<if test="alarmTime != null "> and alarm_time = #{alarmTime}</if>--> | 
|---|
|  |  |  | <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> | 
|---|
|  |  |  | AND alarm_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> | 
|---|
|  |  |  | AND alarm_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | <if test="watcher != null  and watcher != ''"> and watcher = #{watcher}</if> | 
|---|
|  |  |  | <if test="longitude != null  and longitude != ''"> and longitude = #{longitude}</if> | 
|---|
|  |  |  | <if test="latitude != null  and latitude != ''"> and latitude = #{latitude}</if> | 
|---|
|  |  |  | 
|---|
|  |  |  | </update> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <delete id="deleteArdAlarmTubeById" parameterType="String"> | 
|---|
|  |  |  | delete from ard_alarm_tube where id = #{id} | 
|---|
|  |  |  | delete | 
|---|
|  |  |  | from ard_alarm_tube | 
|---|
|  |  |  | where id = #{id} | 
|---|
|  |  |  | </delete> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <delete id="deleteArdAlarmTubeByIds" parameterType="String"> | 
|---|
|  |  |  | 
|---|
|  |  |  | aat.latitude, | 
|---|
|  |  |  | aat.altitude, | 
|---|
|  |  |  | aat.record_url, | 
|---|
|  |  |  | ROW_NUMBER() OVER ( PARTITION BY aat.tube_id ORDER BY aat.alarm_time DESC ) AS rn, | 
|---|
|  |  |  | COUNT(CASE WHEN aat.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aat.tube_id ) AS COUNT, | 
|---|
|  |  |  | ROW_NUMBER() OVER ( PARTITION BY aat.tube_id ORDER BY aat.alarm_time DESC ) AS rn, COUNT(CASE WHEN aat.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aat.tube_id ) AS COUNT, | 
|---|
|  |  |  | COUNT ( aat.alarm_time ) OVER ( PARTITION BY tube_id ) AS total | 
|---|
|  |  |  | FROM | 
|---|
|  |  |  | ard_alarm_tube aat | 
|---|
|  |  |  | 
|---|
|  |  |  | @JsonInclude(JsonInclude.Include.NON_EMPTY) | 
|---|
|  |  |  | @ApiModelProperty(value = "动态参数", name = "params", notes = "根据不同的查询字段自由配置参数") | 
|---|
|  |  |  | private Map<String, Object> params; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ApiModelProperty(value = "页码", name = "pageNum", notes = "页码", required = true) | 
|---|
|  |  |  | private Integer pageNum; | 
|---|
|  |  |  | @ApiModelProperty(value = "页大小", name = "pageSize", notes = "页大小", required = true) | 
|---|