package com.tenwa.reckon.copydata; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.io.FileUtils; import com.amarsoft.awe.Configure; import com.amarsoft.awe.util.Transaction; import com.tenwa.comm.util.jboutil.DataOperatorUtil; public class FileCopyToOtherPath { private String contractNos; public String getContractNo() { return contractNos; } public void setContractNos(String contractNos) { this.contractNos = contractNos; } public String doCopy(String contractNo){ Transaction Sqlca = Transaction.createTransaction("als"); //原路径 String srcPath ; //目标相对路径 String destPath ; //目标根目录 String rootPath; try { Configure config = Configure.getInstance(); rootPath = config.getConfigure("FileCopyPath"); String sql = "SELECT O.FULLPATH AS FULLPATH, CONCAT(LCI.CONTRACT_NO, '/', LDL.ONE_CLASSIFY, '/' , LDL.DOC_NAME, '/', O.FILENAME) AS TARGET_FILE_PATH FROM LB_DOCATTRIBUTE O" +" LEFT JOIN LB_DOCLIBRARY LDL ON LDL.ID = O.LIBRARY_ID" +" LEFT JOIN LB_DOCRELATIVE LDR ON LDL.RELATIVE_ID = LDR.ID" +" LEFT JOIN LB_CONTRACT_INFO LCI ON LDR.CONTRACT_ID = LCI.ID" +" WHERE LCI.CONTRACT_NO ='"+contractNo+"'"; Map params=new HashMap(); List> pathList = DataOperatorUtil.getDataBySql(Sqlca,sql,params); if(pathList.size()>0){ for(Map path:pathList){ srcPath = path.get("FULLPATH"); destPath =rootPath+"/"+path.get("TARGET_FILE_PATH"); System.out.println("srcPath="+srcPath); System.out.println("destPath="+destPath); File srcFile = new File(srcPath); File destFile = new File(destPath); try { //文件拷贝,true为最后修改时间不变,fail为当前时间. //拷贝时如果目标文件已存在,则会从新覆盖。 FileUtils.copyFile(srcFile, destFile, true); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("合同"+contractNo+"一共有"+pathList.size()+"条数据!!"); } catch (Exception e) { e.printStackTrace(); return contractNo; } return "Y"; } public String copyFile(){ String failNo=""; List cns = Arrays.asList(contractNos.split("@")); for(String contractNo:cns){ if("".equals(contractNo)||contractNo==null){ continue; } String result = doCopy(contractNo); if(!"Y".equals(result)){ failNo+=contractNo+";"; } } if("".equals(failNo)){ return "SUCCESS"; } return failNo; } }