From 247cb86585a1d1894596ed18a6c93efecb992946 Mon Sep 17 00:00:00 2001 From: luohairen <3399054449@qq.com> Date: 星期四, 14 十一月 2024 10:34:27 +0800 Subject: [PATCH] 班级成绩图表分析 --- src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java | 93 +++++++++++++++++++++++++++++++++++++--------- 1 files changed, 74 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java index 548338d..481ed76 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java @@ -3,23 +3,21 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.base.SystemCode; import com.ycl.jxkg.context.WebContext; -import com.ycl.jxkg.domain.entity.Meet; -import com.ycl.jxkg.domain.entity.MeetStudent; -import com.ycl.jxkg.domain.entity.StudyRecord; +import com.ycl.jxkg.domain.entity.*; import com.ycl.jxkg.domain.form.MeetForm; import com.ycl.jxkg.domain.query.MeetQuery; +import com.ycl.jxkg.domain.vo.ClassesVO; +import com.ycl.jxkg.domain.vo.MeetClassesVo; import com.ycl.jxkg.domain.vo.MeetVO; import com.ycl.jxkg.domain.vo.StudentSimpleVO; import com.ycl.jxkg.enums.MeetStatusEnum; -import com.ycl.jxkg.mapper.ClassesUserMapper; -import com.ycl.jxkg.mapper.MeetMapper; -import com.ycl.jxkg.mapper.MeetStudentMapper; -import com.ycl.jxkg.mapper.StudyRecordMapper; +import com.ycl.jxkg.mapper.*; import com.ycl.jxkg.rabbitmq.msg.MeetStatusMsg; import com.ycl.jxkg.rabbitmq.product.Producer; import com.ycl.jxkg.service.MeetService; @@ -29,6 +27,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.Date; @@ -54,12 +53,14 @@ private final Producer producer; private final MeetStudentMapper meetStudentMapper; private final StudyRecordMapper studyRecordMapper; + private final MeetClassesMapper meetClassesMapper; /** * 娣诲姞 * @param form * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result add(MeetForm form) { Meet entity = MeetForm.getEntityByForm(form, null); entity.setStatus(MeetStatusEnum.Wait.getCode()); @@ -69,6 +70,13 @@ if (baseMapper.insert(entity) > 0) { this.sendMQ(entity, 0); } + // 鍚戜細璁彮绾т腑闂磋〃涓彃鍏ユ暟鎹� + form.getClassesIds().forEach(classId -> { + MeetClasses meetClasses = new MeetClasses(); + meetClasses.setMeetId(entity.getId()); + meetClasses.setClassesId(classId); + meetClassesMapper.insert(meetClasses); + }); return Result.ok("娣诲姞鎴愬姛"); } @@ -83,6 +91,20 @@ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); BeanUtils.copyProperties(form, entity); + + // 鍏堝垹闄ゅ啀鏂板 + new LambdaUpdateChainWrapper<>(meetClassesMapper) + .eq(MeetClasses::getMeetId, entity.getId()) + .remove(); + // 鍚戜細璁彮绾т腑闂磋〃涓彃鍏ユ暟鎹� + form.getClassesIds().forEach(classId -> { + MeetClasses meetClasses = new MeetClasses(); + meetClasses.setMeetId(entity.getId()); + meetClasses.setClassesId(classId); + meetClassesMapper.insert(meetClasses); + }); + + // 濡傛灉淇敼鎴愬姛鍙戦�乵q娑堟伅 if (baseMapper.updateById(entity) > 0) { this.sendMQ(entity, entity.getUpdateVersion()); @@ -119,12 +141,28 @@ */ @Override public Result page(MeetQuery query) { - Integer id = webContext.getCurrentUser().getId(); - //鏌ヨ嚜宸卞垱寤虹殑鎴块棿 - query.setTeacherId(id); + Integer userId = webContext.getCurrentUser().getId(); + //鏌ヨ嚜宸辩殑浼氳 + List<ClassesUser> classes = new LambdaQueryChainWrapper<>(classesUserMapper) + .eq(ClassesUser::getUserId, userId) + .eq(ClassesUser::getTeacher, Boolean.TRUE) + .list(); + List<Integer> classesIds = classes.stream().map(ClassesUser::getClassesId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(classesIds) && 3 != webContext.getCurrentUser().getRole()) { + throw new RuntimeException("鎮ㄦ殏鏃舵棤娉曡闂椤甸潰"); + } + query.setClassesIds(classesIds); IPage<MeetVO> page = PageUtil.getPage(query, MeetVO.class); - baseMapper.getPage(page, query); - + baseMapper.teacherPage(page, query); + page.getRecords().forEach(vo -> { + if (! CollectionUtils.isEmpty(vo.getClassesIds())) { + // 鏌ヤ富璁茶�佸笀 + List<String> teacherNames = classesUserMapper.getTeachersByClassesIds(vo.getClassesIds()); + if (! CollectionUtils.isEmpty(teacherNames)) { + vo.setTeacherNamesStr(teacherNames.stream().collect(Collectors.joining("銆�"))); + } + } + }); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -136,15 +174,25 @@ @Override public Result studentPage(MeetQuery query) { Integer userId = webContext.getCurrentUser().getId(); - //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾� - List<Integer> classes = classesUserMapper.getClassesByUserId(userId); - if(CollectionUtils.isEmpty(classes)){ - return Result.ok("鎮ㄦ殏鏈姞鍏ョ彮绾�"); + if (CollectionUtils.isEmpty(query.getClassesIds())) { + //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾� + List<Integer> classes = classesUserMapper.getClassesByUserId(userId); + if(CollectionUtils.isEmpty(classes)){ + return Result.fail(500, "鎮ㄦ殏鏈姞鍏ョ彮绾�"); + } + query.setClassesIds(classes); } - query.setClassesIds(classes); IPage<MeetVO> page = PageUtil.getPage(query, MeetVO.class); - baseMapper.getPage(page, query); - + baseMapper.studentPage(page, query); + for (MeetVO vo : page.getRecords()) { + if (! CollectionUtils.isEmpty(vo.getClassesIds())) { + // 鏌ヤ富璁茶�佸笀 + List<String> teacherNames = classesUserMapper.getTeachersByClassesIds(vo.getClassesIds()); + if (! CollectionUtils.isEmpty(teacherNames)) { + vo.setTeacherNamesStr(teacherNames.stream().collect(Collectors.joining("銆�"))); + } + } + } return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -229,6 +277,13 @@ return Result.ok().data(studentList); } + @Override + public Result getStudentClasses() { + Integer userId = webContext.getCurrentUser().getId(); + List<ClassesVO> classes = classesUserMapper.getClassesByUserId1(userId); + return Result.ok().data(classes); + } + /** * 鍙戦�乵q娑堟伅 * -- Gitblit v1.8.0