|
@@ -60,7 +60,8 @@ public class AdminController {
|
|
@ApiOperation(value = "分析数据")
|
|
@ApiOperation(value = "分析数据")
|
|
@RequestMapping(value = "fenxi", method = RequestMethod.GET)
|
|
@RequestMapping(value = "fenxi", method = RequestMethod.GET)
|
|
public void fenxi(HttpServletResponse response, @RequestParam Long examId,
|
|
public void fenxi(HttpServletResponse response, @RequestParam Long examId,
|
|
- @RequestParam(required = false) Boolean exZero,@RequestParam(required = false) Integer count) {
|
|
|
|
|
|
+ @RequestParam(required = false) Boolean exZero, @RequestParam(required = false) Integer count,
|
|
|
|
+ @RequestParam(required = false) Integer score) {
|
|
StringBuilder sb = new StringBuilder();
|
|
StringBuilder sb = new StringBuilder();
|
|
List<QuestionEntity> qs = questionService.findByExamId(examId);
|
|
List<QuestionEntity> qs = questionService.findByExamId(examId);
|
|
if (CollectionUtils.isEmpty(qs)) {
|
|
if (CollectionUtils.isEmpty(qs)) {
|
|
@@ -71,7 +72,7 @@ public class AdminController {
|
|
sb.append("试题数:" + qs.size() + "\r\n");
|
|
sb.append("试题数:" + qs.size() + "\r\n");
|
|
for (QuestionEntity q : qs) {
|
|
for (QuestionEntity q : qs) {
|
|
List<StudentScoreEntity> scores = studentScoreService.findBy(examId, q.getSubjectCode(), q.getMainNumber(),
|
|
List<StudentScoreEntity> scores = studentScoreService.findBy(examId, q.getSubjectCode(), q.getMainNumber(),
|
|
- q.getSubNumber(), exZero,count);
|
|
|
|
|
|
+ q.getSubNumber(), exZero, count,score);
|
|
if (CollectionUtils.isEmpty(scores)) {
|
|
if (CollectionUtils.isEmpty(scores)) {
|
|
sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:- \r\n");
|
|
sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:- \r\n");
|
|
} else {
|
|
} else {
|
|
@@ -91,29 +92,30 @@ public class AdminController {
|
|
double avg2 = new BigDecimal(Calculator.mean(b)).setScale(2, BigDecimal.ROUND_HALF_UP)
|
|
double avg2 = new BigDecimal(Calculator.mean(b)).setScale(2, BigDecimal.ROUND_HALF_UP)
|
|
.doubleValue();
|
|
.doubleValue();
|
|
sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:" + ret
|
|
sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:" + ret
|
|
- + "| 人评均分:" + avg2 + "| 机评均分:" + avg1 +"| 题数:"+scores.size()+ " \r\n");
|
|
|
|
|
|
+ + "| 人评均分:" + avg2 + "| 机评均分:" + avg1 + "| 题数:" + scores.size() + " \r\n");
|
|
fill(scores, sb);
|
|
fill(scores, sb);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数出错:- \r\n");
|
|
|
|
|
|
+ sb.append(
|
|
|
|
+ q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数出错:- \r\n");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
returnJson(sb.toString(), response);
|
|
returnJson(sb.toString(), response);
|
|
}
|
|
}
|
|
-
|
|
|
|
- private void fill(List<StudentScoreEntity> scores,StringBuilder sb) {
|
|
|
|
- int total=scores.size();
|
|
|
|
- int st=0;
|
|
|
|
- Map<DataKey,Integer> ret=new HashMap<>();
|
|
|
|
- for(StudentScoreEntity s:scores) {
|
|
|
|
- DataKey k=getKey(s.getAiScore()-s.getMarkingScore());
|
|
|
|
- Integer tem=ret.get(k);
|
|
|
|
- if(tem==null) {
|
|
|
|
- tem=0;
|
|
|
|
|
|
+
|
|
|
|
+ private void fill(List<StudentScoreEntity> scores, StringBuilder sb) {
|
|
|
|
+ int total = scores.size();
|
|
|
|
+ int st = 0;
|
|
|
|
+ Map<DataKey, Integer> ret = new HashMap<>();
|
|
|
|
+ for (StudentScoreEntity s : scores) {
|
|
|
|
+ DataKey k = getKey(s.getAiScore() - s.getMarkingScore());
|
|
|
|
+ Integer tem = ret.get(k);
|
|
|
|
+ if (tem == null) {
|
|
|
|
+ tem = 0;
|
|
}
|
|
}
|
|
- ret.put(k, tem+1);
|
|
|
|
|
|
+ ret.put(k, tem + 1);
|
|
}
|
|
}
|
|
- List<DataKey> ks=new ArrayList<>(ret.keySet());
|
|
|
|
|
|
+ List<DataKey> ks = new ArrayList<>(ret.keySet());
|
|
ks.sort(new Comparator<DataKey>() {
|
|
ks.sort(new Comparator<DataKey>() {
|
|
@Override
|
|
@Override
|
|
public int compare(DataKey o1, DataKey o2) {
|
|
public int compare(DataKey o1, DataKey o2) {
|
|
@@ -128,38 +130,37 @@ public class AdminController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- for(DataKey k:ks) {
|
|
|
|
- Integer c=ret.get(k);
|
|
|
|
- if(k.getIndex()<=2) {
|
|
|
|
- st=st+c;
|
|
|
|
|
|
+ for (DataKey k : ks) {
|
|
|
|
+ Integer c = ret.get(k);
|
|
|
|
+ if (k.getIndex() <= 2) {
|
|
|
|
+ st = st + c;
|
|
}
|
|
}
|
|
- sb.append(" "+k.getKey()+" "+c+" "+Calculator.percentage(c, total, 2)+ " \r\n");
|
|
|
|
|
|
+ sb.append(" " + k.getKey() + " " + c + " " + Calculator.percentage(c, total, 2) + " \r\n");
|
|
}
|
|
}
|
|
- sb.append(" 3分差值:"+st+" "+Calculator.percentage(st, total, 2)+ " \r\n");
|
|
|
|
|
|
+ sb.append(" 3分差值:" + st + " " + Calculator.percentage(st, total, 2) + " \r\n");
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
private static DataKey getKey(double s) {
|
|
private static DataKey getKey(double s) {
|
|
- if(s<0) {
|
|
|
|
- s=0-s;
|
|
|
|
|
|
+ if (s < 0) {
|
|
|
|
+ s = 0 - s;
|
|
}
|
|
}
|
|
- if(s==0) {
|
|
|
|
- DataKey r=new DataKey();
|
|
|
|
|
|
+ if (s == 0) {
|
|
|
|
+ DataKey r = new DataKey();
|
|
r.setKey("[0,0]");
|
|
r.setKey("[0,0]");
|
|
r.setIndex(-1);
|
|
r.setIndex(-1);
|
|
return r;
|
|
return r;
|
|
}
|
|
}
|
|
- int i=0;
|
|
|
|
- for(;;) {
|
|
|
|
- if(i<s&&s<=i+1) {
|
|
|
|
- DataKey r=new DataKey();
|
|
|
|
- r.setKey("("+i+","+(i+1)+"]");
|
|
|
|
|
|
+ int i = 0;
|
|
|
|
+ for (;;) {
|
|
|
|
+ if (i < s && s <= i + 1) {
|
|
|
|
+ DataKey r = new DataKey();
|
|
|
|
+ r.setKey("(" + i + "," + (i + 1) + "]");
|
|
r.setIndex(i);
|
|
r.setIndex(i);
|
|
return r;
|
|
return r;
|
|
}
|
|
}
|
|
i++;
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
|
|
@ApiOperation(value = "进度详情")
|
|
@ApiOperation(value = "进度详情")
|
|
@RequestMapping(value = "info", method = RequestMethod.GET)
|
|
@RequestMapping(value = "info", method = RequestMethod.GET)
|