|
|
|
@ -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())){
|
|
|
|
|