diff --git a/EasyExcel/pom.xml b/EasyExcel/pom.xml
index 7c07ee3..521a335 100644
--- a/EasyExcel/pom.xml
+++ b/EasyExcel/pom.xml
@@ -6,7 +6,7 @@
com.netease.lowcode.extensions
EasyExcel
- 2.4.2
+ 2.5.0
8
@@ -122,7 +122,7 @@
1.7.1
false
-
+ true
diff --git a/EasyExcel/src/main/java/com/netease/lowcode/extensions/EasyExcelTools.java b/EasyExcel/src/main/java/com/netease/lowcode/extensions/EasyExcelTools.java
index f60302b..5aaf920 100644
--- a/EasyExcel/src/main/java/com/netease/lowcode/extensions/EasyExcelTools.java
+++ b/EasyExcel/src/main/java/com/netease/lowcode/extensions/EasyExcelTools.java
@@ -433,7 +433,7 @@ public static ExcelResponse createExcelWithUrl(CustomExcelData excelData) {
}
/**
- * [推荐] 解析excel
+ * [推荐] 解析excel-数据传入handle
*
* @param handle
* @param request
@@ -474,6 +474,48 @@ public static ParseBigDataResponse parseBigDataExcel(Function, Stri
return ParseBigDataResponse.OK(readListener.getTotal());
}
+
+ /**
+ * [推荐] 解析excel-数据直接返回
+ *
+ * @param request
+ * @return
+ */
+ @NaslLogic
+ public static ParseBigDataResponse parseBigDataExcelNoSave(ParseRequest request) {
+
+ if (Objects.isNull(request) || StringUtils.isBlank(request.fullClassName)) {
+ return ParseBigDataResponse.FAIL("请求参数为空,fullClassName不能为空!");
+ }
+ if (StringUtils.isBlank(request.url)) {
+ return ParseBigDataResponse.FAIL("文件url不能为空!");
+ }
+ Class> clazz;
+ try {
+ clazz = Class.forName(request.getFullClassName(), false, Thread.currentThread().getContextClassLoader());
+ } catch (ClassNotFoundException e) {
+ log.error("加载类失败", e);
+ return ParseBigDataResponse.FAIL(String.format("加载类[%s]失败!", request.getFullClassName()), e.getMessage() + Arrays.toString(e.getStackTrace()));
+ }
+
+ LibraryReadListener> readListener = new LibraryReadListener<>(null, clazz, request, fileUtils);
+ SimpleReadCacheSelector simpleReadCacheSelector = new SimpleReadCacheSelector();
+ // 放多少批数据在内存,默认20
+ if (Objects.nonNull(request.getMaxCacheActivateBatchCount())) {
+ simpleReadCacheSelector.setMaxCacheActivateBatchCount(request.getMaxCacheActivateBatchCount());
+ }
+ try (InputStream inputStream = openUrlStream(request.getUrl())) {
+ EasyExcel.read(inputStream, clazz, readListener).readCacheSelector(simpleReadCacheSelector).sheet().doRead();
+ } catch (RuntimeException e) {
+ log.error("excel解析失败", e);
+ return ParseBigDataResponse.FAIL("excel解析失败!", e.getMessage() + Arrays.toString(e.getStackTrace()));
+ } catch (IOException e) {
+ log.error("文件下载失败", e);
+ return ParseBigDataResponse.FAIL("文件下载失败", e.getMessage() + Arrays.toString(e.getStackTrace()));
+ }
+ return ParseBigDataResponse.OK(readListener.getTotal(), readListener.getCachedDataList());
+ }
+
/**
* [推荐使用]导出大数据量excel
*
diff --git a/EasyExcel/src/main/java/com/netease/lowcode/extensions/listeners/LibraryReadListener.java b/EasyExcel/src/main/java/com/netease/lowcode/extensions/listeners/LibraryReadListener.java
index 1db2519..6d32318 100644
--- a/EasyExcel/src/main/java/com/netease/lowcode/extensions/listeners/LibraryReadListener.java
+++ b/EasyExcel/src/main/java/com/netease/lowcode/extensions/listeners/LibraryReadListener.java
@@ -85,7 +85,7 @@ public LibraryReadListener(Function, String> handle, Class type,
}
- private List toJsonString(List data) {
+ public List toJsonString(List data) {
// https://blog.csdn.net/fenglllle/article/details/114293427
// 使用fastjson2会出现classloader问题(cast to exception)
@@ -131,8 +131,10 @@ public void invoke(T data, AnalysisContext context) {
// 解析到一条数据,加入缓存
cachedDataList.add(data);
if (cachedDataList.size() >= BATCH_COUNT) {
- // 调用function处理数据
- handle.apply(toJsonString(cachedDataList));
+ if (handle != null) {
+ // 调用function处理数据
+ handle.apply(toJsonString(cachedDataList));
+ }
// 处理完清理list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
@@ -216,8 +218,10 @@ private void fillPicture(T data, AnalysisContext context) {
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
- // 调用function处理数据
- handle.apply(toJsonString(cachedDataList));
+ if (handle != null) {
+ // 调用function处理数据
+ handle.apply(toJsonString(cachedDataList));
+ }
// 数据处理完成
}
@@ -241,6 +245,15 @@ public boolean hasNext(AnalysisContext context) {
return ReadListener.super.hasNext(context);
}
+ /**
+ * 获取缓存数据
+ *
+ * @return
+ */
+ public List getCachedDataList() {
+ return toJsonString(cachedDataList);
+ }
+
/**
* 获取导入数量
*
diff --git a/EasyExcel/src/main/java/com/netease/lowcode/extensions/response/ParseBigDataResponse.java b/EasyExcel/src/main/java/com/netease/lowcode/extensions/response/ParseBigDataResponse.java
index 1708d89..8914acb 100644
--- a/EasyExcel/src/main/java/com/netease/lowcode/extensions/response/ParseBigDataResponse.java
+++ b/EasyExcel/src/main/java/com/netease/lowcode/extensions/response/ParseBigDataResponse.java
@@ -2,6 +2,8 @@
import com.netease.lowcode.core.annotation.NaslStructure;
+import java.util.List;
+
@NaslStructure
public class ParseBigDataResponse {
@@ -12,12 +14,16 @@ public class ParseBigDataResponse {
public Double cost;// 处理耗时,单位 s
public Double size;// 文件大小,单位字节
public Long total;// 统计导入条数
+ /**
+ * 数据列表
+ */
+ public List dataList;
public static ParseBigDataResponse FAIL(String msg) {
- return FAIL(msg,null);
+ return FAIL(msg, null);
}
- public static ParseBigDataResponse FAIL(String msg,String trace){
+ public static ParseBigDataResponse FAIL(String msg, String trace) {
ParseBigDataResponse fail = new ParseBigDataResponse();
fail.setSuccess(false);
fail.setMsg(msg);
@@ -29,6 +35,13 @@ public static ParseBigDataResponse OK() {
return OK("success");
}
+ public static ParseBigDataResponse OK(Long total, List dataList) {
+ ParseBigDataResponse ok = OK();
+ ok.setTotal(total);
+ ok.setDataList(dataList);
+ return ok;
+ }
+
public static ParseBigDataResponse OK(Long total) {
ParseBigDataResponse ok = OK();
ok.setTotal(total);
@@ -42,6 +55,10 @@ public static ParseBigDataResponse OK(String msg) {
return ok;
}
+ public void setDataList(List dataList) {
+ this.dataList = dataList;
+ }
+
public Boolean getSuccess() {
return success;
}
diff --git a/async_function_pool/pom.xml b/async_function_pool/pom.xml
index 68ca28d..b5595be 100644
--- a/async_function_pool/pom.xml
+++ b/async_function_pool/pom.xml
@@ -12,7 +12,7 @@
com.netease
async_function_pool
- 1.1.0
+ 1.3.2
8
@@ -39,6 +39,7 @@
lcap-annotation
com.netease.lowcode
1.0.4
+ provided
org.slf4j
@@ -75,7 +76,7 @@
1.4.3
false
- true
+
diff --git a/async_function_pool/src/main/java/com/netease/lib/tasks/api/FunctionManagerApi.java b/async_function_pool/src/main/java/com/netease/lib/tasks/api/FunctionManagerApi.java
index 20f207a..fe456e6 100644
--- a/async_function_pool/src/main/java/com/netease/lib/tasks/api/FunctionManagerApi.java
+++ b/async_function_pool/src/main/java/com/netease/lib/tasks/api/FunctionManagerApi.java
@@ -26,7 +26,7 @@
@Component
public class FunctionManagerApi {
- private static final Logger logger = LoggerFactory.getLogger("LCAP_CUSTOMIZE_LOGGER");
+ private static final Logger logger = LoggerFactory.getLogger("LCAP_EXTENSION_LOGGER");
/**
* 逻辑关键词,逻辑
diff --git a/async_function_pool/src/main/java/com/netease/lib/tasks/aspect/ExtensionAsyncLogicExcuteAspect.java b/async_function_pool/src/main/java/com/netease/lib/tasks/aspect/ExtensionAsyncLogicExcuteAspect.java
index abe73f2..e0ddbc4 100644
--- a/async_function_pool/src/main/java/com/netease/lib/tasks/aspect/ExtensionAsyncLogicExcuteAspect.java
+++ b/async_function_pool/src/main/java/com/netease/lib/tasks/aspect/ExtensionAsyncLogicExcuteAspect.java
@@ -16,8 +16,6 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
-import static java.lang.Thread.sleep;
-
@Aspect
@Component
public class ExtensionAsyncLogicExcuteAspect {
@@ -37,7 +35,6 @@ public Object aroundCustomizeServiceMethods(ProceedingJoinPoint joinPoint) throw
}
CompletableFuture