TaskRemindJob.java 5.1 KB
package com.skua.modules.equipment.quartz;

import com.alibaba.fastjson.JSONObject;
import com.skua.core.util.ConvertUtils;
import com.skua.core.util.push.MessageEntity;
import com.skua.modules.equipment.service.IEquipmentMaintainTaskService;
import com.skua.modules.inspection.service.IInspectionTaskService;
import com.skua.modules.system.entity.SysUser;
import com.skua.modules.system.service.ISysUserService;
import com.skua.modules.system.service.WebNoticePushServiceExt;
import com.skua.modules.system.service.impl.SysUserServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @program: skboot
 * @description: 人员任务提醒定时任务
 * @author: zhanglei
 * @create: 2025/03/08 16:05:05
 */
@Slf4j
@Component
public class TaskRemindJob implements Job {

    @Autowired
    private IEquipmentMaintainTaskService equipmentMaintainTaskService;

    @Autowired
    private WebNoticePushServiceExt webNoticePushServiceExt;

    @Autowired
    private IInspectionTaskService inspectionTaskService;
    @Autowired
    private ISysUserService sysUserService;

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        log.info("人员任务提醒定时任务开始");
        //当前时间
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //一小时后时间
        LocalDateTime oneHourLater = now.plus(1, ChronoUnit.HOURS);
        String startTime = now.format(formatter);
        String endTime = oneHourLater.format(formatter);
        List<Map<String, Object>> wbList = getWbList(startTime,endTime);
        //推送维保消息
        pushWbMessage(wbList);
        //巡检记录
        List<JSONObject> inspectionTaskList = inspectionTaskService.getInspectionTaskList();
        //推送巡检消息
        pushInspectionMessage(inspectionTaskList);

        log.info("人员任务提醒定时任务结束");
    }

    private boolean pushInspectionMessage(List<JSONObject> inspectionTaskList) {
        List<SysUser> userList = sysUserService.list();
        Map<String,String> cidMap = new HashMap<>();
        for (SysUser sysUser : userList) {
            if(ConvertUtils.isNotEmpty(sysUser.getCid())){
                cidMap.put(sysUser.getId(), sysUser.getCid());
            }
        }
        for (JSONObject inspectionTask : inspectionTaskList){
            //获取用户列表后做消息推送
            List<String> userIds = new ArrayList<>();
            userIds.add(inspectionTask.get("taskStartUser").toString());
            if(cidMap.get(inspectionTask.get("taskStartUser").toString()) != null){
                List<String> userCIds = new ArrayList<>();
                userCIds.add(cidMap.get(inspectionTask.get("taskStartUser").toString()));
                MessageEntity messageEntity = new MessageEntity();
                messageEntity.setMessageTitle("任务提醒消息");
                messageEntity.setMessageBody("您有一条【" + inspectionTask.get("planName") + "】巡检任务需要完成,请及时处理");
                messageEntity.setReceiveUser(userIds);
                messageEntity.setReceiveUserCid(userCIds);
                messageEntity.setSendUser("系统");
                messageEntity.setForwardTag("2");
                webNoticePushServiceExt.pushMessage(messageEntity, "inspection", "M");
            }
        }
        return true;
    }

    private boolean pushWbMessage(List<Map<String, Object>> wbList) {
        for (Map<String, Object> wbMap : wbList) {
            //获取用户列表后做消息推送
            List<String> userIds = new ArrayList<>();
            userIds.add(wbMap.get("userId").toString());
            List<String> userCIds = new ArrayList<>();
            userCIds.add(wbMap.get("cid").toString());
            MessageEntity messageEntity = new MessageEntity();
            messageEntity.setMessageTitle("任务提醒消息");
            messageEntity.setMessageBody("您有一条【" + wbMap.get("taskName") + "】维保任务需要完成,请及时处理");
            messageEntity.setReceiveUser(userIds);
            messageEntity.setReceiveUserCid(userCIds);
            messageEntity.setSendUser("系统");
            messageEntity.setForwardTag("2");
            webNoticePushServiceExt.pushMessage(messageEntity, "maintain", "M");
        }
        return true;
    }

    //maintain_plan_name 计划名称' maintainer_id` 维保人
    private List<Map<String, Object>> getWbList(String startTime, String endTime) {
        List<Map<String, Object>> list = new ArrayList<>();
        list = equipmentMaintainTaskService.getList(startTime, endTime);
        return list;
    }


}