解决空白页导致的问题

segment-new
zhanghai 1 year ago
parent 6c3e42f7ae
commit d2e087030a

@ -108,6 +108,12 @@ public class Strategy {
}
public static void main(String[] args) {
Integer integer = new Strategy().computeText("中西医结合", "中西医不合");
System.out.println(integer);
}
public OcrRuleResult isContent(List<Datas> text){
//校验逻辑列表
List<StrategyResult> strategyResultList = this.getText(text);
@ -121,9 +127,14 @@ public class Strategy {
for (int i = 0; i < this.ruleList.size(); i++) {
Rule rule = this.ruleList.get(i);
if(ocrResult.length()==0){
continue;
}
Integer integer = computeText(ocrResult, rule.getKey());
double rate = (double)rule.getKey().length() / ocrResult.length() * 100;
if (ocrResult.contains(rule.getKey())&&rate>= rule.getScore()||(integer/ ocrResult.length() * 100>rule.getScore())){
if ((ocrResult.contains(rule.getKey())||
(ocrResult.length()==rule.getKey().length()&&ocrResult.length()>2&&ocrResult.length()-integer<2))
&&rate>= rule.getScore()){
OcrRuleResult ocrRuleResult = new OcrRuleResult();
//增加置信值的判断
if (ObjectUtil.isNotEmpty(strategyResult.getSuccess())){

@ -23,6 +23,7 @@ import com.docus.server.vo.ocr.OcrResponse;
import com.docus.server.vo.ocr.Sort;
import com.docus.server.vo.scheduling.management.schcollectorversionfile.UploadFileVO;
import com.docus.server.vo.segmentation.ocrspecialruletestdetail.OcrSpecialRuleTestDetailVO;
import com.google.gson.Gson;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -115,6 +116,44 @@ public class FileController {
Double widthStart = null;
Double widthEnd = null;
log.info("文件上传:"+ new Gson().toJson(request));
if (testData != 1) {
iOcrFileInfoService.delete(request.getPatientId());
}
List<UploadFileVO> segmentation = iFileUploadService.uploadFile(files, "segmentation", height, widthStart, widthEnd);
//将基础信息存到库表里面,后面自动分段后,需要上传到归档系统
Object result = commonService.add(segmentation, request);
if (testData == 1) {
// iPublishEventService.publishEvent(request.getPatientId(), FlowEvent.FlowTypeEnum.START_SEGMENT_TEST);
} else {
startSegmentHandler.startSegment(request.getPatientId(),request.getOcrUrl(),request.getScanUserCode(),request.getScanUserName());
}
log.info("上传成功:"+request.getPatientId());
return result;
}
@ApiOperation("文件上传")
@PostMapping("/upload2")
@ApiImplicitParams({
@ApiImplicitParam(name = "files", value = "文件", required = true, dataTypeClass = MultipartFile.class)
})
public Object uploadFile2(@RequestPart("files") MultipartFile[] files, @Validated UploadBatchFileRequest request) throws Exception {
int testData = request.getTestData();
Double height = null;
Double widthStart = null;
Double widthEnd = null;
log.info("文件上传:"+ new Gson().toJson(request));
if (testData != 1) {
iOcrFileInfoService.delete(request.getPatientId());
}
@ -127,13 +166,16 @@ public class FileController {
if (testData == 1) {
// iPublishEventService.publishEvent(request.getPatientId(), FlowEvent.FlowTypeEnum.START_SEGMENT_TEST);
} else {
startSegmentHandler.startSegment(request.getPatientId(),request.getOcrUrl());
startSegmentHandler.startSegment(request.getPatientId(), request.getOcrUrl(), request.getScanUserCode(), request.getScanUserName());
}
log.info("上传成功:"+request.getPatientId());
return result;
}
@ApiOperation("单张文件上传")
@PostMapping("/singleUpload")
@ApiImplicitParams({

@ -56,7 +56,7 @@ public class OcrRuleNewTestController implements OcrRuleNewTestApi {
@ApiOperation("开始分类ocr--生产")
@Override
public void startSegment(String id) {
startSegmentHandler.startSegment(id,null);
startSegmentHandler.startSegment(id,null,null,null);
}
/**
@ -167,6 +167,18 @@ public class OcrRuleNewTestController implements OcrRuleNewTestApi {
@ApiOperation("新增")
@Override
public void add(AddOcrRuleNewTestDTO addOcrRuleNewTestDTO) {
if(addOcrRuleNewTestDTO.getFrameY2()==null||addOcrRuleNewTestDTO.getFrameY2().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(addOcrRuleNewTestDTO.getFrameX2()==null||addOcrRuleNewTestDTO.getFrameX2().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(addOcrRuleNewTestDTO.getFrameY1()==null||addOcrRuleNewTestDTO.getFrameY1().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(addOcrRuleNewTestDTO.getFrameX1()==null||addOcrRuleNewTestDTO.getFrameX1().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
iOcrRuleNewTestService.add(addOcrRuleNewTestDTO);
iPublishEventService.publishEvent("","", FlowEvent.FlowTypeEnum.START_UPDATE_CONFIG_TEST);
}
@ -190,6 +202,19 @@ public class OcrRuleNewTestController implements OcrRuleNewTestApi {
@ApiOperation("新增或编辑")
@Override
public void addOrEdit(EditOcrRuleNewTestDTO editOcrRuleNewTestDTO) {
if(editOcrRuleNewTestDTO.getFrameY2()==null||editOcrRuleNewTestDTO.getFrameY2().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(editOcrRuleNewTestDTO.getFrameX2()==null||editOcrRuleNewTestDTO.getFrameX2().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(editOcrRuleNewTestDTO.getFrameY1()==null||editOcrRuleNewTestDTO.getFrameY1().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(editOcrRuleNewTestDTO.getFrameX1()==null||editOcrRuleNewTestDTO.getFrameX1().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
iOcrRuleNewTestService.addOrEdit(editOcrRuleNewTestDTO);
}
@ -212,6 +237,18 @@ public class OcrRuleNewTestController implements OcrRuleNewTestApi {
@ApiOperation("编辑")
@Override
public void edit(EditOcrRuleNewTestDTO editOcrRuleNewTestDTO) {
if(editOcrRuleNewTestDTO.getFrameY2()==null||editOcrRuleNewTestDTO.getFrameY2().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(editOcrRuleNewTestDTO.getFrameX2()==null||editOcrRuleNewTestDTO.getFrameX2().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(editOcrRuleNewTestDTO.getFrameY1()==null||editOcrRuleNewTestDTO.getFrameY1().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
if(editOcrRuleNewTestDTO.getFrameX1()==null||editOcrRuleNewTestDTO.getFrameX1().equals("")){
throw new RuntimeException("坐标抽不能为空");
}
iOcrRuleNewTestService.edit(editOcrRuleNewTestDTO);
iPublishEventService.publishEvent("","", FlowEvent.FlowTypeEnum.START_UPDATE_CONFIG_TEST);
}

@ -14,6 +14,7 @@ import com.docus.server.infrastructure.mapper.OcrFileInfoMapper;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -85,6 +86,7 @@ public class OcrFileInfoDaoImpl extends BaseDaoImpl<OcrFileInfoMapper, OcrFileIn
Object patientId = searchDTO.getParams("patientId");
Object assortId = searchDTO.getParams("assortId");
Object picName = searchDTO.getParams("picName");
Object onlyFail = searchDTO.getParams("onlyFail");
@ -99,10 +101,24 @@ public class OcrFileInfoDaoImpl extends BaseDaoImpl<OcrFileInfoMapper, OcrFileIn
}
//默认createTime倒序排序
query.orderByAsc(OcrFileInfo::getCreateTime);
List<OcrFileInfo> list = super.find(query);
return new PageResult<>(list);
List<OcrFileInfo> listNew = new ArrayList<>();
if(Func.isNotEmpty(onlyFail)&&onlyFail.equals("true")){
for(OcrFileInfo ocrFileInfo:list){
String failReason = ocrFileInfo.getFailReason();
if(failReason!=null&&failReason.equals("未匹配到关键字")){
listNew.add(ocrFileInfo);
}
}
}else{
listNew = list;
}
return new PageResult<>(listNew);
}
/**

@ -265,12 +265,12 @@ public class StartSegmentHandler {
@TrackRetryListener("START_SEGMENT")
public void startSegment(String patientId, String ocrUrl) {
public Integer startSegment(String patientId, String ocrUrl,String scanUserCode,String scanUserName) {
OcrVersion ocrVersion = iOcrVersionService.finEnableVersion();
OcrConfigNewVO configNewVO = iOcrConfigNewService.findOneBy("version", ocrVersion.getVersion());
if (Func.isEmpty(configNewVO)) {
return;
return 0;
}
ocrUrl = configNewVO.getOcrUrl();
// if (Func.isEmpty(ocrUrl)) {
@ -326,7 +326,44 @@ public class StartSegmentHandler {
specialResult = null;
singleOcr = true;
// this.setFileInfo(fileInfo, sort, startContent);
break;
//特殊结束后,马上进入正常分段逻辑
OcrRuleResult ocrRuleResult = handleStrategy(ocrTextList);
if (ocrRuleResult == null) {
if (this.isDefaultUsed.equals(1)) {
log.info("进入到默认分段---------------------------------------------");
OcrRuleResult defaultOcrResult = new OcrRuleResult();
defaultOcrResult.setAssortId(this.defaultAssortId);
defaultOcrResult.setAssortName(this.defaultAssortName);
this.setFileInfo(fileInfo, sort, defaultOcrResult);
successNum++;
} else {
//判断是否在人工处理范围,是的话,取人工结果。
OcrManualRecordVO file_id = ocrManualRecordService.findOneBy("picName", fileInfo.getPicName());
if (file_id != null) {
String newAssortId = file_id.getNewAssortId();
String newAssortName = file_id.getNewAssortName();
OcrRuleResult defaultOcrResult = new OcrRuleResult();
defaultOcrResult.setAssortId(newAssortId);
defaultOcrResult.setAssortName(newAssortName);
log.info("进入到分段成功---------------------------------------------");
this.setFileInfo(fileInfo, sort, defaultOcrResult);
successNum++;
} else {
this.setFileInfo(fileInfo, sort, new OcrRuleResult());
fileInfo.setFailReason("未匹配到关键字");
failNum++;
}
}
} else {
log.info("进入到分段成功---------------------------------------------");
this.setFileInfo(fileInfo, sort, ocrRuleResult);
successNum++;
}
}
}
} else {
@ -356,7 +393,7 @@ public class StartSegmentHandler {
} else {
//判断是否在人工处理范围,是的话,取人工结果。
OcrManualRecordVO file_id = ocrManualRecordService.findOneBy("fileId", fileInfo.getId());
OcrManualRecordVO file_id = ocrManualRecordService.findOneBy("picName", fileInfo.getPicName());
if (file_id != null) {
String newAssortId = file_id.getNewAssortId();
@ -432,12 +469,20 @@ public class StartSegmentHandler {
request.setName(ocrBasic.getName());
request.setTestData(0);
request.setFileInfo(JSONUtil.toJsonStr(fileDTOList));
if(scanUserCode!=null){
request.setScanUserCode(scanUserCode);
request.setScanUserName(scanUserName);
}
CommonResult<String> result = platformService.uploadPlatform(files, request);
log.info(ocrBasic.getInpatientNo() + " 上传结果 :{}", result);
if (result.getCode() != 0) {
throw new RuntimeException("上传3.0 报错");
}
return 1;
}else{
return 0;
}
}

@ -146,6 +146,18 @@ public class OcrRuleNewTestServiceImpl implements IOcrRuleNewTestService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(AddOcrRuleNewTestDTO addOcrRuleNewTestDTO) {
if(addOcrRuleNewTestDTO.getFrameX1()==null||addOcrRuleNewTestDTO.getFrameX1().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(addOcrRuleNewTestDTO.getFrameX2()==null||addOcrRuleNewTestDTO.getFrameX2().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(addOcrRuleNewTestDTO.getFrameY2()==null||addOcrRuleNewTestDTO.getFrameY2().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(addOcrRuleNewTestDTO.getFrameY1()==null||addOcrRuleNewTestDTO.getFrameY1().equals("")){
throw new RuntimeException("坐标不能为空");
}
OcrRuleNewTest ocrRuleNewTest =OcrRuleNewTestConvert.INSTANCE.convertDO(addOcrRuleNewTestDTO);
ocrRuleNewTest.setId(idService.getDateSeq());
return iOcrRuleNewTestDao.add(ocrRuleNewTest);
@ -191,6 +203,18 @@ public class OcrRuleNewTestServiceImpl implements IOcrRuleNewTestService {
@Transactional(rollbackFor = Exception.class)
public boolean addOrEdit(EditOcrRuleNewTestDTO editOcrRuleNewTestDTO) {
OcrRuleNewTest ocrRuleNewTest =OcrRuleNewTestConvert.INSTANCE.convertDO(editOcrRuleNewTestDTO);
if(ocrRuleNewTest.getFrameX1()==null||ocrRuleNewTest.getFrameX1().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(ocrRuleNewTest.getFrameX2()==null||ocrRuleNewTest.getFrameX2().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(ocrRuleNewTest.getFrameY2()==null||ocrRuleNewTest.getFrameY2().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(ocrRuleNewTest.getFrameY1()==null||ocrRuleNewTest.getFrameY1().equals("")){
throw new RuntimeException("坐标不能为空");
}
return iOcrRuleNewTestDao.saveOrUpdate(ocrRuleNewTest);
}
@ -213,6 +237,19 @@ public class OcrRuleNewTestServiceImpl implements IOcrRuleNewTestService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean edit(EditOcrRuleNewTestDTO editOcrRuleNewTestDTO) {
if(editOcrRuleNewTestDTO.getFrameX1()==null||editOcrRuleNewTestDTO.getFrameX1().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(editOcrRuleNewTestDTO.getFrameX2()==null||editOcrRuleNewTestDTO.getFrameX2().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(editOcrRuleNewTestDTO.getFrameY2()==null||editOcrRuleNewTestDTO.getFrameY2().equals("")){
throw new RuntimeException("坐标不能为空");
}
if(editOcrRuleNewTestDTO.getFrameY1()==null||editOcrRuleNewTestDTO.getFrameY1().equals("")){
throw new RuntimeException("坐标不能为空");
}
OcrRuleNewTest ocrRuleNewTest =OcrRuleNewTestConvert.INSTANCE.convertDO(editOcrRuleNewTestDTO);
return iOcrRuleNewTestDao.edit(ocrRuleNewTest);

@ -1,7 +1,10 @@
package com.docus.server.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.dto.segmentation.UploadBatchFileRequest;
import lombok.extern.slf4j.Slf4j;
@ -9,6 +12,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -22,6 +26,10 @@ public class PlatformServiceImpl {
@Value("${download.api-url:http://localhost:9291/api/downplatform/uploadFileBatch}")
private String downloadUrl;
@Value("${download.del-url:http://localhost:9291/api/downplatform/deleteFileData}")
private String delUrl;
private final static Lock HTTP_POST_LOCK = new ReentrantLock();
public CommonResult<String> uploadPlatform(List<File> files, UploadBatchFileRequest request) {
@ -55,6 +63,8 @@ public class PlatformServiceImpl {
data.put("fileInfo", request.getFileInfo());
data.put("collectorId", request.getCollectorId());
data.put("scanUserCode",request.getScanUserCode());
data.put("scanUserName",request.getScanUserName());
return uploadFile(data);
} catch (Exception ex) {
return CommonResult.failed(ex.getMessage());
@ -67,6 +77,29 @@ public class PlatformServiceImpl {
HTTP_POST_LOCK.lock();
try {
String patientId = params.get("patientId").toString();
ArrayList<String> patientIds = new ArrayList<>();
patientIds.add(patientId);
// 将List转换为JSON字符串
String json = JSONUtil.toJsonStr(patientIds);
JSONArray jsonArray = new JSONArray();
jsonArray.add(patientId);
log.info("删除请求接口:"+delUrl);
log.info("删除请求参数:"+jsonArray);
String body2 =HttpRequest.post(delUrl)
.contentType("application/json")
.body(json)
.execute()
.body();
log.info(body2);
String body = HttpRequest.post(downloadUrl)
.form(params)
.contentType("multipart/form-data")

@ -58,7 +58,7 @@
</logger>
<springProfile name="dev">
<root level="debug">
<root level="info">
<appender-ref ref="console"/>
</root>

Loading…
Cancel
Save