Bläddra i källkod

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

18339543638 2 år sedan
förälder
incheckning
46ad12dfa6

+ 31 - 0
tr-modules-api/tr-module-export-api/src/main/java/cn/tr/module/export/handler/AbstractDataHandler.java

@@ -1,9 +1,14 @@
 package cn.tr.module.export.handler;
 package cn.tr.module.export.handler;
 
 
 
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ReflectUtil;
 import cn.tr.core.utils.ValidationUtils;
 import cn.tr.core.utils.ValidationUtils;
+import cn.tr.module.register.ExportSampleRegister;
 import lombok.Getter;
 import lombok.Getter;
+import org.springframework.util.ReflectionUtils;
 
 
+import java.util.*;
 import javax.validation.Validation;
 import javax.validation.Validation;
 import javax.validation.Validator;
 import javax.validation.Validator;
 import java.util.Map;
 import java.util.Map;
@@ -22,6 +27,32 @@ public abstract class AbstractDataHandler<T> implements DataHandler<T> {
 
 
     public AbstractDataHandler(Class<T> aClass) {
     public AbstractDataHandler(Class<T> aClass) {
         this.aClass = aClass;
         this.aClass = aClass;
+        List<T> sample = getSample();
+        if(CollectionUtil.isEmpty(sample)){
+            sample=new ArrayList<>();
+        }else {
+            sample=new ArrayList<>(sample);
+        }
+        sample.add(buildDefaultOb());
+        ExportSampleRegister.registerSample(aClass,sample);
+    }
+
+    private T buildDefaultOb(){
+        T t = ReflectUtil.newInstance(aClass);
+        ReflectionUtils.doWithFields(aClass,field -> {
+            if(String.class.equals(field.getType())){
+                field.setAccessible(true);
+                field.set(t,"……");
+            }
+        });
+        return t;
+    }
+    /**
+     * 模板中的样例数组
+     * @return
+     */
+    public List<T> getSample(){
+        return null;
     }
     }
 
 
     @Override
     @Override

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

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

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

@@ -1,21 +0,0 @@
-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);
-    }
-}

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

@@ -3,6 +3,7 @@ package cn.tr.module.excel.core.service;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.tr.module.api.sys.storage.SysStorageApi;
 import cn.tr.module.api.sys.storage.SysStorageApi;
 import cn.tr.module.excel.core.constant.ExcelConstant;
 import cn.tr.module.excel.core.constant.ExcelConstant;
 import cn.tr.module.excel.core.dto.ExcelTemplateDescDTO;
 import cn.tr.module.excel.core.dto.ExcelTemplateDescDTO;
@@ -10,7 +11,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.CustomCellWriteHandler;
 import cn.tr.module.excel.core.handler.write.CustomHorizontalCellStyleStrategy;
 import cn.tr.module.excel.core.handler.write.CustomHorizontalCellStyleStrategy;
 import cn.tr.module.excel.core.handler.write.CustomSheetWriteHandler;
 import cn.tr.module.excel.core.handler.write.CustomSheetWriteHandler;
-import cn.tr.module.excel.core.register.ExportSampleRegister;
+import cn.tr.module.register.ExportSampleRegister;
 import cn.tr.module.excel.core.utils.ExcelTemplateDescUtil;
 import cn.tr.module.excel.core.utils.ExcelTemplateDescUtil;
 import cn.tr.module.excel.core.utils.StyleUtils;
 import cn.tr.module.excel.core.utils.StyleUtils;
 import cn.tr.module.excel.sheet.dto.SysExportSheetDTO;
 import cn.tr.module.excel.sheet.dto.SysExportSheetDTO;
@@ -44,6 +45,9 @@ public class ExcelService {
     private static HorizontalCellStyleStrategy horizontalCellStyleStrategy =
     private static HorizontalCellStyleStrategy horizontalCellStyleStrategy =
             new CustomHorizontalCellStyleStrategy(StyleUtils.getHeadStyle(), StyleUtils.getContentStyle());
             new CustomHorizontalCellStyleStrategy(StyleUtils.getHeadStyle(), StyleUtils.getContentStyle());
 
 
+    private static HorizontalCellStyleStrategy horizontalSampleCellStyleStrategy =
+            new CustomHorizontalCellStyleStrategy(StyleUtils.getHeadStyle(), StyleUtils.getSampleContentStyle());
+
     @Autowired
     @Autowired
     private ISysExportSheetService exportSheetService;
     private ISysExportSheetService exportSheetService;
 
 
@@ -129,7 +133,7 @@ public class ExcelService {
 
 
     private <T> void createSheet(ExcelWriter excelWriter,int sheetNo,String sheetName,Class<T> aClass, Collection<T> data){
     private <T> void createSheet(ExcelWriter excelWriter,int sheetNo,String sheetName,Class<T> aClass, Collection<T> data){
         WriteSheet writeSheet = EasyExcel.writerSheet(sheetNo, sheetName)
         WriteSheet writeSheet = EasyExcel.writerSheet(sheetNo, sheetName)
-                .registerWriteHandler(horizontalCellStyleStrategy)
+                .registerWriteHandler(StrUtil.contains(sheetName, "样例")?horizontalSampleCellStyleStrategy:horizontalCellStyleStrategy)
                 .registerWriteHandler(new SimpleColumnWidthStyleStrategy(13))
                 .registerWriteHandler(new SimpleColumnWidthStyleStrategy(13))
                 .registerWriteHandler(new SimpleRowHeightStyleStrategy((short) 20, (short) 20))
                 .registerWriteHandler(new SimpleRowHeightStyleStrategy((short) 20, (short) 20))
                 .registerWriteHandler(new CustomCellWriteHandler())
                 .registerWriteHandler(new CustomCellWriteHandler())

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

@@ -3,7 +3,6 @@ package cn.tr.module.excel.core.utils;
 import com.alibaba.excel.write.metadata.style.WriteCellStyle;
 import com.alibaba.excel.write.metadata.style.WriteCellStyle;
 import com.alibaba.excel.write.metadata.style.WriteFont;
 import com.alibaba.excel.write.metadata.style.WriteFont;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.xssf.usermodel.XSSFCellStyle;
 
 
 /**
 /**
  * @ClassName : StyleUtils
  * @ClassName : StyleUtils
@@ -24,7 +23,7 @@ public class StyleUtils {
         // 头的策略
         // 头的策略
         WriteCellStyle headWriteCellStyle = new WriteCellStyle();
         WriteCellStyle headWriteCellStyle = new WriteCellStyle();
         // 背景颜色
         // 背景颜色
-        headWriteCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
+        headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
         headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
         headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
         // 字体
         // 字体
         WriteFont headWriteFont = new WriteFont();
         WriteFont headWriteFont = new WriteFont();
@@ -105,6 +104,37 @@ public class StyleUtils {
         return contentWriteCellStyle;
         return contentWriteCellStyle;
     }
     }
 
 
+    public static WriteCellStyle getSampleContentStyle(){
+        // 内容的策略
+        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
+
+        // 背景绿色
+        // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
+        contentWriteCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
+        contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
+
+        // 设置字体
+        contentWriteCellStyle.setWriteFont(getDefaultFont());;
+
+        //设置样式;
+        contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);//设置底边框;
+        contentWriteCellStyle.setBottomBorderColor((short) 0);//设置底边框颜色;
+        contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);  //设置左边框;
+        contentWriteCellStyle.setLeftBorderColor((short) 0);//设置左边框颜色;
+        contentWriteCellStyle.setBorderRight(BorderStyle.THIN);//设置右边框;
+        contentWriteCellStyle.setRightBorderColor((short) 0);//设置右边框颜色;
+        contentWriteCellStyle.setBorderTop(BorderStyle.THIN);//设置顶边框;
+        contentWriteCellStyle.setTopBorderColor((short) 0); ///设置顶边框颜色;
+
+        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 水平居中
+        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
+        contentWriteCellStyle.setWrapped(true); //设置自动换行;
+
+        // contentWriteCellStyle.setShrinkToFit(true);//设置文本收缩至合适
+
+        return contentWriteCellStyle;
+    }
+
     private static WriteFont getDefaultFont(){
     private static WriteFont getDefaultFont(){
         // 设置字体
         // 设置字体
         WriteFont contentWriteFont = new WriteFont();
         WriteFont contentWriteFont = new WriteFont();