T cast(Object obj) {
+ return (T) obj;
+ }
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java
deleted file mode 100644
index 25f530666..000000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.ruoyi.common.utils.file;
-
-import java.io.File;
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * 文件类型工具类
- *
- * @author ruoyi
- */
-public class FileTypeUtils
-{
- /**
- * 获取文件类型
- *
- * 例如: ruoyi.txt, 返回: txt
- *
- * @param file 文件名
- * @return 后缀(不含".")
- */
- public static String getFileType(File file)
- {
- if (null == file)
- {
- return StringUtils.EMPTY;
- }
- return getFileType(file.getName());
- }
-
- /**
- * 获取文件类型
- *
- * 例如: ruoyi.txt, 返回: txt
- *
- * @param fileName 文件名
- * @return 后缀(不含".")
- */
- public static String getFileType(String fileName)
- {
- int separatorIndex = fileName.lastIndexOf(".");
- if (separatorIndex < 0)
- {
- return "";
- }
- return fileName.substring(separatorIndex + 1).toLowerCase();
- }
-
- /**
- * 获取文件类型
- *
- * @param photoByte 文件字节码
- * @return 后缀(不含".")
- */
- public static String getFileExtendName(byte[] photoByte)
- {
- String strFileExtendName = "JPG";
- if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
- && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
- {
- strFileExtendName = "GIF";
- }
- else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
- {
- strFileExtendName = "JPG";
- }
- else if ((photoByte[0] == 66) && (photoByte[1] == 77))
- {
- strFileExtendName = "BMP";
- }
- else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
- {
- strFileExtendName = "PNG";
- }
- return strFileExtendName;
- }
-}
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
deleted file mode 100644
index 22d53c7fa..000000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
+++ /dev/null
@@ -1,239 +0,0 @@
-package com.ruoyi.common.utils.file;
-
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException;
-import com.ruoyi.common.exception.file.FileSizeLimitExceededException;
-import com.ruoyi.common.exception.file.InvalidExtensionException;
-import com.ruoyi.common.utils.DateUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * 文件上传工具类
- *
- * @author ruoyi
- */
-public class FileUploadUtils
-{
- /**
- * 默认大小 50M
- */
- public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
-
- /**
- * 默认的文件名最大长度 100
- */
- public static final int DEFAULT_FILE_NAME_LENGTH = 100;
-
- /**
- * 默认上传的地址
- */
- private static String defaultBaseDir = RuoYiConfig.getProfile();
-
- public static void setDefaultBaseDir(String defaultBaseDir)
- {
- FileUploadUtils.defaultBaseDir = defaultBaseDir;
- }
-
- public static String getDefaultBaseDir()
- {
- return defaultBaseDir;
- }
-
- /**
- * 以默认配置进行文件上传
- *
- * @param file 上传的文件
- * @return 文件名称
- * @throws Exception
- */
- public static final String upload(MultipartFile file) throws IOException
- {
- try
- {
- return upload(getDefaultBaseDir(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
- }
- catch (Exception e)
- {
- throw new IOException(e.getMessage(), e);
- }
- }
-
- /**
- * 根据文件路径上传
- *
- * @param baseDir 相对应用的基目录
- * @param file 上传的文件
- * @return 文件名称
- * @throws IOException
- */
- public static final String upload(String baseDir, MultipartFile file) throws IOException
- {
- try
- {
- return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
- }
- catch (Exception e)
- {
- throw new IOException(e.getMessage(), e);
- }
- }
-
- /**
- * 文件上传
- *
- * @param baseDir 相对应用的基目录
- * @param file 上传的文件
- * @param allowedExtension 上传文件类型
- * @return 返回上传成功的文件名
- * @throws FileSizeLimitExceededException 如果超出最大大小
- * @throws FileNameLengthLimitExceededException 文件名太长
- * @throws IOException 比如读写文件出错时
- * @throws InvalidExtensionException 文件校验异常
- */
- public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
- throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
- InvalidExtensionException
- {
- int fileNamelength = file.getOriginalFilename().length();
- if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
- {
- throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
- }
-
- assertAllowed(file, allowedExtension);
-
- String fileName = extractFilename(file);
-
- File desc = getAbsoluteFile(baseDir, fileName);
- desc = FileUtil.touch(desc);
- FileUtil.writeFromStream(file.getInputStream(), desc);
- String pathFileName = getPathFileName(baseDir, fileName);
- return pathFileName;
- }
-
- /**
- * 编码文件名
- */
- public static final String extractFilename(MultipartFile file)
- {
- String fileName = file.getOriginalFilename();
- String extension = getExtension(file);
- fileName = DateUtils.datePath() + "/" + IdUtil.fastUUID() + "." + extension;
- return fileName;
- }
-
- private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
- {
- File desc = new File(uploadDir + File.separator + fileName);
-
- if (!desc.exists())
- {
- if (!desc.getParentFile().exists())
- {
- desc.getParentFile().mkdirs();
- }
- }
- return desc;
- }
-
- private static final String getPathFileName(String uploadDir, String fileName) throws IOException
- {
- int dirLastIndex = RuoYiConfig.getProfile().length() + 1;
- String currentDir = StrUtil.subSuf(uploadDir, dirLastIndex);
- String pathFileName = Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
- return pathFileName;
- }
-
- /**
- * 文件大小校验
- *
- * @param file 上传的文件
- * @return
- * @throws FileSizeLimitExceededException 如果超出最大大小
- * @throws InvalidExtensionException
- */
- public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
- throws FileSizeLimitExceededException, InvalidExtensionException
- {
- long size = file.getSize();
- if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE)
- {
- throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
- }
-
- String fileName = file.getOriginalFilename();
- String extension = getExtension(file);
- if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
- {
- if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
- {
- throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,
- fileName);
- }
- else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION)
- {
- throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,
- fileName);
- }
- else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION)
- {
- throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
- fileName);
- }
- else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
- {
- throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
- fileName);
- }
- else
- {
- throw new InvalidExtensionException(allowedExtension, extension, fileName);
- }
- }
-
- }
-
- /**
- * 判断MIME类型是否是允许的MIME类型
- *
- * @param extension
- * @param allowedExtension
- * @return
- */
- public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
- {
- for (String str : allowedExtension)
- {
- if (str.equalsIgnoreCase(extension))
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * 获取文件名的后缀
- *
- * @param file 表单文件
- * @return 后缀名
- */
- public static final String getExtension(MultipartFile file)
- {
- String extension = FilenameUtils.getExtension(file.getOriginalFilename());
- if (Validator.isEmpty(extension))
- {
- extension = MimeTypeUtils.getExtension(file.getContentType());
- }
- return extension;
- }
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
index bc953de06..dc3aea2c0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -1,12 +1,9 @@
package com.ruoyi.common.utils.file;
import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
-import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@@ -17,77 +14,6 @@ import java.nio.charset.StandardCharsets;
*/
public class FileUtils extends FileUtil
{
- public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
-
- /**
- * 文件名称验证
- *
- * @param filename 文件名称
- * @return true 正常 false 非法
- */
- public static boolean isValidFilename(String filename)
- {
- return filename.matches(FILENAME_PATTERN);
- }
-
- /**
- * 检查文件是否可下载
- *
- * @param resource 需要下载的文件
- * @return true 正常 false 非法
- */
- public static boolean checkAllowDownload(String resource)
- {
- // 禁止目录上跳级别
- if (StrUtil.contains(resource, ".."))
- {
- return false;
- }
-
- // 检查允许下载的文件规则
- if (ArrayUtil.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)))
- {
- return true;
- }
-
- // 不在允许下载的文件规则
- return false;
- }
-
- /**
- * 下载文件名重新编码
- *
- * @param request 请求对象
- * @param fileName 文件名
- * @return 编码后的文件名
- */
- public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
- {
- final String agent = request.getHeader("USER-AGENT");
- String filename = fileName;
- if (agent.contains("MSIE"))
- {
- // IE浏览器
- filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
- filename = filename.replace("+", " ");
- }
- else if (agent.contains("Firefox"))
- {
- // 火狐浏览器
- filename = new String(fileName.getBytes(), "ISO8859-1");
- }
- else if (agent.contains("Chrome"))
- {
- // google浏览器
- filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
- }
- else
- {
- // 其它浏览器
- filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
- }
- return filename;
- }
/**
* 下载文件名重新编码
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java
deleted file mode 100644
index 94dcf456f..000000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.ruoyi.common.utils.file;
-
-import cn.hutool.core.util.StrUtil;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.Constants;
-import org.apache.poi.util.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Arrays;
-
-/**
- * 图片处理工具类
- *
- * @author ruoyi
- */
-public class ImageUtils
-{
- private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
-
- public static byte[] getImage(String imagePath)
- {
- InputStream is = getFile(imagePath);
- try
- {
- return IOUtils.toByteArray(is);
- }
- catch (Exception e)
- {
- log.error("图片加载异常 {}", e);
- return null;
- }
- finally
- {
- IOUtils.closeQuietly(is);
- }
- }
-
- public static InputStream getFile(String imagePath)
- {
- try
- {
- byte[] result = readFile(imagePath);
- result = Arrays.copyOf(result, result.length);
- return new ByteArrayInputStream(result);
- }
- catch (Exception e)
- {
- log.error("获取图片异常 {}", e);
- }
- return null;
- }
-
- /**
- * 读取文件为字节数据
- *
- * @param key 地址
- * @return 字节数据
- */
- public static byte[] readFile(String url)
- {
- InputStream in = null;
- ByteArrayOutputStream baos = null;
- try
- {
- if (url.startsWith("http"))
- {
- // 网络地址
- URL urlObj = new URL(url);
- URLConnection urlConnection = urlObj.openConnection();
- urlConnection.setConnectTimeout(30 * 1000);
- urlConnection.setReadTimeout(60 * 1000);
- urlConnection.setDoInput(true);
- in = urlConnection.getInputStream();
- }
- else
- {
- // 本机地址
- String localPath = RuoYiConfig.getProfile();
- String downloadPath = localPath + StrUtil.subAfter(url, Constants.RESOURCE_PREFIX,false);
- in = new FileInputStream(downloadPath);
- }
- return IOUtils.toByteArray(in);
- }
- catch (Exception e)
- {
- log.error("获取文件路径异常 {}", e);
- return null;
- }
- finally
- {
- IOUtils.closeQuietly(in);
- IOUtils.closeQuietly(baos);
- }
- }
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
deleted file mode 100644
index f968f1a12..000000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.ruoyi.common.utils.file;
-
-/**
- * 媒体类型工具类
- *
- * @author ruoyi
- */
-public class MimeTypeUtils
-{
- public static final String IMAGE_PNG = "image/png";
-
- public static final String IMAGE_JPG = "image/jpg";
-
- public static final String IMAGE_JPEG = "image/jpeg";
-
- public static final String IMAGE_BMP = "image/bmp";
-
- public static final String IMAGE_GIF = "image/gif";
-
- public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" };
-
- public static final String[] FLASH_EXTENSION = { "swf", "flv" };
-
- public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
- "asf", "rm", "rmvb" };
-
- public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
-
- public static final String[] DEFAULT_ALLOWED_EXTENSION = {
- // 图片
- "bmp", "gif", "jpg", "jpeg", "png",
- // word excel powerpoint
- "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
- // 压缩文件
- "rar", "zip", "gz", "bz2",
- // 视频格式
- "mp4", "avi", "rmvb",
- // pdf
- "pdf" };
-
- public static String getExtension(String prefix)
- {
- switch (prefix)
- {
- case IMAGE_PNG:
- return "png";
- case IMAGE_JPG:
- return "jpg";
- case IMAGE_JPEG:
- return "jpeg";
- case IMAGE_BMP:
- return "bmp";
- case IMAGE_GIF:
- return "gif";
- default:
- return "";
- }
- }
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java
index d6c262a25..03c608af8 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java
@@ -1,12 +1,12 @@
package com.ruoyi.common.utils.ip;
import cn.hutool.core.net.NetUtil;
-import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import cn.hutool.http.HttpUtil;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.JsonUtils;
+import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@@ -38,7 +38,7 @@ public class AddressUtils {
.body("ip=" + ip + "&json=true", Constants.GBK)
.execute()
.body();
- if (StrUtil.isEmpty(rspStr)) {
+ if (StringUtils.isEmpty(rspStr)) {
log.error("获取地理位置异常 {}", ip);
return UNKNOWN;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 96843d18c..f242d8cb1 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -1,1072 +1,150 @@
package com.ruoyi.common.utils.poi;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.StrUtil;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.annotation.Excel.ColumnType;
-import com.ruoyi.common.annotation.Excel.Type;
-import com.ruoyi.common.annotation.Excels;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.exception.CustomException;
-import com.ruoyi.common.utils.DateUtils;
+import cn.hutool.core.util.IdUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.ruoyi.common.utils.DictUtils;
-import com.ruoyi.common.utils.file.FileTypeUtils;
-import com.ruoyi.common.utils.file.ImageUtils;
-import com.ruoyi.common.utils.reflect.ReflectUtils;
-import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.ss.util.CellRangeAddressList;
-import org.apache.poi.xssf.streaming.SXSSFWorkbook;
-import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
-import org.apache.poi.xssf.usermodel.XSSFDataValidation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.FileUtils;
-import java.io.*;
-import java.lang.reflect.Field;
-import java.math.BigDecimal;
-import java.text.DecimalFormat;
-import java.util.*;
-import java.util.stream.Collectors;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
/**
* Excel相关处理
*
* @author ruoyi
*/
-public class ExcelUtil
-{
- private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
+public class ExcelUtil {
- /**
- * Excel sheet最大行数,默认65536
- */
- public static final int sheetSize = 65536;
+ /**
+ * 对excel表单默认第一个索引名转换成list(EasyExcel)
+ *
+ * @param is 输入流
+ * @return 转换后集合
+ */
+ public static List importExcel(InputStream is, Class clazz) {
+ return EasyExcel.read(is).autoCloseStream(false).sheet().doReadSync();
+ }
- /**
- * 工作表名称
- */
- private String sheetName;
+ /**
+ * 对list数据源将其里面的数据导入到excel表单(EasyExcel)
+ *
+ * @param list 导出数据集合
+ * @param sheetName 工作表的名称
+ * @return 结果
+ */
+ public static void exportExcel(List list, String sheetName, Class clazz, HttpServletResponse response) {
+ try {
+ String filename = encodingFilename(sheetName);
+ response.reset();
+ response.addHeader("Access-Control-Allow-Origin", "*");
+ response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
+ FileUtils.setAttachmentResponseHeader(response, URLEncoder.encode(filename, StandardCharsets.UTF_8.toString()));
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
+ ServletOutputStream os = response.getOutputStream();
+ EasyExcel.write(os, clazz)
+ .autoCloseStream(false)
+ // 自动适配
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .sheet(sheetName).doWrite(list);
+ } catch (IOException e) {
+ throw new RuntimeException("导出Excel异常");
+ }
+ }
- /**
- * 导出类型(EXPORT:导出数据;IMPORT:导入模板)
- */
- private Type type;
+ /**
+ * 解析导出值 0=男,1=女,2=未知
+ *
+ * @param propertyValue 参数值
+ * @param converterExp 翻译注解
+ * @param separator 分隔符
+ * @return 解析后值
+ */
+ public static String convertByExp(String propertyValue, String converterExp, String separator) {
+ StringBuilder propertyString = new StringBuilder();
+ String[] convertSource = converterExp.split(",");
+ for (String item : convertSource) {
+ String[] itemArray = item.split("=");
+ if (StringUtils.containsAny(separator, propertyValue)) {
+ for (String value : propertyValue.split(separator)) {
+ if (itemArray[0].equals(value)) {
+ propertyString.append(itemArray[1] + separator);
+ break;
+ }
+ }
+ } else {
+ if (itemArray[0].equals(propertyValue)) {
+ return itemArray[1];
+ }
+ }
+ }
+ return StringUtils.stripEnd(propertyString.toString(), separator);
+ }
- /**
- * 工作薄对象
- */
- private Workbook wb;
+ /**
+ * 反向解析值 男=0,女=1,未知=2
+ *
+ * @param propertyValue 参数值
+ * @param converterExp 翻译注解
+ * @param separator 分隔符
+ * @return 解析后值
+ */
+ public static String reverseByExp(String propertyValue, String converterExp, String separator) {
+ StringBuilder propertyString = new StringBuilder();
+ String[] convertSource = converterExp.split(",");
+ for (String item : convertSource) {
+ String[] itemArray = item.split("=");
+ if (StringUtils.containsAny(separator, propertyValue)) {
+ for (String value : propertyValue.split(separator)) {
+ if (itemArray[1].equals(value)) {
+ propertyString.append(itemArray[0] + separator);
+ break;
+ }
+ }
+ } else {
+ if (itemArray[1].equals(propertyValue)) {
+ return itemArray[0];
+ }
+ }
+ }
+ return StringUtils.stripEnd(propertyString.toString(), separator);
+ }
- /**
- * 工作表对象
- */
- private Sheet sheet;
+ /**
+ * 解析字典值
+ *
+ * @param dictValue 字典值
+ * @param dictType 字典类型
+ * @param separator 分隔符
+ * @return 字典标签
+ */
+ public static String convertDictByExp(String dictValue, String dictType, String separator) {
+ return DictUtils.getDictLabel(dictType, dictValue, separator);
+ }
- /**
- * 样式列表
- */
- private Map styles;
+ /**
+ * 反向解析值字典值
+ *
+ * @param dictLabel 字典标签
+ * @param dictType 字典类型
+ * @param separator 分隔符
+ * @return 字典值
+ */
+ public static String reverseDictByExp(String dictLabel, String dictType, String separator) {
+ return DictUtils.getDictValue(dictType, dictLabel, separator);
+ }
- /**
- * 导入导出数据列表
- */
- private List list;
+ /**
+ * 编码文件名
+ */
+ public static String encodingFilename(String filename) {
+ return IdUtil.fastSimpleUUID() + "_" + filename + ".xlsx";
+ }
- /**
- * 注解列表
- */
- private List