package com.ums.bke.param.mchntorvsns.acc;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPListParseEngine;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import com.huateng.common.util.SpringUtil;
import com.ums.bke.param.mchntorvsns.model.MchntPrvsns;
import com.ums.bke.param.mchntorvsns.service.MchntPrvsnsService;
/**
* desc:商户备付金,累计控制类
*
*
* @version SVN $Revision: 1.1 $ $Date: Aug 16, 2013 2:05:02 PM $
*/
public class MchntPrvsnsAcc{
Logger log = Logger.getLogger(MchntPrvsnsAcc.class);
@Autowired
private static MchntPrvsnsService service;
static{
service = SpringUtil.getBean("mchntPrvsnsService");
}
String host,username,password,path;
int port;
/**
* 取得路径
* @return
*/
public void getConfigRemote(){
ResourceBundle bundle = ResourceBundle.getBundle("ftp");//src下的ftp.properties
host = bundle.getString("mchnt.prvsns.host");
port = Integer.parseInt(bundle.getString("mchnt.prvsns.port"));
username = bundle.getString("mchnt.prvsns.username");
password = bundle.getString("mchnt.prvsns.password");
path = bundle.getString("mchnt.prvsns.dir");
}
/**
* 取得远程文件名(所携带的信息)
*/
public void readFile2Acc() throws Exception{
this.getConfigRemote();
try {
//连接FTP
FTPClient ftpClient = new FTPClient();
ftpClient.connect(host, port);
ftpClient.setControlEncoding("GBK");
if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
if (!ftpClient.login(username, password)) {
throw new Exception("FTP不能连接主机:" + host);
}
}
//分页读取文件
FTPListParseEngine engine = ftpClient.initiateListParsing(path);
while(engine.hasNext()){
FTPFile[] ftpFiles = engine.getNext(100);
if(ftpFiles != null && ftpFiles.length > 0){
MchntPrvsns prvsns = new MchntPrvsns();
for(FTPFile file : ftpFiles){
//携带的信息:文件名为INX商户号X帐号X流水号X入账金额 [0:IN,1:商户号,2:账号,3:流水号,4:金额]
String info = file.getName();
//System.out.println("==================>>" + info);
if(info != null && info.startsWith("IN")){
//取到的文件修改名称
//boolean renameRt = ftpClient.rename(path + File.separator +info, path + File.separator + "OK_" + info);
boolean renameRt = ftpClient.rename(path + "/" +info, path + "/" + "OK_" + info);
if(renameRt){
String[] msgs = info.split("X");
if(msgs != null && msgs.length == 5){
/*
prvsns.setMchntId(msgs[1]);
//根据商户号查询本记录
prvsns = service.findByMchntId(prvsns);
if(prvsns != null){
//更新账号
prvsns.setAccoutNo(msgs[2]);
service.updateAccountNo(prvsns);
//流水号不一致
if(!msgs[3].equals(prvsns.getLastBatchNo())){
prvsns.setAccoutAmt(msgs[4]);
service.update(prvsns);
}
}else{
//新增
prvsns = new MchntPrvsns();
prvsns.setMchntId(msgs[1]);
prvsns.setAccoutNo(msgs[2]);
prvsns.setLastBatchNo(msgs[3]);
prvsns.setAccoutAmt(msgs[4]);
Date d = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String ds = sdf.format(d);
prvsns.setPayItem("定时任务");
prvsns.setUseType("02");
prvsns.setAreaCode("0000");
prvsns.setAddAreaCode("0000");
prvsns.setPayFlag("2");
prvsns.setValideDate("000");
prvsns.setMaxCtlAmt("0");
prvsns.setMinCtlAmt("0");
prvsns.setSumPayAmt("0");
prvsns.setFreezeAmt("0");
//日期范围
String startWith = ds.substring(0, 8);
String endWith = (Integer.parseInt(ds.substring(0, 4)) + 3) + ds.substring(4, 8);
prvsns.setDateRange(startWith + "-" + endWith);
service.insert(prvsns);
}*/
//注入service,出现异常回滚
service.doExecute(msgs, prvsns);
}
}else{
log.error("【商户备付金定时任务】文件:" + info + "重命名失败,将不进行累计操作!");
}
}
}
}
}
if (ftpClient.isConnected()) {
ftpClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
log.equals(e);
throw e;
}
}
}
FTP分页读取文件
最新推荐文章于 2023-09-18 20:44:35 发布