初始化
This commit is contained in:
15
Dockerfile
Normal file
15
Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
||||
FROM anapsix/alpine-java:8_server-jre_unlimited
|
||||
|
||||
MAINTAINER jeecgos@163.com
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
|
||||
RUN mkdir -p /jimureport
|
||||
|
||||
WORKDIR /jimureport
|
||||
|
||||
EXPOSE 8085
|
||||
|
||||
ADD ./target/jimureport-example-1.6.jar ./
|
||||
|
||||
CMD java -DMYSQL-HOST=jimureport-mysql -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jimureport-example-1.6.jar
|
||||
55
README.md
Normal file
55
README.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# yxt-yyth-jimureport
|
||||
|
||||
积木报表服务
|
||||
|
||||
|
||||
```
|
||||
采用mysql5.7数据库
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
使用步骤
|
||||
-----------------------------------
|
||||
|
||||
- 第一步:执行初始化脚步(自动创建数据库jimureport)
|
||||
|
||||
db/jimureport.mysql5.7.create.sql
|
||||
|
||||
- 第三步: 启动项目(右键运行)
|
||||
|
||||
org.jeecg.modules.JimuReportApplication
|
||||
|
||||
- 第四步: 访问项目
|
||||
|
||||
http://localhost:8085/jmreport/list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Docker镜像制作
|
||||
-----------------------------------
|
||||
|
||||
- 第一步:下载项目
|
||||
|
||||
git clone https://gitee.com/jeecg/JimuReport.git
|
||||
|
||||
- 第二步:进入项目 jimureport-example 根目录
|
||||
|
||||
cd JimuReport/jimureport-example
|
||||
|
||||
- 第三步:maven执行package
|
||||
|
||||
mvn clean package
|
||||
|
||||
- 第四步:执行命令,生成镜像
|
||||
|
||||
>如果使用的是Mac M系列芯片,需要修改docker-compose.yml文件的第一行为:```FROM arm64v8/mysql:8```
|
||||
|
||||
docker-compose up -d
|
||||
|
||||
- 第五步:访问报表
|
||||
|
||||
http://localhost:8085/jmreport/list
|
||||
9
db/Dockerfile
Normal file
9
db/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
||||
FROM mysql:8.0.19
|
||||
|
||||
MAINTAINER jeecgos@163.com
|
||||
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
COPY ./jimureport.mysql5.7.create.sql /docker-entrypoint-initdb.d
|
||||
3242
db/jimureport.mysql5.7.create.sql
Normal file
3242
db/jimureport.mysql5.7.create.sql
Normal file
File diff suppressed because one or more lines are too long
27
docker-compose.yml
Normal file
27
docker-compose.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
version: '2'
|
||||
services:
|
||||
jimureport-mysql:
|
||||
build:
|
||||
context: ./db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
restart: always
|
||||
container_name: jimureport-mysql
|
||||
image: jimureport-mysql
|
||||
command:
|
||||
--character-set-server=utf8mb4
|
||||
--collation-server=utf8mb4_general_ci
|
||||
--explicit_defaults_for_timestamp=true
|
||||
--lower_case_table_names=1
|
||||
--max_allowed_packet=128M
|
||||
ports:
|
||||
- 3307:3306
|
||||
|
||||
jimureport:
|
||||
build:
|
||||
context: .
|
||||
restart: always
|
||||
container_name: jimureport
|
||||
image: jimureport
|
||||
ports:
|
||||
- 8085:8085
|
||||
190
pom.xml
Normal file
190
pom.xml
Normal file
@@ -0,0 +1,190 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.7.10</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
|
||||
<name>yxt-yyth-jimureport</name>
|
||||
<groupId>com.yxt.yyth</groupId>
|
||||
<artifactId>yxt-yyth-jimureport</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<description>积木报表集成</description>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>aliyun</id>
|
||||
<name>aliyun Repository</name>
|
||||
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>jeecg</id>
|
||||
<name>jeecg Repository</name>
|
||||
<url>https://maven.jeecg.org/nexus/content/repositories/jeecg</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<properties>
|
||||
<jimureport.version>1.6.5</jimureport.version>
|
||||
<java.version>1.8</java.version>
|
||||
<minio.version>8.0.3</minio.version>
|
||||
<!-- DB驱动 -->
|
||||
<mysql-connector-java.version>8.0.27</mysql-connector-java.version>
|
||||
</properties>
|
||||
|
||||
|
||||
<dependencies>
|
||||
<!-- Lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- JimuReport -->
|
||||
<dependency>
|
||||
<groupId>org.jeecgframework.jimureport</groupId>
|
||||
<artifactId>jimureport-spring-boot-starter</artifactId>
|
||||
<version>${jimureport.version}</version>
|
||||
</dependency>
|
||||
<!-- JimuReport mogodb/redis支持包(按需添加) -->
|
||||
<dependency>
|
||||
<groupId>org.jeecgframework.jimureport</groupId>
|
||||
<artifactId>jimureport-nosql-starter</artifactId>
|
||||
<version>1.6.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- SpringBoot-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-freemarker</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- minio oss-->
|
||||
<dependency>
|
||||
<groupId>io.minio</groupId>
|
||||
<artifactId>minio</artifactId>
|
||||
<version>${minio.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- ============================数据库驱动========================== -->
|
||||
<!--mysql-->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.29</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!-- oracle驱动-->
|
||||
<dependency>
|
||||
<groupId>com.oracle</groupId>
|
||||
<artifactId>ojdbc6</artifactId>
|
||||
<version>11.2.0.3</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!-- sqlserver-->
|
||||
<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>sqljdbc4</artifactId>
|
||||
<version>4.0</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!-- postgresql驱动-->
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<version>42.2.6</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!-- ===需要什么数据库,手工打开注释=== -->
|
||||
<!-- 达梦驱动-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.dameng</groupId>-->
|
||||
<!-- <artifactId>DmJdbcDriver18</artifactId>-->
|
||||
<!-- <version>1.0</version>-->
|
||||
<!-- <scope>runtime</scope>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.dameng</groupId>-->
|
||||
<!-- <artifactId>DmDialectForHibernate</artifactId>-->
|
||||
<!-- <version>5.3</version>-->
|
||||
<!-- <scope>runtime</scope>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- sqlite-->
|
||||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
<version>3.34.0</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!--hsqldb-->
|
||||
<dependency>
|
||||
<groupId>org.hsqldb</groupId>
|
||||
<artifactId>hsqldb</artifactId>
|
||||
<version>2.2.8</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!--h2-->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>1.4.197</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!--derby-->
|
||||
<dependency>
|
||||
<groupId>org.apache.derby</groupId>
|
||||
<artifactId>derbyclient</artifactId>
|
||||
<version>10.11.1.1</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!--db2-->
|
||||
<dependency>
|
||||
<groupId>com.ibm.db2</groupId>
|
||||
<artifactId>jcc</artifactId>
|
||||
<version>11.5.0.0</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!--神通-->
|
||||
<dependency>
|
||||
<groupId>com.csicit.thirdparty</groupId>
|
||||
<artifactId>oscar</artifactId>
|
||||
<version>1.0.1</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!-- <!–人大金仓–>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>kingbase</groupId>-->
|
||||
<!-- <artifactId>kingbase8</artifactId>-->
|
||||
<!-- <version>8</version>-->
|
||||
<!-- <scope>runtime</scope>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- ============================数据库驱动========================== -->
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- SpringBoot启动 -->
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
28
src/main/java/com/jeecg/modules/JimuReportApplication.java
Normal file
28
src/main/java/com/jeecg/modules/JimuReportApplication.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.jeecg.modules;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* 积木报表独立服务启动类
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class})
|
||||
public class JimuReportApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
ConfigurableApplicationContext application = SpringApplication.run(JimuReportApplication.class, args);
|
||||
Environment env = application.getEnvironment();
|
||||
String port = env.getProperty("server.port");
|
||||
String path = env.containsProperty("server.servlet.context-path")?env.getProperty("server.servlet.context-path"):"";
|
||||
System.out.print("\n----------------------------------------------------------\n\t" +
|
||||
"Application JimuReport Demo is running! Access URL:\n\t" +
|
||||
"Local: \t\thttp://localhost:" + port + path + "/jmreport/list\n\t" +
|
||||
"----------------------------------------------------------");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.jeecg.modules.jmreport.adapter;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.jeecg.modules.jmreport.desreport.render.handler.convert.ApiDataConvertAdapter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author wangpengfei
|
||||
* @date 2023/12/7 9:53
|
||||
*/
|
||||
@Component("customParser")
|
||||
public class MyApiDataConvertAdapter implements ApiDataConvertAdapter {
|
||||
@Override
|
||||
public String getData(JSONObject jsonObject) {
|
||||
System.out.println(jsonObject);
|
||||
// if(jsonObject.containsKey("pagelist")){
|
||||
// JSONArray pageList = jsonObject.getJSONArray("pagelist");
|
||||
// JSONArray array = new JSONArray();
|
||||
// for (int i = 0; i < pageList.size(); i++) {
|
||||
// JSONObject object = new JSONObject();
|
||||
// String name = pageList.getJSONObject(i).getString("name");
|
||||
// String id = pageList.getJSONObject(i).getString("id");
|
||||
// String zhicheng = pageList.getJSONObject(i).getString("zhicheng");
|
||||
// JSONArray fuze = pageList.getJSONObject(i).getJSONArray("fuze");
|
||||
// for (int j = 0; j < fuze.size(); j++) {
|
||||
// String banji = fuze.getJSONObject(j).getString("banji");
|
||||
// String xueke = fuze.getJSONObject(j).getString("xueke");
|
||||
// object.put("name",name);
|
||||
// object.put("id",id);
|
||||
// object.put("zhicheng",zhicheng);
|
||||
// object.put("banji",banji);
|
||||
// object.put("xueke",xueke);
|
||||
// array.add(object);
|
||||
// }
|
||||
// }
|
||||
// return pageList.toJSONString();
|
||||
// }else{
|
||||
// return "";
|
||||
// }
|
||||
return jsonObject.getJSONArray("date").toJSONString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTotal(JSONObject jsonObject) {
|
||||
|
||||
return jsonObject.containsKey("total") ? jsonObject.get("total").toString() : "0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCount(JSONObject jsonObject) {
|
||||
|
||||
return jsonObject.containsKey("count") ? jsonObject.get("count").toString() : "0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLinks(JSONObject jsonObject) {
|
||||
|
||||
return jsonObject.containsKey("links") ? jsonObject.get("links").toString() : "";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.jeecg.modules.jmreport.config;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class CustomCorsConfiguration implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
registry.addMapping("/**") // 所有接口
|
||||
.allowCredentials(true) // 是否发送 Cookie
|
||||
.allowedOriginPatterns("*") // 支持域
|
||||
.allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"}) // 支持方法
|
||||
.allowedHeaders("*")
|
||||
.exposedHeaders("*");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package com.jeecg.modules.jmreport.config;
|
||||
|
||||
import org.jeecg.modules.jmreport.api.JmReportTokenServiceI;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.stereotype.Component;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* 自定义积木报表鉴权(如果不进行自定义,则所有请求不做权限控制)
|
||||
* 1.自定义获取登录token
|
||||
* 2.自定义获取登录用户
|
||||
*/
|
||||
@Component
|
||||
public class JimuReportTokenService implements JmReportTokenServiceI {
|
||||
|
||||
/**
|
||||
* 通过请求获取Token
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getToken(HttpServletRequest request) {
|
||||
//System.out.println("---------call---------getToken-----------------------");
|
||||
//return TokenUtils.getTokenByRequest(request);
|
||||
return "123456";
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义获取租户
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getTenantId() {
|
||||
// String headerTenantId = null;
|
||||
// HttpServletRequest request = JimuSpringContextUtils.getHttpServletRequest();
|
||||
// if (request != null) {
|
||||
// headerTenantId = request.getHeader(JmConst.HEADER_TENANT_ID);
|
||||
// if(OkConvertUtils.isEmpty(headerTenantId)){
|
||||
// headerTenantId = request.getParameter(JmConst.TENANT_ID);
|
||||
// }
|
||||
// }
|
||||
// return headerTenantId;
|
||||
return "1";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过Token获取登录人用户名
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getUsername(String token) {
|
||||
// return JwtUtil.getUsername(token);
|
||||
return "admin";
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义用户拥有的角色
|
||||
*
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String[] getRoles(String token) {
|
||||
return new String[]{"admin"};
|
||||
}
|
||||
|
||||
/**
|
||||
* Token校验
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean verifyToken(String token) {
|
||||
System.out.println("---------verify-----Token---------------");
|
||||
//return TokenUtils.verifyToken(token, sysBaseAPI, redisUtil);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义请求头
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public HttpHeaders customApiHeader() {
|
||||
HttpHeaders header = new HttpHeaders();
|
||||
header.add("custom-header1", "Please set a custom value 1");
|
||||
header.add("token", "token value 2");
|
||||
return header;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.jeecg.modules.jmreport.controller;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
* 积木报表-设置默认首页跳转
|
||||
*/
|
||||
@Controller
|
||||
public class IndexController {
|
||||
private Logger logger = LoggerFactory.getLogger(IndexController.class);
|
||||
|
||||
@GetMapping("/")
|
||||
public String index(Model model) {
|
||||
model.addAttribute("name", "jimureport");
|
||||
return "jmreport/list"; // 视图重定向 - 跳转
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.jeecg.modules.jmreport.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping
|
||||
public class TestController {
|
||||
@Autowired
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
@Autowired
|
||||
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
||||
|
||||
|
||||
@RequestMapping(value = "/test/list", method = RequestMethod.GET)
|
||||
public void queryPageList(HttpServletRequest req) {
|
||||
System.out.println("getMaxRows="+jdbcTemplate.getMaxRows());
|
||||
System.out.println("getCacheLimit="+namedParameterJdbcTemplate.getCacheLimit());
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/jimureport/test/getOne", method = RequestMethod.GET)
|
||||
public Map getOne(HttpServletRequest req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* API示例接口
|
||||
*
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/jimureport/test/getList", method = RequestMethod.GET)
|
||||
public String getList(HttpServletRequest req) {
|
||||
String json = "{\n" +
|
||||
"\t\"data\": [{\n" +
|
||||
"\t\t\"ctotal\": \"125箱\",\n" +
|
||||
"\t\t\"cname\": \"牛奶0\",\n" +
|
||||
"\t\t\"cprice\": \"56\",\n" +
|
||||
"\t\t\"riqi\": \"2021年08月11日\",\n" +
|
||||
"\t\t\"id\": 100,\n" +
|
||||
"\t\t\"dtotal\": \"1256箱\",\n" +
|
||||
"\t\t\"tp\": \"7000\",\n" +
|
||||
"\t\t\"ztotal\": \"589箱\",\n" +
|
||||
"\t\t\"cnum\": \"每箱12瓶\",\n" +
|
||||
"\t\t\"dId\": \"1\"\n" +
|
||||
"\t}]\n" +
|
||||
"}";
|
||||
return json;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.jeecg.modules.jmreport.testdb;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.modules.jmreport.desreport.model.JmPage;
|
||||
import org.jeecg.modules.jmreport.api.data.IDataSetFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author qinfeng
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("testDataJavaBean")
|
||||
public class TestRpSpringBean implements IDataSetFactory {
|
||||
|
||||
/**
|
||||
* 不分页时返回list
|
||||
* @param param 参数 包括浏览器地址栏 和 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> createData(Map<String, Object> param) {
|
||||
log.info(" 自定义javabean,无分页 :" + param);
|
||||
List<Map<String, Object>> ls = new ArrayList<>();
|
||||
Map<String, Object> obj2 = new HashMap<>();
|
||||
obj2.put("name", "张三");
|
||||
obj2.put("age", "14");
|
||||
ls.add(obj2);
|
||||
|
||||
Map<String, Object> obj3 = new HashMap<>();
|
||||
obj3.put("name", "李四");
|
||||
obj3.put("age", "15");
|
||||
ls.add(obj3);
|
||||
|
||||
Map<String, Object> obj4 = new HashMap<>();
|
||||
obj4.put("name", "王五");
|
||||
obj4.put("age", "16");
|
||||
ls.add(obj4);
|
||||
|
||||
return ls;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页时返回 JmPage 并且参数param里会传入pageNo, pageSize
|
||||
* @param param 参数 包括浏览器地址栏 和 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public JmPage createPageData(Map<String, Object> param) {
|
||||
//默认必须有分页参数 pageSize
|
||||
if(!param.containsKey("pageSize")){
|
||||
param.put("pageSize",1);
|
||||
}
|
||||
|
||||
log.info(" 自定义javabean,有分页 :" + param);
|
||||
|
||||
JmPage page = new JmPage();
|
||||
List<Map<String, Object>> ls = new ArrayList<>();
|
||||
int pageSize = Integer.parseInt(param.get("pageSize").toString());
|
||||
|
||||
Map<String, Object> obj2 = new HashMap<>();
|
||||
obj2.put("name", "张三");
|
||||
obj2.put("age", "14");
|
||||
obj2.put("sex", "1");
|
||||
ls.add(obj2);
|
||||
|
||||
Map<String, Object> obj3 = new HashMap<>();
|
||||
obj3.put("name", "李四");
|
||||
obj3.put("age", "15");
|
||||
obj2.put("sex", "2");
|
||||
ls.add(obj3);
|
||||
|
||||
Map<String, Object> obj4 = new HashMap<>();
|
||||
obj4.put("name", "王五");
|
||||
obj4.put("age", "16");
|
||||
obj2.put("sex", "2");
|
||||
ls.add(obj4);
|
||||
|
||||
//以下参数均需设置
|
||||
page.setPageSize(pageSize);
|
||||
page.setTotal(20);
|
||||
page.setRecords(ls);
|
||||
return page;
|
||||
}
|
||||
}
|
||||
54
src/main/resources/application-dev.yml
Normal file
54
src/main/resources/application-dev.yml
Normal file
@@ -0,0 +1,54 @@
|
||||
server:
|
||||
port: 7202
|
||||
spring:
|
||||
#数据库
|
||||
datasource:
|
||||
# url: jdbc:mysql://${MYSQL-HOST:127.0.0.1}:${MYSQL-PORT:3306}/${MYSQL-DB:jimureport}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
url: jdbc:mysql://8.130.39.13:3306/jimureport?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: 1LAiGz$t1*Iw
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
#持久层框架
|
||||
minidao:
|
||||
base-package: org.jeecg.modules.jmreport.*
|
||||
jeecg:
|
||||
# local|minio|alioss
|
||||
uploadType: local
|
||||
# local
|
||||
path:
|
||||
#文件路径
|
||||
upload: /opt/upload
|
||||
# alioss
|
||||
oss:
|
||||
endpoint: ??
|
||||
accessKey: ??
|
||||
secretKey: ??
|
||||
bucketName: jimureport
|
||||
# minio
|
||||
minio:
|
||||
minio_url: http://minio.jeecg.com
|
||||
minio_name: ??
|
||||
minio_pass: ??
|
||||
bucketName: ??
|
||||
#大屏报表参数设置
|
||||
jmreport:
|
||||
#多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离)
|
||||
saasMode:
|
||||
# 平台上线安全配置
|
||||
firewall:
|
||||
# 数据源安全 (开启后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
|
||||
dataSourceSafe: false
|
||||
# 低代码开发模式(dev:开发模式,prod:发布模式—关闭在线报表设计功能,分配角色admin、lowdeveloper可放开限制)
|
||||
lowCodeMode: dev
|
||||
# 展示列数
|
||||
col: 100
|
||||
# 展示行数
|
||||
row: 200
|
||||
#自定义API接口的前缀 #{api_base_path}和#{domainURL}的值
|
||||
apiBasePath: http://192.168.1.11:8085
|
||||
pageSize:
|
||||
- 8
|
||||
#输出sql日志
|
||||
logging:
|
||||
level:
|
||||
org.jeecg.modules.jmreport: info
|
||||
56
src/main/resources/application-prod.yml
Normal file
56
src/main/resources/application-prod.yml
Normal file
@@ -0,0 +1,56 @@
|
||||
server:
|
||||
port: 7202
|
||||
spring:
|
||||
#数据库
|
||||
datasource:
|
||||
url: jdbc:mysql://${MYSQL-HOST:127.0.0.1}:${MYSQL-PORT:3306}/${MYSQL-DB:jimureport}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: Yxt@67508182
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
#持久层框架
|
||||
minidao:
|
||||
base-package: org.jeecg.modules.jmreport.*
|
||||
jeecg:
|
||||
# local|minio|alioss
|
||||
uploadType: local
|
||||
# local
|
||||
path:
|
||||
#文件路径
|
||||
upload: /opt/upload
|
||||
# alioss
|
||||
oss:
|
||||
endpoint: ??
|
||||
accessKey: ??
|
||||
secretKey: ??
|
||||
bucketName: jimureport
|
||||
# minio
|
||||
minio:
|
||||
minio_url: http://minio.jeecg.com
|
||||
minio_name: ??
|
||||
minio_pass: ??
|
||||
bucketName: ??
|
||||
#大屏报表参数设置
|
||||
jmreport:
|
||||
#多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离)
|
||||
saasMode: created
|
||||
# 平台上线安全配置
|
||||
firewall:
|
||||
# 数据源安全 (开启后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
|
||||
dataSourceSafe: true
|
||||
# 低代码开发模式(dev:开发模式,prod:发布模式—关闭在线报表设计功能,分配角色admin、lowdeveloper可放开限制)
|
||||
lowCodeMode: prod
|
||||
# 展示列数
|
||||
col: 100
|
||||
# 展示行数
|
||||
row: 200
|
||||
#自定义API接口的前缀 #{api_base_path}和#{domainURL}的值
|
||||
apiBasePath: http://127.0.0.1:7201
|
||||
pageSize:
|
||||
- 10
|
||||
- 20
|
||||
- 30
|
||||
- 40
|
||||
#输出sql日志
|
||||
logging:
|
||||
level:
|
||||
org.jeecg.modules.jmreport: info
|
||||
3
src/main/resources/application.yml
Normal file
3
src/main/resources/application.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
spring:
|
||||
profiles:
|
||||
active: dev
|
||||
77
src/main/resources/logback-spring.xml
Normal file
77
src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false">
|
||||
<!--定义日志文件的存储地址 -->
|
||||
<property name="LOG_HOME" value="../logs" />
|
||||
|
||||
<!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />-->
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 按照每天生成日志文件 -->
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!--日志文件输出的文件名 -->
|
||||
<FileNamePattern>${LOG_HOME}/jimureport-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
|
||||
<!--日志文件保留天数 -->
|
||||
<MaxHistory>30</MaxHistory>
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 生成 error html格式日志开始 -->
|
||||
<appender name="HTML" class="ch.qos.logback.core.FileAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<!--设置日志级别,过滤掉info日志,只输入error日志-->
|
||||
<level>ERROR</level>
|
||||
</filter>
|
||||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||
<layout class="ch.qos.logback.classic.html.HTMLLayout">
|
||||
<pattern>%p%d%msg%M%F{32}%L</pattern>
|
||||
</layout>
|
||||
</encoder>
|
||||
<file>${LOG_HOME}/error-log.html</file>
|
||||
</appender>
|
||||
<!-- 生成 error html格式日志结束 -->
|
||||
|
||||
<!-- 每天生成一个html格式的日志开始 -->
|
||||
<appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!--日志文件输出的文件名 -->
|
||||
<FileNamePattern>${LOG_HOME}/jimureport-%d{yyyy-MM-dd}.%i.html</FileNamePattern>
|
||||
<!--日志文件保留天数 -->
|
||||
<MaxHistory>30</MaxHistory>
|
||||
<MaxFileSize>10MB</MaxFileSize>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||
<layout class="ch.qos.logback.classic.html.HTMLLayout">
|
||||
<pattern>%p%d%msg%M%F{32}%L</pattern>
|
||||
</layout>
|
||||
</encoder>
|
||||
</appender>
|
||||
<!-- 每天生成一个html格式的日志结束 -->
|
||||
|
||||
<!--myibatis log configure -->
|
||||
<logger name="com.apache.ibatis" level="TRACE" />
|
||||
<logger name="java.sql.Connection" level="DEBUG" />
|
||||
<logger name="java.sql.Statement" level="DEBUG" />
|
||||
<logger name="java.sql.PreparedStatement" level="DEBUG" />
|
||||
|
||||
<!-- 日志输出级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
<appender-ref ref="FILE" />
|
||||
<!-- <appender-ref ref="HTML" />
|
||||
<appender-ref ref="FILE_HTML" /> -->
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user