MtPlanCenter.java 2.91 KB
package com.bsth.data.maintenance_plan;

import com.bsth.data.schedule.DayOfSchedule;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.websocket.handler.SendUtils;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * 维修保养计划推送
 * @author Hill
 */
@Component
@EnableScheduling
public class MtPlanCenter implements ApplicationContextAware {

    private static Set<MaintenancePlan> data;

    private static SendUtils sendUtils;

    @Autowired
    private static DayOfSchedule dayOfSchedule;

    /**
     * 车辆自编号 和 最新一条数据对照
     */
    private static Map<String, MaintenancePlan> maintainMap;

    private static Logger logger = LoggerFactory.getLogger(MtPlanCenter.class);

    static {
        data = new HashSet<>();
        maintainMap = new HashMap<>();
    }

    private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
    public static void put(MaintenancePlan maintenancePlan){
        if(!data.contains(maintenancePlan)){
            ScheduleRealInfo scheduleRealInfo = dayOfSchedule.executeCurr(maintenancePlan.getZbh());
            if (scheduleRealInfo != null) {
                maintenancePlan.setLine(scheduleRealInfo.getXlBm());
                maintenancePlan.setLineName(scheduleRealInfo.getXlName());
            }
            //通知客户端
            sendUtils.sendMaintenancePlan(maintenancePlan);
            data.add(maintenancePlan);
            maintainMap.put(maintenancePlan.getZbh(), maintenancePlan);
        }
    }

    public static Set<MaintenancePlan> findAll(){
        return data;
    }

    public static void clear(){
        data = new HashSet<>();
        maintainMap = new HashMap<>();
        logger.info("清除维修保养数据,,,");
    }

    @Scheduled(cron = "0 0 9,12 * * *")
    public void pushMtPlan() {
        for (MaintenancePlan maintenancePlan : data) {
            //通知客户端
            sendUtils.sendMaintenancePlan(maintenancePlan);
        }
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        sendUtils = applicationContext.getBean(SendUtils.class);
        dayOfSchedule = applicationContext.getBean(DayOfSchedule.class);
    }
}