瀏覽代碼

实现异步导入功能

wanggaokun 1 年之前
父節點
當前提交
95840da508

+ 36 - 0
eco-common/common-excel/src/main/java/org/eco/common/excel/service/IExcelService.java

@@ -0,0 +1,36 @@
+package org.eco.common.excel.service;
+
+import jakarta.servlet.http.HttpServletResponse;
+import org.eco.common.excel.core.ExcelListener;
+import org.springframework.scheduling.annotation.Async;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @Description: IExcelService 接口
+ * @Author: GaoKun Wang
+ * @Date: 2024/6/26
+ */
+public interface IExcelService {
+
+    /**
+     * 使用自定义监听器 异步导入 自定义返回
+     *
+     * @param is       输入流
+     * @param clazz    对象类型
+     * @param listener 自定义监听器
+     */
+    @Async
+    <T> void importExcel(InputStream is, Class<T> clazz, ExcelListener<T> listener);
+
+
+    /**
+     * 导出excel
+     *
+     * @param list      导出数据集合
+     * @param sheetName 工作表的名称
+     * @param clazz     实体类
+     */
+    <T> void exportExcel(List<T> list, String sheetName, Class<T> clazz, HttpServletResponse response);
+}

+ 33 - 0
eco-common/common-excel/src/main/java/org/eco/common/excel/service/impl/ExcelService.java

@@ -0,0 +1,33 @@
+package org.eco.common.excel.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.common.excel.core.ExcelListener;
+import org.eco.common.excel.service.IExcelService;
+import org.eco.common.excel.utils.ExcelUtil;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @Description: ExcelService 实现类
+ * @Author: GaoKun Wang
+ * @Date: 2024/6/26
+ */
+@Service
+@Slf4j
+public class ExcelService implements IExcelService {
+    @Override
+    public <T> void importExcel(InputStream is, Class<T> clazz, ExcelListener<T> listener) {
+        EasyExcel.read(is, clazz, listener).sheet().doRead();
+    }
+
+    @Override
+    @Async
+    public <T> void exportExcel(List<T> list, String sheetName, Class<T> clazz, HttpServletResponse response) {
+        ExcelUtil.exportExcel(list, sheetName, clazz, response);
+    }
+}

+ 4 - 8
eco-common/common-excel/src/main/java/org/eco/common/excel/utils/ExcelUtil.java

@@ -10,6 +10,10 @@ import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.metadata.fill.FillConfig;
 import com.alibaba.excel.write.metadata.fill.FillConfig;
 import com.alibaba.excel.write.metadata.fill.FillWrapper;
 import com.alibaba.excel.write.metadata.fill.FillWrapper;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import org.eco.common.core.utils.StringUtils;
 import org.eco.common.core.utils.StringUtils;
 import org.eco.common.core.utils.file.FileUtils;
 import org.eco.common.core.utils.file.FileUtils;
 import org.eco.common.excel.convert.ExcelBigNumberConvert;
 import org.eco.common.excel.convert.ExcelBigNumberConvert;
@@ -19,10 +23,6 @@ import org.eco.common.excel.core.DropDownOptions;
 import org.eco.common.excel.core.ExcelDownHandler;
 import org.eco.common.excel.core.ExcelDownHandler;
 import org.eco.common.excel.core.ExcelListener;
 import org.eco.common.excel.core.ExcelListener;
 import org.eco.common.excel.core.ExcelResult;
 import org.eco.common.excel.core.ExcelResult;
-import jakarta.servlet.ServletOutputStream;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 
 
 import java.io.IOException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
@@ -206,10 +206,6 @@ public class ExcelUtil {
         builder.doWrite(list);
         builder.doWrite(list);
     }
     }
 
 
-    public void uploadOss (OutputStream os ) {
-
-    }
-
     /**
     /**
      * 单表多数据模板导出 模板格式为 {.属性}
      * 单表多数据模板导出 模板格式为 {.属性}
      *
      *

+ 7 - 6
eco-common/common-orm/src/main/java/org/eco/common/orm/listener/EntityInsertListener.java

@@ -2,10 +2,10 @@ package org.eco.common.orm.listener;
 
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpStatus;
 import cn.hutool.http.HttpStatus;
+import com.mybatisflex.annotation.InsertListener;
 import org.eco.common.core.exception.BusinessException;
 import org.eco.common.core.exception.BusinessException;
 import org.eco.common.orm.core.domain.BaseEntity;
 import org.eco.common.orm.core.domain.BaseEntity;
 import org.eco.common.security.utils.LoginHelper;
 import org.eco.common.security.utils.LoginHelper;
-import com.mybatisflex.annotation.InsertListener;
 
 
 import java.util.Date;
 import java.util.Date;
 
 
@@ -20,15 +20,16 @@ public class EntityInsertListener implements InsertListener {
     public void onInsert(Object entity) {
     public void onInsert(Object entity) {
         try {
         try {
             if (ObjectUtil.isNotNull(entity) && (entity instanceof BaseEntity baseEntity)) {
             if (ObjectUtil.isNotNull(entity) && (entity instanceof BaseEntity baseEntity)) {
-
                 Long loginUserId = LoginHelper.getUserId();
                 Long loginUserId = LoginHelper.getUserId();
-
                 Date createTime = ObjectUtil.isNotNull(baseEntity.getCreateTime())
                 Date createTime = ObjectUtil.isNotNull(baseEntity.getCreateTime())
                     ? baseEntity.getCreateTime() : new Date();
                     ? baseEntity.getCreateTime() : new Date();
-
-                baseEntity.setCreateBy(loginUserId);
+                if (ObjectUtil.isNull(baseEntity.getCreateBy())) {
+                    baseEntity.setCreateBy(loginUserId);
+                }
                 baseEntity.setCreateTime(createTime);
                 baseEntity.setCreateTime(createTime);
-                baseEntity.setUpdateBy(loginUserId);
+                if (ObjectUtil.isNull(baseEntity.getUpdateBy())) {
+                    baseEntity.setUpdateBy(loginUserId);
+                }
                 baseEntity.setUpdateTime(createTime);
                 baseEntity.setUpdateTime(createTime);
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {

+ 3 - 1
eco-common/common-orm/src/main/java/org/eco/common/orm/listener/EntityUpdateListener.java

@@ -19,7 +19,9 @@ public class EntityUpdateListener implements UpdateListener {
     public void onUpdate(Object entity) {
     public void onUpdate(Object entity) {
         try {
         try {
             if (ObjectUtil.isNotNull(entity) && (entity instanceof BaseEntity baseEntity)) {
             if (ObjectUtil.isNotNull(entity) && (entity instanceof BaseEntity baseEntity)) {
-                baseEntity.setUpdateBy(LoginHelper.getUserId());
+                if (ObjectUtil.isNull(baseEntity.getUpdateBy())) {
+                    baseEntity.setUpdateBy(LoginHelper.getUserId());
+                }
                 baseEntity.setUpdateTime(new Date());
                 baseEntity.setUpdateTime(new Date());
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {

+ 2 - 0
eco-modules/system/src/main/java/org/eco/system/domain/vo/SysUserVo.java

@@ -1,5 +1,6 @@
 package org.eco.system.domain.vo;
 package org.eco.system.domain.vo;
 
 
+import lombok.EqualsAndHashCode;
 import org.eco.system.domain.SysUser;
 import org.eco.system.domain.SysUser;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -20,6 +21,7 @@ import java.util.List;
  *
  *
  * @author wgk
  * @author wgk
  */
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Data
 @AutoMapper(target = SysUser.class)
 @AutoMapper(target = SysUser.class)
 public class SysUserVo extends BaseEntity {
 public class SysUserVo extends BaseEntity {