1. ocr 功能接口联调调整

topo_dev
xueqingkun 8 months ago
parent 3dae2a47f3
commit 2290d85cb7

@ -0,0 +1,24 @@
package com.supervision.constant;
import lombok.Getter;
@Getter
public enum OcrStatusEnum {
//未识别
UNKNOWN("-1","未识别"),
//正在识别
PROCESSING("0","正在识别"),
//识别成功
SUCCESS("1","识别成功"),
//识别失败
FAIL("2","识别失败");
private String code;
private String desc;
OcrStatusEnum(String code, String desc) {
this.code= code;
}
}

@ -1,10 +1,14 @@
package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.constant.EvidencePropertyName;
import com.supervision.constant.OcrStatusEnum;
import com.supervision.police.domain.EvidenceFile;
import com.supervision.police.domain.FileEvidenceProperty;
import com.supervision.police.domain.FileOcrProcess;
@ -213,10 +217,10 @@ public class OCREvidenceServiceImpl implements OCREvidenceService {
@Transactional(rollbackFor = Exception.class,transactionManager = "dataSourceTransactionManager")
public void doRetrieveTitle(List<String> fileIdList) {
// todo:等待ocr识别完成
List<RecordFileDTO> recordFileDTOS = ocrProcessService.queryFileListWithIdSort(fileIdList);
List<RecordFileDTO> recordFileDTOS = waitingOCRFinish(fileIdList, 60 * 2);
if (CollUtil.isEmpty(recordFileDTOS)){
log.warn("doRetrieveTitle:文件id:{} 未查询到文件信息...", StrUtil.join(",", fileIdList));
return;
}
List<OcrExtractDto> dtoList = recordFileDTOS.stream().map(recordFileDTO -> {
@ -250,6 +254,30 @@ public class OCREvidenceServiceImpl implements OCREvidenceService {
}
private List<RecordFileDTO> waitingOCRFinish(List<String> fileIdList, int timeout){
DateTime date = DateUtil.date();
while (true){
List<RecordFileDTO> recordFileDTOS = ocrProcessService.queryFileListWithIdSort(fileIdList);
boolean match = recordFileDTOS.stream().allMatch(recordFileDTO ->
StrUtil.equals(recordFileDTO.getOcrStatus(), OcrStatusEnum.FAIL.getCode())
|| StrUtil.equals(recordFileDTO.getOcrStatus(), OcrStatusEnum.SUCCESS.getCode()));
if (match){
return recordFileDTOS;
}
log.info("waitingOCRFinish:等待文件id:{} 识别完成中...", StrUtil.join(",", fileIdList));
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if (DateUtil.between(date, DateUtil.date(), DateUnit.SECOND) > timeout){
return null;
}
}
}
private boolean evidencePropertiesExist(String fileId, List<FileEvidenceProperty> properties){
for (FileEvidenceProperty property : properties) {
if (StrUtil.equals(fileId, property.getFileId())){

@ -124,6 +124,10 @@ public class OCRRecordServiceImpl implements OCRRecordService {
log.info("submitRecordTask:笔录:{}对应的笔录文件为空...",recordId);
return false;
}
// 修改笔录状态为已提交
noteRecordService.lambdaUpdate().set(NoteRecord::getImgRecordStatus, 3).eq(NoteRecord::getId, recordId).update();
List<String> fileIdList = Arrays.stream(noteRecord.getFileIds().split(",")).toList();
List<RecordFileDTO> recordFileDTOS = fileOcrProcessService.queryFileList(fileIdList);

Loading…
Cancel
Save