瀏覽代碼

手动分班报错解决

dzx 8 月之前
父節點
當前提交
515cd13670
共有 1 個文件被更改,包括 32 次插入110 次删除
  1. 32 110
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

+ 32 - 110
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -11,24 +11,19 @@ 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.LocalDateUtil;
 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;
@@ -38,7 +33,6 @@ 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;
@@ -58,8 +52,8 @@ 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.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -123,34 +117,11 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                         .in(BandingTaskClassStudent::getNewStudentId, dto.getNewStudentIds())
         );
 
-        BandingTaskClass taskClass = taskClassMapper.selectById(dto.getBandingTaskClassId());
-
-        //新增报到计划,如果有多个分班任务确认,需要保证试读报到计划只有一个
-        BaseSemester semester = semesterService.getCurrentSemester();
-        StudentReportPlan plan = reportPlanService.getOne(
-                new QueryWrapper<StudentReportPlan>().lambda()
-                        .eq(StudentReportPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
-                        .eq(StudentReportPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
-                        .eq(StudentReportPlan::getSemesterId, semester.getId())
-                        .eq(StudentReportPlan::getCategory, 2)
-                        .eq(StudentReportPlan::getBandingTaskId, taskClass.getBandingTaskId())
-        );
-        if(plan == null){
-            plan = new StudentReportPlan();
-            plan.setStatus(0);
-            plan.setCategory(2);
-            plan.setBandingTaskId(taskClass.getBandingTaskId());
-            plan.setDeleteMark(DeleteMark.NODELETE.getCode());
-            plan.setEnabledMark(EnabledMark.ENABLED.getCode());
-            plan.setCreateDate(new Date());
-            plan.setCreateUserId(StpUtil.getLoginIdAsLong());
-            reportPlanService.save(plan);
-        }
+        BaseClass aClass = classService.getById(dto.getBandingTaskClassId());
 
         List<BandingTaskClassStudent> dataList = new ArrayList<>();
         long createUserId = StpUtil.getLoginIdAsLong();
 
-        List<StudentReportRecord> insertList = new ArrayList<>();
         for (Long newStudentId : dto.getNewStudentIds()) {
             dataList.add(
                     new BandingTaskClassStudent(){{
@@ -164,33 +135,42 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                         }
                     }}
             );
-            if(dto.getIsHandle() != null && dto.getIsHandle() == 1){
-                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()){
             this.saveBatch(dataList);
         }
 
-        if(!insertList.isEmpty()){
-            for (StudentReportRecord studentReportRecord : insertList) {
-                reportRecordMapper.insert(studentReportRecord);
-            }
-        }
-
         List<Long> studentIds = dataList.stream().map(BandingTaskClassStudent::getNewStudentId).collect(Collectors.toList());
         List<BaseNewStudent> list = newStudentService.list(
                 new QueryWrapper<BaseNewStudent>().lambda()
                         .in(BaseNewStudent::getId, studentIds)
         );
+
         if(dto.getIsHandle() != null && dto.getIsHandle() == 1){
+            //新增报到计划,如果有多个分班任务确认,需要保证试读报到计划只有一个
+            BaseSemester semester = semesterService.getCurrentSemester();
+            List<StudentReportPlan> planList = reportPlanService.list(
+                    new QueryWrapper<StudentReportPlan>().lambda()
+                            .eq(StudentReportPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(StudentReportPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
+                            .eq(StudentReportPlan::getSemesterId, semester.getId())
+                            .in(StudentReportPlan::getCategory, Arrays.asList(2, 3))
+            );
+
+            for (StudentReportPlan plan : planList) {
+                for (Long newStudentId : studentIds) {
+                    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());
+                    reportRecordMapper.insert(record);
+                }
+            }
+
+
             List<BaseNewStudent> updateList = new ArrayList<>();
             for (BaseNewStudent student : list) {
                 student.setStatus(1);
@@ -202,64 +182,6 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                 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,需要先查询用户信息是否已经存在
@@ -285,7 +207,7 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                 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()));
+                        schoolRollService.updateStudentClass(dto.getBandingTaskClassId(), userSet.get(student.getCredentialNumber()));
                         Integer deleteMark = userDeleteMarkMap.get(student.getCredentialNumber());
                         if(deleteMark != null && deleteMark == 1){
                             userService.recoveryStudentInfo(userSet.get(student.getCredentialNumber()));
@@ -334,12 +256,12 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                         }
 
                         setGraduatedUniversity(student.getGraduateSchool());
-                        setClassId(classMap.get(studentClassRelation.get(student.getId())));
-                        setMajorSetId(taskClassMajorMap.get(studentClassRelation.get(student.getId())));
+                        setClassId(dto.getBandingTaskClassId());
+                        setMajorSetId(aClass.getMajorSetId());
                         setStduyStatus(student.getStduyStatus());
-                        setEnrollType(bandingTask.getEnrollType());
+                        setEnrollType(aClass.getEnrollType());
                         setStudentSource(student.getSource());
-                        setGradeId(bandingTask.getGradeId());
+                        setGradeId(aClass.getGradeId());
                         setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
                         setCreateDate(now);
                     }};