From da34a7525fefc6d0408175bae4aa63fd6ea9f27f Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Mon, 17 Jul 2023 20:08:31 +0800 Subject: [PATCH] =?UTF-8?q?updates=20=E4=BC=AA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/config/shiro/ShiroConfig.java | 3 +- .../modules/api/controller/ApiController.java | 71 +++++++++++++++++ .../OcrMetadataConfigController.java | 4 +- .../controller/OcrRuleCheckController.java | 34 ++++++-- .../ocr/entity/OcrRuleCheckDetail.java | 63 +++++++++++++++ .../ocr/mapper/OcrRuleCheckDetailMapper.java | 17 ++++ .../mapper/xml/OcrRuleCheckDetailMapper.xml | 5 ++ .../ocr/model/OcrRuleCheckSaveModel.java | 38 +++++++++ .../service/IOcrRuleCheckDetailService.java | 14 ++++ .../ocr/service/IOcrRuleCheckService.java | 8 ++ .../impl/OcrMetadataConfigServiceImpl.java | 9 +++ .../impl/OcrRuleCheckDetailServiceImpl.java | 19 +++++ .../service/impl/OcrRuleCheckServiceImpl.java | 78 +++++++++++++++++++ 13 files changed, 353 insertions(+), 10 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrRuleCheckDetail.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckDetailMapper.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckDetailMapper.xml create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/model/OcrRuleCheckSaveModel.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckDetailService.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckDetailServiceImpl.java diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 2c957e1..2c09b96 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -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"); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java new file mode 100644 index 0000000..63a1805 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/ApiController.java @@ -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 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\":\"请求成功\"}"); + } + //========================================================================================== +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrMetadataConfigController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrMetadataConfigController.java index dc94150..91b4c26 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrMetadataConfigController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrMetadataConfigController.java @@ -95,7 +95,7 @@ public class OcrMetadataConfigController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, OcrMetadataConfig.class); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrRuleCheckController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrRuleCheckController.java index 89290a7..7438e2c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrRuleCheckController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrRuleCheckController.java @@ -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 add(@RequestBody OcrRuleCheck ocrRuleCheck) { - ocrRuleCheckService.save(ocrRuleCheck); + public Result 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 edit(@RequestBody OcrRuleCheck ocrRuleCheck) { - ocrRuleCheckService.updateById(ocrRuleCheck); + public Result 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("编辑成功!"); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrRuleCheckDetail.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrRuleCheckDetail.java new file mode 100644 index 0000000..bb28802 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/entity/OcrRuleCheckDetail.java @@ -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; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckDetailMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckDetailMapper.java new file mode 100644 index 0000000..b881b9d --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/OcrRuleCheckDetailMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.ocr.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.ocr.entity.OcrRuleCheckDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 规则检查配置明细 + * @Author: jeecg-boot + * @Date: 2023-07-17 + * @Version: V1.0 + */ +public interface OcrRuleCheckDetailMapper extends BaseMapper { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckDetailMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckDetailMapper.xml new file mode 100644 index 0000000..0d87fce --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/mapper/xml/OcrRuleCheckDetailMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/model/OcrRuleCheckSaveModel.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/model/OcrRuleCheckSaveModel.java new file mode 100644 index 0000000..4f9ee43 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/model/OcrRuleCheckSaveModel.java @@ -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 metadataConfigDetailIdList=new ArrayList<>(); +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckDetailService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckDetailService.java new file mode 100644 index 0000000..3bf1db4 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckDetailService.java @@ -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 { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java index 800936f..4b110ec 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrRuleCheckService.java @@ -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 { + boolean existsByConfigName(String configName, String id); + + OcrRuleCheck saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel); + + OcrRuleCheck updateModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel); + + void removeById(String id); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrMetadataConfigServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrMetadataConfigServiceImpl.java index b168692..53de6aa 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrMetadataConfigServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrMetadataConfigServiceImpl.java @@ -64,6 +64,15 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl0) { + List notRemoveIdList = ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList().stream().map(o -> o.getId()).collect(Collectors.toList()); + LambdaQueryWrapper removeQueryWrapper = new LambdaQueryWrapper(); + removeQueryWrapper.eq(OcrMetadataConfigDetail::getMetadataConfigId, ocrMetadataConfigSaveModel.getId()); + removeQueryWrapper.notIn(notRemoveIdList!=null&¬RemoveIdList.size()>0, OcrMetadataConfigDetail::getId,notRemoveIdList); + //TODO zwt先检测这些删除的,有没有被规则检查配置 绑定(删除元数据配置明细时,需不需要先检查该元数据配置明细有没有被规则检查配置绑定,如果被绑定是否需要提示 不可删除) + ocrMetadataConfigDetailService.remove(removeQueryWrapper); + } return ocrMetadataConfig; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckDetailServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckDetailServiceImpl.java new file mode 100644 index 0000000..a566f98 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckDetailServiceImpl.java @@ -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 implements IOcrRuleCheckDetailService { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java index 81a8b21..6fd62cc 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrRuleCheckServiceImpl.java @@ -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 implements IOcrRuleCheckService { + @Resource + IOcrRuleCheckDetailService ocrRuleCheckDetailService; + @Override + public boolean existsByConfigName(String configName, String id) { + LambdaQueryWrapper 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 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 ocrRuleCheckDetailList=new ArrayList<>(); + //明细 + List 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 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 removeQueryWrapper = new LambdaQueryWrapper<>(); + removeQueryWrapper.eq(OcrRuleCheckDetail::getRuleCheckId,id); + ocrRuleCheckDetailService.remove(removeQueryWrapper); + } }