Przeglądaj źródła

feat:
新增ExportSampleRegister类,为导入导出增加样例功能

18339543638 2 lat temu
rodzic
commit
2bf15d7dae

+ 6 - 0
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/handler/write/CustomCellWriteHandler.java

@@ -50,6 +50,12 @@ public class CustomCellWriteHandler implements CellWriteHandler {
             createComboColumn(field,cell);
             //进行日期格式校验
             createDateColumn(field,cell);
+        }else {
+            String sheetName = context.getWriteSheetHolder().getSheetName();
+            if (StrUtil.contains(sheetName, "样例")) {
+                //样例
+                cell.getCellStyle().setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+            }
         }
     }
 

+ 21 - 0
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/register/ExportSampleRegister.java

@@ -0,0 +1,21 @@
+package cn.tr.module.excel.core.register;
+import java.util.*;
+/**
+ * @ClassName : ExportSampleRegister
+ * @Description; 导出的样例注册
+ * @Author : LF
+ * @Date: 2023年09月20日
+ */
+
+public class ExportSampleRegister {
+
+    private static Map<Class<?>,List<?>> sampleMap=new HashMap<>();
+
+    public static <T> void registerSample(Class<T> tClass,List<T> sample){
+        sampleMap.put(tClass,sample);
+    }
+
+    public static <T> List<T> getSample(Class<T> tClass){
+        return (List<T>) sampleMap.get(tClass);
+    }
+}

+ 8 - 5
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/service/ExcelService.java

@@ -1,5 +1,6 @@
 package cn.tr.module.excel.core.service;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.tr.module.api.sys.storage.SysStorageApi;
@@ -9,6 +10,7 @@ import cn.tr.module.excel.core.handler.read.CustomerReadListener;
 import cn.tr.module.excel.core.handler.write.CustomCellWriteHandler;
 import cn.tr.module.excel.core.handler.write.CustomHorizontalCellStyleStrategy;
 import cn.tr.module.excel.core.handler.write.CustomSheetWriteHandler;
+import cn.tr.module.excel.core.register.ExportSampleRegister;
 import cn.tr.module.excel.core.utils.ExcelTemplateDescUtil;
 import cn.tr.module.excel.core.utils.StyleUtils;
 import cn.tr.module.excel.sheet.dto.SysExportSheetDTO;
@@ -23,7 +25,6 @@ import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
 import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
 import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ReflectionUtils;
 
@@ -52,9 +53,6 @@ public class ExcelService {
     @Autowired
     private EventBus eventBus;
 
-    @Autowired
-    @Lazy
-    private ExcelSheetManage sheetManage;
     /**
      * 导出execl
      * @param aClass 导出类型
@@ -65,7 +63,12 @@ public class ExcelService {
     public  <T> byte[] exportExcel(Class<T> aClass, Collection<T> data){
         ByteArrayOutputStream outputStream =new ByteArrayOutputStream();
         ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
-        createSheet(excelWriter,0,"导入(导出)模板",aClass,data);
+        String sheetName="导入(导出)数据";
+        if(CollectionUtil.isEmpty(data)){
+            sheetName=sheetName+"-样例";
+            data=ExportSampleRegister.getSample(aClass);
+        }
+        createSheet(excelWriter,0,sheetName,aClass,data);
         List<ExcelTemplateDescDTO> exportTemplate = ExcelTemplateDescUtil.createExportTemplate(aClass);
         createSheet(excelWriter,1,"模板注释",ExcelTemplateDescDTO.class,exportTemplate);
         IoUtil.flush(outputStream);

+ 0 - 10
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/service/ExcelSheetManage.java

@@ -1,23 +1,15 @@
 package cn.tr.module.excel.core.service;
 
 import cn.hutool.core.util.NumberUtil;
-import cn.tr.module.excel.core.constant.ExcelConstant;
 import cn.tr.module.excel.sheet.po.SysExportSheetPO;
 import cn.tr.module.excel.sheet.service.ISysExportSheetService;
 import org.redisson.api.RBucket;
 import org.redisson.api.RList;
-import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
 import org.springframework.stereotype.Component;
 
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
-import java.util.Map;
-import java.util.Optional;
-import java.util.WeakHashMap;
-import java.util.concurrent.TimeUnit;
 
 /**
  * @ClassName : ExcelSheetManage
@@ -28,11 +20,9 @@ import java.util.concurrent.TimeUnit;
 @Component
 public class ExcelSheetManage {
     private RedissonClient redissonClient;
-    private Map<String, Cache> cacheMap;
     private ISysExportSheetService exportSheetService;
     public ExcelSheetManage(RedissonClient redissonClient, ISysExportSheetService exportSheetService) {
         this.redissonClient = redissonClient;
-        this.cacheMap = new WeakHashMap<>();
         this.exportSheetService=exportSheetService;
     }
 

+ 1 - 1
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/utils/StyleUtils.java

@@ -24,7 +24,7 @@ public class StyleUtils {
         // 头的策略
         WriteCellStyle headWriteCellStyle = new WriteCellStyle();
         // 背景颜色
-        headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+        headWriteCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
         headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
         // 字体
         WriteFont headWriteFont = new WriteFont();