package com.yaochen.boss.job.unuse; import java.io.File; import java.util.ArrayList; import java.util.List; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.yaochen.boss.commons.BankFileParser; import com.yaochen.boss.commons.BankFileUtil; import com.yaochen.boss.commons.FtpUtil; import com.yaochen.boss.commons.FtpUtilBuilder; import com.yaochen.boss.job.component.BusiComponent; import com.yaochen.myquartz.Job2; import com.yaochen.myquartz.Job2ExecutionContext; import com.ycsoft.beans.core.bank.CBankAgree; import com.ycsoft.beans.core.bank.CBankReturn; /** * 定时从FTP下载银行回扣文件 * * @author Tom */ @Service public class BankFileSyncJob implements Job2 { private final Logger logger = LoggerFactory.getLogger(getClass()); private BusiComponent busiComponent; private FtpUtilBuilder ftpBuilder; @Override public void execute(Job2ExecutionContext context) throws JobExecutionException { logger.info("定时同步FTP文件[" + ftpBuilder.getRemoteBankPath() + "]"); FtpUtil ftp = ftpBuilder.buildFtpUtil(); ftp.login(); downLoadfile(ftp); ftp.logout(); file26ToDd(); file25ToDb(); moveOtherFileToHistory(); } private void moveOtherFileToHistory() { BankFileUtil.moveToHistory(ftpBuilder.getLocalDownloadPath(),ftpBuilder.getLocalHistoryPath(),BankFileUtil.HISTORY_11_SUFFIX); BankFileUtil.moveToHistory(ftpBuilder.getLocalDownloadPath(),ftpBuilder.getLocalHistoryPath(),BankFileUtil.HISTORY_14_SUFFIX); BankFileUtil.moveToHistory(ftpBuilder.getLocalDownloadPath(),ftpBuilder.getLocalHistoryPath(),BankFileUtil.HISTORY_87_SUFFIX); } private void downLoadfile(FtpUtil ftp) { String localPath = ftpBuilder.getLocalDownloadPath(); String remotePath = ftpBuilder.getRemoteBankPath(); ftp.downLoadDirectory(localPath, remotePath, true); } private void file25ToDb() { BankFileParser bankParser = new BankFileParser(); File[] bankFiles = bankParser.list25BankFiles(ftpBuilder .getLocalDownloadPath()); try { for (File bankfile : bankFiles) { List<CBankReturn> bankList; bankList = bankParser.readAndParser25(bankfile); busiComponent.saveBankReturn(bankList); // 移除到历史 BankFileUtil.moveTo25History(bankfile, ftpBuilder.getLocalHistoryPath()); } } catch (Exception e) { e.printStackTrace(); } } private void file26ToDd() { BankFileParser bankParser = new BankFileParser(); File[] bankFiles = bankParser.list26BankFiles(ftpBuilder .getLocalDownloadPath()); if (bankFiles == null) return; List<List<CBankAgree>> fileList = new ArrayList<List<CBankAgree>>(); for (File bankfile : bankFiles) { System.out.println(bankfile.getName()); try { List<CBankAgree> bankList = bankParser .readAndParser26(bankfile); // 保存文件信息到数据库 busiComponent.savebankagree(bankList); fileList.add(bankList); // 移除到历史 BankFileUtil.moveTo26History(bankfile, ftpBuilder.getLocalHistoryPath()); } catch (Exception e) { BankFileUtil.moveToErrorHistory(bankfile, ftpBuilder .getLocalHistoryPath()); logger.info(bankfile.getName() + " 已移除到错误目录"); } } } public void setFtpBuilder(FtpUtilBuilder ftpBuilder) { this.ftpBuilder = ftpBuilder; } public void setBusiComponent(BusiComponent busiComponent) { this.busiComponent = busiComponent; } }