|
@@ -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")
|