diff --git a/src/main/java/com/supervision/constant/OcrStatusEnum.java b/src/main/java/com/supervision/constant/OcrStatusEnum.java new file mode 100644 index 0000000..85726e5 --- /dev/null +++ b/src/main/java/com/supervision/constant/OcrStatusEnum.java @@ -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; + } +} diff --git a/src/main/java/com/supervision/police/service/impl/OCREvidenceServiceImpl.java b/src/main/java/com/supervision/police/service/impl/OCREvidenceServiceImpl.java index d0d2bf2..582845a 100644 --- a/src/main/java/com/supervision/police/service/impl/OCREvidenceServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/OCREvidenceServiceImpl.java @@ -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 fileIdList) { - // todo:等待ocr识别完成 - List recordFileDTOS = ocrProcessService.queryFileListWithIdSort(fileIdList); + List recordFileDTOS = waitingOCRFinish(fileIdList, 60 * 2); if (CollUtil.isEmpty(recordFileDTOS)){ log.warn("doRetrieveTitle:文件id:{} 未查询到文件信息...", StrUtil.join(",", fileIdList)); + return; } List dtoList = recordFileDTOS.stream().map(recordFileDTO -> { @@ -250,6 +254,30 @@ public class OCREvidenceServiceImpl implements OCREvidenceService { } + private List waitingOCRFinish(List fileIdList, int timeout){ + + DateTime date = DateUtil.date(); + while (true){ + List 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 properties){ for (FileEvidenceProperty property : properties) { if (StrUtil.equals(fileId, property.getFileId())){ diff --git a/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java b/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java index c1dddae..c9582c2 100644 --- a/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java @@ -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 fileIdList = Arrays.stream(noteRecord.getFileIds().split(",")).toList(); List recordFileDTOS = fileOcrProcessService.queryFileList(fileIdList);