From 00d4b006bc06851634a0e53b360b94388e428275 Mon Sep 17 00:00:00 2001 From: maLix Date: Sat, 1 Jul 2023 16:39:13 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=20=E9=AA=8C=E8=AF=81=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E5=92=8C=E6=89=8B=E6=9C=BA=E6=A0=BC=E5=BC=8F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=9B=20=E5=AD=A6=E7=94=9F=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BE=AE=E4=BF=A1=E5=8F=B7=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=BD=95=E5=85=A5=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibeetl/admin/core/validation/Email.java | 28 ++++++++++++++++++ .../admin/core/validation/EmailValidator.java | 29 +++++++++++++++++++ .../MyValidateExcelCellDataListener.java | 20 +++++++++++-- .../java/com/ibeetl/jlw/dao/StudentDao.java | 4 +-- .../dto/StudentBatchImportAdminDTO.java | 15 ++++++++-- .../dto/StudentBatchImportUniAdminDTO.java | 15 ++++++++-- .../ibeetl/jlw/service/StudentService.java | 5 ++-- web/src/main/resources/sql/jlw/student.md | 10 +++++++ 8 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 admin-core/src/main/java/com/ibeetl/admin/core/validation/Email.java create mode 100644 admin-core/src/main/java/com/ibeetl/admin/core/validation/EmailValidator.java diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/validation/Email.java b/admin-core/src/main/java/com/ibeetl/admin/core/validation/Email.java new file mode 100644 index 00000000..953c3adc --- /dev/null +++ b/admin-core/src/main/java/com/ibeetl/admin/core/validation/Email.java @@ -0,0 +1,28 @@ +package com.ibeetl.admin.core.validation; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Target({ + ElementType.METHOD, + ElementType.FIELD, + ElementType.ANNOTATION_TYPE, + ElementType.CONSTRUCTOR, + ElementType.PARAMETER, + ElementType.TYPE_USE +}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Constraint( + validatedBy = EmailValidator.class +) +public @interface Email { + + String message() default "电子邮箱格式不正确"; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/validation/EmailValidator.java b/admin-core/src/main/java/com/ibeetl/admin/core/validation/EmailValidator.java new file mode 100644 index 00000000..fca4b501 --- /dev/null +++ b/admin-core/src/main/java/com/ibeetl/admin/core/validation/EmailValidator.java @@ -0,0 +1,29 @@ +package com.ibeetl.admin.core.validation; + +import cn.hutool.core.lang.Validator; +import cn.hutool.core.util.StrUtil; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * 注解 邮箱校验 + * @author lx + */ +public class EmailValidator implements ConstraintValidator { + + @Override + public void initialize(Email annotation) { + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + // 如果邮箱为空,默认不校验,即校验通过 + if (StrUtil.isEmpty(value)) { + return true; + } + // 校验邮箱 + return Validator.isEmail(value); + } + +} diff --git a/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java b/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java index 6c447f97..55565d72 100644 --- a/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java +++ b/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java @@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.validation.BeanValidationResult; +import cn.hutool.extra.validation.ValidationUtil; import cn.jlw.util.excel.ExcelFailRecord; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.exception.ExcelDataConvertException; @@ -66,8 +68,8 @@ public class MyValidateExcelCellDataListener implements ReadListener { final Field field = fields[columnIndex]; field.setAccessible(true); try { final Object fieldValue = field.get(bean); + final String fieldName = field.getName(); -// final String fieldName = field.getName(); // int finalColumnIndex = columnIndex; // bean.getIndexMap().computeIfAbsent(fieldName, s -> new BaseExcelInfoDTO.BaseExcelIndexDTO() { // @Override @@ -81,13 +83,14 @@ public class MyValidateExcelCellDataListener implements ReadListener { // } // }); + ExcelRequireIgnore requireIgnore = field.getDeclaredAnnotation(ExcelRequireIgnore.class); // 如果有忽略必传的注解,并且没有查询到值则直接跳过必传验证 if (requireIgnore != null && fieldValue == null) { ReflectUtil.setFieldValue(bean, field, requireIgnore.defaultValue()); - continue; } + // 空值判断 if (ObjectUtil.isEmpty(fieldValue)) { putFailMessage(rowIndex, columnIndex, "存在空值"); @@ -99,6 +102,19 @@ public class MyValidateExcelCellDataListener implements ReadListener { putFailMessage(rowIndex, columnIndex, "数据重复"); emptyColumnCount++; } + + + // 验证字段是否符合格式要求 + BeanValidationResult beanValidationResult = ValidationUtil.warpValidateProperty(bean, fieldName); + + if (!beanValidationResult.isSuccess()) { + int finalColumnIndex = columnIndex; + beanValidationResult.getErrorMessages().forEach(item -> { + putFailMessage(rowIndex, finalColumnIndex, StrUtil.format("内容:{} {}", item.getValue(), item.getMessage())); + }); + } + + } catch (IllegalAccessException e) { log.error(e.getMessage(), e); } diff --git a/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java b/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java index 048ee945..090f2963 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java @@ -5,9 +5,7 @@ import com.ibeetl.jlw.entity.CourseInfo; import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.entity.StudentExtendSchoolInfo; import com.ibeetl.jlw.entity.api.student.StudentActiveInfo; -import com.ibeetl.jlw.entity.dto.SystemUseLogsAnalysisDTO; import com.ibeetl.jlw.entity.dto.StudentEditPasswordDTO; -import com.ibeetl.jlw.entity.vo.SystemUseLogsAnalysisVO; import com.ibeetl.jlw.entity.vo.StudentLogAnalysisVO; import com.ibeetl.jlw.entity.vo.StudentLoginLogVO; import com.ibeetl.jlw.entity.vo.StudentUseLogVO; @@ -37,6 +35,8 @@ public interface StudentDao extends BaseMapper{ @Update void deleteStudentByIds(String ids); @Update + void batchAppendCodeDelByIds(String ids); + @Update void deleteByIds(String ids); List> getExcelValues (StudentQuery studentQuery); List> getExcelValues2Competition (StudentQuery studentQuery); diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java index 9ff0f109..0ea90435 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java @@ -2,6 +2,8 @@ package com.ibeetl.jlw.entity.dto; import com.ibeetl.admin.core.annotation.ExcelRequireIgnore; import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile; +import com.ibeetl.admin.core.validation.Email; +import com.ibeetl.admin.core.validation.Mobile; import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.enums.GenderEnum; import lombok.Data; @@ -24,8 +26,8 @@ import static cn.hutool.core.util.ObjectUtil.defaultIfNull; @Data @FieldNameConstants @ToString -@ExcelFile(fileHeadTemplate = "universitiesCollegesName|universityFacultyName|universitySystemName|classId|studentName|studentSn|studentMobile|studentEmail", - fileMappingTemplate = "universitiesCollegesName=院校名称|universityFacultyName=院系名称|universitySystemName=专业名称|classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱", +@ExcelFile(fileHeadTemplate = "universitiesCollegesName|universityFacultyName|universitySystemName|classId|studentName|studentSn|studentMobile|studentEmail|studentWeixinInfo", + fileMappingTemplate = "universitiesCollegesName=院校名称|universityFacultyName=院系名称|universitySystemName=专业名称|classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱|studentWeixinInfo=微信号", datasheetHidden = true, enableDataValidation = true) public class StudentBatchImportAdminDTO { @@ -62,13 +64,19 @@ public class StudentBatchImportAdminDTO { /** * 电话 */ + @Mobile private String studentMobile ; /** * 邮箱 */ - @ExcelRequireIgnore + @Email private String studentEmail ; + /** + * 微信 + */ + @ExcelRequireIgnore + private String studentWeixinInfo ; /** * 类型转换 @@ -85,6 +93,7 @@ public class StudentBatchImportAdminDTO { .studentSn(importPojo.getStudentSn()) .studentMobile(importPojo.getStudentMobile()) .studentEmail(importPojo.getStudentEmail()) + .studentWeixinInfo(importPojo.getStudentWeixinInfo()) .studentStatus(1) .studentGender(GenderEnum.UN_KNOW) .studentPassword("123qwe") diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java index 9b711eee..6bb8ac32 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java @@ -2,6 +2,8 @@ package com.ibeetl.jlw.entity.dto; import com.ibeetl.admin.core.annotation.ExcelRequireIgnore; import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile; +import com.ibeetl.admin.core.validation.Email; +import com.ibeetl.admin.core.validation.Mobile; import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.enums.GenderEnum; import lombok.Data; @@ -24,8 +26,8 @@ import static cn.hutool.core.util.ObjectUtil.defaultIfNull; @Data @FieldNameConstants @ToString -@ExcelFile(fileHeadTemplate = "universityFacultyName|universitySystemName|classId|studentName|studentSn|studentMobile|studentEmail", - fileMappingTemplate = "universityFacultyName=院系名称|universitySystemName=专业名称|classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱", +@ExcelFile(fileHeadTemplate = "universityFacultyName|universitySystemName|classId|studentName|studentSn|studentMobile|studentEmail|studentWeixinInfo", + fileMappingTemplate = "universityFacultyName=院系名称|universitySystemName=专业名称|classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱|studentWeixinInfo=微信号", datasheetHidden = true, enableDataValidation = true) public class StudentBatchImportUniAdminDTO { @@ -56,13 +58,19 @@ public class StudentBatchImportUniAdminDTO { /** * 电话 */ + @Mobile private String studentMobile ; /** * 邮箱 */ - @ExcelRequireIgnore + @Email private String studentEmail ; + /** + * 微信 + */ + @ExcelRequireIgnore + private String studentWeixinInfo ; /** * 类型转换 @@ -79,6 +87,7 @@ public class StudentBatchImportUniAdminDTO { .studentSn(importPojo.getStudentSn()) .studentMobile(importPojo.getStudentMobile()) .studentEmail(importPojo.getStudentEmail()) + .studentWeixinInfo(importPojo.getStudentWeixinInfo()) .studentStatus(1) .studentGender(GenderEnum.UN_KNOW) .studentPassword("123qwe") 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 b7d34598..00cb62c4 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/StudentService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/StudentService.java @@ -436,9 +436,10 @@ public class StudentService extends CoreBaseService{ //置空相应coreUser的code userConsoleService.batchSetCodeNullByIds(userIds); - + // 批量置空 学生编号后面追加@_DEL, 代表已经删除了 + studentDao.batchAppendCodeDelByIds(ids); + // 逻辑删除学生 studentDao.deleteStudentByIds(ids); - } public void deleteByList(List list){ diff --git a/web/src/main/resources/sql/jlw/student.md b/web/src/main/resources/sql/jlw/student.md index 0929d028..eae86458 100644 --- a/web/src/main/resources/sql/jlw/student.md +++ b/web/src/main/resources/sql/jlw/student.md @@ -398,6 +398,16 @@ deleteStudentByIds `student_status` = 2 WHERE FIND_IN_SET(student_id,#ids#) +batchAppendCodeDelByIds +=== + +* 批量 设置学生Code 后面追加@_DEL + + UPDATE `student` + SET + `student_sn` = concat(student_sn, '&_DEL&') + WHERE FIND_IN_SET(student_id, #ids#) + deleteByIds === From f6f1ae626dbd5d62bff46c4a67a0124cdd4a8875 Mon Sep 17 00:00:00 2001 From: maLix Date: Sat, 1 Jul 2023 16:44:31 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=95=99=E5=B8=88=EF=BC=8C=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=AF=BC=E5=85=A5=E6=97=B6=E5=80=99=EF=BC=8C=E5=85=81?= =?UTF-8?q?=E8=AE=B8=E7=94=B5=E8=AF=9D=E5=92=8C=E9=82=AE=E7=AE=B1=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/listener/MyValidateExcelCellDataListener.java | 2 ++ .../ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java | 2 ++ .../jlw/entity/dto/StudentBatchImportUniAdminDTO.java | 2 ++ .../com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java | 7 +++++++ 4 files changed, 13 insertions(+) diff --git a/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java b/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java index 55565d72..77c61381 100644 --- a/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java +++ b/web/src/main/java/cn/jlw/util/excel/listener/MyValidateExcelCellDataListener.java @@ -89,6 +89,8 @@ public class MyValidateExcelCellDataListener implements ReadListener { // 如果有忽略必传的注解,并且没有查询到值则直接跳过必传验证 if (requireIgnore != null && fieldValue == null) { ReflectUtil.setFieldValue(bean, field, requireIgnore.defaultValue()); + // 如果字段上有忽略的注解,则下面的验证就直接跳过了。 + continue; } // 空值判断 diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java index 0ea90435..6b057f4a 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java @@ -65,12 +65,14 @@ public class StudentBatchImportAdminDTO { * 电话 */ @Mobile + @ExcelRequireIgnore private String studentMobile ; /** * 邮箱 */ @Email + @ExcelRequireIgnore private String studentEmail ; /** * 微信 diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java index 6bb8ac32..087aff9f 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportUniAdminDTO.java @@ -59,12 +59,14 @@ public class StudentBatchImportUniAdminDTO { * 电话 */ @Mobile + @ExcelRequireIgnore private String studentMobile ; /** * 邮箱 */ @Email + @ExcelRequireIgnore private String studentEmail ; /** * 微信 diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java index ac1f8be9..00d0d7c0 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java @@ -1,7 +1,10 @@ package com.ibeetl.jlw.entity.dto; +import com.ibeetl.admin.core.annotation.ExcelRequireIgnore; import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile; import com.ibeetl.admin.core.util.excelGroupValidation.ExcelValidation; +import com.ibeetl.admin.core.validation.Email; +import com.ibeetl.admin.core.validation.Mobile; import com.ibeetl.jlw.entity.Teacher; import com.ibeetl.jlw.enums.GenderEnum; import lombok.Data; @@ -57,11 +60,15 @@ public class TeacherBatchImportDTO { /** * 电话 */ + @Mobile + @ExcelRequireIgnore private String teacherMobile ; /** * 邮箱 */ + @Email + @ExcelRequireIgnore private String teacherEmail ; /** From 74a76d0eff818fbabcd8ad654e4c483cdf89388b Mon Sep 17 00:00:00 2001 From: maLix Date: Sat, 1 Jul 2023 17:44:21 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=95=99=E5=B8=88=E5=AF=BC=E5=85=A5=20?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=89=8B=E5=8A=A8=E8=BE=93=E5=85=A5=E9=99=A2?= =?UTF-8?q?=E6=A0=A1=E3=80=81=E9=99=A2=E7=B3=BB=E3=80=81=E4=B8=93=E4=B8=9A?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/StudentBatchImportAdminDTO.java | 8 +- .../dto/TeacherBatchImportAdminDTO.java | 122 ++++++++++++++++++ ...ava => TeacherBatchImportUniAdminDTO.java} | 47 +++---- .../ibeetl/jlw/service/TeacherService.java | 4 +- .../com/ibeetl/jlw/web/StudentController.java | 6 +- .../com/ibeetl/jlw/web/TeacherController.java | 83 +++++++++--- 6 files changed, 222 insertions(+), 48 deletions(-) create mode 100644 web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportAdminDTO.java rename web/src/main/java/com/ibeetl/jlw/entity/dto/{TeacherBatchImportDTO.java => TeacherBatchImportUniAdminDTO.java} (54%) diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java index 6b057f4a..1aedaeb8 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/StudentBatchImportAdminDTO.java @@ -13,8 +13,6 @@ import lombok.experimental.FieldNameConstants; import java.util.Date; import java.util.function.Function; -import static cn.hutool.core.util.ObjectUtil.defaultIfNull; - /** * 功能描述:
* 学生管理, 导入实体 @@ -87,10 +85,10 @@ public class StudentBatchImportAdminDTO { * @param function 二次加工 * @return */ - public static Student pojo(StudentBatchImportAdminDTO importPojo, Function classIdFunction, Function function) { + public static Student pojo(StudentBatchImportAdminDTO importPojo, Long classId, Function function) { Student build = Student.builder() // .classId(longValuesOf(importPojo.getClassId())) - .classId(classIdFunction.apply(importPojo.getClassId())) + .classId(classId) .studentName(importPojo.getStudentName()) .studentSn(importPojo.getStudentSn()) .studentMobile(importPojo.getStudentMobile()) @@ -113,7 +111,7 @@ public class StudentBatchImportAdminDTO { * @return */ public static Student pojo(StudentBatchImportAdminDTO importPojo) { - return pojo(importPojo, o -> Long.valueOf(defaultIfNull(o, "-1")), e -> e); + return pojo(importPojo, -1L, e -> e); } } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportAdminDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportAdminDTO.java new file mode 100644 index 00000000..7762ebad --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportAdminDTO.java @@ -0,0 +1,122 @@ +package com.ibeetl.jlw.entity.dto; + +import com.ibeetl.admin.core.annotation.ExcelRequireIgnore; +import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile; +import com.ibeetl.admin.core.validation.Email; +import com.ibeetl.admin.core.validation.Mobile; +import com.ibeetl.jlw.entity.Teacher; +import com.ibeetl.jlw.enums.GenderEnum; +import lombok.Data; +import lombok.ToString; +import lombok.experimental.FieldNameConstants; + +import java.util.Date; +import java.util.function.Function; + +/** + * 功能描述:
+ * (超管)教师管理, 导入实体 + * + * @Author: lx + * @Date: 2023/2/5 23:50 + */ +@Data +@FieldNameConstants +@ToString +@ExcelFile(fileHeadTemplate = "universitiesCollegesName|universityFacultyName|universitySystemName|teacherName|teacherJobNumber|teacherMobile|teacherEmail", + fileMappingTemplate = "universitiesCollegesName=院校名称|universityFacultyName=院系名称|universitySystemName=专业名称|" + + "teacherName=教师姓名|teacherJobNumber=工号|teacherMobile=电话|teacherEmail=邮箱", + datasheetHidden = true, enableDataValidation = true) +public class TeacherBatchImportAdminDTO { + +// /** +// * 院校名称 +// */ +// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversitiesCollegesService.getAllUniversitiesColleges") +// private String universitiesCollegesId ; +// /** +// * 院系名称 +// */ +// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversityFacultyService.getAllUniversityFacultyWithColleges", beforeFieldName = "universitiesCollegesId") +// private String universityFacultyId ; +// /** +// * 专业名称 +// */ +// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversitySystemService.getAllUniversitiesCollegesWithFaculty", beforeFieldName = "universityFacultyId") +// private String universitySystemId ; + + /** + * 院校名称 + */ + private String universitiesCollegesName ; + /** + * 院系名称 + */ + private String universityFacultyName ; + /** + * 专业名称 + */ + private String universitySystemName ; + + /** + * 教师姓名 + */ + private String teacherName ; + /** + * 工号 + */ + private String teacherJobNumber ; + + /** + * 电话 + */ + @Mobile + @ExcelRequireIgnore + private String teacherMobile ; + + /** + * 邮箱 + */ + @Email + @ExcelRequireIgnore + private String teacherEmail ; + + /** + * 类型转换 + * + * @param importPojo 导入的数据 + * @param function 二次加工 + * @return + */ + public static Teacher pojo(TeacherBatchImportAdminDTO importPojo, Long universitiesCollegesId, Long universityFacultyId, Long universitySystemId, Function function) { + Teacher build = Teacher.builder() +// .universitiesCollegesId(longValuesOf(importPojo.getUniversitiesCollegesId())) +// .universityFacultyId(longValuesOf(importPojo.getUniversityFacultyId())) +// .universitySystemId(longValuesOf(importPojo.getUniversitySystemId())) + .universitiesCollegesId(universitiesCollegesId) + .universityFacultyId(universityFacultyId) + .universitySystemId(universitySystemId) + .teacherJobNumber(importPojo.getTeacherJobNumber()) + .teacherName(importPojo.getTeacherName()) + .teacherEmail(importPojo.getTeacherEmail()) + .teacherMobile(importPojo.getTeacherMobile()) + .teacherGender(GenderEnum.UN_KNOW) + .teacherPassword("123qwe") + .addTime(new Date()) + .teacherStatus(1) + .build(); + + return function.apply(build); + } + + /** + * 类型转换 + * + * @param importPojo 导入的数据 + * @return + */ + public static Teacher pojo(TeacherBatchImportAdminDTO importPojo) { + return pojo(importPojo, -1L,-1L,-1L, e -> e); + } + +} diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportUniAdminDTO.java similarity index 54% rename from web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java rename to web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportUniAdminDTO.java index 00d0d7c0..8d86657e 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherBatchImportUniAdminDTO.java @@ -2,7 +2,6 @@ package com.ibeetl.jlw.entity.dto; import com.ibeetl.admin.core.annotation.ExcelRequireIgnore; import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile; -import com.ibeetl.admin.core.util.excelGroupValidation.ExcelValidation; import com.ibeetl.admin.core.validation.Email; import com.ibeetl.admin.core.validation.Mobile; import com.ibeetl.jlw.entity.Teacher; @@ -14,11 +13,9 @@ import lombok.experimental.FieldNameConstants; import java.util.Date; import java.util.function.Function; -import static cn.jlw.util.excel.ExcelUtil.longValuesOf; - /** * 功能描述:
- * 学生管理, 导入实体 + * (学校管理员)教师管理, 导入实体 * * @Author: lx * @Date: 2023/2/5 23:50 @@ -26,27 +23,31 @@ import static cn.jlw.util.excel.ExcelUtil.longValuesOf; @Data @FieldNameConstants @ToString -@ExcelFile(fileHeadTemplate = "universitiesCollegesId|universityFacultyId|universitySystemId|teacherName|teacherJobNumber|teacherMobile|teacherEmail", - fileMappingTemplate = "universitiesCollegesId=院校名称|universityFacultyId=院系名称|universitySystemId=专业名称|" + +@ExcelFile(fileHeadTemplate = "universityFacultyName|universitySystemName|teacherName|teacherJobNumber|teacherMobile|teacherEmail", + fileMappingTemplate = "universityFacultyName=院系名称|universitySystemName=专业名称|" + "teacherName=教师姓名|teacherJobNumber=工号|teacherMobile=电话|teacherEmail=邮箱", datasheetHidden = true, enableDataValidation = true) -public class TeacherBatchImportDTO { +public class TeacherBatchImportUniAdminDTO { + +// /** +// * 院系名称 +// */ +// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversityFacultyService.getAllUniversityFacultyWithColleges", beforeFieldName = "universitiesCollegesId") +// private String universityFacultyId ; +// /** +// * 专业名称 +// */ +// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversitySystemService.getAllUniversitiesCollegesWithFaculty", beforeFieldName = "universityFacultyId") +// private String universitySystemId ; - /** - * 院校名称 - */ - @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversitiesCollegesService.getAllUniversitiesColleges") - private String universitiesCollegesId ; /** * 院系名称 */ - @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversityFacultyService.getAllUniversityFacultyWithColleges", beforeFieldName = "universitiesCollegesId") - private String universityFacultyId ; + private String universityFacultyName ; /** * 专业名称 */ - @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.UniversitySystemService.getAllUniversitiesCollegesWithFaculty", beforeFieldName = "universityFacultyId") - private String universitySystemId ; + private String universitySystemName ; /** * 教师姓名 @@ -78,11 +79,13 @@ public class TeacherBatchImportDTO { * @param function 二次加工 * @return */ - public static Teacher pojo(TeacherBatchImportDTO importPojo, Function function) { + public static Teacher pojo(TeacherBatchImportUniAdminDTO importPojo, Long universitiesCollegesId, Long universityFacultyId, Long universitySystemId, Function function) { Teacher build = Teacher.builder() - .universitiesCollegesId(longValuesOf(importPojo.getUniversitiesCollegesId())) - .universityFacultyId(longValuesOf(importPojo.getUniversityFacultyId())) - .universitySystemId(longValuesOf(importPojo.getUniversitySystemId())) +// .universityFacultyId(longValuesOf(importPojo.getUniversityFacultyId())) +// .universitySystemId(longValuesOf(importPojo.getUniversitySystemId())) + .universitiesCollegesId(universitiesCollegesId) + .universityFacultyId(universityFacultyId) + .universitySystemId(universitySystemId) .teacherJobNumber(importPojo.getTeacherJobNumber()) .teacherName(importPojo.getTeacherName()) .teacherEmail(importPojo.getTeacherEmail()) @@ -102,8 +105,8 @@ public class TeacherBatchImportDTO { * @param importPojo 导入的数据 * @return */ - public static Teacher pojo(TeacherBatchImportDTO importPojo) { - return pojo(importPojo, e -> e); + public static Teacher pojo(TeacherBatchImportUniAdminDTO importPojo) { + return pojo(importPojo, -1L, -1L,-1L, e -> e); } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherService.java index dab3a9e1..196eba1c 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherService.java @@ -22,7 +22,7 @@ import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.TeacherDao; import com.ibeetl.jlw.dao.UniversitiesCollegesDao; import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.entity.dto.TeacherBatchImportDTO; +import com.ibeetl.jlw.entity.dto.TeacherBatchImportAdminDTO; import com.ibeetl.jlw.job.CacheLogJob; import com.ibeetl.jlw.web.query.*; import org.apache.commons.collections4.CollectionUtils; @@ -801,7 +801,7 @@ public class TeacherService extends CoreBaseService { * @Author: 87966 * @Date: 2023/2/14 15:23 */ - public void validateTeacherSnListIsExistsThrow(List list, MyValidateExcelCellDataListener listener) { + public void validateTeacherSnListIsExistsThrow(List list, MyValidateExcelCellDataListener listener) { if (CollectionUtil.isEmpty(list)) { return; } diff --git a/web/src/main/java/com/ibeetl/jlw/web/StudentController.java b/web/src/main/java/com/ibeetl/jlw/web/StudentController.java index 9c24a4de..44d51bbf 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/StudentController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/StudentController.java @@ -2900,7 +2900,7 @@ public class StudentController extends BaseController{ UniversitySystem universitySystem = universitySystemService.getByNameOrCreate( item.getUniversitySystemName(), coreUser.getOrgId(), coreUser.getId(), universityFaculty.getUniversityFacultyId()); - // 查询这个院校已经存在的专业 + // 查询这个院校已经存在的班级 SchoolClass schoolClass = schoolClassService.getByNameOrCreate(item.getClassId(), coreUser.getOrgId(), coreUser.getId(), universityFaculty.getUniversityFacultyId(), universitySystem.getUniversitySystemId()); @@ -3008,12 +3008,12 @@ public class StudentController extends BaseController{ UniversitySystem universitySystem = universitySystemService.getByNameOrCreate( item.getUniversitySystemName(), universitiesColleges.getOrgId(), universitiesColleges.getUserId(), universityFaculty.getUniversityFacultyId()); - // 查询这个院校已经存在的专业 + // 查询这个院校已经存在的班级 SchoolClass schoolClass = schoolClassService.getByNameOrCreate(item.getClassId(), universitiesColleges.getOrgId(), universitiesColleges.getUserId(), universityFaculty.getUniversityFacultyId(), universitySystem.getUniversitySystemId()); - return StudentBatchImportAdminDTO.pojo(item, importClassIdAsString -> schoolClass.getClassId(), identity()); + return StudentBatchImportAdminDTO.pojo(item, schoolClass.getClassId(), identity()); }) .collect(Collectors.toList()); diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherController.java index c6e821ce..94bd6a13 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherController.java @@ -22,7 +22,8 @@ import com.ibeetl.admin.core.util.TimeTool; import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.jlw.dao.UniversitiesCollegesDao; import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.entity.dto.TeacherBatchImportDTO; +import com.ibeetl.jlw.entity.dto.TeacherBatchImportAdminDTO; +import com.ibeetl.jlw.entity.dto.TeacherBatchImportUniAdminDTO; import com.ibeetl.jlw.service.*; import com.ibeetl.jlw.web.query.*; import lombok.SneakyThrows; @@ -58,8 +59,8 @@ import static cn.jlw.util.CacheUserUtil.getStudent; import static com.ibeetl.admin.console.service.OrgConsoleService.setObjectOrgId; import static com.ibeetl.admin.core.util.ExcelUtil.convertData; import static com.ibeetl.admin.core.util.ExcelUtil.write; -import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; import static com.ibeetl.admin.core.web.JsonReturnCode.DIY_ERROR; +import static java.util.function.UnaryOperator.identity; /** * Teacher 接口 @@ -109,6 +110,8 @@ public class TeacherController extends BaseController { @Autowired private StudentDefenceLogService studentDefenceLogService; @Autowired private StudentDefenceLogInfoService studentDefenceLogInfoService; @Autowired private UniversitiesCollegesDao universitiesCollegesDao; + @Autowired private UniversityFacultyService universityFacultyService; + @Autowired private UniversitySystemService universitySystemService; @Autowired FileService fileService; @@ -1526,16 +1529,20 @@ public class TeacherController extends BaseController { @SneakyThrows @GetMapping({ API + "/exportBatchTemplate.do", MODEL + "/downloadTemplate.json" }) @ResponseBody - public void exportBatchTemplate() { - - Assert.notNull(getUser(), "请登录后再操作"); + public void exportBatchTemplate(@SCoreUser CoreUser coreUser) { String filename = StrUtil.format("批量教师导入模板{}.xlsx", System.currentTimeMillis()); setExcelResponse(filename); - // 输出 Excel - com.ibeetl.admin.core.util.excelGroupValidation.ExcelUtil.createExcel(Arrays.asList(new TeacherBatchImportDTO()), response.getOutputStream()); + if (coreUser.isAdmin()) { + // 输出 Excel + com.ibeetl.admin.core.util.excelGroupValidation.ExcelUtil.createExcel(Arrays.asList(new TeacherBatchImportAdminDTO()), response.getOutputStream()); + } + else { + // 输出 Excel + com.ibeetl.admin.core.util.excelGroupValidation.ExcelUtil.createExcel(Arrays.asList(new TeacherBatchImportUniAdminDTO()), response.getOutputStream()); + } } /** @@ -1553,15 +1560,60 @@ public class TeacherController extends BaseController { try { Assert.isNull(getStudent(), "学生无法访问该接口"); + List list = null; // 输出 Excel - MyValidateExcelCellDataListener listener = new MyValidateExcelCellDataListener<>(); + MyValidateExcelCellDataListener listener = new MyValidateExcelCellDataListener<>(); - ExcelUtil.readExcelNotContainHeader(file, TeacherBatchImportDTO.class, listener); - // 判断错误的结果集 - Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage())); - // 类型转换 - List list = listener.getData().stream().map(TeacherBatchImportDTO::pojo) - .collect(Collectors.toList()); + if (coreUser.isAdmin()) { + + ExcelUtil.readExcelNotContainHeader(file, TeacherBatchImportAdminDTO.class, listener); + // 判断错误的结果集 + Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage())); + + // 类型转换 + list = (List) listener.getData().stream().map(item -> { + + TeacherBatchImportAdminDTO item1 = (TeacherBatchImportAdminDTO) item; + + // 查询这个院校已经存在的院校 + UniversitiesColleges universitiesColleges = universitiesCollegesService.getByNameOrCreate(item1.getUniversitiesCollegesName()); + + // 查询这个院校已经存在的院系 + UniversityFaculty universityFaculty = universityFacultyService.getByNameOrCreate( + item1.getUniversityFacultyName(), universitiesColleges.getOrgId(), universitiesColleges.getUserId()); + + // 查询这个院校已经存在的专业 + UniversitySystem universitySystem = universitySystemService.getByNameOrCreate( + item1.getUniversitySystemName(), universitiesColleges.getOrgId(), universitiesColleges.getUserId(), universityFaculty.getUniversityFacultyId()); + + return TeacherBatchImportAdminDTO.pojo(item1, universitiesColleges.getUniversitiesCollegesId(), universityFaculty.getUniversityFacultyId(), universitySystem.getUniversitySystemId(), identity()); + }) + .collect(Collectors.toList()); + } + // 除了超管其他身份 + else { + + ExcelUtil.readExcelNotContainHeader(file, TeacherBatchImportUniAdminDTO.class, listener); + // 判断错误的结果集 + Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage())); + // 类型转换 + list = (List) listener.getData().stream().map(item -> { + + TeacherBatchImportUniAdminDTO item1 = (TeacherBatchImportUniAdminDTO) item; + + // 查询这个院校已经存在的院系 + Long orgId = coreUser.getOrgId(); + Long userId = coreUser.getId(); + + UniversityFaculty universityFaculty = universityFacultyService.getByNameOrCreate(item1.getUniversityFacultyName(), orgId, userId); + + // 查询这个院校已经存在的专业 + UniversitySystem universitySystem = universitySystemService.getByNameOrCreate(item1.getUniversitySystemName(), orgId, userId, universityFaculty.getUniversityFacultyId()); + + return TeacherBatchImportUniAdminDTO.pojo(item1, universityFaculty.getUniversitiesCollegesId(), universityFaculty.getUniversityFacultyId(), universitySystem.getUniversitySystemId(), identity()); + }) + .collect(Collectors.toList()); + } // 设置机构ID setObjectOrgId(list, (e) -> { @@ -1580,8 +1632,7 @@ public class TeacherController extends BaseController { listener.putFailMessage(StrUtil.format("异常的院校ID:{},该院校已删除状态", e.getUniversitiesCollegesId())); } return sc.getOrgId(); - } - else { + } else { listener.putFailMessage(StrUtil.format("异常的院校ID:{},未查询到院校信息,请联系管理员", e.getUniversitiesCollegesId())); } return null;