diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java index d22bb6b..6d03744 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java @@ -133,7 +133,7 @@ public class ApiController { } Thread.sleep(1000L); //3.请求python ocr识别,异步执行 - taskService.postSemantic(ocrIdentify,fileList); + //taskService.postSemantic(ocrIdentify,fileList); //ocrIdentifyService.postSemantic(ocrIdentify, fileList); return Result.OK("请求成功"); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrIdentifyController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrIdentifyController.java index e46698d..70e8439 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrIdentifyController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrIdentifyController.java @@ -182,7 +182,7 @@ public class OcrIdentifyController extends JeecgController list= ocrIdentifyService.getSemanticTaskList(); + if (CollectionUtils.isEmpty(list)) { + continue; + } + + //获取相对路径 + List ocr_relative_path = sysDictService.queryDictItemsByCode("ocr_relative_path"); + String relativePath = null; + if (ocr_relative_path != null && ocr_relative_path.size() > 0) { + for (DictModel dictModel : ocr_relative_path) { + if (dictModel.getValue().equals("0")) { + relativePath = dictModel.getText(); + } + } + } + //获取识别的图片 + List fileList=null; + + //临时变量 + List fileUrlList; + String image;//图片 + //执行获取到的任务 + identifyFor: for (OcrIdentify ocrIdentify : list) { + image=null; + fileList=new ArrayList<>(); + //识别的图片路径 + String imageUrl = ocrIdentify.getIdentifyUrl(); + //判断是不是网络图片 + Boolean onlineFile = FileOUtils.isOnlineFile(ocrIdentify.getIdentifyUrl()); + + //最终要请求ocr识别的图片对象 + JSONObject requestBody = new JSONObject(); + if (onlineFile) { + //如果是网络图片,则将图片下载 + image = FileOUtils.downLoadFromUrl(imageUrl, FileOUtils.getFileName(imageUrl), OcrConstant.FILE_DOWNLOAD_URL_PREFIX); + fileList.add(image); + }else{ + //路径下识别到的图片集合 + fileUrlList = FileOUtils.fileLists(relativePath, ocrIdentify.getIdentifyUrl()); + AssertUtils.notNull(fileUrlList, "图片地址不存在"); + for (String fileUrl : fileUrlList) { + //判断附件是否是 图片格式 + if (fileUrl.lastIndexOf(".png") != -1 || fileUrl.lastIndexOf(".jpg") != -1 || fileUrl.lastIndexOf(".jpeg") != -1) { + fileList.add(fileUrl); + } + } + } + + //最终要识别哪些图片 + int i=0; + for (String img : fileList) { + i++; + requestBody.put("task_id", ocrIdentify.getId()+"_"+i); + requestBody.put("img_path", image); + log.info("----------------------请求参数"); + log.info(requestBody.toJSONString()); + try { + log.info("----------------------请求参数"); + log.info(requestBody.toJSONString()); + JSONObject semanticResponseJson = RestUtil.post(OcrConstant.api_test2_identify_url, requestBody); + semanticResponseJson.put("identifyId", ocrIdentify.getId()); + log.info("ocr识别返回数据:"); + log.info(semanticResponseJson.toJSONString()); + ocrIdentifyService.getSemanticInfo(semanticResponseJson); + }catch (Exception e){ + log.error("识别图片失败:"); + SysLog sysLog=new SysLog(); + sysLog.setLogType(2); + sysLog.setLogContent(img+"_识别图片失败:"+e.getMessage()); + sysLog.setOperateType(2); + sysLogService.save(sysLog); + log.error(e.getMessage()); + log.error("正在重试..."); + continue identifyFor; + } + + } + //更改任务状态 + ocrIdentifyService.updateOcrIdentifyStatus(ocrIdentify.getId(), "1"); + } + } + } + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/init/HandleTransInit.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/init/HandleTransInit.java index 47d0b01..df4be2c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/init/HandleTransInit.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/init/HandleTransInit.java @@ -48,8 +48,9 @@ public class HandleTransInit implements ApplicationRunner { @Override @Async + @Deprecated public void run(ApplicationArguments args) throws UnknownHostException { - if (enableHandleTask) { + if (false) { try { Thread.sleep(5000L); } catch (InterruptedException e) { diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyService.java index 770adba..8d2bbcf 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyService.java @@ -62,4 +62,10 @@ public interface IOcrIdentifyService extends IService { * @param simulateChecksVO */ JSONObject simulateChecks(SimulateChecksVO simulateChecksVO); + + /** + * 获取待执行任务 + * @return + */ + List getSemanticTaskList(); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyServiceImpl.java index d2140bd..d2c6dfe 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyServiceImpl.java @@ -10,6 +10,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.OcrConstant; +import org.jeecg.common.util.AssertUtils; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.RestUtil; import org.jeecg.modules.ocr.dto.OcrIdentifyDTO; @@ -87,13 +88,8 @@ public class OcrIdentifyServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(OcrIdentify::getId, id); List identifyDetailList = ocrIdentifyDetailService.listByIdentifyId(id); @@ -1026,6 +1021,15 @@ public class OcrIdentifyServiceImpl extends ServiceImpl getSemanticTaskList() { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.in(OcrIdentify::getStatus,0,2); + queryWrapper.orderByDesc(OcrIdentify::getPriority);//优先 加急 1>0 不加急 + queryWrapper.ne(OcrIdentify::getTaskSource,"模拟实验");//不获取模拟实验室的数据 + return this.list(queryWrapper); + } + // 自定义的脱敏方法,对字段进行半脱敏 private String desensitizeText(String text) { StringBuilder sb = new StringBuilder(text); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/TaskService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/TaskService.java index 90931a4..899350a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/TaskService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/TaskService.java @@ -100,7 +100,7 @@ public class TaskService { } //获取全部任务 - public List getTaskList() { + public List getTaskList(String ss) { String task_0 = (String) redisUtil.get("task_identify_0"); String task_1 = (String) redisUtil.get("task_identify_1"); /*String task_2 = (String) redisUtil.get("task_2");