From 8f20420f9eeb7a61f7cf8a7f1a6a65ebeb935a0b Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 28 Jun 2024 17:53:47 +0800 Subject: [PATCH] =?UTF-8?q?ai=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/call/HikvisionCall.java | 35 +++++++++++-------- .../XzRiskPredictionController.java | 21 +++++------ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 9062d2831..0a4ee1218 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -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() - .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") diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRiskPredictionController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRiskPredictionController.java index c81efe59a..04ff483de 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRiskPredictionController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRiskPredictionController.java @@ -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.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 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 xzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.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); }