|
@@ -1,22 +1,25 @@
|
|
|
package com.yaoxiang.diagnosis.controller;
|
|
|
|
|
|
+import com.google.common.collect.ArrayTable;
|
|
|
+import com.google.common.collect.HashBasedTable;
|
|
|
+import com.google.common.collect.Table;
|
|
|
import com.google.gson.reflect.TypeToken;
|
|
|
import com.yaoxiang.diagnosis.dao.OptionRepo;
|
|
|
import com.yaoxiang.diagnosis.dao.QuestionRepo;
|
|
|
-import com.yaoxiang.diagnosis.entity.Paper;
|
|
|
-import com.yaoxiang.diagnosis.entity.PaperCommit;
|
|
|
+import com.yaoxiang.diagnosis.entity.*;
|
|
|
import com.yaoxiang.diagnosis.file.FileService;
|
|
|
-import com.yaoxiang.diagnosis.entity.Question;
|
|
|
import com.yaoxiang.diagnosis.model.*;
|
|
|
import com.yaoxiang.diagnosis.service.CommitService;
|
|
|
import com.yaoxiang.diagnosis.service.PaperService;
|
|
|
import com.yaoxiang.diagnosis.service.SpecialKnowledgeService;
|
|
|
+import com.yaoxiang.diagnosis.service.SpecialReportService;
|
|
|
import com.yaoxiang.diagnosis.util.*;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
|
import io.swagger.annotations.ApiImplicitParams;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.ss.formula.functions.T;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
@@ -30,6 +33,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @AUTHOR: DaiFengWen
|
|
@@ -53,6 +57,9 @@ public class TestController {
|
|
|
@Resource
|
|
|
private PaperService paperService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private SpecialReportService specialReportService;
|
|
|
+
|
|
|
private AtomicLong visitCount = new AtomicLong();
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
|
|
@@ -192,6 +199,32 @@ public class TestController {
|
|
|
response.getOutputStream().write(data);
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("tagMaster")
|
|
|
+ @ApiOperation("导出试卷每个知识点掌握率")
|
|
|
+ @ApiImplicitParams({@ApiImplicitParam(name = "pid", value = "pid", paramType = "query"),
|
|
|
+ @ApiImplicitParam(name = "startTime", value = "startTime", paramType = "query"),
|
|
|
+ @ApiImplicitParam(name = "endTime", value = "endTime", paramType = "query")})
|
|
|
+ public void tagMaster(Long pid, HttpServletResponse response,
|
|
|
+ @RequestParam(defaultValue = "1584107900000") Long startTime,
|
|
|
+ @RequestParam(required = false) Long endTime) throws IOException {
|
|
|
+ logger.info("start {}", new Date(startTime));
|
|
|
+ if (endTime == null) {
|
|
|
+ endTime = DateUtil.getLastTimeOfDay(new Date()).getTime();
|
|
|
+ }
|
|
|
+ logger.info("end {}", new Date(endTime));
|
|
|
+ List<PaperCommit> list = commitService.listPaperCommit(pid, startTime, endTime);
|
|
|
+ Paper p = paperService.getOnePaper(pid);
|
|
|
+ byte[] data = calc3(list, p);
|
|
|
+ logger.info("commit size {},", list.size());
|
|
|
+// logger.info("list={}", list);
|
|
|
+// List<>
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.add("Content-Disposition", "attachment; filename=xxx.xlxs");
|
|
|
+// headers.add("Content-Type");
|
|
|
+ response.setHeader("Content-Disposition", "attachment;fileName=xxx.xlsx");
|
|
|
+ response.getOutputStream().write(data);
|
|
|
+ }
|
|
|
+
|
|
|
public byte[] calc1(List<PaperCommit> list, Paper p) {
|
|
|
//Map<number,Map<option,count>>
|
|
|
Map<Integer, Map<String, Integer>> mapCount = new LinkedHashMap<>();
|
|
@@ -265,6 +298,37 @@ public class TestController {
|
|
|
return ExportUtil.export2(p.getQuestionNum(), userMap);
|
|
|
}
|
|
|
|
|
|
+ public byte[] calc3(List<PaperCommit> list, Paper p) {
|
|
|
+ List<SpecialResult> list1 = new ArrayList<>();
|
|
|
+// Table<String, String, Double> table = HashBasedTable.create();
|
|
|
+
|
|
|
+ for (PaperCommit commit : list) {
|
|
|
+ SpecialResult result = specialReportService.generate(commit.getPid(), commit.getUid(), false);
|
|
|
+ result.setKnowledges(result.getKnowledges().stream().filter(k -> k.getLevel() == 1 || k.getLevel() == 2).collect(Collectors.toList()));
|
|
|
+ logger.info("result knowledges size is {}", result.getKnowledges().size());
|
|
|
+ list1.add(result);
|
|
|
+ }
|
|
|
+// List<TagMasterVo>vos = new ArrayList<>();
|
|
|
+
|
|
|
+ Map<String, TagMasterVo> voMap = new LinkedHashMap<>();
|
|
|
+ for (SpecialResult result : list1) {
|
|
|
+ List<SpecialKnowledge> knowledges = result.getKnowledges();
|
|
|
+ for (SpecialKnowledge k : knowledges) {
|
|
|
+ TagMasterVo vo = voMap.getOrDefault(k.getContent(), new TagMasterVo());
|
|
|
+ vo.setContent(k.getContent());
|
|
|
+ vo.setLevel(k.getLevel());
|
|
|
+ List<Double> masters = vo.getMasters();
|
|
|
+ if (masters == null) {
|
|
|
+ masters = new ArrayList<>();
|
|
|
+ }
|
|
|
+ masters.add(k.getMaster());
|
|
|
+ vo.setMasters(masters);
|
|
|
+ voMap.put(k.getContent(), vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ExportUtil.export3(list.size(),voMap.values());
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private List<AnswerContrast> convertAnswerContrast(String json) {
|
|
|
return ObjectUtil.getGson().fromJson(json, new TypeToken<List<AnswerContrast>>() {
|