Files
nuttyreading-java/src/main/java/com/peanut/modules/job/task/ClassToExamTask.java

71 lines
3.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.peanut.modules.job.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.DateUtils;
import com.peanut.config.DelayQueueConfig;
import com.peanut.modules.common.dao.ClassEntityDao;
import com.peanut.modules.common.dao.ClassModelDao;
import com.peanut.modules.common.entity.ClassEntity;
import com.peanut.modules.common.entity.ClassModel;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component("classToExamTask")
public class ClassToExamTask implements ITask{
@Autowired
private ClassEntityDao classEntityDao;
@Autowired
private ClassModelDao classModelDao;
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void run(String params) {
List<ClassEntity> classEntities = classEntityDao.selectList(new MPJLambdaWrapper<ClassEntity>()
.leftJoin(ClassModel.class,ClassModel::getId,ClassEntity::getModelId)
.selectAll(ClassEntity.class)
.eq(ClassModel::getIsExam,1)
.eq(ClassEntity::getState,1));
for (ClassEntity classEntity : classEntities) {
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()))){
//当天与考试周到达天相同,加入队列
//根据设置的天数将班级状态从进行中设置成考试中
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;
}
}
);
}
}
}
}