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 6da2c0e9..1a7d514e 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,9 +1,11 @@ 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.DevBGAiDataVO; import com.yanzhu.manage.domain.DevBwAiDataVO; import com.yanzhu.manage.service.IDevAiProjectDataService; @@ -16,6 +18,9 @@ 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 * @@ -55,6 +60,28 @@ public class DevAiBoxController extends BaseController { } } + /** + * aibox推送预警数据【博观】 + */ + @PostMapping("/bg_hwj_b300/push") + @RateLimiter(count = 30, limitType = LimitType.IP) + public void boGuanB300Push(@RequestBody Map dataMap) + { + try{ + if(opt){ + logger.info("BGAI...b300请求...{}",JSON.toJSONString(dataMap)); + } + 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); + } + }catch (Exception e){ + logger.info("AiBox解析参数失败!!!"); + e.printStackTrace(); + } + } + /** * aibox推送预警数据【博瓦】 */ 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 52ece4b6..4d693357 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 @@ -48,6 +48,14 @@ public interface IDevAiProjectDataService */ public void insertHttpBGDevAiData(DevBGAiDataVO devBGAiDataVO); + /** + * 新增设备数据 + * + * @param devAiProjectDataVO 设备数据 + * @return 结果 + */ + public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO); + /** * 新增设备数据 * 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 c9b91f19..db7b69d5 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 @@ -19,6 +19,7 @@ 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; @@ -148,6 +149,64 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService } } + /** + * 新增设备数据 + * + * @param devAiProjectDataVO 设备数据 + * @return 结果 + */ + @Override + public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO){ + //根据设备配置查询设备绑定的项目和单位信息 + DevAiProjectConfig config = redisService.getCacheObject(CacheConstants.DEV_AI_CONFIG+devAiProjectDataVO.getSerialNumber()); + if(Objects.isNull(config)){ + throw new ServiceException("设备信息未注册..."); + } + logger.info("AiBox消息解析成功!!开始转换实体!!!"); + DevAiProjectData devAiProjectData = new DevAiProjectData(); + devAiProjectData.setDeviceId(devAiProjectDataVO.getDeviceId()); + /** 设备名称 */ + devAiProjectData.setDeviceName(devAiProjectDataVO.getDeviceName()); + /** 设备的序列号 */ + devAiProjectData.setSerialNumber(devAiProjectDataVO.getSerialNumber()); + /** 相机的序列号 */ + devAiProjectData.setIpcSerialNum(devAiProjectDataVO.getIPCSerialNum()); + /** 通道号,用来唯一标识任务 ID */ + devAiProjectData.setChannelId(devAiProjectDataVO.getChannelId()); + /** 通道名称 */ + devAiProjectData.setChannelName(devAiProjectDataVO.getChannelName()); + /** 报警类型 */ + String type = this.switchBgB300AlarmType(Convert.toStr(devAiProjectDataVO.getAlarmType())); + if(!type.equals("-1")){ + /** 报警类型 */ + devAiProjectData.setAlarmType(type); + /** 告警 ID */ + devAiProjectData.setAlarmId(Convert.toStr(devAiProjectDataVO.getAlarmId())); + /** 车牌号 */ + devAiProjectData.setPlateNo(Convert.toStr(devAiProjectDataVO.getPlateNo())); + /** 告警短视频的地址 */ + devAiProjectData.setAlarmVideourl(devAiProjectDataVO.getAlarmVideourl()); + /** 告警短视频的名称 */ + devAiProjectData.setAlarmVideoName(devAiProjectDataVO.getAlarmVideoName()); + logger.info("实体转换成功!!Base64开始转换图片!!!"); + String objImg64 = devAiProjectDataVO.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(); + } + devAiProjectData.setComId(config.getComId()); + devAiProjectData.setProjectId(config.getProjectId()); + devAiProjectData.setIsDel(IsDelEnums.NO.getCode()); + devAiProjectData.setCreateTime(DateUtils.getNowDate()); + logger.info("新增AI设备数据成功"); + devAiProjectDataMapper.insertDevAiProjectData(devAiProjectData); + } + } + /** * 新增设备数据 * @@ -174,7 +233,7 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService devAiProjectData.setChannelName(Convert.toStr(extendMap.get("source_name"))); } /** 报警类型 */ - String type = this.switchAlarmType(data.getLabel()); + String type = this.switchBwAlarmType(data.getLabel()); if(!type.equals("-1")){ devAiProjectData.setAlarmType(type); logger.info("实体转换成功!!Base64开始转换图片!!!"); @@ -200,7 +259,33 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService * 转换博瓦预警类型 * @return */ - private String switchAlarmType(String aliasLabel){ + private String switchBgB300AlarmType(String b300AlarmType){ + String alarmType; + switch (b300AlarmType){ + case "4": alarmType="SafetyHelmetAlarm"; break; + case "5": alarmType="WorkClothesAlarm"; break; + case "6": alarmType="TelephoningAlarm"; break; + case "7": alarmType="SmokingAlarm"; break; + case "8": alarmType="FireDetection"; break; + case "19": alarmType="ObjectRemoved"; break; + case "20": alarmType="LineDetectorCrossed"; break; + case "22": alarmType="AbnormalParkingDetection"; break; + case "18": alarmType="DisorderStackingDetection"; break; + case "62": alarmType="FallOverAlarm"; break; + case "65": + case "125": alarmType="ReflectiveClothesDetectionAlarm"; break; + case "63": alarmType="CrowdDensityCriticalAlarm"; break; + case "144": alarmType="PlayMobilePhoneDetection"; break; + default : alarmType = "-1"; + } + return alarmType; + } + + /** + * 转换博瓦预警类型 + * @return + */ + private String switchBwAlarmType(String aliasLabel){ String alarmType; switch (aliasLabel){ case "nohelmet" : alarmType = "SafetyHelmetAlarm"; break; diff --git a/yanzhu-ui-app/miniprogram/pageage/project_video/info/index.js b/yanzhu-ui-app/miniprogram/pageage/project_video/info/index.js index bbf68bf2..a97a6a6c 100644 --- a/yanzhu-ui-app/miniprogram/pageage/project_video/info/index.js +++ b/yanzhu-ui-app/miniprogram/pageage/project_video/info/index.js @@ -1,6 +1,9 @@ import { getToken } from '../../../utils/auth' +import { + getYsToken +} from '../../../api/project' const app = getApp() Page({ @@ -22,11 +25,11 @@ Page({ url: '/pages/login/login', }) } + this.findYsToken(options.id); let _dat = options.url.replace("ezopen://open.ys7.com/","").split("/"); let _cha = _dat[1].split(".")[0]; let _url = "rtmp://open.ys7.com/"+_dat[0]+"/"+_cha+"/live"; this.setData({ - ysToken: options.token, palyUrl: _url, channelNo: _cha });