fix: 78275
企标--导入--带附件导入报错
This commit is contained in:
+29
-11
@@ -61,6 +61,7 @@ import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -69,6 +70,7 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@@ -76,6 +78,7 @@ import java.time.LocalDate;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipFile;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -87,6 +90,9 @@ import java.util.zip.ZipOutputStream;
|
|||||||
@Component
|
@Component
|
||||||
public class LawsCommonServiceImpl implements ILawsCommonService {
|
public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||||
|
|
||||||
|
@Value(value = "${jero.path.upload}")
|
||||||
|
private String uploadPath;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private LawsCommonMapper lawsCommonMapper;
|
private LawsCommonMapper lawsCommonMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -1422,18 +1428,10 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
}
|
}
|
||||||
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
|
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
|
||||||
// 解压缩
|
// 解压缩
|
||||||
String zipEntryName = FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), String.valueOf(path));
|
FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), String.valueOf(path));
|
||||||
|
|
||||||
// 判断压缩包下是否只有一个文件夹
|
|
||||||
File fileTemp = new File(path.toUri());
|
|
||||||
int length = Objects.requireNonNull(fileTemp.listFiles()).length;
|
|
||||||
if (length > 2) {
|
|
||||||
FileUnZip.deleteDir(saveDirectory);
|
|
||||||
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.FOLDER_ONLY_ONE));
|
|
||||||
}
|
|
||||||
File fileNew = new File(zipEntryName);
|
|
||||||
List<File> fileList = new ArrayList<>();
|
List<File> fileList = new ArrayList<>();
|
||||||
for (File file1 : Objects.requireNonNull(fileNew.listFiles())) {
|
for (File file1 : Objects.requireNonNull(saveDirectory.listFiles())) {
|
||||||
if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx")) {
|
if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx")) {
|
||||||
fileList.add(file1);
|
fileList.add(file1);
|
||||||
}
|
}
|
||||||
@@ -1445,7 +1443,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
FileUnZip.deleteDir(saveDirectory);
|
FileUnZip.deleteDir(saveDirectory);
|
||||||
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.IMPORT_TEMPLATE_ERROR));
|
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.IMPORT_TEMPLATE_ERROR));
|
||||||
}
|
}
|
||||||
List<File> excelfilelist = FileUnZip.readImpExcelFile(zipEntryName);
|
List<File> excelfilelist = FileUnZip.readImpExcelFile(saveDirectory.getPath());
|
||||||
System.gc();
|
System.gc();
|
||||||
if (excelfilelist.size() != 1) {
|
if (excelfilelist.size() != 1) {
|
||||||
FileUnZip.deleteDir(saveDirectory);
|
FileUnZip.deleteDir(saveDirectory);
|
||||||
@@ -1475,6 +1473,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
}
|
}
|
||||||
// 数据内容格式校验
|
// 数据内容格式校验
|
||||||
Map<String, File> fileMap = new HashMap<>();
|
Map<String, File> fileMap = new HashMap<>();
|
||||||
|
// 遍历saveDirectory下的所有文件
|
||||||
|
populateFileMap(saveDirectory, saveDirectory, fileMap);
|
||||||
|
|
||||||
try (Workbook workbook = new XSSFWorkbook(Files.newInputStream(excelfilelist.get(0).toPath()))) {
|
try (Workbook workbook = new XSSFWorkbook(Files.newInputStream(excelfilelist.get(0).toPath()))) {
|
||||||
// 检测是否是空Excel
|
// 检测是否是空Excel
|
||||||
Sheet sheet = workbook.getSheetAt(0);
|
Sheet sheet = workbook.getSheetAt(0);
|
||||||
@@ -1517,6 +1518,23 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
return errMsgList;
|
return errMsgList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void populateFileMap(File rootDir, File currentDir, Map<String, File> fileMap) {
|
||||||
|
File[] files = currentDir.listFiles(); // 列出所有文件和子目录
|
||||||
|
if (files != null) {
|
||||||
|
for (File file : files) {
|
||||||
|
// 对于每个文件/子目录,获取相对于rootDir的相对路径
|
||||||
|
Path relativePath = rootDir.toPath().relativize(file.toPath());
|
||||||
|
if (file.isDirectory()) {
|
||||||
|
// 如果是目录,递归调用
|
||||||
|
populateFileMap(rootDir, file, fileMap);
|
||||||
|
} else {
|
||||||
|
// 否则,将它加入到map中
|
||||||
|
fileMap.put(relativePath.toString().replace("\\", "/"), file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置导入模板的第三行提示内容
|
* 设置导入模板的第三行提示内容
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -687,7 +687,13 @@ public class ImportUtil {
|
|||||||
if (!(lowerCasePath.endsWith(".pdf")
|
if (!(lowerCasePath.endsWith(".pdf")
|
||||||
|| lowerCasePath.endsWith(".doc") || lowerCasePath.endsWith(".docx")
|
|| lowerCasePath.endsWith(".doc") || lowerCasePath.endsWith(".docx")
|
||||||
|| lowerCasePath.endsWith(".xls") || lowerCasePath.endsWith(".xlsx")
|
|| lowerCasePath.endsWith(".xls") || lowerCasePath.endsWith(".xlsx")
|
||||||
|| lowerCasePath.endsWith(".png") || lowerCasePath.endsWith(".jpg"))) {
|
|| lowerCasePath.endsWith(".ppt") || lowerCasePath.endsWith(".pptx")
|
||||||
|
|| lowerCasePath.endsWith(".rar") || lowerCasePath.endsWith(".zip")
|
||||||
|
|| lowerCasePath.endsWith(".jpg") || lowerCasePath.endsWith(".jpeg")
|
||||||
|
|| lowerCasePath.endsWith(".png") || lowerCasePath.endsWith(".avi")
|
||||||
|
|| lowerCasePath.endsWith(".wmv") || lowerCasePath.endsWith(".mov")
|
||||||
|
|| lowerCasePath.endsWith(".rm") || lowerCasePath.endsWith(".mp4")
|
||||||
|
|| lowerCasePath.endsWith(".cad"))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user