From e1a8ab5ade9f7c9c3680a6f9722b9b07f8ff75a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Fri, 28 Feb 2025 21:42:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/domain/DevAiProjectData.java | 150 ++---------------- .../mapper/manage/DevAiProjectDataMapper.xml | 38 +---- .../controller/wechat/DevAiBoxController.java | 46 +++--- .../yanzhu/manage/domain/BGBehaviourVO.java | 42 +++++ .../yanzhu/manage/domain/BGCaptureInfoVO.java | 28 ++++ .../yanzhu/manage/domain/BGChannelInfoVO.java | 39 +++++ .../yanzhu/manage/domain/BGDeviceInfoVO.java | 22 +++ .../yanzhu/manage/domain/DevBGAiDataVO.java | 46 ++++++ ...iProjectDataVO.java => DevBwAiDataVO.java} | 2 +- .../service/IDevAiProjectDataService.java | 11 +- .../impl/DevAiProjectDataServiceImpl.java | 146 ++++++++--------- .../views/manage/devAiProjectConfig/index.vue | 4 +- .../views/manage/devAiProjectData/index.vue | 2 +- 13 files changed, 291 insertions(+), 285 deletions(-) create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGBehaviourVO.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGCaptureInfoVO.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGChannelInfoVO.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGDeviceInfoVO.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBGAiDataVO.java rename yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/{DevBwAiProjectDataVO.java => DevBwAiDataVO.java} (91%) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/DevAiProjectData.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/DevAiProjectData.java index ecbd93b2..8d440b7a 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/DevAiProjectData.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/DevAiProjectData.java @@ -67,47 +67,15 @@ public class DevAiProjectData extends BaseEntity /** 报警类型 */ @Excel(name = "报警类型") - private Long alarmType; + private String alarmType; - /** 告警 ID */ - @Excel(name = "告警 ID") - private Long 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 = "告警编号") + private String alarmId; /** 车牌号 */ @Excel(name = "车牌号") - private Long plateNo; - - /** ValueType 为 1 时,代表明火检测;ValueType 为 2 时,代表烟雾检测; */ - @Excel(name = "ValueType 为 1 时,代表明火检测;ValueType 为 2 时,代表烟雾检测;") - private String valueType; + private String plateNo; /** 告警短视频的地址 */ @Excel(name = "告警短视频的地址") @@ -117,10 +85,6 @@ public class DevAiProjectData extends BaseEntity @Excel(name = "告警短视频的名称") private String alarmVideoName; - /** 人脸比对结果 */ - @Excel(name = "人脸比对结果") - private String compareResult; - /** 数据状态 */ @Excel(name = "数据状态") private Long isDel; @@ -231,106 +195,34 @@ public class DevAiProjectData extends BaseEntity { return channelName; } - public void setAlarmType(Long alarmType) + public void setAlarmType(String alarmType) { this.alarmType = alarmType; } - public Long getAlarmType() + public String getAlarmType() { return alarmType; } - public void setAlarmId(Long alarmId) + public void setAlarmId(String alarmId) { this.alarmId = alarmId; } - public Long getAlarmId() + public String getAlarmId() { return alarmId; } - public void setLeftTopX(String leftTopX) - { - 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) + public void setPlateNo(String plateNo) { this.plateNo = plateNo; } - public Long getPlateNo() + public String getPlateNo() { return plateNo; } - public void setValueType(String valueType) - { - this.valueType = valueType; - } - - public String getValueType() - { - return valueType; - } - public void setAlarmVideourl(String alarmVideourl) + public void setAlarmVideourl(String alarmVideourl) { this.alarmVideourl = alarmVideourl; } @@ -348,15 +240,6 @@ public class DevAiProjectData extends BaseEntity { return alarmVideoName; } - public void setCompareResult(String compareResult) - { - this.compareResult = compareResult; - } - - public String getCompareResult() - { - return compareResult; - } public void setIsDel(Long isDel) { this.isDel = isDel; @@ -382,18 +265,9 @@ public class DevAiProjectData extends BaseEntity .append("channelName", getChannelName()) .append("alarmType", getAlarmType()) .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("valueType", getValueType()) .append("alarmVideourl", getAlarmVideourl()) .append("alarmVideoName", getAlarmVideoName()) - .append("compareResult", getCompareResult()) .append("createTime", getCreateTime()) .append("isDel", getIsDel()) .toString(); diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/DevAiProjectDataMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/DevAiProjectDataMapper.xml index d8c9513c..45897f8e 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/DevAiProjectDataMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/DevAiProjectDataMapper.xml @@ -19,24 +19,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - - - 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 sys_dept sd on sd.dept_id = dapd.com_id @@ -78,18 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" channel_name, alarm_type, alarm_id, - left_top_x, - left_top_y, - right_btm_x, - right_btm_y, - person_num, - in_num, - out_num, plate_no, - value_type, alarm_videoURL, alarm_video_name, - compare_result, create_time, is_del, @@ -105,18 +87,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{channelName}, #{alarmType}, #{alarmId}, - #{leftTopX}, - #{leftTopY}, - #{rightBtmX}, - #{rightBtmY}, - #{personNum}, - #{inNum}, - #{outNum}, #{plateNo}, - #{valueType}, #{alarmVideourl}, #{alarmVideoName}, - #{compareResult}, #{createTime}, #{isDel}, @@ -136,18 +109,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" channel_name = #{channelName}, alarm_type = #{alarmType}, alarm_id = #{alarmId}, - left_top_x = #{leftTopX}, - left_top_y = #{leftTopY}, - right_btm_x = #{rightBtmX}, - right_btm_y = #{rightBtmY}, - person_num = #{personNum}, - in_num = #{inNum}, - out_num = #{outNum}, plate_no = #{plateNo}, - value_type = #{valueType}, alarm_videoURL = #{alarmVideourl}, alarm_video_name = #{alarmVideoName}, - compare_result = #{compareResult}, create_time = #{createTime}, is_del = #{isDel}, diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/DevAiBoxController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/DevAiBoxController.java index f42289d1..6da2c0e9 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/DevAiBoxController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/DevAiBoxController.java @@ -1,24 +1,21 @@ package com.yanzhu.manage.controller.wechat; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.yanzhu.common.core.annotation.RateLimiter; import com.yanzhu.common.core.enums.LimitType; import com.yanzhu.common.core.web.controller.BaseController; -import com.yanzhu.manage.domain.DevAiProjectDataVO; -import com.yanzhu.manage.domain.DevBwAiProjectDataVO; +import com.yanzhu.manage.domain.DevBGAiDataVO; +import com.yanzhu.manage.domain.DevBwAiDataVO; import com.yanzhu.manage.service.IDevAiProjectDataService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.Map; - /** * 项目信息Controller * @@ -32,36 +29,43 @@ public class DevAiBoxController extends BaseController { @Autowired private IDevAiProjectDataService devAiProjectDataService; + private static final boolean opt = false; + private static final Logger logger = LoggerFactory.getLogger("DevAiBoxController"); + /** * aibox推送预警数据【博观】 */ - @PostMapping("/v1/push") - @RateLimiter(count = 10, limitType = LimitType.IP) - public void boGuanPush(@RequestBody Map dataMap) + @PostMapping("/bg/push") + @RateLimiter(count = 30, limitType = LimitType.IP) + public void boGuanPush(@Validated @RequestBody DevBGAiDataVO devBGAiDataVO) { - try{ - List> list = (List>)dataMap.get("BehaviorResults"); - if(list!=null && list.size()>0){ - DevAiProjectDataVO devAiProjectDataVO = JSON.parseObject(JSONObject.toJSONString(list.get(0)), DevAiProjectDataVO.class); - devAiProjectDataService.insertHttpDevAiProjectData(devAiProjectDataVO); + // 只需要行为分析告警数据 + if(devBGAiDataVO.getType()==1){ + try{ + if(opt){ + 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推送预警数据【博瓦】 */ - @PostMapping("/v2/push") - public void boWaPush(@RequestBody DevBwAiProjectDataVO data) + @PostMapping("/bw/push") + public void boWaPush(@RequestBody DevBwAiDataVO devBwAiDataVO) { + if(opt){ + logger.info("BWAI...请求...{}",JSON.toJSONString(devBwAiDataVO)); + } try{ - devAiProjectDataService.insertHttpBwDevAiProjectData(data); + devAiProjectDataService.insertHttpBwDevAiData(devBwAiDataVO); }catch (Exception e){ logger.info("BW...AiBox解析参数失败!!!"); e.printStackTrace(); diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGBehaviourVO.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGBehaviourVO.java new file mode 100644 index 00000000..8edacc5b --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGBehaviourVO.java @@ -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 capture_info; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGCaptureInfoVO.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGCaptureInfoVO.java new file mode 100644 index 00000000..c29d9cbb --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGCaptureInfoVO.java @@ -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; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGChannelInfoVO.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGChannelInfoVO.java new file mode 100644 index 00000000..924bb34e --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGChannelInfoVO.java @@ -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; + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGDeviceInfoVO.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGDeviceInfoVO.java new file mode 100644 index 00000000..5719412f --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/BGDeviceInfoVO.java @@ -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; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBGAiDataVO.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBGAiDataVO.java new file mode 100644 index 00000000..2a5f9766 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBGAiDataVO.java @@ -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; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBwAiProjectDataVO.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBwAiDataVO.java similarity index 91% rename from yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBwAiProjectDataVO.java rename to yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBwAiDataVO.java index 01fa28a8..ac02c0f3 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBwAiProjectDataVO.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/DevBwAiDataVO.java @@ -8,7 +8,7 @@ import java.util.Map; * 博瓦盒子数据集 */ @Data -public class DevBwAiProjectDataVO { +public class DevBwAiDataVO { private String device_sn; private String device_version; diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IDevAiProjectDataService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IDevAiProjectDataService.java index c8fe8008..9240c43e 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IDevAiProjectDataService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IDevAiProjectDataService.java @@ -3,7 +3,8 @@ package com.yanzhu.manage.service; import java.util.List; import com.yanzhu.manage.domain.DevAiProjectData; import com.yanzhu.manage.domain.DevAiProjectDataVO; -import com.yanzhu.manage.domain.DevBwAiProjectDataVO; +import com.yanzhu.manage.domain.DevBGAiDataVO; +import com.yanzhu.manage.domain.DevBwAiDataVO; /** * AI设备数据Service接口 @@ -40,18 +41,18 @@ public interface IDevAiProjectDataService /** * 新增设备数据 * - * @param devAiProjectDataVO 设备数据 + * @param devBGAiDataVO 博观设备数据 * @return 结果 */ - public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO); + public void insertHttpBGDevAiData(DevBGAiDataVO devBGAiDataVO); /** * 新增设备数据 * - * @param devBwAiProjectDataVo 设备数据 + * @param devBwAiDataVO 博瓦设备数据 * @return 结果 */ - public void insertHttpBwDevAiProjectData(DevBwAiProjectDataVO devBwAiProjectDataVo); + public void insertHttpBwDevAiData(DevBwAiDataVO devBwAiDataVO); /** * 修改AI设备数据 diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/DevAiProjectDataServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/DevAiProjectDataServiceImpl.java index e4c857a1..4dad33bd 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/DevAiProjectDataServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/DevAiProjectDataServiceImpl.java @@ -8,10 +8,7 @@ import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.common.core.utils.file.MultipartFileUtils; import com.yanzhu.common.redis.service.RedisService; import com.yanzhu.common.security.utils.SecurityUtils; -import com.yanzhu.manage.domain.DevAiProjectConfig; -import com.yanzhu.manage.domain.DevAiProjectData; -import com.yanzhu.manage.domain.DevAiProjectDataVO; -import com.yanzhu.manage.domain.DevBwAiProjectDataVO; +import com.yanzhu.manage.domain.*; import com.yanzhu.manage.mapper.DevAiProjectDataMapper; import com.yanzhu.manage.service.IDevAiProjectDataService; 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.web.multipart.MultipartFile; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; @@ -90,84 +86,74 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService /** * 新增设备数据 * - * @param data 设备数据 + * @param data 博观设备数据 * @return 结果 */ @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)){ throw new ServiceException("设备信息未注册..."); } logger.info("AiBox消息解析成功!!开始转换实体!!!"); 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 */ - devAiProjectData.setChannelId(data.getChannelId()); + + BGChannelInfoVO bgChannelInfoVO = data.getChannel_info(); + /** 相机序列号 */ + 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 */ - devAiProjectData.setAlarmId(data.getAlarmId()); - /** 左上角 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.setAlarmId(data.getEvent_id()); /** 车牌号 */ - devAiProjectData.setPlateNo(data.getPlateNo()); - /** ValueType 为 1 时,代表明火检测;ValueType 为 2 时,代表烟雾检测; */ - devAiProjectData.setValueType(data.getValueType()); + devAiProjectData.setPlateNo(bgBehaviourVO.getCapture_info().get(0).getPlate_no()); /** 告警短视频的地址 */ - devAiProjectData.setAlarmVideourl(data.getAlarmVideourl()); + devAiProjectData.setAlarmVideourl(bgBehaviourVO.getVideo_url()); /** 告警短视频的名称 */ - devAiProjectData.setAlarmVideoName(data.getAlarmVideoName()); - /** 人脸比对结果 */ - devAiProjectData.setCompareResult(data.getCompareResult()); + devAiProjectData.setAlarmVideoName(bgBehaviourVO.getVideo_uuid()); logger.info("实体转换成功!!Base64开始转换图片!!!"); - String objImg64 = data.getBigImage().get("Image").toString(); - try { - MultipartFile file = MultipartFileUtils.base64ToMultipartFile("data:image/png;base64,"+objImg64); - SysFile sysFile = remoteFileService.upload(file).getData(); - devAiProjectData.setImageUrl(sysFile.getUrl()); - logger.info("Base64上传图片成功!!!"); - } catch (Exception e) { - e.printStackTrace(); + String objImg64 = bgBehaviourVO.getImage_base64(); + if(objImg64!=null){ + try { + MultipartFile file = MultipartFileUtils.base64ToMultipartFile("data:image/png;base64,"+objImg64); + SysFile sysFile = remoteFileService.upload(file).getData(); + devAiProjectData.setImageUrl(sysFile.getUrl()); + logger.info("Base64上传图片成功!!!"); + } 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 结果 */ @Override - public void insertHttpBwDevAiProjectData(DevBwAiProjectDataVO data){ + public void insertHttpBwDevAiData(DevBwAiDataVO data){ //根据设备配置查询设备绑定的项目和单位信息 DevAiProjectConfig config = redisService.getCacheObject(CacheConstants.DEV_AI_CONFIG+data.getDevice_sn()); if(Objects.isNull(config)){ @@ -188,7 +174,7 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService /** 报警类型 */ String type = this.switchAlarmType(data.getLabel()); if(!type.equals("-1")){ - devAiProjectData.setAlarmType(Convert.toLong(type)); + devAiProjectData.setAlarmType(type); logger.info("实体转换成功!!Base64开始转换图片!!!"); String objImg64 = data.getImg(); try { @@ -215,31 +201,31 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService private String switchAlarmType(String aliasLabel){ String alarmType; switch (aliasLabel){ - case "nohelmet" : alarmType="4";break; - case "head" : alarmType="4";break; - case "helmet" : alarmType="4";break; - case "fire" : alarmType="8";break; - case "vest" : alarmType="65";break; - case "smoke" : alarmType="7";break; - case "smoking" : alarmType="8";break; - case "calling" : alarmType="6";break; - case "face" : alarmType="face";break; - case "mask" : alarmType="mask";break; - case "garbage" : alarmType="garbage";break; - case "tricycle" : alarmType="tricycle";break; - case "person" : alarmType="person";break; - case "clothes" : alarmType="65";break; - case "down" : alarmType="62";break; - case "phone" : alarmType="6";break; - case "body" : alarmType="body";break; - case "ponding" : alarmType="ponding";break; - case "car" : alarmType="car";break; - case "bicycle" : alarmType="bicycle";break; - case "motorcycle" : alarmType="motorcycle";break; - case "bus" : alarmType="bus";break; - case "truck" : alarmType="truck";break; - case "van" : alarmType="van";break; - default : alarmType="0"; + case "nohelmet" : alarmType = "SafetyHelmetAlarm"; break; + case "head" : alarmType = "SafetyHelmetAlarm"; break; + case "helmet" : alarmType = "SafetyHelmetAlarm"; break; + case "fire" : alarmType = "8"; break; + case "vest" : alarmType = "65"; break; + case "smoke" : alarmType = "7"; break; + case "smoking" : alarmType = "8"; break; + case "calling" : alarmType = "6"; break; + case "face" : alarmType = "face"; break; + case "mask" : alarmType = "mask"; break; + case "garbage" : alarmType = "garbage"; break; + case "tricycle" : alarmType = "tricycle"; break; + case "person" : alarmType = "person"; break; + case "clothes" : alarmType = "65"; break; + case "down" : alarmType = "62"; break; + case "phone" : alarmType = "6"; break; + case "body" : alarmType = "body"; break; + case "ponding" : alarmType = "ponding"; break; + case "car" : alarmType = "car"; break; + case "bicycle" : alarmType = "bicycle"; break; + case "motorcycle" : alarmType = "motorcycle"; break; + case "bus" : alarmType = "bus"; break; + case "truck" : alarmType = "truck"; break; + case "van" : alarmType = "van"; break; + default : alarmType = "-"; } return alarmType; } diff --git a/yanzhu-ui-vue3/src/views/manage/devAiProjectConfig/index.vue b/yanzhu-ui-vue3/src/views/manage/devAiProjectConfig/index.vue index 6a9a3efa..9f130eaa 100644 --- a/yanzhu-ui-vue3/src/views/manage/devAiProjectConfig/index.vue +++ b/yanzhu-ui-vue3/src/views/manage/devAiProjectConfig/index.vue @@ -72,7 +72,7 @@ - + - +