学习成绩算分

master
yz 4 months ago
parent 575e6fdffd
commit 8226bd9443

@ -122,6 +122,9 @@ public class StuKnowledgeNote {
TestSysKnowledgeSummary sysKnowledgeSummary = null;
try {
sysKnowledgeSummary = KnowledgeSummaryApi.getSysKnowledgeSummary(courseId, chapterId, schoolId, systemOwner);
if(sysKnowledgeSummary==null){
return new ResultEntity<>(HttpStatus.OK, "无知识概要");
}
} catch (IOException e) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "资源中心接口异常");
}

@ -9,6 +9,7 @@ import com.sztzjy.financial_bigdata.mapper.StuTrainingMapper;
import com.sztzjy.financial_bigdata.mapper.SysWeightMapper;
import com.sztzjy.financial_bigdata.mapper.TrainingReportMapper;
import com.sztzjy.financial_bigdata.resourceCenterAPI.CourseAPI;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.util.ResultEntity;
import com.sztzjy.financial_bigdata.util.file.IFileUtil;
import io.swagger.annotations.Api;
@ -43,13 +44,16 @@ public class StuScoreController {
private SysWeightMapper sysWeightMapper;
@Autowired
private StuTrainingMapper stuTrainingMapper;
@Autowired
ITeaGradeManageService gradeManageService;
@AnonymousAccess
@ApiOperation("***得分情况展示")
@PostMapping("getScoreInfo")
public ResultEntity<StuTrainingDto> getScoreInfo(@RequestParam String userId,
@RequestParam String chapterId,
@RequestParam String schoolId) {
@RequestParam String schoolId,
@RequestParam String systemOwner) {
StuTrainingExample stuTrainingExample = new StuTrainingExample();
stuTrainingExample.createCriteria().andUserIdEqualTo(userId).andChapterIdEqualTo(chapterId);
List<StuTrainingWithBLOBs> stuTrainings = stuTrainingMapper.selectByExampleWithBLOBs(stuTrainingExample);
@ -64,16 +68,80 @@ public class StuScoreController {
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "资源中心根据章节ID查询章节信息失败");
}
SysWeightExample sysWeightExample = new SysWeightExample();
sysWeightExample.createCriteria().andCourseIdEqualTo(sysCourseChapter.getTwoId()).andSchoolIdEqualTo(schoolId);
sysWeightExample.createCriteria().andCourseIdEqualTo(sysCourseChapter.getTwoId()).andSchoolIdEqualTo(schoolId).andSystemOwnerEqualTo(systemOwner);
List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
if (!sysWeights.isEmpty()) {
SysWeight sysWeight = sysWeights.get(0);
BeanUtils.copyProperties(sysWeight, stuTrainingDto); //五个权重
}else {
//设置默认权重
stuTrainingDto.setKnowledgeSummaryDefaultRule(BigDecimal.valueOf(60)); //知识概要默认计分规则 阅读1分钟得60分,1分钟以下不得分多1分钟加10分。
stuTrainingDto.setResourceLearningDefaultRule(BigDecimal.valueOf(60)); //资源学习默认计分规则 观看资源1分钟得60分,1分钟以下不得分多1分钟加10分。
stuTrainingDto.setLearningEvalDefaultRule(BigDecimal.valueOf(10)); //学习测评默认计分规则 客观题10分每道
stuTrainingDto.setExpTrainingDefautRule(BigDecimal.valueOf(2));//实训题,输错/选错次数扣2分最低0分
stuTrainingDto.setKnowledgeSummaryWeight(BigDecimal.valueOf(5));
stuTrainingDto.setResourceLearningWeight(BigDecimal.valueOf(5));
stuTrainingDto.setLearningEvalWeight(BigDecimal.valueOf(20));
stuTrainingDto.setExpTrainingWeight(BigDecimal.valueOf(60));
stuTrainingDto.setReportWeight(BigDecimal.valueOf(10));
}
if (!stuTrainings.isEmpty()) {
StuTrainingWithBLOBs stuTrainingWithBLOBs = stuTrainings.get(0);
BeanUtils.copyProperties(stuTrainingWithBLOBs, stuTrainingDto); //四个完成情况和四个得分
//知识概要得分
Integer knowledgeSummaryCompleteStatus=0;
BigDecimal knowledgeSummaryScore=BigDecimal.ZERO;
if(stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus()!=null && stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus()!=0){
knowledgeSummaryCompleteStatus=stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus();
knowledgeSummaryScore=stuTrainingDto.getKnowledgeSummaryDefaultRule().add(BigDecimal.valueOf((knowledgeSummaryCompleteStatus-1)*10));
if(knowledgeSummaryScore.compareTo(BigDecimal.valueOf(100))>0){
knowledgeSummaryScore= BigDecimal.valueOf(100);
}
knowledgeSummaryScore=knowledgeSummaryScore.multiply(stuTrainingDto.getKnowledgeSummaryWeight().divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_HALF_UP));
}
stuTrainingDto.setKnowledgeSummaryScore(knowledgeSummaryScore);
//资源学习得分
Integer resourceLearningCompleteStatus=0;
BigDecimal resourceLearningScore=BigDecimal.ZERO;
if(stuTrainingWithBLOBs.getResourceLearningCompleteStatus()!=null && stuTrainingWithBLOBs.getResourceLearningCompleteStatus()!=0){
resourceLearningCompleteStatus=stuTrainingWithBLOBs.getResourceLearningCompleteStatus();
resourceLearningScore=stuTrainingDto.getResourceLearningDefaultRule().add(BigDecimal.valueOf((resourceLearningCompleteStatus-1)*10));
if(resourceLearningScore.compareTo(BigDecimal.valueOf(100))>0){
resourceLearningScore= BigDecimal.valueOf(100);
}
resourceLearningScore=resourceLearningScore.multiply(stuTrainingDto.getResourceLearningWeight().divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_HALF_UP));
}
stuTrainingDto.setResourceLearningScore(resourceLearningScore);
//学习评测得分
Integer learningEvalCompleteStatus=0;
BigDecimal learningEvalScore=BigDecimal.ZERO;
if(stuTrainingWithBLOBs.getLearningEvalCompleteStatus()!=null){
learningEvalCompleteStatus=stuTrainingWithBLOBs.getLearningEvalCompleteStatus();
learningEvalScore = BigDecimal.valueOf(100).subtract(stuTrainingDto.getLearningEvalDefaultRule().multiply(BigDecimal.valueOf(learningEvalCompleteStatus)));
if(learningEvalScore.compareTo(BigDecimal.valueOf(0))<0){
learningEvalScore= BigDecimal.valueOf(0);
}
stuTrainingDto.setLearningEvalScore(learningEvalScore.multiply(stuTrainingDto.getLearningEvalWeight().divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_HALF_UP)));
}else {
stuTrainingDto.setLearningEvalScore(learningEvalScore);
}
//实验实训分数计算
Integer expTrainingCompleteStatus=0;
BigDecimal expTrainingScore=BigDecimal.ZERO;
if(stuTrainingWithBLOBs.getExpTrainingCompleteStatus()!=null){
expTrainingCompleteStatus=stuTrainingWithBLOBs.getExpTrainingCompleteStatus();
expTrainingScore = BigDecimal.valueOf(100).subtract(stuTrainingDto.getExpTrainingDefautRule().multiply(BigDecimal.valueOf(expTrainingCompleteStatus)));
if(expTrainingScore.compareTo(BigDecimal.valueOf(0))<0){
expTrainingScore= BigDecimal.valueOf(0);
}
stuTrainingDto.setCaseStuScore(expTrainingScore.multiply(stuTrainingDto.getExpTrainingWeight().divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_HALF_UP)));
}else {
stuTrainingDto.setCaseStuScore(expTrainingScore);
}
TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(stuTrainingWithBLOBs.getReportId());
//设置报告相关数据
if (trainingReport == null || trainingReport.getTeacherScore() == null) {

@ -30,8 +30,12 @@ public class KnowledgeSummaryApi {
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();
Type listType = new TypeToken<TestSysKnowledgeSummary>() {}.getType();
TestSysKnowledgeSummary knowledgeSummarie = gson.fromJson(object.get("respString").toString(), listType);
return knowledgeSummarie;
try {
TestSysKnowledgeSummary knowledgeSummarie = gson.fromJson(object.get("respString").toString(), listType);
return knowledgeSummarie;
}catch (Exception e){
return null;
}
}
}

@ -72,7 +72,7 @@ public class ExerciseServiceImpl implements IExerciseService {
}else {
if(StringUtils.isBlank(bloBs.getLearningEvalAnswer())){ //判断是否提交过 未提交
if(bloBs.getLearningEvalIdlist()==null){
List<SysObjectiveQuestions> objectiveQuestionList = ObjectiveApi.selectObjectQuestionListByChapterId(chapterId);
List<SysObjectiveQuestions> objectiveQuestionList = ObjectiveApi.selectRandomObjectiveByChapterId(chapterId);
for (int i = 0; i < objectiveQuestionList.size(); i++) {
SysObjectiveQuestions objectiveQuestion = objectiveQuestionList.get(i);
String objectiveId = objectiveQuestion.getObjectiveId();
@ -122,6 +122,8 @@ public class ExerciseServiceImpl implements IExerciseService {
// }
List<String> stuAnswerList = new ArrayList<>();
BigDecimal learning_eval_score= BigDecimal.valueOf(0);
//记录错题数
Integer errorCount= 0;
List<String> objectiveIds=new ArrayList<>();
for (int i = 0; i < objectiveQuestionDtoList.size(); i++) {
SysObjectiveQuestionDto sysObjectiveQuestionDto = objectiveQuestionDtoList.get(i);
@ -132,13 +134,15 @@ public class ExerciseServiceImpl implements IExerciseService {
stuAnswerList.add(stuAnswer);
if(answer.equals(stuAnswer)){
learning_eval_score= learning_eval_score.add(objectiveQuestion.getScore());
}else {
errorCount++;
}
objectiveIds.add(objectiveId);
}
StuTrainingWithBLOBs bloBs = stuTrainingWithBLOBs.get(0);
bloBs.setLearningEvalAnswer(String.valueOf(stuAnswerList));
bloBs.setLearningEvalScore(learning_eval_score);
bloBs.setLearningEvalCompleteStatus(1);
bloBs.setLearningEvalCompleteStatus(errorCount);
BigDecimal progress = bloBs.getProgress();
bloBs.setLearningEvalIdlist(String.valueOf(objectiveIds));
if(progress==null){

Loading…
Cancel
Save