1. ocr 功能接口联调调整

topo_dev
xueqingkun 8 months ago
parent 8ca9523d29
commit ec1c037573

@ -7,6 +7,17 @@
# Release Notes
```sql
alter table note_record
add img_record_status int null comment '证据状态 1:暂存 2核实 3提交' after law_asker;
alter table note_record
modify confession_material varchar(128) null comment '供述材料数量';
```
# 发布时间 2024-09-05
# 变更记录
- 修复案件证据分页失效问题

@ -0,0 +1,33 @@
package com.supervision.constant;
import lombok.Getter;
/**
* -1: 0 1 2
*/
@Getter
public enum OcrProcessStatus {
UNPROCESS(-1, "未识别"),
PROCESSING(0, "正在识别"),
SUCCESS(1,"识别成功"),
FAIL(2,"识别失败");
private int code;
private String name;
OcrProcessStatus(int code,String name) {
this.code = code;
this.name = name;
}
public static boolean isFailCode(Integer code) {
if (null == code){
return false;
}
return FAIL.code == code;
}
}

@ -27,7 +27,7 @@ public class OCRRecordController {
*/
@PostMapping("/saveRecord")
public R<String> saveRecord(@RequestBody NoteRecordReqVO noteRecordReqVO) {
String recordId = ocrRecordService.saveRecord(noteRecordReqVO);
String recordId = ocrRecordService.saveRecord(noteRecordReqVO);
return R.ok(recordId);
}
@ -39,7 +39,7 @@ public class OCRRecordController {
*/
@GetMapping("/info")
public R<NoteRecordDTO> queryRecordInfo(@RequestParam("recordId") String recordId) {
NoteRecordDTO noteRecord = ocrRecordService.queryRecordInfo(recordId);
NoteRecordDTO noteRecord = ocrRecordService.queryRecordInfo(recordId);
return R.ok(noteRecord);
}
@ -50,7 +50,7 @@ public class OCRRecordController {
*/
@GetMapping("/queryFileList")
public R<List<RecordFileDTO>> queryFileList(@RequestParam("recordId") String recordId) {
List<RecordFileDTO> recordFileDTOList = ocrRecordService.queryFileList(recordId);
List<RecordFileDTO> recordFileDTOList = ocrRecordService.queryFileList(recordId);
return R.ok(recordFileDTOList);
}
@ -62,7 +62,7 @@ public class OCRRecordController {
@GetMapping("/reOcr")
public R<Boolean> reOcr(@RequestParam("ocrId") String ocrId) {
Boolean success = ocrRecordService.reOcr(ocrId);
Boolean success = ocrRecordService.reOcr(ocrId);
return R.ok(success);
}
@ -73,7 +73,7 @@ public class OCRRecordController {
*/
@PostMapping("/reviseOcrText")
public R<Boolean> reviseOcrText(@RequestBody List<OCRTextDTO> ocrTextDTOList) {
Boolean success = ocrRecordService.reviseOcrText(ocrTextDTOList);
Boolean success = ocrRecordService.reviseOcrText(ocrTextDTOList);
return R.ok(success);
}
@ -85,7 +85,7 @@ public class OCRRecordController {
*/
@GetMapping("/submitTask")
public R<Boolean> submitRecordTask(String recordId) {
Boolean success = ocrRecordService.submitRecordTask(recordId);
Boolean success = ocrRecordService.submitRecordTask(recordId);
return R.ok(success);
}

@ -62,7 +62,7 @@ public class NoteRecord implements Serializable {
/**
*
*/
private Integer confessionMaterial;
private String confessionMaterial;
/**
*
@ -92,6 +92,11 @@ public class NoteRecord implements Serializable {
*/
private String dataStatus;
/**
* 1: 2 3
*/
private Integer imgRecordStatus;
@TableField(exist = false)
private List<NoteRecord> children = new ArrayList<>();

@ -37,7 +37,7 @@ public class NoteRecordDTO {
@Schema(description = "供述材料数量")
private Integer confessionMaterial;
private String confessionMaterial;
@Schema(description = "询问人")

@ -10,6 +10,9 @@ public class RetrieveReqDTO {
*/
private String text;
private String title;
public RetrieveReqDTO() {
}

@ -15,7 +15,7 @@ import java.util.List;
*/
public interface FileOcrProcessMapper extends BaseMapper<FileOcrProcess> {
List<RecordFileDTO> queryFileList(@Param("fileIdList") List<String> fileIdList);
List<RecordFileDTO> queryFileList(@Param("status") String status, @Param("fileIdList") List<String> fileIdList);
}

@ -39,6 +39,9 @@ public interface FileOcrProcessService extends IService<FileOcrProcess> {
List<RecordFileDTO> queryFileList(List<String> fileIdList);
List<RecordFileDTO> queryFileList(String status,List<String> fileIdList);
List<RecordFileDTO> queryListByRecordId(String recordId);
}

@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.constant.OcrProcessStatus;
import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService;
import com.supervision.police.domain.FileOcrProcess;
@ -65,11 +66,26 @@ public class FileOcrProcessServiceImpl extends ServiceImpl<FileOcrProcessMapper,
log.info("submitOCR:fileIds为空。提交ocr任务...");
return new ArrayList<>(1);
}
Map<String, FileOcrProcess> ocrProcessMap = super.lambdaQuery().in(FileOcrProcess::getFileId, fileIdList).list()
.stream().collect(
Collectors.toMap(FileOcrProcess::getFileId, fileOcrProcess -> fileOcrProcess, (k1, k2) -> k1));
List<FileOcrProcess> processList = new ArrayList<>();
for (String fileId : fileIdList) {
FileOcrProcess fileOcrProcess = new FileOcrProcess(fileId, -1);
super.save(fileOcrProcess);
processList.add(fileOcrProcess);
if (null != ocrProcessMap.get(fileId)){
// 跳过识别成功的文件
FileOcrProcess fileOcrProcess = ocrProcessMap.get(fileId);
if (OcrProcessStatus.isFailCode(fileOcrProcess.getStatus())){
fileOcrProcess.setStatus(OcrProcessStatus.UNPROCESS.getCode());
super.updateById(fileOcrProcess);
processList.add(fileOcrProcess);
}
}else {
FileOcrProcess fileOcrProcess = new FileOcrProcess(fileId, OcrProcessStatus.UNPROCESS.getCode());
super.save(fileOcrProcess);
processList.add(fileOcrProcess);
}
}
consumer.accept(processList);
@ -154,7 +170,15 @@ public class FileOcrProcessServiceImpl extends ServiceImpl<FileOcrProcessMapper,
if (CollUtil.isEmpty(fileIdList)){
return new ArrayList<>(1);
}
return super.baseMapper.queryFileList(fileIdList);
return super.baseMapper.queryFileList(null,fileIdList);
}
@Override
public List<RecordFileDTO> queryFileList(String status, List<String> fileIdList) {
if (CollUtil.isEmpty(fileIdList)){
return new ArrayList<>(1);
}
return super.baseMapper.queryFileList(status,fileIdList);
}
@Override

@ -299,7 +299,9 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
for (NoteRecordDetailDTO recordDetailDTO : noteRecordDetailDTOList) {
// 获取文件的文件名称
Set<String> fileNameSet = recordDetailDTO.getFileList().stream().map(NoteRecordFileDTO::getFileName).collect(Collectors.toSet());
recordDetailDTO.setConfessionMaterial(CollUtil.join(fileNameSet, ";"));
if (StrUtil.isEmpty(recordDetailDTO.getConfessionMaterial())){
recordDetailDTO.setConfessionMaterial(CollUtil.join(fileNameSet, ";"));
}
recordDetailDTO.setPercentageValue(taskRecordMap.get(recordDetailDTO.getId()));
recordDetailDTO.setRecordTypeValue(recordFileDTOS);
recordDetailDTO.setSubmittedValue(taskRecordMap.get(recordDetailDTO.getId()));

@ -2,6 +2,8 @@ package com.supervision.police.vo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.police.domain.NoteRecord;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -39,6 +41,9 @@ public class NoteRecordReqVO {
*/
private String confessionMaterial;
@Schema(description = "第n供述材料")
private String indexNum;
@Schema(description = "询问人")
private String lawAsker;
@ -52,6 +57,10 @@ public class NoteRecordReqVO {
@Schema(description = "供述结束时间")
private String confessionEndTime;
@Schema(description = "证据状态 1:暂存 2核实 3提交")
private Integer imgRecordStatus;
public NoteRecord toNoteRecord(){
NoteRecord noteRecord = new NoteRecord();
noteRecord.setId(id);
@ -62,11 +71,15 @@ public class NoteRecordReqVO {
}
noteRecord.setName(name);
noteRecord.setRole(role);
//noteRecord.setConfessionMaterial(confessionMaterial);
if (NumberUtil.isNumber(this.indexNum)){
noteRecord.setIndexNum(Integer.parseInt(this.indexNum));
}
// noteRecord.setConfessionMaterial(confessionMaterial);
noteRecord.setLawAsker(lawAsker);
noteRecord.setConfessionStartTime(confessionStartTime);
noteRecord.setConfessionEndTime(confessionEndTime);
noteRecord.setCasePersonId(personId);
noteRecord.setImgRecordStatus(this.imgRecordStatus);
return noteRecord;
}

@ -35,9 +35,16 @@
op.draw_img_id as drawImgId
from minio_file mf
left join file_ocr_process op on op.file_id = mf.id
where mf.id in
<foreach collection="fileIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<where>
<if test="status != null and status !=''">
op.status = #{status}
</if>
<if test="fileIdList !=null and fileIdList.size > 0">
mf.id in
<foreach collection="fileIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>

Loading…
Cancel
Save