From e47da2fa7d0f2a3dd440a2d9084d7df00e8f2d1f Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 20 May 2025 09:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E5=88=86=E6=8F=90=E9=86=92=E3=80=81?= =?UTF-8?q?=E9=99=90=E5=88=B6=E4=B8=89=E4=BD=8D=E8=AF=84=E5=88=86=E5=91=98?= =?UTF-8?q?=E6=89=93=E5=88=86=E6=89=8D=E6=9C=89=E6=88=90=E7=BB=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/controller/ClassController.java | 6 + .../modules/common/entity/ClassTask.java | 2 + .../common/service/ClassEntityService.java | 2 + .../service/impl/ClassEntityServiceImpl.java | 131 +++++++++++++++--- 4 files changed, 125 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/controller/ClassController.java b/src/main/java/com/peanut/modules/common/controller/ClassController.java index aa639cfa..34c682e9 100644 --- a/src/main/java/com/peanut/modules/common/controller/ClassController.java +++ b/src/main/java/com/peanut/modules/common/controller/ClassController.java @@ -357,6 +357,12 @@ public class ClassController { return classEntityService.editScore(params); } + //评分提醒 + @RequestMapping("/editScoreRemind") + public R editScoreRemind(){ + return classEntityService.editScoreRemind(); + } + //编辑作业 @RequestMapping("/editClassTaskAndQuesReply") public R editClassTaskAndQuesReply(@RequestBody ClassTaskAndQuesReply classTaskAndQuesReply){ diff --git a/src/main/java/com/peanut/modules/common/entity/ClassTask.java b/src/main/java/com/peanut/modules/common/entity/ClassTask.java index f4d42c14..358e0964 100644 --- a/src/main/java/com/peanut/modules/common/entity/ClassTask.java +++ b/src/main/java/com/peanut/modules/common/entity/ClassTask.java @@ -33,6 +33,8 @@ public class ClassTask { private String img; + private String scoreInfo;//打分情况 + private int scoreSuccess;//已评分人数 private double score;//分数 diff --git a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java index 01bbe2f9..f7ca0a8d 100644 --- a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java +++ b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java @@ -83,6 +83,8 @@ public interface ClassEntityService extends IService { R editScore(Map params); + R editScoreRemind(); + void editClassTaskAndQuesReply(ClassTaskAndQuesReply classTaskAndQuesReply); ClassTaskAndQuesReply getClassTaskAndQuesReplyInfo(Map params); diff --git a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java index a2ee2b4f..dc1b307f 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java @@ -16,6 +16,7 @@ import com.peanut.modules.common.service.UserVipService; import com.peanut.modules.sys.dao.SysUserDao; import com.peanut.modules.sys.entity.SysUserEntity; import com.peanut.modules.sys.service.SysDictDataService; +import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.amqp.core.MessagePostProcessor; @@ -896,7 +897,6 @@ public class ClassEntityServiceImpl extends ServiceImpl() .eq(ClassTaskAndQuesReply::getType,0) .eq(ClassTaskAndQuesReply::getRelationId,classTask.getId()) - .lt(ClassTaskAndQuesReply::getScoreSuccess,2) .notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); Map result = new HashMap<>(); result.put("setGiveHomeWorkNumber",alreadyReply); @@ -1043,8 +1043,37 @@ public class ClassEntityServiceImpl extends ServiceImpl userIdAndScore = new HashMap<>(); + if (StringUtils.isNotEmpty(classTask.getScoreInfo())){ + boolean flag = true; + userIdAndScore = JSON.parseObject(classTask.getScoreInfo()); + for (Map.Entry key : userIdAndScore.entrySet()) { + if (key.equals(ShiroUtils.getUId().toString())){ + flag = false; + key.setValue(score); + } + } + if (flag) { + userIdAndScore.put(""+ShiroUtils.getUId(),score); + } + }else { + userIdAndScore.put(""+ShiroUtils.getUId(),score); + } + scoreInfo = JSON.toJSONString(userIdAndScore); + classTask.setScoreInfo(scoreInfo); + //生成成绩 + Map userIdScore = JSON.parseObject(classTask.getScoreInfo()); + double socre = 0; + for (Map.Entry key : userIdScore.entrySet()) { + socre = socre + Double.valueOf(key.getValue().toString()); + } + socre = socre/userIdScore.size(); + BigDecimal socre2 = new BigDecimal(socre); + socre2 = socre2.setScale(2,RoundingMode.HALF_UP); classTask.setScoreSuccess(classTask.getScoreSuccess()+1); - classTask.setScore(Double.parseDouble(params.get("score").toString())); + classTask.setScore(socre2.doubleValue()); classTaskDao.updateById(classTask); }else { return R.error("此班级状态不能评分"); @@ -1053,7 +1082,6 @@ public class ClassEntityServiceImpl extends ServiceImpl params) { ClassTaskAndQuesReply classTaskAndQuesReply = classTaskAndQuesReplyDao.selectById(params.get("replyId").toString()); ClassEntity classEntity = this.baseMapper.selectById(classTaskAndQuesReply.getClassId()); @@ -1078,7 +1106,6 @@ public class ClassEntityServiceImpl extends ServiceImpl userIdScore = JSON.parseObject(classTaskAndQuesReply.getScoreInfo()); double socre = 0; @@ -1097,6 +1124,66 @@ public class ClassEntityServiceImpl extends ServiceImpl list = classUserDao.selectList(new LambdaQueryWrapper() + .eq(ClassUser::getUserId,ShiroUtils.getUId()) + .eq(ClassUser::getRole,"4")); + StringBuffer sb = new StringBuffer(); + for (ClassUser cu:list){ + ClassEntity classEntity = this.getById(cu.getClassId()); + if (classEntity != null){ + String info = ""; + int task0Replys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getType,0) + .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) + .notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); + if (task0Replys > 0){ + info += "任务"; + } + int quesReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getType,1) + .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) + .notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); + if (quesReplys > 0){ + info += "思考题"; + } + int task1Replys = classTaskDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTask::getClassId,cu.getClassId()) + .eq(ClassTask::getType,1) + .notLike(ClassTask::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); + if (task1Replys > 0){ + info += "医案"; + } + int expReplys = classTaskDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTask::getClassId,cu.getClassId()) + .eq(ClassTask::getType,2) + .notLike(ClassTask::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); + if (expReplys > 0){ + info += "心得"; + } + if (StringUtil.isNotEmpty(info)){ + info = classEntity.getTitle()+"班级"+info+"有新回答"; + sb.append(info+"\n"); + } + } + } + List closeList = classUserDao.selectList(new LambdaQueryWrapper() + .eq(ClassUser::getUserId,ShiroUtils.getUId()) + .in(ClassUser::getRole,1,2)); + for (ClassUser cu:closeList) { + ClassEntity classEntity = this.getById(cu.getClassId()); + if (classEntity != null){ + ClassModel classModel = classModelDao.selectById(classEntity.getModelId()); + if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays()).getTime() + <=new Date().getTime()){ + sb.append(classEntity.getTitle()+"班级结班时间已到\n"); + } + } + } + return R.ok().put("msg",sb.toString()); + } + @Override public void editClassTaskAndQuesReply(ClassTaskAndQuesReply classTaskAndQuesReply) { classTaskAndQuesReplyDao.updateById(classTaskAndQuesReply); @@ -1142,6 +1229,19 @@ public class ClassEntityServiceImpl extends ServiceImpl> replyPage = classTaskAndQuesReplyDao.selectMapsPage(new Page<>(page, limit), replyWrap); + for (Map map:replyPage.getRecords()){ + int alreadyReply = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getType,1) + .eq(ClassTaskAndQuesReply::getRelationId,params.get("classId"))); + int userNoCount = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getType,1) + .eq(ClassTaskAndQuesReply::getRelationId,params.get("classId")) + .notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); + Map result = new HashMap<>(); + result.put("setGiveHomeWorkNumber",alreadyReply); + result.put("userNoCount",userNoCount); + map.put("otherInfo",result); + } return replyPage; } @@ -1198,7 +1298,7 @@ public class ClassEntityServiceImpl extends ServiceImpl questionReplys = classTaskAndQuesReplyDao.selectList(questionWrapper); if (questionReplys.size() > 0) { for (ClassTaskAndQuesReply reply : questionReplys) { - if (reply.getScoreSuccess()>=1){ + if (reply.getScoreSuccess()==3){ questionScore += reply.getScore(); } } @@ -1217,7 +1317,7 @@ public class ClassEntityServiceImpl extends ServiceImpl task0Replys = classTaskAndQuesReplyDao.selectList(task0wrapper); if (task0Replys.size() > 0) { for (ClassTaskAndQuesReply reply : task0Replys) { - if (reply.getScoreSuccess()>1){ + if (reply.getScoreSuccess()==3){ task0Score += reply.getScore(); } } @@ -1236,7 +1336,7 @@ public class ClassEntityServiceImpl extends ServiceImpl task1Replys = classTaskAndQuesReplyDao.selectList(task1wrapper); if (task1Replys.size() > 0) { for (ClassTaskAndQuesReply reply : task1Replys) { - if (reply.getScoreSuccess()>1){ + if (reply.getScoreSuccess()==3){ task1Score += reply.getScore(); } } @@ -1252,7 +1352,7 @@ public class ClassEntityServiceImpl extends ServiceImpl experiences = classTaskDao.selectList(experiencewrapper); if (experiences.size() > 0) { for (ClassTask task : experiences) { - if (task.getScoreSuccess()>=1){ + if (task.getScoreSuccess()==3){ experienceScore += task.getScore(); } } @@ -1428,15 +1528,14 @@ public class ClassEntityServiceImpl extends ServiceImpl0){ return R.error("有学员正在考试,请稍后再试"); } - int taskReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + int task0AndQuesReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) - .eq(ClassTaskAndQuesReply::getType,0) - .lt(ClassTaskAndQuesReply::getScoreSuccess,2)); - int questionReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() - .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) - .eq(ClassTaskAndQuesReply::getType,1) - .eq(ClassTaskAndQuesReply::getScoreSuccess,0)); - if (taskReplys>0||questionReplys>0){ + .lt(ClassTaskAndQuesReply::getScoreSuccess,3)); + int task1AndExpReplys = classTaskDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTask::getClassId,classEntity.getId()) + .ne(ClassTask::getType,0) + .lt(ClassTask::getScoreSuccess,3)); + if (task0AndQuesReplys>0||task1AndExpReplys>0){ return R.error("学员打分未完成,请完成打分后结班"); } classEntity.setState("2");