sortedAllFiledMap) {
- if (!sortedAllFiledMap.isEmpty()) {
- return;
- }
-
- // 获取当前的使用的 holder
- WriteHolder holder = writeContext.currentWriteHolder();
- boolean needIgnore = (holder instanceof AbstractWriteHolder)
- && (!CollectionUtils.isEmpty(((AbstractWriteHolder) holder).getExcludeColumnFiledNames())
- || !CollectionUtils.isEmpty(((AbstractWriteHolder) holder).getExcludeColumnIndexes())
- || !CollectionUtils.isEmpty(((AbstractWriteHolder) holder).getIncludeColumnFiledNames())
- || !CollectionUtils.isEmpty(((AbstractWriteHolder) holder).getIncludeColumnIndexes()));
-
- ClassUtils.declaredFields(clazz, sortedAllFiledMap,
- writeContext.writeWorkbookHolder().getWriteWorkbook().getConvertAllFiled(), needIgnore, holder);
- }
-
-}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ExcelHandlerConfiguration.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ExcelHandlerConfiguration.java
index 7a36dd22f..7cbc17c04 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ExcelHandlerConfiguration.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ExcelHandlerConfiguration.java
@@ -15,7 +15,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
import java.util.List;
@@ -24,7 +23,6 @@ import java.util.List;
* @version 1.0
*/
@RequiredArgsConstructor
-@Configuration
public class ExcelHandlerConfiguration {
private final ExcelConfigProperties configProperties;
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ResponseExcelAutoConfiguration.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ResponseExcelAutoConfiguration.java
index bb1aed3a6..73454b3ba 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ResponseExcelAutoConfiguration.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/ResponseExcelAutoConfiguration.java
@@ -1,16 +1,16 @@
package com.pig4cloud.pigx.common.excel;
-import com.pig4cloud.pigx.common.excel.aop.DynamicNameAspect;
-import com.pig4cloud.pigx.common.excel.aop.RequestExcelArgumentResolver;
-import com.pig4cloud.pigx.common.excel.aop.ResponseExcelReturnValueHandler;
import com.pig4cloud.pigx.common.excel.config.ExcelConfigProperties;
import com.pig4cloud.pigx.common.excel.processor.NameProcessor;
import com.pig4cloud.pigx.common.excel.processor.NameSpelExpressionProcessor;
+import com.pig4cloud.pigx.common.excel.aop.DynamicNameAspect;
+import com.pig4cloud.pigx.common.excel.aop.RequestExcelArgumentResolver;
+import com.pig4cloud.pigx.common.excel.aop.ResponseExcelReturnValueHandler;
import lombok.RequiredArgsConstructor;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
@@ -26,9 +26,9 @@ import java.util.List;
*
* 配置初始化
*/
-@Import(ExcelHandlerConfiguration.class)
+@AutoConfiguration
@RequiredArgsConstructor
-@Configuration(proxyBeanMethods = false)
+@Import(ExcelHandlerConfiguration.class)
@EnableConfigurationProperties(ExcelConfigProperties.class)
public class ResponseExcelAutoConfiguration {
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ExcelLine.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ExcelLine.java
new file mode 100644
index 000000000..0d46deb21
--- /dev/null
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ExcelLine.java
@@ -0,0 +1,10 @@
+package com.pig4cloud.pigx.common.excel.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Target({ ElementType.FIELD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelLine {
+
+}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ResponseExcel.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ResponseExcel.java
index 8e8a3865f..917de5ba6 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ResponseExcel.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/annotation/ResponseExcel.java
@@ -89,4 +89,10 @@ public @interface ResponseExcel {
*/
boolean i18nHeader() default false;
+ /**
+ * 填充模式
+ * @return
+ */
+ boolean fill() default false;
+
}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/DynamicNameAspect.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/DynamicNameAspect.java
index 0b462598c..ab5767c43 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/DynamicNameAspect.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/DynamicNameAspect.java
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.common.excel.aop;
-import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.excel.processor.NameProcessor;
+import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import lombok.RequiredArgsConstructor;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java
index c2d99ce76..67eaffdcd 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java
@@ -40,7 +40,7 @@ public class RequestExcelArgumentResolver implements HandlerMethodArgumentResolv
}
@Override
- @SneakyThrows
+ @SneakyThrows(Exception.class)
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer modelAndViewContainer,
NativeWebRequest webRequest, WebDataBinderFactory webDataBinderFactory) {
Class> parameterType = parameter.getParameterType();
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/ResponseExcelReturnValueHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/ResponseExcelReturnValueHandler.java
index d13e390d5..1720dd2df 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/ResponseExcelReturnValueHandler.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/ResponseExcelReturnValueHandler.java
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.common.excel.aop;
-import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.excel.handler.SheetWriteHandler;
+import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.MethodParameter;
@@ -40,11 +40,10 @@ public class ResponseExcelReturnValueHandler implements HandlerMethodReturnValue
* @param parameter 方法签名
* @param mavContainer 上下文容器
* @param nativeWebRequest 上下文
- * @throws Exception 处理异常
*/
@Override
public void handleReturnValue(Object o, MethodParameter parameter, ModelAndViewContainer mavContainer,
- NativeWebRequest nativeWebRequest) throws Exception {
+ NativeWebRequest nativeWebRequest) {
/* check */
HttpServletResponse response = nativeWebRequest.getNativeResponse(HttpServletResponse.class);
Assert.state(response != null, "No HttpServletResponse");
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateStringConverter.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateStringConverter.java
index b43c5ba0a..4ee09064f 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateStringConverter.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateStringConverter.java
@@ -2,8 +2,9 @@ package com.pig4cloud.pigx.common.excel.converters;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
-import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.text.ParseException;
@@ -33,7 +34,7 @@ public enum LocalDateStringConverter implements Converter {
}
@Override
- public LocalDate convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
+ public LocalDate convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws ParseException {
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
return LocalDate.parse(cellData.getStringValue());
@@ -46,7 +47,7 @@ public enum LocalDateStringConverter implements Converter {
}
@Override
- public CellData convertToExcelData(LocalDate value, ExcelContentProperty contentProperty,
+ public WriteCellData convertToExcelData(LocalDate value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
DateTimeFormatter formatter;
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
@@ -55,7 +56,7 @@ public enum LocalDateStringConverter implements Converter {
else {
formatter = DateTimeFormatter.ofPattern(contentProperty.getDateTimeFormatProperty().getFormat());
}
- return new CellData<>(value.format(formatter));
+ return new WriteCellData<>(value.format(formatter));
}
}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateTimeStringConverter.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateTimeStringConverter.java
index 9ecc2188c..b96ce35fc 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateTimeStringConverter.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalDateTimeStringConverter.java
@@ -2,8 +2,9 @@ package com.pig4cloud.pigx.common.excel.converters;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
-import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.alibaba.excel.util.DateUtils;
@@ -36,7 +37,7 @@ public enum LocalDateTimeStringConverter implements Converter {
}
@Override
- public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
+ public LocalDateTime convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws ParseException {
String stringValue = cellData.getStringValue();
String pattern;
@@ -51,7 +52,7 @@ public enum LocalDateTimeStringConverter implements Converter {
}
@Override
- public CellData convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
+ public WriteCellData convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
String pattern;
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
@@ -61,7 +62,7 @@ public enum LocalDateTimeStringConverter implements Converter {
pattern = contentProperty.getDateTimeFormatProperty().getFormat();
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
- return new CellData<>(value.format(formatter));
+ return new WriteCellData<>(value.format(formatter));
}
/**
@@ -72,21 +73,21 @@ public enum LocalDateTimeStringConverter implements Converter {
private static String switchDateFormat(String dateString) {
int length = dateString.length();
switch (length) {
- case 19:
- if (dateString.contains(MINUS)) {
- return DateUtils.DATE_FORMAT_19;
- }
- else {
- return DateUtils.DATE_FORMAT_19_FORWARD_SLASH;
- }
- case 17:
- return DateUtils.DATE_FORMAT_17;
- case 14:
- return DateUtils.DATE_FORMAT_14;
- case 10:
- return DateUtils.DATE_FORMAT_10;
- default:
- throw new IllegalArgumentException("can not find date format for:" + dateString);
+ case 19:
+ if (dateString.contains(MINUS)) {
+ return DateUtils.DATE_FORMAT_19;
+ }
+ else {
+ return DateUtils.DATE_FORMAT_19_FORWARD_SLASH;
+ }
+ case 17:
+ return DateUtils.DATE_FORMAT_17;
+ case 14:
+ return DateUtils.DATE_FORMAT_14;
+ case 10:
+ return DateUtils.DATE_FORMAT_10;
+ default:
+ throw new IllegalArgumentException("can not find date format for:" + dateString);
}
}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/enhance/DefaultWriterBuilderEnhancer.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/enhance/DefaultWriterBuilderEnhancer.java
index bc0c7266e..7b292d689 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/enhance/DefaultWriterBuilderEnhancer.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/enhance/DefaultWriterBuilderEnhancer.java
@@ -2,8 +2,8 @@ package com.pig4cloud.pigx.common.excel.enhance;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
-import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.excel.head.HeadGenerator;
+import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import javax.servlet.http.HttpServletResponse;
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java
index b8ec78423..735fc7e97 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java
@@ -11,13 +11,13 @@ import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.excel.annotation.Sheet;
import com.pig4cloud.pigx.common.excel.aop.DynamicNameAspect;
import com.pig4cloud.pigx.common.excel.config.ExcelConfigProperties;
-import com.pig4cloud.pigx.common.excel.converters.LocalDateStringConverter;
-import com.pig4cloud.pigx.common.excel.converters.LocalDateTimeStringConverter;
import com.pig4cloud.pigx.common.excel.enhance.WriterBuilderEnhancer;
import com.pig4cloud.pigx.common.excel.head.HeadGenerator;
import com.pig4cloud.pigx.common.excel.head.HeadMeta;
import com.pig4cloud.pigx.common.excel.head.I18nHeaderCellWriteHandler;
import com.pig4cloud.pigx.common.excel.kit.ExcelException;
+import com.pig4cloud.pigx.common.excel.converters.LocalDateStringConverter;
+import com.pig4cloud.pigx.common.excel.converters.LocalDateTimeStringConverter;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@@ -39,12 +39,15 @@ import org.springframework.web.context.request.RequestContextHolder;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.lang.reflect.Modifier;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
+import java.util.UUID;
/**
* @author lengleng
@@ -75,12 +78,15 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
}
@Override
- @SneakyThrows
+ @SneakyThrows(UnsupportedEncodingException.class)
public void export(Object o, HttpServletResponse response, ResponseExcel responseExcel) {
check(responseExcel);
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
String name = (String) Objects.requireNonNull(requestAttributes).getAttribute(DynamicNameAspect.EXCEL_NAME_KEY,
RequestAttributes.SCOPE_REQUEST);
+ if (name == null) {
+ name = UUID.randomUUID().toString();
+ }
String fileName = String.format("%s%s", URLEncoder.encode(name, "UTF-8"), responseExcel.suffix().getValue());
// 根据实际的文件类型找到对应的 contentType
String contentType = MediaTypeFactory.getMediaType(fileName).map(MediaType::toString)
@@ -97,7 +103,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
* @param responseExcel ResponseExcel注解
* @return ExcelWriter
*/
- @SneakyThrows
+ @SneakyThrows(IOException.class)
public ExcelWriter getExcelWriter(HttpServletResponse response, ResponseExcel responseExcel) {
ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream())
.registerConverter(LocalDateStringConverter.INSTANCE)
@@ -166,7 +172,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
* @return WriteSheet
*/
public WriteSheet sheet(Sheet sheet, Class> dataClass, String template,
- Class extends HeadGenerator> bookHeadEnhancerClass) {
+ Class extends HeadGenerator> bookHeadEnhancerClass) {
// Sheet 编号和名称
Integer sheetNo = sheet.sheetNo() >= 0 ? sheet.sheetNo() : null;
@@ -216,7 +222,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
/**
* 是否为Null Head Generator
- * @param headGeneratorClass
+ * @param headGeneratorClass 头生成器类型
* @return true 已指定 false 未指定(默认值)
*/
private boolean isNotInterface(Class extends HeadGenerator> headGeneratorClass) {
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/DefaultAnalysisEventListener.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/DefaultAnalysisEventListener.java
index 37059db7f..b4505d575 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/DefaultAnalysisEventListener.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/DefaultAnalysisEventListener.java
@@ -1,11 +1,13 @@
package com.pig4cloud.pigx.common.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
+import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import com.pig4cloud.pigx.common.excel.kit.Validators;
import com.pig4cloud.pigx.common.excel.vo.ErrorMessage;
import lombok.extern.slf4j.Slf4j;
import javax.validation.ConstraintViolation;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -38,6 +40,18 @@ public class DefaultAnalysisEventListener extends ListAnalysisEventListener>> converterProvider, WriterBuilderEnhancer excelWriterBuilderEnhance) {
+ ObjectProvider>> converterProvider, WriterBuilderEnhancer excelWriterBuilderEnhance) {
super(configProperties, converterProvider, excelWriterBuilderEnhance);
}
/**
* 当且仅当List不为空且List中的元素也是List 才返回true
* @param obj 返回对象
- * @return
+ * @return boolean
*/
@Override
public boolean support(Object obj) {
if (obj instanceof List) {
- List objList = (List) obj;
+ List> objList = (List>) obj;
return !objList.isEmpty() && objList.get(0) instanceof List;
}
else {
@@ -43,20 +42,25 @@ public class ManySheetWriteHandler extends AbstractSheetWriteHandler {
}
@Override
- @SneakyThrows
public void write(Object obj, HttpServletResponse response, ResponseExcel responseExcel) {
- List objList = (List) obj;
+ List> objList = (List>) obj;
ExcelWriter excelWriter = getExcelWriter(response, responseExcel);
Sheet[] sheets = responseExcel.sheets();
WriteSheet sheet;
for (int i = 0; i < sheets.length; i++) {
- List eleList = (List) objList.get(i);
+ List> eleList = (List>) objList.get(i);
Class> dataClass = eleList.get(0).getClass();
// 创建sheet
sheet = this.sheet(sheets[i], dataClass, responseExcel.template(), responseExcel.headGenerator());
- // 写入sheet
- excelWriter.write(eleList, sheet);
+ // 填充 sheet
+ if (responseExcel.fill()) {
+ excelWriter.fill(eleList, sheet);
+ }
+ else {
+ // 写入sheet
+ excelWriter.write(eleList, sheet);
+ }
}
excelWriter.finish();
}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java
index d22ebe89a..fa4bb204b 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java
@@ -3,11 +3,10 @@ package com.pig4cloud.pigx.common.excel.handler;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.write.metadata.WriteSheet;
-import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.excel.config.ExcelConfigProperties;
import com.pig4cloud.pigx.common.excel.enhance.WriterBuilderEnhancer;
import com.pig4cloud.pigx.common.excel.kit.ExcelException;
-import lombok.SneakyThrows;
+import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import org.springframework.beans.factory.ObjectProvider;
import javax.servlet.http.HttpServletResponse;
@@ -23,19 +22,19 @@ import java.util.List;
public class SingleSheetWriteHandler extends AbstractSheetWriteHandler {
public SingleSheetWriteHandler(ExcelConfigProperties configProperties,
- ObjectProvider>> converterProvider, WriterBuilderEnhancer excelWriterBuilderEnhance) {
+ ObjectProvider>> converterProvider, WriterBuilderEnhancer excelWriterBuilderEnhance) {
super(configProperties, converterProvider, excelWriterBuilderEnhance);
}
/**
* obj 是List 且list不为空同时list中的元素不是是List 才返回true
* @param obj 返回对象
- * @return
+ * @return boolean
*/
@Override
public boolean support(Object obj) {
if (obj instanceof List) {
- List objList = (List) obj;
+ List> objList = (List>) obj;
return !objList.isEmpty() && !(objList.get(0) instanceof List);
}
else {
@@ -44,16 +43,23 @@ public class SingleSheetWriteHandler extends AbstractSheetWriteHandler {
}
@Override
- @SneakyThrows
public void write(Object obj, HttpServletResponse response, ResponseExcel responseExcel) {
- List list = (List) obj;
+ List> list = (List>) obj;
ExcelWriter excelWriter = getExcelWriter(response, responseExcel);
// 有模板则不指定sheet名
Class> dataClass = list.get(0).getClass();
WriteSheet sheet = this.sheet(responseExcel.sheets()[0], dataClass, responseExcel.template(),
responseExcel.headGenerator());
- excelWriter.write(list, sheet);
+
+ // 填充 sheet
+ if (responseExcel.fill()) {
+ excelWriter.fill(list, sheet);
+ }
+ else {
+ // 写入sheet
+ excelWriter.write(list, sheet);
+ }
excelWriter.finish();
}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/head/I18nHeaderCellWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/head/I18nHeaderCellWriteHandler.java
index a0f46d818..5c62a3489 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/head/I18nHeaderCellWriteHandler.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/head/I18nHeaderCellWriteHandler.java
@@ -1,13 +1,11 @@
package com.pig4cloud.pigx.common.excel.head;
-import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
@@ -36,7 +34,7 @@ public class I18nHeaderCellWriteHandler implements CellWriteHandler {
public I18nHeaderCellWriteHandler(MessageSource messageSource) {
this.messageSource = messageSource;
- this.placeholderResolver = placeholderName -> messageSource.getMessage(placeholderName, null,
+ this.placeholderResolver = placeholderName -> this.messageSource.getMessage(placeholderName, null,
LocaleContextHolder.getLocale());
}
@@ -48,7 +46,7 @@ public class I18nHeaderCellWriteHandler implements CellWriteHandler {
@Override
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
- if (isHead) {
+ if (isHead != null && isHead) {
List originHeadNameList = head.getHeadNameList();
if (CollectionUtils.isNotEmpty(originHeadNameList)) {
// 国际化处理
@@ -60,22 +58,4 @@ public class I18nHeaderCellWriteHandler implements CellWriteHandler {
}
}
- @Override
- public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell,
- Head head, Integer relativeRowIndex, Boolean isHead) {
-
- }
-
- @Override
- public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
- CellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
-
- }
-
- @Override
- public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
- List cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
-
- }
-
}
diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/kit/Validators.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/kit/Validators.java
index 23312b4b2..a65eb24c6 100644
--- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/kit/Validators.java
+++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/kit/Validators.java
@@ -8,13 +8,16 @@ import java.util.Set;
*
* @author L.cm
*/
-public class Validators {
+public final class Validators {
- private static final Validator validator;
+ private Validators() {
+ }
+
+ private static final Validator VALIDATOR;
static {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
- validator = factory.getValidator();
+ VALIDATOR = factory.getValidator();
}
/**
@@ -28,7 +31,7 @@ public class Validators {
* validation process
*/
public static Set> validate(T object) {
- return validator.validate(object);
+ return VALIDATOR.validate(object);
}
}
diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/PostExcelVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/PostExcelVO.java
index 3c0a5d961..edf8489ec 100644
--- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/PostExcelVO.java
+++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/PostExcelVO.java
@@ -1,7 +1,9 @@
package com.pig4cloud.pigx.admin.api.vo;
+import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@@ -21,6 +23,13 @@ public class PostExcelVO implements Serializable {
private static final long serialVersionUID = 1L;
+ /**
+ * 导入时候回显行号
+ */
+ @ExcelLine
+ @ExcelIgnore
+ private Long lineNum;
+
/**
* 主键ID
*/
diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/RoleExcelVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/RoleExcelVO.java
index 423ca3ac8..1f290e542 100644
--- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/RoleExcelVO.java
+++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/RoleExcelVO.java
@@ -1,7 +1,9 @@
package com.pig4cloud.pigx.admin.api.vo;
+import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@@ -20,6 +22,13 @@ public class RoleExcelVO implements Serializable {
private static final long serialVersionUID = 1L;
+ /**
+ * 导入时候回显行号
+ */
+ @ExcelLine
+ @ExcelIgnore
+ private Long lineNum;
+
/**
* 主键ID
*/
diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java
index d60109641..0195f3302 100644
--- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java
+++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java
@@ -1,7 +1,9 @@
package com.pig4cloud.pigx.admin.api.vo;
+import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@@ -20,6 +22,13 @@ public class UserExcelVO implements Serializable {
private static final long serialVersionUID = 1L;
+ /**
+ * 导入时候回显行号
+ */
+ @ExcelLine
+ @ExcelIgnore
+ private Long lineNum;
+
/**
* 主键ID
*/
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java
index c4c7027da..f7853823f 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java
@@ -60,8 +60,7 @@ public class SysPostServiceImpl extends ServiceImpl impl
List postList = this.list();
// 执行数据插入操作 组装 PostDto
- for (int i = 0; i < excelVOList.size(); i++) {
- PostExcelVO excel = excelVOList.get(i);
+ for (PostExcelVO excel : excelVOList) {
Set errorMsg = new HashSet<>();
// 检验岗位名称或者岗位编码是否存在
boolean existPost = postList.stream().anyMatch(post -> excel.getPostName().equals(post.getPostName())
@@ -78,7 +77,7 @@ public class SysPostServiceImpl extends ServiceImpl impl
}
else {
// 数据不合法
- errorMessageList.add(new ErrorMessage((long) (i + 2), errorMsg));
+ errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg));
}
}
if (CollUtil.isNotEmpty(errorMessageList)) {
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java
index 155343a22..173d6481f 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java
@@ -118,9 +118,11 @@ public class SysRoleServiceImpl extends ServiceImpl impl
// 个性化校验逻辑
List roleList = this.list();
+ for (RoleExcelVO excel : excelVOList) {
+
+ }
// 执行数据插入操作 组装 RoleDto
- for (int i = 0; i < excelVOList.size(); i++) {
- RoleExcelVO excel = excelVOList.get(i);
+ for (RoleExcelVO excel : excelVOList) {
Set errorMsg = new HashSet<>();
// 检验角色名称或者角色编码是否存在
boolean existRole = roleList.stream().anyMatch(sysRole -> excel.getRoleName().equals(sysRole.getRoleName())
@@ -137,7 +139,7 @@ public class SysRoleServiceImpl extends ServiceImpl impl
}
else {
// 数据不合法情况
- errorMessageList.add(new ErrorMessage((long) (i + 2), errorMsg));
+ errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg));
}
}
if (CollUtil.isNotEmpty(errorMessageList)) {
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java
index 67a0d0fcf..a87c8a3e3 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java
@@ -288,8 +288,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
List roleList = sysRoleService.list();
// 执行数据插入操作 组装 UserDto
- for (int i = 0; i < excelVOList.size(); i++) {
- UserExcelVO excel = excelVOList.get(i);
+ for (UserExcelVO excel : excelVOList) {
Set errorMsg = new HashSet<>();
// 校验用户名是否存在
boolean exsitUserName = userList.stream()
@@ -322,7 +321,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
}
else {
// 数据不合法情况
- errorMessageList.add(new ErrorMessage((long) (i + 2), errorMsg));
+ errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg));
}
}
diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/CustomMagicDesignerAuthorizationInterceptor.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/CustomMagicDesignerAuthorizationInterceptor.java
index 203b523e1..9a2675b58 100644
--- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/CustomMagicDesignerAuthorizationInterceptor.java
+++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/CustomMagicDesignerAuthorizationInterceptor.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
+import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
@@ -48,8 +49,7 @@ public class CustomMagicDesignerAuthorizationInterceptor implements Authorizatio
public boolean allowVisit(MagicUser magicUser, HttpServletRequest request, Authorization authorization) {
String accessToken = extractHeaderToken(request);
if (StrUtil.isBlank(accessToken)) {
- return true;
- // throw new AccessDeniedException("权限不足");
+ throw new AccessDeniedException("权限不足");
}
OAuth2Authentication oAuth2Authentication = tokenServices.loadAuthentication(accessToken);