diff --git a/securitycontrol-commons/securitycontrol-commons-core/pom.xml b/securitycontrol-commons/securitycontrol-commons-core/pom.xml
index b90c113..7539e82 100644
--- a/securitycontrol-commons/securitycontrol-commons-core/pom.xml
+++ b/securitycontrol-commons/securitycontrol-commons-core/pom.xml
@@ -136,6 +136,7 @@
hibernate-validator
6.0.18.Final
+
\ No newline at end of file
diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java
index 670086f..7437e70 100644
--- a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java
+++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java
@@ -17,5 +17,46 @@ public class Constant {
public final static Integer SUCCESS = 200;
public final static String MSG = "msg";
+
public final static String CODE = "code";
+
+ public final static String XLSX = ".xlsx";
+
+ public final static String XLS = ".xls";
+
+ public final static String PRO_IMPORT_VO = "ProImportVo";
+
+ public final static Integer CELL_1 = 1;
+ public final static Integer CELL_2 = 2;
+ public final static Integer CELL_3 = 3;
+ public final static Integer CELL_4 = 4;
+ public final static Integer CELL_5 = 5;
+ public final static Integer CELL_6 = 6;
+ public final static Integer CELL_7 = 7;
+ public final static Integer CELL_8 = 8;
+ public final static Integer CELL_9 = 9;
+ public final static Integer CELL_10 = 10;
+ public final static Integer CELL_11 = 11;
+ public final static Integer CELL_12 = 12;
+ public final static Integer CELL_13 = 13;
+ public final static Integer CELL_14 = 14;
+ public final static Integer CELL_15 = 15;
+ public final static Integer CELL_16 = 16;
+ public final static Integer CELL_17 = 17;
+ public final static Integer CELL_18 = 18;
+ public final static Integer CELL_19 = 19;
+ public final static Integer CELL_20 = 20;
+ public final static Integer CELL_21 = 21;
+ public final static Integer CELL_22 = 22;
+ public final static Integer CELL_23 = 23;
+ public final static Integer CELL_24 = 24;
+ public final static Integer CELL_25 = 25;
+
+ public final static String FILE_2 = "file2";
+ public final static String FILE_3 = "file3";
+ public final static String FILE_4 = "file4";
+ public final static String FILE_5 = "file5";
+ public final static String FILE_6 = "file6";
+ public final static String FILE_7 = "file7";
+
}
diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/BytesToMultipartFileUtil.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/BytesToMultipartFileUtil.java
new file mode 100644
index 0000000..8f40fd2
--- /dev/null
+++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/BytesToMultipartFileUtil.java
@@ -0,0 +1,105 @@
+package com.securitycontrol.common.core.utils;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItem;
+import org.apache.poi.util.IOUtils;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
+import java.io.*;
+import java.nio.file.Files;
+
+/**
+ * @author:cwchen
+ * @date:2024-03-12-17:53
+ * @version:1.0
+ * @description:字节数组转文件
+ */
+public class BytesToMultipartFileUtil {
+ /**
+ * byte 转换为 MultipartFile
+ *
+ * @param bytes
+ * @return
+ */
+ public static MultipartFile encodeToMultipartFile(byte[] bytes, String path) {
+ MultipartFile multipartFile = null;
+ InputStream input = null;
+ OutputStream outputStream = null;
+ File tempFile = null;
+ try {
+ File file = new File(path);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ path = path + File.separator + System.currentTimeMillis() + ".png";
+ tempFile = new File(path);
+ tempFile.createNewFile();
+ // 把 byte 转换为 File 文件
+ getFileByBytes(bytes, path);
+ // 第一个参数 fieldName 就是文件上传的 name, 这里我写的是 uploadFile
+ FileItem fileItem = new DiskFileItem("uploadFile", Files.probeContentType(tempFile.toPath()), false, tempFile.getName(), (int) tempFile.length(), tempFile.getParentFile());
+ input = new FileInputStream(tempFile);
+ outputStream = fileItem.getOutputStream();
+ IOUtils.copy(input, outputStream);
+ multipartFile = new CommonsMultipartFile(fileItem);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ input.close();
+ outputStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ // 删除这个 File
+ if (tempFile.exists()) {
+ tempFile.delete();
+ }
+ return multipartFile;
+ }
+
+ /**
+ * byte [] 转换为 File
+ *
+ * @param bytes
+ * @param filePath
+ */
+ public static void getFileByBytes(byte[] bytes, String filePath) {
+ BufferedOutputStream bos = null;
+ FileOutputStream fos = null;
+ File file = null;
+ try {
+ File dir = new File(filePath);
+ // 判断文件目录是否存在
+ if (!dir.exists() && dir.isDirectory()) {
+ dir.mkdirs();
+ }
+ file = new File(filePath);
+ //输出流
+ fos = new FileOutputStream(file);
+ //缓冲流
+ bos = new BufferedOutputStream(fos);
+ //将字节数组写出
+ bos.write(bytes);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (bos != null) {
+ try {
+ bos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (fos != null) {
+ try {
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+}
diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/ImportExcelUtils.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/ImportExcelUtils.java
new file mode 100644
index 0000000..c20ede1
--- /dev/null
+++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/ImportExcelUtils.java
@@ -0,0 +1,449 @@
+package com.securitycontrol.common.core.utils;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.securitycontrol.common.core.constant.Constant;
+import com.securitycontrol.common.core.exception.ServiceException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ooxml.POIXMLDocumentPart;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.*;
+import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author 10488
+ * excel文件导入-包含图片
+ */
+@Slf4j
+public class ImportExcelUtils {
+
+ private static final List PRONAME_LIST = new LinkedList<>();
+
+ public static List readExcel(MultipartFile file, Class> mClass, String uploadPath) throws Exception {
+ String fileName = file.getOriginalFilename();
+ log.info("OriginalFilename:{}", fileName);
+ if (!StringUtils.endsWithAny(fileName, Constant.XLS, Constant.XLSX)) {
+ throw new ServiceException("不支持excel以外的文件导入!");
+ }
+ List list = new ArrayList<>();
+ InputStream inputStream = file.getInputStream();
+ String className = mClass.getSimpleName();
+ log.info("className:{}", className);
+ //根据指定的文件输入流导入Excel从而产生Workbook对象
+ Workbook workbook = null;
+ Sheet sheet = null;
+ Map mapData = null;
+ if (null != fileName && fileName.endsWith(Constant.XLS)) {
+ workbook = new HSSFWorkbook(inputStream);
+ //获取Excel文档中的第一个表单
+ sheet = workbook.getSheetAt(0);
+ if (!checkModal(sheet, className)) {
+ throw new ServiceException("模板错误,请重新选择模板!");
+ }
+ mapData = getPicturesXls((HSSFSheet) sheet, className);
+ }
+ if (null != fileName && fileName.endsWith(Constant.XLSX)) {
+ workbook = new XSSFWorkbook(inputStream);
+ //获取Excel文档中的第一个表单
+ sheet = workbook.getSheetAt(0);
+ if (!checkModal(sheet, className)) {
+ throw new ServiceException("模板错误,请重新选择模板!");
+ }
+ mapData = getPicturesXlsx((XSSFSheet) sheet, className);
+ }
+ List