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 jbo.app.tenwa.doc.LC_COPYFILE_LOG; import org.apache.commons.io.FileUtils; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.JBOFactory; 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 = null ; //目标根目录 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"); 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()+"条数据!!"); }else{ System.out.println("================"+contractNo+"没有关联到文件"+"==============="); } BizObjectManager bom = JBOFactory.getBizObjectManager(LC_COPYFILE_LOG.CLASS_NAME); BizObject nbom = bom.newObject(); nbom.setAttributeValue("CONTRACT_NO", contractNo); nbom.setAttributeValue("BATCH_NO", contractNo); nbom.setAttributeValue("DEST_PATH", destPath); nbom.setAttributeValue("FILE_COUNT", pathList.size()); bom.saveObject(nbom); } 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; } }