同步调试环境到现在、使用此版本
parent
9c5c87dded
commit
0ec0ccd7c9
@ -1,16 +1,100 @@
|
|||||||
package com.docus.server.service.handler;
|
package com.docus.server.service.handler;
|
||||||
|
|
||||||
|
import com.docus.core.util.Func;
|
||||||
import com.docus.log.annotation.TrackRetryListener;
|
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 org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开始分段处理器
|
* 开始分段处理器
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class StartSegmentHandler {
|
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")
|
@TrackRetryListener("START_SEGMENT")
|
||||||
public void startSegment(String patientId) {
|
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