|
|
|
|
@@ -302,11 +302,9 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
classEntity.setState("1");
|
|
|
|
|
Date startTime = new Date();
|
|
|
|
|
classEntity.setStartTime(startTime);
|
|
|
|
|
classEntity.setEndTime(DateUtils.addDateDays(startTime,classModelDao.selectById(classEntity.getModelId()).getDays()));
|
|
|
|
|
this.getBaseMapper().updateById(classEntity);
|
|
|
|
|
if (classModel.getIsExam()==1){
|
|
|
|
|
//根据设置的天数将班级状态从进行中设置成考试中
|
|
|
|
|
@@ -318,6 +316,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);
|
|
|
|
|
@@ -577,6 +588,14 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
|
|
|
|
return this.baseMapper.selectList(wrapper);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ClassEntity getNoOpenClassSameClass(Map<String,Object> params) {
|
|
|
|
|
ClassEntity classEntity = this.baseMapper.selectOne(new LambdaQueryWrapper<ClassEntity>()
|
|
|
|
|
.eq(ClassEntity::getModelId,params.get("modelId"))
|
|
|
|
|
.eq(ClassEntity::getState,"0"));
|
|
|
|
|
return classEntity;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ClassEntity> getClassByCourseIdNoUser(Map<String, Object> params) {
|
|
|
|
|
MPJLambdaWrapper<ClassEntity> wrapper = new MPJLambdaWrapper<>();
|
|
|
|
|
@@ -1009,11 +1028,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
|
|
|
|
questionWrapper.leftJoin(ClassEntity.class,ClassEntity::getModelId,ClassModel::getId);
|
|
|
|
|
questionWrapper.selectAll(ClassTaskAndQuesReply.class);
|
|
|
|
|
questionWrapper.eq(ClassEntity::getId,classEntity.getId());
|
|
|
|
|
if (params.containsKey("userId")){
|
|
|
|
|
questionWrapper.eq(ClassTaskAndQuesReply::getUserId,params.get("userId"));
|
|
|
|
|
}else {
|
|
|
|
|
questionWrapper.eq(ClassTaskAndQuesReply::getUserId,ShiroUtils.getUId());
|
|
|
|
|
}
|
|
|
|
|
questionWrapper.eq(ClassTaskAndQuesReply::getUserId,params.get("userId"));
|
|
|
|
|
questionWrapper.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId());
|
|
|
|
|
List<ClassTaskAndQuesReply> questionReplys = classTaskAndQuesReplyDao.selectList(questionWrapper);
|
|
|
|
|
if (questionReplys.size() > 0) {
|
|
|
|
|
@@ -1032,7 +1047,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
|
|
|
|
task0wrapper.selectAll(ClassTaskAndQuesReply.class);
|
|
|
|
|
task0wrapper.eq(ClassTask::getClassId,classEntity.getId());
|
|
|
|
|
task0wrapper.eq(ClassTask::getType,"0");
|
|
|
|
|
task0wrapper.eq(ClassTaskAndQuesReply::getUserId,ShiroUtils.getUId());
|
|
|
|
|
task0wrapper.eq(ClassTaskAndQuesReply::getUserId,params.get("userId"));
|
|
|
|
|
List<ClassTaskAndQuesReply> task0Replys = classTaskAndQuesReplyDao.selectList(task0wrapper);
|
|
|
|
|
if (task0Replys.size() > 0) {
|
|
|
|
|
for (ClassTaskAndQuesReply reply : task0Replys) {
|
|
|
|
|
@@ -1050,7 +1065,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
|
|
|
|
task1wrapper.selectAll(ClassTaskAndQuesReply.class);
|
|
|
|
|
task1wrapper.eq(ClassTask::getClassId,classEntity.getId());
|
|
|
|
|
task1wrapper.eq(ClassTask::getType,"1");
|
|
|
|
|
task1wrapper.eq(ClassTaskAndQuesReply::getUserId,ShiroUtils.getUId());
|
|
|
|
|
task1wrapper.eq(ClassTaskAndQuesReply::getUserId,params.get("userId"));
|
|
|
|
|
List<ClassTaskAndQuesReply> task1Replys = classTaskAndQuesReplyDao.selectList(task1wrapper);
|
|
|
|
|
if (task1Replys.size() > 0) {
|
|
|
|
|
for (ClassTaskAndQuesReply reply : task1Replys) {
|
|
|
|
|
@@ -1064,7 +1079,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
|
|
|
|
|
if (classModel.getIsExperience()==1){
|
|
|
|
|
double experienceScore = 0;
|
|
|
|
|
MPJLambdaWrapper<ClassTask> experiencewrapper = new MPJLambdaWrapper<>();
|
|
|
|
|
experiencewrapper.eq(ClassTask::getUserId,ShiroUtils.getUId());
|
|
|
|
|
experiencewrapper.eq(ClassTask::getUserId,params.get("userId"));
|
|
|
|
|
experiencewrapper.eq(ClassTask::getClassId,classEntity.getId());
|
|
|
|
|
experiencewrapper.eq(ClassTask::getType,"2");
|
|
|
|
|
List<ClassTask> experiences = classTaskDao.selectList(experiencewrapper);
|
|
|
|
|
@@ -1077,108 +1092,117 @@ 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 usualScore = new BigDecimal(0);
|
|
|
|
|
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);
|
|
|
|
|
usualScore = usualScore.add(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);
|
|
|
|
|
usualScore = usualScore.add(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);
|
|
|
|
|
usualScore = usualScore.add(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);
|
|
|
|
|
usualScore = usualScore.add(experienceScore);
|
|
|
|
|
userScore = userScore.add(experienceScore);
|
|
|
|
|
}
|
|
|
|
|
map.put("usualScore",usualScore);
|
|
|
|
|
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>>() {
|
|
|
|
|
@Override
|
|
|
|
|
public int compare(Map<String,Object> m1, Map<String,Object> m2) {
|
|
|
|
|
if((double)(m2.get("userScore")) > (double)(m1.get("userScore"))){
|
|
|
|
|
return 1;
|
|
|
|
|
}else {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
return ((BigDecimal)m2.get("userScore")).compareTo((BigDecimal)m1.get("userScore"));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|