| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package cn.seecoder.data.server.schedule;
- import cn.seecoder.data.server.repository.EvaluateRepository;
- import cn.seecoder.data.server.utils.aspects.dataExtraction.DataExtractor;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import cn.seecoder.data.server.domain.GeneralRecordDao;
- import cn.seecoder.data.server.domain.EvaluateDao;
- import cn.seecoder.data.server.repository.GeneralRecordRepository;
- import org.springframework.web.client.RestTemplate;
- import java.text.SimpleDateFormat;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.Calendar;
- import java.util.Date;
- @Component
- public class EvaluateSchedule {
- @Autowired
- private GeneralRecordRepository generalRecordRepository;
- @Autowired
- private EvaluateRepository evaluateRepository;
- public EvaluateSchedule(GeneralRecordRepository generalRecordRepository,
- EvaluateRepository evaluateRepository) {
- this.generalRecordRepository = generalRecordRepository;
- this.evaluateRepository = evaluateRepository;
- }
- @DataExtractor("evaluate")
- // @Scheduled(cron = "0 0 2 * * ?")
- public void evaluateDataExtration(){
- Date date = new Date();
- Calendar calendar = Calendar.getInstance();
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String startTime = format.format(calendar.getTime());
- calendar.setTime(date);
- calendar.add(Calendar.DAY_OF_MONTH, -1);
- String endTime = format.format(calendar.getTime());
- RestTemplate restTemplate = new RestTemplate();
- try {
- String temp = restTemplate.getForObject(
- "http://47.111.95.164:8080/api/exam/list/range?startTime={1}&endTime={2}",
- String.class,
- "2010-01-01 00:00:00",
- "2021-04-27 00:00:00"
- );
- JSONObject ans = JSON.parseObject(temp);
- JSONArray results = ans.getJSONArray("result");
- DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- for(int i=0;i<results.size();i++){
- int examId = results.getJSONObject(i).getInteger("examId");
- String recordString = restTemplate.getForObject(
- "http://47.111.95.164:8080/api/record/{1}",
- String.class,
- examId
- );
- JSONArray recordResults = JSON.parseObject(recordString).getJSONArray("result");
- for(int j=0;j<recordResults.size();j++){
- EvaluateDao evaluatedao = new EvaluateDao();
- GeneralRecordDao generalrecorddao = new GeneralRecordDao();
- JSONObject recordResult = recordResults.getJSONObject(j);
- generalrecorddao.setStartTime(LocalDateTime.parse(results.getJSONObject(i).getString("startTime"),dtf));
- generalrecorddao.setEndTime(LocalDateTime.parse(results.getJSONObject(i).getString("endTime"),dtf));
- generalrecorddao.setQuestionId(recordResult.getString("questionId"));
- generalrecorddao.setUserId(recordResult.getInteger("studentId"));
- generalrecorddao.setAnswer(recordResult.getString("submitAnswer"));
- generalrecorddao.setSubmitTime(LocalDateTime.parse(recordResult.getString("submitTime"),dtf));
- if(recordResult.getString("message")==null)
- generalrecorddao.setPass(null);
- else if(recordResult.getString("message").equals("Accepted"))
- generalrecorddao.setPass(1);
- else
- generalrecorddao.setPass(0);
- generalrecorddao.setDataSource("evaluate");
- generalrecorddao.setScore(recordResult.getInteger("actualScore"));
- try{
- String examScores= restTemplate.getForObject(
- "http://47.111.95.164:8080/api/exam/{1}/questions",
- String.class,
- examId
- );
- JSONObject scoresResults = JSON.parseObject(examScores);
- if(scoresResults.getJSONObject("result").containsKey("questionAndScore")){
- JSONObject scoresTotal = scoresResults.getJSONObject("result").getJSONObject("questionAndScore");
- if(scoresTotal.containsKey(recordResult.get("questionId"))){
- generalrecorddao.setScoreTotal(scoresTotal.getInteger(recordResult.get("questionId").toString()));
- }
- else {
- generalrecorddao.setScoreTotal(0);
- }
- }
- }catch (Exception e){
- System.out.println(e);
- }
- GeneralRecordDao gr = generalRecordRepository.save(generalrecorddao);
- int grid = generalrecorddao.getId();
- evaluatedao.setExamId(examId);
- evaluatedao.setGeneralId(grid);
- evaluatedao.setDifficuty(results.getJSONObject(i).getInteger("difficulty"));
- EvaluateDao ed = evaluateRepository.save(evaluatedao);
- System.out.println(evaluatedao);
- System.out.println(generalrecorddao);
- }
- }
- }catch (Exception e){
- System.out.println(e);
- }
- }
- }
|