fix(aiot): 新增/修改ROI和算法绑定时自动推送配置到Edge
- save() 方法:新增/更新ROI后自动推送配置 - bindAlgo() 方法:绑定算法后自动推送配置 - updateAlgoParams() 方法:更新算法参数后自动推送配置 修复问题:之前只有删除操作会自动推送,导致用户必须手动推送配置才能生效 现在所有CUD操作都会自动推送,修改即生效 注意:需配合Edge端算法状态保留方案,避免频繁reload导致告警状态丢失 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -61,7 +61,10 @@ public class AiRoiServiceImpl implements IAiRoiService {
|
||||
}
|
||||
}
|
||||
|
||||
if (roi.getId() != null && roi.getId() > 0) {
|
||||
boolean isUpdate = roi.getId() != null && roi.getId() > 0;
|
||||
String cameraId = roi.getCameraId();
|
||||
|
||||
if (isUpdate) {
|
||||
AiRoi old = roiMapper.queryById(roi.getId());
|
||||
roiMapper.update(roi);
|
||||
configLogService.addLog("ROI", roi.getRoiId(), toJson(old), toJson(roi), null);
|
||||
@@ -79,6 +82,16 @@ public class AiRoiServiceImpl implements IAiRoiService {
|
||||
roiMapper.add(roi);
|
||||
configLogService.addLog("ROI", roi.getRoiId(), null, toJson(roi), null);
|
||||
}
|
||||
|
||||
// 推送配置到 Edge(新增/更新操作)
|
||||
if (cameraId != null) {
|
||||
try {
|
||||
redisConfigService.writeDeviceAggregatedConfig(cameraId, "UPDATE");
|
||||
log.info("[AiRoi] {}ROI后推送配置到Edge,camera_id={}", isUpdate ? "更新" : "新增", cameraId);
|
||||
} catch (Exception e) {
|
||||
log.error("[AiRoi] {}ROI后推送配置失败,camera_id={}", isUpdate ? "更新" : "新增", cameraId, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,6 +191,20 @@ public class AiRoiServiceImpl implements IAiRoiService {
|
||||
bind.setUpdateTime(now);
|
||||
bindMapper.add(bind);
|
||||
configLogService.addLog("BIND", bind.getBindId(), null, toJson(bind), null);
|
||||
|
||||
// 推送配置到 Edge(绑定算法)
|
||||
String roiId = bind.getRoiId();
|
||||
if (roiId != null) {
|
||||
AiRoi roi = roiMapper.queryByRoiId(roiId);
|
||||
if (roi != null && roi.getCameraId() != null) {
|
||||
try {
|
||||
redisConfigService.writeDeviceAggregatedConfig(roi.getCameraId(), "UPDATE");
|
||||
log.info("[AiRoi] 绑定算法后推送配置到Edge,camera_id={}, algo={}", roi.getCameraId(), bind.getAlgoCode());
|
||||
} catch (Exception e) {
|
||||
log.error("[AiRoi] 绑定算法后推送配置失败,camera_id={}", roi.getCameraId(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -214,6 +241,20 @@ public class AiRoiServiceImpl implements IAiRoiService {
|
||||
bind.setUpdateTime(now);
|
||||
bindMapper.updateByBindId(bind);
|
||||
configLogService.addLog("BIND", bind.getBindId(), toJson(old), toJson(bind), null);
|
||||
|
||||
// 推送配置到 Edge(更新算法参数)
|
||||
String roiId = old.getRoiId();
|
||||
if (roiId != null) {
|
||||
AiRoi roi = roiMapper.queryByRoiId(roiId);
|
||||
if (roi != null && roi.getCameraId() != null) {
|
||||
try {
|
||||
redisConfigService.writeDeviceAggregatedConfig(roi.getCameraId(), "UPDATE");
|
||||
log.info("[AiRoi] 更新算法参数后推送配置到Edge,camera_id={}, bind_id={}", roi.getCameraId(), bind.getBindId());
|
||||
} catch (Exception e) {
|
||||
log.error("[AiRoi] 更新算法参数后推送配置失败,camera_id={}", roi.getCameraId(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String toJson(Object obj) {
|
||||
|
||||
Reference in New Issue
Block a user