Browse Source

rar模板导入

master
583641232@qq.com 1 year ago
parent
commit
e3ee4d5497
  1. 11
      cas-common/src/main/java/com/inscloudtech/common/utils/file/ExtractCallback.java
  2. 56
      cas-common/src/main/java/com/inscloudtech/common/utils/file/RAR5Util.java
  3. 18
      cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/BankServiceImpl.java

11
cas-common/src/main/java/com/inscloudtech/common/utils/file/ExtractCallback.java

@ -48,17 +48,6 @@ public class ExtractCallback implements IArchiveExtractCallback {
return data.length; return data.length;
} }
}; };
/*return data -> {
try {
if (!isFolder) {
File file = new File(ourDir + path);
save2File(file, data);
}
} catch (Exception e) {
e.printStackTrace();
}
return data.length;
};*/
} }

56
cas-common/src/main/java/com/inscloudtech/common/utils/file/RAR5Util.java

@ -1,23 +1,24 @@
package com.inscloudtech.common.utils.file; package com.inscloudtech.common.utils.file;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.RandomUtil;
import com.inscloudtech.common.constant.Constants;
import net.sf.sevenzipjbinding.IInArchive; import net.sf.sevenzipjbinding.IInArchive;
import net.sf.sevenzipjbinding.SevenZip; import net.sf.sevenzipjbinding.SevenZip;
import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream; import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class RAR5Util { public class RAR5Util {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
String rarDir = "E:\\项目文件\\中合担保标准回单模板\\rar5压缩包\\银行回单.rar";
String outDir = "E:\\12\\";
unRar(new File(rarDir),outDir);
// String rarDir = "E:\\项目文件\\中合担保标准回单模板\\rar5压缩包\\银行回单.rar";
// String outDir = "E:\\12\\";
// unRar(new File(rarDir),outDir);
} }
public static List<String> unRar(File rarPath, String dstDirectoryPath) throws IOException { public static List<String> unRar(File rarPath, String dstDirectoryPath) throws IOException {
IInArchive archive; IInArchive archive;
@ -88,4 +89,47 @@ public class RAR5Util {
return list; return list;
} }
public static File unRar(InputStream inputStream) {
File tempFile = null;
try {
File tmpDir = FileUtil.getTmpDir();
String newDirName = tmpDir + File.separator + RandomUtil.randomString(Constants.RANDOM_STRING_LENGTH);
File zipTmpDir = new File(newDirName);
if (!zipTmpDir.exists() && !zipTmpDir.mkdirs()) {
// 目录创建失败的处理逻辑
System.err.println("Failed to create temporary directory: " + zipTmpDir.getAbsolutePath());
}
String rarpath = newDirName + File.separator + RandomUtil.randomString(5) + "tmp.rar";
tempFile = new File(rarpath);
RandomAccessFile raf = new RandomAccessFile(tempFile, "rw");
InputStream is = inputStream;
BufferedInputStream bis = new BufferedInputStream(is);
raf.seek(0);
byte[] buffer = new byte[8192]; // 8KB缓冲区
int bytesRead;
while ((bytesRead = bis.read(buffer)) != -1) {
raf.write(buffer, 0, bytesRead);
}
IInArchive archive = SevenZip.openInArchive(null, new RandomAccessFileInStream(raf));
int[] items = new int[archive.getNumberOfItems()];
for (int i = 0; i < items.length; i++) {
items[i] = i;
}
archive.extract(items, false, new ExtractCallback(archive, zipTmpDir.getAbsolutePath()));
archive.close();
return zipTmpDir;
}catch (Exception e){
e.printStackTrace();
} finally {
if (tempFile.exists()) {
tempFile.delete(); // 清理临时文件
}
}
return null;
}
} }

18
cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/BankServiceImpl.java

@ -16,6 +16,7 @@ import com.inscloudtech.bankStatementAnalysis.util.AnalyzeFileHelper;
import com.inscloudtech.bankStatementAnalysis.worker.ImportWorkflowWorker; import com.inscloudtech.bankStatementAnalysis.worker.ImportWorkflowWorker;
import com.inscloudtech.caseMange.domain.vo.GetPersonReq; import com.inscloudtech.caseMange.domain.vo.GetPersonReq;
import com.inscloudtech.common.core.page.TableDataInfo; import com.inscloudtech.common.core.page.TableDataInfo;
import com.inscloudtech.common.utils.file.RAR5Util;
import com.inscloudtech.common.utils.poi.ExcelUtil; import com.inscloudtech.common.utils.poi.ExcelUtil;
import com.inscloudtech.common.utils.spring.SpringUtils; import com.inscloudtech.common.utils.spring.SpringUtils;
import com.inscloudtech.datacenter.domain.vo.*; import com.inscloudtech.datacenter.domain.vo.*;
@ -1513,10 +1514,13 @@ public class BankServiceImpl implements BankService {
AnalyzeFileHelper.clear(); AnalyzeFileHelper.clear();
File zipDir;
File zipDir = null;
try { try {
zipDir = FileUtils.unzip(mf.getInputStream());
// zipDir = FileUtils.unrar(mf.getInputStream());
if(originalFilename.endsWith("zip")){
zipDir = FileUtils.unzip(mf.getInputStream());
}else if(originalFilename.endsWith("rar")){
zipDir = RAR5Util.unRar(mf.getInputStream());
}
} catch (Exception e) { } catch (Exception e) {
log.error("解压文件失败", e); log.error("解压文件失败", e);
throw new RegularFailureException("解压文件失败: " + e.getMessage()); throw new RegularFailureException("解压文件失败: " + e.getMessage());
@ -1528,7 +1532,7 @@ public class BankServiceImpl implements BankService {
sw.start(); sw.start();
File[] files = zipDir.listFiles(); File[] files = zipDir.listFiles();
if (files == null) { if (files == null) {
throw new RegularFailureException("zip文件为空,没有数据");
throw new RegularFailureException("压缩文件为空,没有数据");
} }
if (files.length != 1) { if (files.length != 1) {
@ -1549,7 +1553,8 @@ public class BankServiceImpl implements BankService {
// 等待任务完成 // 等待任务完成
sw.stop(); sw.stop();
sw.getTotalTimeSeconds();
log.error("流水导入结束耗时【"+sw.getTotalTimeSeconds()+"】秒");
int total = execVo.getTotal(); int total = execVo.getTotal();
rollbackProcess(execVo.getErrorItem(),caseId); rollbackProcess(execVo.getErrorItem(),caseId);
@ -1718,7 +1723,6 @@ public class BankServiceImpl implements BankService {
esIndexHelper.delFDBIndex(caseId); esIndexHelper.delFDBIndex(caseId);
RedisUtils.incrAtomicValue(completeKey); RedisUtils.incrAtomicValue(completeKey);
long finish = System.currentTimeMillis(); long finish = System.currentTimeMillis();
log.error("富滇银行---结束耗时【{}秒】",(finish - start)/1000.0);
} }
break; break;
case Constants.BANK_IMPORT_MODEL_BOC_BANK: // 中国银行 case Constants.BANK_IMPORT_MODEL_BOC_BANK: // 中国银行
@ -1732,7 +1736,6 @@ public class BankServiceImpl implements BankService {
esIndexHelper.delBOCIndex(caseId); esIndexHelper.delBOCIndex(caseId);
RedisUtils.incrAtomicValue(completeKey); RedisUtils.incrAtomicValue(completeKey);
long finish = System.currentTimeMillis(); long finish = System.currentTimeMillis();
log.error("中国银行---结束耗时【{}秒】",(finish - start)/1000.0);
} }
break; break;
case Constants.BANK_IMPORT_MODEL_CITIC_BANK: // 中信银行 case Constants.BANK_IMPORT_MODEL_CITIC_BANK: // 中信银行
@ -1747,7 +1750,6 @@ public class BankServiceImpl implements BankService {
esIndexHelper.delCITICIndex(caseId); esIndexHelper.delCITICIndex(caseId);
RedisUtils.incrAtomicValue(completeKey); RedisUtils.incrAtomicValue(completeKey);
long finish = System.currentTimeMillis(); long finish = System.currentTimeMillis();
log.error("中信银行---结束耗时【{}秒】",(finish - start)/1000.0);
} }
break; break;
case Constants.BANK_IMPORT_MODEL_MERCHANTS_BANK: // 招商银行 case Constants.BANK_IMPORT_MODEL_MERCHANTS_BANK: // 招商银行

Loading…
Cancel
Save