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());
|
AiRoi old = roiMapper.queryById(roi.getId());
|
||||||
roiMapper.update(roi);
|
roiMapper.update(roi);
|
||||||
configLogService.addLog("ROI", roi.getRoiId(), toJson(old), toJson(roi), null);
|
configLogService.addLog("ROI", roi.getRoiId(), toJson(old), toJson(roi), null);
|
||||||
@@ -79,6 +82,16 @@ public class AiRoiServiceImpl implements IAiRoiService {
|
|||||||
roiMapper.add(roi);
|
roiMapper.add(roi);
|
||||||
configLogService.addLog("ROI", roi.getRoiId(), null, toJson(roi), null);
|
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);
|
bind.setUpdateTime(now);
|
||||||
bindMapper.add(bind);
|
bindMapper.add(bind);
|
||||||
configLogService.addLog("BIND", bind.getBindId(), null, toJson(bind), null);
|
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
|
@Override
|
||||||
@@ -214,6 +241,20 @@ public class AiRoiServiceImpl implements IAiRoiService {
|
|||||||
bind.setUpdateTime(now);
|
bind.setUpdateTime(now);
|
||||||
bindMapper.updateByBindId(bind);
|
bindMapper.updateByBindId(bind);
|
||||||
configLogService.addLog("BIND", bind.getBindId(), toJson(old), toJson(bind), null);
|
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) {
|
private String toJson(Object obj) {
|
||||||
|
|||||||
Reference in New Issue
Block a user