|
@@ -7,10 +7,7 @@ import com.yaoxiang.diagnosis.entity.Paper;
|
|
|
import com.yaoxiang.diagnosis.entity.PaperCommit;
|
|
|
import com.yaoxiang.diagnosis.file.FileService;
|
|
|
import com.yaoxiang.diagnosis.entity.Question;
|
|
|
-import com.yaoxiang.diagnosis.model.AnswerContrast;
|
|
|
-import com.yaoxiang.diagnosis.model.AuthUser;
|
|
|
-import com.yaoxiang.diagnosis.model.OptionPercentVo;
|
|
|
-import com.yaoxiang.diagnosis.model.Result;
|
|
|
+import com.yaoxiang.diagnosis.model.*;
|
|
|
import com.yaoxiang.diagnosis.service.CommitService;
|
|
|
import com.yaoxiang.diagnosis.service.PaperService;
|
|
|
import com.yaoxiang.diagnosis.service.SpecialKnowledgeService;
|
|
@@ -169,6 +166,32 @@ public class TestController {
|
|
|
response.getOutputStream().write(data);
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("useTimePercent")
|
|
|
+ @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 useTimePercent(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 = calc2(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<>();
|
|
@@ -222,6 +245,27 @@ public class TestController {
|
|
|
return ExportUtil.export1(vos);
|
|
|
}
|
|
|
|
|
|
+ public byte[] calc2(List<PaperCommit> list, Paper p) {
|
|
|
+ //Map<uid,Map<number,time>>
|
|
|
+ Map<Long, Map<Integer, Long>> userMap = new LinkedHashMap<>();
|
|
|
+ for (PaperCommit commit : list) {
|
|
|
+ Map<Integer, Long> map = new LinkedHashMap<>();
|
|
|
+ for (int i = 1; i <= p.getQuestionNum(); i++) {
|
|
|
+ map.put(i, 0L);
|
|
|
+ }
|
|
|
+ String jsonAnswer = commit.getJsonAns();
|
|
|
+ List<AnswerContrast> contrasts = convertAnswerContrast(jsonAnswer);
|
|
|
+ for (AnswerContrast contrast : contrasts) {
|
|
|
+ long useTime = contrast.getUseTime();
|
|
|
+ map.put(contrast.getNumber(), useTime);
|
|
|
+ }
|
|
|
+ userMap.put(commit.getUid(), map);
|
|
|
+ }
|
|
|
+ logger.info(userMap.toString());
|
|
|
+ return ExportUtil.export2(p.getQuestionNum(), userMap);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private List<AnswerContrast> convertAnswerContrast(String json) {
|
|
|
return ObjectUtil.getGson().fromJson(json, new TypeToken<List<AnswerContrast>>() {
|
|
|
}.getType());
|