TaskAnalysis.java 2.6 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 = 20000)
    public void startTask(){
        String today = DateUtil.getTodayBy_yyyyMMdd();
        String readDir = receptDir + "/" + today;


        String backdireByDay =  bakupDir + "/" + today;

        try{
            File fileDirectory = new File(readDir);
                List<File> files = FileTool.readDirectoryFiles(fileDirectory);
                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);
            log.error("解析或其他错误备份文件:"+File.pathSeparator);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}