dzx vor 8 Monaten
Ursprung
Commit
f8a6632b65

+ 232 - 188
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -1,36 +1,70 @@
 package com.xjrsoft.module.banding.service.impl;
 
+import cn.dev33.satoken.secure.BCrypt;
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.xjrsoft.common.enums.ArchivesStatusEnum;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.enums.RoleEnum;
 import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.config.CommonPropertiesConfig;
+import com.xjrsoft.module.banding.dto.BandingTaskClassStudentPageDto;
 import com.xjrsoft.module.banding.dto.ChangeClassDto;
 import com.xjrsoft.module.banding.dto.StudentDto;
+import com.xjrsoft.module.banding.entity.BandingTask;
 import com.xjrsoft.module.banding.entity.BandingTaskClass;
 import com.xjrsoft.module.banding.entity.BandingTaskClassStudent;
 import com.xjrsoft.module.banding.mapper.BandingTaskClassMapper;
 import com.xjrsoft.module.banding.mapper.BandingTaskClassStudentMapper;
+import com.xjrsoft.module.banding.mapper.BandingTaskMapper;
 import com.xjrsoft.module.banding.service.IBandingTaskClassStudentService;
+import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseMajorSet;
 import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.mapper.BaseMajorSetMapper;
+import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.service.IBaseSemesterService;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.entity.UserRoleRelation;
+import com.xjrsoft.module.organization.service.IUserRoleRelationService;
+import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.student.dto.BaseNewStudentPageDto;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
+import com.xjrsoft.module.student.entity.BaseNewStudent;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.BaseStudentFamily;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.entity.StudentReportPlan;
 import com.xjrsoft.module.student.entity.StudentReportRecord;
+import com.xjrsoft.module.student.mapper.BaseClassMajorSetMapper;
 import com.xjrsoft.module.student.mapper.StudentReportRecordMapper;
+import com.xjrsoft.module.student.service.IBaseNewStudentService;
+import com.xjrsoft.module.student.service.IBaseStudentFamilyService;
+import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
+import com.xjrsoft.module.student.service.IBaseStudentService;
 import com.xjrsoft.module.student.service.IStudentReportPlanService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
 
 /**
 * @title: 新生分班任务
@@ -42,11 +76,23 @@ import java.util.List;
 @AllArgsConstructor
 public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<BandingTaskClassStudentMapper, BandingTaskClassStudent> implements IBandingTaskClassStudentService {
     private final BandingTaskClassMapper taskClassMapper;
-
+    private final BandingTaskMapper bandingTaskMapper;
     private final IStudentReportPlanService reportPlanService;
     private final IBaseSemesterService semesterService;
+    private final IBaseNewStudentService newStudentService;
     private final StudentReportRecordMapper reportRecordMapper;
 
+    private final IBaseClassService classService;
+    private final BaseClassMajorSetMapper classMajorSetMapper;
+    private final CommonPropertiesConfig propertiesConfig;
+    private final IUserService userService;
+    private final IUserRoleRelationService roleRelationService;
+    private final IBaseStudentSchoolRollService schoolRollService;
+    private final IBaseStudentService studentService;
+    private final IBaseStudentFamilyService familyService;
+    private final BaseMajorSetMapper majorSetMapper;
+    private final RedisUtil redisUtil;
+
     @Override
     public Boolean add(BandingTaskClassStudent bandingTaskClass) {
         bandingTaskClass.setCreateDate(new Date());
@@ -89,6 +135,7 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                         .eq(StudentReportPlan::getBandingTaskId, taskClass.getBandingTaskId())
         );
         if(plan == null){
+            plan = new StudentReportPlan();
             plan.setStatus(0);
             plan.setCategory(2);
             plan.setBandingTaskId(taskClass.getBandingTaskId());
@@ -117,16 +164,14 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                     }}
             );
             if(dto.getIsHandle() != null && dto.getIsHandle() == 1){
-                insertList.add(
-                        new StudentReportRecord(){{
-                            setCreateDate(new Date());
-                            setCreateUserId(StpUtil.getLoginIdAsLong());
-                            setUserId(newStudentId);
-                            setStudentReportPlanId(plan.getId());
-                            setDeleteMark(DeleteMark.NODELETE.getCode());
-                            setEnabledMark(EnabledMark.ENABLED.getCode());
-                        }}
-                );
+                StudentReportRecord record = new StudentReportRecord();
+                record.setCreateDate(new Date());
+                record.setCreateUserId(StpUtil.getLoginIdAsLong());
+                record.setUserId(newStudentId);
+                record.setStudentReportPlanId(plan.getId());
+                record.setDeleteMark(DeleteMark.NODELETE.getCode());
+                record.setEnabledMark(EnabledMark.ENABLED.getCode());
+                insertList.add(record);
             }
         }
         if(!dataList.isEmpty()){
@@ -140,183 +185,182 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
         }
 
 
-//        if(dto.getIsHandle() != null && dto.getIsHandle() == 1){
-//            BandingTaskClass taskClass = taskClassMapper.selectById(dto.getBandingTaskClassId());
-//            List<Long> studentIds = dataList.stream().map(BandingTaskClassStudent::getNewStudentId).collect(Collectors.toList());
-//            List<BaseNewStudent> list = newStudentService.list(
-//                    new QueryWrapper<BaseNewStudent>().lambda()
-//                            .in(BaseNewStudent::getId, studentIds)
-//            );
-//            List<BaseNewStudent> updateList = new ArrayList<>();
-//            for (BaseNewStudent student : list) {
-//                student.setStatus(1);
-//                student.setOperateMode(2);
-//                updateList.add(student);
-//            }
-//            if(!updateList.isEmpty()){
-//                newStudentService.updateBatchById(updateList);
-//            }
-//            {
-//                Date createDate = new Date();
-//                BandingTask bandingTask = bandingTaskMapper.selectById(taskClass.getBandingTaskId());
-//                List<BandingTaskClassSureListVo> classSure = taskClassMapper.getClassSure(new BandingTaskClassStudentPageDto() {{
-//                    setBandingTaskId(taskClass.getBandingTaskId());
-//                }});
-//
-//                Map<Long, Integer> classTotal = classSure.stream().collect(Collectors.toMap(BandingTaskClassSureListVo::getId, BandingTaskClassSureListVo::getNumber));
-//                Map<Long, Integer> classBoy = classSure.stream().collect(Collectors.toMap(BandingTaskClassSureListVo::getId, BandingTaskClassSureListVo::getMaleCount));
-//                Map<Long, Integer> classGirl = classSure.stream().collect(Collectors.toMap(BandingTaskClassSureListVo::getId, BandingTaskClassSureListVo::getFemaleCount));
-//
-//
-//                //生成班级数据
-//                Map<Long, Long> classMap = new HashMap<>();
-//                Map<Long, Long> taskClassMajorMap = new HashMap<>();
-//                //查询出需要新增的班级信息
-//                Map<Long, Long> majorDeptMap = majorSetMapper.selectList(
-//                        new QueryWrapper<BaseMajorSet>()
-//                ).stream().collect(Collectors.toMap(BaseMajorSet::getId, BaseMajorSet::getDepartmentId));
-//                //先查询是否已经存在这个班级,如果存在就更新,不存在就新增
-//                BaseClass baseClass = classService.getOne(
-//                        new QueryWrapper<BaseClass>().lambda()
-//                                .eq(BaseClass::getName, taskClass.getName())
-//                                .eq(BaseClass::getGradeId, bandingTask.getGradeId())
-//                                .eq(BaseClass::getEnrollType, bandingTask.getEnrollType())
-//                );
-//                if(baseClass == null){
-//                    baseClass = new BaseClass() {{
-//                        setName(taskClass.getName());
-//                        setClassroomId(taskClass.getClassroomId());
-//                        setTeacherId(taskClass.getTeacherId());
-//                        setIsGraduate(1);
-//                        setMajorSetId(taskClass.getMajorSetId());
-//                        setOrgId(majorDeptMap.get(taskClass.getMajorSetId()));
-//                        setIsOrderClass(taskClass.getIsOrderClass()==null?0:taskClass.getIsOrderClass().intValue());
-//                        setGradeId(bandingTask.getGradeId());
-//                        setDeleteMark(DeleteMark.NODELETE.getCode());
-//                        setEnrollType(bandingTask.getEnrollType());
-//                        setCreateDate(new Date());
-//                    }};
-//
-//                    classService.save(baseClass);
-//
-//                    BaseClassMajorSet majorSet = new BaseClassMajorSet() {{
-//                        setCreateDate(createDate);
-//                        setMajorSetId(taskClass.getMajorSetId());
-//                        setPlanTotalStudent(taskClass.getNumber());
-//                        setTotalStudent(classTotal.get(taskClass.getId()));
-//                        setBoyNum(classBoy.get(taskClass.getId()));
-//                        setGirlNum(classGirl.get(taskClass.getId()));
-//                    }};
-//                    majorSet.setClassId(baseClass.getId());
-//                    classMajorSetMapper.insert(majorSet);
-//                }
-//
-//
-//                classMap.put(taskClass.getId(), baseClass.getId());
-//                taskClassMajorMap.put(taskClass.getId(), taskClass.getMajorSetId());
-//
-//                /**
-//                 * 新增学生数据
-//                 * 1、新增用户xjr_user,需要先查询用户信息是否已经存在
-//                 * 2、新增用户与角色的关系xjr_user_role_relation
-//                 * 3、新增学生基本信息base_student
-//                 * 4、新增学籍信息表base_student_school_roll
-//                 * 5、新增家庭信息表base_student_family
-//                 */
-//                LocalDateTime now = LocalDateTime.now();
-//                List<String> idNumbers = updateList.stream().map(BaseNewStudent::getCredentialNumber).collect(Collectors.toList());
-//                List<User> students = userService.list(
-//                        new MPJLambdaWrapper<User>()
-//                                .disableLogicDel()
-//                                .in(User::getCredentialNumber, idNumbers)
-//                                .orderByAsc(User::getCreateDate)
-//                );
-//                Map<String, Long> userSet = new HashMap<>();
-//                Map<String, Integer> userDeleteMarkMap = new HashMap<>();
-//                for (User student : students) {
-//                    userSet.put(student.getCredentialNumber(), student.getId());
-//                    userDeleteMarkMap.put(student.getCredentialNumber(), student.getDeleteMark());
-//                }
-//                Map<Long, Long> studentClassRelation = dataList.stream().collect(Collectors.toMap(BandingTaskClassStudent::getNewStudentId, BandingTaskClassStudent::getBandingTaskClassId));
-//                for (BaseNewStudent student : updateList) {
-//                    if(userSet.containsKey(student.getCredentialNumber())){
-//                        schoolRollService.updateStudentClass(classMap.get(studentClassRelation.get(student.getId())), userSet.get(student.getCredentialNumber()));
-//                        Integer deleteMark = userDeleteMarkMap.get(student.getCredentialNumber());
-//                        if(deleteMark != null && deleteMark == 1){
-//                            userService.recoveryStudentInfo(userSet.get(student.getCredentialNumber()));
-//                        }
-//                        continue;
-//                    }
-//                    LocalDate birthDate = getBirthDate(student.getCredentialNumber());
-//                    User xjrUser = new User() {{
-//                        setCreateDate(now);
-//                        setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
-//                        setName(student.getName());
-//                        setUserName(student.getCredentialNumber());
-//                        setCredentialNumber(student.getCredentialNumber());
-//                        setCredentialType("ZZLS10007");
-//                        setMobile(student.getMobile());
-//                        setEnabledMark(EnabledMark.DISABLED.getCode());
-//                        setGender(student.getGender());
-//                        setIsChangePassword(1);
-//                        setBirthDate(birthDate.atStartOfDay());
-//                    }};
-//                    userService.save(xjrUser);
-//
-//                    UserRoleRelation userRoleRelation = new UserRoleRelation() {{
-//                        setRoleId(RoleEnum.STUDENT.getCode());
-//                        setUserId(xjrUser.getId());
-//                    }};
-//                    roleRelationService.save(userRoleRelation);
-//
-//                    BaseStudent baseStudent = new BaseStudent() {{
-//                        setUserId(xjrUser.getId());
-//                        setCreateDate(now);
-//                        setStudentId(student.getCredentialNumber());
-//                        if(student.getHeight() != null){
-//                            setHeight(student.getHeight().doubleValue());
-//                        }
-//                        if(student.getWeight() != null){
-//                            setWeight(student.getWeight().doubleValue());
-//                        }
-//                    }};
-//                    studentService.save(baseStudent);
-//
-//                    BaseStudentSchoolRoll schoolRoll = new BaseStudentSchoolRoll() {{
-//                        setUserId(xjrUser.getId());
-//                        if(student.getScore() != null){
-//                            setGraduatedScore(student.getScore().doubleValue());
-//                        }
-//
-//                        setGraduatedUniversity(student.getGraduateSchool());
-//                        setClassId(classMap.get(studentClassRelation.get(student.getId())));
-//                        setMajorSetId(taskClassMajorMap.get(studentClassRelation.get(student.getId())));
-//                        setStduyStatus(student.getStduyStatus());
-//                        setEnrollType(bandingTask.getEnrollType());
-//                        setStudentSource(student.getSource());
-//                        setGradeId(bandingTask.getGradeId());
-//                        setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
-//                        setCreateDate(now);
-//                    }};
-//                    schoolRollService.save(schoolRoll);
-//
-//                    BaseStudentFamily studentFamily = new BaseStudentFamily() {{
-//                        setCreateDate(now);
-//                        setUserId(xjrUser.getId());
-//                        setTelephone(student.getFamilyMobile());
-//                        setAddress(student.getFamilyAddress());
-//                    }};
-//                    familyService.save(studentFamily);
-//                }
-//            }
-//            CompletableFuture.runAsync(() -> {
-//                List<User> userList = userService.list();
-//                redisUtil.set(GlobalConstant.USER_CACHE_KEY, userList);
-//
-//                List<UserRoleRelation> userRoleRelationList = roleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
-//                redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
-//            });
-//        }
+        if(dto.getIsHandle() != null && dto.getIsHandle() == 1){
+            List<Long> studentIds = dataList.stream().map(BandingTaskClassStudent::getNewStudentId).collect(Collectors.toList());
+            List<BaseNewStudent> list = newStudentService.list(
+                    new QueryWrapper<BaseNewStudent>().lambda()
+                            .in(BaseNewStudent::getId, studentIds)
+            );
+            List<BaseNewStudent> updateList = new ArrayList<>();
+            for (BaseNewStudent student : list) {
+                student.setStatus(1);
+                student.setOperateMode(2);
+                updateList.add(student);
+            }
+            if(!updateList.isEmpty()){
+                newStudentService.updateBatchById(updateList);
+            }
+            {
+                Date createDate = new Date();
+                BandingTask bandingTask = bandingTaskMapper.selectById(taskClass.getBandingTaskId());
+                List<BandingTaskClassSureListVo> classSure = taskClassMapper.getClassSure(new BandingTaskClassStudentPageDto() {{
+                    setBandingTaskId(taskClass.getBandingTaskId());
+                }});
+
+                Map<Long, Integer> classTotal = classSure.stream().collect(Collectors.toMap(BandingTaskClassSureListVo::getId, BandingTaskClassSureListVo::getNumber));
+                Map<Long, Integer> classBoy = classSure.stream().collect(Collectors.toMap(BandingTaskClassSureListVo::getId, BandingTaskClassSureListVo::getMaleCount));
+                Map<Long, Integer> classGirl = classSure.stream().collect(Collectors.toMap(BandingTaskClassSureListVo::getId, BandingTaskClassSureListVo::getFemaleCount));
+
+
+                //生成班级数据
+                Map<Long, Long> classMap = new HashMap<>();
+                Map<Long, Long> taskClassMajorMap = new HashMap<>();
+                //查询出需要新增的班级信息
+                Map<Long, Long> majorDeptMap = majorSetMapper.selectList(
+                        new QueryWrapper<BaseMajorSet>()
+                ).stream().collect(Collectors.toMap(BaseMajorSet::getId, BaseMajorSet::getDepartmentId));
+                //先查询是否已经存在这个班级,如果存在就更新,不存在就新增
+                BaseClass baseClass = classService.getOne(
+                        new QueryWrapper<BaseClass>().lambda()
+                                .eq(BaseClass::getName, taskClass.getName())
+                                .eq(BaseClass::getGradeId, bandingTask.getGradeId())
+                                .eq(BaseClass::getEnrollType, bandingTask.getEnrollType())
+                );
+                if(baseClass == null){
+                    baseClass = new BaseClass() {{
+                        setName(taskClass.getName());
+                        setClassroomId(taskClass.getClassroomId());
+                        setTeacherId(taskClass.getTeacherId());
+                        setIsGraduate(1);
+                        setMajorSetId(taskClass.getMajorSetId());
+                        setOrgId(majorDeptMap.get(taskClass.getMajorSetId()));
+                        setIsOrderClass(taskClass.getIsOrderClass()==null?0:taskClass.getIsOrderClass().intValue());
+                        setGradeId(bandingTask.getGradeId());
+                        setDeleteMark(DeleteMark.NODELETE.getCode());
+                        setEnrollType(bandingTask.getEnrollType());
+                        setCreateDate(new Date());
+                    }};
+
+                    classService.save(baseClass);
+
+                    BaseClassMajorSet majorSet = new BaseClassMajorSet() {{
+                        setCreateDate(createDate);
+                        setMajorSetId(taskClass.getMajorSetId());
+                        setPlanTotalStudent(taskClass.getNumber());
+                        setTotalStudent(classTotal.get(taskClass.getId()));
+                        setBoyNum(classBoy.get(taskClass.getId()));
+                        setGirlNum(classGirl.get(taskClass.getId()));
+                    }};
+                    majorSet.setClassId(baseClass.getId());
+                    classMajorSetMapper.insert(majorSet);
+                }
+
+
+                classMap.put(taskClass.getId(), baseClass.getId());
+                taskClassMajorMap.put(taskClass.getId(), taskClass.getMajorSetId());
+
+                /**
+                 * 新增学生数据
+                 * 1、新增用户xjr_user,需要先查询用户信息是否已经存在
+                 * 2、新增用户与角色的关系xjr_user_role_relation
+                 * 3、新增学生基本信息base_student
+                 * 4、新增学籍信息表base_student_school_roll
+                 * 5、新增家庭信息表base_student_family
+                 */
+                LocalDateTime now = LocalDateTime.now();
+                List<String> idNumbers = updateList.stream().map(BaseNewStudent::getCredentialNumber).collect(Collectors.toList());
+                List<User> students = userService.list(
+                        new MPJLambdaWrapper<User>()
+                                .disableLogicDel()
+                                .in(User::getCredentialNumber, idNumbers)
+                                .orderByAsc(User::getCreateDate)
+                );
+                Map<String, Long> userSet = new HashMap<>();
+                Map<String, Integer> userDeleteMarkMap = new HashMap<>();
+                for (User student : students) {
+                    userSet.put(student.getCredentialNumber(), student.getId());
+                    userDeleteMarkMap.put(student.getCredentialNumber(), student.getDeleteMark());
+                }
+                Map<Long, Long> studentClassRelation = dataList.stream().collect(Collectors.toMap(BandingTaskClassStudent::getNewStudentId, BandingTaskClassStudent::getBandingTaskClassId));
+                for (BaseNewStudent student : updateList) {
+                    if(userSet.containsKey(student.getCredentialNumber())){
+                        schoolRollService.updateStudentClass(classMap.get(studentClassRelation.get(student.getId())), userSet.get(student.getCredentialNumber()));
+                        Integer deleteMark = userDeleteMarkMap.get(student.getCredentialNumber());
+                        if(deleteMark != null && deleteMark == 1){
+                            userService.recoveryStudentInfo(userSet.get(student.getCredentialNumber()));
+                        }
+                        continue;
+                    }
+                    LocalDate birthDate = getBirthDate(student.getCredentialNumber());
+                    User xjrUser = new User() {{
+                        setCreateDate(now);
+                        setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
+                        setName(student.getName());
+                        setUserName(student.getCredentialNumber());
+                        setCredentialNumber(student.getCredentialNumber());
+                        setCredentialType("ZZLS10007");
+                        setMobile(student.getMobile());
+                        setEnabledMark(EnabledMark.DISABLED.getCode());
+                        setGender(student.getGender());
+                        setIsChangePassword(1);
+                        setBirthDate(birthDate.atStartOfDay());
+                    }};
+                    userService.save(xjrUser);
+
+                    UserRoleRelation userRoleRelation = new UserRoleRelation() {{
+                        setRoleId(RoleEnum.STUDENT.getCode());
+                        setUserId(xjrUser.getId());
+                    }};
+                    roleRelationService.save(userRoleRelation);
+
+                    BaseStudent baseStudent = new BaseStudent() {{
+                        setUserId(xjrUser.getId());
+                        setCreateDate(now);
+                        setStudentId(student.getCredentialNumber());
+                        if(student.getHeight() != null){
+                            setHeight(student.getHeight().doubleValue());
+                        }
+                        if(student.getWeight() != null){
+                            setWeight(student.getWeight().doubleValue());
+                        }
+                    }};
+                    studentService.save(baseStudent);
+
+                    BaseStudentSchoolRoll schoolRoll = new BaseStudentSchoolRoll() {{
+                        setUserId(xjrUser.getId());
+                        if(student.getScore() != null){
+                            setGraduatedScore(student.getScore().doubleValue());
+                        }
+
+                        setGraduatedUniversity(student.getGraduateSchool());
+                        setClassId(classMap.get(studentClassRelation.get(student.getId())));
+                        setMajorSetId(taskClassMajorMap.get(studentClassRelation.get(student.getId())));
+                        setStduyStatus(student.getStduyStatus());
+                        setEnrollType(bandingTask.getEnrollType());
+                        setStudentSource(student.getSource());
+                        setGradeId(bandingTask.getGradeId());
+                        setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
+                        setCreateDate(now);
+                    }};
+                    schoolRollService.save(schoolRoll);
+
+                    BaseStudentFamily studentFamily = new BaseStudentFamily() {{
+                        setCreateDate(now);
+                        setUserId(xjrUser.getId());
+                        setTelephone(student.getFamilyMobile());
+                        setAddress(student.getFamilyAddress());
+                    }};
+                    familyService.save(studentFamily);
+                }
+            }
+            CompletableFuture.runAsync(() -> {
+                List<User> userList = userService.list();
+                redisUtil.set(GlobalConstant.USER_CACHE_KEY, userList);
+
+                List<UserRoleRelation> userRoleRelationList = roleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
+                redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
+            });
+        }
         return true;
     }
 

+ 3 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseNewStudentPageDto.java

@@ -92,4 +92,7 @@ public class BaseNewStudentPageDto extends PageInput {
 
     @ApiModelProperty("户籍所在地")
     private String city;
+
+    @ApiModelProperty("班主任")
+    private String teacherName;
 }

+ 3 - 0
src/main/resources/mapper/student/BaseNewStudentMapper.xml

@@ -49,6 +49,9 @@
         <if test="dto.gender != null and dto.gender != ''">
             AND t1.gender = #{dto.gender}
         </if>
+        <if test="dto.teacherName != null and dto.teacherName != ''">
+            AND t12.name like concat('%', #{dto.teacherName}, '%')
+        </if>
         <if test="dto.status != null">
             AND t1.status = #{dto.status}
         </if>