DirectivesPstThread.java 2.25 KB
package com.bsth.data.directive;

import com.bsth.data.schedule.DayOfSchedule;
import com.bsth.entity.directive.D60;
import com.bsth.entity.directive.D64;
import com.bsth.entity.directive.Directive;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.repository.directive.D60Repository;
import com.bsth.repository.directive.D64Repository;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.LinkedList;

/**
 * 指令持久化线程
 * Created by panzhao on 2017/3/6.
 */
@Component
public class DirectivesPstThread extends Thread {

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

    @Autowired
    D60Repository d60Repository;

    @Autowired
    D64Repository d64Repository;

    @Autowired
    DayOfSchedule dayOfSchedule;

    private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");

    @Override
    public void run() {

        LinkedList<Directive> list = DayOfDirectives.pstDirectives;

        Directive directive;
        for (int i = 0; i < 1000; i++) {
            try {
                directive = list.poll();

                if (directive instanceof D60) {
                    D60 d60 = (D60) directive;
                    if(d60.isDispatch()){
                        ScheduleRealInfo sch = d60.getSch();
                        //如果关联的班次已经不存在了,放弃入库
                        if(sch.isDeleted()){
                            logger.warn("save 指令,发现 deleted=true 的班次,id=" + sch.getId());
                            continue;
                        }
                    }
                    //日期
                    d60.setRq(fmtyyyyMMdd.print(d60.getTimestamp()));
                    d60Repository.save(d60);
                }

                if (directive instanceof D64) {
                    d64Repository.save((D64) directive);
                }
            } catch (Exception e) {
                logger.error("", e);
            }
        }
    }
}