Jelajahi Sumber

fix:
execl导入读写失败
feat:
新增删除过期导入任务

18339543638 2 tahun lalu
induk
melakukan
c322e58c98

+ 11 - 2
tr-modules-api/tr-module-export-api/src/main/java/cn/tr/module/export/handler/AbstractCascadeSelectConverter.java

@@ -9,6 +9,8 @@ import cn.hutool.core.util.StrUtil;
 import cn.tr.module.export.annotation.ExcelPropertySupport;
 import cn.tr.module.export.annotation.ExcelSelect;
 import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.Cell;
 import com.alibaba.excel.metadata.GlobalConfiguration;
 import com.alibaba.excel.metadata.data.ReadCellData;
 import com.alibaba.excel.metadata.data.WriteCellData;
@@ -31,11 +33,17 @@ public abstract class AbstractCascadeSelectConverter<T> implements Converter<T>
 
     @Override
     public T convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
-        if(cellData==null||StrUtil.isEmpty(cellData.getStringValue())){
+        if(cellData==null||StrUtil.isEmpty(cellData.getStringValue())||ObjectUtil.isNull(cellData.getNumberValue())){
             return null;
         }
+        CellDataTypeEnum type = cellData.getType();
         ExcelPropertySupport excelPropertySupport = contentProperty.getField().getAnnotation(ExcelPropertySupport.class);
-        String content = cellData.getStringValue();
+        String content = null;
+        if(CellDataTypeEnum.NUMBER.equals(type)){
+            content=String.valueOf(cellData.getNumberValue());
+        }else{
+            content=cellData.getStringValue();
+        }
         //校验是否存在
         T javaValue = excelConverterJavaValue(content,getSelectPairs(getParams(excelPropertySupport)));
         if(ObjectUtil.isNull(javaValue)){
@@ -48,6 +56,7 @@ public abstract class AbstractCascadeSelectConverter<T> implements Converter<T>
         return javaValue;
     }
 
+
     @Override
     public WriteCellData<?> convertToExcelData(T value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
         WriteCellData<String> cellData = new WriteCellData<>("");

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

@@ -35,6 +35,7 @@ import org.springframework.util.ReflectionUtils;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -99,7 +100,7 @@ public class ExcelService {
     public <T> String importExcel(String filename, InputStream inputStream, Class<T> aClass, Map<String,Object> customObj) throws Exception {
         AbstractCascadeSelectConverter.threadLocal.remove();
         byte[] content = IoUtil.readBytes(inputStream);
-        String fileId = storageApi.upload(content,filename);
+        String fileId = storageApi.upload(content,filename, TimeUnit.DAYS.toMillis(30));
         //新增sheet导入记录
         SysExportSheetDTO sheet = new SysExportSheetDTO();
         initSheet(sheet,filename,fileId,aClass);

+ 39 - 0
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/job/ExcelJob.java

@@ -0,0 +1,39 @@
+package cn.tr.module.excel.job;
+
+import cn.tr.core.annotation.TenantIgnore;
+import cn.tr.module.excel.row.po.SysExportRowPO;
+import cn.tr.module.excel.row.repository.SysExportRowRepository;
+import cn.tr.module.excel.row.service.ISysExportRowService;
+import cn.tr.module.excel.sheet.po.SysExportSheetPO;
+import cn.tr.module.excel.sheet.repository.SysExportSheetRepository;
+import cn.tr.module.excel.sheet.service.ISysExportSheetService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @ClassName : ExcelJob
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年10月26日
+ */
+@Component
+public class ExcelJob {
+    @Autowired
+    private SysExportRowRepository exportRowRepository;
+
+    @Autowired
+    private SysExportSheetRepository exportSheetRepository;
+
+    @TenantIgnore
+    public void delExpire(){
+        Date expire = new Date(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(30));
+        exportRowRepository.delete(new LambdaQueryWrapper<SysExportRowPO>()
+                .le(SysExportRowPO::getCreateTime,expire));
+        exportSheetRepository.delete(new LambdaQueryWrapper<SysExportSheetPO>()
+                .le(SysExportSheetPO::getCreateTime,expire));
+    }
+}

+ 2 - 1
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/sheet/service/impl/SysExportSheetServiceImpl.java

@@ -26,6 +26,7 @@ import cn.tr.module.excel.sheet.dto.SysExportSheetDTO;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import cn.tr.module.excel.sheet.service.ISysExportSheetService;
@@ -211,7 +212,7 @@ public class SysExportSheetServiceImpl implements ISysExportSheetService {
             IoUtil.close(excelWriter);
         }
         if(content!=null){
-            return sysStorageApi.upload(content,sheetPO.getFileName());
+            return sysStorageApi.upload(content,sheetPO.getFileName(), TimeUnit.DAYS.toMillis(30));
         }
         return "";
     }