1. 添加证据ocr识别功能

topo_dev
xueqingkun 9 months ago
parent 2879916e97
commit 18871ba6f9

@ -28,9 +28,15 @@ public class OCREvidenceController {
} }
@PostMapping("/preview") @PostMapping("/fileList")
public R<List<EvidenceFileOCRDTO>> preview(@RequestBody List<String> fileIdList) { public R<List<EvidenceFileOCRDTO>> queryFileList(@RequestBody List<String> fileIdList) {
List<EvidenceFileOCRDTO> evidenceFileOCRDTOList = ocrEvidenceService.previewEvidence(fileIdList); List<EvidenceFileOCRDTO> evidenceFileOCRDTOList = ocrEvidenceService.queryFileList(fileIdList);
return R.ok(evidenceFileOCRDTOList); return R.ok(evidenceFileOCRDTOList);
} }
@PostMapping("/saveEvidence")
public R<String> saveEvidence(@RequestBody EvidenceFileOCRDTO evidenceFileOCRDTO) {
String evidenceId = ocrEvidenceService.saveEvidence(evidenceFileOCRDTO);
return R.ok(evidenceId);
}
} }

@ -34,6 +34,9 @@ public class EvidenceFileOCRDTO {
@Schema(description = "文件属性") @Schema(description = "文件属性")
private Map<String,String> property= new HashMap<>(); private Map<String,String> property= new HashMap<>();
@Schema(description = "文件识别状态 -1:未识别 0正在识别 1识别成功 2识别失败")
private Integer ocrStatus;
public EvidenceFileOCRDTO() { public EvidenceFileOCRDTO() {
} }
@ -45,6 +48,7 @@ public class EvidenceFileOCRDTO {
this.evidenceId = first.getEvidenceId(); this.evidenceId = first.getEvidenceId();
this.fileId = first.getFileId(); this.fileId = first.getFileId();
this.drawImgId = first.getDrawImgId(); this.drawImgId = first.getDrawImgId();
this.ocrStatus = null == first.getOcrStatus() ? -1 : first.getOcrStatus();
properties.forEach(propertyDTO -> properties.forEach(propertyDTO ->
this.property.put(propertyDTO.getPropertyName(),propertyDTO.getPropertyValue())); this.property.put(propertyDTO.getPropertyName(),propertyDTO.getPropertyValue()));
} }

@ -21,4 +21,6 @@ public class OCREvidencePropertyDTO {
@Schema(description = "预览图id") @Schema(description = "预览图id")
private String drawImgId; private String drawImgId;
private Integer ocrStatus;
} }

@ -1,6 +1,5 @@
package com.supervision.police.service; package com.supervision.police.service;
import com.supervision.listener.OCRTaskListener;
import com.supervision.police.domain.FileOcrProcess; import com.supervision.police.domain.FileOcrProcess;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.dto.OCRResDTO; import com.supervision.police.dto.OCRResDTO;

@ -23,7 +23,7 @@ public interface OCREvidenceService {
*/ */
List<FileEvidenceProperty> saveEvidenceProperty(String evidenceId, String fileId, Map<String,String> propertyMap); List<FileEvidenceProperty> saveEvidenceProperty(String evidenceId, String fileId, Map<String,String> propertyMap);
List<EvidenceFileOCRDTO> previewEvidence(List<String> fileIdList); List<EvidenceFileOCRDTO> queryFileList(List<String> fileIdList);
String saveEvidence(EvidenceFileOCRDTO evidenceFileOCRDTO); String saveEvidence(EvidenceFileOCRDTO evidenceFileOCRDTO);
} }

@ -102,7 +102,7 @@ public class OCREvidenceServiceImpl implements OCREvidenceService {
} }
@Override @Override
public List<EvidenceFileOCRDTO> previewEvidence(List<String> fileIdList) { public List<EvidenceFileOCRDTO> queryFileList(List<String> fileIdList) {
if (CollUtil.isEmpty(fileIdList)){ if (CollUtil.isEmpty(fileIdList)){
return new ArrayList<>(1); return new ArrayList<>(1);
@ -145,13 +145,18 @@ public class OCREvidenceServiceImpl implements OCREvidenceService {
private List<EvidenceFileOCRDTO> sortByIdOrder(List<String> fileIdList, List<EvidenceFileOCRDTO> evidenceFileOCRDTOS){ private List<EvidenceFileOCRDTO> sortByIdOrder(List<String> fileIdList, List<EvidenceFileOCRDTO> evidenceFileOCRDTOS){
if (CollUtil.size(fileIdList) < 2 || CollUtil.size(evidenceFileOCRDTOS) < 2) {
return evidenceFileOCRDTOS;
}
Map<String, EvidenceFileOCRDTO> fileOCRDTOMap = evidenceFileOCRDTOS.stream() Map<String, EvidenceFileOCRDTO> fileOCRDTOMap = evidenceFileOCRDTOS.stream()
.collect(Collectors.toMap(EvidenceFileOCRDTO::getFileId, recordFileDTO -> recordFileDTO, (k1, k2) -> k1)); .collect(Collectors.toMap(EvidenceFileOCRDTO::getFileId, recordFileDTO -> recordFileDTO, (k1, k2) -> k1));
return fileIdList.stream().map(fileOCRDTOMap::get).filter(Objects::nonNull).collect(Collectors.toList()); return fileIdList.stream().map(fileId -> {
EvidenceFileOCRDTO evidenceFileOCRDTO = fileOCRDTOMap.get(fileId);
if (Objects.isNull(evidenceFileOCRDTO)) {
evidenceFileOCRDTO = new EvidenceFileOCRDTO();
evidenceFileOCRDTO.setFileId(fileId);
evidenceFileOCRDTO.setOcrStatus(-1);
}
return evidenceFileOCRDTO;
}
).collect(Collectors.toList());
} }
private List<FileEvidenceProperty> toFileEvidence(String evidenceId,String fileId ,Map<String, String> propertyMap){ private List<FileEvidenceProperty> toFileEvidence(String evidenceId,String fileId ,Map<String, String> propertyMap){

@ -26,10 +26,11 @@
ep.evidence_id as evidenceId, ep.evidence_id as evidenceId,
op.file_id as fileId, op.file_id as fileId,
op.draw_img_id as drawImgId, op.draw_img_id as drawImgId,
op.status as ocrStatus,
ep.property_name as propertyName, ep.property_name as propertyName,
ep.property_value as propertyValue ep.property_value as propertyValue
from file_evidence_property ep from file_ocr_process op
left join file_ocr_process op on ep.file_id = op.file_id left join file_evidence_property ep on ep.file_id = op.file_id
where ep.file_id in where ep.file_id in
<foreach collection="fileIdList" item="fileId" open="(" separator="," close=")"> <foreach collection="fileIdList" item="fileId" open="(" separator="," close=")">
#{fileId} #{fileId}

Loading…
Cancel
Save