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.getCreateTime())); 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; @@ -35,14 +34,14 @@ /** * 最终得分 */ @TableField("user_score") private BigDecimal userScore; @TableField("score") private BigDecimal score; /** * 试卷总分 */ @TableField("paper_score") private BigDecimal paperScore; @TableField("total_score") private BigDecimal totalScore; /** * 做对题目数量 @@ -71,8 +70,8 @@ /** * 学生 */ @TableField("create_user") private Integer createUser; @TableField("user_id") private Integer userId; /** * 批改人 @@ -82,14 +81,14 @@ /** * 批改时间 */ @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; @TableField(value = "judge_time", fill = FieldFill.INSERT) private Date judgeTime; /** * 交卷时间 */ @TableField(value = "answer_time") private Date answerTime; @TableField(value = "submit_time") private Date submitTime; /** * 试卷内容 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/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -513,11 +513,11 @@ //插入exam_paper_answer(成绩表) ExamPaperScore examPaperScore = new ExamPaperScore(); BeanUtils.copyProperties(examPaperMark,examPaperScore); examPaperScore.setUserScore(new BigDecimal(examPaperMark.getScore())); examPaperScore.setPaperScore(new BigDecimal(examPaperMark.getTotalScore())); examPaperScore.setScore(new BigDecimal(examPaperMark.getScore())); examPaperScore.setTotalScore(new BigDecimal(examPaperMark.getTotalScore())); examPaperScore.setJudgeUser(userId); examPaperScore.setCreateUser(examPaperMark.getUserId()); examPaperScore.setAnswerTime(examPaperMark.getSubmitTime()); examPaperScore.setUserId(examPaperMark.getUserId()); examPaperScore.setSubmitTime(examPaperMark.getSubmitTime()); examPaperScore.setPaperContent(JSON.toJSONString(examPaperMark.getTitleItems())); long questionCorrect =0; long questionCount=0; src/main/resources/mapper/ExamPaperScoreMapper.xml
@@ -3,38 +3,52 @@ <mapper namespace="com.ycl.jxkg.mapper.ExamPaperScoreMapper"> <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.entity.ExamPaperScore"> <id column="id" jdbcType="INTEGER" property="id"/> <result column="paper_id" jdbcType="INTEGER" property="examPaperId"/> <result column="paper_name" jdbcType="VARCHAR" property="paperName"/> <result column="exam_id" jdbcType="INTEGER" property="examId"/> <result column="exam_name" jdbcType="VARCHAR" property="examName"/> <result column="paper_type" jdbcType="INTEGER" property="paperType"/> <result column="user_score" jdbcType="INTEGER" property="userScore"/> <result column="paper_score" jdbcType="INTEGER" property="paperScore"/> <result column="score" jdbcType="INTEGER" property="score"/> <result column="total_score" jdbcType="INTEGER" property="totalScore"/> <result column="question_correct" jdbcType="INTEGER" property="questionCorrect"/> <result column="question_count" jdbcType="INTEGER" property="questionCount"/> <result column="do_time" jdbcType="INTEGER" property="doTime"/> <result column="status" jdbcType="INTEGER" property="status"/> <result column="create_user" jdbcType="INTEGER" property="createUser"/> <result column="user_id" jdbcType="INTEGER" property="userId"/> <result column="judge_user" jdbcType="INTEGER" property="judgeUser"/> <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> <result column="answer_time" jdbcType="TIMESTAMP" property="answerTime"/> <result column="submit_time" jdbcType="TIMESTAMP" property="submitTime"/> <result column="exam_id" jdbcType="INTEGER" property="examId"/> <result column="exam_name" jdbcType="INTEGER" property="examName"/> <result column="paper_content" jdbcType="INTEGER" property="paperContent"/> </resultMap> <sql id="Base_Column_List"> id, paper_id, paper_name, paper_type, user_score,paper_score, question_correct, question_count, do_time, status, create_user, create_time, judge_user,answer_time,paper_content,create_time 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 create_user = #{createUser} <if test="subjectId != null"> and subject_id = #{subjectId} and user_id = #{createUser} <if test="examName != null and examName != ''"> and INSTR(exam_name, #{examName}) </if> </where> </select> @@ -52,11 +66,9 @@ <select id="selectCountByDate" resultType="com.ycl.jxkg.domain.other.KeyValue"> 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 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> @@ -65,21 +77,19 @@ select <include refid="Base_Column_List"/> from t_exam_paper_score where paper_id = #{pid} and create_user=#{uid} where paper_id = #{pid} and user_id=#{uid} limit 1 </select> <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> @@ -88,9 +98,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, @@ -102,9 +112,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>