diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java index 39ec0bec..3c367f48 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java @@ -66,9 +66,11 @@ public class StudyExamServiceImpl implements IStudyExamService{ // log.info("------------设置redis-key ,请等待! " + LocalDateTime.now() + ", key = " + redisTemplate.opsForValue().get(key)); //用于计算考试成绩 - CourseExam cexam=cexamDao.get(exam.getTestId()); + CourseExam cexam=cexamDao.get(exam.getTestId()); + int prog=exam.getScore().intValue()>=80?100:exam.getScore().intValue(); //完成处理,判断是否已存在 Object obj=scItemDao.findField("id", FieldFilters.eq("studyId", exam.getStudyId()), FieldFilters.eq("contentId", exam.getContentId())); + int status=exam.getScore()>=80?StudyCourseItem.STATUS_FINISH:StudyCourseItem.STATUS_STUDYING; if(obj==null) { StudyCourseItem sci=new StudyCourseItem(); LocalDateTime ldt=LocalDateTime.now(); @@ -77,8 +79,8 @@ public class StudyExamServiceImpl implements IStudyExamService{ //sci.setContentName(homework.getContentName()); sci.setCourseId(exam.getCourseId()); //sci.setCsectionId(homework.getCsectionId()); - sci.setProgress(100);//直接设置为学习完成 - sci.setStatus(StudyCourseItem.STATUS_FINISH);//状态直接更新为已完成 + sci.setProgress(prog);//直接设置为学习完成 + sci.setStatus(status);//状态直接更新为已完成 sci.setStartTime(ldt); sci.setAid(exam.getStudentId()); sci.setAname(exam.getStudentName()); @@ -97,18 +99,34 @@ public class StudyExamServiceImpl implements IStudyExamService{ // int totalContent=courseContentDao.count(FieldFilters.eq("courseId", exam.getCourseId()),FieldFilters.eq("deleted",false)); int totalContent = courseContentDao.getCount(exam.getCourseId()); scDao.finishCheck(exam.getStudyId(),exam.getCourseId(),totalContent); + }else { exam.setStudyItemId(obj.toString());//此项就是学习条目的id dao.save(exam); if(cexam.getScoringType()==CourseExam.SCORINGTYPE_LAST){ scItemDao.updateFieldById(exam.getStudyItemId(), "score",exam.getScore()); + scItemDao.updateFieldById(exam.getStudyItemId(), "progress",prog); + } + if(prog==100){ + scDao.updateFieldById(exam.getStudyId(), "progress",100.0f); + scDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); + scDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); + scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); } } - + //1最高一次,用于最高一次的计算 if(cexam.getScoringType()==CourseExam.SCORINGTYPE_MAX) { Float f=(Float)dao.findField("max(score)", FieldFilters.eq("contentId", exam.getContentId())); scItemDao.updateFieldById(exam.getStudyItemId(), "score", f); + scItemDao.updateFieldById(exam.getStudyItemId(), "status", f>=80?StudyCourseItem.STATUS_FINISH:StudyCourseItem.STATUS_STUDYING); + scItemDao.updateFieldById(exam.getStudyItemId(), "progress",f>=80?100:f.intValue()); + if(f>=100){ + scDao.updateFieldById(exam.getStudyId(), "progress",100.0f); + scDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); + scDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); + scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); + } } //执行完毕 清除redis记录 // redisTemplate.delete(key);