| | |
| | | package com.fzzy.igds.api.v1.service; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fzzy.igds.api.v1.data.ApiV1Req; |
| | | import com.fzzy.igds.api.v1.data.ApiV1Resp; |
| | | import com.fzzy.igds.api.v1.data.Param3030; |
| | | import com.fzzy.igds.api.v1.data.Param3031; |
| | | import com.fzzy.igds.constant.WarnStatus; |
| | | import com.fzzy.igds.constant.Constant; |
| | | import com.fzzy.igds.constant.MonitorPointType; |
| | | import com.fzzy.igds.data.BaseResp; |
| | | import com.fzzy.igds.domain.Camera; |
| | | import com.fzzy.igds.domain.EventInfo; |
| | | import com.fzzy.igds.domain.GatewaySer; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fzzy.igds.domain.SnapRecord; |
| | | import com.fzzy.igds.domain.SnapReply; |
| | | import com.fzzy.igds.service.EventInfoService; |
| | | import com.fzzy.igds.service.FileService; |
| | | import com.fzzy.igds.service.SecCameraService; |
| | | import com.fzzy.igds.service.SnapReplyService; |
| | | import com.fzzy.igds.utils.ContextUtil; |
| | | import com.ruoyi.common.config.FrameworkConfig; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.time.DateUtils; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Description AI事件解析 |
| | |
| | | private EventInfoService eventInfoService; |
| | | @Resource |
| | | private FileService fileService; |
| | | @Resource |
| | | private SecCameraService cameraService; |
| | | @Resource |
| | | private SnapReplyService snapReplyService; |
| | | |
| | | /** |
| | | * |
| | | * @param req |
| | | * @param gatewaySer |
| | | * @return |
| | |
| | | public ApiV1Resp<Object> analysis(ApiV1Req<Object> req, GatewaySer gatewaySer) throws Exception { |
| | | |
| | | //转化为对象 |
| | | List<Param3031> list = JSONObject.parseArray(JSONObject.toJSONString(req.getData()), Param3031.class); |
| | | Param3031 param = JSONObject.parseObject(JSONObject.toJSONString(req.getData()), Param3031.class); |
| | | |
| | | if(null == list || list.isEmpty()){ |
| | | if (null == param) { |
| | | return ApiV1Resp.error("抓拍信息为空,不解析!", req); |
| | | } |
| | | |
| | | step1(list, gatewaySer); |
| | | step1(param, gatewaySer); |
| | | |
| | | return ApiV1Resp.success(null, req); |
| | | |
| | |
| | | |
| | | /** |
| | | * 异步解析 |
| | | * @param list |
| | | * |
| | | * @param param |
| | | */ |
| | | @Async |
| | | public void step1(List<Param3031> list, GatewaySer gatewaySer) throws Exception { |
| | | public void step1(Param3031 param, GatewaySer gatewaySer) throws Exception { |
| | | |
| | | EventInfo info; |
| | | for (Param3031 param : list) { |
| | | EventInfo info = new EventInfo(); |
| | | info.setId(ContextUtil.generateId()); |
| | | info.setCompanyId(gatewaySer.getCompanyId()); |
| | | info.setDeptId(gatewaySer.getDeptId()); |
| | | info.setSerId(param.getCameraId()); |
| | | info.setName(param.getName()); |
| | | info.setBizType(param.getBizType()); |
| | | info.setType(param.getType()); |
| | | info.setLevel(param.getLevel()); |
| | | info.setInfo(param.getInfo()); |
| | | info.setTime(DateUtils.parseDate(param.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | info.setTags(param.getTags()); |
| | | |
| | | info = new EventInfo(); |
| | | info.setId(ContextUtil.generateId()); |
| | | info.setCompanyId(gatewaySer.getCompanyId()); |
| | | info.setDeptId(gatewaySer.getDeptId()); |
| | | info.setSerId(param.getCameraId()); |
| | | info.setName(param.getName()); |
| | | info.setBizType(param.getBizType()); |
| | | info.setType(param.getType()); |
| | | info.setLevel(param.getLevel()); |
| | | info.setInfo(param.getInfo()); |
| | | info.setTime(DateUtils.parseDate(param.getTime(),"yyyy-MM-dd HH:mm:ss")); |
| | | info.setTags(param.getTags()); |
| | | //base64转化为图片保存 |
| | | String savePath = fileService.getFileSavePath("EVENT"); |
| | | String fileName = ContextUtil.UUID() + ".jpg"; |
| | | String filePath = savePath + fileName; |
| | | fileService.baseImg2Disk(filePath, param.getImgBase64()); |
| | | |
| | | |
| | | //base64转化为图片保存 |
| | | String savePath = fileService.getFileSavePath("EVENT"); |
| | | String fileName = ContextUtil.UUID() + ".jpg"; |
| | | String filePath = savePath+fileName; |
| | | fileService.baseImg2Disk(filePath, param.getImgBase64()); |
| | | |
| | | //设置保存图片路径 |
| | | info.setImgName(filePath.replace(FrameworkConfig.getProfile(), "/profile/")); |
| | | |
| | | eventInfoService.addData(info); |
| | | //设置保存图片路径 |
| | | info.setImgName(filePath.replace(FrameworkConfig.getProfile(), "/profile/")); |
| | | eventInfoService.addData(info); |
| | | //地磅抓拍判断是否生成批复告警 |
| | | Camera cameraById = cameraService.getCameraById(gatewaySer.getCompanyId(), param.getCameraId()); |
| | | //判断当前抓拍图的触发设备是否是地磅监控设备 |
| | | if(null != cameraById && MonitorPointType.WEIGHBRIDGE_ROOM.getCode().equals(cameraById.getSpdwlx())){ |
| | | String isGenerateAReply = param.getIsGenerateAReply(); |
| | | //判断当前AI事件抓拍,是否触发生成批复告警 |
| | | if(StringUtils.isNotBlank(isGenerateAReply) && Constant.YN_Y.equals(isGenerateAReply)){ |
| | | SnapReply snapReply = new SnapReply(); |
| | | snapReply.setDeptId(gatewaySer.getDeptId()); |
| | | String content = "检测到库区有疑似出入库行为,请核对处理。"; |
| | | snapReply.setContent(content); |
| | | BaseResp baseResp = snapReplyService.addData(snapReply); |
| | | if(BaseResp.isSuccess(baseResp)){ |
| | | log.info("生成回复告警成功!"); |
| | | // todo 推送公众号信息 |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | log.info("质押监管接口V1,3031接口解析完成"); |
| | | |
| | | } |