结班限制
个人成绩
This commit is contained in:
@@ -318,6 +318,19 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
||||
);
|
||||
}
|
||||
}else {
|
||||
//结班限制
|
||||
int classExamUsers = classExamUserDao.selectCount(new LambdaQueryWrapper<ClassExamUser>()
|
||||
.eq(ClassExamUser::getClassId,classEntity.getId())
|
||||
.eq(ClassExamUser::getScoreSuccess,0));
|
||||
if (classExamUsers>0){
|
||||
return R.error("有学员正在考试,请稍后再试");
|
||||
}
|
||||
int replys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
|
||||
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
|
||||
.eq(ClassTaskAndQuesReply::getScoreSuccess,0));
|
||||
if (replys>0){
|
||||
return R.error("学员打分未完成,请完成打分后结班");
|
||||
}
|
||||
classEntity.setState("2");
|
||||
classEntity.setEndTime(new Date());
|
||||
this.getBaseMapper().updateById(classEntity);
|
||||
@@ -1077,98 +1090,105 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
||||
}
|
||||
map.put("experienceScore",experienceScore);
|
||||
}
|
||||
|
||||
//处理分数占比
|
||||
if (classModel.getIsExam()==1){
|
||||
List<Map<String,Object>> classExamUsers = classExamUserDao.selectMaps(new MPJLambdaWrapper<ClassExamUser>()
|
||||
.eq(ClassExamUser::getUserId,params.get("userId").toString())
|
||||
.eq(ClassExamUser::getClassId,classEntity.getId())
|
||||
.eq(ClassExamUser::getScoreSuccess,1)
|
||||
.selectAs(ClassExamUser::getId,"id")
|
||||
.selectAs(ClassExamUser::getScore,"score")
|
||||
.orderByAsc(ClassExamUser::getStartTime));
|
||||
int examScore = 0;
|
||||
if (classExamUsers.size() > 0){
|
||||
for (Map<String,Object> classExamUser:classExamUsers){
|
||||
if ((int)classExamUser.get("score")>examScore){
|
||||
examScore = (int)classExamUser.get("score");
|
||||
}
|
||||
}
|
||||
}
|
||||
map.put("examScore",examScore);
|
||||
map.put("classExamUsers",classExamUsers);
|
||||
}
|
||||
BigDecimal userScore = new BigDecimal(0);;
|
||||
double staticScore = 2.5;
|
||||
if(classModel.getIsExam()==1){
|
||||
BigDecimal examScore = new BigDecimal(map.get("examScore").toString());
|
||||
map.put("examScore",examScore);
|
||||
userScore = userScore.add(examScore);
|
||||
}
|
||||
if(classModel.getIsQuestion()==1){
|
||||
BigDecimal questionScore = new BigDecimal(map.get("questionScore").toString());
|
||||
if (questionScore.compareTo(new BigDecimal(0))!=0){
|
||||
MPJLambdaWrapper<CourseCatalogueChapterEntity> wrapper = new MPJLambdaWrapper();
|
||||
wrapper.leftJoin(ClassCourse.class,ClassCourse::getCourseId,CourseCatalogueChapterEntity::getCourseId);
|
||||
wrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassCourse::getModelId);
|
||||
wrapper.eq(ClassModel::getId,classModel.getId());
|
||||
wrapper.ne(CourseCatalogueChapterEntity::getQuestions,"");
|
||||
int count = courseCatalogueChapterDao.selectCount(wrapper);
|
||||
BigDecimal totalScore = new BigDecimal(staticScore*count);
|
||||
questionScore = questionScore.divide(totalScore);
|
||||
questionScore = questionScore.multiply(new BigDecimal(classModel.getQuestionScore()));
|
||||
questionScore = questionScore.setScale(2,RoundingMode.HALF_UP);
|
||||
map.put("questionScore",questionScore);
|
||||
userScore = userScore.add(questionScore);
|
||||
}
|
||||
}
|
||||
if(classModel.getIsTask()==1){
|
||||
BigDecimal task0Score = new BigDecimal(map.get("task0Score").toString());
|
||||
if (task0Score.compareTo(new BigDecimal(0))!=0){
|
||||
MPJLambdaWrapper<ClassTask> wrapper = new MPJLambdaWrapper();
|
||||
wrapper.eq(ClassTask::getClassId,classEntity.getId());
|
||||
wrapper.eq(ClassTask::getType,"0");
|
||||
int count = classTaskDao.selectCount(wrapper);
|
||||
BigDecimal totalScore = new BigDecimal(staticScore*count);
|
||||
task0Score = task0Score.divide(totalScore);
|
||||
task0Score = task0Score.multiply(new BigDecimal(classModel.getTaskScore()));
|
||||
task0Score = task0Score.setScale(2,RoundingMode.HALF_UP);
|
||||
map.put("task0Score",task0Score);
|
||||
userScore = userScore.add(task0Score);
|
||||
}
|
||||
}
|
||||
if(classModel.getIsMedicalcase()==1){
|
||||
BigDecimal task1Score = new BigDecimal(map.get("task1Score").toString());
|
||||
if (task1Score.compareTo(new BigDecimal(0))!=0){
|
||||
MPJLambdaWrapper<ClassTask> wrapper = new MPJLambdaWrapper();
|
||||
wrapper.eq(ClassTask::getClassId,classEntity.getId());
|
||||
wrapper.eq(ClassTask::getType,"1");
|
||||
int count = classTaskDao.selectCount(wrapper);
|
||||
BigDecimal totalScore = new BigDecimal(staticScore*count);
|
||||
task1Score = task1Score.divide(totalScore);
|
||||
task1Score = task1Score.multiply(new BigDecimal(classModel.getMedicalcaseScore()));
|
||||
task1Score = task1Score.setScale(2,RoundingMode.HALF_UP);
|
||||
map.put("task1Score",task1Score);
|
||||
userScore = userScore.add(task1Score);
|
||||
}
|
||||
}
|
||||
if(classModel.getIsExperience()==1){
|
||||
BigDecimal experienceScore = new BigDecimal(map.get("experienceScore").toString());
|
||||
if (experienceScore.compareTo(new BigDecimal(classModel.getExperienceScore()))>-1){
|
||||
experienceScore = new BigDecimal(classModel.getExperienceScore());
|
||||
}
|
||||
map.put("experienceScore",experienceScore);
|
||||
userScore = userScore.add(experienceScore);
|
||||
}
|
||||
map.put("userScore",userScore);
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List userScoreList(Map<String, Object> params) {
|
||||
ClassEntity classEntity = this.getBaseMapper().selectById(params.get("classId").toString());
|
||||
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
|
||||
List<ClassUser> classUsers = classUserDao.selectList(new LambdaQueryWrapper<ClassUser>()
|
||||
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0"));
|
||||
List<Map<String,Object>> resultList = new ArrayList<>();
|
||||
if (classUsers.size() > 0){
|
||||
for (ClassUser classUser:classUsers){
|
||||
params.put("userId",classUser.getUserId());
|
||||
Map<String,Object> map = getUserScore(params);
|
||||
Map<String, Object> map = getUserScore(params);
|
||||
map.put("user",myUserDao.selectById(classUser.getUserId()));
|
||||
if (classModel.getIsExam()==1){
|
||||
List<Map<String,Object>> classExamUsers = classExamUserDao.selectMaps(new MPJLambdaWrapper<ClassExamUser>()
|
||||
.eq(ClassExamUser::getUserId,classUser.getUserId())
|
||||
.eq(ClassExamUser::getClassId,classEntity.getId())
|
||||
.eq(ClassExamUser::getScoreSuccess,1)
|
||||
.selectAs(ClassExamUser::getId,"id")
|
||||
.selectAs(ClassExamUser::getScore,"score")
|
||||
.orderByAsc(ClassExamUser::getStartTime));
|
||||
int examScore = 0;
|
||||
if (classExamUsers.size() > 0){
|
||||
for (Map<String,Object> classExamUser:classExamUsers){
|
||||
if ((int)classExamUser.get("score")>examScore){
|
||||
examScore = (int)classExamUser.get("score");
|
||||
}
|
||||
}
|
||||
}
|
||||
map.put("examScore",examScore);
|
||||
map.put("classExamUsers",classExamUsers);
|
||||
}
|
||||
//处理分数占比
|
||||
BigDecimal userScore = new BigDecimal(0);;
|
||||
double staticScore = 2.5;
|
||||
if(classModel.getIsExam()==1){
|
||||
BigDecimal examScore = new BigDecimal(map.get("examScore").toString());
|
||||
map.put("examScore",examScore);
|
||||
userScore = userScore.add(examScore);
|
||||
}
|
||||
if(classModel.getIsQuestion()==1){
|
||||
BigDecimal questionScore = new BigDecimal(map.get("questionScore").toString());
|
||||
MPJLambdaWrapper<CourseCatalogueChapterEntity> wrapper = new MPJLambdaWrapper();
|
||||
wrapper.leftJoin(ClassCourse.class,ClassCourse::getCourseId,CourseCatalogueChapterEntity::getCourseId);
|
||||
wrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassCourse::getModelId);
|
||||
wrapper.eq(ClassModel::getId,classModel.getId());
|
||||
wrapper.ne(CourseCatalogueChapterEntity::getQuestions,"");
|
||||
int count = courseCatalogueChapterDao.selectCount(wrapper);
|
||||
BigDecimal totalScore = new BigDecimal(staticScore*count);
|
||||
questionScore = questionScore.divide(totalScore);
|
||||
questionScore = questionScore.multiply(new BigDecimal(classModel.getQuestionScore()));
|
||||
questionScore = questionScore.setScale(2,RoundingMode.HALF_UP);
|
||||
map.put("questionScore",questionScore);
|
||||
userScore = userScore.add(questionScore);
|
||||
}
|
||||
if(classModel.getIsTask()==1){
|
||||
BigDecimal task0Score = new BigDecimal(map.get("task0Score").toString());
|
||||
MPJLambdaWrapper<ClassTask> wrapper = new MPJLambdaWrapper();
|
||||
wrapper.eq(ClassTask::getClassId,classEntity.getId());
|
||||
wrapper.eq(ClassTask::getType,"0");
|
||||
int count = classTaskDao.selectCount(wrapper);
|
||||
BigDecimal totalScore = new BigDecimal(staticScore*count);
|
||||
task0Score = task0Score.divide(totalScore);
|
||||
task0Score = task0Score.multiply(new BigDecimal(classModel.getTaskScore()));
|
||||
task0Score = task0Score.setScale(2,RoundingMode.HALF_UP);
|
||||
map.put("task0Score",task0Score);
|
||||
userScore = userScore.add(task0Score);
|
||||
}
|
||||
if(classModel.getIsMedicalcase()==1){
|
||||
BigDecimal task1Score = new BigDecimal(map.get("task1Score").toString());
|
||||
MPJLambdaWrapper<ClassTask> wrapper = new MPJLambdaWrapper();
|
||||
wrapper.eq(ClassTask::getClassId,classEntity.getId());
|
||||
wrapper.eq(ClassTask::getType,"1");
|
||||
int count = classTaskDao.selectCount(wrapper);
|
||||
BigDecimal totalScore = new BigDecimal(staticScore*count);
|
||||
task1Score = task1Score.divide(totalScore);
|
||||
task1Score = task1Score.multiply(new BigDecimal(classModel.getMedicalcaseScore()));
|
||||
task1Score = task1Score.setScale(2,RoundingMode.HALF_UP);
|
||||
map.put("task1Score",task1Score);
|
||||
userScore = userScore.add(task1Score);
|
||||
}
|
||||
if(classModel.getIsExperience()==1){
|
||||
BigDecimal experienceScore = new BigDecimal(map.get("experienceScore").toString());
|
||||
if (experienceScore.compareTo(new BigDecimal(classModel.getExperienceScore()))>-1){
|
||||
experienceScore = new BigDecimal(classModel.getExperienceScore());
|
||||
}
|
||||
map.put("experienceScore",experienceScore);
|
||||
userScore = userScore.add(experienceScore);
|
||||
}
|
||||
map.put("userScore",userScore);
|
||||
resultList.add(map);
|
||||
}
|
||||
Collections.sort(resultList, new Comparator<Map<String,Object>>() {
|
||||
|
||||
Reference in New Issue
Block a user