From bbf8824bf58e0aa16139351ecb3c567a9b7f6fc8 Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Mon, 7 Aug 2023 11:25:40 +0800 Subject: [PATCH] updates --- .../ocr/controller/OcrIdentifyController.java | 8 ++-- .../jeecg/modules/ocr/entity/OcrIdentify.java | 5 ++- .../modules/ocr/entity/OcrIdentifyDetail.java | 6 +++ .../service/IOcrIdentifyDetailService.java | 9 +++- .../ocr/service/IOcrIdentifyService.java | 1 + .../impl/OcrIdentifyDetailServiceImpl.java | 12 +++++ .../service/impl/OcrIdentifyServiceImpl.java | 44 ++++++++++++++++++- 7 files changed, 79 insertions(+), 6 deletions(-) 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 12e3b46..4ddfd39 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 @@ -327,8 +327,8 @@ public class OcrIdentifyController extends JeecgController pushNotice(@RequestParam(name = "ids", required = true) String ids){ List ocrIdentifyList = ocrIdentifyService.listByIds(Arrays.asList(ids.split(","))); if (ocrIdentifyList==null|| ocrIdentifyList.size()==0) { @@ -340,7 +340,9 @@ public class OcrIdentifyController extends JeecgController fieldRightMap;*/ } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyDetailService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyDetailService.java index fed11a2..ae52aa1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyDetailService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyDetailService.java @@ -3,6 +3,8 @@ package org.jeecg.modules.ocr.service; import org.jeecg.modules.ocr.entity.OcrIdentifyDetail; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @Description: ocr识别结果明细 * @Author: jeecg-boot @@ -10,5 +12,10 @@ import com.baomidou.mybatisplus.extension.service.IService; * @Version: V1.0 */ public interface IOcrIdentifyDetailService extends IService { - + /** + * 根据主数据id,identifyId 获取 明细列表 + * @param identifyId + * @return + */ + List listByIdentifyId(String identifyId); } 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 81f13bb..0c5378a 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 @@ -23,6 +23,7 @@ public interface IOcrIdentifyService extends IService { * 回调无量云接口 * @param ocrIdentifyId */ + @Async public void callbackWly(String ocrIdentifyId); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyDetailServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyDetailServiceImpl.java index f53ea56..8faa071 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyDetailServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyDetailServiceImpl.java @@ -1,5 +1,9 @@ package org.jeecg.modules.ocr.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.commons.lang.StringUtils; import org.jeecg.modules.ocr.entity.OcrIdentifyDetail; import org.jeecg.modules.ocr.mapper.OcrIdentifyDetailMapper; import org.jeecg.modules.ocr.service.IOcrIdentifyDetailService; @@ -7,6 +11,9 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; +import java.util.stream.Collectors; + /** * @Description: ocr识别结果明细 * @Author: jeecg-boot @@ -16,4 +23,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class OcrIdentifyDetailServiceImpl extends ServiceImpl implements IOcrIdentifyDetailService { + @Override + public List listByIdentifyId(String identifyId) { + List list = super.list(new LambdaQueryWrapper().eq(OcrIdentifyDetail::getIdentifyId, identifyId)); + return list; + } } 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 f8888dd..8f43905 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 @@ -243,9 +243,51 @@ public class OcrIdentifyServiceImpl extends ServiceImpl identifyDetailList = ocrIdentifyDetailService.listByIdentifyId(id); + if(true) { + if (identifyDetailList != null && identifyDetailList.size() > 0) { + Map fieldRightMap = new LinkedHashMap<>(); + String tag = null; + boolean ruleValidation = false; + /////明细中,如果有字段成功的,则会覆盖其他明细的匹配失败的情况,如果全都是失败的,会获取第一次失败的. + for (OcrIdentifyDetail ocrIdentifyDetail : identifyDetailList) { + String dataStructured = ocrIdentifyDetail.getDataStructured(); + if (org.apache.commons.lang.StringUtils.isNotBlank(dataStructured)) { + JSONArray jsonArray = JSONObject.parseArray(dataStructured); + List resultList = jsonArray.toJavaList(OcrResult.class); + for (OcrResult result : resultList) { + tag = result.getTag(); + ruleValidation = result.getRuleValidation(); + OcrResult lastResult = fieldRightMap.get(tag); + if (ruleValidation) { + fieldRightMap.put(tag, result); + } else if (lastResult == null && !lastResult.getRuleValidation()) { + fieldRightMap.put(tag, result); + } + } + } + } + //如果明细合并一起,都是成功,则主任务 匹配成功, 否则匹配失败 + List errorResults = fieldRightMap.values().stream().filter(f -> !f.getRuleValidation()).collect(Collectors.toList()); + List ocrResults = fieldRightMap.values().stream().collect(Collectors.toList()); + String taskResultInfo = JSONArray.toJSONString(ocrResults); + updateWrapper.set(OcrIdentify::getTaskResultInfo,taskResultInfo); + if (errorResults.size() > 0) { + //匹配失败. + String errorMsg = errorResults.stream().map(e -> e.getFailureReason()).collect(Collectors.joining(";")); + updateWrapper.set(OcrIdentify::getErrorMsg, errorMsg); + updateWrapper.set(OcrIdentify::getTaskResult, 0); + } else { + //匹配成功. + updateWrapper.set(OcrIdentify::getTaskResult, 1); + } + } + } super.update(updateWrapper); + this.callbackWly(id); - System.out.println("已通过一条!"); + /*System.out.println("已通过一条!");*/ } @Override