EvaluateSchedule.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package cn.seecoder.data.server.schedule;
  2. import cn.seecoder.data.server.repository.EvaluateRepository;
  3. import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONObject;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.scheduling.annotation.Scheduled;
  9. import org.springframework.stereotype.Component;
  10. import cn.seecoder.data.server.domain.GeneralRecordDao;
  11. import cn.seecoder.data.server.domain.EvaluateDao;
  12. import cn.seecoder.data.server.repository.GeneralRecordRepository;
  13. import org.springframework.web.client.RestTemplate;
  14. import java.text.SimpleDateFormat;
  15. import java.time.LocalDateTime;
  16. import java.time.format.DateTimeFormatter;
  17. import java.util.Calendar;
  18. import java.util.Date;
  19. @Component
  20. public class EvaluateSchedule {
  21. @Autowired
  22. private GeneralRecordRepository generalRecordRepository;
  23. @Autowired
  24. private EvaluateRepository evaluateRepository;
  25. public EvaluateSchedule(GeneralRecordRepository generalRecordRepository,
  26. EvaluateRepository evaluateRepository) {
  27. this.generalRecordRepository = generalRecordRepository;
  28. this.evaluateRepository = evaluateRepository;
  29. }
  30. @DataExtractor("evaluate")
  31. // @Scheduled(cron = "0 0 2 * * ?")
  32. public void evaluateDataExtration(){
  33. Date date = new Date();
  34. Calendar calendar = Calendar.getInstance();
  35. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  36. String startTime = format.format(calendar.getTime());
  37. calendar.setTime(date);
  38. calendar.add(Calendar.DAY_OF_MONTH, -1);
  39. String endTime = format.format(calendar.getTime());
  40. RestTemplate restTemplate = new RestTemplate();
  41. try {
  42. String temp = restTemplate.getForObject(
  43. "http://47.111.95.164:8080/api/exam/list/range?startTime={1}&endTime={2}",
  44. String.class,
  45. "2010-01-01 00:00:00",
  46. "2021-04-27 00:00:00"
  47. );
  48. JSONObject ans = JSON.parseObject(temp);
  49. JSONArray results = ans.getJSONArray("result");
  50. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  51. for(int i=0;i<results.size();i++){
  52. int examId = results.getJSONObject(i).getInteger("examId");
  53. String recordString = restTemplate.getForObject(
  54. "http://47.111.95.164:8080/api/record/{1}",
  55. String.class,
  56. examId
  57. );
  58. JSONArray recordResults = JSON.parseObject(recordString).getJSONArray("result");
  59. for(int j=0;j<recordResults.size();j++){
  60. EvaluateDao evaluatedao = new EvaluateDao();
  61. GeneralRecordDao generalrecorddao = new GeneralRecordDao();
  62. JSONObject recordResult = recordResults.getJSONObject(j);
  63. generalrecorddao.setStartTime(LocalDateTime.parse(results.getJSONObject(i).getString("startTime"),dtf));
  64. generalrecorddao.setEndTime(LocalDateTime.parse(results.getJSONObject(i).getString("endTime"),dtf));
  65. generalrecorddao.setQuestionId(recordResult.getString("questionId"));
  66. generalrecorddao.setUserId(recordResult.getInteger("studentId"));
  67. generalrecorddao.setAnswer(recordResult.getString("submitAnswer"));
  68. generalrecorddao.setSubmitTime(LocalDateTime.parse(recordResult.getString("submitTime"),dtf));
  69. if(recordResult.getString("message")==null)
  70. generalrecorddao.setPass(null);
  71. else if(recordResult.getString("message").equals("Accepted"))
  72. generalrecorddao.setPass(1);
  73. else
  74. generalrecorddao.setPass(0);
  75. generalrecorddao.setDataSource("evaluate");
  76. generalrecorddao.setScore(recordResult.getInteger("actualScore"));
  77. try{
  78. String examScores= restTemplate.getForObject(
  79. "http://47.111.95.164:8080/api/exam/{1}/questions",
  80. String.class,
  81. examId
  82. );
  83. JSONObject scoresResults = JSON.parseObject(examScores);
  84. if(scoresResults.getJSONObject("result").containsKey("questionAndScore")){
  85. JSONObject scoresTotal = scoresResults.getJSONObject("result").getJSONObject("questionAndScore");
  86. if(scoresTotal.containsKey(recordResult.get("questionId"))){
  87. generalrecorddao.setScoreTotal(scoresTotal.getInteger(recordResult.get("questionId").toString()));
  88. }
  89. else {
  90. generalrecorddao.setScoreTotal(0);
  91. }
  92. }
  93. }catch (Exception e){
  94. System.out.println(e);
  95. }
  96. GeneralRecordDao gr = generalRecordRepository.save(generalrecorddao);
  97. int grid = generalrecorddao.getId();
  98. evaluatedao.setExamId(examId);
  99. evaluatedao.setGeneralId(grid);
  100. evaluatedao.setDifficuty(results.getJSONObject(i).getInteger("difficulty"));
  101. EvaluateDao ed = evaluateRepository.save(evaluatedao);
  102. System.out.println(evaluatedao);
  103. System.out.println(generalrecorddao);
  104. }
  105. }
  106. }catch (Exception e){
  107. System.out.println(e);
  108. }
  109. }
  110. }