dzx 8 miesięcy temu
rodzic
commit
39586a62da

+ 2 - 1
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -333,7 +333,7 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
     @Override
     @Transactional
     public Boolean removeStudent(List<Long> studentIds, Long bandingTaskId) {
-        this.baseMapper.delete(
+        List<BandingTaskClassStudent> classStudents = this.baseMapper.selectList(
                 new MPJLambdaWrapper<BandingTaskClassStudent>()
                         .select(BandingTaskClassStudent::getId)
                         .select(BandingTaskClassStudent.class, x -> VoToColumnUtil.fieldsToColumns(BandingTaskClassStudent.class).contains(x.getProperty()))
@@ -341,6 +341,7 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                         .in(BandingTaskClassStudent::getNewStudentId, studentIds)
                         .eq(BandingTaskClass::getBandingTaskId, bandingTaskId)
         );
+        this.removeBatchByIds(classStudents);
         return true;
     }
 

+ 1 - 1
src/main/java/com/xjrsoft/module/student/controller/StudentReportPlanController.java

@@ -255,7 +255,7 @@ public class StudentReportPlanController {
                         .eq(BandingTask::getGradeId, enrollmentPlan.getGradeId())
         );
         if (plan == null) {
-            return RT.error("找不到此数据!");
+            return RT.ok(new StudentReportPlanVo());
         }
         return RT.ok(BeanUtil.toBean(plan, StudentReportPlanVo.class));
     }

+ 2 - 0
src/main/java/com/xjrsoft/module/student/service/IBaseStudentSchoolRollService.java

@@ -58,4 +58,6 @@ public interface IBaseStudentSchoolRollService extends MPJBaseService<BaseStuden
     Long getClassIdByUserId(Long userId);
 
     Boolean activateStudent(Long userId);
+
+    Boolean disableStudent(Long userId);
 }

+ 40 - 0
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentSchoolRollServiceImpl.java

@@ -314,4 +314,44 @@ public class BaseStudentSchoolRollServiceImpl extends MPJBaseServiceImpl<BaseStu
 
         return true;
     }
+
+    /**
+     * 禁用学生
+     * @param userId
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean disableStudent(Long userId) {
+        //激活用户信息
+        User user = userMapper.selectById(userId);
+        user.setDeleteMark(DeleteMark.DELETED.getCode());
+        user.setEnabledMark(EnabledMark.DISABLED.getCode());
+        user.setModifyUserId(StpUtil.getLoginIdAsLong());
+        user.setModifyDate(LocalDateTime.now());
+        userMapper.updateById(user);
+
+        //将学籍信息改为在读
+        BaseStudentSchoolRoll schoolRoll = this.getOne(
+                new QueryWrapper<BaseStudentSchoolRoll>().lambda()
+                        .eq(BaseStudentSchoolRoll::getUserId, userId)
+        );
+        schoolRoll.setDeleteMark(DeleteMark.DELETED.getCode());
+        schoolRoll.setEnabledMark(EnabledMark.DISABLED.getCode());
+        schoolRoll.setModifyUserId(StpUtil.getLoginIdAsLong());
+        schoolRoll.setModifyDate(LocalDateTime.now());
+        this.updateById(schoolRoll);
+
+        //将学生基本信息中状态改为正常
+        BaseStudent baseStudent = baseStudentMapper.selectOne(
+                new QueryWrapper<BaseStudent>().lambda()
+                        .eq(BaseStudent::getUserId, userId)
+        );
+        baseStudent.setIsNormal(0);
+        baseStudent.setModifyUserId(StpUtil.getLoginIdAsLong());
+        baseStudent.setModifyDate(LocalDateTime.now());
+        baseStudentMapper.updateById(baseStudent);
+
+        return true;
+    }
 }

+ 111 - 99
src/main/java/com/xjrsoft/module/student/service/impl/StudentReportRecordServiceImpl.java

@@ -2,7 +2,6 @@ package com.xjrsoft.module.student.service.impl;
 
 import cn.dev33.satoken.secure.BCrypt;
 import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -310,108 +309,121 @@ public class StudentReportRecordServiceImpl extends MPJBaseServiceImpl<StudentRe
     @Transactional(rollbackFor = Exception.class)
     public Boolean tryReadingSign(StudentReportSignDto dto) {
         StudentReportRecord record = this.getById(dto.getId());
-        record.setReportTime(new Date());
-        record.setModifyUserId(StpUtil.getLoginIdAsLong());
-        record.setModifyDate(new Date());
-        this.updateById(record);
-
         BaseNewStudent student = newStudentMapper.selectById(record.getUserId());
+        if(record.getReportTime() == null){
+            record.setReportTime(new Date());
+            record.setModifyUserId(StpUtil.getLoginIdAsLong());
+            record.setModifyDate(new Date());
+            this.updateById(record);
 
-        //先查询是否已经存在这个班级,如果存在就更新,不存在就新增
-        BaseClass baseClass = classMapper.selectById(
-                new MPJLambdaWrapper<BaseClass>()
-                        .select(BaseClass::getId)
-                        .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty()))
-                        .innerJoin(BandingTaskClass.class, BandingTaskClass::getName, BaseClass::getName)
-                        .innerJoin(BandingTaskClassStudent.class, BandingTaskClassStudent::getBandingTaskClassId, BandingTaskClass::getId)
-                        .eq(BandingTaskClassStudent::getNewStudentId, student.getId())
-                        .eq(BandingTaskClassStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
-                        .eq(BandingTaskClassStudent::getEnabledMark, EnabledMark.ENABLED.getCode())
-                        .eq(BandingTaskClass::getDeleteMark, DeleteMark.NODELETE.getCode())
-                        .eq(BandingTaskClass::getEnabledMark, EnabledMark.ENABLED.getCode())
-                        .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
-                        .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode())
-        );
-        //根据身份证号查询这个学生是否存在
-        User user = userService.getOne(
-                new QueryWrapper<User>().lambda()
-                        .eq(User::getCredentialNumber, student.getCredentialNumber())
-        );
-        if(user != null){
-            //学生已存在,则修改班级信息
-            rollService.updateStudentClass(baseClass.getId(), user.getId());
-            rollService.activateStudent(user.getId());
+            //先查询是否已经存在这个班级,如果存在就更新,不存在就新增
+            BaseClass baseClass = classMapper.selectOne(
+                    new MPJLambdaWrapper<BaseClass>()
+                            .select(BaseClass::getId)
+                            .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty()))
+                            .innerJoin(BandingTaskClass.class, BandingTaskClass::getName, BaseClass::getName)
+                            .innerJoin(BandingTaskClassStudent.class, BandingTaskClassStudent::getBandingTaskClassId, BandingTaskClass::getId)
+                            .eq(BandingTaskClassStudent::getNewStudentId, student.getId())
+                            .eq(BandingTaskClassStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BandingTaskClassStudent::getEnabledMark, EnabledMark.ENABLED.getCode())
+                            .eq(BandingTaskClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BandingTaskClass::getEnabledMark, EnabledMark.ENABLED.getCode())
+                            .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode())
+            );
+            //根据身份证号查询这个学生是否存在
+            User user = userService.getOne(
+                    new QueryWrapper<User>().lambda()
+                            .eq(User::getCredentialNumber, student.getCredentialNumber())
+            );
+            if(user != null){
+                //学生已存在,则修改班级信息
+                rollService.updateStudentClass(baseClass.getId(), user.getId());
+                rollService.activateStudent(user.getId());
+            }else{
+                LocalDate birthDate = getBirthDate(student.getCredentialNumber());
+                LocalDateTime now = LocalDateTime.now();
+                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(baseClass.getId());
+                    setMajorSetId(baseClass.getMajorSetId());
+                    setStduyStatus(student.getStduyStatus());
+                    setEnrollType(baseClass.getEnrollType());
+                    setStudentSource(student.getSource());
+                    setGradeId(baseClass.getGradeId());
+                    setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
+                    setCreateDate(now);
+                }};
+                rollService.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);
+                });
+            }
         }else{
-            LocalDate birthDate = getBirthDate(student.getCredentialNumber());
-            LocalDateTime now = LocalDateTime.now();
-            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(baseClass.getId());
-                setMajorSetId(baseClass.getMajorSetId());
-                setStduyStatus(student.getStduyStatus());
-                setEnrollType(baseClass.getEnrollType());
-                setStudentSource(student.getSource());
-                setGradeId(baseClass.getGradeId());
-                setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
-                setCreateDate(now);
-            }};
-            rollService.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);
-            });
+            UpdateWrapper<StudentReportRecord> wrapper = new UpdateWrapper<>();
+            wrapper.eq("id", record.getId());
+            wrapper.setSql("report_time = null");
+            this.update(record, wrapper);
+
+            User user = userService.getOne(
+                    new QueryWrapper<User>().lambda()
+                            .eq(User::getCredentialNumber, student.getCredentialNumber())
+            );
+            rollService.disableStudent(user.getId());
         }
+
         return true;
     }
 

+ 2 - 2
src/main/resources/mapper/student/StudentReportRecordMapper.xml

@@ -240,7 +240,7 @@
         LEFT JOIN enrollment_plan t11 ON t11.id = t3.enrollment_plan_id
         LEFT JOIN student_report_plan t12 ON t12.id = t1.student_report_plan_id
         WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1
-        and t12.status = 1
+        and t12.status = 1 and t2.delete_mark = 0
         and t3.enrollment_plan_id = #{dto.enrollmentPlanId}
         <if test="dto.keyword != null and dto.keyword != ''">
             and t1.name like concat('%', #{dto.keyword},'%')
@@ -301,7 +301,7 @@
         LEFT JOIN enrollment_plan t11 ON t11.id = t3.enrollment_plan_id
         LEFT JOIN student_report_plan t12 ON t12.id = t1.student_report_plan_id
         WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1
-        and t12.status = 1
+        and t12.status = 1 and t2.delete_mark = 0
         and t3.enrollment_plan_id = #{dto.enrollmentPlanId}
         <if test="dto.keyword != null and dto.keyword != ''">
             and t1.name like concat('%', #{dto.keyword},'%')