Download.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554
  1. package com.uas.main;
  2. import com.jcraft.jsch.JSchException;
  3. import com.uas.util.BaseUtil;
  4. import com.uas.util.FtpUtil;
  5. import com.uas.util.JdbcUtil;
  6. import com.uas.util.SFTPUtil;
  7. import org.apache.commons.net.ftp.FTPClient;
  8. import org.codehaus.jackson.map.ObjectMapper;
  9. import org.dom4j.Document;
  10. import org.dom4j.Element;
  11. import org.dom4j.io.SAXReader;
  12. import java.io.File;
  13. import java.io.FileInputStream;
  14. import java.io.IOException;
  15. import java.io.InputStream;
  16. import java.sql.Connection;
  17. import java.sql.ResultSet;
  18. import java.sql.SQLException;
  19. import java.sql.Statement;
  20. import java.util.*;
  21. public class Download{
  22. public static Boolean checkXmlFileToSqlToEnterprise(File file,String enterprise){
  23. String ent = null;
  24. Element root = getElementRoot(file); //获取根节点
  25. Map<String, String> mainData = getMainData(root); //获取主表数据 {tag:data}
  26. ent = mainData.get("ENTERPRISE");
  27. if (ent==null) {
  28. return true;
  29. }else {
  30. return ent.equals(enterprise);
  31. }
  32. }
  33. /*
  34. * 通过配置解析xml为sql语句
  35. */
  36. public static List<String> parseXmlFileToSqls(File file,Statement statement){
  37. List<String> sqls = new ArrayList<String>();
  38. Statement stm=statement;
  39. String mainTableUpdateSql = null;
  40. String updateDetailConditon = null;
  41. List<Map<String,String>> detailXmlConfig = null;
  42. List<Map<String,String>> detailData = null;
  43. String fileName = file.getName().substring(0, file.getName().indexOf(".")) + ".xml";
  44. String filePrefix = fileName.substring(0,fileName.indexOf("_")+1); //获取文件名前缀
  45. String docType = null;
  46. List<String> logSql = new ArrayList<String>();
  47. Element root = getElementRoot(file); //获取根节点
  48. Map<String, String> mainData = getMainData(root); //获取主表数据 {tag:data}
  49. Element detail = root.element("Detail"); //获取明细节点
  50. if(detail!=null){
  51. detailData = getDetailData(root); //获取明细数据
  52. }
  53. docType = mainData.get("DOC_TYPE"); //文件类型
  54. Map<String,String> xmlConfig = getXmlConfig(statement,docType,filePrefix); //通过文件名前缀查找相应配置
  55. if(xmlConfig.keySet().size()==0){
  56. return null;
  57. }
  58. String caller=xmlConfig.get("xd_caller");
  59. List<Map<String,String>> mainXmlConfig = getXmlConfigDetail(statement,xmlConfig.get("xd_id"),"0",xmlConfig.get("xd_main_conditiontag")); //获取主表的配置
  60. if(xmlConfig.get("xd_detail_conditiontag")!=null&&detailData!=null){
  61. if("Packing".equals(caller)||"Invoice".equals(caller)){
  62. detailXmlConfig = getXmlConfigDetail(statement,xmlConfig.get("xd_id"),"1"); //获取明细表的配置
  63. }else {
  64. detailXmlConfig = getXmlConfigDetail(statement, xmlConfig.get("xd_id"), "1", xmlConfig.get("xd_detail_conditiontag")); //获取明细表的配置
  65. }
  66. }
  67. String updateMainConditon = getUpdateMainCondtion(mainData,xmlConfig); //主表更新条件
  68. updateMainConditon = updateMainConditon.replace(" pi_inoutno='' and ","");//主表更新条件
  69. String maincode = mainData.get(xmlConfig.get("xd_main_conditiontag"));
  70. if(mainXmlConfig.size()>0){
  71. mainTableUpdateSql = getUpdateMainFields(mainData,xmlConfig,mainXmlConfig); //主表更新字段
  72. mainTableUpdateSql += " where " + updateMainConditon;
  73. sqls.add(mainTableUpdateSql);
  74. }
  75. if(detailXmlConfig!=null&&detailXmlConfig.size()>0){
  76. updateDetailConditon = getUpdateDetailConditionByMainTable(mainData,xmlConfig); //明细表跟主表关联更新条件
  77. for(Map<String,String> data:detailData){
  78. String sql = null;
  79. if("Packing".equals(caller)||"Invoice".equals(caller)){
  80. sql = getInsertDetailSql(maincode,data,xmlConfig,detailXmlConfig);
  81. }else{
  82. sql = getUpdateDetailSql(data,xmlConfig,detailXmlConfig) + " and " + updateDetailConditon;
  83. }
  84. sqls.add(sql);
  85. }
  86. }
  87. //记录json数据
  88. logSql = getLogXmlDataAndInterceptorSql(mainData,detailData,xmlConfig,statement,fileName);
  89. sqls.addAll(logSql);
  90. try {
  91. stm.close();
  92. } catch (SQLException e1) {
  93. e1.printStackTrace();
  94. }
  95. return sqls;
  96. }
  97. @SuppressWarnings("finally")
  98. private static List<String> getLogXmlDataAndInterceptorSql(Map<String, String> mainData,List<Map<String,String>> detailData,Map<String,String> xmlConfig,Statement statement,String fileName){
  99. ObjectMapper mapper = new ObjectMapper();
  100. String jsonData = null;
  101. String log = null;
  102. String caller = null;
  103. int id = 0;
  104. ResultSet rs = null;
  105. List<String> sqls = new ArrayList<String>();
  106. try {
  107. jsonData = mapper.writeValueAsString(mainData);
  108. if(detailData!=null){
  109. String detailJsonData = mapper.writeValueAsString(detailData);
  110. jsonData = jsonData.substring(0,jsonData.length()-1) + ",DETAIL:" + detailJsonData + "}";
  111. }
  112. String code = null;
  113. code = mainData.get(xmlConfig.get("xd_main_codexmltag"));
  114. caller = xmlConfig.get("xd_caller");
  115. id = JdbcUtil.getIdBySeq("xmldatalog_seq");
  116. if(!("Packing".equals(caller)||"Invoice".equals(caller))){
  117. log = "insert into xmldatalog(xl_id,xl_data,xl_date,xl_caller,xl_code,xl_from,xl_filename) values ("
  118. + id + ",'"+jsonData.replaceAll("'", "''")+"',sysdate,'"+caller
  119. + "','"+code+"','download','"+fileName+"')";
  120. sqls.add(log);
  121. }else{
  122. //由于packing和invoice回复文件可能字段串过长,暂不存入xl_data
  123. log = "insert into xmldatalog(xl_id,xl_data,xl_date,xl_caller,xl_code,xl_from,xl_filename) values ("
  124. + id + ",null,sysdate,'"+caller
  125. + "','"+code+"','download','"+fileName+"')";
  126. sqls.add(log);
  127. }
  128. if(!("Packing".equals(caller)||"Invoice".equals(caller))){
  129. //common interceptors 主要用于自动过账
  130. rs = statement.executeQuery("select id from interceptors where caller='"+caller+"' "
  131. + "and class_='com.uas.erp.service.common.impl.CommonHandler' "
  132. + "and method='exec_handler' and type='xmltrans' and enable=1");
  133. while(rs.next()){
  134. sqls.add("declare out varchar2(500);begin SP_COMMONHANDLER("+id+"," + rs.getString("id") + ",out);end;");
  135. }
  136. }else {
  137. sqls.add("declare out varchar2(500);begin SP_XMLTEMPPARSE("+id+",'" + caller + "',out);end;");
  138. }
  139. } catch (IOException e) {
  140. e.printStackTrace();
  141. }finally{
  142. return sqls;
  143. }
  144. }
  145. /*
  146. * 获取明细表更新sql
  147. */
  148. public static String getUpdateDetailSql(Map<String, String> data,Map<String,String> xmlConfig,List<Map<String,String>> detailXmlConfig){
  149. StringBuffer sb = new StringBuffer();
  150. String sql = null;
  151. String condition = null;
  152. String resSql = null;
  153. sql = "update " + xmlConfig.get("xd_detailtable") + " set ";
  154. for(Map<String,String> map:detailXmlConfig){
  155. if ("D".equals(map.get("fieldtype"))) {
  156. sb.append("," + map.get("uasfield") + "=to_date('" + data.get(map.get("xmltag"))+ "'," + "'YYYY-MM-DD HH24:mi:ss'" + ")");
  157. } else{
  158. sb.append("," + map.get("uasfield") + "='" + data.get(map.get("xmltag")) + "'");
  159. }
  160. }
  161. condition = getUpdateDetailCondition(data,xmlConfig);
  162. resSql = sql + sb.substring(1,sb.length()) + " where " + condition;
  163. return resSql;
  164. }
  165. /*
  166. * 获取添加临时表数据sql
  167. */
  168. public static String getInsertDetailSql(String maincode,Map<String, String> data,Map<String,String> xmlConfig,List<Map<String,String>> detailXmlConfig){
  169. StringBuffer sb = new StringBuffer();
  170. StringBuffer sb2 =new StringBuffer();
  171. String sql = null;
  172. String resSql = null;
  173. String caller=xmlConfig.get("xd_caller");
  174. sql = "insert into "+xmlConfig.get("xd_detailtable")+" (";
  175. for(Map<String,String> map:detailXmlConfig){
  176. sb.append("," + map.get("uasfield"));
  177. }
  178. if("Packing".equals(caller)){
  179. sb.append(",pdt_piid,pdt_id,pdt_status,pdt_indate) values (");
  180. }else if ("Invoice".equals(caller)){
  181. sb.append(",idt_inid,idt_id,idt_status,idt_indate) values (");
  182. }
  183. sql=sql+sb.substring(1,sb.length());
  184. for(Map<String,String> map:detailXmlConfig){
  185. if ("D".equals(map.get("fieldtype"))) {
  186. sb2.append("," + "=to_date('" + data.get(map.get("xmltag"))+ "'," + "'YYYY-MM-DD HH24:mi:ss'" + ")");
  187. } else if("N".equals(map.get("fieldtype"))){
  188. sb2.append("," + data.get(map.get("xmltag")));
  189. } else{
  190. if (data.get(map.get("xmltag"))==null){
  191. data.put(map.get("xmltag")," ");
  192. }
  193. sb2.append(",'" + data.get(map.get("xmltag")) + "'");
  194. }
  195. }
  196. sb2.append(",(select "+xmlConfig.get("xd_keyfield")+" from "+xmlConfig.get("xd_table")
  197. +" where "+xmlConfig.get("xd_main_conditionfield")+"='"+maincode+"')");
  198. sb2.append(","+xmlConfig.get("xd_detailtable")+"_seq.nextval,'UNPARSE',sysdate)");
  199. resSql=sql+sb2.substring(1,sb2.length());
  200. return resSql;
  201. }
  202. /*
  203. * 获取明细表和主表关联的更新条件
  204. */
  205. public static String getUpdateDetailConditionByMainTable(Map<String, String> mainData,Map<String,String> xmlConfig){
  206. String mainConditionField = xmlConfig.get("xd_main_conditionfield");
  207. String mainConditionTag = xmlConfig.get("xd_main_conditiontag");
  208. String[] fields = mainConditionField.split(",");
  209. String[] tags = mainConditionTag.split(",");
  210. StringBuffer sql = new StringBuffer();
  211. StringBuffer sb = new StringBuffer();
  212. sql.append(xmlConfig.get("xd_detail_foreignkey") + "=(select "+xmlConfig.get("xd_keyfield")+" from "+xmlConfig.get("xd_table")+" where ");
  213. for(int i=0;i<fields.length;i++){
  214. if(mainData.get(tags[i])!=null){
  215. if(sb.length()>0){
  216. sb.append(" and " + fields[i] + "='" + mainData.get(tags[i]) + "'");
  217. }else{
  218. sb.append(" " + fields[i] + "='" + mainData.get(tags[i]) + "'");
  219. }
  220. }
  221. }
  222. sql.append(sb + ")");
  223. return sql.toString();
  224. }
  225. /*
  226. * 获取更新主表字段的sql
  227. */
  228. public static String getUpdateMainFields(Map<String, String> mainData,Map<String,String> xmlConfig,List<Map<String,String>> mainXmlConfig){
  229. StringBuffer sb = new StringBuffer();
  230. String update = "update " + xmlConfig.get("xd_table") + " set ";
  231. for(Map<String,String> map:mainXmlConfig){
  232. if ("D".equals(map.get("fieldtype"))) {
  233. sb.append("," + map.get("uasfield") + "=to_date('" + mainData.get(map.get("xmltag"))+ "'," + "'YYYY-MM-DD HH24:mi:ss'" + ")");
  234. } else{
  235. sb.append("," + map.get("uasfield") + "='" + mainData.get(map.get("xmltag")) + "'");
  236. }
  237. }
  238. return update + sb.substring(1);
  239. }
  240. /*
  241. * 获取主表更新条件
  242. */
  243. public static String getUpdateMainCondtion(Map<String, String> mainData,Map<String,String> xmlConfig){
  244. String mainConditionField = xmlConfig.get("xd_main_conditionfield");
  245. String mainConditionTag = xmlConfig.get("xd_main_conditiontag");
  246. String[] fields = mainConditionField.split(",");
  247. String[] tags = mainConditionTag.split(",");
  248. StringBuffer sb = new StringBuffer();
  249. for(int i=0;i<fields.length;i++){
  250. if(mainData.get(tags[i])!=null){
  251. if(sb.length()>0){
  252. sb.append(" and " + fields[i] + "='" + mainData.get(tags[i]) + "'");
  253. }else{
  254. sb.append(" " + fields[i] + "='" + mainData.get(tags[i]) + "'");
  255. }
  256. }
  257. }
  258. return sb.toString();
  259. }
  260. /*
  261. * 获取更新明细表的条件
  262. */
  263. public static String getUpdateDetailCondition(Map<String, String> mainData,Map<String,String> xmlConfig){
  264. String mainConditionField = xmlConfig.get("xd_detail_conditionfield");
  265. String mainConditionTag = xmlConfig.get("xd_detail_conditiontag");
  266. String[] fields = mainConditionField.split(",");
  267. String[] tags = mainConditionTag.split(",");
  268. StringBuffer sb = new StringBuffer();
  269. for(int i=0;i<fields.length;i++){
  270. if(mainData.get(tags[i])!=null){
  271. if(sb.length()>0){
  272. sb.append(" and " + fields[i] + "='" + mainData.get(tags[i]) + "'");
  273. }else{
  274. sb.append(" " + fields[i] + "='" + mainData.get(tags[i]) + "'");
  275. }
  276. }
  277. }
  278. return sb.toString();
  279. }
  280. /*
  281. * 获取xmldataconfigdetail配置
  282. */
  283. public static List<Map<String,String>> getXmlConfigDetail(Statement statement,String id,String type,String conditiontag){
  284. List<Map<String,String>> list = new ArrayList<Map<String,String>>();
  285. ResultSet rs = null;
  286. try{
  287. rs = statement.executeQuery("select * from xmldataconfigdetail where nvl(uasfield,' ')<>' ' and isdetail="+type+" and xdid=" + id + " and xmltag not in ('" + conditiontag.replaceAll(",", "','") + "')");
  288. while(rs.next()){
  289. Map<String,String> map = new HashMap<String,String>();
  290. map.put("xmltag", rs.getString("xmltag"));
  291. map.put("uasfield", rs.getString("uasfield"));
  292. map.put("fieldtype", rs.getString("fieldtype"));
  293. list.add(map);
  294. }
  295. rs.close();
  296. }catch(SQLException e){
  297. e.printStackTrace();
  298. }
  299. return list;
  300. }
  301. /*
  302. * 获取xmldataconfigdetail配置
  303. */
  304. public static List<Map<String,String>> getXmlConfigDetail(Statement statement,String id,String type){
  305. List<Map<String,String>> list = new ArrayList<Map<String,String>>();
  306. ResultSet rs = null;
  307. try{
  308. rs = statement.executeQuery("select * from xmldataconfigdetail where nvl(uasfield,' ')<>' ' and isdetail="+type+" and xdid=" + id);
  309. while(rs.next()){
  310. Map<String,String> map = new HashMap<String,String>();
  311. map.put("xmltag", rs.getString("xmltag"));
  312. map.put("uasfield", rs.getString("uasfield"));
  313. map.put("fieldtype", rs.getString("fieldtype"));
  314. list.add(map);
  315. }
  316. rs.close();
  317. }catch(SQLException e){
  318. e.printStackTrace();
  319. }
  320. return list;
  321. }
  322. /*
  323. * 获取xmldataconfig配置
  324. */
  325. public static Map<String,String> getXmlConfig(Statement statement,String docType,String filePrefix){
  326. Map<String,String> map = new HashMap<String,String>();
  327. ResultSet rs = null;
  328. try{
  329. if(docType==null){
  330. rs = statement.executeQuery("select * from xmldataconfig where xd_fileprefix='"+ filePrefix + "' and xd_type='DOWNLOAD'");
  331. }else{
  332. rs = statement.executeQuery("select * from xmldataconfig where xd_doctype='"+ docType + "' and xd_type='DOWNLOAD' and xd_fileprefix='"+ filePrefix + "'");
  333. }
  334. if(rs.next()){
  335. map.put("xd_id", rs.getString("xd_id"));
  336. map.put("xd_table", rs.getString("xd_table"));
  337. map.put("xd_detailtable", rs.getString("xd_detailtable"));
  338. map.put("xd_caller", rs.getString("xd_caller"));
  339. map.put("xd_keyfield", rs.getString("xd_keyfield"));
  340. map.put("xd_main_conditiontag", rs.getString("xd_main_conditiontag"));
  341. map.put("xd_main_conditionfield", rs.getString("xd_main_conditionfield"));
  342. map.put("xd_detail_conditiontag", rs.getString("xd_detail_conditiontag"));
  343. map.put("xd_detail_conditionfield", rs.getString("xd_detail_conditionfield"));
  344. map.put("xd_detail_foreignkey", rs.getString("xd_detail_foreignkey"));
  345. map.put("xd_main_codexmltag",rs.getString("xd_main_codexmltag"));
  346. }
  347. rs.close();
  348. }catch(SQLException e){
  349. e.printStackTrace();
  350. }
  351. return map;
  352. }
  353. /*
  354. * 获取根节点
  355. */
  356. public static Element getElementRoot(File file){
  357. Element element = null;
  358. try {
  359. InputStream in = new FileInputStream(file);
  360. SAXReader reader = new SAXReader();
  361. Document doc = reader.read(in);
  362. in.close();
  363. element = doc.getRootElement();
  364. } catch (Exception e) {
  365. e.printStackTrace();
  366. }
  367. return element;
  368. }
  369. /*
  370. * 获取主表数据
  371. */
  372. @SuppressWarnings("unchecked")
  373. private static Map<String, String> getMainData(Element root) {
  374. Map<String, String> data=new HashMap<String,String>();
  375. List<Element> e = root.element("Header").elements();
  376. for(Element el:e){
  377. data.put(el.getName(),el.getData()==null?"":el.getData().toString());
  378. }
  379. return data;
  380. }
  381. /*
  382. * 获取明细表数据
  383. */
  384. @SuppressWarnings("unchecked")
  385. private static List<Map<String, String>> getDetailData(Element root) {
  386. List<Map<String, String>> data=new ArrayList<Map<String,String>>();
  387. List<Element> items = root.element("Detail").elements("Item");
  388. for(Element el:items){
  389. Map<String, String> detail = new HashMap<String,String>();
  390. List<Element> e= el.elements();
  391. for(Element i:e){
  392. detail.put(i.getName(),i.getData()==null?"":i.getData().toString());
  393. }
  394. data.add(detail);
  395. }
  396. return data;
  397. }
  398. public static void downloadRun(){
  399. //联合创泰-富森
  400. downloadByDepotAndSob("N_YITOA_LHCT-FS","N_YITOA_LHCT","聯合創泰科技有限公司");
  401. //联合创泰-顺丰
  402. downloadByDepotAndSob("N_YITOA_LHCT-SF","N_YITOA_LHCT","聯合創泰科技有限公司");
  403. //联合创泰-准时达
  404. downloadByDepotAndSob("N_YITOA_LHCT-ZSD","N_YITOA_LHCT","聯合創泰科技有限公司");
  405. //联合创泰-SLC上海保税仓
  406. downloadByDepotAndSob("N_YITOA_LHCT-SLC","N_YITOA_LHCT","聯合創泰科技有限公司");
  407. //联合创泰-中芯
  408. //downloadByDepotAndSob("N_YITOA_LHCT-ZX","N_YITOA_LHCT","聯合創泰科技有限公司");
  409. //联合创泰-泓明
  410. downloadByDepotAndSob("N_YITOA_LHCT-HM","N_YITOA_LHCT","聯合創泰科技有限公司");
  411. //英唐创泰香港-富森
  412. downloadByDepotAndSob("N_YITOA_LHCT_HK-FS","N_YITOA_LHCT_HK","英唐創泰香港科技有限公司");
  413. }
  414. @SuppressWarnings("unchecked")
  415. public static void downloadByDepotAndSob(String depot,String sob,String enterprise){
  416. BaseUtil.getLogger().info("download xml" + " from "+depot);
  417. FTPClient client = null;
  418. SFTPUtil sftp = null;
  419. List<String> sqls = new ArrayList<String>();
  420. boolean executeRes = false;
  421. Connection connect = null;
  422. try {
  423. Map<String,Object> servMap = JdbcUtil.getFtpConfigs();
  424. Map<String,Object> ftpMap = (Map<String,Object>)servMap.get(depot);
  425. if ("N_YITOA_LHCT-SF".equals(depot)||"N_YITOA_LHCT-ZX".equals(depot)){
  426. sftp = new SFTPUtil(ftpMap.get("user").toString(),ftpMap.get("password").toString(),
  427. ftpMap.get("ip").toString(),
  428. Integer.parseInt(ftpMap.get("port").toString()));
  429. try {
  430. sftp.login();
  431. } catch (JSchException e) {
  432. e.printStackTrace();
  433. }
  434. }else {
  435. client = FtpUtil.connect(ftpMap);
  436. }
  437. if(client!=null||sftp!=null) {
  438. List<File> files = null;
  439. if ("N_YITOA_LHCT-SF".equals(depot)||"N_YITOA_LHCT-ZX".equals(depot)) {
  440. files = sftp.download(ftpMap.get("downloadpath").toString());
  441. }else if("N_YITOA_LHCT-SLC".equals(depot)){
  442. files = FtpUtil.downloadDirFileByType(client, "XML",
  443. ftpMap.get("downloadpath").toString());
  444. }else{
  445. files = FtpUtil.downloadAllFileByType(client, "XML");
  446. }
  447. String fileName = "";
  448. if (files != null && files.size() > 0) {
  449. connect = JdbcUtil.getConnectBySob(sob);
  450. Statement statement = connect.createStatement();
  451. if (connect != null) {
  452. for (File file : files) {
  453. try {
  454. fileName += "," + file.getName();
  455. //判断当前帐套和文件是否一致
  456. if (!checkXmlFileToSqlToEnterprise(file, enterprise)) {
  457. continue;
  458. }
  459. sqls = parseXmlFileToSqls(file, statement);
  460. if (sqls == null) {
  461. continue;
  462. }
  463. executeRes = JdbcUtil.executeSqls(connect, sqls);
  464. if (executeRes) {
  465. if ("N_YITOA_LHCT-SF".equals(depot)) {
  466. String s = file.getName().substring(0, file.getName().indexOf(".")) + ".xml";
  467. Boolean rename = sftp.rename(ftpMap.get("downloadpath").toString() + "/" + s, "goodsreceipt/backup/" + s);
  468. }else if("N_YITOA_LHCT-ZX".equals(depot)){
  469. String s = file.getName().substring(0, file.getName().indexOf(".")) + ".xml";
  470. Boolean rename = sftp.rename(ftpMap.get("downloadpath").toString() + "/" + s,ftpMap.get("downloadpath").toString() + "/bak/" + s);
  471. } else {
  472. //移动处理完的文件到bak文件夹下
  473. client.rename(file.getName(), "bak/" + file.getName());
  474. }
  475. }
  476. statement.close();
  477. } catch (Exception e) {
  478. e.printStackTrace();
  479. BaseUtil.getLogger().error(e.toString());
  480. continue;
  481. }
  482. }
  483. }
  484. if (!"".equals(fileName)) {
  485. BaseUtil.logDownload(fileName.substring(1), ftpMap.get("ip").toString(), ftpMap.get("downloadpath").toString());
  486. }
  487. }
  488. }
  489. } catch (Exception e) {
  490. BaseUtil.getLogger().error(e.toString());
  491. e.printStackTrace();
  492. }finally{
  493. if(client!=null){
  494. FtpUtil.closeFtpClient(client);
  495. client = null;
  496. }
  497. if (sftp!=null){
  498. sftp.logout();
  499. }
  500. //把当前的连接关闭
  501. try {
  502. if(connect!=null){
  503. connect.close();
  504. }
  505. } catch (SQLException e) {
  506. e.printStackTrace();
  507. }finally{
  508. connect = null;
  509. }
  510. }
  511. }
  512. }