yang_shj
12 months ago
7 changed files with 202 additions and 5 deletions
@ -0,0 +1,40 @@ |
|||||||
|
package com.hnac.hzims.operational.main.constant; |
||||||
|
|
||||||
|
import lombok.Getter; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
* @version 4.0.0 |
||||||
|
* @create 2023-11-07-14:31 |
||||||
|
*/ |
||||||
|
public interface VideoEnumConstants { |
||||||
|
|
||||||
|
@Getter |
||||||
|
enum SoeKindEnum{ |
||||||
|
/** |
||||||
|
* 视频告警类型 |
||||||
|
*/ |
||||||
|
MOTION_DETECTION("131331","移动侦测"), |
||||||
|
REGIONAL_INTRUSION("131588","区域入侵"), |
||||||
|
CROSS_BORDER_DETECTION("131585","越界侦测"), |
||||||
|
SMOKE_FIRE_DETECTION("192514","烟火检测"), |
||||||
|
OTHER_FLOATING_OBJECTS("42200047146001","其他漂浮物"), |
||||||
|
PLANT_FLOATING_OBJECTS("42200047146000","植物类漂浮物"), |
||||||
|
PLASTIC_FLOATING_OBJECTS("42200047146002","塑料类漂浮物"); |
||||||
|
private final String instance; |
||||||
|
private final String name; |
||||||
|
SoeKindEnum(String instance,String name){ |
||||||
|
this.instance = instance; |
||||||
|
this.name = name; |
||||||
|
} |
||||||
|
public static String getValueByKey(String key) { |
||||||
|
for (SoeKindEnum kind : SoeKindEnum.values()) { |
||||||
|
if (kind.instance.equals(key)) { |
||||||
|
return kind.getName(); |
||||||
|
} |
||||||
|
} |
||||||
|
throw new IllegalArgumentException("Invalid key: " + key); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
package com.hnac.hzims.operational.main.vo; |
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class VideoAlarmVO { |
||||||
|
|
||||||
|
@ApiModelProperty("设备编码") |
||||||
|
private String deviceCode; |
||||||
|
|
||||||
|
@ApiModelProperty("设备名称") |
||||||
|
private String deviceName; |
||||||
|
|
||||||
|
@ApiModelProperty("开始时间") |
||||||
|
private String startTime; |
||||||
|
|
||||||
|
@ApiModelProperty("结束时间") |
||||||
|
private String endTime; |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
package com.hnac.hzims.operational.main.controller; |
||||||
|
|
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.operational.main.service.AiAlarmService; |
||||||
|
import com.hnac.hzims.operational.main.vo.VideoAlarmVO; |
||||||
|
import com.hnac.hzinfo.datasearch.soe.vo.DeviceSoeVO; |
||||||
|
import com.hnac.hzinfo.sdk.core.response.HzPage; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.log.annotation.ApiLog; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/ai") |
||||||
|
@Api(value = "ai视频告警", tags = "ai视频告警") |
||||||
|
@AllArgsConstructor |
||||||
|
public class AiAlarmController extends BladeController { |
||||||
|
|
||||||
|
private final AiAlarmService aiAlarmService; |
||||||
|
|
||||||
|
@ApiLog |
||||||
|
@GetMapping("/video/alarm_page") |
||||||
|
@ApiOperationSupport(order = 15) |
||||||
|
@ApiOperation(value = "视频告警数据查询接口", notes = "station") |
||||||
|
public R<HzPage<DeviceSoeVO>> alarmPage(VideoAlarmVO videoAlarm, Query query) { |
||||||
|
return R.data(aiAlarmService.alarmPage(videoAlarm, Condition.getPage(query))); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.hnac.hzims.operational.main.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.hnac.hzims.operational.main.vo.VideoAlarmVO; |
||||||
|
import com.hnac.hzinfo.datasearch.soe.vo.DeviceSoeVO; |
||||||
|
import com.hnac.hzinfo.sdk.core.response.HzPage; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
public interface AiAlarmService { |
||||||
|
|
||||||
|
HzPage<DeviceSoeVO> alarmPage(VideoAlarmVO videoAlarm, IPage<DeviceSoeVO> page); |
||||||
|
} |
@ -0,0 +1,82 @@ |
|||||||
|
package com.hnac.hzims.operational.main.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.hnac.hzims.operational.main.constant.VideoEnumConstants; |
||||||
|
import com.hnac.hzims.operational.main.service.AiAlarmService; |
||||||
|
import com.hnac.hzims.operational.main.vo.VideoAlarmVO; |
||||||
|
import com.hnac.hzinfo.datasearch.soe.ISoeClient; |
||||||
|
import com.hnac.hzinfo.datasearch.soe.vo.DeviceSoeVO; |
||||||
|
import com.hnac.hzinfo.sdk.core.response.HzPage; |
||||||
|
import com.hnac.hzinfo.sdk.core.response.Result; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.springblade.core.tool.utils.CollectionUtil; |
||||||
|
import org.springblade.core.tool.utils.DateUtil; |
||||||
|
import org.springblade.core.tool.utils.StringUtil; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.Calendar; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Service |
||||||
|
public class AiAlarmServiceImpl implements AiAlarmService { |
||||||
|
|
||||||
|
private final ISoeClient alarmClient; |
||||||
|
|
||||||
|
/** |
||||||
|
* 设备告警列表查询 |
||||||
|
* @param videoAlarm |
||||||
|
* @param page |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public HzPage<DeviceSoeVO> alarmPage(VideoAlarmVO videoAlarm, IPage<DeviceSoeVO> page) { |
||||||
|
String startTime,endTime; |
||||||
|
if(StringUtils.isEmpty(videoAlarm.getStartTime())){ |
||||||
|
Calendar calendar = Calendar.getInstance(); |
||||||
|
calendar.add(Calendar.DAY_OF_MONTH,-calendar.get(Calendar.DAY_OF_MONTH)); |
||||||
|
startTime = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE) + " 00:00:00"; |
||||||
|
}else{ |
||||||
|
startTime = videoAlarm.getStartTime(); |
||||||
|
} |
||||||
|
if(StringUtils.isEmpty(videoAlarm.getEndTime())){ |
||||||
|
endTime = DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME); |
||||||
|
}else{ |
||||||
|
endTime = videoAlarm.getEndTime(); |
||||||
|
} |
||||||
|
// 查询视频告警数据
|
||||||
|
Result<HzPage<DeviceSoeVO>> soe = alarmClient.getDeviceCodeByTaosSoe(startTime,endTime,videoAlarm.getDeviceCode(),(int) page.getCurrent(), String.valueOf(page.getSize())); |
||||||
|
if(!soe.isSuccess() || CollectionUtil.isEmpty(soe.getData().getRecords())){ |
||||||
|
return new HzPage<>(); |
||||||
|
} |
||||||
|
List<DeviceSoeVO> records = soe.getData().getRecords(); |
||||||
|
soe.getData().setRecords(records.stream().peek(record -> { |
||||||
|
record.setSoeType(videoAlarm.getDeviceName() + "_" + VideoEnumConstants.SoeKindEnum.getValueByKey(record.getInstanceFieldName()) + "_触发告警"); |
||||||
|
if(!StringUtil.isEmpty(record.getSoeExplain())) { |
||||||
|
String soeExplain = StringUtils.strip(record.getSoeExplain(), "[]"); |
||||||
|
StringBuilder sb = new StringBuilder(); |
||||||
|
if(record.getSoeExplain().contains("http")){ |
||||||
|
String[] imgs = soeExplain.split(","); |
||||||
|
for (String img : imgs){ |
||||||
|
sb.append(img).append(","); |
||||||
|
} |
||||||
|
}else{ |
||||||
|
String[] imgs = soeExplain.split(","); |
||||||
|
for (String img : imgs){ |
||||||
|
sb.append("https://172.30.100.204").append(img).append(","); |
||||||
|
} |
||||||
|
} |
||||||
|
record.setSoeAlarmType(sb.substring(0, sb.length() - 1).replace("\"", "")); |
||||||
|
} |
||||||
|
}).collect(Collectors.toList())); |
||||||
|
return soe.getData(); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue