|
@@ -334,18 +334,19 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
|
|
|
* @param value 系数
|
|
|
* @param examSyncStudentDtoList 源数据
|
|
|
* @param finalList 计算后数据
|
|
|
+ * 备注:AviatorEvaluator.compile(formula).execute(paramMap),paramMap中的参数值不能为String类型
|
|
|
*/
|
|
|
private void calcProgress(FormulaEnum formula, Double value, List<ExamSyncStudentDto> examSyncStudentDtoList, Double maxTotalScore, List<ExamSyncStudentDto> finalList) {
|
|
|
// 公式1(赋值分=卷面成绩+ (100- 卷面成绩)/赋分系数)
|
|
|
if (FormulaEnum.FORMULA1.equals(formula)) {
|
|
|
- // x为卷面成绩,y为赋分系数
|
|
|
- String formula1 = "a+(100-x)/b";
|
|
|
- Map<String, Object> paramMap = new HashMap<>();
|
|
|
- paramMap.put("b", value);
|
|
|
+ // a为卷面成绩,y为赋分系数
|
|
|
+ String formula1 = "a+(100-a)/b";
|
|
|
for (ExamSyncStudentDto studentDto : examSyncStudentDtoList) {
|
|
|
- paramMap.put("a", studentDto.getTotalScore());
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ paramMap.put("a", Double.parseDouble(studentDto.getTotalScore()));
|
|
|
+ paramMap.put("b", value);
|
|
|
String assignScore = AviatorEvaluator.compile(formula1).execute(paramMap).toString();
|
|
|
- studentDto.setAssignScore(assignScore);
|
|
|
+ studentDto.setAssignScore(stripTrailingZeros(assignScore));
|
|
|
finalList.add(studentDto);
|
|
|
}
|
|
|
}
|
|
@@ -369,7 +370,7 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
|
|
|
paramMap.put("a", totalScore.doubleValue());
|
|
|
paramMap.put("b", value);
|
|
|
paramMap.put("c", maxTotalScore.doubleValue());
|
|
|
- paramMap.put("x", maxTotalScore.doubleValue());
|
|
|
+ paramMap.put("x", x);
|
|
|
tempAssignScore = AviatorEvaluator.compile(formula2_1).execute(paramMap).toString();
|
|
|
} else {
|
|
|
paramMap.put("a", totalScore.doubleValue());
|
|
@@ -379,12 +380,16 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
|
|
|
|
|
|
BigDecimal bigDecimal = new BigDecimal(tempAssignScore).setScale(0, RoundingMode.HALF_UP);
|
|
|
String assignScore = bigDecimal.divide(new BigDecimal("2")).toString();
|
|
|
- studentDto.setAssignScore(assignScore);
|
|
|
+ studentDto.setAssignScore(stripTrailingZeros(assignScore));
|
|
|
finalList.add(studentDto);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private String stripTrailingZeros(String value) {
|
|
|
+ return new BigDecimal(value).stripTrailingZeros().toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional
|
|
|
public void saveScoreData(Long schoolId, Long collegeId, Long semesterId, Long examTypeId, Integer examId, List<CloudMarkingScore> cloudMarkingScoreList) {
|
|
|
// 删除旧数据
|