同步调试环境到现在、使用此版本
parent
9c5c87dded
commit
0ec0ccd7c9
@ -1,16 +1,100 @@
|
||||
package com.docus.server.service.handler;
|
||||
|
||||
import com.docus.core.util.Func;
|
||||
import com.docus.log.annotation.TrackRetryListener;
|
||||
import com.docus.server.api.ocr.OcrApi;
|
||||
import com.docus.server.entity.segmentation.OcrFileInfo;
|
||||
import com.docus.server.entity.segmentation.OcrRuleResult;
|
||||
import com.docus.server.entity.segmentation.OcrSpecialResult;
|
||||
import com.docus.server.entity.segmentation.OcrVersion;
|
||||
import com.docus.server.enums.OcrStatusEnum;
|
||||
import com.docus.server.infrastructure.dao.IOcrFileInfoDao;
|
||||
import com.docus.server.infrastructure.dao.IOcrVersionDao;
|
||||
import com.docus.server.service.IOcrRuleService;
|
||||
import com.docus.server.service.IOcrSpecialRuleService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 开始分段处理器
|
||||
*/
|
||||
@Component
|
||||
public class StartSegmentHandler {
|
||||
|
||||
@Resource
|
||||
private OcrApi ocrApi;
|
||||
@Resource
|
||||
private IOcrFileInfoDao iOcrFileInfoDao;
|
||||
@Resource
|
||||
private IOcrSpecialRuleService iOcrSpecialRuleService;
|
||||
@Resource
|
||||
private IOcrRuleService iOcrRuleService;
|
||||
@Resource
|
||||
private IOcrVersionDao iOcrVersionDao;
|
||||
|
||||
@TrackRetryListener("START_SEGMENT")
|
||||
public void startSegment(String patientId) {
|
||||
System.out.println(patientId);
|
||||
|
||||
boolean isSpecialFile = false;
|
||||
OcrSpecialResult lastSpecialResul = null;
|
||||
|
||||
OcrVersion ocrVersion = iOcrVersionDao.findOneBy("", "");
|
||||
if (ocrVersion==null){
|
||||
throw new RuntimeException("当前没有启用的版本号");
|
||||
}
|
||||
Integer version = ocrVersion.getVersion();
|
||||
|
||||
//根据病案号查询文件列表
|
||||
List<OcrFileInfo> fileInfoList = iOcrFileInfoDao.findBy("patientId",patientId);
|
||||
for (OcrFileInfo fileInfo:fileInfoList) {
|
||||
|
||||
//遍历文件列表 获取ocr识别结果
|
||||
List<String> ocrTextList = ocrApi.getText(fileInfo.getPicCutUrl());
|
||||
|
||||
fileInfo.setOcrText(Func.toJson(ocrTextList));
|
||||
fileInfo.setOcrStatus(OcrStatusEnum.COMPLETE);
|
||||
fileInfo.setOcrFinishTime(new Date());
|
||||
//判断上次是否特殊文件开始 需要判断是否特殊文件结尾
|
||||
if (isSpecialFile){
|
||||
fileInfo.setAssortId(lastSpecialResul.getAssortId());
|
||||
fileInfo.setAssortName(lastSpecialResul.getAssortName());
|
||||
fileInfo.setRuleId(lastSpecialResul.getRuleId());
|
||||
boolean b = iOcrSpecialRuleService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList);
|
||||
if (b){
|
||||
//当前分段为特殊分段结尾
|
||||
isSpecialFile = false;
|
||||
lastSpecialResul = null;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
//优先判断是否特殊规则开始
|
||||
OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleService.handleSpecialRule(ocrTextList,version);
|
||||
//判断是否属于某个分段
|
||||
if (ocrSpecialResult!=null){
|
||||
fileInfo.setAssortId(ocrSpecialResult.getAssortId());
|
||||
fileInfo.setAssortName(ocrSpecialResult.getAssortName());
|
||||
fileInfo.setRuleId(ocrSpecialResult.getRuleId());
|
||||
fileInfo.setHitKey(ocrSpecialResult.getHitKey());
|
||||
fileInfo.setRate(ocrSpecialResult.getRate());
|
||||
|
||||
isSpecialFile = true;
|
||||
lastSpecialResul = ocrSpecialResult;
|
||||
continue;
|
||||
}
|
||||
OcrRuleResult ocrRuleResult = iOcrRuleService.handleRule(ocrTextList,version);
|
||||
//更新文件数据的分段
|
||||
if (ocrRuleResult!=null){
|
||||
fileInfo.setAssortId(ocrRuleResult.getAssortId());
|
||||
fileInfo.setAssortName(ocrRuleResult.getAssortName());
|
||||
fileInfo.setRuleId(ocrRuleResult.getRuleId());
|
||||
fileInfo.setHitKey(ocrRuleResult.getHitKey());
|
||||
fileInfo.setRate(ocrRuleResult.getRate());
|
||||
}
|
||||
}
|
||||
//更新数据库表
|
||||
iOcrFileInfoDao.updateBatchById(fileInfoList,1000);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue