伪接口
master
周文涛 2 years ago
parent 3f6d657297
commit da34a7525f

@ -75,6 +75,8 @@ public class ShiroConfig {
}
}
// 配置不会被拦截的链接 顺序判断
filterChainDefinitionMap.put("/api/**","anon");
filterChainDefinitionMap.put("/sys/cas/client/validateLogin", "anon"); //cas验证登录
filterChainDefinitionMap.put("/sys/randomImage/**", "anon"); //登录验证码接口排除
filterChainDefinitionMap.put("/sys/checkCaptcha", "anon"); //登录验证码接口排除
@ -98,7 +100,6 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码
filterChainDefinitionMap.put("/sys/checkAuth", "anon"); //授权接口排除
filterChainDefinitionMap.put("/", "anon");
filterChainDefinitionMap.put("/doc.html", "anon");
filterChainDefinitionMap.put("/**/*.js", "anon");

@ -0,0 +1,71 @@
package org.jeecg.modules.api.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.List;
/**
* @Description
* @Author ZhouWenTao
* @Date 2023/7/17 19:39
*/
@Slf4j
@RestController
@RequestMapping("/api")
public class ApiController {
////===================================================================伪接口
@ApiOperation(value="通用识别", notes="通用识别")
@PostMapping(value = "/identify")
@Transactional(rollbackFor = Exception.class)
public JSONObject identify(@RequestBody JSONObject jsonObject) {
String requestId = jsonObject.getString("requestId");//请求唯一标识
String scenes = jsonObject.getString("scenes");//场景类型door=门头照片cases=病例bill=票据
String ruleId = jsonObject.getString("ruleId");//规则标识
String sourceImages = jsonObject.getString("sourceImages");//ocr图片集
JSONArray sourceJson = jsonObject.getJSONArray("sourceJson");//校验数据源
List<JSONObject> sourceJsonList = sourceJson.toJavaList(JSONObject.class);
AssertUtils.notEmpty(requestId,"请输入[请求唯一标识]");
AssertUtils.notEmpty(scenes,"请输入[场景类型]");
AssertUtils.notEmpty(ruleId,"请输入[规则标识]");
AssertUtils.notEmpty(sourceImages,"请输入[ocr图片集]");
AssertUtils.notNull(sourceJson,"请输入[校验数据源]");
return JSONObject.parseObject("{\"error_code\": 1, \"error_msg\": \"请求成功\"}");
}
@ApiOperation(value="单张图片异步通知", notes="单张图片异步通知")
@PostMapping(value = "/imgNotify")
@Transactional(rollbackFor = Exception.class)
public JSONObject imgNotify() {
/*String requestId = jsonObject.getString("requestId");
String fileName = jsonObject.getString("fileName");
AssertUtils.notEmpty(requestId,"请输入[请求唯一标识]");
AssertUtils.notEmpty(fileName,"请输入[图片名称]");*/
return JSONObject.parseObject("{\"requestId\":\"10001\",\"result\":{\"tag\":\"hospital_name\",\"inputText\":\"仁和医院\",\"ocrText\":\"仁和医院\",\"ocrPrecisionRate\":0.8,\"ruleValidation\":true,\"sourceImage\":{\"fileName\":\"test1.png\",\"path\":\"/usr/local/ocr/test1.png\"}},\"error_code\":1,\"error_msg\":\"请求成功\"}");
}
@ApiOperation(value="任务完结通知", notes="任务完结通知")
@PostMapping(value = "/taskNotify")
@Transactional(rollbackFor = Exception.class)
public JSONObject taskNotify() {
/*String requestId = jsonObject.getString("requestId");
String fileName = jsonObject.getString("fileName");
AssertUtils.notEmpty(requestId,"请输入[请求唯一标识]");
AssertUtils.notEmpty(fileName,"请输入[图片名称]");*/
return JSONObject.parseObject("{\"requestId\":\"10001\",\"result\":{\"retrieveReviewCompliance\":\"80\",\"imageTagRetrievePercentage\":\"66.6\",\"failure_reason\":\"图片不清晰\"},\"error_code\":1,\"error_msg\":\"请求成功\"}");
}
//==========================================================================================
}

@ -95,7 +95,7 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
return Result.OK("添加成功!");
}
/**
/**
*
* @param ocrMetadataConfigSaveModel
*/
@ -203,7 +203,7 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
* @param response
* @return
*/
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_metadata_config:importExcel")
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_metadata_config:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, OcrMetadataConfig.class);

@ -12,9 +12,13 @@ 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.common.util.AssertUtils;
import org.jeecg.config.JeecgBaseConfig;
import org.jeecg.modules.ocr.entity.OcrMetadataConfigDetail;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.entity.OcrTaskType;
import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel;
import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
@ -76,30 +80,46 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
/**
*
*
* @param ocrRuleCheck
* @param ocrRuleCheckSaveModel
* @return
*/
@AutoLog(value = "规则检查配置-添加")
@ApiOperation(value="规则检查配置-添加", notes="规则检查配置-添加")
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_rule_check:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody OcrRuleCheck ocrRuleCheck) {
ocrRuleCheckService.save(ocrRuleCheck);
public Result<String> add(@RequestBody OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
checkSaveModel(ocrRuleCheckSaveModel);
String configName = ocrRuleCheckSaveModel.getConfigName();
boolean existsFlag=ocrRuleCheckService.existsByConfigName(configName,null);//true 已存在,false不存在
AssertUtils.notTrue(existsFlag,String.format("[配置名称]-%s 已存在",configName));
ocrRuleCheckService.saveModel(ocrRuleCheckSaveModel);
return Result.OK("添加成功!");
}
/**
*
* @param ocrRuleCheckSaveModel
*/
public void checkSaveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel){
AssertUtils.notEmpty(ocrRuleCheckSaveModel.getConfigName(),"[配置名称]不可为空");
}
/**
*
*
* @param ocrRuleCheck
* @param ocrRuleCheckSaveModel
* @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 OcrRuleCheck ocrRuleCheck) {
ocrRuleCheckService.updateById(ocrRuleCheck);
public Result<String> edit(@RequestBody OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
checkSaveModel(ocrRuleCheckSaveModel);
String configName = ocrRuleCheckSaveModel.getConfigName();
boolean existsFlag=ocrRuleCheckService.existsByConfigName(configName,ocrRuleCheckSaveModel.getId());//true 已存在,false不存在
AssertUtils.notTrue(existsFlag,String.format("[配置名称]-%s 已存在",configName));
ocrRuleCheckService.updateModel(ocrRuleCheckSaveModel);
return Result.OK("编辑成功!");
}

@ -0,0 +1,63 @@
package org.jeecg.modules.ocr.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description:
* @Author: jeecg-boot
* @Date: 2023-07-17
* @Version: V1.0
*/
@Data
@TableName("ocr_rule_check_detail")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="ocr_rule_check_detail对象", description="规则检查配置明细")
public class OcrRuleCheckDetail implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**规则检查配置id*/
@Excel(name = "规则检查配置id", width = 15)
@ApiModelProperty(value = "规则检查配置id")
private java.lang.String ruleCheckId;
/**元数据明细id*/
@Excel(name = "元数据明细id", width = 15)
@ApiModelProperty(value = "元数据明细id")
private java.lang.String metadataConfigDetailId;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
}

@ -0,0 +1,17 @@
package org.jeecg.modules.ocr.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.ocr.entity.OcrRuleCheckDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description:
* @Author: jeecg-boot
* @Date: 2023-07-17
* @Version: V1.0
*/
public interface OcrRuleCheckDetailMapper extends BaseMapper<OcrRuleCheckDetail> {
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.OcrRuleCheckDetailMapper">
</mapper>

@ -0,0 +1,38 @@
package org.jeecg.modules.ocr.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Description
* @Author ZhouWenTao
* @Date 2023/7/17 18:45
*/
@Data
public class OcrRuleCheckSaveModel implements Serializable {
/**主键*/
@ApiModelProperty(value = "主键")
private String id;
/**配置名称*/
@ApiModelProperty(value = "配置名称")
private String configName;
/**配置规则*/
@ApiModelProperty(value = "配置规则")
@TableField(exist = false)
private String configRule;
/**选择的元数据明细id*/
@ApiModelProperty(value = "选择的元数据id")
public String metadataConfigId;
/**选择的元数据明细id*/
@ApiModelProperty(value = "选择的元数据明细id")
public List<String> metadataConfigDetailIdList=new ArrayList<>();
}

@ -0,0 +1,14 @@
package org.jeecg.modules.ocr.service;
import org.jeecg.modules.ocr.entity.OcrRuleCheckDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description:
* @Author: jeecg-boot
* @Date: 2023-07-17
* @Version: V1.0
*/
public interface IOcrRuleCheckDetailService extends IService<OcrRuleCheckDetail> {
}

@ -2,6 +2,7 @@ package org.jeecg.modules.ocr.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
/**
* @Description:
@ -11,4 +12,11 @@ import org.jeecg.modules.ocr.entity.OcrRuleCheck;
*/
public interface IOcrRuleCheckService extends IService<OcrRuleCheck> {
boolean existsByConfigName(String configName, String id);
OcrRuleCheck saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
OcrRuleCheck updateModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
void removeById(String id);
}

@ -64,6 +64,15 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
detail.setMetadataConfigId(ocrMetadataConfig.getId());
ocrMetadataConfigDetailService.saveOrUpdate(detail);
}
//删除旧明细
if (ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList().size()>0) {
List<String> notRemoveIdList = ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList().stream().map(o -> o.getId()).collect(Collectors.toList());
LambdaQueryWrapper<OcrMetadataConfigDetail> removeQueryWrapper = new LambdaQueryWrapper<OcrMetadataConfigDetail>();
removeQueryWrapper.eq(OcrMetadataConfigDetail::getMetadataConfigId, ocrMetadataConfigSaveModel.getId());
removeQueryWrapper.notIn(notRemoveIdList!=null&&notRemoveIdList.size()>0, OcrMetadataConfigDetail::getId,notRemoveIdList);
//TODO zwt先检测这些删除的有没有被规则检查配置 绑定(删除元数据配置明细时,需不需要先检查该元数据配置明细有没有被规则检查配置绑定,如果被绑定是否需要提示 不可删除)
ocrMetadataConfigDetailService.remove(removeQueryWrapper);
}
return ocrMetadataConfig;
}

@ -0,0 +1,19 @@
package org.jeecg.modules.ocr.service.impl;
import org.jeecg.modules.ocr.entity.OcrRuleCheckDetail;
import org.jeecg.modules.ocr.mapper.OcrRuleCheckDetailMapper;
import org.jeecg.modules.ocr.service.IOcrRuleCheckDetailService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description:
* @Author: jeecg-boot
* @Date: 2023-07-17
* @Version: V1.0
*/
@Service
public class OcrRuleCheckDetailServiceImpl extends ServiceImpl<OcrRuleCheckDetailMapper, OcrRuleCheckDetail> implements IOcrRuleCheckDetailService {
}

@ -1,11 +1,23 @@
package org.jeecg.modules.ocr.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang.StringUtils;
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.OcrRuleCheckMapper;
import org.jeecg.modules.ocr.model.OcrMetadataConfigSaveModel;
import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
import org.jeecg.modules.ocr.service.IOcrRuleCheckDetailService;
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Description:
* @Author: jeecg-boot
@ -14,5 +26,71 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
*/
@Service
public class OcrRuleCheckServiceImpl extends ServiceImpl<OcrRuleCheckMapper, OcrRuleCheck> implements IOcrRuleCheckService {
@Resource
IOcrRuleCheckDetailService ocrRuleCheckDetailService;
@Override
public boolean existsByConfigName(String configName, String id) {
LambdaQueryWrapper<OcrRuleCheck> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OcrRuleCheck::getConfigName,configName);
queryWrapper.ne(StringUtils.isNotBlank(id),OcrRuleCheck::getId,id);
return this.baseMapper.selectCount(queryWrapper)>0?true:false;
}
@Override
public OcrRuleCheck saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
OcrRuleCheck ocrRuleCheck=new OcrRuleCheck();
ocrRuleCheck.setConfigName(ocrRuleCheckSaveModel.getConfigName());
this.save(ocrRuleCheck);
List<OcrRuleCheckDetail> ocrRuleCheckDetailList=new ArrayList<>();
//明细
if (ocrRuleCheckSaveModel.getMetadataConfigDetailIdList()!=null) {
for (String s : ocrRuleCheckSaveModel.getMetadataConfigDetailIdList()) {
OcrRuleCheckDetail ocrRuleCheckDetail=new OcrRuleCheckDetail();
ocrRuleCheckDetail.setRuleCheckId(ocrRuleCheck.getId());
ocrRuleCheckDetail.setMetadataConfigDetailId(s);
ocrRuleCheckDetailList.add(ocrRuleCheckDetail);
}
if (ocrRuleCheckDetailList.size()>0) {
ocrRuleCheckDetailService.saveOrUpdateBatch(ocrRuleCheckDetailList);
}
}
return ocrRuleCheck;
}
@Override
public OcrRuleCheck updateModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
OcrRuleCheck ocrRuleCheck=this.getById(ocrRuleCheckSaveModel.getId());
ocrRuleCheck.setConfigName(ocrRuleCheckSaveModel.getConfigName());
this.save(ocrRuleCheck);
List<OcrRuleCheckDetail> ocrRuleCheckDetailList=new ArrayList<>();
//明细
List<String> ocrRuleCheckDetailIdList=new ArrayList<>();
if (ocrRuleCheckSaveModel.getMetadataConfigDetailIdList()!=null) {
for (String s : ocrRuleCheckSaveModel.getMetadataConfigDetailIdList()) {
OcrRuleCheckDetail ocrRuleCheckDetail=new OcrRuleCheckDetail();
ocrRuleCheckDetail.setRuleCheckId(ocrRuleCheck.getId());
ocrRuleCheckDetail.setMetadataConfigDetailId(s);
ocrRuleCheckDetailList.add(ocrRuleCheckDetail);
}
if (ocrRuleCheckDetailList.size()>0) {
ocrRuleCheckDetailService.saveOrUpdateBatch(ocrRuleCheckDetailList);
}
}
//删除不要的明细
LambdaQueryWrapper<OcrRuleCheckDetail> removeQueryWrapper = new LambdaQueryWrapper<>();
removeQueryWrapper.eq(OcrRuleCheckDetail::getRuleCheckId,ocrRuleCheck.getId());
removeQueryWrapper.notIn(ocrRuleCheckDetailIdList!=null&&ocrRuleCheckDetailIdList.size()<0,OcrRuleCheckDetail::getId,ocrRuleCheckDetailIdList);
ocrRuleCheckDetailService.remove(removeQueryWrapper);
return ocrRuleCheck;
}
@Override
public void removeById(String id) {
//删除配置信息
this.baseMapper.deleteById(id);
//删除明细
LambdaQueryWrapper<OcrRuleCheckDetail> removeQueryWrapper = new LambdaQueryWrapper<>();
removeQueryWrapper.eq(OcrRuleCheckDetail::getRuleCheckId,id);
ocrRuleCheckDetailService.remove(removeQueryWrapper);
}
}

Loading…
Cancel
Save