From 163277fd16cbb6f49178c502f6d9c2a9fb50b057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Fri, 16 Oct 2020 11:12:59 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20#1?= =?UTF-8?q?936=20=E6=94=AF=E6=8C=81=20ureport=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pigx-visual/pigx-bi-platform/Dockerfile | 18 ++++ pigx-visual/pigx-bi-platform/pom.xml | 83 +++++++++++++++++ .../pigx/ureport/PigxBiApplication.java | 38 ++++++++ .../config/UreportAutoConfiguration.java | 26 ++++++ .../pigx/ureport/config/UreportExtConfig.java | 52 +++++++++++ ...portPropertyPlaceholderConfigurerPlus.java | 24 +++++ .../ureport/provider/DfsReportProvider.java | 91 +++++++++++++++++++ .../spring-configuration-metadata.json | 25 +++++ .../src/main/resources/bootstrap.yml | 18 ++++ .../src/main/resources/logback-spring.xml | 83 +++++++++++++++++ pigx-visual/pom.xml | 1 + pom.xml | 1 + 12 files changed, 460 insertions(+) create mode 100644 pigx-visual/pigx-bi-platform/Dockerfile create mode 100755 pigx-visual/pigx-bi-platform/pom.xml create mode 100755 pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/PigxBiApplication.java create mode 100755 pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportAutoConfiguration.java create mode 100755 pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportExtConfig.java create mode 100755 pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/processor/UReportPropertyPlaceholderConfigurerPlus.java create mode 100755 pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/provider/DfsReportProvider.java create mode 100755 pigx-visual/pigx-bi-platform/src/main/resources/META-INF/spring-configuration-metadata.json create mode 100644 pigx-visual/pigx-bi-platform/src/main/resources/bootstrap.yml create mode 100644 pigx-visual/pigx-bi-platform/src/main/resources/logback-spring.xml diff --git a/pigx-visual/pigx-bi-platform/Dockerfile b/pigx-visual/pigx-bi-platform/Dockerfile new file mode 100644 index 000000000..db83183b2 --- /dev/null +++ b/pigx-visual/pigx-bi-platform/Dockerfile @@ -0,0 +1,18 @@ +FROM pig4cloud/java:8-jre + +MAINTAINER wangiegie@gmail.com + +ENV TZ=Asia/Shanghai +ENV JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom" + +RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN mkdir -p /pigx-bi-platform + +WORKDIR /pigx-bi-platform + +EXPOSE 5006 + +ADD ./target/pigx-bi-platform.jar ./ + +CMD sleep 60;java $JAVA_OPTS -jar pigx-bi-platform.jar diff --git a/pigx-visual/pigx-bi-platform/pom.xml b/pigx-visual/pigx-bi-platform/pom.xml new file mode 100755 index 000000000..2725c6a0f --- /dev/null +++ b/pigx-visual/pigx-bi-platform/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + + com.pig4cloud + pigx-visual + 3.10.0 + + + pigx-bi-platform + jar + + 基于 ureport 的报表系统 + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.pig4cloud + pigx-common-sentinel + + + + com.bstek.ureport + ureport2-console + ${ureport.version} + + + + mysql + mysql-connector-java + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-undertow + + + + + javax.servlet + javax.servlet-api + + + + + com.pig4cloud + pigx-common-oss + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + io.fabric8 + docker-maven-plugin + + false + + + + + diff --git a/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/PigxBiApplication.java b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/PigxBiApplication.java new file mode 100755 index 000000000..b959114e6 --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/PigxBiApplication.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2018-2025, lengleng 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 pig4cloud.com 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: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.ureport; + +import org.springframework.boot.SpringApplication; +import org.springframework.cloud.client.SpringCloudApplication; + +/** + * @author lengleng + * @date 2020-10-15 报表模块 + *

+ * 此模块由于使用的是ureport 封装报表设计器,无法区分租户权限较大建议不提供具体租户使用。 + *

+ * http://127.0.0.1:5006/ureport/designer + */ +@SpringCloudApplication +public class PigxBiApplication { + + public static void main(String[] args) { + SpringApplication.run(PigxBiApplication.class, args); + } + +} diff --git a/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportAutoConfiguration.java b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportAutoConfiguration.java new file mode 100755 index 000000000..dd8fd416b --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportAutoConfiguration.java @@ -0,0 +1,26 @@ +package com.pig4cloud.pigx.ureport.config; + +import com.bstek.ureport.console.UReportServlet; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; + +/** + * @author lengleng + * @date 2020/7/25 + *

+ * ureport 配置类 + */ +@Configuration(proxyBeanMethods = false) +@ImportResource(UreportAutoConfiguration.CONTEXT) +public class UreportAutoConfiguration { + + static final String CONTEXT = "classpath:ureport-console-context.xml"; + + @Bean + public ServletRegistrationBean buildUreportServlet() { + return new ServletRegistrationBean<>(new UReportServlet(), "/ureport/*"); + } + +} diff --git a/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportExtConfig.java b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportExtConfig.java new file mode 100755 index 000000000..27cf097b2 --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/config/UreportExtConfig.java @@ -0,0 +1,52 @@ +package com.pig4cloud.pigx.ureport.config; + +import com.bstek.ureport.UReportPropertyPlaceholderConfigurer; +import com.bstek.ureport.provider.report.ReportProvider; +import com.pig4cloud.pigx.common.oss.OssProperties; +import com.pig4cloud.pigx.common.oss.service.OssTemplate; +import com.pig4cloud.pigx.ureport.processor.UReportPropertyPlaceholderConfigurerPlus; +import com.pig4cloud.pigx.ureport.provider.DfsReportProvider; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver; + +import java.util.Locale; + +/** + * @author lengleng + * @date 2020/7/25 + *

+ * 增强默认Ureport 行为 + */ +@ConditionalOnClass(OssTemplate.class) +@Configuration(proxyBeanMethods = false) +public class UreportExtConfig { + + @Bean + public ReportProvider dfsReportProvider(OssTemplate ossTemplate, OssProperties properties) { + return new DfsReportProvider(ossTemplate, properties); + } + + @Bean + public UReportPropertyPlaceholderConfigurer uReportPropertyPlaceholderConfigurerPlus() { + return new UReportPropertyPlaceholderConfigurerPlus(); + } + + @Bean + @Primary + public LocaleResolver localeResolver() { + + AcceptHeaderLocaleResolver lr = new AcceptHeaderLocaleResolver(); + + // 设置默认区域, + + lr.setDefaultLocale(Locale.CHINA); + + return lr; + + } + +} diff --git a/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/processor/UReportPropertyPlaceholderConfigurerPlus.java b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/processor/UReportPropertyPlaceholderConfigurerPlus.java new file mode 100755 index 000000000..475bcb4fd --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/processor/UReportPropertyPlaceholderConfigurerPlus.java @@ -0,0 +1,24 @@ +package com.pig4cloud.pigx.ureport.processor; + +import com.bstek.ureport.UReportPropertyPlaceholderConfigurer; + +import java.util.Properties; + +/** + * @author lengleng + * @date 2020/7/25 + *

+ * 重写默认的 PropertyPlaceholder + */ +public class UReportPropertyPlaceholderConfigurerPlus extends UReportPropertyPlaceholderConfigurer { + + public UReportPropertyPlaceholderConfigurerPlus() { + Properties properties = new Properties(); + properties.setProperty("ureport.fileStoreDir", ""); + properties.setProperty("ureport.fileStoreDir", ""); + properties.setProperty("ureport.debug", "false"); + properties.setProperty("ureport.disableHttpSessionReportCache", "false"); + this.setProperties(properties); + } + +} diff --git a/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/provider/DfsReportProvider.java b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/provider/DfsReportProvider.java new file mode 100755 index 000000000..0e50f43f4 --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/java/com/pig4cloud/pigx/ureport/provider/DfsReportProvider.java @@ -0,0 +1,91 @@ +package com.pig4cloud.pigx.ureport.provider; + +import com.amazonaws.services.s3.model.S3Object; +import com.amazonaws.services.s3.model.S3ObjectSummary; +import com.bstek.ureport.provider.report.ReportFile; +import com.bstek.ureport.provider.report.ReportProvider; +import com.pig4cloud.pigx.common.oss.OssProperties; +import com.pig4cloud.pigx.common.oss.service.OssTemplate; +import lombok.Cleanup; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; + +import java.io.InputStream; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author lengleng + * @date 2020/7/25 + *

+ * 基于OSS 的文件存储支持 + */ +@Slf4j +@RequiredArgsConstructor +public class DfsReportProvider implements ReportProvider { + + /** + * 保存文件增加默认前缀,方便查找 + */ + private static final String PREFIX = "oss_"; + + private final OssTemplate ossTemplate; + + private final OssProperties properties; + + @Override + public InputStream loadReport(String file) { + S3Object object = ossTemplate.getObject(properties.getBucketName(), file); + return object.getObjectContent(); + } + + @Override + public void deleteReport(String file) { + try { + ossTemplate.removeObject(properties.getBucketName(), file); + } + catch (Exception e) { + log.error("文件删除失败 ", e); + } + } + + @Override + public List getReportFiles() { + List objectSummaryList = ossTemplate.getAllObjectsByPrefix(properties.getBucketName(), PREFIX, + true); + + return objectSummaryList.stream() + .map(s3ObjectSummary -> new ReportFile(s3ObjectSummary.getKey().replaceAll(PREFIX, ""), + s3ObjectSummary.getLastModified())) + .collect(Collectors.toList()); + } + + @Override + public void saveReport(String file, String content) { + try { + @Cleanup + InputStream inputStream = IOUtils.toInputStream(content); + ossTemplate.putObject(properties.getBucketName(), file, inputStream); + } + catch (Exception e) { + log.error("文件上传失败", e); + } + } + + @Override + public String getName() { + return "分布式文件存储"; + } + + @Override + public boolean disabled() { + return false; + } + + @Override + public String getPrefix() { + return PREFIX; + } + +} diff --git a/pigx-visual/pigx-bi-platform/src/main/resources/META-INF/spring-configuration-metadata.json b/pigx-visual/pigx-bi-platform/src/main/resources/META-INF/spring-configuration-metadata.json new file mode 100755 index 000000000..dd1990d0d --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/resources/META-INF/spring-configuration-metadata.json @@ -0,0 +1,25 @@ +{ + "properties": [ + { + "name": "ureport.disableFileProvider", + "type": "java.lang.String", + "description": "是否开启本地文件系统 true/false" + }, + { + "name": "ureport.fileStoreDir", + "type": "java.lang.String", + "description": "本地文件保存路径" + }, + { + "name": "ureport.debug", + "type": "java.lang.String", + "description": "DEBUG模式 true/false" + }, + { + "name": "ureport.disableHttpSessionReportCache", + "type": "java.lang.String", + "description": "是否关闭 session cache" + } + ], + "hints": [] +} diff --git a/pigx-visual/pigx-bi-platform/src/main/resources/bootstrap.yml b/pigx-visual/pigx-bi-platform/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..ee5868e1b --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/resources/bootstrap.yml @@ -0,0 +1,18 @@ +server: + port: 5006 + +spring: + application: + name: @artifactId@ + cloud: + nacos: + discovery: + server-addr: ${NACOS_HOST:pigx-register}:${NACOS_PORT:8848} + service: @artifactId@ + config: + server-addr: ${spring.cloud.nacos.discovery.server-addr} + file-extension: yml + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + profiles: + active: @profiles.active@ \ No newline at end of file diff --git a/pigx-visual/pigx-bi-platform/src/main/resources/logback-spring.xml b/pigx-visual/pigx-bi-platform/src/main/resources/logback-spring.xml new file mode 100644 index 000000000..5b4213c6f --- /dev/null +++ b/pigx-visual/pigx-bi-platform/src/main/resources/logback-spring.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + + + + + + ${log.path}/debug.log + + ${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz + 50MB + 30 + + + %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n + + + + + + ${log.path}/error.log + + ${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz + 50MB + 30 + + + %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n + + + ERROR + + + + + + + + + + + + + diff --git a/pigx-visual/pom.xml b/pigx-visual/pom.xml index 7a470ebaa..e55f81255 100644 --- a/pigx-visual/pom.xml +++ b/pigx-visual/pom.xml @@ -32,6 +32,7 @@ pom + pigx-bi-platform pigx-codegen pigx-daemon-elastic-job pigx-daemon-quartz diff --git a/pom.xml b/pom.xml index e76ac5f26..2981028c1 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ 4.1.0 2.1.1 2.11.4 + 2.2.9 1.11.543 2.2.0 5.22.0