龚焕茏
2024-07-01 c227e3938798eb7d529575ba1f3ea1c56ae63cfe
refactor:恢复成绩接口
11个文件已修改
199 ■■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/ExamPaperScore.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperScoreMapper.xml 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java
@@ -2,35 +2,22 @@
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.controller.wx.BaseWXApiController;
import com.ycl.jxkg.domain.*;
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.QuestionTypeEnum;
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.exampaper.ExamPaperAnswerPageResponseVO;
import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO;
import com.github.pagehelper.PageInfo;
import com.ycl.jxkg.domain.vo.student.exam.ExamPaperReadVO;
import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitItemVO;
import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO;
import com.ycl.jxkg.enums.QuestionTypeEnum;
import com.ycl.jxkg.service.ExamPaperScoreService;
import com.ycl.jxkg.service.ExamPaperService;
import com.ycl.jxkg.service.SubjectService;
import com.ycl.jxkg.utils.ExamUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.*;
import java.util.stream.Collectors;
@@ -45,24 +32,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)
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;
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;
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("正确题数")
    private Integer questionCorrect;
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;
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;
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();
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);
    /**
     * 计算试卷提交结果(不入库)
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));
    }
src/main/resources/mapper/ExamPaperScoreMapper.xml
@@ -22,50 +22,55 @@
        <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
        FROM t_exam_paper_score
        <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
        <include refid="Base_Column_List"/>
        from t_exam_paper_score
        <where>
            and user_id = #{userId}
            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
    </select>
    <select id="selectCountByDate" resultType="com.ycl.jxkg.domain.other.KeyValue">
        SELECT submit_time as name, sum(question_count) as value
        from
            (
            SELECT question_count ,DATE_FORMAT(submit_time, '%Y-%m-%d') as submit_time from t_exam_paper_score
            WHERE submit_time between #{startTime} and #{endTime}
            ) a
        GROUP BY submit_time
        SELECT create_time as name, COUNT(create_time) as value
        from (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') as create_time
              from t_exam_paper_score
              WHERE create_time between #{startTime} and #{endTime}) a
        GROUP BY create_time
    </select>
@@ -80,14 +85,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 +99,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 +113,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>