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