Merge remote-tracking branch 'origin/zcc'

This commit is contained in:
wangjinlei
2024-09-11 10:43:02 +08:00
6 changed files with 134 additions and 102 deletions

View File

@@ -179,6 +179,12 @@ public class ClassController {
return R.ok().put("result",classEntityService.getClassInfo(params)); return R.ok().put("result",classEntityService.getClassInfo(params));
} }
//同一小班未开班小班
@RequestMapping("/getNoOpenClassSameClass")
public R getNoOpenClassSameClass(@RequestBody Map<String,Object> params){
return R.ok().put("result",classEntityService.getNoOpenClassSameClass(params));
}
//查询未加入小班 //查询未加入小班
@RequestMapping("/getClassNoUser") @RequestMapping("/getClassNoUser")
public R getClassNoUser(){ public R getClassNoUser(){

View File

@@ -50,7 +50,7 @@ public class ClassExamController {
while (it.hasNext()) { while (it.hasNext()) {
Map.Entry<String, String> entry = it.next(); Map.Entry<String, String> entry = it.next();
String pos = entry.getKey(); String pos = entry.getKey();
String rowNo = pos.substring(1); String rowNo = pos.replaceAll("[a-zA-Z]", "");
count = Integer.parseInt(rowNo); count = Integer.parseInt(rowNo);
// System.out.println(pos + ";" + entry.getValue()); // System.out.println(pos + ";" + entry.getValue());
} }

View File

@@ -41,6 +41,8 @@ public interface ClassEntityService extends IService<ClassEntity> {
List<ClassEntity> getClassNoUser(); List<ClassEntity> getClassNoUser();
ClassEntity getNoOpenClassSameClass(Map<String,Object> params);
List<ClassEntity> getClassByCourseIdNoUser(Map<String ,Object> params); List<ClassEntity> getClassByCourseIdNoUser(Map<String ,Object> params);
ClassEntity getClassByUser(Map<String, Object> params); ClassEntity getClassByUser(Map<String, Object> params);

View File

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

View File

@@ -157,10 +157,10 @@ public class ClassExamServiceImpl extends ServiceImpl<ClassExamDao, ClassExam> i
List<Map<String,Object>> sList = new ArrayList<>(); List<Map<String,Object>> sList = new ArrayList<>();
List<Map<String,Object>> mList = new ArrayList<>(); List<Map<String,Object>> mList = new ArrayList<>();
if (courseList.size() > 0) { if (courseList.size() > 0) {
// int stotal = 60;//单选题总数 int stotal = 60;//单选题总数
// int mtotal = 40;//多选题总数 int mtotal = 40;//多选题总数
int stotal = 5;//单选题总数 // int stotal = 5;//单选题总数
int mtotal = 5;//多选题总数 // int mtotal = 5;//多选题总数
int snum = (int)Math.floor(stotal/courseList.size()); int snum = (int)Math.floor(stotal/courseList.size());
int mnum = (int)Math.floor(mtotal/courseList.size()); int mnum = (int)Math.floor(mtotal/courseList.size());
for (ClassCourse classCourse:courseList){ for (ClassCourse classCourse:courseList){
@@ -229,7 +229,7 @@ public class ClassExamServiceImpl extends ServiceImpl<ClassExamDao, ClassExam> i
DelayQueueConfig.COMMON_EXCHANGE, DelayQueueConfig.COMMON_EXCHANGE,
DelayQueueConfig.COMMON_ROUTING_KEY, DelayQueueConfig.COMMON_ROUTING_KEY,
"examSubmit"+","+classExamUser.getId(), "examSubmit"+","+classExamUser.getId(),
messagePostProcessor(60*60*1000+10000)//10秒延迟 messagePostProcessor(2*60*60*1000+3000)//3秒延迟
); );
return R.ok().put("examPaper",resultList).put("id",classExamUser.getId()).put("startTime",classExamUser.getStartTime()); return R.ok().put("examPaper",resultList).put("id",classExamUser.getId()).put("startTime",classExamUser.getStartTime());

View File

@@ -315,11 +315,11 @@ public class AliPayServiceImpl implements AliPayService {
} }
return "success"; return "success";
} }
log.info(">>>>>>>>>>验签失败"); log.error(">>>>>>>>>>验签失败 params = {}", params.toString());
return "fail"; return "fail";
} catch (Exception e) { } catch (Exception e) {
log.info(">>>>>>>>>>订单回调异常: 订单号 = {}, msg = {}", params.get("out_trade_no"), e.getMessage()); log.error(">>>>>>>>>>订单回调异常: 订单号 = {}, msg = {}", params.toString(), e.getMessage());
return "fail"; return "fail";
} }
} }