diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/OcrConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/OcrConstant.java new file mode 100644 index 0000000..7ff8deb --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/OcrConstant.java @@ -0,0 +1,13 @@ +package org.jeecg.common.constant; + +/** + * @Description ocr模块常量 + * @Author ZhouWenTao + * @Date 2023/7/19 20:34 + */ +public class OcrConstant { + /** + * 规则检查配置 分隔符 + */ + public static String ruleCheckSplitChar="&"; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrApiController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrApiController.java index 95b084c..0d09921 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrApiController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrApiController.java @@ -1,9 +1,16 @@ package org.jeecg.modules.ocr.controller; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.util.RestUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Arrays; +import java.util.List; + /** * @Description * @Author ZhouWenTao @@ -13,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class OcrApiController { + public static final String semanticUrl="http://47.103.213.109:9099/semantic"; /** * 1. 收到 任务 入参 任务id,图片路径[] * POST /semantic @@ -56,4 +64,21 @@ public class OcrApiController { * } * message: "成功" */ + @ApiOperation(value = "请求ocr识别") + @RequestMapping("/push/semantic") + public Result pushSemantic(){ + String taskId="1681203097437954049";//任务id + List imagesUrl= Arrays.asList("https://h5.mcnetmart.com/tmp/images/dc_demo1.png");//图片路径 + for (String image : imagesUrl) { + JSONObject jsonObject=new JSONObject(); + jsonObject.put("taskId",taskId); + jsonObject.put("images",Arrays.asList(image)); + //请求 ocr识别即可 + JSONObject postResponse = RestUtil.post("", jsonObject); + //获取返回结果 + + postResponse.getString(""); + } + return null; + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentify.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentify.java index 661e338..4fc7c57 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentify.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentify.java @@ -105,4 +105,8 @@ public class OcrIdentify implements Serializable { @ApiModelProperty(value = "识别任务优先级") @Dict(dicCode = "task_priority") public String priority; + + /**校验数据源*/ + @ApiModelProperty(value = "校验数据源") + public String sourceJson; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentifyDetail.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentifyDetail.java new file mode 100644 index 0000000..fe73ce3 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrIdentifyDetail.java @@ -0,0 +1,87 @@ +package org.jeecg.modules.ocr.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: ocr识别结果明细 + * @Author: jeecg-boot + * @Date: 2023-07-19 + * @Version: V1.0 + */ +@Data +@TableName("ocr_identify_detail") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ocr_identify_detail对象", description="ocr识别结果明细") +public class OcrIdentifyDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**ocr识别id*/ + @Excel(name = "ocr识别id", width = 15) + @ApiModelProperty(value = "ocr识别id") + private java.lang.String identifyId; + /**识别状态*/ + @Excel(name = "识别状态", width = 15) + @ApiModelProperty(value = "识别状态") + private java.lang.String status; + /**图片名称*/ + @Excel(name = "图片名称", width = 15) + @ApiModelProperty(value = "图片名称") + private java.lang.String imageName; + /**图片地址*/ + @Excel(name = "图片地址", width = 15) + @ApiModelProperty(value = "图片地址") + private java.lang.String imageUrl; + /**识别描述*/ + @Excel(name = "识别描述", width = 15) + @ApiModelProperty(value = "识别描述") + private java.lang.String message; + /**语义化结果*/ + @Excel(name = "语义化结果", width = 15) + @ApiModelProperty(value = "语义化结果") + private java.lang.String semanticResult; + /**数据结构化*/ + @Excel(name = "数据结构化", width = 15) + @ApiModelProperty(value = "数据结构化") + private java.lang.String dataStructured; + /**执行识别时长(秒)*/ + @Excel(name = "执行识别时长(秒)", width = 15) + @ApiModelProperty(value = "执行识别时长(秒)") + private java.lang.Double executionTime; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyDetailMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyDetailMapper.java new file mode 100644 index 0000000..7d48c31 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyDetailMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.ocr.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.ocr.entity.OcrIdentifyDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: ocr识别结果明细 + * @Author: jeecg-boot + * @Date: 2023-07-19 + * @Version: V1.0 + */ +public interface OcrIdentifyDetailMapper extends BaseMapper { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyMapper.java index a52e765..1fcba85 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrIdentifyMapper.java @@ -2,6 +2,7 @@ package org.jeecg.modules.ocr.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.ocr.entity.OcrIdentify; +import org.jeecg.modules.ocr.vo.OcrIdentifyVo; /** * @Description: ocr识别 @@ -11,4 +12,5 @@ import org.jeecg.modules.ocr.entity.OcrIdentify; */ public interface OcrIdentifyMapper extends BaseMapper { + OcrIdentifyVo findById(String id); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckMapper.java index 790d2df..c36bee4 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckMapper.java @@ -18,4 +18,6 @@ import java.util.Map; public interface OcrRuleCheckMapper extends BaseMapper { IPage pageVo(@Param("page")Page page,@Param("p") Map params); + + OcrRuleCheckVo findById(String id); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyDetailMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyDetailMapper.xml new file mode 100644 index 0000000..8dbe0ae --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyDetailMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyMapper.xml index 0a0c5d9..f8911ac 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrIdentifyMapper.xml @@ -2,4 +2,7 @@ + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckMapper.xml index a52c9ad..e3152ab 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckMapper.xml @@ -4,16 +4,21 @@ + + \ No newline at end of file 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 new file mode 100644 index 0000000..fed11a2 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrIdentifyDetailService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.ocr.service; + +import org.jeecg.modules.ocr.entity.OcrIdentifyDetail; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: ocr识别结果明细 + * @Author: jeecg-boot + * @Date: 2023-07-19 + * @Version: V1.0 + */ +public interface IOcrIdentifyDetailService extends IService { + +} 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 3d2032a..51234b5 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 @@ -1,7 +1,9 @@ package org.jeecg.modules.ocr.service; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.ocr.entity.OcrIdentify; +import org.jeecg.modules.ocr.vo.OcrIdentifyVo; /** * @Description: ocr识别 @@ -10,5 +12,10 @@ import org.jeecg.modules.ocr.entity.OcrIdentify; * @Version: V1.0 */ public interface IOcrIdentifyService extends IService { - + public OcrIdentifyVo findById(String id); + /** + * 解析 请求 ocr识别接口的 结果 + * @param responseBody + */ + public void getSemanticInfo(JSONObject responseBody); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java index b6d520d..57c2830 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java @@ -24,4 +24,6 @@ public interface IOcrRuleCheckService extends IService { void removeById(String id); IPage pageVo(Page page, OcrRuleCheck ocrRuleCheck); + + OcrRuleCheckVo findById(String ruleCheck); } 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 new file mode 100644 index 0000000..f53ea56 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrIdentifyDetailServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.ocr.service.impl; + +import org.jeecg.modules.ocr.entity.OcrIdentifyDetail; +import org.jeecg.modules.ocr.mapper.OcrIdentifyDetailMapper; +import org.jeecg.modules.ocr.service.IOcrIdentifyDetailService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: ocr识别结果明细 + * @Author: jeecg-boot + * @Date: 2023-07-19 + * @Version: V1.0 + */ +@Service +public class OcrIdentifyDetailServiceImpl extends ServiceImpl implements IOcrIdentifyDetailService { + +} 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 51c5a3e..0f48d32 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 @@ -1,11 +1,24 @@ package org.jeecg.modules.ocr.service.impl; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.ocr.entity.OcrIdentify; +import org.jeecg.modules.ocr.entity.OcrIdentifyDetail; +import org.jeecg.modules.ocr.entity.OcrRuleCheck; import org.jeecg.modules.ocr.mapper.OcrIdentifyMapper; +import org.jeecg.modules.ocr.service.IOcrIdentifyDetailService; import org.jeecg.modules.ocr.service.IOcrIdentifyService; +import org.jeecg.modules.ocr.service.IOcrRuleCheckDetailService; +import org.jeecg.modules.ocr.service.IOcrRuleCheckService; +import org.jeecg.modules.ocr.vo.OcrIdentifyVo; +import org.jeecg.modules.ocr.vo.OcrRuleCheckVo; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import javax.annotation.Resource; +import java.util.Map; + /** * @Description: ocr识别 * @Author: jeecg-boot @@ -14,5 +27,82 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; */ @Service public class OcrIdentifyServiceImpl extends ServiceImpl implements IOcrIdentifyService { + @Resource + IOcrRuleCheckService ocrRuleCheckService; + @Resource + IOcrIdentifyDetailService ocrIdentifyDetailService; + @Resource + IOcrRuleCheckDetailService ocrRuleCheckDetailService; + + @Override + public OcrIdentifyVo findById(String id){ + OcrIdentifyVo ocrIdentifyVo=baseMapper.findById(id); + if (StringUtils.isNotBlank(ocrIdentifyVo.getSourceJson())) { + ocrIdentifyVo.setSourceJsonObject(JSONObject.parseObject(ocrIdentifyVo.getSourceJson())); + } + //规则检查配置信息 + String ruleCheck = ocrIdentifyVo.getRuleCheck(); + if (StringUtils.isNotBlank(ruleCheck)) { + OcrRuleCheckVo ocrRuleCheck = ocrRuleCheckService.findById(ocrIdentifyVo.getRuleCheck()); + ocrIdentifyVo.setOcrRuleCheckVo(ocrRuleCheck); + } + return ocrIdentifyVo; + } + + + @Override + public void getSemanticInfo(JSONObject responseBody) { + log.debug("打印 ocr 结果:"+responseBody.toString()); + String identifyId = responseBody.getString("identifyId");//任务id + String imgPath = responseBody.getString("img_path");//图片路径 + String imgName = null;//图片名称 + if (StringUtils.isNotBlank(imgPath)) { + imgName = imgPath.substring(imgPath.lastIndexOf("/"),imgPath.length()); + } + String message = responseBody.getString("message");//描述 + String taskStatus = responseBody.getString("taskStatus");//任务是否完成 + Double executionTime = responseBody.getDouble("execution_time");//执行时长(秒) + JSONObject semanticResult = responseBody.getJSONObject("semantic_result");//语义化结果 + // 入库记录 + OcrIdentifyDetail ocrIdentifyDetail = new OcrIdentifyDetail(); + if (semanticResult!=null) { + ocrIdentifyDetail.setIdentifyId(identifyId); + ocrIdentifyDetail.setImageName(imgName); + ocrIdentifyDetail.setImageUrl(imgPath); + ocrIdentifyDetail.setStatus(taskStatus); + ocrIdentifyDetail.setMessage(message); + ocrIdentifyDetail.setExecutionTime(executionTime); + ocrIdentifyDetail.setSemanticResult(semanticResult.toJSONString()); + ocrIdentifyDetailService.save(ocrIdentifyDetail); + } + //=================== + String ocrIdentifyDetailId = ocrIdentifyDetail.getId();//明细id + // 进行数据化 结构 + if (semanticResult!=null) { + OcrIdentifyVo ocrIdentifyVo = this.findById(identifyId); + OcrRuleCheckVo ocrRuleCheckVo = ocrIdentifyVo.getOcrRuleCheckVo(); + + // field,1/0 + Map configRuleMap = ocrRuleCheckVo.getConfigRuleMap(); + // field,fieldname + Map fieldMap = ocrRuleCheckVo.getFieldMap(); + //对参数做匹配 + + JSONObject sourceJsonObject = ocrIdentifyVo.getSourceJsonObject(); + //将 语义化结果 返回的 key 转换成 字段 + for (String field : sourceJsonObject.keySet()) { + String fieldName = sourceJsonObject.getString(field); + semanticResultFor: for (String s : semanticResult.keySet()) { + if (fieldName.contains(s)) { + break semanticResultFor; + } + } + } + for (String s : semanticResult.keySet()) { + + } + } + //========================= + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java index 0494d63..60fc0a3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.commons.lang.StringUtils; +import org.jeecg.common.constant.OcrConstant; import org.jeecg.modules.ocr.entity.OcrMetadataConfig; import org.jeecg.modules.ocr.entity.OcrMetadataConfigDetail; import org.jeecg.modules.ocr.entity.OcrRuleCheck; import org.jeecg.modules.ocr.entity.OcrRuleCheckDetail; +import org.jeecg.modules.ocr.mapper.OcrMetadataConfigDetailMapper; +import org.jeecg.modules.ocr.mapper.OcrMetadataConfigMapper; import org.jeecg.modules.ocr.mapper.OcrRuleCheckMapper; import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel; import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel; @@ -33,6 +36,10 @@ import java.util.Map; public class OcrRuleCheckServiceImpl extends ServiceImpl implements IOcrRuleCheckService { @Resource IOcrRuleCheckDetailService ocrRuleCheckDetailService; + @Resource + OcrMetadataConfigMapper ocrMetadataConfigMapper; + @Resource + OcrMetadataConfigDetailMapper ocrMetadataConfigDetailMapper; @Override public boolean existsByConfigName(String configName, String id) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -111,4 +118,36 @@ public class OcrRuleCheckServiceImpl extends ServiceImpl params=new LinkedHashMap<>(); return baseMapper.pageVo(page,params); } + + @Override + public OcrRuleCheckVo findById(String id) { + OcrRuleCheckVo ocrRuleCheckVo = baseMapper.findById(id); + if (StringUtils.isNotBlank(ocrRuleCheckVo.getConfigRule())) { + String configRule = ocrRuleCheckVo.getConfigRule(); + String[] split = configRule.split(OcrConstant.ruleCheckSplitChar); + + //将 `配置规则` 转成 map + Map configRuleMap=new LinkedHashMap<>(); + for (String s : split) { + String[] split1 = s.split("="); + if (split1.length<=1) { + continue; + } + String s1 = split1[0]; + String s2 = split1[1]; + configRuleMap.put(s1,s2); + } + ocrRuleCheckVo.setConfigRuleMap(configRuleMap); + } + if (StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) { + String metadataConfigId = ocrRuleCheckVo.getMetadataConfigId(); + List ocrMetadataConfigDetails = ocrMetadataConfigDetailMapper.selectList(new LambdaQueryWrapper().eq(OcrMetadataConfigDetail::getMetadataConfigId, metadataConfigId)); + Map fieldMap=new LinkedHashMap<>(); + for (OcrMetadataConfigDetail ocrMetadataConfigDetail : ocrMetadataConfigDetails) { + fieldMap.put(ocrMetadataConfigDetail.getFieldName(),ocrMetadataConfigDetail.getGetField()); + } + ocrRuleCheckVo.setFieldMap(fieldMap); + } + return ocrRuleCheckVo; + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrIdentifyVo.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrIdentifyVo.java new file mode 100644 index 0000000..8c3b6e7 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrIdentifyVo.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.ocr.vo; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.jeecg.modules.ocr.entity.OcrIdentify; +import org.jeecg.modules.ocr.entity.OcrRuleCheck; + +/** + * @Description ocr识别返回对象 + * @Author ZhouWenTao + * @Date 2023/7/19 18:20 + */ +@Data +public class OcrIdentifyVo extends OcrIdentify { + /**规则检查配置*/ + public OcrRuleCheckVo ocrRuleCheckVo; + + /**校验数据源 json对象*/ + public JSONObject sourceJsonObject; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrRuleCheckVo.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrRuleCheckVo.java index 09f22d0..74e70d1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrRuleCheckVo.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/vo/OcrRuleCheckVo.java @@ -15,6 +15,8 @@ import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Map; /** * @Description: 规则检查配置 @@ -28,4 +30,8 @@ public class OcrRuleCheckVo extends OcrRuleCheck { @ApiModelProperty(value = "元数据配置名称") private String metadataConfigName; + + private Map configRuleMap=new LinkedHashMap<>(); + + private Map fieldMap=new LinkedHashMap<>(); }