TaskAnalysis.java 2.5 KB
package com.tianbo.analysis.task;

import com.tianbo.util.Date.DateUtil;
import com.tianbo.util.IO.FileTool;
import com.tianbo.analysis.handle.CustomXmlHandle;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.File;
import java.util.Iterator;
import java.util.List;

/**
 * 回执解析定时任务
 */
@Slf4j
@Component
public class TaskAnalysis {

    //回执读取目录
    @Value("${custom.receptDirectory}")
    private  String receptDir;

    //备份目录
    @Value("${custom.receptBakDir}")
    private String bakupDir;

    //解析出错转移目录
    @Value("${custom.errBakDir}")
    private String errBakDir;



    @Scheduled(fixedDelay = 5000)
    public void startTask(){
        String today = DateUtil.getTodayBy_yyyyMMdd();
        String readDir = receptDir + "/" + today;
        log.info("回执读取目录:"+readDir);
        String backdireByDay =  bakupDir + "/" + today;

        try{
            List<File> files = FileTool.readDirectoryFiles(new File(readDir));
            Iterator<File> it = files.iterator();
            while(it.hasNext()){
                File file = it.next();
                try {
                    //解析
                    int i = new CustomXmlHandle().handelXmlDocument(file);
                    //操作成功,则转移剪切解析文件到备份目录,否则转移到error目录备份
                    if(i>0){
                        File bakupDirectory = new File(backdireByDay);
                        FileUtils.moveFileToDirectory(file,bakupDirectory,true);
                    }else {
                        errBak(file);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                    log.error("解析回执出错",e);
                    errBak(file);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            log.error("获取目录文件出错",e);
        }

    }

    public void errBak(File file){
        try {
            String today = DateUtil.getTodayBy_yyyyMMdd();
            String errDirByDay = errBakDir + "/" + today;
            File berrDirectory = new File(errDirByDay);
            FileUtils.moveFileToDirectory(file,berrDirectory,true);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}