xiatian 11 months ago
parent
commit
c313b4f547

+ 34 - 33
src/main/java/cn/com/qmth/am/controller/AdminController.java

@@ -60,7 +60,8 @@ public class AdminController {
 	@ApiOperation(value = "分析数据")
 	@RequestMapping(value = "fenxi", method = RequestMethod.GET)
 	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();
 		List<QuestionEntity> qs = questionService.findByExamId(examId);
 		if (CollectionUtils.isEmpty(qs)) {
@@ -71,7 +72,7 @@ public class AdminController {
 		sb.append("试题数:" + qs.size() + "\r\n");
 		for (QuestionEntity q : qs) {
 			List<StudentScoreEntity> scores = studentScoreService.findBy(examId, q.getSubjectCode(), q.getMainNumber(),
-					q.getSubNumber(), exZero,count);
+					q.getSubNumber(), exZero, count,score);
 			if (CollectionUtils.isEmpty(scores)) {
 				sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:- \r\n");
 			} else {
@@ -91,29 +92,30 @@ public class AdminController {
 					double avg2 = new BigDecimal(Calculator.mean(b)).setScale(2, BigDecimal.ROUND_HALF_UP)
 							.doubleValue();
 					sb.append(q.getSubjectCode() + "|" + q.getMainNumber() + "|" + q.getSubNumber() + "| 相关系数:" + ret
-							+ "| 人评均分:" + avg2 + "| 机评均分:" + avg1 +"| 题数:"+scores.size()+ " \r\n");
+							+ "| 人评均分:" + 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;
+
+	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>() {
 			@Override
 			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) {
-		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.setIndex(-1);
 			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);
 				return r;
 			}
 			i++;
 		}
 	}
-	
 
 	@ApiOperation(value = "进度详情")
 	@RequestMapping(value = "info", method = RequestMethod.GET)

+ 1 - 1
src/main/java/cn/com/qmth/am/service/StudentScoreService.java

@@ -44,6 +44,6 @@ public interface StudentScoreService extends IService<StudentScoreEntity> {
 	void removeBy(Long examId, String subjectCode);
 
 	List<StudentScoreEntity> findBy(Long examId, String subjectCode, Integer mainNumber, String subNumber,
-			Boolean exZero, Integer count);
+			Boolean exZero, Integer count,Integer score);
 
 }

+ 24 - 1
src/main/java/cn/com/qmth/am/service/impl/StudentScoreServiceImpl.java

@@ -764,7 +764,7 @@ public class StudentScoreServiceImpl extends ServiceImpl<StudentScoreDao, Studen
 
 	@Override
 	public List<StudentScoreEntity> findBy(Long examId, String subjectCode, Integer mainNumber, String subNumber,
-			Boolean exZero,Integer count) {
+			Boolean exZero,Integer count,Integer score) {
 		QueryWrapper<StudentScoreEntity> wrapper = new QueryWrapper<>();
 		LambdaQueryWrapper<StudentScoreEntity> lw = wrapper.lambda();
 		lw.eq(StudentScoreEntity::getExamId, examId);
@@ -785,6 +785,18 @@ public class StudentScoreServiceImpl extends ServiceImpl<StudentScoreDao, Studen
 		if(CollectionUtils.isEmpty(ret)) {
 			return ret;
 		}
+		if(score!=null) {
+			List<StudentScoreEntity> tem=new ArrayList<>();
+			for(StudentScoreEntity s:ret) {
+				if(getSubtract(s.getAiScore(), s.getMarkingScore())<=score) {
+					tem.add(s);
+				}
+			}
+			ret=tem;
+		}
+		if(CollectionUtils.isEmpty(ret)) {
+			return ret;
+		}
 		if(count!=null) {
 			ret.sort(new Comparator<StudentScoreEntity>() {
 				@Override
@@ -801,4 +813,15 @@ public class StudentScoreServiceImpl extends ServiceImpl<StudentScoreDao, Studen
 		}
 		return ret;
 	}
+	
+	private Double getSubtract(Double d1,Double d2) {
+		if(d1==null||d2==null) {
+			return null;
+		}
+		Double r=d1-d2;
+		if(r<0) {
+			r=0-r;
+		}
+		return r;
+	}
 }