fix:人脸质量上报bug修改
This commit is contained in:
1 parent
da167a46ef
commit
aa3897a651
2 files changed
+28
-9
No files matched your search
+6
@@ -30,4 +30,10 @@ public class SysUserFaceTerminalQualityReportVo {
|
||||
* 请求时服务端已经不存在的样本编号,终端无需将其视为上报失败。
|
||||
*/
|
||||
private List<String> alreadyAbsentSampleIds;
|
||||
|
||||
/**
|
||||
* 未审核通过或服务端编号异常而逐条拒收的样本编号;不影响同批其他样本,
|
||||
* 终端保留待下次重试,样本审核通过后即可正常写入。
|
||||
*/
|
||||
private List<String> ignoredNotApprovedSampleIds;
|
||||
}
|
||||
+22
-9
@@ -477,19 +477,28 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
|
||||
List<SysUserFaceVo> candidates = baseMapper.terminalQualityCandidates(
|
||||
new ArrayList<>(itemBySampleId.keySet()));
|
||||
boolean notApproved = candidates.stream()
|
||||
.anyMatch(face -> !TaskCheckStatusEnum.RESULT.getCode().equals(face.getProcessStatus()));
|
||||
if (notApproved) {
|
||||
throw new RuntimeException("请求包含未审核通过的人脸");
|
||||
}
|
||||
|
||||
// 逐条收集拒收样本而不是整批拒绝:终端调试全租户库可能混有待审核或
|
||||
// 历史脏编号样本,一票否决会让整批(上限500条)永远无法上报成功。
|
||||
Set<String> ignoredNotApprovedSampleIds = new LinkedHashSet<>();
|
||||
LinkedHashMap<String, SysUserFaceVo> candidateBySampleId = new LinkedHashMap<>();
|
||||
Set<String> candidateSampleIds = new HashSet<>();
|
||||
for (SysUserFaceVo candidate : candidates) {
|
||||
String sampleId = StrUtil.trim(candidate.getAutoCode());
|
||||
if (candidate.getId() == null || StrUtil.isBlank(sampleId)
|
||||
|| candidateBySampleId.putIfAbsent(sampleId, candidate) != null) {
|
||||
throw new RuntimeException("服务端存在重复或无效人脸样本编号");
|
||||
if (candidate.getId() == null || StrUtil.isBlank(sampleId)) {
|
||||
continue;
|
||||
}
|
||||
if (candidateSampleIds.contains(sampleId)) {
|
||||
// 服务端存在重复编号:同编号的候选都不可信,整组拒收待数据修复。
|
||||
candidateBySampleId.remove(sampleId);
|
||||
ignoredNotApprovedSampleIds.add(sampleId);
|
||||
continue;
|
||||
}
|
||||
candidateSampleIds.add(sampleId);
|
||||
if (!TaskCheckStatusEnum.RESULT.getCode().equals(candidate.getProcessStatus())) {
|
||||
ignoredNotApprovedSampleIds.add(sampleId);
|
||||
continue;
|
||||
}
|
||||
candidateBySampleId.put(sampleId, candidate);
|
||||
}
|
||||
|
||||
// 不限制样本所属部门:生产终端经 V3 部门快照只持有本部门树人脸,跨部门样本仅出现在
|
||||
@@ -500,6 +509,9 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
for (Map.Entry<String, SysUserFaceQualityReportItemDto> entry : itemBySampleId.entrySet()) {
|
||||
String sampleId = entry.getKey();
|
||||
SysUserFaceQualityReportItemDto item = entry.getValue();
|
||||
if (ignoredNotApprovedSampleIds.contains(sampleId)) {
|
||||
continue;
|
||||
}
|
||||
SysUserFaceVo candidate = candidateBySampleId.get(sampleId);
|
||||
if (candidate == null) {
|
||||
alreadyAbsentSampleIds.add(sampleId);
|
||||
@@ -556,6 +568,7 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
.updatedSampleIds(updatedSampleIds)
|
||||
.ignoredStaleSampleIds(ignoredStaleSampleIds)
|
||||
.alreadyAbsentSampleIds(alreadyAbsentSampleIds)
|
||||
.ignoredNotApprovedSampleIds(new ArrayList<>(ignoredNotApprovedSampleIds))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user