TaskCheckIsOverdueTask.java 2.81 KB
package com.xiniunet.quartz;

import com.alibaba.dubbo.common.utils.CollectionUtils;
import com.xiniunet.foundation.request.MessageBatchCreateRequest;
import com.xiniunet.foundation.service.FoundationService;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.framework.util.DateUtil;
import com.xiniunet.framework.util.MQUtil;
import com.xiniunet.task.dal.TaskMapper;
import com.xiniunet.task.dal.TaskUserMapper;
import com.xiniunet.task.message.TaskAutoOverdueMessage;
import com.xiniunet.task.po.TaskPO;
import com.xiniunet.task.po.TaskUserPO;
import com.xiniunet.task.request.TaskUserFindRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * Created on 2018/1/5.
 *
 * @author 薛磊
 * @since 1.0.0
 */
@Component
public class TaskCheckIsOverdueTask {
    @Autowired
    private TaskMapper taskMapper;

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 每半小时检查一次是否有快过期的任务,抛送延时消息处理
     */
    public void execute(){
        Calendar begin = Calendar.getInstance();
        Calendar end = Calendar.getInstance();
        begin.set(Calendar.SECOND, 0);
        end.set(Calendar.SECOND, 0);
        end.add(Calendar.MINUTE, 30);
        Date beginTime = begin.getTime();
        Date endTime = end.getTime();
        logger.warn("定时任务-检查是否有快过期的任务开始----------------->>>>>>>>>:beginTime:"
                + DateUtil.formatDate(beginTime, "yyyy-MM-dd HH:mm:ss") + ",endTime:"
                + DateUtil.formatDate(endTime, "yyyy-MM-dd HH:mm:ss"));
        List<TaskPO> taskList = taskMapper.findWillOverdue(beginTime, endTime);
        if (taskList != null) {
            for (TaskPO task : taskList) {
                sendMessage(task);
            }
        }
        logger.warn("定时任务-检查是否有快过期的任务结束----------------->>>>>>>>>:"
                + DateUtil.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
    }

    private void sendMessage(TaskPO task) {
        Passport passport = new Passport();
        passport.setTenantId(task.getTenantId());
        passport.setUserId(task.getDoUserId());

        //发送自动逾期的消息
        TaskAutoOverdueMessage taskAutoOverdueMessage = new TaskAutoOverdueMessage();
        taskAutoOverdueMessage.setId(task.getId());
        taskAutoOverdueMessage.setPassport(passport);
        taskAutoOverdueMessage.setDelayTime(((int)task.getEndTime().getTime()-(int)(new Date()).getTime()));
        if(!MQUtil.send(taskAutoOverdueMessage)){
            logger.warn("发送自动逾期的消息失败!");
        }
    }
}