Browse Source

#MOD 异步导出

谭斌 2 years ago
parent
commit
751db7a387

+ 8 - 36
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -14,14 +14,12 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.yitter.idgen.YitIdHelper;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
 import com.xy.config.DeviceThreadPoolConfig;
 import com.xy.consts.DictConsts;
 import com.xy.dto.*;
 import com.xy.entity.*;
-import com.xy.enums.FileExportStatus;
 import com.xy.enums.FileExportType;
 import com.xy.error.CommRuntimeException;
 import com.xy.mapper.DeviceInfoMapper;
@@ -34,9 +32,7 @@ import com.xy.utils.enums.DictSonEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import jodd.introspector.MapperFunction;
-import lombok.Cleanup;
 import lombok.RequiredArgsConstructor;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -45,10 +41,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -280,41 +273,20 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
     }
 
 
-    @Async
     @ApiOperation("导出设备(异步)")
     @PostMapping("exportDevices/async")
     public void exportDevicesAsync(@RequestBody @Validated DeviceInfoDto.Page page) {
         PageBean<DeviceInfoDto.Vo2> pageBean = queryPage(page);
         List<DeviceInfoDto.Vo2> records = pageBean.getRecords();
         List<DeviceInfoDto.DeviceExcelVO> deviceExcelVOS = BeanUtil.copyToList(records, DeviceInfoDto.DeviceExcelVO.class);
-        //TODO:以下逻辑迁移到SDK公用
-        //新增导出记录
-        long id = YitIdHelper.nextId();
-        String fileName = fileUtils.getFileName(id);
-        String pathName = fileUtils.getPathName(fileName);
-        try {
-            FileExportDto.Save fileExport = new FileExportDto.Save().setId(id)
-                    .setExportStatus(FileExportStatus.EXPORT_ING.getCode())
-                    .setFileType(FileExportType.DEVICE_INFO.getCode()).setFileName(fileName);
-            R.feignCheck(fileExportService.save(fileExport));
-            @Cleanup OutputStream out = new FileOutputStream(pathName);
-            ExcelUtils.writeOutputStream(out, "设备列表", DeviceInfoDto.DeviceExcelVO.class, deviceExcelVOS);
-            fileExportService.updateExportStatus(id, FileExportStatus.EXPORT_LOCAL_SUCESS.getCode());
-
-            FileInputStream fis = new FileInputStream(pathName);
-            String cloudUrl = AliOssUtil.upload(fis, ExcelUtils.EXCEL_PREFIX + fileName);
-            if (StrUtil.isEmpty(cloudUrl)) {
-                fileExportService.updateExportStatus(id, FileExportStatus.EXPORT_FAILED.getCode());
-                return;
-            }
-            //更新状态与文件地址
-            fileExportService.updateExportStatus(id, FileExportStatus.EXPORT_CLOUD_SUCESS.getCode(), cloudUrl);
-            //删除本地文件
-            fileUtils.deleteFile(pathName);
-
-        } catch (Exception e) {
-            fileExportService.updateExportStatus(id, FileExportStatus.EXPORT_FAILED.getCode());
-        }
+        //异步导出参数封装
+        ExcelDTO<DeviceInfoDto.DeviceExcelVO> excelDTO = new ExcelDTO<>();
+        excelDTO.setData(deviceExcelVOS);
+        excelDTO.setHead(DeviceInfoDto.DeviceExcelVO.class);
+        excelDTO.setSheetName(FileExportType.DEVICE_INFO.getDescription());
+        excelDTO.setFileExportType(FileExportType.DEVICE_INFO);
+        //执行导出
+        fileExportService.exportExcelAsync(excelDTO);
     }
 
     @PostMapping("nearbyPage")