diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuKnowledgeNote.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuKnowledgeNote.java index d76e8d7..c125bac 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuKnowledgeNote.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuKnowledgeNote.java @@ -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, "资源中心接口异常"); } diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuScoreController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuScoreController.java index 65b87d5..86ee03f 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuScoreController.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/StuScoreController.java @@ -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 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 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 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) { diff --git a/src/main/java/com/sztzjy/financial_bigdata/resourceCenterAPI/KnowledgeSummaryApi.java b/src/main/java/com/sztzjy/financial_bigdata/resourceCenterAPI/KnowledgeSummaryApi.java index d68fae8..de868e5 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/resourceCenterAPI/KnowledgeSummaryApi.java +++ b/src/main/java/com/sztzjy/financial_bigdata/resourceCenterAPI/KnowledgeSummaryApi.java @@ -30,8 +30,12 @@ public class KnowledgeSummaryApi { .registerTypeAdapter(Date.class, new DateTypeAdapter()) .create(); Type listType = new TypeToken() {}.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; + } } } diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExerciseServiceImpl.java b/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExerciseServiceImpl.java index 809396b..2492979 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExerciseServiceImpl.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExerciseServiceImpl.java @@ -72,7 +72,7 @@ public class ExerciseServiceImpl implements IExerciseService { }else { if(StringUtils.isBlank(bloBs.getLearningEvalAnswer())){ //判断是否提交过 未提交 if(bloBs.getLearningEvalIdlist()==null){ - List objectiveQuestionList = ObjectiveApi.selectObjectQuestionListByChapterId(chapterId); + List 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 stuAnswerList = new ArrayList<>(); BigDecimal learning_eval_score= BigDecimal.valueOf(0); + //记录错题数 + Integer errorCount= 0; List 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){