Browse Source

bug修复

dzx 6 months ago
parent
commit
af713d4702

+ 134 - 112
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -52,6 +52,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -97,6 +98,7 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
         return true;
     }
 
+    @Transactional
     @Override
     public Boolean changeClass(ChangeClassDto dto) {
         this.baseMapper.delete(
@@ -137,132 +139,152 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
             if(!updateList.isEmpty()){
                 newStudentService.updateBatchById(updateList);
             }
-            createStudentData(taskClass.getBandingTaskId(), dataList, updateList);
-        }
-        return true;
-    }
+            {
+                Date createDate = new Date();
+                BandingTask bandingTask = bandingTaskMapper.selectById(taskClass.getBandingTaskId());
+                List<BandingTaskClassSureListVo> classSure = taskClassMapper.getClassSure(new BandingTaskClassStudentPageDto() {{
+                    setBandingTaskId(taskClass.getBandingTaskId());
+                }});
 
-    void createStudentData(Long badingTaskId,List<BandingTaskClassStudent> classStudents, List<BaseNewStudent> updateList){
-        Date createDate = new Date();
-        BandingTask bandingTask = bandingTaskMapper.selectById(badingTaskId);
-        List<BandingTaskClassSureListVo> classSure = taskClassMapper.getClassSure(new BandingTaskClassStudentPageDto() {{
-            setBandingTaskId(badingTaskId);
-        }});
+                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, 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::getClassroomId, taskClass.getClassroomId())
+                                .eq(BaseClass::getTeacherId, taskClass.getTeacherId())
+                                .eq(BaseClass::getMajorSetId, taskClass.getMajorSetId())
+                                .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());
+                    }};
 
-        //生成班级数据
-        Map<Long, Long> classMap = new HashMap<>();
-        Map<Long, Long> taskClassMajorMap = new HashMap<>();
-        //查询出需要新增的班级信息
-        List<Long> classIds = classStudents.stream().map(BandingTaskClassStudent::getBandingTaskClassId).collect(Collectors.toList());
-        List<BandingTaskClass> classList = taskClassMapper.selectList(new QueryWrapper<BandingTaskClass>().lambda().in(BandingTaskClass::getId, classIds));
-        Map<Long, Long> majorDeptMap = majorSetMapper.selectList(new QueryWrapper<BaseMajorSet>()).stream().collect(Collectors.toMap(BaseMajorSet::getId, BaseMajorSet::getDepartmentId));
-        for (BandingTaskClass taskClass : classList) {
-            BaseClass baseClass = new BaseClass() {{
-                setName(taskClass.getName());
-                setClassroomId(taskClass.getClassroomId());
-                setTeacherId(taskClass.getTeacherId());
-                setIsGraduate(1);
-                setOrgId(majorDeptMap.get(taskClass.getMajorSetId()));
-                setIsOrderClass(taskClass.getIsOrderClass()==null?0:taskClass.getIsOrderClass().intValue());
-                setGradeId(bandingTask.getGradeId());
-                setDeleteMark(DeleteMark.NODELETE.getCode());
-                setEnrollType(bandingTask.getEnrollType());
-            }};
+                    classService.save(baseClass);
 
-            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);
+                }
 
-            BaseClassMajorSet majorSet = new BaseClassMajorSet() {{
-                setCreateDate(createDate);
-                setMajorSetId(taskClass.getMajorSetId());
-                setClassId(baseClass.getId());
-                setPlanTotalStudent(taskClass.getNumber());
-                setTotalStudent(classTotal.get(taskClass.getId()));
-                setBoyNum(classBoy.get(taskClass.getId()));
-                setGirlNum(classGirl.get(taskClass.getId()));
-            }};
-            classMajorSetMapper.insert(majorSet);
 
-            classMap.put(taskClass.getId(), baseClass.getId());
-            taskClassMajorMap.put(taskClass.getId(), taskClass.getMajorSetId());
-        }
+                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();
-        Map<Long, Long> studentClassRelation = classStudents.stream().collect(Collectors.toMap(BandingTaskClassStudent::getNewStudentId, BandingTaskClassStudent::getBandingTaskClassId));
-        for (BaseNewStudent student : updateList) {
-            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);
+                /**
+                 * 新增学生数据
+                 * 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 QueryWrapper<User>().lambda().in(User::getCredentialNumber, idNumbers));
+                Set<String> userSet = students.stream().map(User::getCredentialNumber).collect(Collectors.toSet());
+                Map<Long, Long> studentClassRelation = dataList.stream().collect(Collectors.toMap(BandingTaskClassStudent::getNewStudentId, BandingTaskClassStudent::getBandingTaskClassId));
+                for (BaseNewStudent student : updateList) {
+                    if(userSet.contains(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);
+                    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);
+                    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());
-                }
+                    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);
+                        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);
+                    BaseStudentFamily studentFamily = new BaseStudentFamily() {{
+                        setCreateDate(now);
+                        setUserId(xjrUser.getId());
+                        setTelephone(student.getFamilyMobile());
+                        setAddress(student.getFamilyAddress());
+                    }};
+                    familyService.save(studentFamily);
+                }
+            }
         }
+        return true;
+    }
+
+    void createStudentData(Long badingTaskId,List<BandingTaskClassStudent> classStudents, List<BaseNewStudent> updateList){
+
     }
 
     LocalDate getBirthDate(String idCardNumber){

+ 4 - 1
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskServiceImpl.java

@@ -580,6 +580,7 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
 
             Map<Long, Long> majorDeptMap = majorSetMapper.selectList(new QueryWrapper<BaseMajorSet>()).stream().collect(Collectors.toMap(BaseMajorSet::getId, BaseMajorSet::getDepartmentId));
             for (BandingTaskClass taskClass : classList) {
+                long finalMaxCode = maxCode;
                 BaseClass baseClass = new BaseClass() {{
                     setName(taskClass.getName());
                     setClassroomId(taskClass.getClassroomId());
@@ -590,7 +591,8 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                     setDeleteMark(DeleteMark.NODELETE.getCode());
                     setEnrollType(bandingTask.getEnrollType());
                     setOrgId(majorDeptMap.get(taskClass.getMajorSetId()));
-                    setCode(gradeCode + String.format("%03d", maxCode));
+                    setCode(gradeCode + String.format("%03d", finalMaxCode));
+                    setMajorSetId(taskClass.getMajorSetId());
                 }};
 
                 classService.save(baseClass);
@@ -608,6 +610,7 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
 
                 classMap.put(taskClass.getId(), baseClass.getId());
                 taskClassMajorMap.put(taskClass.getId(), taskClass.getMajorSetId());
+                maxCode ++;
             }
 
             /**