parent
fe5c64a665
commit
bbb8917039
|
@ -3,6 +3,8 @@ package shkd.sys.sys.plugin.report.util;
|
|||
import dm.jdbc.util.StringUtil;
|
||||
import kd.bos.cache.CacheFactory;
|
||||
import kd.bos.cache.TempFileCache;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.IMetadata;
|
||||
import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.report.IReportListModel;
|
||||
|
@ -17,10 +19,7 @@ import java.nio.file.Files;
|
|||
import java.nio.file.Path;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
@ -46,9 +45,15 @@ public class ExportCSV extends AbstractReportFormPlugin {
|
|||
DataEntityPropertyCollection properties = dataEntityType.getProperties();
|
||||
String reportName = dataEntityType.getDisplayName().getLocaleValue();
|
||||
|
||||
// List<String> header = properties.stream()
|
||||
// .map(o -> o.getDisplayName().getLocaleValue())
|
||||
// .collect(Collectors.toList());
|
||||
List<String> keyHeaders = properties.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(IMetadata::getName)
|
||||
.collect(Collectors.toList());
|
||||
List<String> headers = properties.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(o -> Objects.nonNull(o.getDisplayName()))
|
||||
.map(o -> o.getDisplayName().getLocaleValue())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
String timestamp = LocalDateTime.now()
|
||||
.format(DateTimeFormatter.ofPattern("yyyyMMddHHmm"));
|
||||
|
@ -59,14 +64,32 @@ public class ExportCSV extends AbstractReportFormPlugin {
|
|||
|
||||
IReportListModel reportList = ((ReportList) this.getControl("reportlistap")).getReportModel();
|
||||
int rowCount = reportList.getRowCount();
|
||||
List<Object> rows = IntStream.range(1, rowCount)
|
||||
.mapToObj(reportList::getRowData)
|
||||
|
||||
DynamicObjectCollection rowData = reportList.getRowData(0, rowCount, false);
|
||||
|
||||
List<List<?>> rows2 = rowData.stream()
|
||||
.map(obj -> keyHeaders.stream()
|
||||
.map(obj::get) // 使用 DynamicObject 的 get 方法获取属性值
|
||||
.collect(Collectors.toList()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
try {
|
||||
// DateUtils.get
|
||||
// 定义本地测试目录和完整文件路径
|
||||
// String localDir = "D:\\test";
|
||||
// Path dirPath = java.nio.file.Paths.get(localDir);
|
||||
// if (!Files.exists(dirPath)) {
|
||||
// Files.createDirectories(dirPath); // 确保目录存在
|
||||
// }
|
||||
//
|
||||
// Path tempFile = dirPath.resolve(reportName + reportNameExt + ".csv");
|
||||
// CsvExportUtil.writeCsvToFile(tempFile, headers, rows2);
|
||||
//
|
||||
// // 打印文件路径用于本地验证
|
||||
// System.out.println("CSV 文件已保存至: " + tempFile.toAbsolutePath());
|
||||
|
||||
Path tempFile = Files.createTempFile(reportName + reportNameExt, ".csv");
|
||||
CsvExportUtil.writeCsvToFile(tempFile,null, Collections.singleton(rows));
|
||||
CsvExportUtil.writeCsvToFile(tempFile, headers, rows2);
|
||||
// 上传到临时文件服务器 获取压缩包下载地址
|
||||
TempFileCache tempFileCache = CacheFactory.getCommonCacheFactory().getTempFileCache();
|
||||
String url = tempFileCache.saveAsUrl(tempFile.getFileName().toString(), Files.newInputStream(tempFile), 3 * 60);
|
||||
|
|
Loading…
Reference in New Issue