From f5ac7519e4bc8421e41ef47e777c36e82435d952 Mon Sep 17 00:00:00 2001 From: yang <1175@qq.com> Date: Mon, 23 Sep 2024 18:09:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/StudyExamServiceImpl.java | 81 +++++++++---------- .../impl/StudyHomeWorkServiceImpl.java | 4 + 2 files changed, 42 insertions(+), 43 deletions(-) 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 3a9401d4..b0c151b0 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 @@ -1,24 +1,9 @@ package com.xboe.school.study.service.impl; -import java.time.LocalDateTime; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import javax.annotation.Resource; -import javax.transaction.Transactional; - -import com.xboe.api.ThirdApi; -import com.xboe.core.orm.QueryBuilder; -import com.xboe.school.study.entity.StudyCourse; -import com.xboe.system.user.entity.Message; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; - import com.xboe.common.OrderCondition; import com.xboe.core.orm.FieldFilters; +import com.xboe.core.orm.QueryBuilder; +import com.xboe.core.orm.UpdateBuilder; import com.xboe.module.course.dao.CourseContentDao; import com.xboe.module.course.dao.CourseExamDao; import com.xboe.module.course.entity.CourseExam; @@ -28,6 +13,16 @@ import com.xboe.school.study.dao.StudyExamDao; import com.xboe.school.study.entity.StudyCourseItem; import com.xboe.school.study.entity.StudyExam; import com.xboe.school.study.service.IStudyExamService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.transaction.Transactional; +import java.time.LocalDateTime; +import java.util.List; @Slf4j @Service @@ -73,10 +68,12 @@ public class StudyExamServiceImpl implements IStudyExamService{ exam.setPassLine(0); } - int prog=exam.getScore().intValue()>=exam.getPassLine()?100:exam.getScore().intValue(); //完成处理,判断是否已存在 Object obj=scItemDao.findField("id", FieldFilters.eq("studyId", exam.getStudyId()), FieldFilters.eq("contentId", exam.getContentId())); + //获取本次考试提交,学习状态与学习进度 int status=exam.getScore()>=exam.getPassLine()?StudyCourseItem.STATUS_FINISH:StudyCourseItem.STATUS_STUDYING; + int progress = exam.getScore().intValue() >= exam.getPassLine() ? 100 : 0; + if(obj==null) { StudyCourseItem sci=new StudyCourseItem(); LocalDateTime ldt=LocalDateTime.now(); @@ -85,7 +82,7 @@ public class StudyExamServiceImpl implements IStudyExamService{ //sci.setContentName(homework.getContentName()); sci.setCourseId(exam.getCourseId()); //sci.setCsectionId(homework.getCsectionId()); - sci.setProgress(prog);//直接设置为学习完成 + sci.setProgress(progress);//直接设置为学习完成 sci.setStatus(status);//状态直接更新为已完成 sci.setStartTime(ldt); sci.setAid(exam.getStudentId()); @@ -109,34 +106,32 @@ public class StudyExamServiceImpl implements IStudyExamService{ }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(exam.getScore()>=exam.getPassLine()){ - scItemDao.updateFieldById(exam.getStudyId(), "progress",100); - scItemDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); - scItemDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); - scItemDao.updateFieldById(exam.getStudyId(), "score",exam.getScore()); - //scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); + //最新考试分值 + if (cexam.getScoringType() == CourseExam.SCORINGTYPE_LAST) { + scItemDao.updateMultiFieldById(exam.getStudyItemId(), + UpdateBuilder.create("startTime", exam.getStartTime()), + UpdateBuilder.create("finishTime", LocalDateTime.now()), + UpdateBuilder.create("score", exam.getScore()), + UpdateBuilder.create("progress", progress), + UpdateBuilder.create("status", status) + ); + } + + //最高分 + if (cexam.getScoringType() == CourseExam.SCORINGTYPE_MAX) { + Float maxScore = (Float) dao.findField("max(score)", FieldFilters.eq("contentId", exam.getContentId()), FieldFilters.eq("courseId", exam.getCourseId()), FieldFilters.eq("studyId", exam.getStudyId())); + if (exam.getScore() > maxScore) { + scItemDao.updateMultiFieldById(exam.getStudyItemId(), + UpdateBuilder.create("startTime", exam.getStartTime()), + UpdateBuilder.create("finishTime", LocalDateTime.now()), + UpdateBuilder.create("score", exam.getScore()), + UpdateBuilder.create("progress", progress), + UpdateBuilder.create("status", status) + ); } } } - //1最高一次,用于最高一次的计算 - if(cexam.getScoringType()==CourseExam.SCORINGTYPE_MAX) { - Float f=(Float)dao.findField("max(score)", FieldFilters.eq("contentId", exam.getContentId()), FieldFilters.eq("courseId", exam.getCourseId()), FieldFilters.eq("studyId", exam.getStudyId())); - scItemDao.updateFieldById(exam.getStudyItemId(), "score", f); - scItemDao.updateFieldById(exam.getStudyItemId(), "status", f>=exam.getPassLine()?StudyCourseItem.STATUS_FINISH:StudyCourseItem.STATUS_STUDYING); - scItemDao.updateFieldById(exam.getStudyItemId(), "progress",f>=exam.getPassLine()?100:f.intValue()); - if(f>=exam.getPassLine()){ - scItemDao.updateFieldById(exam.getStudyId(), "progress",100); - scItemDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); - scItemDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); - scItemDao.updateFieldById(exam.getStudyId(), "score",exam.getScore()); - //scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); - } - - } int totalContent = courseContentDao.getCount(exam.getCourseId()); scDao.finishCheck(exam.getStudyId(),exam.getCourseId(),totalContent,token); scDao.updateFieldById(exam.getStudyId(), "last_score",exam.getScore()); diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyHomeWorkServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyHomeWorkServiceImpl.java index 2396d5f8..0471b207 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyHomeWorkServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyHomeWorkServiceImpl.java @@ -64,6 +64,10 @@ public class StudyHomeWorkServiceImpl implements IStudyHomeWorkService{ int totalContent=courseContentDao.count(FieldFilters.eq("courseId", homework.getCourseId()),FieldFilters.eq("deleted",false)); scDao.finishCheck(homework.getStudyId(),homework.getCourseId(),totalContent,token); }else { + StudyCourseItem sci=new StudyCourseItem(); + sci.setId(obj.toString()); + sci.setFinishTime(LocalDateTime.now()); + scItemDao.update(sci); //只是保留一条作业记录,不再保存多条记录了 //dao.save(homework); //设置id。然后进行悠