From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示

---
 Source/BladeX-Tool/blade-starter-report/src/main/java/org/springblade/core/report/provider/DatabaseProvider.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-starter-report/src/main/java/org/springblade/core/report/provider/DatabaseProvider.java b/Source/BladeX-Tool/blade-starter-report/src/main/java/org/springblade/core/report/provider/DatabaseProvider.java
new file mode 100644
index 0000000..2790e2e
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-report/src/main/java/org/springblade/core/report/provider/DatabaseProvider.java
@@ -0,0 +1,111 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package org.springblade.core.report.provider;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.bstek.ureport.provider.report.ReportFile;
+import com.bstek.ureport.provider.report.ReportProvider;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.report.entity.ReportFileEntity;
+import org.springblade.core.report.props.ReportDatabaseProperties;
+import org.springblade.core.report.service.IReportFileService;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鏁版嵁搴撴枃浠跺鐞�
+ *
+ * @author Chill
+ */
+@AllArgsConstructor
+public class DatabaseProvider implements ReportProvider {
+
+	private final ReportDatabaseProperties properties;
+	private final IReportFileService service;
+
+	@Override
+	public InputStream loadReport(String file) {
+		ReportFileEntity reportFileEntity = service.getOne(Wrappers.<ReportFileEntity>lambdaQuery().eq(ReportFileEntity::getName, getFileName(file)));
+		byte[] content = reportFileEntity.getContent();
+		return new ByteArrayInputStream(content);
+	}
+
+	@Override
+	public void deleteReport(String file) {
+		service.remove(Wrappers.<ReportFileEntity>lambdaUpdate().eq(ReportFileEntity::getName, getFileName(file)));
+	}
+
+	@Override
+	public List<ReportFile> getReportFiles() {
+		List<ReportFileEntity> list = service.list();
+		List<ReportFile> reportFiles = new ArrayList<>();
+		list.forEach(reportFileEntity -> reportFiles.add(new ReportFile(reportFileEntity.getName(), reportFileEntity.getUpdateTime())));
+		return reportFiles;
+	}
+
+	@Override
+	public void saveReport(String file, String content) {
+		String fileName = getFileName(file);
+		ReportFileEntity reportFileEntity = service.getOne(Wrappers.<ReportFileEntity>lambdaQuery().eq(ReportFileEntity::getName, fileName));
+		Date now = DateUtil.now();
+		if (reportFileEntity == null) {
+			reportFileEntity = new ReportFileEntity();
+			reportFileEntity.setName(fileName);
+			reportFileEntity.setContent(content.getBytes());
+			reportFileEntity.setCreateTime(now);
+			reportFileEntity.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+		} else {
+			reportFileEntity.setContent(content.getBytes());
+		}
+		reportFileEntity.setUpdateTime(now);
+		service.saveOrUpdate(reportFileEntity);
+	}
+
+	@Override
+	public String getName() {
+		return properties.getName();
+	}
+
+	@Override
+	public boolean disabled() {
+		return properties.isDisabled();
+	}
+
+	@Override
+	public String getPrefix() {
+		return properties.getPrefix();
+	}
+
+	/**
+	 * 鑾峰彇鏍囧噯鏍煎紡鏂囦欢鍚�
+	 *
+	 * @param name 鍘熸枃浠跺悕
+	 */
+	private String getFileName(String name) {
+		if (name.startsWith(getPrefix())) {
+			name = name.substring(getPrefix().length());
+		}
+		return name;
+	}
+
+}

--
Gitblit v1.9.3