From 220100bb2af4377bdc6f631da01efa3524fd8912 Mon Sep 17 00:00:00 2001 From: Mlxa0324 Date: Mon, 13 Feb 2023 15:30:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/service/OrgConsoleService.java | 2 +- .../com/ibeetl/admin/core/util/ListUtils.java | 32 +++++++++++++++++++ .../jlw/service/SchoolClassService.java | 6 ++++ .../ibeetl/jlw/service/StudentService.java | 6 ++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 admin-core/src/main/java/com/ibeetl/admin/core/util/ListUtils.java diff --git a/admin-console/src/main/java/com/ibeetl/admin/console/service/OrgConsoleService.java b/admin-console/src/main/java/com/ibeetl/admin/console/service/OrgConsoleService.java index 6f1d2e66..653693b1 100644 --- a/admin-console/src/main/java/com/ibeetl/admin/console/service/OrgConsoleService.java +++ b/admin-console/src/main/java/com/ibeetl/admin/console/service/OrgConsoleService.java @@ -99,7 +99,7 @@ public class OrgConsoleService extends CoreBaseService { public static void setObjectOrgId(List obj, Function function, boolean is) { for (T t : obj) { Long orgId = function.apply(t); - ReflectUtil.setFieldValue(obj, "orgId", orgId); + ReflectUtil.setFieldValue(t, "orgId", orgId); } } } diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/util/ListUtils.java b/admin-core/src/main/java/com/ibeetl/admin/core/util/ListUtils.java new file mode 100644 index 00000000..a18c94ca --- /dev/null +++ b/admin-core/src/main/java/com/ibeetl/admin/core/util/ListUtils.java @@ -0,0 +1,32 @@ +package com.ibeetl.admin.core.util; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 功能描述:
+ * 集合工具类 + * + * @Author: lx + * @Date: 2023/2/13 15:25 + */ +@SuppressWarnings("ALL") +public abstract class ListUtils { + /** + * 获取list 集合重复元素 + * + * @param list + * @param + * @return + */ + public static List getDuplicateElements(List list) { + return list.stream() .filter( i -> i!="") // list 对应的 Stream 并过滤"" + .collect(Collectors.toMap(e -> e, e -> 1, Integer::sum)) // 获得元素出现频率的 Map,键为元素,值为元素出现的次数 + .entrySet() + .stream() // 所有 entry 对应的 Stream + .filter(e -> e.getValue() > 1) // 过滤出元素出现次数大于 1 (重复元素)的 entry + .map(Map.Entry::getKey) // 获得 entry 的键(重复元素)对应的 Stream + .collect(Collectors.toList()); // 转化为 List + } +} \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java b/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java index 90e1b4f7..872c1c8d 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/SchoolClassService.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.stream.Collectors; import static cn.hutool.core.util.ObjectUtil.defaultIfBlank; +import static com.ibeetl.admin.core.util.ListUtils.getDuplicateElements; /** @@ -83,6 +84,11 @@ public class SchoolClassService extends CoreBaseService{ } // 查询所有的班级编号 List classSnList = classList.stream().map(SchoolClass::getClassSn).collect(Collectors.toList()); + // 获取重复的元素 + List duplicateElements = getDuplicateElements(classSnList); + // 构建异常信息,传给前端 + String duplicateElementsAsString = CollectionUtil.emptyIfNull(duplicateElements).stream().collect(Collectors.joining(",")); + Assert.isTrue(CollectionUtil.isEmpty(duplicateElements), "本次上传,存在重复的的班级编号:\"{}\",请修改后再进行提交!", duplicateElementsAsString); // 查询库里已经存在的编号 List existsList = schoolClassDao.createLambdaQuery() .andIsNotNull(SchoolClass::getClassSn) diff --git a/web/src/main/java/com/ibeetl/jlw/service/StudentService.java b/web/src/main/java/com/ibeetl/jlw/service/StudentService.java index 7e1f682b..46c8f936 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/StudentService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/StudentService.java @@ -62,6 +62,7 @@ import static cn.jlw.token.TokenService.updateByIds; import static cn.jlw.util.CacheUserUtil.getUniAdmin; import static com.ibeetl.admin.core.enums.MenuEnums.JT_02; import static com.ibeetl.admin.core.enums.MenuEnums.JT_S_03; +import static com.ibeetl.admin.core.util.ListUtils.getDuplicateElements; import static com.ibeetl.jlw.web.IpAddressController.ipAddressMap; @@ -966,6 +967,11 @@ public class StudentService extends CoreBaseService{ } // 查询所有的班级编号 List studentSnList = list.stream().map(Student::getStudentSn).collect(Collectors.toList()); + // 获取重复的元素 + List duplicateElements = getDuplicateElements(studentSnList); + // 构建异常信息,传给前端 + String duplicateElementsAsString = CollectionUtil.emptyIfNull(duplicateElements).stream().collect(Collectors.joining(",")); + Assert.isTrue(CollectionUtil.isEmpty(duplicateElements), "本次上传,存在重复的的学生编号:\"{}\",请修改后再进行提交!", duplicateElementsAsString); // 查询库里已经存在的编号 List existsList = studentDao.createLambdaQuery() .andIsNotNull(Student::getStudentSn)