master
周文涛 2 years ago
parent c7551b3df8
commit 03bfda1495

@ -32,6 +32,10 @@ public class OcrConstant {
public static String api_test2_identify_url="http://127.0.0.1:7003/semantic";
//public static String api_test2_identify_url="http://127.0.0.1:8000/semantic";
/**
*
*/
public static String FILE_REVIEW_URL_PREFIX="http://47.103.213.109:8072/files";
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {

@ -2,18 +2,13 @@ package org.jeecg.modules.api.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.*;
import org.jeecg.common.util.filter.FileTypeFilter;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.entity.OcrIdentifyDetail;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
@ -23,28 +18,19 @@ import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.modules.ocr.service.impl.TaskService;
import org.jeecg.modules.ocr.utils.FileOUtils;
import org.jeecg.modules.ocr.utils.ImageUtils;
import org.jeecg.modules.ocr.vo.OcrIdentifyVo;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.dto.OcrIdentifyDTO;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import org.jeecg.modules.system.service.ISysDictService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description
@ -90,7 +76,7 @@ public class ApiController {
AssertUtils.notNull(requestId, "[requestId]-不可为空");
AssertUtils.notTrue(!"door".equals(scenes), String.format("暂不支持该场景类型[%s]", scenes));
AssertUtils.notNull(ruleId, "[ruleId]-不可为空");
OcrRuleCheckVo ruleCheck = ocrRuleCheckService.findById(ruleId);
OcrRuleCheckDTO ruleCheck = ocrRuleCheckService.findById(ruleId);
AssertUtils.notNull(ruleCheck, "[ruleId]-不存在");
AssertUtils.notNull(priority, "[priority]-不可为空");
AssertUtils.notNull(sourceJson, "[sourceJson]-不可为空");
@ -145,10 +131,10 @@ public class ApiController {
@PostMapping(value = "/getRule")
@Transactional(rollbackFor = Exception.class)
public Result<List<JSONObject>> getRule() {
IPage<OcrRuleCheckVo> ocrRuleCheckVoIPage = ocrRuleCheckService.pageVo(new Page<OcrRuleCheck>(1, Integer.MAX_VALUE), new OcrRuleCheck());
IPage<OcrRuleCheckDTO> ocrRuleCheckVoIPage = ocrRuleCheckService.pageVo(new Page<OcrRuleCheck>(1, Integer.MAX_VALUE), new OcrRuleCheck());
List<JSONObject> records = new ArrayList<>();
JSONObject copyEntity = new JSONObject();
for (OcrRuleCheckVo record : ocrRuleCheckVoIPage.getRecords()) {
for (OcrRuleCheckDTO record : ocrRuleCheckVoIPage.getRecords()) {
copyEntity = new JSONObject();
copyEntity.put("ruleId", record.getId());
copyEntity.put("ruleName", record.getConfigName());
@ -257,7 +243,7 @@ public class ApiController {
@ApiOperation(value = "调试101")
@PostMapping(value = "/test_101")
public Result test101(@RequestBody JSONObject jsonObject){
OcrIdentifyVo byId = ocrIdentifyService.findById("1692068694831755265");
OcrIdentifyDTO byId = ocrIdentifyService.findById("1692068694831755265");
ocrIdentifyService.updateTaskResultInfo(byId.getId());
/*OcrRuleCheckVo ocrRuleCheckVo = byId.getOcrRuleCheckVo();
Map<String, String> configRuleMap = ocrRuleCheckVo.getConfigRuleMap();*/

@ -4,26 +4,21 @@ import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.ocr.entity.OcrApiCallStatistics;
import org.jeecg.modules.ocr.entity.OcrMetadataConfig;
import org.jeecg.modules.ocr.model.CommonQueryModel;
import org.jeecg.modules.ocr.vo.CommonQueryVO;
import org.jeecg.modules.ocr.service.IOcrApiCallStatisticsService;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
/**
* @Description: api
* @Author: jeecg-boot
* @Date: 2023-07-14
@ -40,7 +35,7 @@ public class OcrApiCallStatisticsController extends JeecgController<OcrApiCallSt
/**
*
*
* @param commonQueryModel
* @param commonQueryVO
* @param pageNo
* @param pageSize
* @param req
@ -49,12 +44,12 @@ public class OcrApiCallStatisticsController extends JeecgController<OcrApiCallSt
//@AutoLog(value = "api调用统计-分页列表查询")
@ApiOperation(value="api调用统计-分页列表查询", notes="api调用统计-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<OcrApiCallStatistics>> queryPageList(CommonQueryModel commonQueryModel,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
public Result<IPage<OcrApiCallStatistics>> queryPageList(CommonQueryVO commonQueryVO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Page<OcrApiCallStatistics> page = new Page<OcrApiCallStatistics>(pageNo, pageSize);
IPage<OcrApiCallStatistics> pageList = ocrApiCallStatisticsService.pageList(page, commonQueryModel);
IPage<OcrApiCallStatistics> pageList = ocrApiCallStatisticsService.pageList(page, commonQueryVO);
return Result.OK(pageList);
}

@ -1,34 +1,15 @@
package org.jeecg.modules.ocr.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.RestUtil;
import org.jeecg.modules.ocr.entity.OcrApiCallStatistics;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.entity.OcrTaskType;
import org.jeecg.modules.ocr.service.IOcrApiCallStatisticsService;
import org.jeecg.modules.ocr.service.IOcrIdentifyService;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.modules.ocr.service.IOcrTaskTypeService;
import org.jeecg.modules.ocr.utils.FileOUtils;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @Description

@ -11,9 +11,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.OcrConstant;
import org.jeecg.common.constant.enums.OcrStatusEnum;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.query.QueryGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -21,22 +19,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.entity.OcrIdentifyDetail;
import org.jeecg.modules.ocr.entity.OcrMetadataConfig;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.model.OcrResult2;
import org.jeecg.modules.ocr.dto.OcrResultDTO;
import org.jeecg.modules.ocr.service.*;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.ocr.service.impl.TaskService;
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
import org.jeecg.modules.ocr.utils.FileOUtils;
import org.jeecg.modules.ocr.vo.OcrIdentifyExcelVo;
import org.jeecg.modules.ocr.vo.OcrIdentifyVo;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.system.service.ISysDictItemService;
import org.jeecg.modules.ocr.excel.OcrIdentifyExcel;
import org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import org.jeecg.modules.system.service.ISysDictService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
@ -49,7 +43,6 @@ import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: ocr
@ -77,10 +70,6 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
@Autowired
private ISysDictService sysDictService;
@Autowired
private ISysDictItemService sysDictItemService;
@Autowired
private RedisUtil redisUtil;
@Autowired
private TaskService taskService;
/**
*
@ -120,8 +109,8 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
queryWrapper.between("end_time",startTime,endTime);
}
Page<OcrIdentify> page = new Page<>(pageNo, pageSize);
Map<String, OcrRuleCheckVo> ocrRuleCheckMap = ocrRuleCheckService.listToMap(null);
Map<String, OcrMetadataConfigVo> metadataConfigMap = ocrMetadataConfigService.listToMap(null);
Map<String, OcrRuleCheckDTO> ocrRuleCheckMap = ocrRuleCheckService.listToMap(null);
Map<String, OcrMetadataConfigDTO> metadataConfigMap = ocrMetadataConfigService.listToMap(null);
Map<String, String> taskNameMap = ocrTaskTypeService.listNameToMap(null);
IPage<OcrIdentify> pageList = ocrIdentifyService.page(page, queryWrapper);
if (pageList != null && pageList.getRecords() != null &&pageList.getRecords().size()>0) {
@ -131,22 +120,22 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
long count = identifyDetailList.stream().filter(i -> i.getIdentifyId().equals(record.getId())).count();
record.setImgNum(count);
if (StringUtils.isNotBlank(record.getTaskResultInfo())) {
List<OcrResult2> ocrResult2s = JSONObject.parseArray(record.getTaskResultInfo()).toJavaList(OcrResult2.class);
int tagNum = ocrResult2s.size();
int successNum = (int) ocrResult2s.stream().filter(o -> o.getRuleValidation()).count();
List<OcrResultDTO> ocrResultDTOS = JSONObject.parseArray(record.getTaskResultInfo()).toJavaList(OcrResultDTO.class);
int tagNum = ocrResultDTOS.size();
int successNum = (int) ocrResultDTOS.stream().filter(o -> o.getRuleValidation()).count();
record.setTagNum(tagNum);
record.setTagSuccessNum(successNum);
record.setSuccessRate(successNum+"/"+tagNum);
record.setTaskResultInfoList(ocrResult2s);
record.setTaskResultInfoList(ocrResultDTOS);
}
OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckMap.get(record.getRuleCheck());
OcrRuleCheckDTO ocrRuleCheckVo = ocrRuleCheckMap.get(record.getRuleCheck());
if (ocrRuleCheckVo!=null && StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) {
record.setOcrRuleCheckInfoConfigRule(ocrRuleCheckVo.getConfigRule());
record.setMetadataConfigId(ocrRuleCheckVo.getMetadataConfigId());
OcrMetadataConfigVo ocrMetadataConfigVo = metadataConfigMap.get(ocrRuleCheckVo.getMetadataConfigId());
if (ocrMetadataConfigVo!=null) {
record.setTaskType(ocrMetadataConfigVo.getTaskType());
record.setTaskType_dictText(taskNameMap.get(ocrMetadataConfigVo.getTaskType()));
OcrMetadataConfigDTO ocrMetadataConfigDTO = metadataConfigMap.get(ocrRuleCheckVo.getMetadataConfigId());
if (ocrMetadataConfigDTO !=null) {
record.setTaskType(ocrMetadataConfigDTO.getTaskType());
record.setTaskType_dictText(taskNameMap.get(ocrMetadataConfigDTO.getTaskType()));
}
}
}
@ -272,31 +261,31 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
if (ocrIdentify == null) {
return Result.error("未找到对应数据");
}
Map<String, OcrRuleCheckVo> ocrRuleCheckMap = ocrRuleCheckService.listToMap(null);
Map<String, OcrMetadataConfigVo> metadataConfigMap = ocrMetadataConfigService.listToMap(null);
Map<String, OcrRuleCheckDTO> ocrRuleCheckMap = ocrRuleCheckService.listToMap(null);
Map<String, OcrMetadataConfigDTO> metadataConfigMap = ocrMetadataConfigService.listToMap(null);
Map<String, String> taskNameMap = ocrTaskTypeService.listNameToMap(null);
List<OcrIdentifyDetail> identifyDetailList = ocrIdentifyDetailService.list(new LambdaQueryWrapper<OcrIdentifyDetail>().eq(OcrIdentifyDetail::getIdentifyId,id));
ocrIdentify.setImgNum((long)identifyDetailList.size());
if (StringUtils.isNotBlank(ocrIdentify.getTaskResultInfo())) {
List<OcrResult2> ocrResult2s = JSONObject.parseArray(ocrIdentify.getTaskResultInfo()).toJavaList(OcrResult2.class);
int tagNum = ocrResult2s.size();
int successNum = (int) ocrResult2s.stream().filter(o -> o.getRuleValidation()).count();
List<OcrResultDTO> ocrResultDTOList = JSONObject.parseArray(ocrIdentify.getTaskResultInfo()).toJavaList(OcrResultDTO.class);
int tagNum = ocrResultDTOList.size();
int successNum = (int) ocrResultDTOList.stream().filter(o -> o.getRuleValidation()).count();
ocrIdentify.setTagNum(tagNum);
ocrIdentify.setTagSuccessNum(successNum);
ocrIdentify.setSuccessRate(successNum+"/"+tagNum);
ocrIdentify.setTaskResultInfoList(ocrResult2s);
ocrIdentify.setTaskResultInfoList(ocrResultDTOList);
}
OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckMap.get(ocrIdentify.getRuleCheck());
OcrRuleCheckDTO ocrRuleCheckVo = ocrRuleCheckMap.get(ocrIdentify.getRuleCheck());
if (ocrRuleCheckVo!=null && StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) {
ocrIdentify.setOcrRuleCheckInfoConfigRule(ocrRuleCheckVo.getConfigRule());
ocrIdentify.setRuleCheck_dictText(ocrRuleCheckVo.getConfigName());
ocrIdentify.setMetadataConfigId(ocrRuleCheckVo.getMetadataConfigId());
ocrIdentify.setMetadataConfigId_dictText(ocrRuleCheckVo.getMetadataConfigName());
OcrMetadataConfigVo ocrMetadataConfigVo = metadataConfigMap.get(ocrRuleCheckVo.getMetadataConfigId());
if (ocrMetadataConfigVo!=null) {
ocrIdentify.setTaskType(ocrMetadataConfigVo.getTaskType());
ocrIdentify.setTaskType_dictText(taskNameMap.get(ocrMetadataConfigVo.getTaskType()));
OcrMetadataConfigDTO ocrMetadataConfigDTO = metadataConfigMap.get(ocrRuleCheckVo.getMetadataConfigId());
if (ocrMetadataConfigDTO !=null) {
ocrIdentify.setTaskType(ocrMetadataConfigDTO.getTaskType());
ocrIdentify.setTaskType_dictText(taskNameMap.get(ocrMetadataConfigDTO.getTaskType()));
}
}
return Result.OK(ocrIdentify);
@ -335,19 +324,19 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<OcrIdentifyExcelVo> list = ExcelImportUtil.importExcel(file.getInputStream(), OcrIdentifyExcelVo.class, params);
List<OcrIdentifyExcel> list = ExcelImportUtil.importExcel(file.getInputStream(), OcrIdentifyExcel.class, params);
//update-begin-author:taoyan date:20190528 for:批量插入数据
long start = System.currentTimeMillis();
//service.saveBatch(list);
List<OcrIdentify> ocrIdentifyList=new ArrayList<>();
for (OcrIdentifyExcelVo ocrIdentifyExcelVo : list) {
for (OcrIdentifyExcel ocrIdentifyExcel : list) {
OcrIdentify ocrIdentify=new OcrIdentify();
BeanUtils.copyProperties(ocrIdentifyExcelVo,ocrIdentify);
BeanUtils.copyProperties(ocrIdentifyExcel,ocrIdentify);
//通过规则检查配置名称 反查 规则检查配置id
if (StringUtils.isNotBlank(ocrIdentifyExcelVo.getRuleCheck())) {
LambdaQueryWrapper<OcrRuleCheck> queryWrapper = new LambdaQueryWrapper<OcrRuleCheck>().eq(OcrRuleCheck::getConfigName, ocrIdentifyExcelVo.getRuleCheck());
if (StringUtils.isNotBlank(ocrIdentifyExcel.getRuleCheck())) {
LambdaQueryWrapper<OcrRuleCheck> queryWrapper = new LambdaQueryWrapper<OcrRuleCheck>().eq(OcrRuleCheck::getConfigName, ocrIdentifyExcel.getRuleCheck());
List<OcrRuleCheck> ruleChecklist = ocrRuleCheckService.list(queryWrapper);
if (ruleChecklist!=null&&ruleChecklist.size()>0) {
ocrIdentify.setRuleCheck(ruleChecklist.get(0).getId());
@ -355,7 +344,7 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
}
String checkDataSource = ocrIdentifyExcelVo.getCheckDataSource();
String checkDataSource = ocrIdentifyExcel.getCheckDataSource();
String[] split = checkDataSource.split("&");
List<JSONObject> sourceJson = new ArrayList<>();

@ -13,11 +13,8 @@ import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
@ -25,16 +22,15 @@ import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.JeecgBaseConfig;
import org.jeecg.modules.ocr.entity.OcrIdentify;
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.model.OcrMetadataConfigSaveModel;
import org.jeecg.modules.ocr.vo.SaveOcrMetadataConfigVO;
import org.jeecg.modules.ocr.service.IOcrMetadataConfigService;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
import org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@ -49,7 +45,6 @@ import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description:
@ -83,26 +78,26 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
//@AutoLog(value = "元数据配置-分页列表查询")
@ApiOperation(value = "元数据配置-分页列表查询", notes = "元数据配置-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<OcrMetadataConfigVo>> queryPageList(OcrMetadataConfig ocrMetadataConfig,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
public Result<IPage<OcrMetadataConfigDTO>> queryPageList(OcrMetadataConfig ocrMetadataConfig,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
Page<OcrMetadataConfig> page = new Page<OcrMetadataConfig>(pageNo, pageSize);
IPage<OcrMetadataConfigVo> pageList = ocrMetadataConfigService.pageVo(page, ocrMetadataConfig);
IPage<OcrMetadataConfigDTO> pageList = ocrMetadataConfigService.pageVo(page, ocrMetadataConfig);
return Result.OK(pageList);
}
@ApiOperation(value = "元数据配置-下拉列表", notes = "元数据配置-下拉列表")
@GetMapping(value = "/allList")
public Result<List<OcrMetadataConfigVo>> allList(HttpServletRequest req) {
List<OcrMetadataConfigVo> allList = ocrMetadataConfigService.allList(null);
public Result<List<OcrMetadataConfigDTO>> allList(HttpServletRequest req) {
List<OcrMetadataConfigDTO> allList = ocrMetadataConfigService.allList(null);
return Result.OK(allList);
}
/**
*
*
* @param ocrMetadataConfigSaveModel
* @param saveOcrMetadataConfigVO
* @return
*/
@AutoLog(value = "元数据配置-添加")
@ -110,24 +105,24 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_metadata_config:add")
@PostMapping(value = "/add")
@Transactional(rollbackFor = Exception.class)
public Result<String> add(@RequestBody OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel) {
checkSaveModel(ocrMetadataConfigSaveModel);
String configName = ocrMetadataConfigSaveModel.getConfigName();
public Result<String> add(@RequestBody SaveOcrMetadataConfigVO saveOcrMetadataConfigVO) {
checkSaveModel(saveOcrMetadataConfigVO);
String configName = saveOcrMetadataConfigVO.getConfigName();
boolean existsFlag = ocrMetadataConfigService.existsByConfigName(configName, null);//true 已存在,false不存在
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", configName));
ocrMetadataConfigService.saveModel(ocrMetadataConfigSaveModel);
ocrMetadataConfigService.saveModel(saveOcrMetadataConfigVO);
return Result.OK("添加成功!");
}
/**
*
*
* @param ocrMetadataConfigSaveModel
* @param saveOcrMetadataConfigVO
*/
public void checkSaveModel(OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel) {
AssertUtils.notEmpty(ocrMetadataConfigSaveModel.getConfigName(), "[配置名称]不可为空");
if (ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList() != null) {
for (OcrMetadataConfigDetail detail : ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList()) {
public void checkSaveModel(SaveOcrMetadataConfigVO saveOcrMetadataConfigVO) {
AssertUtils.notEmpty(saveOcrMetadataConfigVO.getConfigName(), "[配置名称]不可为空");
if (saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList() != null) {
for (OcrMetadataConfigDetail detail : saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList()) {
AssertUtils.notEmpty(detail.getFieldName(), "[字段名称]不可为空");
AssertUtils.notEmpty(detail.getGetField(), "[获取字段]不可为空");
}
@ -137,20 +132,20 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
/**
*
*
* @param ocrMetadataConfigSaveModel
* @param saveOcrMetadataConfigVO
* @return
*/
@AutoLog(value = "元数据配置-编辑")
@ApiOperation(value = "元数据配置-编辑", notes = "元数据配置-编辑")
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_metadata_config:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> edit(@RequestBody OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel) {
checkSaveModel(ocrMetadataConfigSaveModel);
AssertUtils.notEmpty(ocrMetadataConfigSaveModel.getId(), "[id]不可为空");
String configName = ocrMetadataConfigSaveModel.getConfigName();
boolean existsFlag = ocrMetadataConfigService.existsByConfigName(configName, ocrMetadataConfigSaveModel.getId());//true 已存在,false不存在
public Result<String> edit(@RequestBody SaveOcrMetadataConfigVO saveOcrMetadataConfigVO) {
checkSaveModel(saveOcrMetadataConfigVO);
AssertUtils.notEmpty(saveOcrMetadataConfigVO.getId(), "[id]不可为空");
String configName = saveOcrMetadataConfigVO.getConfigName();
boolean existsFlag = ocrMetadataConfigService.existsByConfigName(configName, saveOcrMetadataConfigVO.getId());//true 已存在,false不存在
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", configName));
ocrMetadataConfigService.updateModel(ocrMetadataConfigSaveModel);
ocrMetadataConfigService.updateModel(saveOcrMetadataConfigVO);
return Result.OK("编辑成功!");
}
@ -197,8 +192,8 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
//@AutoLog(value = "元数据配置-通过id查询")
@ApiOperation(value = "元数据配置-通过id查询", notes = "元数据配置-通过id查询")
@GetMapping(value = "/queryById")
public Result<OcrMetadataConfigVo> queryById(@RequestParam(name = "id", required = true) String id) {
OcrMetadataConfigVo ocrMetadataConfig = ocrMetadataConfigService.findById(id);
public Result<OcrMetadataConfigDTO> queryById(@RequestParam(name = "id", required = true) String id) {
OcrMetadataConfigDTO ocrMetadataConfig = ocrMetadataConfigService.findById(id);
if (ocrMetadataConfig == null) {
return Result.error("未找到对应数据");
}
@ -220,7 +215,7 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
List<OcrMetadataConfigVo> exportList = new ArrayList<>();
List<OcrMetadataConfigDTO> exportList = new ArrayList<>();
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
exportList = ocrMetadataConfigService.allList(selectionList);
@ -228,7 +223,7 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
if(true){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
mv.addObject(NormalExcelConstants.FILE_NAME, title);
mv.addObject(NormalExcelConstants.CLASS, OcrMetadataConfigVo.class);
mv.addObject(NormalExcelConstants.CLASS, OcrMetadataConfigDTO.class);
ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
exportParams.setImageBasePath(jeecgBaseConfig.getPath().getUpload());
mv.addObject(NormalExcelConstants.PARAMS, exportParams);
@ -265,15 +260,15 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<OcrMetadataConfigVo> list = ExcelImportUtil.importExcel(file.getInputStream(), OcrMetadataConfigVo.class, params);
List<OcrMetadataConfigDTO> list = ExcelImportUtil.importExcel(file.getInputStream(), OcrMetadataConfigDTO.class, params);
AssertUtils.hasSize(list,"未获取到数据!");
//判断重复字段名
Map<String, Long> countMap = list.stream().map(o->o.getConfigName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
AssertUtils.notTrue(countMap.values().stream().filter(f->f>1).count()>0,"不可有重复的配置名称!");
//入库保存的元数据对象
List<OcrMetadataConfigSaveModel> saveModelList=new ArrayList<>();
List<SaveOcrMetadataConfigVO> saveModelList=new ArrayList<>();
//元数据循环copy add的对象
OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel;
SaveOcrMetadataConfigVO saveOcrMetadataConfigVO;
//元数据循环遍历用的对象
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList;
OcrMetadataConfigDetail ocrMetadataConfigDetail;
@ -282,12 +277,12 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
String getField;//字段描述
List<String> resultList;
List<String> getFieldList;
for (OcrMetadataConfigVo configVo : list) {
ocrMetadataConfigSaveModel=new OcrMetadataConfigSaveModel();
ocrMetadataConfigSaveModel.setConfigName(configVo.getConfigName());
for (OcrMetadataConfigDTO configVo : list) {
saveOcrMetadataConfigVO =new SaveOcrMetadataConfigVO();
saveOcrMetadataConfigVO.setConfigName(configVo.getConfigName());
resultName = configVo.getResultName();
getField = configVo.getGetField();
ocrMetadataConfigSaveModel.setTaskTypeName(configVo.getTaskType_dictText());
saveOcrMetadataConfigVO.setTaskTypeName(configVo.getTaskType_dictText());
resultList=new ArrayList<>();
getFieldList=new ArrayList<>();
if (StringUtils.isNotBlank(resultName)) {
@ -304,8 +299,8 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
ocrMetadataConfigDetail.setGetField(getFieldList.get(i));
ocrMetadataConfigDetailList.add(ocrMetadataConfigDetail);
}
ocrMetadataConfigSaveModel.setOcrMetadataConfigDetailList(ocrMetadataConfigDetailList);
saveModelList.add(ocrMetadataConfigSaveModel);
saveOcrMetadataConfigVO.setOcrMetadataConfigDetailList(ocrMetadataConfigDetailList);
saveModelList.add(saveOcrMetadataConfigVO);
}
long start = System.currentTimeMillis();
ocrMetadataConfigService.saveModelBatch(saveModelList);

@ -12,11 +12,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
@ -25,15 +22,13 @@ import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.JeecgBaseConfig;
import org.jeecg.modules.ocr.entity.*;
import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel;
import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
import org.jeecg.modules.ocr.vo.SaveOcrRuleCheckVO;
import org.jeecg.modules.ocr.service.IOcrIdentifyService;
import org.jeecg.modules.ocr.service.IOcrMetadataConfigService;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@ -47,7 +42,6 @@ import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description:
@ -82,10 +76,10 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
//@AutoLog(value = "规则检查配置-分页列表查询")
@ApiOperation(value = "规则检查配置-分页列表查询", notes = "规则检查配置-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<OcrRuleCheckVo>> queryPageList(OcrRuleCheck ocrRuleCheck,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
public Result<IPage<OcrRuleCheckDTO>> queryPageList(OcrRuleCheck ocrRuleCheck,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
/*if (StringUtils.isNotBlank(ocrRuleCheck.getConfigName())) {
ocrRuleCheck.setConfigName("*" + ocrRuleCheck.getConfigName() + "*");
}*/
@ -96,55 +90,55 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
ocrRuleCheck.setConfigRule("*" + ocrRuleCheck.getConfigRule() + "*");
}*/
Page<OcrRuleCheck> page = new Page<OcrRuleCheck>(pageNo, pageSize);
IPage<OcrRuleCheckVo> pageList = ocrRuleCheckService.pageVo(page, ocrRuleCheck);
IPage<OcrRuleCheckDTO> pageList = ocrRuleCheckService.pageVo(page, ocrRuleCheck);
return Result.OK(pageList);
}
/**
*
*
* @param ocrRuleCheckSaveModel
* @param saveOcrRuleCheckVO
* @return
*/
@AutoLog(value = "规则检查配置-添加")
@ApiOperation(value = "规则检查配置-添加", notes = "规则检查配置-添加")
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_rule_check:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
checkSaveModel(ocrRuleCheckSaveModel);
String configName = ocrRuleCheckSaveModel.getConfigName();
public Result<String> add(@RequestBody SaveOcrRuleCheckVO saveOcrRuleCheckVO) {
checkSaveModel(saveOcrRuleCheckVO);
String configName = saveOcrRuleCheckVO.getConfigName();
boolean existsFlag = ocrRuleCheckService.existsByConfigName(configName, null);//true 已存在,false不存在
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", configName));
ocrRuleCheckService.saveModel(ocrRuleCheckSaveModel);
ocrRuleCheckService.saveModel(saveOcrRuleCheckVO);
return Result.OK("添加成功!");
}
/**
*
*
* @param ocrRuleCheckSaveModel
* @param saveOcrRuleCheckVO
*/
public void checkSaveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
AssertUtils.notEmpty(ocrRuleCheckSaveModel.getConfigName(), "[配置名称]不可为空");
public void checkSaveModel(SaveOcrRuleCheckVO saveOcrRuleCheckVO) {
AssertUtils.notEmpty(saveOcrRuleCheckVO.getConfigName(), "[配置名称]不可为空");
}
/**
*
*
* @param ocrRuleCheckSaveModel
* @param saveOcrRuleCheckVO
* @return
*/
@AutoLog(value = "规则检查配置-编辑")
@ApiOperation(value = "规则检查配置-编辑", notes = "规则检查配置-编辑")
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_rule_check:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> edit(@RequestBody OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
checkSaveModel(ocrRuleCheckSaveModel);
String configName = ocrRuleCheckSaveModel.getConfigName();
AssertUtils.notEmpty(ocrRuleCheckSaveModel.getId(), "[id]不可为空");
boolean existsFlag = ocrRuleCheckService.existsByConfigName(configName, ocrRuleCheckSaveModel.getId());//true 已存在,false不存在
public Result<String> edit(@RequestBody SaveOcrRuleCheckVO saveOcrRuleCheckVO) {
checkSaveModel(saveOcrRuleCheckVO);
String configName = saveOcrRuleCheckVO.getConfigName();
AssertUtils.notEmpty(saveOcrRuleCheckVO.getId(), "[id]不可为空");
boolean existsFlag = ocrRuleCheckService.existsByConfigName(configName, saveOcrRuleCheckVO.getId());//true 已存在,false不存在
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", configName));
ocrRuleCheckService.updateModel(ocrRuleCheckSaveModel);
ocrRuleCheckService.updateModel(saveOcrRuleCheckVO);
return Result.OK("编辑成功!");
}
@ -214,7 +208,7 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
List<OcrRuleCheckVo> exportList = new ArrayList<>();
List<OcrRuleCheckDTO> exportList = new ArrayList<>();
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
exportList = ocrRuleCheckService.allList(selectionList);
@ -222,7 +216,7 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
if (true) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
mv.addObject(NormalExcelConstants.FILE_NAME, title);
mv.addObject(NormalExcelConstants.CLASS, OcrRuleCheckVo.class);
mv.addObject(NormalExcelConstants.CLASS, OcrRuleCheckDTO.class);
ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
exportParams.setImageBasePath(jeecgBaseConfig.getPath().getUpload());
mv.addObject(NormalExcelConstants.PARAMS, exportParams);
@ -259,20 +253,20 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<OcrRuleCheckSaveModel> list = ExcelImportUtil.importExcel(file.getInputStream(), OcrRuleCheckSaveModel.class, params);
List<SaveOcrRuleCheckVO> list = ExcelImportUtil.importExcel(file.getInputStream(), SaveOcrRuleCheckVO.class, params);
AssertUtils.hasSize(list, "未获取到数据!");
//判断重复字段名
Map<String, Long> countMap = list.stream().map(o -> o.getConfigName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
AssertUtils.notTrue(countMap.values().stream().filter(f -> f > 1).count() > 0, "不可有重复的配置名称!");
Map<String, String> metadataConfigNameMap = ocrMetadataConfigService.list(new LambdaQueryWrapper<>()).stream().collect(Collectors.toMap(OcrMetadataConfig::getConfigName, OcrMetadataConfig::getId));
List<OcrRuleCheckSaveModel> saveModelList = new ArrayList<>();
OcrRuleCheckSaveModel ocrRuleCheckSaveModel;
List<SaveOcrRuleCheckVO> saveModelList = new ArrayList<>();
SaveOcrRuleCheckVO saveOcrRuleCheckVO;
boolean existsFlag = false;
String configRule;//规则配置
String metadataConfigName;//元数据配置名称
String metadataConfigId;//元数据配置id
for (OcrRuleCheckSaveModel configVo : list) {
ocrRuleCheckSaveModel = new OcrRuleCheckSaveModel();
for (SaveOcrRuleCheckVO configVo : list) {
saveOcrRuleCheckVO = new SaveOcrRuleCheckVO();
metadataConfigName = configVo.getMetadataConfigName();
configRule = configVo.getConfigRule();
metadataConfigId = metadataConfigNameMap.get(metadataConfigName);
@ -280,10 +274,10 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
existsFlag = ocrRuleCheckService.existsByConfigName(configVo.getConfigName(), null);//true 已存在,false不存在
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", configVo.getConfigName()));
AssertUtils.notEmpty(metadataConfigId, String.format("[元数据配置]-%s 不存在", metadataConfigName));
ocrRuleCheckSaveModel.setConfigName(configVo.getConfigName());
ocrRuleCheckSaveModel.setConfigRule(configRule);
ocrRuleCheckSaveModel.setMetadataConfigId(metadataConfigId);
saveModelList.add(ocrRuleCheckSaveModel);
saveOcrRuleCheckVO.setConfigName(configVo.getConfigName());
saveOcrRuleCheckVO.setConfigRule(configRule);
saveOcrRuleCheckVO.setMetadataConfigId(metadataConfigId);
saveModelList.add(saveOcrRuleCheckVO);
}
long start = System.currentTimeMillis();
ocrRuleCheckService.saveModelBatch(saveModelList);

@ -111,9 +111,7 @@ public class OcrSimulatorController{
List<String> identifyDetailIdList = simulateChecksVO.getIdentifyDetailIdList();
AssertUtils.notEmpty(ruleCheckId, "请选择[规则扫描器]");
AssertUtils.hasSize(identifyDetailIdList,"请先上传图片");
ocrIdentifyService.simulateChecks(simulateChecksVO);
//图片明细的id
return Result.OK();
return Result.OK(ocrIdentifyService.simulateChecks(simulateChecksVO));
}
}

@ -1,13 +1,11 @@
package org.jeecg.modules.ocr.vo;
package org.jeecg.modules.ocr.dto;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import java.util.List;
import java.util.Map;
/**
* @Description ocr
@ -15,9 +13,9 @@ import java.util.Map;
* @Date 2023/7/19 18:20
*/
@Data
public class OcrIdentifyVo extends OcrIdentify {
public class OcrIdentifyDTO extends OcrIdentify {
/**规则检查配置*/
public OcrRuleCheckVo ocrRuleCheckVo;
public OcrRuleCheckDTO ocrRuleCheckVo;
/**校验数据源 json对象*/
public List<JSONObject> sourceJsonObjects;

@ -1,4 +1,4 @@
package org.jeecg.modules.ocr.vo;
package org.jeecg.modules.ocr.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
@ -16,7 +16,7 @@ import java.util.List;
* @Date 2023/7/17 16:53
*/
@Data
public class OcrMetadataConfigVo extends OcrMetadataConfig {
public class OcrMetadataConfigDTO extends OcrMetadataConfig {
/**任务类型_字段中文*/
@Excel(name = "任务类型", width = 15)
private String taskType_dictText;

@ -1,7 +1,8 @@
package org.jeecg.modules.ocr.model;
package org.jeecg.modules.ocr.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.modules.ocr.model.SourceImage;
/**
* @Description ocr
@ -9,7 +10,7 @@ import lombok.Data;
* @Date 2023/7/21 14:51
*/
@Data
public class OcrResult {
public class OcrResultDTO {
@ApiModelProperty(value = "检索字段")
private String tag;
@ApiModelProperty(value = "检索字段名称")

@ -1,4 +1,4 @@
package org.jeecg.modules.ocr.vo;
package org.jeecg.modules.ocr.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@ -23,7 +23,7 @@ import java.util.*;
* @Version: V1.0
*/
@Data
public class OcrRuleCheckVo extends OcrRuleCheck {
public class OcrRuleCheckDTO extends OcrRuleCheck {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "元数据配置名称")
@Excel(name = "元数据配置名称", width = 15)

@ -5,15 +5,13 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.ocr.model.OcrResult2;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.dto.OcrResultDTO;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
@ -22,8 +20,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.persistence.Table;
/**
* @Description: ocr
* @Author: jeecg-boot
@ -150,7 +146,7 @@ public class OcrIdentify implements Serializable {
private String taskType_dictText;
@TableField(exist = false)
private List<OcrResult2> taskResultInfoList=new ArrayList<>();
private List<OcrResultDTO> taskResultInfoList=new ArrayList<>();
@TableField(exist = false)
private Integer tagNum=0;
@TableField(exist = false)

@ -1,24 +1,11 @@
package org.jeecg.modules.ocr.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
package org.jeecg.modules.ocr.excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.ocr.model.OcrResult2;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author
@ -27,7 +14,7 @@ import java.util.List;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class OcrIdentifyExcelVo implements Serializable {
public class OcrIdentifyExcel implements Serializable {
@Excel(name = "RequestId",width = 15)
@ApiModelProperty(value = "请求id")
public String requestId;

@ -2,7 +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;
import org.jeecg.modules.ocr.dto.OcrIdentifyDTO;
import java.util.List;
@ -14,11 +14,11 @@ import java.util.List;
*/
public interface OcrIdentifyMapper extends BaseMapper<OcrIdentify> {
OcrIdentifyVo findById(String id);
OcrIdentifyDTO findById(String id);
/**
* .
* @return
*/
List<OcrIdentifyVo> findListOfWlyCallBack();
List<OcrIdentifyDTO> findListOfWlyCallBack();
}

@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.ocr.entity.OcrMetadataConfig;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
import org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO;
import java.util.List;
import java.util.Map;
@ -18,7 +18,7 @@ import java.util.Map;
*/
public interface OcrMetadataConfigMapper extends BaseMapper<OcrMetadataConfig> {
IPage<OcrMetadataConfigVo> pageVo(@Param("page") Page<OcrMetadataConfig> page,@Param("o") Map<String,Object> params);
IPage<OcrMetadataConfigDTO> pageVo(@Param("page") Page<OcrMetadataConfig> page, @Param("o") Map<String,Object> params);
List<OcrMetadataConfigVo> allList(@Param("idList") List<String> idList);
List<OcrMetadataConfigDTO> allList(@Param("idList") List<String> idList);
}

@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import java.util.List;
import java.util.Map;
@ -18,9 +18,9 @@ import java.util.Map;
*/
public interface OcrRuleCheckMapper extends BaseMapper<OcrRuleCheck> {
IPage<OcrRuleCheckVo> pageVo(@Param("page")Page<OcrRuleCheck> page,@Param("p") Map<String, Object> params);
IPage<OcrRuleCheckDTO> pageVo(@Param("page")Page<OcrRuleCheck> page, @Param("p") Map<String, Object> params);
OcrRuleCheckVo findById(String id);
OcrRuleCheckDTO findById(String id);
List<OcrRuleCheckVo> allList(@Param("selectionList")List<String> selectionList);
List<OcrRuleCheckDTO> allList(@Param("selectionList")List<String> selectionList);
}

@ -2,11 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.ocr.mapper.OcrIdentifyMapper">
<select id="findById" resultType="org.jeecg.modules.ocr.vo.OcrIdentifyVo">
<select id="findById" resultType="org.jeecg.modules.ocr.dto.OcrIdentifyDTO">
SELECT * FROM ocr_identify WHERE id = #{id}
</select>
<select id="findListOfWlyCallBack" resultType="org.jeecg.modules.ocr.vo.OcrIdentifyVo">
<select id="findListOfWlyCallBack" resultType="org.jeecg.modules.ocr.dto.OcrIdentifyDTO">
SELECT identify.* FROM ocr_identify identify
</select>
</mapper>

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.ocr.mapper.OcrMetadataConfigMapper">
<select id="pageVo" resultType="org.jeecg.modules.ocr.vo.OcrMetadataConfigVo">
<select id="pageVo" resultType="org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO">
SELECT oc.*,
GROUP_CONCAT(ocd.field_name)as resultName,
GROUP_CONCAT(ocd.get_field)as getField,
@ -27,7 +27,7 @@
order by oc.update_time desc
</select>
<select id="allList" resultType="org.jeecg.modules.ocr.vo.OcrMetadataConfigVo">
<select id="allList" resultType="org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO">
SELECT oc.*,
tasktype.type_name as taskType_dictText
FROM ocr_metadata_config oc

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.ocr.mapper.OcrRuleCheckMapper">
<select id="pageVo" resultType="org.jeecg.modules.ocr.vo.OcrRuleCheckVo">
<select id="pageVo" resultType="org.jeecg.modules.ocr.dto.OcrRuleCheckDTO">
SELECT
ocr.*,omc.config_name as metadataConfigName
FROM ocr_rule_check ocr
@ -17,12 +17,12 @@
order by ocr.update_time desc
</select>
<select id="findById" resultType="org.jeecg.modules.ocr.vo.OcrRuleCheckVo">
<select id="findById" resultType="org.jeecg.modules.ocr.dto.OcrRuleCheckDTO">
SELECT * FROM ocr_rule_check ocr
WHERE ocr.id = #{id}
</select>
<select id="allList" resultType="org.jeecg.modules.ocr.vo.OcrRuleCheckVo">
<select id="allList" resultType="org.jeecg.modules.ocr.dto.OcrRuleCheckDTO">
SELECT
ocr.*,omc.config_name as metadataConfigName
FROM ocr_rule_check ocr

@ -1,29 +0,0 @@
package org.jeecg.modules.ocr.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description ocr
* @Author ZhouWenTao
* @Date 2023/7/21 14:51
*/
@Data
public class OcrResult2 {
@ApiModelProperty(value = "字段")
private String tag;
@ApiModelProperty(value = "字段名称")
private String tagName;
/*@ApiModelProperty(value = "api输入值")
private String inputText;
@ApiModelProperty(value = "ocr识别文本")
private String ocrText;
@ApiModelProperty(value = "ocr识别置信度")
private Double ocrPrecisionRate;
@ApiModelProperty(value = "图片来源")
private SourceImage sourceImage;*/
@ApiModelProperty(value = "失败原因")
private String failureReason;
@ApiModelProperty(value = "规则验证结果")
private Boolean ruleValidation=false;
}

@ -1,5 +1,6 @@
package org.jeecg.modules.ocr.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -10,7 +11,12 @@ import lombok.Data;
@Data
public class SourceImage {
//附件名称
@ApiModelProperty(value = "附件名称")
private String fileName;
//附件地址
@ApiModelProperty(value = "附件地址")
private String path;
//预览地址
@ApiModelProperty(value = "预览地址")
private String previewUrl;
}

@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.ocr.entity.OcrApiCallStatistics;
import org.jeecg.modules.ocr.model.CommonQueryModel;
import org.jeecg.modules.ocr.vo.CommonQueryVO;
import java.util.Date;
@ -16,7 +16,7 @@ import java.util.Date;
*/
public interface IOcrApiCallStatisticsService extends IService<OcrApiCallStatistics> {
IPage<OcrApiCallStatistics> pageList(Page<OcrApiCallStatistics> page, CommonQueryModel commonQueryModel);
IPage<OcrApiCallStatistics> pageList(Page<OcrApiCallStatistics> page, CommonQueryVO commonQueryVO);
String saveLogs(String apiName, String apiUrl, int count);

@ -2,10 +2,9 @@ package org.jeecg.modules.ocr.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.checkerframework.checker.units.qual.A;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.vo.OcrIdentifyVo;
import org.jeecg.modules.ocr.dto.OcrIdentifyDTO;
import org.jeecg.modules.ocr.vo.SimulateChecksVO;
import org.springframework.scheduling.annotation.Async;
@ -19,7 +18,7 @@ import java.util.List;
*/
public interface IOcrIdentifyService extends IService<OcrIdentify> {
//单条根据id自定义返回结果对象方法
public OcrIdentifyVo findById(String id);
public OcrIdentifyDTO findById(String id);
/**
*
@ -62,5 +61,5 @@ public interface IOcrIdentifyService extends IService<OcrIdentify> {
*
* @param simulateChecksVO
*/
void simulateChecks(SimulateChecksVO simulateChecksVO);
JSONObject simulateChecks(SimulateChecksVO simulateChecksVO);
}

@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.ocr.entity.OcrMetadataConfig;
import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
import org.jeecg.modules.ocr.vo.SaveOcrMetadataConfigVO;
import org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO;
import java.util.List;
import java.util.Map;
@ -28,17 +28,17 @@ public interface IOcrMetadataConfigService extends IService<OcrMetadataConfig> {
/**
*
* @param ocrMetadataConfigSaveModel
* @param saveOcrMetadataConfigVO
* @return
*/
void saveModel(OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel);
void saveModel(SaveOcrMetadataConfigVO saveOcrMetadataConfigVO);
/**
*
* @param ocrMetadataConfigSaveModel
* @param saveOcrMetadataConfigVO
* @return
*/
OcrMetadataConfig updateModel(OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel);
OcrMetadataConfig updateModel(SaveOcrMetadataConfigVO saveOcrMetadataConfigVO);
/**
*
@ -46,13 +46,13 @@ public interface IOcrMetadataConfigService extends IService<OcrMetadataConfig> {
* @param ocrMetadataConfig
* @return
*/
IPage<OcrMetadataConfigVo> pageVo(Page<OcrMetadataConfig> page, OcrMetadataConfig ocrMetadataConfig);
IPage<OcrMetadataConfigDTO> pageVo(Page<OcrMetadataConfig> page, OcrMetadataConfig ocrMetadataConfig);
List<OcrMetadataConfigVo> allList(List<String> idList);
List<OcrMetadataConfigDTO> allList(List<String> idList);
OcrMetadataConfigVo findById(String id);
OcrMetadataConfigDTO findById(String id);
void saveModelBatch(List<OcrMetadataConfigSaveModel> saveModelList);
void saveModelBatch(List<SaveOcrMetadataConfigVO> saveModelList);
Map<String, OcrMetadataConfigVo> listToMap(List<String> idList);
Map<String, OcrMetadataConfigDTO> listToMap(List<String> idList);
}

@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.vo.SaveOcrRuleCheckVO;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import java.util.List;
import java.util.Map;
@ -27,16 +27,16 @@ public interface IOcrRuleCheckService extends IService<OcrRuleCheck> {
/**
*
* @param ocrRuleCheckSaveModel
* @param saveOcrRuleCheckVO
*/
void saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
void saveModel(SaveOcrRuleCheckVO saveOcrRuleCheckVO);
/**
*
* @param ocrRuleCheckSaveModel
* @param saveOcrRuleCheckVO
* @return
*/
OcrRuleCheck updateModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
OcrRuleCheck updateModel(SaveOcrRuleCheckVO saveOcrRuleCheckVO);
/**
*
@ -50,28 +50,28 @@ public interface IOcrRuleCheckService extends IService<OcrRuleCheck> {
* @param ocrRuleCheck
* @return
*/
IPage<OcrRuleCheckVo> pageVo(Page<OcrRuleCheck> page, OcrRuleCheck ocrRuleCheck);
IPage<OcrRuleCheckDTO> pageVo(Page<OcrRuleCheck> page, OcrRuleCheck ocrRuleCheck);
/**
* id
* @param ruleCheck
* @return
*/
OcrRuleCheckVo findById(String ruleCheck);
OcrRuleCheckDTO findById(String ruleCheck);
/**
*
* @param saveModelList
*/
void saveModelBatch(List<OcrRuleCheckSaveModel> saveModelList);
void saveModelBatch(List<SaveOcrRuleCheckVO> saveModelList);
/**
* id
* @param selectionList
* @return
*/
List<OcrRuleCheckVo> allList(List<String> selectionList);
List<OcrRuleCheckDTO> allList(List<String> selectionList);
Map<String, OcrRuleCheckVo> listToMap(List<String> selectionList);
Map<String, OcrRuleCheckDTO> listToMap(List<String> selectionList);
}

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang.StringUtils;
import org.jeecg.modules.ocr.entity.OcrApiCallStatistics;
import org.jeecg.modules.ocr.mapper.OcrApiCallStatisticsMapper;
import org.jeecg.modules.ocr.model.CommonQueryModel;
import org.jeecg.modules.ocr.vo.CommonQueryVO;
import org.jeecg.modules.ocr.service.IOcrApiCallStatisticsService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -26,14 +26,14 @@ import java.util.Map;
public class OcrApiCallStatisticsServiceImpl extends ServiceImpl<OcrApiCallStatisticsMapper, OcrApiCallStatistics> implements IOcrApiCallStatisticsService {
@Override
public IPage<OcrApiCallStatistics> pageList(Page<OcrApiCallStatistics> page, CommonQueryModel commonQueryModel) {
public IPage<OcrApiCallStatistics> pageList(Page<OcrApiCallStatistics> page, CommonQueryVO commonQueryVO) {
Map<String,Object> map=new LinkedHashMap<>();
map.put("apiUrl",commonQueryModel.getApiUrl());
map.put("count",commonQueryModel.getCount());
if (StringUtils.isNotBlank(commonQueryModel.getStartTime())&&StringUtils.isNotBlank(commonQueryModel.getEndTime())) {
map.put("apiUrl", commonQueryVO.getApiUrl());
map.put("count", commonQueryVO.getCount());
if (StringUtils.isNotBlank(commonQueryVO.getStartTime())&&StringUtils.isNotBlank(commonQueryVO.getEndTime())) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
map.put("startTime",commonQueryModel.getStartTime()+" 00:00:00");
map.put("endTime",commonQueryModel.getEndTime()+" 23:59:59");
map.put("startTime", commonQueryVO.getStartTime()+" 00:00:00");
map.put("endTime", commonQueryVO.getEndTime()+" 23:59:59");
}
IPage<OcrApiCallStatistics> pageList = this.baseMapper.pageList(page,map);
return pageList;

@ -1,6 +1,5 @@
package org.jeecg.modules.ocr.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -9,9 +8,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.OcrConstant;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.RestUtil;
import org.jeecg.modules.ocr.dto.OcrResultDTO;
import org.jeecg.modules.ocr.entity.OcrIdentify;
import org.jeecg.modules.ocr.entity.OcrIdentifyCallbackLog;
import org.jeecg.modules.ocr.entity.OcrIdentifyDetail;
@ -22,8 +21,8 @@ import org.jeecg.modules.ocr.utils.ArrayOUtils;
import org.jeecg.modules.ocr.utils.FileOUtils;
import org.jeecg.modules.ocr.utils.ImageUtils;
import org.jeecg.modules.ocr.utils.StrCharUtil;
import org.jeecg.modules.ocr.vo.OcrIdentifyVo;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.dto.OcrIdentifyDTO;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import org.jeecg.modules.ocr.vo.SimulateChecksVO;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
@ -63,20 +62,20 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
IOcrIdentifyCallbackLogService ocrIdentifyCallbackLogService;
@Override
public OcrIdentifyVo findById(String id) {
OcrIdentifyVo ocrIdentifyVo = baseMapper.findById(id);
if (StringUtils.isNotBlank(ocrIdentifyVo.getSourceJson())) {
JSONArray jsonArray = JSONObject.parseArray(ocrIdentifyVo.getSourceJson());
public OcrIdentifyDTO findById(String id) {
OcrIdentifyDTO ocrIdentifyDTO = baseMapper.findById(id);
if (StringUtils.isNotBlank(ocrIdentifyDTO.getSourceJson())) {
JSONArray jsonArray = JSONObject.parseArray(ocrIdentifyDTO.getSourceJson());
List<JSONObject> jsonObjects = jsonArray.toJavaList(JSONObject.class);
ocrIdentifyVo.setSourceJsonObjects(jsonObjects);
ocrIdentifyDTO.setSourceJsonObjects(jsonObjects);
}
//规则检查配置信息
String ruleCheck = ocrIdentifyVo.getRuleCheck();
String ruleCheck = ocrIdentifyDTO.getRuleCheck();
if (StringUtils.isNotBlank(ruleCheck)) {
OcrRuleCheckVo ocrRuleCheck = ocrRuleCheckService.findById(ocrIdentifyVo.getRuleCheck());
ocrIdentifyVo.setOcrRuleCheckVo(ocrRuleCheck);
OcrRuleCheckDTO ocrRuleCheck = ocrRuleCheckService.findById(ocrIdentifyDTO.getRuleCheck());
ocrIdentifyDTO.setOcrRuleCheckVo(ocrRuleCheck);
}
return ocrIdentifyVo;
return ocrIdentifyDTO;
}
@ -148,13 +147,13 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
}
//===================
if (semanticResult != null) {
OcrIdentifyVo ocrIdentifyVo = this.findById(identifyId);
OcrRuleCheckVo ocrRuleCheckVo = ocrIdentifyVo.getOcrRuleCheckVo();
Map<String, CheckSemanticModel> checkSemanticModelMap = getCheckSemanticModelMap(ocrRuleCheckVo.getConfigRuleMap(), ocrRuleCheckVo.getFieldMap(), ocrIdentifyVo.getSourceJsonObjects());
OcrIdentifyDTO ocrIdentifyDTO = this.findById(identifyId);
OcrRuleCheckDTO ocrRuleCheckVo = ocrIdentifyDTO.getOcrRuleCheckVo();
Map<String, CheckSemanticModel> checkSemanticModelMap = getCheckSemanticModelMap(ocrRuleCheckVo.getConfigRuleMap(), ocrRuleCheckVo.getFieldMap(), ocrIdentifyDTO.getSourceJsonObjects());
String text = null;//ocr 识别的文本
Double probability = 0d;
//用于数据结构化的对象
List<OcrResult> ocrResultList = new ArrayList<>();
List<OcrResultDTO> ocrResultDTOList = new ArrayList<>();
StringBuffer rMessage = new StringBuffer();
Map<String, Boolean> fieldRightMap = new LinkedHashMap<>();//存放 字段判断正确map
//==========================
@ -190,16 +189,16 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
if (StringUtils.isBlank(text) || StringUtils.isBlank(inputText)) {
//没识别值
mapPutIfTrue(fieldRightMap, field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数不判断", true,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数不判断", true,ruleInfo);
} else {
double v = StrCharUtil.similarityRatio(inputText, text);
if (text.contains(inputText)) {
mapPutIfTrue(fieldRightMap, field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,"101");
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,"101");
} else {
rMessage.append(value.getFieldName() + "参数不匹配<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
}
}
} else {
@ -207,37 +206,37 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
//ocr识别参数为空不通过
rMessage.append(value.getFieldName() + "参数未获取到结果<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
} else if (StringUtils.isBlank(inputText)) {
//没有输入值.
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "没有输入值不做匹配", true,null);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "没有输入值不做匹配", true,null);
} else if ("0".equals(ruleInfo)) {
//不必校验,有识别到就行,通过
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true,ruleInfo);
} else if (Double.valueOf(ruleInfo) >= 1 && Double.valueOf(ruleInfo) <= 99) {
//在1~99之间根据精准度匹配
double v = StrCharUtil.similarityRatio(inputText, text);
if (v >= Double.valueOf(ruleInfo)) {
//准确度 可靠
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
} else {
rMessage.append(value.getFieldName() + "参数不匹配<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
}
} else if ("100".equals(ruleInfo)) {
//必定验证参数,必须有值且匹配
double v = StrCharUtil.similarityRatio(inputText, text);
if (text.equals(inputText)) {
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
} else {
rMessage.append(value.getFieldName() + "参数不匹配<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
}
}
}
@ -245,11 +244,11 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
} else {
rMessage.append(value.getFieldName() + "参数未获取到结果<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
}
} else {
rMessage.append(value.getFieldName() + "参数未获取到结果<br>");
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, 0d, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, 0d, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
fieldRightMap.put(field, false);
}
}
@ -268,7 +267,7 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
ocrIdentifyDetail.setStatus("0");//有失败的
ocrIdentifyDetail.setMessage(rMessage.toString());
}
ocrIdentifyDetail.setDataStructured(JSONArray.toJSONString(ocrResultList));//数据结构化
ocrIdentifyDetail.setDataStructured(JSONArray.toJSONString(ocrResultDTOList));//数据结构化
ocrIdentifyDetailService.updateById(ocrIdentifyDetail);
}
//=========================
@ -316,14 +315,14 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
@Async
public void updateOcrIdentifyStatus(String id, String status) {
//4.更新主任务状态
OcrIdentifyVo ocrIdentifyVo = this.findById(id);
OcrRuleCheckVo ocrRuleCheckVo = ocrIdentifyVo.getOcrRuleCheckVo();
OcrIdentifyDTO ocrIdentifyDTO = this.findById(id);
OcrRuleCheckDTO ocrRuleCheckVo = ocrIdentifyDTO.getOcrRuleCheckVo();
LambdaUpdateWrapper<OcrIdentify> updateWrapper = new LambdaUpdateWrapper<OcrIdentify>();
updateWrapper.eq(OcrIdentify::getId, id);
List<OcrIdentifyDetail> identifyDetailList = ocrIdentifyDetailService.listByIdentifyId(id);
if (true) {
if (identifyDetailList != null && identifyDetailList.size() > 0) {
Map<String, OcrResult2> fieldRightMap = new LinkedHashMap<>();
Map<String, OcrResultDTO> fieldRightMap = new LinkedHashMap<>();
String tag = null;
boolean ruleValidation = false;
/////明细中,如果有字段成功的,则会覆盖其他明细的匹配失败的情况,如果全都是失败的,会获取第一次失败的.
@ -331,11 +330,11 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
String dataStructured = ocrIdentifyDetail.getDataStructured();
if (org.apache.commons.lang.StringUtils.isNotBlank(dataStructured)) {
JSONArray jsonArray = JSONObject.parseArray(dataStructured);
List<OcrResult2> resultList = jsonArray.toJavaList(OcrResult2.class);
for (OcrResult2 result : resultList) {
List<OcrResultDTO> resultList = jsonArray.toJavaList(OcrResultDTO.class);
for (OcrResultDTO result : resultList) {
tag = result.getTag();
ruleValidation = result.getRuleValidation();
OcrResult2 lastResult = fieldRightMap.get(tag);
OcrResultDTO lastResult = fieldRightMap.get(tag);
if (ruleValidation) {
fieldRightMap.put(tag, result);
} else if (lastResult == null || !lastResult.getRuleValidation()) {
@ -347,8 +346,8 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
}
}
//如果明细合并一起,都是成功,则主任务 匹配成功, 否则匹配失败
List<OcrResult2> errorResults = fieldRightMap.values().stream().filter(f -> !f.getRuleValidation()).collect(Collectors.toList());
List<OcrResult2> ocrResults = fieldRightMap.values().stream().collect(Collectors.toList());
List<OcrResultDTO> errorResults = fieldRightMap.values().stream().filter(f -> !f.getRuleValidation()).collect(Collectors.toList());
List<OcrResultDTO> ocrResultDTOS = fieldRightMap.values().stream().collect(Collectors.toList());
//TODO 后续考虑需要修正复杂程度. 支持 & + || 一起
@ -362,7 +361,7 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
//匹配成功.
updateWrapper.set(OcrIdentify::getTaskResult, 1);
}
String taskResultInfo = JSONArray.toJSONString(ocrResults);
String taskResultInfo = JSONArray.toJSONString(ocrResultDTOS);
updateWrapper.set(OcrIdentify::getStatus, "1");
updateWrapper.set(OcrIdentify::getEndTime, new Date());
updateWrapper.set(OcrIdentify::getTaskResultInfo, taskResultInfo);
@ -374,8 +373,8 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
@Override
@Async
public void updateTaskResultInfo(String id) {
OcrIdentifyVo ocrIdentifyVo = this.findById(id);
List<OcrIdentifyDetail> identifyDetails = ocrIdentifyDetailService.listByIdentifyId(ocrIdentifyVo.getId());
OcrIdentifyDTO ocrIdentifyDTO = this.findById(id);
List<OcrIdentifyDetail> identifyDetails = ocrIdentifyDetailService.listByIdentifyId(ocrIdentifyDTO.getId());
/*for (OcrIdentifyDetail identifyDetail : identifyDetails) {
JSONObject semanticResult = JSONObject.parseObject(identifyDetail.getSemanticResult());
String imgPath = identifyDetail.getImageUrl();
@ -507,7 +506,7 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
}
}*/
//=======规则检查配置
OcrRuleCheckVo ocrRuleCheckVo = ocrIdentifyVo.getOcrRuleCheckVo();
OcrRuleCheckDTO ocrRuleCheckVo = ocrIdentifyDTO.getOcrRuleCheckVo();
Map<String, Map<String, String>> configRuleTypeMap = ocrRuleCheckVo.getConfigRuleTypeMap();
//===================
//4.更新主任务状态
@ -564,8 +563,25 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
}
public static void main(String[] args) {
int stringPercent = getStringPercent("张三", "张三脏");
System.out.println(stringPercent);
List<OcrResultDTO> list=new ArrayList<>();
OcrResultDTO result = new OcrResultDTO();
result.setTextRate(10d);
list.add(result);
OcrResultDTO result2 = new OcrResultDTO();
result2.setTextRate(44d);
list.add(result2);
OcrResultDTO result3 = new OcrResultDTO();
result3.setTextRate(12d);
list.add(result3);
//获取最小
Double min = list.stream().sorted((a, b) -> a.getTextRate().compareTo(b.getTextRate())).findFirst().get().getTextRate();
//获取最大
Double max = list.stream().sorted((a, b) -> b.getTextRate().compareTo(a.getTextRate())).findFirst().get().getTextRate();
//获取最大
//ocrResultList.stream().sorted((a,b)->a.getTextRate()-b.getTextRate()).findAny().get();
//int stringPercent = getStringPercent("张三", "张三脏");
//System.out.println(stringPercent);
}
private static int getStringPercent(String text, String inputText) {
@ -685,7 +701,7 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
/**
*
* @param ocrResultList
* @param ocrResultDTOList
* @param fieldName
* @param field
* @param inputText
@ -697,17 +713,17 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
* @param d
* @param ruleValidationValue
*/
public static void ocrResultAdd(List<OcrResult> ocrResultList, String fieldName, String field, String inputText, String ocrText, Double ocrPrecisionRate, String imgPath, String failureReason, Boolean ruleValidation, Double d,String ruleValidationValue) {
OcrResult ocrResult = new OcrResult();
ocrResult.setTag(field);
ocrResult.setTagName(fieldName);
ocrResult.setOcrText(ocrText);
ocrResult.setInputText(inputText);
ocrResult.setOcrPrecisionRate(ocrPrecisionRate == null ? 0d : ocrPrecisionRate);
public static void ocrResultAdd(List<OcrResultDTO> ocrResultDTOList, String fieldName, String field, String inputText, String ocrText, Double ocrPrecisionRate, String imgPath, String failureReason, Boolean ruleValidation, Double d, String ruleValidationValue) {
OcrResultDTO ocrResultDTO = new OcrResultDTO();
ocrResultDTO.setTag(field);
ocrResultDTO.setTagName(fieldName);
ocrResultDTO.setOcrText(ocrText);
ocrResultDTO.setInputText(inputText);
ocrResultDTO.setOcrPrecisionRate(ocrPrecisionRate == null ? 0d : ocrPrecisionRate);
if (d == null) {
ocrResult.setTextRate(0d);
ocrResultDTO.setTextRate(0d);
} else {
ocrResult.setTextRate(new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
ocrResultDTO.setTextRate(new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
System.out.println("-----------------");
System.out.println(failureReason);
@ -717,32 +733,33 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
sourceImage.setPath(imgPath);
int i = imgPath.lastIndexOf("/");
sourceImage.setFileName(imgPath.substring(i + 1, imgPath.length()));
ocrResult.setSourceImage(sourceImage);
sourceImage.setPreviewUrl(OcrConstant.FILE_REVIEW_URL_PREFIX+imgPath);
ocrResultDTO.setSourceImage(sourceImage);
}
ocrResult.setFailureReason(failureReason);
if (ocrResultList == null) {
ocrResultList = new ArrayList<>();
ocrResultDTO.setFailureReason(failureReason);
if (ocrResultDTOList == null) {
ocrResultDTOList = new ArrayList<>();
}
ocrResult.setRuleValidation(ruleValidation);
ocrResultDTO.setRuleValidation(ruleValidation);
if ("0".equals(ruleValidationValue)) {
ocrResult.setRuleValidationText("有名称就算过");
ocrResultDTO.setRuleValidationText("有名称就算过");
}else if(Double.valueOf(ruleValidationValue)>0 &&Double.valueOf(ruleValidationValue)<=99){
ocrResult.setRuleValidationText("匹配度>="+ruleValidationValue);
ocrResultDTO.setRuleValidationText("匹配度>="+ruleValidationValue);
}else if("100".equals(ruleValidation)){
ocrResult.setRuleValidationText("名称必须与参数完全一致");
ocrResultDTO.setRuleValidationText("名称必须与参数完全一致");
}else if("101".equals(ruleValidationValue)){
ocrResult.setRuleValidationText("有值必须匹配无值算过");
ocrResultDTO.setRuleValidationText("有值必须匹配无值算过");
}else if("isrule=1".equals(ruleValidationValue)){
ocrResult.setRuleValidationText("依据输入参数必须一致判断");
ocrResultDTO.setRuleValidationText("依据输入参数必须一致判断");
}
ocrResultList.add(ocrResult);
ocrResultDTOList.add(ocrResultDTO);
}
/**
* OcrResult, ocrResultList
*
* @param ocrResultList
* @param ocrResultDTOList
* @param field
* @param inputText
* @param ocrText
@ -750,11 +767,11 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
* @param imgPath
* @param failureReason
*/
public static void ocrResultAdd(List<OcrResult> ocrResultList, String fieldName, String field, String inputText, String ocrText, Double ocrPrecisionRate, String imgPath, String failureReason, Boolean ruleValidation,String ruleValidationValue) {
public static void ocrResultAdd(List<OcrResultDTO> ocrResultDTOList, String fieldName, String field, String inputText, String ocrText, Double ocrPrecisionRate, String imgPath, String failureReason, Boolean ruleValidation, String ruleValidationValue) {
if (ruleValidation) {
ocrResultAdd(ocrResultList, fieldName, field, inputText, ocrText, ocrPrecisionRate, imgPath, failureReason, ruleValidation, 100d,ruleValidationValue);
ocrResultAdd(ocrResultDTOList, fieldName, field, inputText, ocrText, ocrPrecisionRate, imgPath, failureReason, ruleValidation, 100d,ruleValidationValue);
} else {
ocrResultAdd(ocrResultList, fieldName, field, inputText, ocrText, ocrPrecisionRate, imgPath, failureReason, ruleValidation, 0d,ruleValidationValue);
ocrResultAdd(ocrResultDTOList, fieldName, field, inputText, ocrText, ocrPrecisionRate, imgPath, failureReason, ruleValidation, 0d,ruleValidationValue);
}
}
@ -912,10 +929,13 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
}
@Override
public void simulateChecks(SimulateChecksVO simulateChecksVO) {
public JSONObject simulateChecks(SimulateChecksVO simulateChecksVO) {
List<OcrIdentifyDetail> identifyDetailList = ocrIdentifyDetailService.listByIds(simulateChecksVO.getIdentifyDetailIdList());
//遍历任务,做匹配
int i1=1;
//用于数据结构化的对象
List<OcrResultDTO> ocrResultDTOList = new ArrayList<>();
Date startDataCheckTime = new Date();
for (OcrIdentifyDetail ocrIdentifyDetail : identifyDetailList) {
if (i1==1) {
ocrIdentifyDetail.setSemanticResult("{\"ocr_res\":[[[[1282.0,1576.0],[2764.0,1594.0],[2763.0,1671.0],[1281.0,1653.0]],[\"北京市朝阳区三里屯社区卫生服务中心\",0.9670220613479614]],[[[132.0,2244.0],[1062.0,2214.0],[1069.0,2455.0],[140.0,2485.0]],[\"儿科专家门诊\",0.984556257724762]],[[[117.0,2496.0],[1036.0,2473.0],[1038.0,2577.0],[119.0,2600.0]],[\"Pediatric srecialistclinic\",0.8756008148193359]]],\"其他\":[{\"area\":[[117.0,2496.0],[1036.0,2473.0],[1038.0,2577.0],[119.0,2600.0]],\"end\":26,\"ocrText\":\"Pediatric srecialistclinic\",\"probability\":0.9925054592526585,\"start\":0,\"text\":\"Pediatric srecialistclinic\"}],\"医院名称\":[{\"area\":[[1282.0,1576.0],[2764.0,1594.0],[2763.0,1671.0],[1281.0,1653.0]],\"end\":17,\"ocrText\":\"北京市朝阳区三里屯社区卫生服务中心\",\"probability\":0.9681764264135495,\"start\":0,\"text\":\"北京市朝阳区三里屯社区卫生服务中心\"},{\"area\":[[1282.0,1576.0],[2764.0,1594.0],[2763.0,1671.0],[1281.0,1653.0]],\"end\":17,\"ocrText\":\"北京市朝阳区农光里医院\",\"probability\":0.95,\"start\":0,\"text\":\"北京市朝阳区农光里医院\"}],\"姓名\":[],\"时间\":[],\"科室\":[{\"area\":[[132.0,2244.0],[1062.0,2214.0],[1069.0,2455.0],[140.0,2485.0]],\"end\":6,\"ocrText\":\"儿科专家门诊\",\"probability\":0.9836859327676066,\"start\":0,\"text\":\"儿科专家门诊\"}]}");
@ -942,12 +962,10 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
sourceJson.add(JSONObject.parseObject(String.format("{\"tag\":\"time\", \"inputText\":\"%s\"}", time)));
}
JSONObject semanticResult = JSONObject.parseObject(semanticResultJson);
OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckService.findById(simulateChecksVO.getRuleCheckId());
OcrRuleCheckDTO ocrRuleCheckVo = ocrRuleCheckService.findById(simulateChecksVO.getRuleCheckId());
Map<String, CheckSemanticModel> checkSemanticModelMap = getCheckSemanticModelMap(ocrRuleCheckVo.getConfigRuleMap(), ocrRuleCheckVo.getFieldMap(), sourceJson);
String text = null;//ocr 识别的文本
Double probability = 0d;
//用于数据结构化的对象
List<OcrResult> ocrResultList = new ArrayList<>();
StringBuffer rMessage = new StringBuffer();
Map<String, Boolean> fieldRightMap = new LinkedHashMap<>();//存放 字段判断正确map
//==========================
@ -982,16 +1000,16 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
if (StringUtils.isBlank(text) || StringUtils.isBlank(inputText)) {
//没识别值
mapPutIfTrue(fieldRightMap, field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数不判断", true,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数不判断", true,ruleInfo);
} else {
double v = StrCharUtil.similarityRatio(inputText, text);
if (text.contains(inputText)) {
mapPutIfTrue(fieldRightMap, field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,"101");
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,"101");
} else {
rMessage.append(value.getFieldName() + "参数不匹配<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
}
}
} else {
@ -999,37 +1017,37 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
//ocr识别参数为空不通过
rMessage.append(value.getFieldName() + "参数未获取到结果<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
} else if (StringUtils.isBlank(inputText)) {
//没有输入值.
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "没有输入值不做匹配", true,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "没有输入值不做匹配", true,ruleInfo);
} else if ("0".equals(ruleInfo)) {
//不必校验,有识别到就行,通过
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true,ruleInfo);
} else if (Double.valueOf(ruleInfo) >= 1 && Double.valueOf(ruleInfo) <= 99) {
//在1~99之间根据精准度匹配
double v = StrCharUtil.similarityRatio(inputText, text);
if (v >= Double.valueOf(ruleInfo)) {
//准确度 可靠
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
} else {
rMessage.append(value.getFieldName() + "参数不匹配<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
}
} else if ("100".equals(ruleInfo)) {
//必定验证参数,必须有值且匹配
double v = StrCharUtil.similarityRatio(inputText, text);
if (text.equals(inputText)) {
fieldRightMap.put(field, true);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, "", true, v,ruleInfo);
} else {
rMessage.append(value.getFieldName() + "参数不匹配<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, text, probability, imgPath, value.getFieldName() + "参数不匹配", false, v,ruleInfo);
}
}
}
@ -1037,25 +1055,35 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
} else {
rMessage.append(value.getFieldName() + "参数未获取到结果<br>");
mapPutIfTrue(fieldRightMap, field, false);
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, probability, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
}
} else {
rMessage.append(value.getFieldName() + "参数未获取到结果<br>");
ocrResultAdd(ocrResultList, value.getFieldName(), field, inputText, null, 0d, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
ocrResultAdd(ocrResultDTOList, value.getFieldName(), field, inputText, null, 0d, imgPath, value.getFieldName() + "参数未获取到结果", false,ruleInfo);
fieldRightMap.put(field, false);
}
}
System.out.println("----------------------");
for (OcrResult result : ocrResultList) {
for (OcrResultDTO result : ocrResultDTOList) {
System.out.println(result.toString());
}
//获取最小
ocrResultList.stream().sorted((a,b)->a.getTextRate().compareTo(b.getTextRate())).findFirst().get();
//获取最大
//ocrResultList.stream().sorted((a,b)->a.getTextRate()-b.getTextRate()).findAny().get();
//.sorted(OcrResult::getTextRate).findFirst();
}
Date overDataCheckTime = new Date();
JSONObject responseBody=new JSONObject();
//获取最小
Double min = ocrResultDTOList.stream().sorted((a, b) -> a.getTextRate().compareTo(b.getTextRate())).findFirst().get().getTextRate();
//获取最大
Double max = ocrResultDTOList.stream().sorted((a, b) -> b.getTextRate().compareTo(a.getTextRate())).findFirst().get().getTextRate();
//OCR和NlU执行时间总和
double ocrAndNluTimeSum = identifyDetailList.stream().mapToDouble(i -> (i.getOcrTime() == null ? 0 : i.getOcrTime()) + (i.getNluTime() == null ? 0 : i.getNluTime())).sum();
//执行时间(毫秒)
double executionTime = (ocrAndNluTimeSum * 1000) + overDataCheckTime.getTime() - startDataCheckTime.getTime();
responseBody.put("min",min);
responseBody.put("max",max);
responseBody.put("executionTime",executionTime);
responseBody.put("detailList", ocrResultDTOList);
return responseBody;
}
@Transactional(rollbackFor = Exception.class)
@ -1215,4 +1243,5 @@ public class OcrIdentifyServiceImpl extends ServiceImpl<OcrIdentifyMapper, OcrId
}*/
return taskList;
}
}

@ -9,12 +9,11 @@ import org.jeecg.modules.ocr.entity.OcrMetadataConfig;
import org.jeecg.modules.ocr.entity.OcrMetadataConfigDetail;
import org.jeecg.modules.ocr.entity.OcrTaskType;
import org.jeecg.modules.ocr.mapper.OcrMetadataConfigMapper;
import org.jeecg.modules.ocr.mapper.OcrTaskTypeMapper;
import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel;
import org.jeecg.modules.ocr.vo.SaveOcrMetadataConfigVO;
import org.jeecg.modules.ocr.service.IOcrMetadataConfigDetailService;
import org.jeecg.modules.ocr.service.IOcrMetadataConfigService;
import org.jeecg.modules.ocr.service.IOcrTaskTypeService;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
import org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO;
import org.jeecg.modules.system.service.ISysDictItemService;
import org.jeecg.modules.system.service.ISysDictService;
import org.springframework.beans.BeanUtils;
@ -54,30 +53,30 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
}
@Override
public void saveModel(OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel) {
saveModelBatch(Arrays.asList(ocrMetadataConfigSaveModel));
public void saveModel(SaveOcrMetadataConfigVO saveOcrMetadataConfigVO) {
saveModelBatch(Arrays.asList(saveOcrMetadataConfigVO));
/*return ocrMetadataConfig;*/
}
@Override
@Transactional
public void saveModelBatch(List<OcrMetadataConfigSaveModel> saveModelList) {
for (OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel : saveModelList) {
public void saveModelBatch(List<SaveOcrMetadataConfigVO> saveModelList) {
for (SaveOcrMetadataConfigVO saveOcrMetadataConfigVO : saveModelList) {
OcrMetadataConfig ocrMetadataConfig=new OcrMetadataConfig();
ocrMetadataConfig.setConfigName(ocrMetadataConfigSaveModel.getConfigName());
Boolean existsFlag=existsByConfigName(ocrMetadataConfigSaveModel.getConfigName(),ocrMetadataConfigSaveModel.getId());
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", ocrMetadataConfigSaveModel.getConfigName()));
ocrMetadataConfig.setConfigName(saveOcrMetadataConfigVO.getConfigName());
Boolean existsFlag=existsByConfigName(saveOcrMetadataConfigVO.getConfigName(), saveOcrMetadataConfigVO.getId());
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", saveOcrMetadataConfigVO.getConfigName()));
//判断 元数据 所选的 任务类型 是否存在
if (StringUtils.isBlank(ocrMetadataConfigSaveModel.getTaskType())&& StringUtils.isNotBlank(ocrMetadataConfigSaveModel.getTaskTypeName())) {
OcrTaskType ocrTaskType = ocrTaskTypeService.saveTaskType(ocrMetadataConfigSaveModel.getTaskTypeName());
if (StringUtils.isBlank(saveOcrMetadataConfigVO.getTaskType())&& StringUtils.isNotBlank(saveOcrMetadataConfigVO.getTaskTypeName())) {
OcrTaskType ocrTaskType = ocrTaskTypeService.saveTaskType(saveOcrMetadataConfigVO.getTaskTypeName());
ocrMetadataConfig.setTaskType(ocrTaskType.getId());
}else{
ocrMetadataConfig.setTaskType(ocrMetadataConfigSaveModel.getTaskType());
ocrMetadataConfig.setTaskType(saveOcrMetadataConfigVO.getTaskType());
}
this.save(ocrMetadataConfig);
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList();
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList();
if(ocrMetadataConfigDetailList!=null&&ocrMetadataConfigDetailList.size()>0){
//判断重复字段名
Map<String, Long> countMap = ocrMetadataConfigDetailList.stream().map(o->o.getFieldName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
@ -86,7 +85,7 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
String fieldsName = countMap.keySet().stream().filter(key -> countMap.get(key) > 1).distinct().collect(Collectors.joining(","));
AssertUtils.isEmpty(fieldsName,String.format("字段名[%s]-重复了",fieldsName));
}
for (OcrMetadataConfigDetail detail : ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList()) {
for (OcrMetadataConfigDetail detail : saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList()) {
detail.setMetadataConfigId(ocrMetadataConfig.getId());
ocrMetadataConfigDetailService.saveOrUpdate(detail);
}
@ -95,20 +94,20 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
}
@Override
public Map<String, OcrMetadataConfigVo> listToMap(List<String> idList) {
List<OcrMetadataConfigVo> metadataConfigVoList =baseMapper.allList(idList!=null&&idList.size()>0?idList:null);
Map<String, OcrMetadataConfigVo> metadataConfigVoMap = metadataConfigVoList.stream().collect(Collectors.toMap(OcrMetadataConfigVo::getId, o -> o));
public Map<String, OcrMetadataConfigDTO> listToMap(List<String> idList) {
List<OcrMetadataConfigDTO> metadataConfigVoList =baseMapper.allList(idList!=null&&idList.size()>0?idList:null);
Map<String, OcrMetadataConfigDTO> metadataConfigVoMap = metadataConfigVoList.stream().collect(Collectors.toMap(OcrMetadataConfigDTO::getId, o -> o));
return metadataConfigVoMap;
}
@Override
public OcrMetadataConfig updateModel(OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel) {
AssertUtils.notEmpty(ocrMetadataConfigSaveModel.getId(),"[id]不可为空");
OcrMetadataConfig ocrMetadataConfig = this.getById(ocrMetadataConfigSaveModel.getId());
ocrMetadataConfig.setConfigName(ocrMetadataConfigSaveModel.getConfigName());
public OcrMetadataConfig updateModel(SaveOcrMetadataConfigVO saveOcrMetadataConfigVO) {
AssertUtils.notEmpty(saveOcrMetadataConfigVO.getId(),"[id]不可为空");
OcrMetadataConfig ocrMetadataConfig = this.getById(saveOcrMetadataConfigVO.getId());
ocrMetadataConfig.setConfigName(saveOcrMetadataConfigVO.getConfigName());
this.updateById(ocrMetadataConfig);
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList();
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList();
if(ocrMetadataConfigDetailList!=null&&ocrMetadataConfigDetailList.size()>0){
//判断重复字段名
@ -118,7 +117,7 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
String fieldsName = countMap.keySet().stream().filter(key -> countMap.get(key) > 1).distinct().collect(Collectors.joining(","));
AssertUtils.isEmpty(fieldsName,String.format("字段名[%s]-重复了",fieldsName));
}
for (OcrMetadataConfigDetail detail : ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList()) {
for (OcrMetadataConfigDetail detail : saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList()) {
detail.setMetadataConfigId(ocrMetadataConfig.getId());
ocrMetadataConfigDetailService.saveOrUpdate(detail);
}
@ -126,11 +125,11 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
//删除旧明细
List<String> notRemoveIdList = new ArrayList<>();
if (ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList().size()>0) {
notRemoveIdList = ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList().stream().map(o -> o.getId()).collect(Collectors.toList());
if (saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList().size()>0) {
notRemoveIdList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList().stream().map(o -> o.getId()).collect(Collectors.toList());
}
LambdaQueryWrapper<OcrMetadataConfigDetail> removeQueryWrapper = new LambdaQueryWrapper<OcrMetadataConfigDetail>();
removeQueryWrapper.eq(OcrMetadataConfigDetail::getMetadataConfigId, ocrMetadataConfigSaveModel.getId());
removeQueryWrapper.eq(OcrMetadataConfigDetail::getMetadataConfigId, saveOcrMetadataConfigVO.getId());
removeQueryWrapper.notIn(notRemoveIdList!=null&&notRemoveIdList.size()>0, OcrMetadataConfigDetail::getId,notRemoveIdList);
//TODO zwt先检测这些删除的有没有被规则检查配置 绑定(删除元数据配置明细时,需不需要先检查该元数据配置明细有没有被规则检查配置绑定,如果被绑定是否需要提示 不可删除)
ocrMetadataConfigDetailService.remove(removeQueryWrapper);
@ -138,14 +137,14 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
}
@Override
public IPage<OcrMetadataConfigVo> pageVo(Page<OcrMetadataConfig> page, OcrMetadataConfig ocrMetadataConfig) {
public IPage<OcrMetadataConfigDTO> pageVo(Page<OcrMetadataConfig> page, OcrMetadataConfig ocrMetadataConfig) {
Map<String,Object> params=new LinkedHashMap<>();
params.put("getField",ocrMetadataConfig.getGetField());
params.put("configName",ocrMetadataConfig.getConfigName());
params.put("resultName",ocrMetadataConfig.getResultName());
/*params.put("column","createTime");
params.put("order","desc");*/
IPage<OcrMetadataConfigVo> pageList=baseMapper.pageVo(page,params);
IPage<OcrMetadataConfigDTO> pageList=baseMapper.pageVo(page,params);
List<OcrMetadataConfigDetail> metadataConfigDetails = ocrMetadataConfigDetailService.list();
List<OcrMetadataConfigDetail> arrayTestList=new ArrayList<>();
@ -157,7 +156,7 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
}
String fieldName=null,getField=null;
for (OcrMetadataConfigVo record : pageList.getRecords()) {
for (OcrMetadataConfigDTO record : pageList.getRecords()) {
if (StringUtils.isNotBlank(record.getTaskType())) {
String taskTypeName = ocrTaskTypeList.stream().filter(o -> o.getId().equals(record.getTaskType())).map(o -> o.getTypeName()).collect(Collectors.joining(""));
record.setTaskType_dictText(taskTypeName);
@ -176,8 +175,8 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
}
@Override
public List<OcrMetadataConfigVo> allList(List<String> idList) {
List<OcrMetadataConfigVo> allList=new ArrayList<>();
public List<OcrMetadataConfigDTO> allList(List<String> idList) {
List<OcrMetadataConfigDTO> allList=new ArrayList<>();
if (idList!=null && idList.size()>0) {
allList=baseMapper.allList(idList);
}else{
@ -193,7 +192,7 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
List<OcrMetadataConfigDetail> metadataConfigDetails = ocrMetadataConfigDetailService.list();
List<OcrMetadataConfigDetail> arrayTestList=new ArrayList<>();
String fieldName=null,getField=null;
for (OcrMetadataConfigVo ocrMetadataConfig : allList) {
for (OcrMetadataConfigDTO ocrMetadataConfig : allList) {
ocrMetadataConfig.setId(ocrMetadataConfig.getId());
ocrMetadataConfig.setConfigName(ocrMetadataConfig.getConfigName());
if (StringUtils.isNotBlank(ocrMetadataConfig.getTaskType())) {
@ -214,8 +213,8 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
}
@Override
public OcrMetadataConfigVo findById(String id) {
OcrMetadataConfigVo copyEntityVo=new OcrMetadataConfigVo();
public OcrMetadataConfigDTO findById(String id) {
OcrMetadataConfigDTO copyEntityVo=new OcrMetadataConfigDTO();
OcrMetadataConfig ocrMetadataConfig = this.getById(id);
BeanUtils.copyProperties(ocrMetadataConfig,copyEntityVo);
List<OcrMetadataConfigDetail> list = ocrMetadataConfigDetailService.list(new LambdaQueryWrapper<OcrMetadataConfigDetail>().eq(OcrMetadataConfigDetail::getMetadataConfigId, id));

@ -6,18 +6,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.OcrConstant;
import org.jeecg.common.util.AssertUtils;
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;
import org.jeecg.modules.ocr.vo.SaveOcrRuleCheckVO;
import org.jeecg.modules.ocr.service.IOcrRuleCheckDetailService;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.jeecg.modules.ocr.dto.OcrRuleCheckDTO;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -48,39 +45,39 @@ public class OcrRuleCheckServiceImpl extends ServiceImpl<OcrRuleCheckMapper, Ocr
}
@Override
public void saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
saveModelBatch(Arrays.asList(ocrRuleCheckSaveModel));
public void saveModel(SaveOcrRuleCheckVO saveOcrRuleCheckVO) {
saveModelBatch(Arrays.asList(saveOcrRuleCheckVO));
}
@Override
public void saveModelBatch(List<OcrRuleCheckSaveModel> ocrRuleCheckSaveModels) {
for (OcrRuleCheckSaveModel ocrRuleCheckSaveModel : ocrRuleCheckSaveModels) {
public void saveModelBatch(List<SaveOcrRuleCheckVO> saveOcrRuleCheckVOS) {
for (SaveOcrRuleCheckVO saveOcrRuleCheckVO : saveOcrRuleCheckVOS) {
OcrRuleCheck ocrRuleCheck=new OcrRuleCheck();
ocrRuleCheck.setConfigRule(ocrRuleCheckSaveModel.getConfigRule());
ocrRuleCheck.setMetadataConfigId(ocrRuleCheckSaveModel.getMetadataConfigId());
ocrRuleCheck.setConfigName(ocrRuleCheckSaveModel.getConfigName());
ocrRuleCheck.setConfigRule(saveOcrRuleCheckVO.getConfigRule());
ocrRuleCheck.setMetadataConfigId(saveOcrRuleCheckVO.getMetadataConfigId());
ocrRuleCheck.setConfigName(saveOcrRuleCheckVO.getConfigName());
this.save(ocrRuleCheck);
}
}
@Override
public List<OcrRuleCheckVo> allList(List<String> selectionList) {
public List<OcrRuleCheckDTO> allList(List<String> selectionList) {
return baseMapper.allList(selectionList!=null && selectionList.size()>0?selectionList:null);
}
@Override
public Map<String, OcrRuleCheckVo> listToMap(List<String> selectionList) {
List<OcrRuleCheckVo> ocrRuleCheckVoList = allList(selectionList);
Map<String, OcrRuleCheckVo> collect = ocrRuleCheckVoList.stream().collect(Collectors.toMap(OcrRuleCheckVo::getId, o -> o));
public Map<String, OcrRuleCheckDTO> listToMap(List<String> selectionList) {
List<OcrRuleCheckDTO> ocrRuleCheckVoList = allList(selectionList);
Map<String, OcrRuleCheckDTO> collect = ocrRuleCheckVoList.stream().collect(Collectors.toMap(OcrRuleCheckDTO::getId, o -> o));
return collect;
}
@Override
public OcrRuleCheck updateModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
OcrRuleCheck ocrRuleCheck=this.getById(ocrRuleCheckSaveModel.getId());
ocrRuleCheck.setConfigRule(ocrRuleCheckSaveModel.getConfigRule());
ocrRuleCheck.setMetadataConfigId(ocrRuleCheckSaveModel.getMetadataConfigId());
ocrRuleCheck.setConfigName(ocrRuleCheckSaveModel.getConfigName());
public OcrRuleCheck updateModel(SaveOcrRuleCheckVO saveOcrRuleCheckVO) {
OcrRuleCheck ocrRuleCheck=this.getById(saveOcrRuleCheckVO.getId());
ocrRuleCheck.setConfigRule(saveOcrRuleCheckVO.getConfigRule());
ocrRuleCheck.setMetadataConfigId(saveOcrRuleCheckVO.getMetadataConfigId());
ocrRuleCheck.setConfigName(saveOcrRuleCheckVO.getConfigName());
this.updateById(ocrRuleCheck);
//明细
@ -116,7 +113,7 @@ public class OcrRuleCheckServiceImpl extends ServiceImpl<OcrRuleCheckMapper, Ocr
}
@Override
public IPage<OcrRuleCheckVo> pageVo(Page<OcrRuleCheck> page, OcrRuleCheck ocrRuleCheck) {
public IPage<OcrRuleCheckDTO> pageVo(Page<OcrRuleCheck> page, OcrRuleCheck ocrRuleCheck) {
Map<String,Object> params=new LinkedHashMap<>();
params.put("configName",ocrRuleCheck.getConfigName());
params.put("configRule",ocrRuleCheck.getConfigRule());
@ -124,8 +121,8 @@ public class OcrRuleCheckServiceImpl extends ServiceImpl<OcrRuleCheckMapper, Ocr
}
@Override
public OcrRuleCheckVo findById(String id) {
OcrRuleCheckVo ocrRuleCheckVo = baseMapper.findById(id);
public OcrRuleCheckDTO findById(String id) {
OcrRuleCheckDTO ocrRuleCheckVo = baseMapper.findById(id);
AssertUtils.notNull(ocrRuleCheckVo,id+"-规则检查配置不存在");
if (StringUtils.isNotBlank(ocrRuleCheckVo.getConfigRule())) {
String configRule = ocrRuleCheckVo.getConfigRule();

@ -1,4 +1,4 @@
package org.jeecg.modules.ocr.model;
package org.jeecg.modules.ocr.vo;
import lombok.Data;
@ -10,7 +10,7 @@ import java.io.Serializable;
* @Date 2023/8/3 10:34
*/
@Data
public class CommonQueryModel implements Serializable {
public class CommonQueryVO implements Serializable {
private String id;
private String configName;

@ -1,4 +1,4 @@
package org.jeecg.modules.ocr.model;
package org.jeecg.modules.ocr.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
@ -15,7 +15,7 @@ import java.util.List;
* @Date 2023/7/17 14:06
*/
@Data
public class OcrMetadataConfigSaveModel {
public class SaveOcrMetadataConfigVO {
/**主键*/
public String id;
/**配置名称*/

@ -1,4 +1,4 @@
package org.jeecg.modules.ocr.model;
package org.jeecg.modules.ocr.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
@ -21,7 +21,7 @@ import java.util.List;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class OcrRuleCheckSaveModel implements Serializable {
public class SaveOcrRuleCheckVO implements Serializable {
/**主键*/
@ApiModelProperty(value = "主键")
private String id;

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.OcrConstant;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.CommonUtils;
@ -119,7 +120,7 @@ public class CommonController {
if(oConvertUtils.isNotEmpty(savePath)){
/*result.setMessage(savePath);
result.setSuccess(true);*/
return Result.OK(savePath,"http://47.103.213.109:8072/files"+uploadpath+"/"+savePath);
return Result.OK(savePath, OcrConstant.FILE_REVIEW_URL_PREFIX+uploadpath+"/"+savePath);
}else {
result.setMessage("上传失败!");
result.setSuccess(false);

Loading…
Cancel
Save