Browse Source

档案管理-存储备份-打包最新数据功能

qianxb 1 year ago
parent
commit
24242bb945
16 changed files with 315 additions and 31 deletions
  1. 111 0
      blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  2. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java
  3. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java
  4. 6 0
      blade-service/blade-archive/pom.xml
  5. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/config/sqliteConfig.java
  6. 3 3
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveOfflineVersionInfoController.java
  7. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveOfflineVersionInfoMapper.xml
  8. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveOfflineVersionInfoService.java
  9. 153 3
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveOfflineVersionInfoServiceImpl.java
  10. 8 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  11. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  12. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  13. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java
  14. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java
  15. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml
  16. 3 22
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

+ 111 - 0
blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@@ -8,11 +8,14 @@ import java.io.*;
 import java.math.BigDecimal;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.URLConnection;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
 /**
  * 通用工具类
@@ -206,5 +209,113 @@ public class CommonUtil {
                 .collect(Collectors.toList());
     }
 
+    /**
+     * 流写入文件
+     *
+     * @param inputStream 文件输入流
+     * @param file        输出文件
+     */
+    public static void inputStreamToFile(InputStream inputStream, File file) {
+        try {
+            OutputStream os = new FileOutputStream(file);
+            int bytesRead = 0;
+            byte[] buffer = new byte[8192];
+            while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
+                os.write(buffer, 0, bytesRead);
+            }
+            os.close();
+            inputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 删除文件夹下所有文件
+     * @param path
+     * @return
+     */
+    public static boolean deleteDir(String path) {
+        File file = new File(path);
+        if (!file.exists()) {//判断是否待删除目录是否存在
+            System.err.println("The dir are not exists!");
+            return false;
+        }
+
+        String[] content = file.list();//取得当前目录下所有文件和文件夹
+        for (String name : content) {
+            File temp = new File(path, name);
+            if (temp.isDirectory()) {//判断是否是目录
+                deleteDir(temp.getAbsolutePath());//递归调用,删除目录里的内容
+                temp.delete();//删除空目录
+            } else {
+                if (!temp.delete()) {//直接删除文件
+                    System.err.println("Failed to delete " + name);
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 压缩指定路径下的文件夹
+     * @param filesPath
+     * @throws Exception
+     */
+    public static void packageZip(String filesPath) throws Exception {
+        // 要被压缩的文件夹
+        File file = new File(filesPath);   //需要压缩的文件夹
+        File zipFile = new File(filesPath + ".zip");  //放于和需要压缩的文件夹同级目录
+        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
+        isDirectory(file, zipOut, "", true);   //判断是否为文件夹
+        zipOut.close();
+    }
+
+    public static void isDirectory(File file, ZipOutputStream zipOutputStream, String filePath, boolean flag) throws IOException {
+        //判断是否为问加减
+        if (file.isDirectory()) {
+            File[] files = file.listFiles();  //获取该文件夹下所有文件(包含文件夹)
+            filePath = flag == true ? file.getName() : filePath + File.separator + file.getName();   //首次为选中的文件夹,即根目录,之后递归实现拼接目录
+            for (int i = 0; i < files.length; ++i) {
+                //判断子文件是否为文件夹
+                if (files[i].isDirectory()) {
+                    //进入递归,flag置false 即当前文件夹下仍包含文件夹
+                    isDirectory(files[i], zipOutputStream, filePath, false);
+                } else {
+                    //不为文件夹则进行压缩
+                    InputStream input = new FileInputStream(files[i]);
+                    zipOutputStream.putNextEntry(new ZipEntry(filePath + File.separator + files[i].getName()));
+                    int temp = 0;
+                    while ((temp = input.read()) != -1) {
+                        zipOutputStream.write(temp);
+                    }
+                    input.close();
+                }
+            }
+        } else {
+            //将子文件夹下的文件进行压缩
+            InputStream input = new FileInputStream(file);
+            zipOutputStream.putNextEntry(new ZipEntry(file.getPath()));
+            int temp = 0;
+            while ((temp = input.read()) != -1) {
+                zipOutputStream.write(temp);
+            }
+            input.close();
+        }
+    }
+
+    /**
+     * @param urlStr
+     * @return 返回Url资源大小
+     * @throws IOException
+     */
+    public static long getResourceLength(String urlStr) throws IOException {
+        URL url = new URL(urlStr);
+        URLConnection urlConnection = url.openConnection();
+        urlConnection.connect();
+        //返回响应报文头字段Content-Length的值
+        return urlConnection.getContentLength();
+    }
+
 
 }

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -64,4 +64,7 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/updateArchiveFileForCreateArchive")
     void updateArchiveFileForCreateArchive(@RequestBody List<ArchiveFile> waitArchiveFiles);
+
+    @PostMapping(API_PREFIX + "/getListByProjectId")
+    List<ArchiveFile> getListByProjectId(@RequestBody Long projectId);
 }

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -24,4 +24,10 @@ public interface ArchiveTreeContractClient {
     @PostMapping(API_PREFIX + "/getHavedFileNodeByProjectID")
     List<ArchiveTreeContract> getHavedFileNodeByProjectID(@RequestParam Long projectId);
 
+    /**
+     * 根据项目id获取所有数据
+     */
+    @PostMapping(API_PREFIX + "/getListByProjectId")
+    List<ArchiveTreeContract> getListByProjectId(@RequestParam Long projectId);
+
 }

+ 6 - 0
blade-service/blade-archive/pom.xml

@@ -106,6 +106,12 @@
             <version>2.9.1.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-resource</artifactId>
+            <version>2.9.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/config/sqliteConfig.java

@@ -14,7 +14,7 @@ import javax.sql.DataSource;
 public class sqliteConfig {
     public DataSource dataSource(){
         DruidDataSource ds = new DruidDataSource();
-        ds.setUrl("jdbc:sqlite:D:\\develop\\test\\test330.db");
+        ds.setUrl("jdbc:sqlite:/www/wwwroot/localClient/data");
         ds.setDriverClassName("org.sqlite.JDBC");
         return ds;
     }

+ 3 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveOfflineVersionInfoController.java

@@ -36,9 +36,9 @@ public class ArchiveOfflineVersionInfoController {
      */
     @ApiOperation(value = "打包数据")
     @GetMapping("/packData")
-    public R<String> packData(Long projectId){
+    public R<String> packData(Long projectId) throws Exception {
         //异步调用自动打包上传,完成后修改数据库信息
-        offlineVersionInfoService.packData(projectId);
+        offlineVersionInfoService.packData(1578599210897772545L);
         return R.data("最新数据后台自动打包中,打包完成后会更新打包日期");
     }
     /**
@@ -47,7 +47,7 @@ public class ArchiveOfflineVersionInfoController {
     @ApiOperation(value = "脱机载体工具")
     @GetMapping("/getVersionInfo")
     public R<ArchiveOfflineVersionInfo> getVersionInfo(Long projectId){
-        ArchiveOfflineVersionInfo versionInfo = mapper.selectVersionInfo(111L);
+        ArchiveOfflineVersionInfo versionInfo = mapper.selectVersionInfo(1578599210897772545L);
         String size = this.formatSize(Long.parseLong(versionInfo.getFileSize()));
         versionInfo.setFileSize(size);
         return R.data(versionInfo);

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveOfflineVersionInfoMapper.xml

@@ -12,7 +12,7 @@
     </resultMap>
     <select id="selectVersionInfo" resultMap="ResultMap">
         SELECT id, project_id, upload_date, file_url, file_name, file_size
-        FROM bladex.u_archive_offline_version_info
+        FROM u_archive_offline_version_info
         where project_id = #{projectId}
         order by upload_date desc
         limit 1;

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveOfflineVersionInfoService.java

@@ -9,5 +9,5 @@ import org.springblade.core.mp.base.BaseService;
  * @Date 2023/3/31 10:09
  **/
 public interface IArchiveOfflineVersionInfoService extends BaseService<ArchiveOfflineVersionInfo> {
-    void packData(Long projectId);
+    void packData(Long projectId) throws Exception;
 }

+ 153 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveOfflineVersionInfoServiceImpl.java

@@ -13,15 +13,28 @@ import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.archive.utils.FileUtils;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.tool.utils.FileUtil;
+import org.springblade.core.tool.utils.IoUtil;
+import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.feign.ArchiveTreeClient;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
+import org.springblade.resource.builder.oss.OssBuilder;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.io.*;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
+import java.sql.Statement;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -33,14 +46,146 @@ import java.util.List;
 @Service
 @AllArgsConstructor
 public class ArchiveOfflineVersionInfoServiceImpl extends BaseServiceImpl<ArchiveOfflineVersionInfoMapper, ArchiveOfflineVersionInfo> implements IArchiveOfflineVersionInfoService {
+    private final ArchiveOfflineVersionInfoMapper infoMapper;
     private final sqliteConfig data;
     private final ArchivesAutoMapper autoMapper;
     private final ArchiveFileClient fileClient;
+    private final ArchiveTreeContractClient contractClient;
+    private final OssBuilder ossBuilder;
 
     @Override
-    public void packData(Long projectId) {
+    public void packData(Long projectId) throws Exception {
+        String localUrl = "/www/wwwroot/localClient/local_archives/alilib";
+        String packUrl = "/www/wwwroot/localClient";
+        String zipUrl = "/www/wwwroot/localClient.zip";
+        //清空url的文件夹
+        CommonUtil.deleteDir(localUrl);
+        //导入档案到sqlite
+        this.autoToSqlite(projectId);
+        //导入归档树到sqlite
+        this.contractToSqlite(projectId);
+        //导入档案文件
+        this.fileToSqlite(projectId);
+        //打包文件
+        CommonUtil.packageZip(packUrl);
+        //上传文件
+        File zipFile = ResourceUtil.getFile(zipUrl);
+        BladeFile bladeFile = ossBuilder.template().putFile("localClient.zip",new FileInputStream(zipFile));
+        ArchiveOfflineVersionInfo info = new ArchiveOfflineVersionInfo();
+        info.setId(SnowFlakeUtil.getId());
+        info.setFileUrl(bladeFile.getLink());
+        info.setFileName(bladeFile.getOriginalName());
+        info.setUploadDate(LocalDateTime.now());
+        info.setProjectId(projectId);
+        info.setFileSize(CommonUtil.getResourceLength(bladeFile.getLink())+"");
+        infoMapper.insert(info);
+
+    }
+    public void fileToSqlite(Long projectId) throws Exception {
+        List<ArchiveFile> list = fileClient.getListByProjectId(projectId);
+        String localUrl = "/www/wwwroot/localClient/local_archives/alilib/";
+        for (ArchiveFile file : list) {
+            if (StringUtil.isNotBlank(file.getFileUrl())) {
+                String fileUrl = file.getFileUrl();
+                String fileName = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);
+                InputStream file_out = CommonUtil.getOSSInputStream(fileUrl);
+                CommonUtil.inputStreamToFile(file_out,new File(localUrl+fileName));
+                file.setFileUrl(fileName);
+            }
+            if (StringUtil.isNotBlank(file.getPdfFileUrl())){
+                String pdfFileUrl = file.getPdfFileUrl();
+                String fileName = pdfFileUrl.substring(pdfFileUrl.lastIndexOf('/') + 1);
+                InputStream file_out = CommonUtil.getOSSInputStream(pdfFileUrl);
+                CommonUtil.inputStreamToFile(file_out,new File(localUrl+fileName));
+                file.setPdfFileUrl(fileName);
+            }
+        }
+        try  {
+            Connection conn = data.dataSource().getConnection();
+            //清空原有数据
+            Statement statement = conn.createStatement();
+            statement.execute("DELETE FROM u_archive_file");
+            statement.close();
+            //导入最新数据
+            String sql = "INSERT INTO u_archive_file (id, project_id, node_id, file_number, file_name, file_time, file_url, pdf_file_url, status, is_deleted, archive_id,create_time)" +
+                    " VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
+            PreparedStatement pstm = conn.prepareStatement(sql);
+            //pstm 绑定数据
+            int i=0;
+            for (ArchiveFile file : list) {
+                i++;
+                pstm.setLong(1,file.getId());
+                pstm.setLong(2, Long.parseLong(file.getProjectId()));
+                pstm.setString(3,file.getNodeId()==null?"":file.getNodeId());
+                pstm.setString(4,file.getFileNumber()==null?"":file.getFileNumber());
+                pstm.setString(5,file.getFileName());
+                pstm.setString(6,file.getFileTime());
+                pstm.setString(7,file.getFileUrl()==null?"":file.getFileUrl());
+                pstm.setString(8,file.getPdfFileUrl()==null?"":file.getPdfFileUrl());
+                pstm.setInt(9,file.getStatus());
+                pstm.setInt(10,file.getIsDeleted());
+                pstm.setLong(11,file.getArchiveId()==null?-1:file.getArchiveId());
+                pstm.setString(12,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.getCreateTime()));
+                //添加批处理
+                pstm.addBatch();
+                if (i % 1000 == 0) {
+                    pstm.executeBatch();
+                    pstm.clearBatch();
+                }
+            }
+            //将批处理余下的语句执行完毕
+            pstm.executeBatch();
+            //释放资源
+            pstm.close();
+            conn.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    public void contractToSqlite(Long projectId){
+        List<ArchiveTreeContract> list = contractClient.getListByProjectId(projectId);
+        try  {
+            Connection conn = data.dataSource().getConnection();
+            Statement statement = conn.createStatement();
+            statement.execute("DELETE FROM m_archive_tree_contract");
+            statement.close();
+            //获取执行对象
+            String sql = "INSERT INTO m_archive_tree_contract(id, project_id, parent_id, ancestors, node_name,status,is_deleted,create_time)" +
+                    "VALUES(?, ?, ?, ?, ?,?,?,?)";
+            PreparedStatement pstm = conn.prepareStatement(sql);
+            //pstm 绑定数据
+            int i=0;
+            for (ArchiveTreeContract contract : list) {
+                i++;
+                pstm.setLong(1,contract.getId());
+                pstm.setLong(2,contract.getProjectId());
+                pstm.setLong(3,contract.getParentId());
+                pstm.setString(4,contract.getAncestors());
+                pstm.setString(5,contract.getNodeName());
+                pstm.setInt(6,contract.getStatus());
+                pstm.setInt(7,contract.getIsDeleted());
+                pstm.setString(8,  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(contract.getCreateTime()));
+                //添加批处理
+                pstm.addBatch();
+                if (i % 1000 == 0) {
+                    pstm.executeBatch();
+                    pstm.clearBatch();
+                }
+            }
+            //将批处理余下的语句执行完毕
+            pstm.executeBatch();
+            //释放资源
+            pstm.close();
+            conn.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    public void autoToSqlite(Long projectId){
         List<ArchivesAutoDTO> list = autoMapper.getListByProjectId(projectId);
-        String localUrl = "D:\\develop\\aliyun\\";
+        String localUrl = "/www/wwwroot/localClient/local_archives/alilib/";
         //拼接档案里文件的pdf设置allPdf
         for (ArchivesAutoDTO dto : list) {
             List<ArchiveFile> files = fileClient.getArchiveFileByArchivesId(dto.getId()+"","");
@@ -61,7 +206,11 @@ public class ArchiveOfflineVersionInfoServiceImpl extends BaseServiceImpl<Archiv
         }
         try  {
             Connection conn = data.dataSource().getConnection();
-            //获取执行对象
+            //清空数据
+            Statement statement = conn.createStatement();
+            statement.execute("DELETE FROM u_archives_auto");
+            statement.close();
+            //导入数据
             String sql = "INSERT INTO u_archives_auto (id, project_id, name, file_number, unit,storage_time, is_archive,node_id, status, is_deleted,create_time,all_file_pdf)" +
                     "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
             PreparedStatement pstm = conn.prepareStatement(sql);
@@ -98,4 +247,5 @@ public class ArchiveOfflineVersionInfoServiceImpl extends BaseServiceImpl<Archiv
             e.printStackTrace();
         }
     }
+
 }

+ 8 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.business.mapper.ArchiveFileMapper;
 import org.springblade.business.service.IArchiveFileService;
 import org.springblade.business.vo.ArchiveFileVO;
 import org.springframework.web.bind.annotation.RestController;
@@ -22,6 +23,8 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
 
     private final IArchiveFileService iArchiveFileService;
 
+    private final ArchiveFileMapper fileMapper;
+
 
     @Override
     public void saveArchiveFile(ArchiveFileVO vo) {
@@ -94,4 +97,9 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
     public void updateArchiveFileForCreateArchive(List<ArchiveFile> waitArchiveFiles) {
         iArchiveFileService.updateBatchById(waitArchiveFiles);
     }
+
+    @Override
+    public List<ArchiveFile> getListByProjectId(Long projectId) {
+        return fileMapper.getListByProjectId(projectId);
+    }
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -66,4 +66,6 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 	List<ArchiveFile> getArchiveFileByArchivesId(@Param("ids") List<Long> ids);
 
 	List<ArchiveFile> getArchiveFileByFileIds(@Param("ids") List<Long> ids);
+
+	public List<ArchiveFile> getListByProjectId(@Param("projectId") Long projectId);
 }

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -268,4 +268,9 @@
         </if>
         order by sort,create_time DESC
     </select>
+    <select id="getListByProjectId" resultType="org.springblade.business.entity.ArchiveFile">
+        select id,project_id as projectId,node_id as nodeId,file_number as fileNumber,file_name as fileName,file_time as fileTime,file_url as fileUrl,pdf_file_url as pdfFileUrl,archive_id as archiveId,status,is_deleted as isDeleted,create_time as createTime
+        from u_archive_file
+        where project_id=#{projectId};
+    </select>
 </mapper>

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -44,5 +44,10 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
         return list;
     }
 
+    @Override
+    public List<ArchiveTreeContract> getListByProjectId(Long projectId) {
+        return archiveTreeContractMapper.getListByProjectId(projectId);
+    }
+
 
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -68,4 +68,6 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 
 
 	List<ArchiveTreeContract> getHavedFileNodeByProjectID(@Param("projectId") Long projectId);
+
+	List<ArchiveTreeContract> getListByProjectId(@Param("projectId")Long projectId);
 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -310,5 +310,10 @@
         )
         order by tree_sort asc
     </select>
+    <select id="getListByProjectId" resultType="org.springblade.manager.entity.ArchiveTreeContract">
+        select id,project_id as projectId,parent_id as parentId,ancestors,node_name as nodeName,status,is_deleted as isDeleted,create_time as createTime
+        from m_archive_tree_contract
+        where project_id=#{projectId};
+    </select>
 
 </mapper>

+ 3 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

@@ -379,31 +379,12 @@ public class FileUtils {
 
         String excelPath="/Users/hongchuangyanfa/Desktop/pdf/1625671101419880450.xlsx";
         File file_out = ResourceUtil.getFile("/Users/hongchuangyanfa/Desktop/pdf/12345.xlsx");
-        InputStream exceInp = new FileInputStream(file_out);//CommonUtil.getOSSInputStream("https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20230308/aede5ee70ecc095c8e1dd76aa2f49d1a.xlsx");
-        final org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(exceInp);
-        Sheet sheet = workbook.getSheetAt(0);
-        sheet.setForceFormulaRecalculation(true);
-        // fileName为图片完整路径,例:C:\images\EDG.jpg
+        InputStream exceInp =CommonUtil.getOSSInputStream("https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20230308/aede5ee70ecc095c8e1dd76aa2f49d1a.xlsx");
+        String htmlString = IoUtil.readToString(exceInp);
+        FileUtil.writeToFile(file_out, htmlString);
 
 
-        FileOutputStream outputStream = new FileOutputStream(excelPath);
-        //生成一份新的excel
 
-        Cell cell = sheet.getRow(10).getCell(10);
-        cell.setCellValue("2023年02-08-2023年02-09");
-
-
-
-        workbook.write(outputStream);
-        if (outputStream != null) {
-            IoUtil.closeQuietly(outputStream);
-        }
-        if (exceInp != null) {
-            IoUtil.closeQuietly(exceInp);
-        }
-        if (workbook != null) {
-            IoUtil.closeQuietly(workbook);
-        }
 
     }