diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java index d888a76..a27d8ad 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java @@ -76,7 +76,7 @@ public class StudentExamPaperController { List list1 = new ArrayList<>(); for(ClassExamPaper classExamPaper : list ){ ExamPaper examPaper = iExamPaperService.selectById(classExamPaper.getId()); - if(examPaper.getStatus()==0L){ + if(examPaper.getExamPaperStatus()==0L){ continue; } if(type!=null&&!examPaper.getType().equals(type)){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java index d8c4347..caf46e0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java @@ -16,11 +16,13 @@ import com.ruoyi.test.seriver.*; import com.ruoyi.web.controller.system.SysUserController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @Api(tags = "学生端主页") @RestController @@ -54,6 +56,26 @@ public class StudentHomePageController { @Autowired private IInstructorManageClassService iInstructorManageClassService; + @Autowired + private IMessageService iMessageService; + + @ApiOperation("查看消息记录") + @GetMapping("getMessage") + public R> getMessage() { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + Long id = sysUser.getUserId(); + return R.ok(iMessageService.selectById(id)); + } + + @ApiOperation("更新消息记录状态") + @PutMapping("updateMessage") + public R updateMessage(@RequestBody Map params) { + System.out.println("============="+params); + Long id = params.get("id"); + System.out.println("================="+id); + return R.ok(iMessageService.updateMessage(id)); + } + @ApiOperation("获取用户信息") @GetMapping("getUser") public R getUser() { @@ -66,8 +88,10 @@ public class StudentHomePageController { userDO.setGrade(studentClass.getGrade()); userDO.setClass1(studentClass.getClass1()); InstructorManageClass instructorManageClass = iInstructorManageClassService.selectByGradeAndClass1(userDO.getGrade(),userDO.getClass1()); - SysUser sysUser1 = iSysUserService.selectUserById(instructorManageClass.getId()); - userDO.setTeacherName(sysUser1.getUserName()); + if(instructorManageClass!=null){ + SysUser sysUser1 = iSysUserService.selectUserById(instructorManageClass.getId()); + userDO.setTeacherName(sysUser1.getUserName()); + } return R.ok(userDO); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnswerSheetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnswerSheetController.java index 96ad311..112482e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnswerSheetController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnswerSheetController.java @@ -1,26 +1,25 @@ package com.ruoyi.web.controller.test.teacher; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.test.domain.*; import com.ruoyi.test.domain.DO.Correct; import com.ruoyi.test.domain.DO.QuestionAnswerDO; import com.ruoyi.test.domain.DO.ScoreListDO; -import com.ruoyi.test.domain.Markedtest; -import com.ruoyi.test.domain.Message; -import com.ruoyi.test.domain.StudentClass; -import com.ruoyi.test.domain.TeacherManageClass; +import com.ruoyi.test.domain.Vo.ExamPaperVo; import com.ruoyi.test.domain.Vo.MessageVo; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Api(tags = "教师端答卷管理") @RestController @@ -36,6 +35,9 @@ public class TeacherAnswerSheetController { @Autowired private IExamCreateService iExamCreateService; + @Autowired + private IExamPaperService iExamPaperService; + @Autowired private IQuestionanswerService iQuestionanswerService; @@ -49,16 +51,35 @@ public class TeacherAnswerSheetController { private ITeacherManageClassService iTeacherManageClassService; @Autowired - private IMassageService iMassageService; + private IMessageService iMessageService; - @ApiOperation("学生成绩列表") - @GetMapping("selectScoreList") - public R> selectScoreList(int pageNum,int pageSize){ + @Autowired + private IClassExamPaperService iClassExamPaperService; + + @ApiOperation("发布成绩") + @PutMapping("fabu") + public R fabu(Long testid,String grade,String Class1) { + return R.ok(iMarkedtestService.fabu(testid,grade,Class1)); + } + + @ApiOperation("试卷列表查询") + @GetMapping("getExamPaperList") + public R> getExamPaperList(int pageNum,int pageSize) { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); Long teacherId = sysUser.getUserId(); - List teacherManageClass = iTeacherManageClassService.selectById(teacherId); - List studentList = iStudentClassService.getStudentClassByTeacherIdList(teacherManageClass); - return R.ok(iMarkedtestService.selectScoreList(pageNum,pageSize,studentList,teacherId)); + List list = iExamPaperService.getExamPaperList(teacherId); + IPage page = new Page<>(pageNum, pageSize); + + // 将 List 设置为 records + page.setRecords(list); + + return R.ok(page); + } + + @ApiOperation("学生成绩列表") + @GetMapping("selectScoreList") + public R> selectScoreList(Long testid,String grade,String Class1){ + return R.ok(iMarkedtestService.selectScoreList(testid,grade,Class1)); } @ApiOperation("查看学生的考试情况(最新)") @@ -71,15 +92,23 @@ public class TeacherAnswerSheetController { @GetMapping("selectMarkedtestList") public R> selectMarkedtestList() { SysUser sysUser = SecurityUtils.getLoginUser().getUser(); - List teacherManageClass = iTeacherManageClassService.selectById(sysUser.getUserId()); - List list = iStudentClassService.selectByTeacherIdList(teacherManageClass); - return R.ok(iMarkedtestService.selectByStudentList(sysUser.getUserId(),list)); + List examPapers = iExamPaperService.selectByGlId(sysUser.getUserId()); + List list = new ArrayList<>(); + for(ExamPaper examPaper : examPapers){ + List studentClass = iClassExamPaperService.selectById(examPaper.getId()); + list.addAll(studentClass); + } + List list1 = iStudentClassService.getStudentClassByClassExamPaperList(list) + .stream() + .map(StudentClass::getStudentid) + .collect(Collectors.toList()); + return R.ok(iMarkedtestService.selectByStudentList(sysUser.getUserId(),list1)); } @ApiOperation("添加提醒消息") @PostMapping("addMessage") public R addMessage(@RequestBody MessageVo messageVo) { - return R.ok(iMassageService.addMessage(messageVo)); + return R.ok(iMessageService.addMessage(messageVo)); } @ApiOperation("批改客观题") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java index 00c6ec2..201bdb5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java @@ -13,6 +13,7 @@ import com.ruoyi.test.domain.TeacherManageClass; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -44,6 +45,46 @@ public class TeacherExamPaperController { @Autowired private IQuestionbankService iQuestionbankService; + @ApiOperation("发布试卷") + @PostMapping("addExamPaper") + public R addExamPaper(@RequestBody ClassExamPaper classExamPaper){ + return R.ok(iClassExamPaperService.addClassExamPaper(classExamPaper.getGrade(), + classExamPaper.getClass1(),classExamPaper.getId())); + } + + @ApiOperation("班级试卷发布查询") + @GetMapping("selectClassRelease") + public R> selectClassRelease(Long testid){ + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + Long id = sysUser.getUserId(); + List list1 = iTeacherManageClassService.selectById(id); + List list = new ArrayList<>(); + for(TeacherManageClass teacherManageClass : list1){ + ClassRelease classRelease = new ClassRelease(); + BeanUtils.copyProperties(teacherManageClass,classRelease); + if(iClassExamPaperService.selectByGradeAndClassAndTestId(teacherManageClass.getGrade(),teacherManageClass.getClass1(),testid)){ + classRelease.setRelease(1L); + }else{ + classRelease.setRelease(0L); + } + list.add(classRelease); + } + return R.ok(list); + } + + @ApiOperation("试卷获取") + @GetMapping("getExamPaper") + public R> getExamPaper(@RequestParam int pageNum,@RequestParam int pageSize) { + + IPage page = new Page<>(pageNum,pageSize); + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + Long id = sysUser.getUserId(); + List list = iExamPaperService.selectByGlId(id); + IPage iPage = new Page<>(page.getCurrent(),page.getSize(),page.getTotal()); + iPage.setRecords(list); + return R.ok(iPage); + } + @ApiOperation("试卷列表") @GetMapping("examPaperList") public R> examPaperList(int pagenum){ diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ClassRelease.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ClassRelease.java new file mode 100644 index 0000000..5889863 --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ClassRelease.java @@ -0,0 +1,13 @@ +package com.ruoyi.test.domain.DO; + +import lombok.Data; + +@Data +public class ClassRelease { + + private String grade; + + private String Class1; + + private Long release; +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/HomepageDO.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/HomepageDO.java index 0856c42..f1a5045 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/HomepageDO.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/HomepageDO.java @@ -7,16 +7,16 @@ import java.util.Map; @Data public class HomepageDO { - private Integer sumclass; + private Integer sumclass;//班级总数 - private Integer sunnumclass; + private Integer sunnumclass;//班级总人数 - private Integer exampapersum; + private Integer exampapersum;//试卷总数 - private Integer sumtimu; + private Integer sumtimu;//题目总数 - private Map classsize; + private Map classsize;//班级人数分布 - private Map examPaperSize; + private Map examPaperSize;//班级试卷分布 } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ScoreListDO.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ScoreListDO.java index f35db16..8f24e4b 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ScoreListDO.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/ScoreListDO.java @@ -9,12 +9,8 @@ public class ScoreListDO { private Long senderId; private String senderName; - private String grade; - private String Class1; private Long testid; private Double score; - private String examName; private Integer ranking;//排名 - private Long status; } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/ExamPaper.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/ExamPaper.java index 6b6e486..4346271 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/domain/ExamPaper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/ExamPaper.java @@ -1,6 +1,7 @@ package com.ruoyi.test.domain; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.models.auth.In; import lombok.Data; @Data @TableName("exam_paper") @@ -15,4 +16,6 @@ public class ExamPaper { private String type; private Integer time; private Integer status; + private Integer examPaperStatus; + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/Message.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/Message.java index 4c95f6f..c1599cb 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/domain/Message.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/Message.java @@ -3,11 +3,16 @@ package com.ruoyi.test.domain; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.time.LocalDate; +import java.time.LocalDateTime; + @Data @TableName("message") public class Message { + private Long id; private Long teacherId; private Long studentId; private String source; private String tf; + private LocalDateTime createtime; } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/Vo/ExamPaperVo.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/Vo/ExamPaperVo.java new file mode 100644 index 0000000..2735769 --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/Vo/ExamPaperVo.java @@ -0,0 +1,18 @@ +package com.ruoyi.test.domain.Vo; + +import lombok.Data; + +@Data +public class ExamPaperVo { + private Long id; + private Long glId; + private String grade; + private String Class1; + private String subject; + private String name; + private String type; + private Long completedCount;//完成人数 + private Long totalCount;//全部人数 + private Integer examPaperStatus;//试卷分布状态 + private Integer status;//成绩分布状态 +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/ExamPaperMapper.java b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/ExamPaperMapper.java index d62d9d2..312ea6d 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/ExamPaperMapper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/ExamPaperMapper.java @@ -10,4 +10,6 @@ import org.apache.ibatis.annotations.Param; public interface ExamPaperMapper extends BaseMapper { int addPaperExam(@Param("paperCreateDO") PaperCreateDO paperCreateDO); + + int updateExamPaper(@Param("testid")Long testid); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MarkedtestMapper.java b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MarkedtestMapper.java index ec623ab..d54f375 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MarkedtestMapper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MarkedtestMapper.java @@ -5,9 +5,13 @@ import com.ruoyi.test.domain.Markedtest; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface MarkedtestMapper extends BaseMapper { int addmarkedtest(@Param("markedtest") Markedtest markedtest); + int updateStatusBatch(@Param("testid") Long testid,@Param("list") List list); + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java index c3f0ce8..577b15f 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java @@ -9,4 +9,6 @@ import org.apache.ibatis.annotations.Param; public interface MessageMapper extends BaseMapper { int addMessage(@Param("message") Message message); + + int updateMessage(@Param("id") Long id); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClassExamPaperService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClassExamPaperService.java index ca60733..71254b7 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClassExamPaperService.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClassExamPaperService.java @@ -10,5 +10,8 @@ public interface IClassExamPaperService { int addClassExamPaper(String grade,String Class1,Long id); + List selectById(Long id); + + Boolean selectByGradeAndClassAndTestId(String grade,String Class1,Long testid); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IExamPaperService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IExamPaperService.java index 8bce541..ed93fa8 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IExamPaperService.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IExamPaperService.java @@ -5,6 +5,7 @@ import com.ruoyi.test.domain.DO.PaperCreateDO; import com.ruoyi.test.domain.ExamPaper; import com.ruoyi.test.domain.TeacherManageClass; import com.ruoyi.test.domain.TeacherSubject; +import com.ruoyi.test.domain.Vo.ExamPaperVo; //import com.ruoyi.test.domain.Vo.ExamCreateVo; import java.util.List; @@ -41,4 +42,6 @@ public interface IExamPaperService { IPage selectByGrateAndSubjectAndId(int pagenum,int pagesize,String grade,String subject,Long id); List selectByGlId(Long teacherId); + + List getExamPaperList(Long teacherId); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMarkedtestService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMarkedtestService.java index 993c46a..d44caa2 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMarkedtestService.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMarkedtestService.java @@ -30,5 +30,8 @@ public interface IMarkedtestService { List selectByStudentList(Long id,List list); - IPage selectScoreList(int pageNum,int pageSize,List studentList,Long teacherId); + List selectScoreList(Long testid,String grade,String Class1); + + Integer fabu(Long testid,String grade,String Class1); + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMassageService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMassageService.java deleted file mode 100644 index 8e07814..0000000 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMassageService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.ruoyi.test.seriver; - -import com.ruoyi.test.domain.Vo.MessageVo; - -public interface IMassageService { - - int addMessage(MessageVo messageVo); -} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java new file mode 100644 index 0000000..c53370f --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java @@ -0,0 +1,15 @@ +package com.ruoyi.test.seriver; + +import com.ruoyi.test.domain.Message; +import com.ruoyi.test.domain.Vo.MessageVo; + +import java.util.List; + +public interface IMessageService { + + int addMessage(MessageVo messageVo); + + List selectById(Long id); + + Integer updateMessage(Long id); +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IStudentClassService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IStudentClassService.java index bab094a..7777422 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IStudentClassService.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IStudentClassService.java @@ -1,5 +1,6 @@ package com.ruoyi.test.seriver; +import com.ruoyi.test.domain.ClassExamPaper; import com.ruoyi.test.domain.StudentClass; import com.ruoyi.test.domain.TeacherManageClass; @@ -19,4 +20,5 @@ public interface IStudentClassService { List getStudentClassByTeacherIdList(List teacherManageClasses); + List getStudentClassByClassExamPaperList(List list); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ClassExamPaperServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ClassExamPaperServiceImpl.java index 54e1de2..edf61f7 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ClassExamPaperServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ClassExamPaperServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.test.seriver.IClassExamPaperService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; @Service @@ -29,4 +30,23 @@ public class ClassExamPaperServiceImpl extends ServiceImpl selectById(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();; + queryWrapper.eq(ClassExamPaper::getId,id); + return classExamPaperMapper.selectList(queryWrapper); + } + + @Override + public Boolean selectByGradeAndClassAndTestId(String grade, String Class1, Long testid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ClassExamPaper::getGrade,grade) + .eq(ClassExamPaper::getClass1,Class1) + .eq(ClassExamPaper::getId,testid); + if(classExamPaperMapper.selectCount(queryWrapper)>0){ + return true; + } + return false; + } + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ExamPaperServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ExamPaperServiceImpl.java index 8af924b..e5f30fa 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ExamPaperServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/ExamPaperServiceImpl.java @@ -4,13 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.test.domain.*; import com.ruoyi.test.domain.DO.PaperCreateDO; -import com.ruoyi.test.domain.ExamPaper; -import com.ruoyi.test.domain.Subject; -import com.ruoyi.test.domain.TeacherManageClass; -import com.ruoyi.test.domain.TeacherSubject; +import com.ruoyi.test.domain.Vo.ExamPaperVo; +import com.ruoyi.test.mapper.ClassExamPaperMapper; import com.ruoyi.test.mapper.ExamPaperMapper; +import com.ruoyi.test.mapper.MarkedtestMapper; +import com.ruoyi.test.mapper.StudentClassMapper; import com.ruoyi.test.seriver.IExamPaperService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; @@ -18,12 +20,19 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; @Service public class ExamPaperServiceImpl extends ServiceImpl implements IExamPaperService { @Autowired private ExamPaperMapper examPaperMapper; + @Autowired + private ClassExamPaperMapper classExamPaperMapper; + @Autowired + private StudentClassMapper studentClassMapper; + @Autowired + private MarkedtestMapper markedtestMapper; @Override public IPage selectAll(int pagenum,int pagesize) { @@ -149,6 +158,40 @@ public class ExamPaperServiceImpl extends ServiceImpl getExamPaperList(Long teacherId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ExamPaper::getGlId,teacherId); + List list = examPaperMapper.selectList(queryWrapper); + List list1 = new ArrayList<>(); + for(ExamPaper examPaper : list){ + Long testid = examPaper.getId(); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(ClassExamPaper::getId,testid); + List studentClasses = classExamPaperMapper.selectList(queryWrapper1); + for(ClassExamPaper classExamPaper : studentClasses){ + ExamPaperVo examPaperVo = new ExamPaperVo(); + BeanUtils.copyProperties(examPaper,examPaperVo); + examPaperVo.setClass1(classExamPaper.getClass1()); + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.eq(StudentClass::getGrade,classExamPaper.getGrade()) + .eq(StudentClass::getClass1,classExamPaper.getClass1()); + List studentList = studentClassMapper.selectList(queryWrapper2) + .stream() + .map(StudentClass::getStudentid) + .collect(Collectors.toList()); + examPaperVo.setTotalCount((long) studentList.size()); + LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); + queryWrapper3.eq(Markedtest::getTestid,testid) + .in(Markedtest::getSenderId,studentList); + examPaperVo.setCompletedCount(markedtestMapper.selectCount(queryWrapper3)); + list1.add(examPaperVo); + } + + } + return list1; + } + // @Override // public List totalExamPaper(List list, List list2) { // List list1 = new ArrayList<>(); diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MarkedtestServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MarkedtestServiceImpl.java index e20a8ed..fa026d4 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MarkedtestServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MarkedtestServiceImpl.java @@ -14,6 +14,7 @@ import com.ruoyi.test.domain.Vo.QuestionbankVo; import com.ruoyi.test.mapper.AnswerMapper; import com.ruoyi.test.mapper.ExamPaperMapper; import com.ruoyi.test.mapper.MarkedtestMapper; +import com.ruoyi.test.mapper.StudentClassMapper; import com.ruoyi.test.seriver.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageImpl; @@ -27,6 +28,9 @@ import java.util.stream.Collectors; @Service public class MarkedtestServiceImpl extends ServiceImpl implements IMarkedtestService { + @Autowired + private StudentClassMapper studentClassMapper; + @Autowired private MarkedtestMapper markedtestMapper; @@ -231,68 +235,93 @@ public class MarkedtestServiceImpl extends ServiceImpl selectScoreList(int pageNum, int pageSize, List studentList, Long teacherId) { - List examPapers = iExamPaperService.selectByGlId(teacherId); - List scoreList = new ArrayList<>(); - for(ExamPaper examPaper : examPapers){ - - for(StudentClass studentClass : studentList){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Markedtest::getSenderId,studentClass.getStudentid()) - .eq(Markedtest::getTestid,examPaper.getId()); - Markedtest markedtest = markedtestMapper.selectOne(queryWrapper); - ScoreListDO scoreListDO = new ScoreListDO(); - if(markedtest!=null){ - scoreListDO.setSenderId(studentClass.getStudentid()); - scoreListDO.setTestid(examPaper.getId()); - scoreListDO.setSenderName(iSysUserService.selectUserById(studentClass.getStudentid()).getUserName()); - scoreListDO.setExamName(examPaper.getName()); - scoreListDO.setScore(markedtest.getScore()); - scoreListDO.setGrade(studentClass.getGrade()); - scoreListDO.setClass1(studentClass.getClass1()); - scoreListDO.setStatus(markedtest.getStatus()); - scoreList.add(scoreListDO); - } + public List selectScoreList(Long testid, String grade, String Class1) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StudentClass::getGrade,grade) + .eq(StudentClass::getClass1,Class1); + List list = studentClassMapper.selectList(queryWrapper); + List list1 = new ArrayList<>(); + for(StudentClass studentClass : list){ + ScoreListDO scoreListDO = new ScoreListDO(); + scoreListDO.setTestid(testid); + scoreListDO.setSenderId(studentClass.getStudentid()); + scoreListDO.setSenderName(iSysUserService.selectUserById(studentClass.getStudentid()).getUserName()); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(Markedtest::getTestid,testid) + .eq(Markedtest::getSenderId,studentClass.getStudentid()); + Markedtest markedtest = markedtestMapper.selectOne(queryWrapper1); + if(markedtest==null){ + scoreListDO.setScore(null); + }else{ + scoreListDO.setScore(markedtest.getScore()); } + list1.add(scoreListDO); } + list1.sort((o1, o2) -> { + // 处理 null 分数的情况 + Double score1 = o1.getScore(); + Double score2 = o2.getScore(); + + // 如果两个分数都为 null,认为它们相等 + if (score1 == null && score2 == null) { + return 0; + } - System.out.println(scoreList); - - // 按年级和班级分组 - Map> groupedByGradeAndClass = scoreList.stream() - .collect(Collectors.groupingBy(score -> score.getGrade() + "-" + score.getClass1())); - - // 计算每个组内的排名 - for (Map.Entry> entry : groupedByGradeAndClass.entrySet()) { - List students = entry.getValue(); + // 如果分数1是 null,分数2不是 null,则分数1排在后面 + else if (score1 == null) { + return 1; + } - // 按得分降序排序 - students.sort((s1, s2) -> Double.compare(s2.getScore(), s1.getScore())); + // 如果分数2是 null,分数1不是 null,则分数2排在后面 + else if (score2 == null) { + return -1; + } - // 给每个学生计算排名 - int rank = 1; - for (int i = 0; i < students.size(); i++) { - ScoreListDO student = students.get(i); - // 如果与前一个学生分数相同,则排名相同 - if (i > 0 && students.get(i).getScore() == students.get(i - 1).getScore()) { - student.setRanking(students.get(i - 1).getRanking()); - } else { - student.setRanking(rank); - } - rank++; + // 否则按分数降序排列 + else { + return Double.compare(o2.getScore(), o1.getScore()); + } + }); + + // 为每个ScoreListDO设置排名 + int rank = 1; + for (int i = 0; i < list1.size(); i++) { + ScoreListDO scoreListDO = list1.get(i); + + // 如果当前分数与前一个分数相同,则排名相同 + if (i > 0 && scoreListDO.getScore() != null && scoreListDO.getScore().equals(list1.get(i - 1).getScore())) { + scoreListDO.setRanking(list1.get(i - 1).getRanking()); + } else if (scoreListDO.getScore() != null) { + // 如果当前分数不为 null,设置当前排名 + scoreListDO.setRanking(rank); + } else { + // 如果分数为 null,直接设置一个排名值,跳过之前的排名 + scoreListDO.setRanking(rank); } + + // 增加排名 + rank++; } + return list1; + } - // 把所有学生数据合并回一个列表并返回 - List collect = groupedByGradeAndClass.values().stream() - .flatMap(List::stream) + @Override + public Integer fabu(Long testid, String grade, String Class1) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StudentClass::getGrade,grade) + .eq(StudentClass::getClass1,Class1); + List list = studentClassMapper.selectList(queryWrapper).stream() + .map(StudentClass::getStudentid) .collect(Collectors.toList()); - // 创建 Page 对象,设置当前页和每页大小 - IPage page = new Page<>(pageNum, pageSize); - // 将 List 设置为 records - page.setRecords(collect); - return page; + if(examPaperMapper.updateExamPaper(testid)>0){ + if(markedtestMapper.updateStatusBatch(testid,list)>0){ + return 1; + } + return -1; + } + return -1; } + } \ No newline at end of file diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java index fd23da3..c929dfe 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java @@ -1,17 +1,21 @@ package com.ruoyi.test.seriver.Impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.test.domain.Message; import com.ruoyi.test.domain.Vo.MessageVo; import com.ruoyi.test.mapper.MessageMapper; -import com.ruoyi.test.seriver.IMassageService; +import com.ruoyi.test.seriver.IMessageService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collections; +import java.util.List; + @Service -public class MessageServiceImpl extends ServiceImpl implements IMassageService { +public class MessageServiceImpl extends ServiceImpl implements IMessageService { @Autowired private MessageMapper messageMapper; @@ -28,4 +32,21 @@ public class MessageServiceImpl extends ServiceImpl impl message.setSource(source); return messageMapper.addMessage(message); } + + @Override + public List selectById(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Message::getStudentId, id) // 按照学生 ID 查询 + .orderBy(true, true, Message::getTf) // 按照 tf 字段的值进行降序排列 + .orderByDesc(Message::getCreatetime); // 如果 tf 相同,再按照 createtime 字段降序排序 + + return messageMapper.selectList(queryWrapper); + } + + @Override + public Integer updateMessage(Long id) { + return messageMapper.updateMessage(id); + } + + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/StudentClassServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/StudentClassServiceImpl.java index a501bd9..22cf6c7 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/StudentClassServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/StudentClassServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.test.seriver.Impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.test.domain.ClassExamPaper; import com.ruoyi.test.domain.StudentClass; import com.ruoyi.test.domain.TeacherManageClass; import com.ruoyi.test.mapper.StudentClassMapper; @@ -9,6 +10,7 @@ import com.ruoyi.test.seriver.IStudentClassService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -92,5 +94,17 @@ public class StudentClassServiceImpl extends ServiceImpl getStudentClassByClassExamPaperList(List list) { + List studentIds = new ArrayList<>(); + for(ClassExamPaper classExam : list){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StudentClass::getGrade,classExam.getGrade()) + .eq(StudentClass::getClass1,classExam.getClass1()); + studentIds.addAll(studentClassMapper.selectList(queryWrapper)); + } + return studentIds; + } + } diff --git a/ruoyi-test/src/main/resources/mapper/ExamPaperMapper.xml b/ruoyi-test/src/main/resources/mapper/ExamPaperMapper.xml index 49864cb..190f255 100644 --- a/ruoyi-test/src/main/resources/mapper/ExamPaperMapper.xml +++ b/ruoyi-test/src/main/resources/mapper/ExamPaperMapper.xml @@ -24,4 +24,10 @@ Now() ) + + + UPDATE exam_paper + SET status = 1 + WHERE id = #{testid} + diff --git a/ruoyi-test/src/main/resources/mapper/MarkedtestMapper.xml b/ruoyi-test/src/main/resources/mapper/MarkedtestMapper.xml index 1dc307c..4036082 100644 --- a/ruoyi-test/src/main/resources/mapper/MarkedtestMapper.xml +++ b/ruoyi-test/src/main/resources/mapper/MarkedtestMapper.xml @@ -29,4 +29,16 @@ ) + + + UPDATE markedtest + SET status = 1 + WHERE testid = #{testid} + AND sender_id IN + + #{item} + + + + diff --git a/ruoyi-test/src/main/resources/mapper/MessageMapper.xml b/ruoyi-test/src/main/resources/mapper/MessageMapper.xml index b2b1215..bf67eca 100644 --- a/ruoyi-test/src/main/resources/mapper/MessageMapper.xml +++ b/ruoyi-test/src/main/resources/mapper/MessageMapper.xml @@ -10,12 +10,18 @@ teacher_id, student_id, source, - tf + tf, + createtime )values ( #{message.teacherId}, #{message.studentId}, #{message.source}, - #{message.tf} + #{message.tf}, + Now() ) + + + update message set tf="true" where id=#{id} + diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index 963a734..a516ef8 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -40,7 +40,7 @@ "axios": "0.28.1", "clipboard": "2.0.8", "core-js": "3.37.1", - "echarts": "5.4.0", + "echarts": "^4.9.0", "element-ui": "2.15.14", "file-saver": "2.0.5", "fuse.js": "6.4.3", diff --git a/vue2/vue/package-lock.json b/vue2/vue/package-lock.json index ffb3c9a..37a3d3b 100644 --- a/vue2/vue/package-lock.json +++ b/vue2/vue/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "axios": "^1.7.7", "core-js": "^3.39.0", + "echarts": "^4.9.0", "element-ui": "^2.15.14", "vue": "^2.6.14", "vue-router": "^3.5.1", @@ -4948,6 +4949,14 @@ "node": ">=6.0.0" } }, + "node_modules/echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "dependencies": { + "zrender": "4.3.2" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -10416,6 +10425,11 @@ "engines": { "node": ">=10" } + }, + "node_modules/zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" } } } diff --git a/vue2/vue/package.json b/vue2/vue/package.json index ffa8fea..318e4fe 100644 --- a/vue2/vue/package.json +++ b/vue2/vue/package.json @@ -9,6 +9,7 @@ "dependencies": { "axios": "^1.7.7", "core-js": "^3.39.0", + "echarts": "^4.9.0", "element-ui": "^2.15.14", "vue": "^2.6.14", "vue-router": "^3.5.1", diff --git a/vue2/vue/src/components/Login.vue b/vue2/vue/src/components/Login.vue index a72f909..a823405 100644 --- a/vue2/vue/src/components/Login.vue +++ b/vue2/vue/src/components/Login.vue @@ -86,10 +86,8 @@ export default { if(res.data.code==200){ const token = response.data.token; const userId = res.data.user.userId; - console.log('userId', userId); this.$store.dispatch('setToken', { userId, token }); if(res.data.roles[0] === 'student'){ - // 使用 Vue Router 跳转并传递参数 this.$router.push({ path: '/user/profile', query: { userId: userId } diff --git a/vue2/vue/src/components/Student/Aside.vue b/vue2/vue/src/components/Student/Aside.vue index a785bc1..b9b8a97 100644 --- a/vue2/vue/src/components/Student/Aside.vue +++ b/vue2/vue/src/components/Student/Aside.vue @@ -18,7 +18,7 @@ - + 试卷中心 @@ -26,6 +26,11 @@ 分数查询 + + + + 消息查询 + diff --git a/vue2/vue/src/components/Student/Header.vue b/vue2/vue/src/components/Student/Header.vue index 4186c2d..882df7b 100644 --- a/vue2/vue/src/components/Student/Header.vue +++ b/vue2/vue/src/components/Student/Header.vue @@ -3,6 +3,22 @@
+ + +
+ + + + + +
+ 有 {{ unconfirmedCount }} 条消息为确认 +
+
+
退出
@@ -10,23 +26,83 @@ diff --git a/vue2/vue/src/views/Teacher/Class.vue b/vue2/vue/src/views/Teacher/Class.vue deleted file mode 100644 index 700dce3..0000000 --- a/vue2/vue/src/views/Teacher/Class.vue +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - diff --git a/vue2/vue/src/views/Teacher/HomePage.vue b/vue2/vue/src/views/Teacher/HomePage.vue index 6132980..7ccbd54 100644 --- a/vue2/vue/src/views/Teacher/HomePage.vue +++ b/vue2/vue/src/views/Teacher/HomePage.vue @@ -1,47 +1,48 @@