DownloadFilePathServiceImpl.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.uas.service.Impl;
  2. import com.uas.service.DownloadFilePathService;
  3. import com.uas.util.BaseUtil;
  4. import com.uas.util.FileUtil;
  5. import com.uas.util.FtpUtil;
  6. import com.uas.util.JdbcUtil;
  7. import org.apache.commons.net.ftp.FTPClient;
  8. import org.apache.http.entity.ContentType;
  9. import org.springframework.mock.web.MockMultipartFile;
  10. import org.springframework.scheduling.annotation.Async;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.web.multipart.MultipartFile;
  13. import java.io.File;
  14. import java.io.FileInputStream;
  15. import java.sql.Connection;
  16. import java.sql.SQLException;
  17. import java.sql.Statement;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * @author koul
  22. * @email koul@usoftchina.com
  23. * @date 2020-11-27 10:13
  24. */
  25. @Service
  26. public class DownloadFilePathServiceImpl implements DownloadFilePathService{
  27. @Override
  28. public void runDownloadFilePath(){
  29. //香港华商龙-得尔达-回签单扫描回传
  30. downloadFilePath("N_HUASL_T-DRD","N_HUASL_T");
  31. //香港华商龙-富森-回签单扫描回传
  32. downloadFilePath("N_HUASL_T-FS","N_HUASL_T");
  33. //柏建控股-富森
  34. downloadFilePath("N_BJKG_T-FS","N_BJKG_T");
  35. }
  36. @SuppressWarnings("unchecked")
  37. @Override
  38. @Async("taskExecutor")
  39. public void downloadFilePath(String depot,String sob){
  40. BaseUtil.getLogger().info("downloadFilePath():"+sob+"开始");
  41. FTPClient client = null;
  42. Connection connect = null;
  43. try {
  44. Map<String,Object> servMap = JdbcUtil.getFtpConfigs();
  45. Map<String,Object> ftpMap = (Map<String,Object>)servMap.get(depot);
  46. client = FtpUtil.connect(ftpMap);
  47. if(client!=null) {
  48. String fileName = "";
  49. List<File> files = FtpUtil.downloadFileByDirectory(client,ftpMap.get("file").toString());
  50. if (files != null && files.size() > 0) {
  51. connect = JdbcUtil.getConnectBySob(sob);
  52. if (connect != null) {
  53. for (File file : files) {
  54. try {
  55. fileName += "," + file.getName();
  56. Statement statement = connect.createStatement();
  57. FileInputStream fileInputStream = new FileInputStream(file);
  58. MultipartFile file1 = new MockMultipartFile(file.getName(), file.getName(),
  59. ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
  60. boolean bol = FileUtil.fileUp(statement, file1, sob);
  61. if (bol) {
  62. client.rename(file.getName(), "bak/" + file.getName()); //移动处理完的文件到bak文件夹下
  63. }else {
  64. //移动处理失败的文件到failed文件夹下
  65. client.rename(file.getName(), "failed/" + file.getName());
  66. }
  67. statement.close();
  68. } catch (Exception e) {
  69. BaseUtil.getLogger().error("downloadFilePath():"+e.toString());
  70. e.printStackTrace();
  71. continue;
  72. }
  73. }
  74. }
  75. }
  76. if (!"".equals(fileName)) {
  77. BaseUtil.logDownload(fileName.substring(1), ftpMap.get("ip").toString(), ftpMap.get("file").toString());
  78. }
  79. }
  80. BaseUtil.getLogger().info("downloadFilePath():"+sob+"结束");
  81. } catch (Exception e) {
  82. BaseUtil.getLogger().error(e.toString());
  83. e.printStackTrace();
  84. }finally{
  85. if(client!=null){
  86. FtpUtil.closeFtpClient(client);
  87. client = null;
  88. }
  89. //把当前的连接关闭
  90. try {
  91. if(connect!=null){
  92. connect.close();
  93. }
  94. } catch (SQLException e) {
  95. e.printStackTrace();
  96. }finally{
  97. connect = null;
  98. }
  99. }
  100. }
  101. }