From 32801f699527f450a226b34a91a466ffa27e009b Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 01 七月 2024 13:08:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java | 9 + src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java | 4 src/main/java/com/ycl/jxkg/domain/entity/ExamPaperScore.java | 1 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 4 + src/main/java/com/ycl/jxkg/job/ExamJob.java | 52 +++++++++++++ src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java | 2 src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java | 2 src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java | 2 src/main/resources/mapper/ExamPaperScoreMapper.xml | 59 +++++++++----- src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java | 36 ++++---- src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageVO.java | 2 src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java | 34 +------- src/main/java/com/ycl/jxkg/JxkgApplication.java | 2 src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java | 9 - 14 files changed, 136 insertions(+), 82 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/JxkgApplication.java b/src/main/java/com/ycl/jxkg/JxkgApplication.java index 3df1b54..0c95d80 100644 --- a/src/main/java/com/ycl/jxkg/JxkgApplication.java +++ b/src/main/java/com/ycl/jxkg/JxkgApplication.java @@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -12,6 +13,7 @@ * Copyright (C), 2020-2024, 姝︽眽鎬濈淮璺宠穬绉戞妧鏈夐檺鍏徃 * @date 2021/12/25 9:45 */ +@EnableScheduling @SpringBootApplication @EnableTransactionManagement @EnableConfigurationProperties(value = { SystemConfig.class}) diff --git a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java index 1f3c735..fe52355 100644 --- a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java +++ b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java @@ -1,34 +1,24 @@ package com.ycl.jxkg.controller.student; +import com.github.pagehelper.PageInfo; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; -import com.ycl.jxkg.domain.*; +import com.ycl.jxkg.domain.ExamPaperAnswerInfo; import com.ycl.jxkg.domain.entity.ExamPaperScore; -import com.ycl.jxkg.domain.entity.Subject; import com.ycl.jxkg.domain.entity.User; -import com.ycl.jxkg.domain.entity.UserEventLog; -import com.ycl.jxkg.enums.ExamPaperAnswerStatusEnum; -import com.ycl.jxkg.event.CalculateExamPaperAnswerCompleteEvent; -import com.ycl.jxkg.event.UserEvent; -import com.ycl.jxkg.service.ExamPaperScoreService; -import com.ycl.jxkg.service.ExamPaperService; -import com.ycl.jxkg.service.SubjectService; -import com.ycl.jxkg.utils.DateTimeUtil; -import com.ycl.jxkg.utils.ExamUtil; -import com.ycl.jxkg.utils.PageInfoHelper; import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperEditRequestVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperReadVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO; -import com.github.pagehelper.PageInfo; +import com.ycl.jxkg.service.ExamPaperScoreService; +import com.ycl.jxkg.service.ExamPaperService; +import com.ycl.jxkg.service.SubjectService; import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; -import java.util.Date; @RequiredArgsConstructor @RestController("StudentExamPaperAnswerController") @@ -44,19 +34,7 @@ @RequestMapping(value = "/pageList", method = RequestMethod.POST) public Result<PageInfo<ExamPaperAnswerPageResponseVO>> pageList(@RequestBody @Valid ExamPaperAnswerPageVO model) { model.setCreateUser(getCurrentUser().getId()); - PageInfo<ExamPaperScore> pageInfo = examPaperScoreService.studentPage(model); - PageInfo<ExamPaperAnswerPageResponseVO> page = PageInfoHelper.copyMap(pageInfo, e -> { - ExamPaperAnswerPageResponseVO vo = new ExamPaperAnswerPageResponseVO(); -// BeanUtils.copyProperties(e, vo); -// Subject subject = subjectService.getById(vo.getSubjectId()); -// vo.setDoTime(ExamUtil.secondToVM(e.getDoTime())); -// vo.setSystemScore(ExamUtil.scoreToVM(e.getSystemScore())); -// vo.setUserScore(ExamUtil.scoreToVM(e.getUserScore())); -// vo.setPaperScore(ExamUtil.scoreToVM(e.getPaperScore())); -// vo.setSubjectName(subject.getName()); -// vo.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime())); - return vo; - }); + PageInfo<ExamPaperAnswerPageResponseVO> page = examPaperScoreService.studentPage(model); return Result.ok(page); } diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java index c1893b6..c287a66 100644 --- a/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java +++ b/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java @@ -45,24 +45,24 @@ private final ApplicationEventPublisher eventPublisher; private final ExamPaperService examPaperService; - @RequestMapping(value = "/pageList", method = RequestMethod.POST) - public Result<PageInfo<ExamPaperAnswerPageResponseVO>> pageList(@Valid ExamPaperAnswerPageVO model) { - model.setCreateUser(getCurrentUser().getId()); - PageInfo<ExamPaperScore> pageInfo = examPaperScoreService.studentPage(model); - PageInfo<ExamPaperAnswerPageResponseVO> page = PageInfoHelper.copyMap(pageInfo, e -> { - ExamPaperAnswerPageResponseVO vo = new ExamPaperAnswerPageResponseVO(); - BeanUtils.copyProperties(e, vo); - Subject subject = subjectService.getById(vo.getSubjectId()); - vo.setDoTime(ExamUtil.secondToVM(e.getDoTime())); -// vo.setSystemScore(ExamUtil.scoreToVM(e.getSystemScore())); -// vo.setUserScore(ExamUtil.scoreToVM(e.getUserScore())); -// vo.setPaperScore(ExamUtil.scoreToVM(e.getPaperScore())); - vo.setSubjectName(subject.getName()); -// vo.setCreateTime(DateTimeUtil.dateFormat(e.get)); - return vo; - }); - return Result.ok(page); - } +// @RequestMapping(value = "/pageList", method = RequestMethod.POST) +// public Result<PageInfo<ExamPaperAnswerPageResponseVO>> pageList(@Valid ExamPaperAnswerPageVO model) { +// model.setCreateUser(getCurrentUser().getId()); +// PageInfo<ExamPaperScore> pageInfo = examPaperScoreService.studentPage(model); +// PageInfo<ExamPaperAnswerPageResponseVO> page = PageInfoHelper.copyMap(pageInfo, e -> { +// ExamPaperAnswerPageResponseVO vo = new ExamPaperAnswerPageResponseVO(); +// BeanUtils.copyProperties(e, vo); +// Subject subject = subjectService.getById(vo.getSubjectId()); +// vo.setDoTime(ExamUtil.secondToVM(e.getDoTime())); +// // vo.setSystemScore(ExamUtil.scoreToVM(e.getSystemScore())); +// // vo.setUserScore(ExamUtil.scoreToVM(e.getUserScore())); +// // vo.setPaperScore(ExamUtil.scoreToVM(e.getPaperScore())); +// vo.setSubjectName(subject.getName()); +// vo.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime())); +// return vo; +// }); +// return Result.ok(page); +// } @RequestMapping(value = "/answerSubmit", method = RequestMethod.POST) diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperScore.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperScore.java index 8e884dc..738eb93 100644 --- a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperScore.java +++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperScore.java @@ -6,7 +6,6 @@ import com.ycl.jxkg.domain.base.AbsEntity; import lombok.Data; -import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java index d150342..f440fb6 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java @@ -12,6 +12,8 @@ private Integer examPaperId; + private Integer examId; + private String name; private String userName; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java index d60564e..a12009c 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java @@ -20,10 +20,10 @@ private String userName; @ExcelProperty("鍒嗘暟") - private String userScore; + private String score; @ExcelProperty("鎬诲垎") - private String paperScore; + private String totalScore; @ExcelProperty("姝g‘棰樻暟") private Integer questionCorrect; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java index f973851..eb8437e 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java @@ -2,6 +2,9 @@ import lombok.Data; +/** + * @author gonghl + */ @Data public class ExamPaperAnswerPageResponseVO { @@ -9,7 +12,9 @@ private String createTime; - private String userScore; + private String submitTime; + + private String score; private String subjectName; @@ -25,7 +30,7 @@ private Integer paperType; - private String systemScore; + private String totalScore; private Integer status; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageVO.java index ee73a16..d33c46d 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageVO.java @@ -6,7 +6,7 @@ @Data public class ExamPaperAnswerPageVO extends BasePage { - private Integer subjectId; + private String examName; private Integer createUser; diff --git a/src/main/java/com/ycl/jxkg/job/ExamJob.java b/src/main/java/com/ycl/jxkg/job/ExamJob.java new file mode 100644 index 0000000..2f97502 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/job/ExamJob.java @@ -0,0 +1,52 @@ +package com.ycl.jxkg.job; + +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.ycl.jxkg.domain.entity.Exam; +import com.ycl.jxkg.enums.general.ExamStatusEnum; +import com.ycl.jxkg.mapper.ExamMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author锛歺p + * @date锛�2024/7/1 11:06 + */ +@Component +@RequiredArgsConstructor +public class ExamJob { + + private final ExamMapper examMapper; + + + @Scheduled(fixedRate = 120000) // 涓ゅ垎閽熸墽琛屼竴娆★紝瀹氭椂浠诲姟浣滀负mq娑堣垂澶辫触鐨勪繚搴� + private void updateExamStatus() { + List<Exam> notFinishedExams = new LambdaQueryChainWrapper<>(examMapper) + .select(Exam::getId, Exam::getStatus, Exam::getStartTime, Exam::getEndTime) + .ne(Exam::getStatus, ExamStatusEnum.FINISHED) + .list(); + List<Exam> notStartExams = notFinishedExams.stream().filter(item -> ExamStatusEnum.NOT_START.equals(item.getStatus())).collect(Collectors.toList()); + List<Exam> ingExams = notFinishedExams.stream().filter(item -> ExamStatusEnum.ING.equals(item.getStatus())).collect(Collectors.toList()); + Date now = new Date(); + // 鏈紑濮嬬殑鐘舵�� 鍒� 杩涜涓� + for (Exam exam : notStartExams) { + if (now.after(exam.getStartTime()) && now.before(exam.getEndTime())) { + exam.setStatus(ExamStatusEnum.ING); + examMapper.updateById(exam); + } + } + // 浠庤繘琛屼腑鐘舵�� 鍒� 缁撴潫 + for (Exam ingExam : ingExams) { + if (now.after(ingExam.getEndTime())) { + ingExam.setStatus(ExamStatusEnum.FINISHED); + examMapper.updateById(ingExam); + } + } + + } + +} diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java index 366faeb..2e75e96 100644 --- a/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java +++ b/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java @@ -15,7 +15,7 @@ @Mapper public interface ExamPaperScoreMapper extends BaseMapper<ExamPaperScore> { - List<ExamPaperScore> studentPage(ExamPaperAnswerPageVO requestVM); + List<ExamPaperAnswerPageResponseVO> studentPage(ExamPaperAnswerPageVO requestVM); Integer selectAllCount(); Integer selectAllQuestionCount(); diff --git a/src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java b/src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java index 989250a..5a24a31 100644 --- a/src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java +++ b/src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java @@ -20,7 +20,7 @@ * @param requestVM 杩囨护鏉′欢 * @return PageInfo<ExamPaperAnswer> */ - PageInfo<ExamPaperScore> studentPage(ExamPaperAnswerPageVO requestVM); + PageInfo<ExamPaperAnswerPageResponseVO> studentPage(ExamPaperAnswerPageVO requestVM); /** * 璁$畻璇曞嵎鎻愪氦缁撴灉(涓嶅叆搴�) diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java index 4c8ac51..0956744 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java @@ -5,22 +5,20 @@ import com.github.pagehelper.PageInfo; import com.ycl.jxkg.domain.ExamPaperAnswerInfo; import com.ycl.jxkg.domain.entity.*; -import com.ycl.jxkg.domain.other.ExamPaperAnswerUpdate; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitItemVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO; -import com.ycl.jxkg.enums.ExamPaperAnswerStatusEnum; import com.ycl.jxkg.enums.ExamPaperTypeEnum; import com.ycl.jxkg.enums.QuestionTypeEnum; -import com.ycl.jxkg.mapper.ExamPaperScoreMapper; import com.ycl.jxkg.mapper.ExamPaperMapper; +import com.ycl.jxkg.mapper.ExamPaperScoreMapper; import com.ycl.jxkg.mapper.QuestionMapper; import com.ycl.jxkg.mapper.TaskExamCustomerAnswerMapper; -import com.ycl.jxkg.service.ExamPaperScoreService; import com.ycl.jxkg.service.ExamPaperScoreDetailService; +import com.ycl.jxkg.service.ExamPaperScoreService; import com.ycl.jxkg.service.TextContentService; import com.ycl.jxkg.utils.DateTimeUtil; import com.ycl.jxkg.utils.ExamUtil; @@ -29,7 +27,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -47,7 +44,7 @@ @Override - public PageInfo<ExamPaperScore> studentPage(ExamPaperAnswerPageVO requestVM) { + public PageInfo<ExamPaperAnswerPageResponseVO> studentPage(ExamPaperAnswerPageVO requestVM) { return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() -> examPaperScoreMapper.studentPage(requestVM)); } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java index 70dc960..e4f46d6 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java @@ -94,6 +94,10 @@ Exam entity = baseMapper.selectById(form.getId()); // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + // 鍒ゆ柇鑰冭瘯鐘舵�� + if (! ExamStatusEnum.NOT_START.equals(entity.getStatus())) { + throw new RuntimeException("鍙兘淇敼杩樻湭寮�濮嬬殑鑰冭瘯"); + } BeanUtils.copyProperties(form, entity); entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null)); baseMapper.updateById(entity); diff --git a/src/main/resources/mapper/ExamPaperScoreMapper.xml b/src/main/resources/mapper/ExamPaperScoreMapper.xml index 0c4926f..cc85278 100644 --- a/src/main/resources/mapper/ExamPaperScoreMapper.xml +++ b/src/main/resources/mapper/ExamPaperScoreMapper.xml @@ -22,22 +22,39 @@ <result column="navbar" property="navbar"/> </resultMap> <sql id="Base_Column_List"> - id - , paper_id, paper_name, paper_type, score,total_score, - question_correct, question_count, do_time, status, user_id, exam_id,exam_name, - judge_user,submit_time,paper_content,judge_time,navbar + id, + exam_id, + exam_name, + paper_id, + paper_type, + score, + total_score, + question_correct, + question_count, + do_time, + status, + user_id, + judge_user, + submit_time, + paper_content, + navbar, + judge_time, + deleted </sql> - <select id="studentPage" resultMap="BaseResultMap" - parameterType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO"> + <select id="studentPage" resultType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO"> SELECT - <include refid="Base_Column_List"/> - FROM t_exam_paper_answer + a.*, + ep.name as paperName + FROM t_exam_paper_score a + INNER JOIN t_exam_paper ep ON ep.id = paper_id AND ep.deleted = 0 <where> and user_id = #{createUser} + <if test="examName != null and examName != ''"> + and INSTR(exam_name, #{examName}) + </if> </where> </select> - <select id="getByExamIdUserId" resultType="com.ycl.jxkg.domain.entity.ExamPaperScore"> SELECT @@ -48,11 +65,11 @@ and exam_id = #{examId} </where> </select> - <select id="selectAllCount" resultType="java.lang.Integer"> SELECT count(*) from t_exam_paper_score </select> + <select id="selectAllQuestionCount" resultType="java.lang.Integer"> SELECT sum(question_count) from t_exam_paper_score @@ -80,14 +97,12 @@ <select id="adminPage" resultType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO"> SELECT - a.id , exam_paper_id, paper_name, paper_type, system_score, user_score, paper_score, - question_correct, question_count, do_time, a.status, create_user, a.create_time, b.real_name AS userName - FROM t_exam_paper_answer a - LEFT JOIN t_user b ON a.create_user = b.id + a.*, b.real_name AS userName, c.name as paperName + FROM t_exam_paper_score a + INNER JOIN t_user b ON a.user_id = b.id AND b.deleted = 0 + INNER JOIN t_exam_paper c ON a.paper_id = c.id AND c.deleted = 0 <where> - <if test="examPaperId != null"> - AND paper_id = #{examPaperId} - </if> + exam_id = #{examId} <if test="userName != null and userName != ''"> AND INSTR(b.real_name, #{userName}) </if> @@ -96,9 +111,9 @@ <select id="pageExamPaper" resultType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO"> SELECT - a.id, + t.id, a.name AS paperName, - a.score AS systemScore, + a.score AS totalScore, a.num as questionCount, a.subject_id, a.paper_type, @@ -110,9 +125,9 @@ t.exam_name FROM t_exam_paper a INNER JOIN t_exam t ON a.id = t.exam_paper_id AND t.deleted = 0 - LEFT JOIN t_subject b ON a.subject_id = b.id - LEFT JOIN t_user c ON t.teacher_id = c.id - LEFT JOIN t_exam_paper_answer d ON a.id = d.exam_paper_id + LEFT JOIN t_subject b ON a.subject_id = b.id AND b.deleted = 0 + LEFT JOIN t_user c ON t.teacher_id = c.id AND c.deleted = 0 + LEFT JOIN t_exam_paper_score d ON t.id = d.exam_id LEFT JOIN t_exam_paper_classes e ON a.id = e.exam_paper_id LEFT JOIN t_classes_user f ON e.classes_id = f.classes_id <where> -- Gitblit v1.8.0