提交代码

dev_xd
姜玉琦 2025-05-23 00:22:56 +08:00
parent 5657b2d806
commit 72a47123b7
4 changed files with 126 additions and 3 deletions

View File

@ -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<String,Object> dataMap)
{
try{
if(opt){
logger.info("BGAI...b300请求...{}",JSON.toJSONString(dataMap));
}
List<Map<String,Object>> list = (List<Map<String,Object>>)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
*/

View File

@ -48,6 +48,14 @@ public interface IDevAiProjectDataService
*/
public void insertHttpBGDevAiData(DevBGAiDataVO devBGAiDataVO);
/**
*
*
* @param devAiProjectDataVO
* @return
*/
public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO);
/**
*
*

View File

@ -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;

View File

@ -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
});