20250702添加新规则,考试周时间按整点计算

This commit is contained in:
wuchunlei
2025-07-02 13:50:59 +08:00
parent 6a77daa0d1
commit 85d1fec512
4 changed files with 67 additions and 23 deletions

View File

@@ -50,6 +50,8 @@ public class ClassEntity {
@TableField(exist = false)
private List<Map<String,Object>> classUsers;
@TableField(exist = false)
private Date studyEndTime;
@TableField(exist = false)
private Date examStartTime;
@TableField(exist = false)
private Date examEndTime;

View File

@@ -218,8 +218,22 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
}
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
classEntity.setClassModel(classModel);
classEntity.setExamStartTime(classEntity.getStartTime()==null?null:DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()));
classEntity.setExamEndTime(classEntity.getStartTime()==null?null:DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays()));
//20250702添加新规则考试周时间按整点计算
if(classEntity.getStartTime()!=null&&classModel.getIsExam()==1&&
DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime()
>DateUtils.stringToDate("2025-07-02","yyyy-MM-dd").getTime()){
// classEntity.setStartTime(DateUtils.stringToDate(DateUtils.format(classEntity.getStartTime()),"yyyy-MM-dd"));
Date studyEndTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()-1);
classEntity.setStudyEndTime(DateUtils.stringToDate(DateUtils.format(studyEndTime)+" 23:59:59","yyyy-MM-dd HH:mm:ss"));
Date examStartTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays());
classEntity.setExamStartTime(DateUtils.stringToDate(DateUtils.format(examStartTime),"yyyy-MM-dd"));
Date examEndTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()-1+classModel.getExamDays());
classEntity.setExamEndTime(DateUtils.stringToDate(DateUtils.format(examEndTime)+" 23:59:59","yyyy-MM-dd HH:mm:ss"));
}else if (classEntity.getStartTime()!=null&&classModel.getIsExam()==1){
classEntity.setStudyEndTime(DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()));
classEntity.setExamStartTime(DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()));
classEntity.setExamEndTime(DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays()));
}
MPJLambdaWrapper<ClassUser> userWrapper = new MPJLambdaWrapper<>();
userWrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,ClassUser::getUserId);
userWrapper.select("t.role,t.user_id as userId,t1.tel,t1.name,t1.nickname");
@@ -1193,11 +1207,21 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
.in(ClassUser::getRole,1,2));
for (ClassUser cu:closeList) {
ClassEntity classEntity = this.getById(cu.getClassId());
if (classEntity != null&&!"2".equals(classEntity.getState())){
if (classEntity != null&&"3".equals(classEntity.getState())){
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays()).getTime()
<=new Date().getTime()){
sb.append(classEntity.getTitle()+"班级结班时间已到\n");
//20250702添加新规则考试周时间按整点计算
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime()
>DateUtils.stringToDate("2025-07-02","yyyy-MM-dd").getTime()){
Date examEndTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()-1+classModel.getExamDays());
examEndTime = DateUtils.stringToDate(DateUtils.format(examEndTime)+" 23:59:59","yyyy-MM-dd HH:mm:ss");
if (examEndTime.getTime()<=new Date().getTime()){
sb.append(classEntity.getTitle()+"班级结班时间已到\n");
}
}else {
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays()).getTime()
<=new Date().getTime()){
sb.append(classEntity.getTitle()+"班级结班时间已到\n");
}
}
}
}
@@ -1562,7 +1586,15 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
return R.error("已结班");
}
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime() > new Date().getTime()){
//考试周开始时间
Date startExamTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays());
//20250702添加新规则考试周时间按整点计算
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime()
>DateUtils.stringToDate("2025-07-02","yyyy-MM-dd").getTime()){
startExamTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays());
startExamTime = DateUtils.stringToDate(DateUtils.format(startExamTime),"yyyy-MM-dd");
}
if (startExamTime.getTime() > new Date().getTime()){
return R.error("教学时间未完");
}
//结班限制

View File

@@ -158,8 +158,14 @@ public class ClassExamServiceImpl extends ServiceImpl<ClassExamDao, ClassExam> i
if ("1".equals(params.get("type").toString())){
ClassEntity classEntity = classEntityDao.selectById(params.get("relationId").toString());
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
if ("3".equals(classEntity.getState())&&
DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays()).getTime()<new Date().getTime()){
Date examEndTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()+classModel.getExamDays());
//20250702添加新规则考试周时间按整点计算
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime()
>DateUtils.stringToDate("2025-07-02","yyyy-MM-dd").getTime()){
examEndTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()-1+classModel.getExamDays());
examEndTime = DateUtils.stringToDate(DateUtils.format(examEndTime)+" 23:59:59","yyyy-MM-dd HH:mm:ss");
}
if ("3".equals(classEntity.getState())&&examEndTime.getTime()<new Date().getTime()){
return R.error("考试周已结束,等待结班");
}
examTime = classModel.getExamTime();//考试持续时间

View File

@@ -39,26 +39,30 @@ public class ClassToExamTask implements ITask{
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
//考试周开始时间
Date startExamTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays());
//20250702添加新规则考试周时间按整点计算
if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime()
>DateUtils.stringToDate("2025-07-02","yyyy-MM-dd").getTime()){
startExamTime = DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays());
startExamTime = DateUtils.stringToDate(DateUtils.format(startExamTime),"yyyy-MM-dd");
}
if (startExamTime.getTime()<=new Date().getTime()){//已到考试周,调整小班状态为考试周
classEntity.setState("3");
classEntityDao.updateById(classEntity);
}else if (DateUtils.format(startExamTime).equals(DateUtils.format(new Date()))){
//当天与考试周到达天相同,加入队列
if (classModel.getIsExam()==1){
//根据设置的天数将班级状态从进行中设置成考试中
rabbitTemplate.convertAndSend(
DelayQueueConfig.COMMON_EXCHANGE,
DelayQueueConfig.COMMON_ROUTING_KEY,
"examDays" + "," + classEntity.getId(),
new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setDelay((int)(startExamTime.getTime()-new Date().getTime()));
return message;
}
//根据设置的天数将班级状态从进行中设置成考试中
rabbitTemplate.convertAndSend(
DelayQueueConfig.COMMON_EXCHANGE,
DelayQueueConfig.COMMON_ROUTING_KEY,
"examDays" + "," + classEntity.getId(),
new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setDelay((int)(DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime()-new Date().getTime()));
return message;
}
);
}
}
);
}
}
}