@@ -68,6 +68,16 @@ public class ScoreCalculateUtil {
// 任选给分
if (ObjectivePolicy.ALL.equals(question.getObjectivePolicy())) {
score = answer.length() == 0 || answer.equals("#") ? 0 : question.getTotalScore();
+ } else if(ObjectivePolicy.PROPORTION.equals(question.getObjectivePolicy())){
+ for (int i = 0; i < answer.length(); i++) {
+ if (!question.getAnswer().contains(String.valueOf(answer.charAt(i)))) {
+ correct = false;
+ break;
+ }
+ if (correct) {
+ score = DoubleUtil.div(DoubleUtil.mul(question.getTotalScore(),answer.length()),question.getAnswer().length(),2);
} else if(ObjectivePolicy.CUSTOMIZE.equals(question.getObjectivePolicy())){
for (int i = 0; i < answer.length(); i++) {
if (!question.getAnswer().contains(String.valueOf(answer.charAt(i)))) {
@@ -5,7 +5,7 @@ package cn.com.qmth.stmms.common.enums;
*
*/
public enum ObjectivePolicy {
- NONE("无", 1), ALL("任选给分", 2), LEAK("漏选给分", 3), CUSTOMIZE("自定义", 4);
+ NONE("无", 1), ALL("任选给分", 2), LEAK("漏选给分", 3), CUSTOMIZE("自定义", 4), PROPORTION("按比例给分", 5);
private String name;
@@ -7,5 +7,5 @@ public class VersionInfo {
public static final String NAME = "1.3.16";
- public static final String DATE = "20240513";
+ public static final String DATE = "20240830";
}
@@ -1,5 +1,6 @@
package cn.com.qmth.stmms.admin.dto;
+import cn.com.qmth.stmms.common.enums.ObjectivePolicy;
import org.apache.commons.lang.StringUtils;
import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
@@ -77,6 +78,9 @@ public class ObjectiveQuestionDTO implements QuestionDTO {
question.setTotalScore(totalScore);
question.setIntervalScore(1d);
question.setType(QuestionType.findByValue(type));
+ if(QuestionType.MULTIPLE.equals(question.getType())){
+ question.setObjectivePolicy(ObjectivePolicy.PROPORTION);
return question;