From f5d0781aa8e17597c11b30c62f79db7ccf76fcb3 Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Wed, 19 Jul 2023 10:40:43 +0800 Subject: [PATCH] =?UTF-8?q?updates=20=E4=BB=BB=E5=8A=A1=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=20=E5=AF=BC=E5=85=A5,=E6=96=B0=E5=BB=BA,=E7=BC=96=E8=BE=91=20?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=20=E5=88=A0=E9=99=A4=20=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=8F=AF=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/controller/JeecgController.java | 22 +++++++++ .../ocr/controller/OcrTaskTypeController.java | 11 ++++- .../ocr/service/IOcrTaskTypeService.java | 14 ++++++ .../service/impl/OcrTaskTypeServiceImpl.java | 45 +++++++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java index 3bb08f1..08eac2e 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java @@ -202,4 +202,26 @@ public class JeecgController> { } return Result.error("文件导入失败!"); } + + protected List readExcel(HttpServletRequest request,HttpServletResponse response,Class clazz) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + List list = null; + for (Map.Entry entity : fileMap.entrySet()) { + // 获取上传文件对象 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(2); + params.setHeadRows(1); + params.setNeedSave(true); + try { + list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params); + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return list; + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrTaskTypeController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrTaskTypeController.java index 8c1fd82..badebe3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrTaskTypeController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/controller/OcrTaskTypeController.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.AssertUtils; import org.jeecg.config.JeecgBaseConfig; import org.jeecg.modules.ocr.entity.OcrTaskType; import org.jeecg.modules.ocr.service.IOcrTaskTypeService; @@ -86,6 +87,7 @@ public class OcrTaskTypeController extends JeecgController add(@RequestBody OcrTaskType ocrTaskType) { + ocrTaskTypeService.existsByTypeNameList(Arrays.asList(ocrTaskType)); ocrTaskTypeService.save(ocrTaskType); return Result.OK("添加成功!"); } @@ -101,6 +103,7 @@ public class OcrTaskTypeController extends JeecgController edit(@RequestBody OcrTaskType ocrTaskType) { + ocrTaskTypeService.existsByTypeNameList(Arrays.asList(ocrTaskType)); ocrTaskTypeService.updateById(ocrTaskType); return Result.OK("编辑成功!"); } @@ -116,6 +119,8 @@ public class OcrTaskTypeController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { + boolean flag=ocrTaskTypeService.checkMetadataConfigUse(Arrays.asList(id)); + AssertUtils.notTrue(flag,"任务类型不可删除,原因:被元数据配置使用中"); ocrTaskTypeService.removeById(id); return Result.OK("删除成功!"); } @@ -131,6 +136,8 @@ public class OcrTaskTypeController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { + boolean flag=ocrTaskTypeService.checkMetadataConfigUse(Arrays.asList(ids.split(","))); + AssertUtils.notTrue(flag,"任务类型不可删除,原因:被元数据配置使用中"); this.ocrTaskTypeService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } @@ -182,7 +189,9 @@ public class OcrTaskTypeController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, OcrTaskType.class); + List ocrTaskTypes = super.readExcel(request, response, OcrTaskType.class); + ocrTaskTypeService.existsByTypeNameList(ocrTaskTypes); + return super.importExcel(request, response, OcrTaskType.class); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrTaskTypeService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrTaskTypeService.java index aac9d60..6352769 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrTaskTypeService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/IOcrTaskTypeService.java @@ -3,6 +3,8 @@ package org.jeecg.modules.ocr.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.ocr.entity.OcrTaskType; +import java.util.List; + /** * @Description: 任务类型 * @Author: jeecg-boot @@ -10,5 +12,17 @@ import org.jeecg.modules.ocr.entity.OcrTaskType; * @Version: V1.0 */ public interface IOcrTaskTypeService extends IService { + /** + * 判断任务类型名称 是否重复,根据类型名称,排除id + * @param ocrTaskTypes + * @return + */ + boolean existsByTypeNameList(List ocrTaskTypes); + /** + * 判断任务类型有没有被 元数据 配置 使用中 + * @param taskTypeIdList + * @return true:被使用中,false:没被使用 + */ + boolean checkMetadataConfigUse(List taskTypeIdList); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrTaskTypeServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrTaskTypeServiceImpl.java index c2931a5..4fb92f4 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrTaskTypeServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/ocr/service/impl/OcrTaskTypeServiceImpl.java @@ -1,11 +1,22 @@ package org.jeecg.modules.ocr.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.util.AssertUtils; +import org.jeecg.modules.ocr.entity.OcrMetadataConfig; 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.service.IOcrTaskTypeService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + /** * @Description: 任务类型 * @Author: jeecg-boot @@ -14,5 +25,39 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; */ @Service public class OcrTaskTypeServiceImpl extends ServiceImpl implements IOcrTaskTypeService { + @Resource + private OcrMetadataConfigMapper metadataConfigMapper; + @Override + public boolean existsByTypeNameList(List ocrTaskTypes) { + LambdaQueryWrapper countQueryWrapper = new LambdaQueryWrapper<>(); + for (OcrTaskType ocrTaskType : ocrTaskTypes) { + if (StringUtils.isBlank(ocrTaskType.getTypeName())) { + continue; + } + countQueryWrapper.clear(); + countQueryWrapper.eq(OcrTaskType::getTypeName,ocrTaskType.getTypeName()); + countQueryWrapper.ne(StringUtils.isNotBlank(ocrTaskType.getId()),OcrTaskType::getId,ocrTaskType.getId()); + AssertUtils.notTrue(super.count(countQueryWrapper)>0,String.format("[%s]-已存在",ocrTaskType.getTypeName())); + } + //判断重复类型名 + Map countMap = ocrTaskTypes.stream().map(o->o.getTypeName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); + if (countMap.keySet().size()>0) { + //有重复的类型名 + String typeName = countMap.keySet().stream().filter(key -> countMap.get(key) > 1).distinct().collect(Collectors.joining(",")); + AssertUtils.isEmpty(typeName,String.format("[%s]-重复了",typeName)); + } + return true; + } + @Override + public boolean checkMetadataConfigUse(List taskTypeIdList) { + if (taskTypeIdList==null||taskTypeIdList.size()==0) { + return false; + } + long count= metadataConfigMapper.selectCount(new LambdaQueryWrapper().in(OcrMetadataConfig::getTaskType, taskTypeIdList)); + if (count>0) { + return true; + } + return false; + } }