提交代码

dev_xd
姜玉琦 2025-02-28 21:42:53 +08:00
parent bc4d6e14ca
commit e1a8ab5ade
13 changed files with 291 additions and 285 deletions

View File

@ -67,47 +67,15 @@ public class DevAiProjectData extends BaseEntity
/** 报警类型 */ /** 报警类型 */
@Excel(name = "报警类型") @Excel(name = "报警类型")
private Long alarmType; private String alarmType;
/** 告警 ID */ /** 告警编号 */
@Excel(name = "告警 ID") @Excel(name = "告警编号")
private Long alarmId; private String alarmId;
/** 左上角 X 坐标 */
@Excel(name = "左上角 X 坐标")
private String leftTopX;
/** 左上角 Y 坐标 */
@Excel(name = "左上角 Y 坐标")
private String leftTopY;
/** 右下角 X 坐标 */
@Excel(name = "右下角 X 坐标")
private String rightBtmX;
/** 右下角 Y 坐标 */
@Excel(name = "右下角 Y 坐标")
private String rightBtmY;
/** 当前告警区域人数 */
@Excel(name = "当前告警区域人数")
private Long personNum;
/** 绊线进入人数数量 */
@Excel(name = "绊线进入人数数量")
private Long inNum;
/** 绊线离开人数数量 */
@Excel(name = "绊线离开人数数量")
private Long outNum;
/** 车牌号 */ /** 车牌号 */
@Excel(name = "车牌号") @Excel(name = "车牌号")
private Long plateNo; private String plateNo;
/** ValueType 为 1 时代表明火检测ValueType 为 2 时,代表烟雾检测; */
@Excel(name = "ValueType 为 1 时代表明火检测ValueType 为 2 时,代表烟雾检测;")
private String valueType;
/** 告警短视频的地址 */ /** 告警短视频的地址 */
@Excel(name = "告警短视频的地址") @Excel(name = "告警短视频的地址")
@ -117,10 +85,6 @@ public class DevAiProjectData extends BaseEntity
@Excel(name = "告警短视频的名称") @Excel(name = "告警短视频的名称")
private String alarmVideoName; private String alarmVideoName;
/** 人脸比对结果 */
@Excel(name = "人脸比对结果")
private String compareResult;
/** 数据状态 */ /** 数据状态 */
@Excel(name = "数据状态") @Excel(name = "数据状态")
private Long isDel; private Long isDel;
@ -231,106 +195,34 @@ public class DevAiProjectData extends BaseEntity
{ {
return channelName; return channelName;
} }
public void setAlarmType(Long alarmType) public void setAlarmType(String alarmType)
{ {
this.alarmType = alarmType; this.alarmType = alarmType;
} }
public Long getAlarmType() public String getAlarmType()
{ {
return alarmType; return alarmType;
} }
public void setAlarmId(Long alarmId) public void setAlarmId(String alarmId)
{ {
this.alarmId = alarmId; this.alarmId = alarmId;
} }
public Long getAlarmId() public String getAlarmId()
{ {
return alarmId; return alarmId;
} }
public void setLeftTopX(String leftTopX) public void setPlateNo(String plateNo)
{
this.leftTopX = leftTopX;
}
public String getLeftTopX()
{
return leftTopX;
}
public void setLeftTopY(String leftTopY)
{
this.leftTopY = leftTopY;
}
public String getLeftTopY()
{
return leftTopY;
}
public void setRightBtmX(String rightBtmX)
{
this.rightBtmX = rightBtmX;
}
public String getRightBtmX()
{
return rightBtmX;
}
public void setRightBtmY(String rightBtmY)
{
this.rightBtmY = rightBtmY;
}
public String getRightBtmY()
{
return rightBtmY;
}
public void setPersonNum(Long personNum)
{
this.personNum = personNum;
}
public Long getPersonNum()
{
return personNum;
}
public void setInNum(Long inNum)
{
this.inNum = inNum;
}
public Long getInNum()
{
return inNum;
}
public void setOutNum(Long outNum)
{
this.outNum = outNum;
}
public Long getOutNum()
{
return outNum;
}
public void setPlateNo(Long plateNo)
{ {
this.plateNo = plateNo; this.plateNo = plateNo;
} }
public Long getPlateNo() public String getPlateNo()
{ {
return plateNo; return plateNo;
} }
public void setValueType(String valueType) public void setAlarmVideourl(String alarmVideourl)
{
this.valueType = valueType;
}
public String getValueType()
{
return valueType;
}
public void setAlarmVideourl(String alarmVideourl)
{ {
this.alarmVideourl = alarmVideourl; this.alarmVideourl = alarmVideourl;
} }
@ -348,15 +240,6 @@ public class DevAiProjectData extends BaseEntity
{ {
return alarmVideoName; return alarmVideoName;
} }
public void setCompareResult(String compareResult)
{
this.compareResult = compareResult;
}
public String getCompareResult()
{
return compareResult;
}
public void setIsDel(Long isDel) public void setIsDel(Long isDel)
{ {
this.isDel = isDel; this.isDel = isDel;
@ -382,18 +265,9 @@ public class DevAiProjectData extends BaseEntity
.append("channelName", getChannelName()) .append("channelName", getChannelName())
.append("alarmType", getAlarmType()) .append("alarmType", getAlarmType())
.append("alarmId", getAlarmId()) .append("alarmId", getAlarmId())
.append("leftTopX", getLeftTopX())
.append("leftTopY", getLeftTopY())
.append("rightBtmX", getRightBtmX())
.append("rightBtmY", getRightBtmY())
.append("personNum", getPersonNum())
.append("inNum", getInNum())
.append("outNum", getOutNum())
.append("plateNo", getPlateNo()) .append("plateNo", getPlateNo())
.append("valueType", getValueType())
.append("alarmVideourl", getAlarmVideourl()) .append("alarmVideourl", getAlarmVideourl())
.append("alarmVideoName", getAlarmVideoName()) .append("alarmVideoName", getAlarmVideoName())
.append("compareResult", getCompareResult())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("isDel", getIsDel()) .append("isDel", getIsDel())
.toString(); .toString();

View File

@ -19,24 +19,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="channelName" column="channel_name" /> <result property="channelName" column="channel_name" />
<result property="alarmType" column="alarm_type" /> <result property="alarmType" column="alarm_type" />
<result property="alarmId" column="alarm_id" /> <result property="alarmId" column="alarm_id" />
<result property="leftTopX" column="left_top_x" />
<result property="leftTopY" column="left_top_y" />
<result property="rightBtmX" column="right_btm_x" />
<result property="rightBtmY" column="right_btm_y" />
<result property="personNum" column="person_num" />
<result property="inNum" column="in_num" />
<result property="outNum" column="out_num" />
<result property="plateNo" column="plate_no" /> <result property="plateNo" column="plate_no" />
<result property="valueType" column="value_type" />
<result property="alarmVideourl" column="alarm_videoURL" /> <result property="alarmVideourl" column="alarm_videoURL" />
<result property="alarmVideoName" column="alarm_video_name" /> <result property="alarmVideoName" column="alarm_video_name" />
<result property="compareResult" column="compare_result" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="isDel" column="is_del" /> <result property="isDel" column="is_del" />
</resultMap> </resultMap>
<sql id="selectDevAiProjectDataVo"> <sql id="selectDevAiProjectDataVo">
select dapd.id, dapd.com_id, sd.dept_name as com_name, dapd.project_id, pi.project_name, dapd.device_id, dapd.device_name, dapd.serial_number, dapd.IPC_serial_num, dapd.image_url, dapd.channel_id, dapd.channel_name, dapd.alarm_type, dapd.alarm_id, dapd.left_top_x, dapd.left_top_y, dapd.right_btm_x, dapd.right_btm_y, dapd.person_num, dapd.in_num, dapd.out_num, dapd.plate_no, dapd.value_type, dapd.alarm_videoURL, dapd.alarm_video_name, dapd.compare_result, dapd.create_time, dapd.is_del from dev_ai_project_data dapd select dapd.id, dapd.com_id, sd.dept_name as com_name, dapd.project_id, pi.project_name, dapd.device_id, dapd.device_name, dapd.serial_number, dapd.IPC_serial_num, dapd.image_url, dapd.channel_id, dapd.channel_name, dapd.alarm_type, dapd.alarm_id, dapd.plate_no, dapd.alarm_videoURL, dapd.alarm_video_name, dapd.create_time, dapd.is_del from dev_ai_project_data dapd
left join pro_project_info pi on pi.id = dapd.project_id left join pro_project_info pi on pi.id = dapd.project_id
left join sys_dept sd on sd.dept_id = dapd.com_id left join sys_dept sd on sd.dept_id = dapd.com_id
</sql> </sql>
@ -78,18 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="channelName != null">channel_name,</if> <if test="channelName != null">channel_name,</if>
<if test="alarmType != null">alarm_type,</if> <if test="alarmType != null">alarm_type,</if>
<if test="alarmId != null">alarm_id,</if> <if test="alarmId != null">alarm_id,</if>
<if test="leftTopX != null">left_top_x,</if>
<if test="leftTopY != null">left_top_y,</if>
<if test="rightBtmX != null">right_btm_x,</if>
<if test="rightBtmY != null">right_btm_y,</if>
<if test="personNum != null">person_num,</if>
<if test="inNum != null">in_num,</if>
<if test="outNum != null">out_num,</if>
<if test="plateNo != null">plate_no,</if> <if test="plateNo != null">plate_no,</if>
<if test="valueType != null">value_type,</if>
<if test="alarmVideourl != null">alarm_videoURL,</if> <if test="alarmVideourl != null">alarm_videoURL,</if>
<if test="alarmVideoName != null">alarm_video_name,</if> <if test="alarmVideoName != null">alarm_video_name,</if>
<if test="compareResult != null">compare_result,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="isDel != null">is_del,</if> <if test="isDel != null">is_del,</if>
</trim> </trim>
@ -105,18 +87,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="channelName != null">#{channelName},</if> <if test="channelName != null">#{channelName},</if>
<if test="alarmType != null">#{alarmType},</if> <if test="alarmType != null">#{alarmType},</if>
<if test="alarmId != null">#{alarmId},</if> <if test="alarmId != null">#{alarmId},</if>
<if test="leftTopX != null">#{leftTopX},</if>
<if test="leftTopY != null">#{leftTopY},</if>
<if test="rightBtmX != null">#{rightBtmX},</if>
<if test="rightBtmY != null">#{rightBtmY},</if>
<if test="personNum != null">#{personNum},</if>
<if test="inNum != null">#{inNum},</if>
<if test="outNum != null">#{outNum},</if>
<if test="plateNo != null">#{plateNo},</if> <if test="plateNo != null">#{plateNo},</if>
<if test="valueType != null">#{valueType},</if>
<if test="alarmVideourl != null">#{alarmVideourl},</if> <if test="alarmVideourl != null">#{alarmVideourl},</if>
<if test="alarmVideoName != null">#{alarmVideoName},</if> <if test="alarmVideoName != null">#{alarmVideoName},</if>
<if test="compareResult != null">#{compareResult},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="isDel != null">#{isDel},</if> <if test="isDel != null">#{isDel},</if>
</trim> </trim>
@ -136,18 +109,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="channelName != null">channel_name = #{channelName},</if> <if test="channelName != null">channel_name = #{channelName},</if>
<if test="alarmType != null">alarm_type = #{alarmType},</if> <if test="alarmType != null">alarm_type = #{alarmType},</if>
<if test="alarmId != null">alarm_id = #{alarmId},</if> <if test="alarmId != null">alarm_id = #{alarmId},</if>
<if test="leftTopX != null">left_top_x = #{leftTopX},</if>
<if test="leftTopY != null">left_top_y = #{leftTopY},</if>
<if test="rightBtmX != null">right_btm_x = #{rightBtmX},</if>
<if test="rightBtmY != null">right_btm_y = #{rightBtmY},</if>
<if test="personNum != null">person_num = #{personNum},</if>
<if test="inNum != null">in_num = #{inNum},</if>
<if test="outNum != null">out_num = #{outNum},</if>
<if test="plateNo != null">plate_no = #{plateNo},</if> <if test="plateNo != null">plate_no = #{plateNo},</if>
<if test="valueType != null">value_type = #{valueType},</if>
<if test="alarmVideourl != null">alarm_videoURL = #{alarmVideourl},</if> <if test="alarmVideourl != null">alarm_videoURL = #{alarmVideourl},</if>
<if test="alarmVideoName != null">alarm_video_name = #{alarmVideoName},</if> <if test="alarmVideoName != null">alarm_video_name = #{alarmVideoName},</if>
<if test="compareResult != null">compare_result = #{compareResult},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
<if test="isDel != null">is_del = #{isDel},</if> <if test="isDel != null">is_del = #{isDel},</if>
</trim> </trim>

View File

@ -1,24 +1,21 @@
package com.yanzhu.manage.controller.wechat; package com.yanzhu.manage.controller.wechat;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yanzhu.common.core.annotation.RateLimiter; import com.yanzhu.common.core.annotation.RateLimiter;
import com.yanzhu.common.core.enums.LimitType; import com.yanzhu.common.core.enums.LimitType;
import com.yanzhu.common.core.web.controller.BaseController; import com.yanzhu.common.core.web.controller.BaseController;
import com.yanzhu.manage.domain.DevAiProjectDataVO; import com.yanzhu.manage.domain.DevBGAiDataVO;
import com.yanzhu.manage.domain.DevBwAiProjectDataVO; import com.yanzhu.manage.domain.DevBwAiDataVO;
import com.yanzhu.manage.service.IDevAiProjectDataService; import com.yanzhu.manage.service.IDevAiProjectDataService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/** /**
* Controller * Controller
* *
@ -32,36 +29,43 @@ public class DevAiBoxController extends BaseController {
@Autowired @Autowired
private IDevAiProjectDataService devAiProjectDataService; private IDevAiProjectDataService devAiProjectDataService;
private static final boolean opt = false;
private static final Logger logger = LoggerFactory.getLogger("DevAiBoxController"); private static final Logger logger = LoggerFactory.getLogger("DevAiBoxController");
/** /**
* aibox * aibox
*/ */
@PostMapping("/v1/push") @PostMapping("/bg/push")
@RateLimiter(count = 10, limitType = LimitType.IP) @RateLimiter(count = 30, limitType = LimitType.IP)
public void boGuanPush(@RequestBody Map<String,Object> dataMap) public void boGuanPush(@Validated @RequestBody DevBGAiDataVO devBGAiDataVO)
{ {
try{ // 只需要行为分析告警数据
List<Map<String,Object>> list = (List<Map<String,Object>>)dataMap.get("BehaviorResults"); if(devBGAiDataVO.getType()==1){
if(list!=null && list.size()>0){ try{
DevAiProjectDataVO devAiProjectDataVO = JSON.parseObject(JSONObject.toJSONString(list.get(0)), DevAiProjectDataVO.class); if(opt){
devAiProjectDataService.insertHttpDevAiProjectData(devAiProjectDataVO); logger.info("BGAI...请求...{}",JSON.toJSONString(devBGAiDataVO));
}
devAiProjectDataService.insertHttpBGDevAiData(devBGAiDataVO);
}catch (Exception e){
logger.info("BG...AiBox解析参数失败");
e.printStackTrace();
} }
}catch (Exception e){
logger.info("BG...AiBox解析参数失败");
e.printStackTrace();
} }
} }
/** /**
* aibox * aibox
*/ */
@PostMapping("/v2/push") @PostMapping("/bw/push")
public void boWaPush(@RequestBody DevBwAiProjectDataVO data) public void boWaPush(@RequestBody DevBwAiDataVO devBwAiDataVO)
{ {
if(opt){
logger.info("BWAI...请求...{}",JSON.toJSONString(devBwAiDataVO));
}
try{ try{
devAiProjectDataService.insertHttpBwDevAiProjectData(data); devAiProjectDataService.insertHttpBwDevAiData(devBwAiDataVO);
}catch (Exception e){ }catch (Exception e){
logger.info("BW...AiBox解析参数失败"); logger.info("BW...AiBox解析参数失败");
e.printStackTrace(); e.printStackTrace();

View File

@ -0,0 +1,42 @@
package com.yanzhu.manage.domain;
import lombok.Data;
import java.util.List;
/**
* ()
*/
@Data
public class BGBehaviourVO {
/** 算法类型 */
private String algo_model;
/** 图片 */
private String image_base64;
/** 图片相对路径 */
private String image_path;
/** 抓拍时间 */
private Integer capture_time;
/** 绊线进入人数(瞬时) */
private Integer in_num;
/** 绊线离开人数(瞬时) */
private Integer out_num;
/** 区域统计人数 */
private Integer area_num;
/** 告警视频 uuid */
private String video_uuid;
/** 告警视频相对路径 */
private String video_url;
/** 目标信息 */
private List<BGCaptureInfoVO> capture_info;
}

View File

@ -0,0 +1,28 @@
package com.yanzhu.manage.domain;
import lombok.Data;
/**
*
*/
@Data
public class BGCaptureInfoVO {
/** 目标编号 */
private Integer target_id;
/** 目标横坐标信息 "x0,x1" */
private String point_x;
/** 目标横坐标信息 "y0,y1" */
private String point_y;
/** 区域入侵目标类型1 人 2 机动车 3 非机动车) */
private Integer object_type;
/** 车速 */
private Integer speed;
/** 车牌号 */
private String plate_no;
}

View File

@ -0,0 +1,39 @@
package com.yanzhu.manage.domain;
import lombok.Data;
/**
*
*/
@Data
public class BGChannelInfoVO {
/**
*
* 0
* 1
* 2
* 3
* 4
*/
private Integer mode;
/** 相机序列号 */
private String ipc_sn;
/** 相机 ip 地址 */
private String ipc_addr;
/** 点位编号 */
private Long channel_id;
/** 点位名称 */
private String channel_name;
/** 点位状态1在线 2离线 */
private Integer status;
/** 自定义编码 */
private String custom_code;
}

View File

@ -0,0 +1,22 @@
package com.yanzhu.manage.domain;
import lombok.Data;
/**
*
*/
@Data
public class BGDeviceInfoVO {
/** 设备编码1-255 */
private Long device_code;
/** 设备名称 */
private String device_name;
/** 设备序列号 */
private String device_sn;
/** 自定义编码 */
private String custom_code;
}

View File

@ -0,0 +1,46 @@
package com.yanzhu.manage.domain;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
public class DevBGAiDataVO {
/**
*
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* ...
*/
@NotNull(message = "上报内容不能为空")
private Integer type;
/** 告警编号 */
@NotBlank(message = "告警编号不能为空")
private String event_id;
/** 有无比对结果1 有 0 无) */
@NotBlank(message = "有无比对结果不能为空")
private String has_result;
/** 设备信息 */
@NotNull(message = "设备信息不能为空")
private BGDeviceInfoVO device_info;
/** 点位信息 */
private BGChannelInfoVO channel_info;
/** 行为分析(告警恢复)数据 */
@NotNull(message = "分析数据不能为空")
private BGBehaviourVO behaviour;
}

View File

@ -8,7 +8,7 @@ import java.util.Map;
* *
*/ */
@Data @Data
public class DevBwAiProjectDataVO { public class DevBwAiDataVO {
private String device_sn; private String device_sn;
private String device_version; private String device_version;

View File

@ -3,7 +3,8 @@ package com.yanzhu.manage.service;
import java.util.List; import java.util.List;
import com.yanzhu.manage.domain.DevAiProjectData; import com.yanzhu.manage.domain.DevAiProjectData;
import com.yanzhu.manage.domain.DevAiProjectDataVO; import com.yanzhu.manage.domain.DevAiProjectDataVO;
import com.yanzhu.manage.domain.DevBwAiProjectDataVO; import com.yanzhu.manage.domain.DevBGAiDataVO;
import com.yanzhu.manage.domain.DevBwAiDataVO;
/** /**
* AIService * AIService
@ -40,18 +41,18 @@ public interface IDevAiProjectDataService
/** /**
* *
* *
* @param devAiProjectDataVO * @param devBGAiDataVO
* @return * @return
*/ */
public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO); public void insertHttpBGDevAiData(DevBGAiDataVO devBGAiDataVO);
/** /**
* *
* *
* @param devBwAiProjectDataVo * @param devBwAiDataVO
* @return * @return
*/ */
public void insertHttpBwDevAiProjectData(DevBwAiProjectDataVO devBwAiProjectDataVo); public void insertHttpBwDevAiData(DevBwAiDataVO devBwAiDataVO);
/** /**
* AI * AI

View File

@ -8,10 +8,7 @@ import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.core.utils.file.MultipartFileUtils; import com.yanzhu.common.core.utils.file.MultipartFileUtils;
import com.yanzhu.common.redis.service.RedisService; import com.yanzhu.common.redis.service.RedisService;
import com.yanzhu.common.security.utils.SecurityUtils; import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.manage.domain.DevAiProjectConfig; import com.yanzhu.manage.domain.*;
import com.yanzhu.manage.domain.DevAiProjectData;
import com.yanzhu.manage.domain.DevAiProjectDataVO;
import com.yanzhu.manage.domain.DevBwAiProjectDataVO;
import com.yanzhu.manage.mapper.DevAiProjectDataMapper; import com.yanzhu.manage.mapper.DevAiProjectDataMapper;
import com.yanzhu.manage.service.IDevAiProjectDataService; import com.yanzhu.manage.service.IDevAiProjectDataService;
import com.yanzhu.system.api.RemoteFileService; import com.yanzhu.system.api.RemoteFileService;
@ -22,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@ -90,84 +86,74 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
/** /**
* *
* *
* @param data * @param data
* @return * @return
*/ */
@Override @Override
public void insertHttpDevAiProjectData(DevAiProjectDataVO data) public void insertHttpBGDevAiData(DevBGAiDataVO data)
{ {
//根据设备配置查询设备绑定的项目和单位信息 //根据设备配置查询设备绑定的项目和单位信息
DevAiProjectConfig config = redisService.getCacheObject(CacheConstants.DEV_AI_CONFIG+data.getSerialNumber()); BGDeviceInfoVO bGDeviceInfoVO = data.getDevice_info();
DevAiProjectConfig config = redisService.getCacheObject(CacheConstants.DEV_AI_CONFIG+bGDeviceInfoVO.getDevice_sn());
if(Objects.isNull(config)){ if(Objects.isNull(config)){
throw new ServiceException("设备信息未注册..."); throw new ServiceException("设备信息未注册...");
} }
logger.info("AiBox消息解析成功开始转换实体"); logger.info("AiBox消息解析成功开始转换实体");
DevAiProjectData devAiProjectData = new DevAiProjectData(); DevAiProjectData devAiProjectData = new DevAiProjectData();
devAiProjectData.setDeviceId(data.getDeviceId()); devAiProjectData.setDeviceId(bGDeviceInfoVO.getDevice_code());
/** 设备名称 */ /** 设备名称 */
devAiProjectData.setDeviceName(data.getDeviceName()); devAiProjectData.setDeviceName(bGDeviceInfoVO.getDevice_name());
/** 设备的序列号 */ /** 设备的序列号 */
devAiProjectData.setSerialNumber(data.getSerialNumber()); devAiProjectData.setSerialNumber(bGDeviceInfoVO.getDevice_sn());
/** 相机的序列号 */ /** 相机的序列号 */
devAiProjectData.setIpcSerialNum(data.getIPCSerialNum());
/** 通道号,用来唯一标识任务 ID */ BGChannelInfoVO bgChannelInfoVO = data.getChannel_info();
devAiProjectData.setChannelId(data.getChannelId()); /** 相机序列号 */
devAiProjectData.setIpcSerialNum(bgChannelInfoVO.getIpc_sn());
/** 通道号 */
devAiProjectData.setChannelId(bgChannelInfoVO.getChannel_id());
/** 通道名称 */ /** 通道名称 */
devAiProjectData.setChannelName(data.getChannelName()); devAiProjectData.setChannelName(bgChannelInfoVO.getChannel_name());
BGBehaviourVO bgBehaviourVO = data.getBehaviour();
/** 报警类型 */ /** 报警类型 */
devAiProjectData.setAlarmType(data.getAlarmType()); devAiProjectData.setAlarmType(bgBehaviourVO.getAlgo_model());
/** 告警 ID */ /** 告警 ID */
devAiProjectData.setAlarmId(data.getAlarmId()); devAiProjectData.setAlarmId(data.getEvent_id());
/** 左上角 X 坐标 */
devAiProjectData.setLeftTopX(data.getLeftTopX());
/** 左上角 Y 坐标 */
devAiProjectData.setLeftTopY(data.getLeftTopY());
/** 右下角 X 坐标 */
devAiProjectData.setRightBtmX(data.getRightBtmX());
/** 右下角 Y 坐标 */
devAiProjectData.setRightBtmY(data.getRightBtmY());
/** 当前告警区域人数 */
devAiProjectData.setPersonNum(data.getPersonNum());
/** 绊线进入人数数量 */
devAiProjectData.setInNum(data.getInNum());
/** 绊线离开人数数量 */
devAiProjectData.setOutNum(data.getOutNum());
/** 车牌号 */ /** 车牌号 */
devAiProjectData.setPlateNo(data.getPlateNo()); devAiProjectData.setPlateNo(bgBehaviourVO.getCapture_info().get(0).getPlate_no());
/** ValueType 为 1 时代表明火检测ValueType 为 2 时,代表烟雾检测; */
devAiProjectData.setValueType(data.getValueType());
/** 告警短视频的地址 */ /** 告警短视频的地址 */
devAiProjectData.setAlarmVideourl(data.getAlarmVideourl()); devAiProjectData.setAlarmVideourl(bgBehaviourVO.getVideo_url());
/** 告警短视频的名称 */ /** 告警短视频的名称 */
devAiProjectData.setAlarmVideoName(data.getAlarmVideoName()); devAiProjectData.setAlarmVideoName(bgBehaviourVO.getVideo_uuid());
/** 人脸比对结果 */
devAiProjectData.setCompareResult(data.getCompareResult());
logger.info("实体转换成功Base64开始转换图片"); logger.info("实体转换成功Base64开始转换图片");
String objImg64 = data.getBigImage().get("Image").toString(); String objImg64 = bgBehaviourVO.getImage_base64();
try { if(objImg64!=null){
MultipartFile file = MultipartFileUtils.base64ToMultipartFile("data:image/png;base64,"+objImg64); try {
SysFile sysFile = remoteFileService.upload(file).getData(); MultipartFile file = MultipartFileUtils.base64ToMultipartFile("data:image/png;base64,"+objImg64);
devAiProjectData.setImageUrl(sysFile.getUrl()); SysFile sysFile = remoteFileService.upload(file).getData();
logger.info("Base64上传图片成功"); devAiProjectData.setImageUrl(sysFile.getUrl());
} catch (Exception e) { logger.info("Base64上传图片成功");
e.printStackTrace(); } catch (Exception e) {
e.printStackTrace();
}
devAiProjectData.setComId(config.getComId());
devAiProjectData.setProjectId(config.getProjectId());
devAiProjectData.setIsDel(IsDelEnums.NO.getCode());
devAiProjectData.setCreateTime(DateUtils.getNowDate());
logger.info("新增AI设备数据成功");
devAiProjectDataMapper.insertDevAiProjectData(devAiProjectData);
} }
devAiProjectData.setComId(config.getComId());
devAiProjectData.setProjectId(config.getProjectId());
devAiProjectData.setIsDel(IsDelEnums.NO.getCode());
devAiProjectData.setCreateTime(DateUtils.getNowDate());
logger.info("新增AI设备数据成功");
devAiProjectDataMapper.insertDevAiProjectData(devAiProjectData);
} }
/** /**
* *
* *
* @param data * @param data
* @return * @return
*/ */
@Override @Override
public void insertHttpBwDevAiProjectData(DevBwAiProjectDataVO data){ public void insertHttpBwDevAiData(DevBwAiDataVO data){
//根据设备配置查询设备绑定的项目和单位信息 //根据设备配置查询设备绑定的项目和单位信息
DevAiProjectConfig config = redisService.getCacheObject(CacheConstants.DEV_AI_CONFIG+data.getDevice_sn()); DevAiProjectConfig config = redisService.getCacheObject(CacheConstants.DEV_AI_CONFIG+data.getDevice_sn());
if(Objects.isNull(config)){ if(Objects.isNull(config)){
@ -188,7 +174,7 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
/** 报警类型 */ /** 报警类型 */
String type = this.switchAlarmType(data.getLabel()); String type = this.switchAlarmType(data.getLabel());
if(!type.equals("-1")){ if(!type.equals("-1")){
devAiProjectData.setAlarmType(Convert.toLong(type)); devAiProjectData.setAlarmType(type);
logger.info("实体转换成功Base64开始转换图片"); logger.info("实体转换成功Base64开始转换图片");
String objImg64 = data.getImg(); String objImg64 = data.getImg();
try { try {
@ -215,31 +201,31 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
private String switchAlarmType(String aliasLabel){ private String switchAlarmType(String aliasLabel){
String alarmType; String alarmType;
switch (aliasLabel){ switch (aliasLabel){
case "nohelmet" : alarmType="4";break; case "nohelmet" : alarmType = "SafetyHelmetAlarm"; break;
case "head" : alarmType="4";break; case "head" : alarmType = "SafetyHelmetAlarm"; break;
case "helmet" : alarmType="4";break; case "helmet" : alarmType = "SafetyHelmetAlarm"; break;
case "fire" : alarmType="8";break; case "fire" : alarmType = "8"; break;
case "vest" : alarmType="65";break; case "vest" : alarmType = "65"; break;
case "smoke" : alarmType="7";break; case "smoke" : alarmType = "7"; break;
case "smoking" : alarmType="8";break; case "smoking" : alarmType = "8"; break;
case "calling" : alarmType="6";break; case "calling" : alarmType = "6"; break;
case "face" : alarmType="face";break; case "face" : alarmType = "face"; break;
case "mask" : alarmType="mask";break; case "mask" : alarmType = "mask"; break;
case "garbage" : alarmType="garbage";break; case "garbage" : alarmType = "garbage"; break;
case "tricycle" : alarmType="tricycle";break; case "tricycle" : alarmType = "tricycle"; break;
case "person" : alarmType="person";break; case "person" : alarmType = "person"; break;
case "clothes" : alarmType="65";break; case "clothes" : alarmType = "65"; break;
case "down" : alarmType="62";break; case "down" : alarmType = "62"; break;
case "phone" : alarmType="6";break; case "phone" : alarmType = "6"; break;
case "body" : alarmType="body";break; case "body" : alarmType = "body"; break;
case "ponding" : alarmType="ponding";break; case "ponding" : alarmType = "ponding"; break;
case "car" : alarmType="car";break; case "car" : alarmType = "car"; break;
case "bicycle" : alarmType="bicycle";break; case "bicycle" : alarmType = "bicycle"; break;
case "motorcycle" : alarmType="motorcycle";break; case "motorcycle" : alarmType = "motorcycle"; break;
case "bus" : alarmType="bus";break; case "bus" : alarmType = "bus"; break;
case "truck" : alarmType="truck";break; case "truck" : alarmType = "truck"; break;
case "van" : alarmType="van";break; case "van" : alarmType = "van"; break;
default : alarmType="0"; default : alarmType = "-";
} }
return alarmType; return alarmType;
} }

View File

@ -72,7 +72,7 @@
<el-table-column label="设备名称" align="center" prop="deviceName" /> <el-table-column label="设备名称" align="center" prop="deviceName" />
<el-table-column label="设备序列号" align="center" prop="serialNumber" /> <el-table-column label="设备序列号" align="center" prop="serialNumber" />
<el-table-column label="厂商名称" align="center" prop="manufacturer" /> <el-table-column label="厂商名称" align="center" prop="manufacturer" />
<el-table-column label="预警类型" align="center" prop="passageType" width="280"> <el-table-column v-if="false" label="预警类型" align="center" prop="passageType" width="280">
<template #default="scope"> <template #default="scope">
<div class="flex gap-2"> <div class="flex gap-2">
<dict-tag :options="aibox_alarm_type" :value="scope.row.passageType" :showValue="false"/> <dict-tag :options="aibox_alarm_type" :value="scope.row.passageType" :showValue="false"/>
@ -127,7 +127,7 @@
<el-form-item label="厂商名称" prop="manufacturer"> <el-form-item label="厂商名称" prop="manufacturer">
<el-input v-model="form.manufacturer" placeholder="请输入厂商名称" /> <el-input v-model="form.manufacturer" placeholder="请输入厂商名称" />
</el-form-item> </el-form-item>
<el-form-item label="预警类型" prop="passageType"> <el-form-item v-if="false" label="预警类型" prop="passageType">
<el-select v-model="form.passageType" multiple placeholder="请选择预警类型" style="width:100%"> <el-select v-model="form.passageType" multiple placeholder="请选择预警类型" style="width:100%">
<el-option <el-option
v-for="dict in aibox_alarm_type" v-for="dict in aibox_alarm_type"

View File

@ -99,7 +99,7 @@
<dict-tag :options="sys_is_del" :value="scope.row.isDel" /> <dict-tag :options="sys_is_del" :value="scope.row.isDel" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上报时间" align="center" prop="createTime" width="180"> <el-table-column label="上报时间" align="center" prop="createTime" width="160">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>