TaskRemindingTask.java 3.79 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.task.dal.TaskMapper;
import com.xiniunet.task.dal.TaskUserMapper;
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 TaskRemindingTask {
    @Autowired
    private TaskMapper taskMapper;
    @Autowired
    private TaskUserMapper taskUserMapper;
    @Autowired
    private FoundationService foundationService;

    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, 1);
        Date beginTime = begin.getTime();
        Date endTime = end.getTime();
        logger.info("定时任务-任务定时提醒开始----------------->>>>>>>>>:beginTime:"
                + DateUtil.formatDate(beginTime, "yyyy-MM-dd HH:mm:ss") + ",endTime:"
                + DateUtil.formatDate(endTime, "yyyy-MM-dd HH:mm:ss"));
        List<TaskPO> taskList = taskMapper.findReminding(beginTime, endTime);
        if (taskList != null) {
            for (TaskPO task : taskList) {
                sendMessage(task);
            }
        }
        logger.info("定时任务-任务定时提醒结束----------------->>>>>>>>>:"
                + 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());
        List<Long> receiptIds = new ArrayList<>();
        //查找执行者和抄送者
        TaskUserFindRequest taskUserFindRequest = new TaskUserFindRequest();
        taskUserFindRequest.setTaskId(task.getId());
        List<TaskUserPO> taskPOList = taskUserMapper.find(taskUserFindRequest,passport);
        if(CollectionUtils.isNotEmpty(taskPOList)){
            for(TaskUserPO taskUserPO: taskPOList){
                receiptIds.add(taskUserPO.getUserId());
            }
        }
        if(CollectionUtils.isNotEmpty(receiptIds)){
            String url = "xntalk://rnapp.open/tasklistRN?tenantId=" + passport.getTenantId() + "&taskId=" + task.getId() + "&name=" + task.getOwnerUserName();
            MessageBatchCreateRequest messageBatchCreateRequest = new MessageBatchCreateRequest();
            messageBatchCreateRequest.setBusinessId(task.getId());
            messageBatchCreateRequest.setBusinessType("TASKLIST_TASK");
            messageBatchCreateRequest.setReceiptIds(receiptIds);
            messageBatchCreateRequest.setMessageTitle("任务到时提醒");
            messageBatchCreateRequest.setMessageContent(task.getObjectName());
            messageBatchCreateRequest.setMessageMobileUrl(url);
            messageBatchCreateRequest.setMessageTime(new Date());
            messageBatchCreateRequest.setSendTime(new Date());
            messageBatchCreateRequest.setSenderId(10000L);
            messageBatchCreateRequest.setSenderName("系统管理员");
            foundationService.batchCreateMessage(messageBatchCreateRequest, passport);
        }

    }
}