评分提醒、限制三位评分员打分才有成绩

This commit is contained in:
wuchunlei
2025-05-20 09:41:01 +08:00
parent a0e5c26266
commit e47da2fa7d
4 changed files with 125 additions and 16 deletions

View File

@@ -357,6 +357,12 @@ public class ClassController {
return classEntityService.editScore(params); return classEntityService.editScore(params);
} }
//评分提醒
@RequestMapping("/editScoreRemind")
public R editScoreRemind(){
return classEntityService.editScoreRemind();
}
//编辑作业 //编辑作业
@RequestMapping("/editClassTaskAndQuesReply") @RequestMapping("/editClassTaskAndQuesReply")
public R editClassTaskAndQuesReply(@RequestBody ClassTaskAndQuesReply classTaskAndQuesReply){ public R editClassTaskAndQuesReply(@RequestBody ClassTaskAndQuesReply classTaskAndQuesReply){

View File

@@ -33,6 +33,8 @@ public class ClassTask {
private String img; private String img;
private String scoreInfo;//打分情况
private int scoreSuccess;//已评分人数 private int scoreSuccess;//已评分人数
private double score;//分数 private double score;//分数

View File

@@ -83,6 +83,8 @@ public interface ClassEntityService extends IService<ClassEntity> {
R editScore(Map<String,Object> params); R editScore(Map<String,Object> params);
R editScoreRemind();
void editClassTaskAndQuesReply(ClassTaskAndQuesReply classTaskAndQuesReply); void editClassTaskAndQuesReply(ClassTaskAndQuesReply classTaskAndQuesReply);
ClassTaskAndQuesReply getClassTaskAndQuesReplyInfo(Map<String ,Object> params); ClassTaskAndQuesReply getClassTaskAndQuesReplyInfo(Map<String ,Object> params);

View File

@@ -16,6 +16,7 @@ import com.peanut.modules.common.service.UserVipService;
import com.peanut.modules.sys.dao.SysUserDao; import com.peanut.modules.sys.dao.SysUserDao;
import com.peanut.modules.sys.entity.SysUserEntity; import com.peanut.modules.sys.entity.SysUserEntity;
import com.peanut.modules.sys.service.SysDictDataService; import com.peanut.modules.sys.service.SysDictDataService;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.core.MessagePostProcessor;
@@ -896,7 +897,6 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int userNoCount = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>() int userNoCount = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,0) .eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getRelationId,classTask.getId()) .eq(ClassTaskAndQuesReply::getRelationId,classTask.getId())
.lt(ClassTaskAndQuesReply::getScoreSuccess,2)
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")); .notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
Map<String,Object> result = new HashMap<>(); Map<String,Object> result = new HashMap<>();
result.put("setGiveHomeWorkNumber",alreadyReply); result.put("setGiveHomeWorkNumber",alreadyReply);
@@ -1043,8 +1043,37 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
ClassTask classTask = classTaskDao.selectById(params.get("taskId").toString()); ClassTask classTask = classTaskDao.selectById(params.get("taskId").toString());
ClassEntity classEntity = this.baseMapper.selectById(classTask.getClassId()); ClassEntity classEntity = this.baseMapper.selectById(classTask.getClassId());
if ("1".equals(classEntity.getState())||"3".equals(classEntity.getState())){ if ("1".equals(classEntity.getState())||"3".equals(classEntity.getState())){
String score = params.get("score").toString();
String scoreInfo = "";
Map<String,Object> userIdAndScore = new HashMap<>();
if (StringUtils.isNotEmpty(classTask.getScoreInfo())){
boolean flag = true;
userIdAndScore = JSON.parseObject(classTask.getScoreInfo());
for (Map.Entry<String,Object> 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<String,Object> userIdScore = JSON.parseObject(classTask.getScoreInfo());
double socre = 0;
for (Map.Entry<String,Object> 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.setScoreSuccess(classTask.getScoreSuccess()+1);
classTask.setScore(Double.parseDouble(params.get("score").toString())); classTask.setScore(socre2.doubleValue());
classTaskDao.updateById(classTask); classTaskDao.updateById(classTask);
}else { }else {
return R.error("此班级状态不能评分"); return R.error("此班级状态不能评分");
@@ -1053,7 +1082,6 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
} }
@Override @Override
@Transactional
public R editScore(Map<String, Object> params) { public R editScore(Map<String, Object> params) {
ClassTaskAndQuesReply classTaskAndQuesReply = classTaskAndQuesReplyDao.selectById(params.get("replyId").toString()); ClassTaskAndQuesReply classTaskAndQuesReply = classTaskAndQuesReplyDao.selectById(params.get("replyId").toString());
ClassEntity classEntity = this.baseMapper.selectById(classTaskAndQuesReply.getClassId()); ClassEntity classEntity = this.baseMapper.selectById(classTaskAndQuesReply.getClassId());
@@ -1078,7 +1106,6 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
} }
scoreInfo = JSON.toJSONString(userIdAndScore); scoreInfo = JSON.toJSONString(userIdAndScore);
classTaskAndQuesReply.setScoreInfo(scoreInfo); classTaskAndQuesReply.setScoreInfo(scoreInfo);
classTaskAndQuesReplyDao.updateById(classTaskAndQuesReply);
//生成成绩 //生成成绩
Map<String,Object> userIdScore = JSON.parseObject(classTaskAndQuesReply.getScoreInfo()); Map<String,Object> userIdScore = JSON.parseObject(classTaskAndQuesReply.getScoreInfo());
double socre = 0; double socre = 0;
@@ -1097,6 +1124,66 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
return R.ok(); return R.ok();
} }
@Override
public R editScoreRemind() {
List<ClassUser> list = classUserDao.selectList(new LambdaQueryWrapper<ClassUser>()
.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<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
if (task0Replys > 0){
info += "任务";
}
int quesReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,1)
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
if (quesReplys > 0){
info += "思考题";
}
int task1Replys = classTaskDao.selectCount(new LambdaQueryWrapper<ClassTask>()
.eq(ClassTask::getClassId,cu.getClassId())
.eq(ClassTask::getType,1)
.notLike(ClassTask::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
if (task1Replys > 0){
info += "医案";
}
int expReplys = classTaskDao.selectCount(new LambdaQueryWrapper<ClassTask>()
.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<ClassUser> closeList = classUserDao.selectList(new LambdaQueryWrapper<ClassUser>()
.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 @Override
public void editClassTaskAndQuesReply(ClassTaskAndQuesReply classTaskAndQuesReply) { public void editClassTaskAndQuesReply(ClassTaskAndQuesReply classTaskAndQuesReply) {
classTaskAndQuesReplyDao.updateById(classTaskAndQuesReply); classTaskAndQuesReplyDao.updateById(classTaskAndQuesReply);
@@ -1142,6 +1229,19 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
replyWrap.selectAs(CourseCatalogueChapterEntity::getQuestions,"questions"); replyWrap.selectAs(CourseCatalogueChapterEntity::getQuestions,"questions");
replyWrap.orderByAsc(ClassTaskAndQuesReply::getScoreSuccess); replyWrap.orderByAsc(ClassTaskAndQuesReply::getScoreSuccess);
Page<Map<String,Object>> replyPage = classTaskAndQuesReplyDao.selectMapsPage(new Page<>(page, limit), replyWrap); Page<Map<String,Object>> replyPage = classTaskAndQuesReplyDao.selectMapsPage(new Page<>(page, limit), replyWrap);
for (Map<String,Object> map:replyPage.getRecords()){
int alreadyReply = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,1)
.eq(ClassTaskAndQuesReply::getRelationId,params.get("classId")));
int userNoCount = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,1)
.eq(ClassTaskAndQuesReply::getRelationId,params.get("classId"))
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
Map<String,Object> result = new HashMap<>();
result.put("setGiveHomeWorkNumber",alreadyReply);
result.put("userNoCount",userNoCount);
map.put("otherInfo",result);
}
return replyPage; return replyPage;
} }
@@ -1198,7 +1298,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
List<ClassTaskAndQuesReply> questionReplys = classTaskAndQuesReplyDao.selectList(questionWrapper); List<ClassTaskAndQuesReply> questionReplys = classTaskAndQuesReplyDao.selectList(questionWrapper);
if (questionReplys.size() > 0) { if (questionReplys.size() > 0) {
for (ClassTaskAndQuesReply reply : questionReplys) { for (ClassTaskAndQuesReply reply : questionReplys) {
if (reply.getScoreSuccess()>=1){ if (reply.getScoreSuccess()==3){
questionScore += reply.getScore(); questionScore += reply.getScore();
} }
} }
@@ -1217,7 +1317,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
List<ClassTaskAndQuesReply> task0Replys = classTaskAndQuesReplyDao.selectList(task0wrapper); List<ClassTaskAndQuesReply> task0Replys = classTaskAndQuesReplyDao.selectList(task0wrapper);
if (task0Replys.size() > 0) { if (task0Replys.size() > 0) {
for (ClassTaskAndQuesReply reply : task0Replys) { for (ClassTaskAndQuesReply reply : task0Replys) {
if (reply.getScoreSuccess()>1){ if (reply.getScoreSuccess()==3){
task0Score += reply.getScore(); task0Score += reply.getScore();
} }
} }
@@ -1236,7 +1336,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
List<ClassTaskAndQuesReply> task1Replys = classTaskAndQuesReplyDao.selectList(task1wrapper); List<ClassTaskAndQuesReply> task1Replys = classTaskAndQuesReplyDao.selectList(task1wrapper);
if (task1Replys.size() > 0) { if (task1Replys.size() > 0) {
for (ClassTaskAndQuesReply reply : task1Replys) { for (ClassTaskAndQuesReply reply : task1Replys) {
if (reply.getScoreSuccess()>1){ if (reply.getScoreSuccess()==3){
task1Score += reply.getScore(); task1Score += reply.getScore();
} }
} }
@@ -1252,7 +1352,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
List<ClassTask> experiences = classTaskDao.selectList(experiencewrapper); List<ClassTask> experiences = classTaskDao.selectList(experiencewrapper);
if (experiences.size() > 0) { if (experiences.size() > 0) {
for (ClassTask task : experiences) { for (ClassTask task : experiences) {
if (task.getScoreSuccess()>=1){ if (task.getScoreSuccess()==3){
experienceScore += task.getScore(); experienceScore += task.getScore();
} }
} }
@@ -1428,15 +1528,14 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
if (classExamUsers>0){ if (classExamUsers>0){
return R.error("有学员正在考试,请稍后再试"); return R.error("有学员正在考试,请稍后再试");
} }
int taskReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>() int task0AndQuesReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.eq(ClassTaskAndQuesReply::getType,0) .lt(ClassTaskAndQuesReply::getScoreSuccess,3));
.lt(ClassTaskAndQuesReply::getScoreSuccess,2)); int task1AndExpReplys = classTaskDao.selectCount(new LambdaQueryWrapper<ClassTask>()
int questionReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>() .eq(ClassTask::getClassId,classEntity.getId())
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) .ne(ClassTask::getType,0)
.eq(ClassTaskAndQuesReply::getType,1) .lt(ClassTask::getScoreSuccess,3));
.eq(ClassTaskAndQuesReply::getScoreSuccess,0)); if (task0AndQuesReplys>0||task1AndExpReplys>0){
if (taskReplys>0||questionReplys>0){
return R.error("学员打分未完成,请完成打分后结班"); return R.error("学员打分未完成,请完成打分后结班");
} }
classEntity.setState("2"); classEntity.setState("2");