|
@@ -5,8 +5,12 @@ import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.PrintWriter;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
@@ -25,6 +29,7 @@ import com.qmth.boot.api.annotation.Aac;
|
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
|
import com.qmth.boot.core.concurrent.service.ConcurrentService;
|
|
|
|
|
|
+import cn.com.qmth.am.bean.DataKey;
|
|
|
import cn.com.qmth.am.config.SysProperty;
|
|
|
import cn.com.qmth.am.entity.QuestionEntity;
|
|
|
import cn.com.qmth.am.entity.StudentScoreEntity;
|
|
@@ -87,13 +92,74 @@ public class AdminController {
|
|
|
.doubleValue();
|
|
|
sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:" + ret
|
|
|
+ "| 人评均分:" + avg2 + "| 机评均分:" + avg1 +"| 题数:"+scores.size()+ " \r\n");
|
|
|
+ fill(scores, sb);
|
|
|
} 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);
|
|
|
}
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ List<DataKey> ks=new ArrayList<>(ret.keySet());
|
|
|
+ ks.sort(new Comparator<DataKey>() {
|
|
|
+ @Override
|
|
|
+ public int compare(DataKey o1, DataKey o2) {
|
|
|
+ int c1 = o1.getIndex();
|
|
|
+ int c2 = o2.getIndex();
|
|
|
+ if (c1 < c2) {
|
|
|
+ return -1;
|
|
|
+ } else if (c1 > c2) {
|
|
|
+ return 1;
|
|
|
+ } else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ 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(" 3分差值:"+st+" "+Calculator.percentage(st, total, 2)+ " \r\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ private static DataKey getKey(double s) {
|
|
|
+ if(s<0) {
|
|
|
+ s=0-s;
|
|
|
+ }
|
|
|
+ if(s==0) {
|
|
|
+ DataKey r=new DataKey();
|
|
|
+ r.setKey("[0,0]");
|
|
|
+ r.setIndex(-1);
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+ int i=0;
|
|
|
+ for(;;) {
|
|
|
+ if(i<s&&s<=i+1) {
|
|
|
+ DataKey r=new DataKey();
|
|
|
+ r.setKey("("+i+","+(i+1)+"]");
|
|
|
+ r.setIndex(i);
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@ApiOperation(value = "进度详情")
|
|
|
@RequestMapping(value = "info", method = RequestMethod.GET)
|