学生导入,增加 验证邮箱和手机格式功能;

学生导入,增加微信号字段录入;
beetlsql3-dev
maLix 2 years ago
parent 3dba87e4b8
commit 00d4b006bc

@ -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<? extends Payload>[] payload() default {};
}

@ -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<Email, String> {
@Override
public void initialize(Email annotation) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// 如果邮箱为空,默认不校验,即校验通过
if (StrUtil.isEmpty(value)) {
return true;
}
// 校验邮箱
return Validator.isEmail(value);
}
}

@ -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<T> implements ReadListener<T> {
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<T> implements ReadListener<T> {
// }
// });
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<T> implements ReadListener<T> {
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);
}

@ -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<Student>{
@Update
void deleteStudentByIds(String ids);
@Update
void batchAppendCodeDelByIds(String ids);
@Update
void deleteByIds(String ids);
List<Map<String,Object>> getExcelValues (StudentQuery studentQuery);
List<Map<String,Object>> getExcelValues2Competition (StudentQuery studentQuery);

@ -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")

@ -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")

@ -436,9 +436,10 @@ public class StudentService extends CoreBaseService<Student>{
//置空相应coreUser的code
userConsoleService.batchSetCodeNullByIds(userIds);
// 批量置空 学生编号后面追加@_DEL, 代表已经删除了
studentDao.batchAppendCodeDelByIds(ids);
// 逻辑删除学生
studentDao.deleteStudentByIds(ids);
}
public void deleteByList(List list){

@ -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
===

Loading…
Cancel
Save