This commit is contained in:
guoshengxiong 2024-06-28 17:53:47 +08:00
parent 5272425cad
commit 8f20420f9e
2 changed files with 28 additions and 28 deletions

View File

@ -374,14 +374,14 @@ public class HikvisionCall {
String eventType = eventDetail.getString("eventType");//422000003
JSONObject data = eventDetail.getJSONObject("data");
String imageUrl = data.getString("url"); //海康AI图片地址
String deviceID = data.getString("deviceID"); //海康AI图片地址
String srcIndex = eventDetail.getString("srcIndex"); //海康AI图片地址
AiAnalyseHardWareRecord dev = aiAnalyseHardWareRecordMapper.selectOne(new LambdaQueryWrapper<AiAnalyseHardWareRecord>()
.eq(AiAnalyseHardWareRecord::getHardwareId, deviceID));
.eq(AiAnalyseHardWareRecord::getHardwareId, srcIndex));
if (dev == null) {
log.info("未查到AI识别告警设备设备id{}", deviceID);
log.error("未查到AI识别告警设备设备id{}", srcIndex);
return null;
}
hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, deviceID, dev);
hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, srcIndex, dev);
} else if (Objects.equals(ability, "event_ias")) {
log.info("临边防护告警=======" + paramsJo);
String srcName = eventDetail.getString("srcName");//srcName
@ -445,19 +445,24 @@ public class HikvisionCall {
return;
}
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(dev.getProjectSn());
AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord();
aiAnalyseHardWareAlarmRecord.setCreateTime(createTime);
aiAnalyseHardWareAlarmRecord.setAlarmType(Integer.valueOf(eventType));
aiAnalyseHardWareAlarmRecord.setHardwareId(deviceID);
aiAnalyseHardWareAlarmRecord.setHardwareName(dev.getHardwareName());
aiAnalyseHardWareAlarmRecord.setLocation(srcName);
aiAnalyseHardWareAlarmRecord.setProjectSn(dev.getProjectSn());
aiAnalyseHardWareAlarmRecord.setStatus(1);
AiAnalyseHardWareAlarmRecord record = new AiAnalyseHardWareAlarmRecord();
record.setCreateTime(createTime);
record.setAlarmType(Integer.valueOf(eventType));
record.setHardwareId(deviceID);
record.setHardwareName(dev.getHardwareName());
record.setLocation(srcName);
record.setAlarmDesc(record.getLocation());
record.setProjectSn(dev.getProjectSn());
record.setStatus(1);
String relativePath = projectInfoBySn.getProjectName() + "/" + DateUtil.today();
aiAnalyseHardWareAlarmRecord.setImageUrl(uploadFileService.uploadUrlReturnFileName(imageUrl, relativePath));
aiAnalyseHardWareAlarmRecordMapper.insert(aiAnalyseHardWareAlarmRecord);
try {
record.setImageUrl(uploadFileService.uploadUrlReturnFileName(imageUrl, relativePath));
} catch (Exception e) {
log.error("ai预警图片保存失败", e);
}
aiAnalyseHardWareAlarmRecordMapper.insert(record);
//将数据通过MQTT转发到前台
asyncAiAnalyse.sendAiAnalyse(aiAnalyseHardWareAlarmRecord, Cts.PROJECT_LEVEL_AND_CHILDREN);
asyncAiAnalyse.sendAiAnalyse(record, Cts.PROJECT_LEVEL_AND_CHILDREN);
}
@Async("saveEventCallbackCarPassRecord")

View File

@ -144,7 +144,7 @@ public class XzRiskPredictionController {
resultMap.put("total", list.size());
// 高龄人员
long ageCount = list.stream().filter(l -> StringUtils.isNotBlank(l.getBirthday()) && DateUtil.ageOfNow(l.getBirthday()) >= 50).count();
resultMap.put("age", new BigDecimal(ageCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
resultMap.put("age", list.size() == 0 ? null : new BigDecimal(ageCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
// 特殊工种人数
WorkerType workerType = workerTypeService.getOne(Wrappers.<WorkerType>lambdaQuery()
.eq(WorkerType::getProjectSn, projectSn)
@ -154,7 +154,7 @@ public class XzRiskPredictionController {
.eq(TeamInfo::getWorkerTypeId, workerType.getId()));
if (teamInfoList.size() > 0) {
long workerTypeCount = list.stream().filter(l -> teamInfoList.stream().map(t -> t.getId()).collect(Collectors.toList()).contains(l.getTeamId())).count();
resultMap.put("workerType", new BigDecimal(workerTypeCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
resultMap.put("workerType", list.size() == 0 ? null : new BigDecimal(workerTypeCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
} else {
resultMap.put("workerType", 0);
}
@ -171,7 +171,7 @@ public class XzRiskPredictionController {
List<ExamTrainRecord> trainRecordList = examTrainRecordList.stream().filter(e -> e.getTrainId().toString().equals(record.getId().toString())).collect(Collectors.toList());
if (trainRecordList.size() > 0) {
int pass = trainRecordList.stream().filter(t -> t.getIsPass() == 1).collect(Collectors.toList()).size();
record.setPassRadio(new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP));
record.setPassRadio(trainRecordList.size() == 0 ? null : new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP));
} else {
record.setPassRadio(new BigDecimal(0));
}
@ -179,14 +179,14 @@ public class XzRiskPredictionController {
}
// 教育培训
BigDecimal passRadio = examTrainList.stream().map(e -> e.getPassRadio()).reduce(BigDecimal.ZERO, BigDecimal::add);
resultMap.put("exam", new BigDecimal(1).subtract(passRadio.divide(new BigDecimal(examTrainList.size()), 2, BigDecimal.ROUND_HALF_UP)));
resultMap.put("exam", examTrainList.size() == 0 ? null : new BigDecimal(1).subtract(passRadio.divide(new BigDecimal(examTrainList.size()), 2, BigDecimal.ROUND_HALF_UP)));
} else {
resultMap.put("exam", 0);
}
// 安全评分
Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum();
BigDecimal subtract = new BigDecimal(1).subtract(new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
resultMap.put("safe", subtract.setScale(2, BigDecimal.ROUND_HALF_UP));
BigDecimal subtract = list.size() == 0 ? null : new BigDecimal(1).subtract(new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
resultMap.put("safe", subtract == null ? null : subtract.setScale(2, BigDecimal.ROUND_HALF_UP));
// 安全检查隐患
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
@ -199,13 +199,8 @@ public class XzRiskPredictionController {
resultMap.put("security", 0);
}
// 计算面积
BigDecimal age = new BigDecimal(resultMap.get("age").toString());
BigDecimal exam = new BigDecimal(resultMap.get("exam").toString());
BigDecimal safe = new BigDecimal(resultMap.get("age").toString());
BigDecimal workerType1 = new BigDecimal(resultMap.get("age").toString());
BigDecimal security = new BigDecimal(resultMap.get("age").toString());
resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 6, Double.valueOf(1), age.doubleValue(),
exam.doubleValue(), safe.doubleValue(), workerType1.doubleValue(), security.doubleValue()), 2));
resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 6, Double.valueOf(1), MapUtils.getDouble(resultMap, "age"),
MapUtils.getDouble(resultMap, "exam"), MapUtils.getDouble(resultMap, "safe"), MapUtils.getDouble(resultMap, "age"), MapUtils.getDouble(resultMap, "security")), 2));
return Result.success(resultMap);
}