Commit c4be4d3f authored by 陈立彬's avatar 陈立彬

考试结果h5

parent 262d6fbd
...@@ -18,6 +18,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; ...@@ -18,6 +18,7 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.text.DecimalFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -143,7 +144,7 @@ public class ExamController { ...@@ -143,7 +144,7 @@ public class ExamController {
@RequestParam("session_id") String sessionId, @RequestParam("session_id") String sessionId,
@RequestParam("user_id") String userId) { @RequestParam("user_id") String userId) {
Double avgScore = 0D; String avgScore = "";
Double totalScore = 0D; Double totalScore = 0D;
int examNum = 0; int examNum = 0;
List<SingleQaResult> qaResultList = Lists.newArrayList(); List<SingleQaResult> qaResultList = Lists.newArrayList();
...@@ -156,7 +157,10 @@ public class ExamController { ...@@ -156,7 +157,10 @@ public class ExamController {
if(!CollectionUtils.isEmpty(qaRecordDos)) { if(!CollectionUtils.isEmpty(qaRecordDos)) {
totalScore = qaRecordDos.stream().mapToDouble(ElehSessionQaRecordDo::getScore).sum(); totalScore = qaRecordDos.stream().mapToDouble(ElehSessionQaRecordDo::getScore).sum();
examNum = qaRecordDos.size(); examNum = qaRecordDos.size();
avgScore = totalScore / examNum;
DecimalFormat df = new DecimalFormat("#.##");
avgScore = df.format(totalScore / examNum);
// 数据转换 // 数据转换
qaResultList = qaRecordDos.stream().map(v -> { qaResultList = qaRecordDos.stream().map(v -> {
......
package cn.aibreeze.exam.api;
import cn.aibreeze.exam.dto.SessionExamResult;
import cn.aibreeze.exam.dto.SingleQaResult;
import cn.aibreeze.exam.entity.ElehKnowledgeDo;
import cn.aibreeze.exam.entity.ElehSessionQaRecordDo;
import cn.aibreeze.exam.mapper.ElehKnowledgeMapper;
import cn.aibreeze.exam.mapper.ElehKnowledgeTagMapper;
import cn.aibreeze.exam.mapper.ElehSessionQaRecordMapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.text.DecimalFormat;
import java.util.List;
import java.util.stream.Collectors;
@Controller
@Slf4j
@RequestMapping(value = "/exam/h5/")
@RequiredArgsConstructor
public class H5Controller {
private final ElehKnowledgeMapper knowledgeMapper;
private final ElehKnowledgeTagMapper tagMapper;
private final ElehSessionQaRecordMapper qaRecordMapper;
@SneakyThrows
@GetMapping(value = "exam_result/{tenant}/{session_id}/{user_id}.html")
public void list(@PathVariable("tenant") Integer tenant,
@PathVariable("session_id") String sessionId,
@PathVariable("user_id") String userId,
HttpServletResponse response) {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>\n" +
"<html lang=\"zh\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
" <title>考试结果</title>\n" +
" <style>\n" +
" body {\n" +
" font-family: Arial, sans-serif;\n" +
" margin: 0;\n" +
" padding: 0;\n" +
" }\n" +
"\n" +
" header {\n" +
" background-color: #f1f1f1;\n" +
" text-align: center;\n" +
" padding: 20px;\n" +
" }\n" +
"\n" +
" main {\n" +
" padding: 20px;\n" +
" }\n" +
" </style>\n" +
"</head>");
out.println("<body>");
// 查询考试结果
LambdaQueryWrapper<ElehSessionQaRecordDo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ElehSessionQaRecordDo::getTenant, tenant);
queryWrapper.eq(ElehSessionQaRecordDo::getSessionId, sessionId);
queryWrapper.eq(ElehSessionQaRecordDo::getUserId, userId);
List<ElehSessionQaRecordDo> qaRecordDos = qaRecordMapper.selectList(queryWrapper);
if(!CollectionUtils.isEmpty(qaRecordDos)) {
Double totalScore = qaRecordDos.stream().mapToDouble(ElehSessionQaRecordDo::getScore).sum();
int examNum = qaRecordDos.size();
DecimalFormat df = new DecimalFormat("#.##");
String avgScore = df.format(totalScore / examNum);
out.println("<main>");
out.println("<p><strong>恭喜你,考试结束了。</strong></p>");
out.println("<p><strong>你一共考了</strong> "+examNum+" <strong>道题目</strong></p>");
out.println("<p><strong>最终得分:</strong>"+avgScore+"</p>");
out.println("<br/>");
// 数据转换
qaRecordDos.stream().forEach(v -> {
ElehKnowledgeDo knowledgeDo = knowledgeMapper.selectById(v.getTenant(), v.getQuestionId());
SingleQaResult qa = new SingleQaResult();
qa.setQuestion(knowledgeDo.getQuestion());
qa.setAnswer(knowledgeDo.getAnswer());
qa.setUserAnswer(v.getAnswer());
qa.setScore(v.getScore());
qa.setScoreCriteria(v.getScoreCriteria());
out.println("<p><strong>考试题目:</strong>"+knowledgeDo.getQuestion()+"</p>");
out.println("<p><strong>你的得分:</strong>"+v.getScore()+"</p>");
out.println("<p><strong>参考答案:</strong>"+knowledgeDo.getAnswer()+"</p>");
out.println("<p><strong>你的答案:</strong>"+v.getAnswer()+"</p>");
out.println("<p><strong>得分点评:</strong>"+v.getScoreCriteria()+"</p>");
out.println("<br/>");
});
out.println("</main>");
} else {
out.println("<header>\n"
+" <h1>你还没有任何考试信息哦</h1>\n"
+" </header>");
}
out.println("</body>");
out.println("</html>");
}
}
...@@ -13,7 +13,7 @@ public class SessionExamResult implements Serializable { ...@@ -13,7 +13,7 @@ public class SessionExamResult implements Serializable {
private double totalScore; private double totalScore;
@JsonProperty("avg_score") @JsonProperty("avg_score")
private double avgScore; private String avgScore;
@JsonProperty("exam_num") @JsonProperty("exam_num")
private int examNum; private int examNum;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment