Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
annual-performance-indicators
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
王威威
annual-performance-indicators
Commits
7a20c95f
提交
7a20c95f
authored
7月 06, 2021
作者:
ww1xhqc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Initial commit]
上级
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
71 个修改的文件
包含
3556 行增加
和
0 行删除
+3556
-0
.gitignore
.gitignore
+33
-0
pom.xml
pom.xml
+108
-0
README.md
src/README.md
+2
-0
AnnualPerformanceIndicatorsApplication.java
...java/com/tykj/AnnualPerformanceIndicatorsApplication.java
+16
-0
EntityHandle.java
src/main/java/com/tykj/base/aop/EntityHandle.java
+36
-0
Java8TimeConfig.java
src/main/java/com/tykj/base/config/Java8TimeConfig.java
+134
-0
WebMvcConfig.java
src/main/java/com/tykj/base/config/WebMvcConfig.java
+68
-0
FourComsumer.java
src/main/java/com/tykj/base/consumer/FourComsumer.java
+38
-0
BaseEntity.java
src/main/java/com/tykj/base/entity/BaseEntity.java
+39
-0
XMQGenerator.java
src/main/java/com/tykj/base/entity/XMQGenerator.java
+32
-0
JpaCustomOrder.java
src/main/java/com/tykj/base/page/JpaCustomOrder.java
+20
-0
JpaCustomPage.java
src/main/java/com/tykj/base/page/JpaCustomPage.java
+78
-0
ApiException.java
src/main/java/com/tykj/base/result/ApiException.java
+34
-0
GlobalExceptionHandler.java
...ain/java/com/tykj/base/result/GlobalExceptionHandler.java
+64
-0
ResultObj.java
src/main/java/com/tykj/base/result/ResultObj.java
+27
-0
ResultUtil.java
src/main/java/com/tykj/base/result/ResultUtil.java
+91
-0
ClassUtil.java
src/main/java/com/tykj/base/util/ClassUtil.java
+65
-0
DateFormatUtil.java
src/main/java/com/tykj/base/util/DateFormatUtil.java
+122
-0
FileUtil.java
src/main/java/com/tykj/base/util/FileUtil.java
+52
-0
ModelController.java
src/main/java/com/tykj/model/controller/ModelController.java
+259
-0
QuoteController.java
src/main/java/com/tykj/model/controller/QuoteController.java
+62
-0
RuleController.java
src/main/java/com/tykj/model/controller/RuleController.java
+67
-0
ColumnInfoDao.java
src/main/java/com/tykj/model/dao/ColumnInfoDao.java
+42
-0
QuoteDao.java
src/main/java/com/tykj/model/dao/QuoteDao.java
+24
-0
RuleDao.java
src/main/java/com/tykj/model/dao/RuleDao.java
+22
-0
TableInfoDao.java
src/main/java/com/tykj/model/dao/TableInfoDao.java
+28
-0
ColumnInfo.java
src/main/java/com/tykj/model/entity/ColumnInfo.java
+74
-0
Quote.java
src/main/java/com/tykj/model/entity/Quote.java
+35
-0
Rule.java
src/main/java/com/tykj/model/entity/Rule.java
+32
-0
TableInfo.java
src/main/java/com/tykj/model/entity/TableInfo.java
+48
-0
ConnectionType.java
...ava/com/tykj/model/entity/customEnums/ConnectionType.java
+32
-0
ColumnTypeVO.java
src/main/java/com/tykj/model/entity/vo/ColumnTypeVO.java
+25
-0
ColumnVO.java
src/main/java/com/tykj/model/entity/vo/ColumnVO.java
+46
-0
ColumnWithQuoteVO.java
...main/java/com/tykj/model/entity/vo/ColumnWithQuoteVO.java
+25
-0
CustomPage.java
src/main/java/com/tykj/model/entity/vo/CustomPage.java
+25
-0
DelTableVO.java
src/main/java/com/tykj/model/entity/vo/DelTableVO.java
+25
-0
GroupCondition.java
src/main/java/com/tykj/model/entity/vo/GroupCondition.java
+16
-0
OrderCondition.java
src/main/java/com/tykj/model/entity/vo/OrderCondition.java
+23
-0
QueryCondition.java
src/main/java/com/tykj/model/entity/vo/QueryCondition.java
+40
-0
RuleVo.java
src/main/java/com/tykj/model/entity/vo/RuleVo.java
+25
-0
SearchAllVO.java
src/main/java/com/tykj/model/entity/vo/SearchAllVO.java
+20
-0
SearchColumnInfoVo.java
...ain/java/com/tykj/model/entity/vo/SearchColumnInfoVo.java
+27
-0
SearchQuoteVO.java
src/main/java/com/tykj/model/entity/vo/SearchQuoteVO.java
+20
-0
SearchTableInfoVo.java
...main/java/com/tykj/model/entity/vo/SearchTableInfoVo.java
+33
-0
TableAndColumnInfoVO.java
...n/java/com/tykj/model/entity/vo/TableAndColumnInfoVO.java
+27
-0
TableVO.java
src/main/java/com/tykj/model/entity/vo/TableVO.java
+40
-0
UpdateQuoteVO.java
src/main/java/com/tykj/model/entity/vo/UpdateQuoteVO.java
+26
-0
UpdateTableInfoVO.java
...main/java/com/tykj/model/entity/vo/UpdateTableInfoVO.java
+30
-0
VersionVO.java
src/main/java/com/tykj/model/entity/vo/VersionVO.java
+30
-0
complexQueryVo.java
src/main/java/com/tykj/model/entity/vo/complexQueryVo.java
+41
-0
ModelType.java
src/main/java/com/tykj/model/myEnum/ModelType.java
+41
-0
ModelService.java
src/main/java/com/tykj/model/service/ModelService.java
+155
-0
QuoteService.java
src/main/java/com/tykj/model/service/QuoteService.java
+35
-0
RuleService.java
src/main/java/com/tykj/model/service/RuleService.java
+41
-0
ModelHelper.java
src/main/java/com/tykj/model/service/impl/ModelHelper.java
+62
-0
ModelImpl.java
src/main/java/com/tykj/model/service/impl/ModelImpl.java
+0
-0
QuoteServiceImpl.java
...in/java/com/tykj/model/service/impl/QuoteServiceImpl.java
+93
-0
RuleServiceImpl.java
...ain/java/com/tykj/model/service/impl/RuleServiceImpl.java
+74
-0
MysqlSqlType.java
src/main/java/com/tykj/model/sqlType/MysqlSqlType.java
+40
-0
OscarSqlType.java
src/main/java/com/tykj/model/sqlType/OscarSqlType.java
+40
-0
CheckUtils.java
src/main/java/com/tykj/model/utils/CheckUtils.java
+66
-0
ClassTypeLength.java
src/main/java/com/tykj/model/utils/ClassTypeLength.java
+31
-0
CreateTableUtil.java
src/main/java/com/tykj/model/utils/CreateTableUtil.java
+144
-0
GetIndexUtil.java
src/main/java/com/tykj/model/utils/GetIndexUtil.java
+14
-0
HqlUtil.java
src/main/java/com/tykj/model/utils/HqlUtil.java
+54
-0
ObjectUtil.java
src/main/java/com/tykj/model/utils/ObjectUtil.java
+31
-0
SessionUtil.java
src/main/java/com/tykj/model/utils/SessionUtil.java
+109
-0
SqlTypeUtil.java
src/main/java/com/tykj/model/utils/SqlTypeUtil.java
+23
-0
SqlUtil.java
src/main/java/com/tykj/model/utils/SqlUtil.java
+135
-0
application.yml
src/main/resources/application.yml
+27
-0
AnnualPerformanceIndicatorsApplicationTests.java
...com/tykj/AnnualPerformanceIndicatorsApplicationTests.java
+13
-0
没有找到文件。
.gitignore
0 → 100644
浏览文件 @
7a20c95f
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
pom.xml
0 → 100644
浏览文件 @
7a20c95f
<?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.5.2
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>
com.tykj
</groupId>
<artifactId>
annual-performance-indicators
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<name>
annual-performance-indicators
</name>
<description>
Demo project for Spring Boot
</description>
<properties>
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
com.test
</groupId>
<artifactId>
oscarJDBC16
</artifactId>
<version>
1.0
</version>
</dependency>
<dependency>
<groupId>
com.hxh
</groupId>
<artifactId>
oscarSb
</artifactId>
<version>
1.1.1
</version>
</dependency>
<dependency>
<groupId>
com.github.caspar-chen
</groupId>
<artifactId>
swagger-ui-layer
</artifactId>
<version>
1.1.3
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
2.8.0
</version>
<exclusions>
<exclusion>
<artifactId>
javassist
</artifactId>
<groupId>
org.javassist
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-core
</artifactId>
<version>
2.12.3
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
2.8.0
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.54
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
<version>
3.9
</version>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
com.github.wenhao
</groupId>
<artifactId>
jpa-spec
</artifactId>
<version>
3.1.1
</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
src/README.md
0 → 100644
浏览文件 @
7a20c95f
# 年度绩效评价指标体系
\ No newline at end of file
src/main/java/com/tykj/AnnualPerformanceIndicatorsApplication.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
/**
* @author HASEE
*/
@SpringBootApplication
public
class
AnnualPerformanceIndicatorsApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
AnnualPerformanceIndicatorsApplication
.
class
,
args
);
}
}
src/main/java/com/tykj/base/aop/EntityHandle.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
aop
;
import
com.tykj.datawarehouse.base.entity.BaseEntity
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Before
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
static
java
.
util
.
Objects
.
isNull
;
/**
* @author C
*/
@Aspect
@Component
public
class
EntityHandle
{
@Before
(
"execution(* org.springframework.data.repository.CrudRepository.save(..)) && args(com.tykj.datawarehouse.base.entity.BaseEntity))"
)
public
void
checkTimes
(
JoinPoint
point
)
{
Object
[]
args
=
point
.
getArgs
();
for
(
Object
arg
:
args
)
{
if
(
arg
instanceof
BaseEntity
){
BaseEntity
entity
=
(
BaseEntity
)
arg
;
if
(
isNull
(
entity
.
getCreatedTime
())){
entity
.
setCreatedTime
(
new
Date
());
}
entity
.
setUpdatedTime
(
new
Date
());
}
}
}
}
src/main/java/com/tykj/base/config/Java8TimeConfig.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
config
;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.databind.*
;
import
com.fasterxml.jackson.databind.ser.std.DateSerializer
;
import
com.fasterxml.jackson.datatype.jdk8.Jdk8Module
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer
;
import
com.fasterxml.jackson.module.paramnames.ParameterNamesModule
;
import
com.tykj.datawarehouse.base.util.DateFormatUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.io.IOException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Date
;
/**
* 描述:使jackson能够正确的接收时间格式
* @author HuangXiahao
* @version V1.0
* @class Java8TimeConfig
* @packageName com.example.personnelmanager.common.config
* @data 2020/5/20
**/
@Configuration
public
class
Java8TimeConfig
{
@Value
(
"${spring.jackson.date-format}"
)
private
String
formatValue
;
@Bean
(
name
=
"format"
)
DateTimeFormatter
format
()
{
return
DateTimeFormatter
.
ofPattern
(
formatValue
);
}
@Bean
public
ObjectMapper
serializingObjectMapper
(
@Qualifier
(
"format"
)
DateTimeFormatter
format
)
{
JavaTimeModule
javaTimeModule
=
new
JavaTimeModule
();
javaTimeModule
.
addSerializer
(
LocalDateTime
.
class
,
new
LocalDateTimeSerializer
(
format
));
javaTimeModule
.
addSerializer
(
Instant
.
class
,
new
InstantCustomSerializer
(
format
));
javaTimeModule
.
addSerializer
(
Date
.
class
,
new
DateSerializer
(
false
,
new
SimpleDateFormat
(
formatValue
)));
javaTimeModule
.
addDeserializer
(
Instant
.
class
,
new
InstantCustomDeserializer
());
javaTimeModule
.
addDeserializer
(
Date
.
class
,
new
DateCustomDeserializer
());
return
new
ObjectMapper
()
.
registerModule
(
new
ParameterNamesModule
())
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
)
.
configure
(
DeserializationFeature
.
FAIL_ON_UNKNOWN_PROPERTIES
,
false
)
.
registerModule
(
javaTimeModule
);
}
static
class
InstantCustomSerializer
extends
JsonSerializer
<
Instant
>
{
private
final
DateTimeFormatter
format
;
private
InstantCustomSerializer
(
DateTimeFormatter
formatter
)
{
this
.
format
=
formatter
;
}
@Override
public
void
serialize
(
Instant
instant
,
JsonGenerator
jsonGenerator
,
SerializerProvider
serializerProvider
)
throws
IOException
{
if
(
instant
==
null
)
{
return
;
}
String
jsonValue
=
format
.
format
(
instant
.
atZone
(
ZoneId
.
systemDefault
()));
jsonGenerator
.
writeString
(
jsonValue
);
}
}
static
class
InstantCustomDeserializer
extends
JsonDeserializer
<
Instant
>{
@Override
public
Instant
deserialize
(
JsonParser
p
,
DeserializationContext
ctxt
)
throws
IOException
{
String
dateString
=
p
.
getText
().
trim
();
if
(
StringUtils
.
isNotBlank
(
dateString
)){
Date
pareDate
;
try
{
pareDate
=
DateFormatUtil
.
pareDate
(
dateString
);
if
(
null
!=
pareDate
){
return
pareDate
.
toInstant
();
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
}
return
null
;
}
}
static
class
DateCustomDeserializer
extends
JsonDeserializer
<
Date
>{
@Override
public
Date
deserialize
(
JsonParser
p
,
DeserializationContext
ctxt
)
throws
IOException
{
String
dateString
=
p
.
getText
().
trim
();
if
(
StringUtils
.
isNotBlank
(
dateString
)){
try
{
return
DateFormatUtil
.
pareDate
(
dateString
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
}
return
null
;
}
}
/**
* Support for Java date and time API.
* @return the corresponding Jackson module.
*/
@Bean
public
JavaTimeModule
javaTimeModule
()
{
return
new
JavaTimeModule
();
}
@Bean
public
Jdk8Module
jdk8TimeModule
()
{
return
new
Jdk8Module
();
}
}
\ No newline at end of file
src/main/java/com/tykj/base/config/WebMvcConfig.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
/**
* @author zsp
* @version V1.0
* @class WebMvcConfig
* @packageName com.example.personnelmanager.common.config
* @data 2020/6/11
**/
@Configuration
@EnableSwagger2
public
class
WebMvcConfig
implements
WebMvcConfigurer
{
@Bean
public
WebMvcConfigurer
corsConfigurer
()
{
return
new
WebMvcConfigurer
()
{
@Override
public
void
addCorsMappings
(
CorsRegistry
registry
)
{
registry
.
addMapping
(
"/**"
)
.
allowedOriginPatterns
(
"*"
)
.
allowCredentials
(
true
)
.
allowedMethods
(
"GET"
,
"POST"
,
"DELETE"
,
"PUT"
,
"PATCH"
)
.
maxAge
(
3600
);
}
};
}
@Bean
public
Docket
api
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
select
()
// 自行修改为自己的包路径
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"com.tykj"
))
.
paths
(
PathSelectors
.
any
())
.
build
();
}
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
.
title
(
"数据模型"
)
.
description
(
"数据模型"
)
.
version
(
"1.1"
)
.
build
();
}
@Override
public
void
addResourceHandlers
(
ResourceHandlerRegistry
registry
)
{
// 这里之所以多了一"/",是为了解决打war时访问不到问题
registry
.
addResourceHandler
(
"/webs/**"
).
addResourceLocations
(
"classpath:/webs/"
);
}
}
src/main/java/com/tykj/base/consumer/FourComsumer.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
consumer
;
import
java.util.Objects
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/7/5 17:28
*/
@FunctionalInterface
public
interface
FourComsumer
<
T
,
Y
,
U
,
I
>
{
/**
* accept
* @param t
* @param y
* @param u
* @param i
*/
void
accept
(
T
t
,
Y
y
,
U
u
,
I
i
);
/**
* andThen
* @param after
* @return
*/
default
FourComsumer
<
T
,
Y
,
U
,
I
>
andThen
(
FourComsumer
<?
super
T
,
?
super
Y
,
?
super
U
,
?
super
I
>
after
)
{
Objects
.
requireNonNull
(
after
);
return
(
l
,
y
,
u
,
i
)
->
{
accept
(
l
,
y
,
u
,
i
);
after
.
accept
(
l
,
y
,
u
,
i
);
};
}
}
src/main/java/com/tykj/base/entity/BaseEntity.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.util.Date
;
/**
* @author HuangXiahao
* @version V1.0
* @class BaseEntity
* @packageName com.example.demo.entity
**/
@Data
@MappedSuperclass
public
abstract
class
BaseEntity
{
@Id
@SequenceGenerator
(
sequenceName
=
"SEQUENCE"
,
name
=
"t1"
,
allocationSize
=
1
)
@GeneratedValue
(
strategy
=
GenerationType
.
SEQUENCE
,
generator
=
"t1"
)
@ApiModelProperty
(
"主键"
)
protected
Integer
id
;
@ApiModelProperty
(
"创建时间"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
protected
Date
createdTime
;
@ApiModelProperty
(
"修改时间"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
protected
Date
updatedTime
;
@ApiModelProperty
(
"逻辑删除 0为 false 1为 true"
)
protected
Integer
deleted
=
0
;
}
src/main/java/com/tykj/base/entity/XMQGenerator.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
entity
;
import
org.hibernate.engine.spi.SharedSessionContractImplementor
;
import
org.hibernate.id.SequenceGenerator
;
import
java.io.Serializable
;
import
java.util.HashMap
;
/**
* @author HuangXiahao
* @version V1.0
* @class UUIDHexGenerator
* @packageName com.tykj.base.entity
**/
public
class
XMQGenerator
extends
SequenceGenerator
{
public
XMQGenerator
()
{
super
();
}
@Override
public
Serializable
generate
(
SharedSessionContractImplementor
s
,
Object
obj
)
{
if
(
obj
instanceof
HashMap
){
HashMap
hashMap
=
(
HashMap
)
obj
;
if
(
hashMap
.
containsKey
(
"id"
)){
return
(
Serializable
)
hashMap
.
get
(
"id"
);
};
}
return
super
.
generate
(
s
,
obj
);
}
}
src/main/java/com/tykj/base/page/JpaCustomOrder.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
page
;
import
lombok.Data
;
import
org.springframework.data.domain.Sort
;
/**
* 描述:Jpa排序类
*
* @author HuangXiahao
* @version V1.0
* @data 2020/5/13
**/
@Data
public
class
JpaCustomOrder
{
private
String
coulmn
;
private
Sort
.
Direction
direction
;
}
src/main/java/com/tykj/base/page/JpaCustomPage.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
page
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.util.Assert
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* JPA分页类
* @author HuangXiahao
* @class CustomOrder
* @data 2020/5/13
**/
public
class
JpaCustomPage
{
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Integer
page
=
0
;
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Integer
size
=
15
;
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
List
<
JpaCustomOrder
>
orders
=
new
ArrayList
<>();
public
Integer
getPage
()
{
return
page
;
}
public
void
setPage
(
Integer
page
)
{
this
.
page
=
page
;
}
public
Integer
getSize
()
{
return
size
;
}
public
void
setSize
(
Integer
size
)
{
Assert
.
isTrue
(
page
>=
0
,
"分页信息错误!"
);
this
.
size
=
size
;
}
public
List
<
JpaCustomOrder
>
getOrders
()
{
return
orders
;
}
public
void
setOrders
(
List
<
JpaCustomOrder
>
orders
)
{
this
.
orders
=
orders
;
}
@JsonIgnore
public
long
getOffset
()
{
return
page
*
size
;
}
@JsonIgnore
public
Integer
getLimit
()
{
return
size
;
}
@JsonIgnore
public
PageRequest
getPageable
()
{
if
(
orders
.
size
()
!=
0
)
{
List
<
Sort
.
Order
>
orders
=
new
ArrayList
<>();
this
.
orders
.
stream
().
forEach
(
item
->
orders
.
add
(
new
Sort
.
Order
(
item
.
getDirection
(),
item
.
getCoulmn
())));
return
PageRequest
.
of
(
getPage
(),
getLimit
(),
Sort
.
by
(
orders
));
}
return
PageRequest
.
of
(
getPage
(),
getLimit
());
}
}
src/main/java/com/tykj/base/result/ApiException.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
result
;
import
org.springframework.http.ResponseEntity
;
/**
* 全局错误处理类,用于处理一些不容易定义的错误
*
* @author HuangXiahao
**/
public
class
ApiException
extends
RuntimeException
{
private
ResponseEntity
responseEntity
;
public
ApiException
(
ResponseEntity
responseEntity
)
{
this
.
responseEntity
=
responseEntity
;
}
public
ApiException
(
String
message
)
{
this
.
responseEntity
=
ResponseEntity
.
status
(
500
).
body
(
new
ResultObj
(
""
,
message
));
}
public
ApiException
(
Object
data
,
String
message
)
{
this
.
responseEntity
=
ResponseEntity
.
status
(
500
).
body
(
new
ResultObj
(
data
,
message
));
}
public
ResponseEntity
getResponseEntity
()
{
return
responseEntity
;
}
public
void
setResponseEntity
(
ResponseEntity
responseEntity
)
{
this
.
responseEntity
=
responseEntity
;
}
}
src/main/java/com/tykj/base/result/GlobalExceptionHandler.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
result
;
import
com.fasterxml.jackson.databind.exc.InvalidFormatException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.sql.SQLSyntaxErrorException
;
/**
* 错误处理类
* 所有的报错信息都会通过本层的方法向外界返回
*
* @author HuangXiahao
**/
@Order
(
Ordered
.
HIGHEST_PRECEDENCE
)
@ControllerAdvice
@Slf4j
public
class
GlobalExceptionHandler
{
/**
* 业务错误
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler
(
ApiException
.
class
)
public
ResponseEntity
errorMessage
(
ApiException
e
)
{
log
.
warn
(
"[自定义异常] {}"
,
e
.
toString
());
e
.
printStackTrace
();
if
(
e
.
getResponseEntity
()
!=
null
)
{
return
e
.
getResponseEntity
();
}
return
ResultUtil
.
failed
(
e
.
getMessage
());
}
/**
* 处理字段长度异常
* @param invalidFormatException
* @return
*/
@ExceptionHandler
(
InvalidFormatException
.
class
)
public
ResponseEntity
handle
(
InvalidFormatException
invalidFormatException
){
log
.
warn
(
invalidFormatException
.
toString
());
return
ResultUtil
.
failed
(
"字段长度错误,请修改为合适的长度!"
);
}
@ExceptionHandler
(
SQLSyntaxErrorException
.
class
)
public
ResponseEntity
handleSQl
(
InvalidFormatException
invalidFormatException
){
log
.
warn
(
invalidFormatException
.
toString
());
return
ResultUtil
.
failed
(
"列名不合法,请修改列名!"
);
}
}
src/main/java/com/tykj/base/result/ResultObj.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
result
;
import
com.fasterxml.jackson.annotation.JsonPropertyOrder
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author dengdiyi
* @description 接口返回统一标准类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonPropertyOrder
(
value
=
{
"message"
,
"data"
})
public
class
ResultObj
<
T
>
{
private
T
data
;
private
String
message
;
public
ResultObj
(
T
o
)
{
this
.
data
=
o
;
this
.
message
=
"no message"
;
}
}
src/main/java/com/tykj/base/result/ResultUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
result
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
/**
* @author HuangXiahao
* @version V1.0
* @class ResultMessage
* @packageName com.example.hello.demo.resultObject
**/
public
class
ResultUtil
<
T
>
{
/**
* 成功返回结果
*
* @param data 获取的数据
*/
public
static
<
T
>
ResponseEntity
<
ResultObj
<
T
>>
success
(
T
data
,
String
message
)
{
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
data
,
message
));
}
/**
* 成功返回结果
*/
public
static
<
T
>
ResponseEntity
<
ResultObj
<
T
>>
success
(
String
message
)
{
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
null
,
message
));
}
/**
* 成功返回结果
*
* @param data 获取的数据
*/
public
static
<
T
>
ResponseEntity
success
(
T
data
,
HttpHeaders
headers
)
{
return
new
ResponseEntity
(
new
ResultObj
(
data
),
headers
,
HttpStatus
.
OK
);
}
/**
* 失败返回结果
*/
public
static
<
T
>
ResponseEntity
failed
()
{
return
ResponseEntity
.
status
(
500
).
body
(
new
ResultObj
(
"服务器内部发生错误"
));
}
/**
* 失败返回结果
*/
public
static
<
T
>
ResponseEntity
failed
(
T
content
)
{
return
new
ResponseEntity
(
new
ResultObj
(
content
),
HttpStatus
.
INTERNAL_SERVER_ERROR
);
}
/**
* 失败返回结果
*/
public
static
<
T
>
ResponseEntity
failed
(
HttpStatus
httpStatus
)
{
return
new
ResponseEntity
(
httpStatus
);
}
/**
* 失败返回结果
*/
public
static
<
T
>
ResponseEntity
failed
(
HttpStatus
httpStatus
,
T
content
)
{
return
new
ResponseEntity
(
new
ResultObj
(
content
),
httpStatus
);
}
/**
* 参数验证失败返回结果
*/
public
static
<
T
>
ResponseEntity
validateFailed
(
T
content
)
{
return
failed
(
HttpStatus
.
INTERNAL_SERVER_ERROR
,
content
);
}
/**
* 未登录返回结果
*/
public
static
<
T
>
ResponseEntity
unauthorized
()
{
return
failed
(
HttpStatus
.
UNAUTHORIZED
);
}
/**
* 未授权返回结果
*/
public
static
<
T
>
ResponseEntity
forbidden
()
{
return
failed
(
HttpStatus
.
FORBIDDEN
);
}
}
src/main/java/com/tykj/base/util/ClassUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
util
;
import
java.io.File
;
import
java.io.IOException
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.Enumeration
;
import
java.util.List
;
public
class
ClassUtil
{
/**
* 读取项目中所有Class 并以Class对象的集合返回
* @param load ClassLoader
* @return Class对象集合
*/
public
static
List
<
Class
<?>>
loadClassByLoader
(
ClassLoader
load
)
{
List
<
Class
<?>>
classes
=
new
ArrayList
<>();
try
{
Enumeration
<
URL
>
urls
=
load
.
getResources
(
""
);
//放所有类型
while
(
urls
.
hasMoreElements
())
{
URL
url
=
urls
.
nextElement
();
//文件类型(其实是文件夹)
if
(
url
.
getProtocol
().
equals
(
"file"
))
{
loadClassByPath
(
null
,
url
.
getPath
(),
classes
,
load
);
}
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
classes
;
}
/**
* 通过文件路径加载所有类 root 主要用来替换path中前缀(除包路径以外的路径)
*/
private
static
void
loadClassByPath
(
String
root
,
String
path
,
List
<
Class
<?>>
list
,
ClassLoader
load
)
{
File
f
=
new
File
(
path
);
if
(
root
==
null
)
{
root
=
f
.
getPath
();
}
//判断是否是class文件
if
(
f
.
isFile
()
&&
f
.
getName
().
matches
(
"^.*\\.class$"
))
{
try
{
String
classPath
=
f
.
getPath
();
//截取出className 将路径分割符替换为.(windows是\ linux、mac是/)
String
className
=
classPath
.
substring
(
root
.
length
()
+
1
,
classPath
.
length
()
-
6
).
replace
(
'/'
,
'.'
).
replace
(
'\\'
,
'.'
);
list
.
add
(
load
.
loadClass
(
className
));
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
}
else
{
File
[]
fs
=
f
.
listFiles
();
if
(
fs
==
null
)
{
return
;
}
for
(
File
file
:
fs
)
{
loadClassByPath
(
root
,
file
.
getPath
(),
list
,
load
);
}
}
}
}
src/main/java/com/tykj/base/util/DateFormatUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
util
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.FastDateFormat
;
import
java.text.ParseException
;
import
java.time.Instant
;
import
java.util.Date
;
/**
* 时间格式化工具工具
*
* @author HuangXiahao
* @version V1.0
* @class DateFormatUtil
* @packageName com.example.personnelmanager.common.utils
* @data 2020/5/20
**/
public
class
DateFormatUtil
{
public
static
final
String
SYMBOL_DOT
=
"\\."
;
/**
* 日期正则yyyy-MM
*/
public
static
final
String
DATE_REGEX_YYYYMM
=
"^\\d{4}-\\d{1,2}$"
;
/**
* 日期正则yyyy-MM-dd
*/
public
static
final
String
DATE_REGEX_YYYYMMDD
=
"^\\d{4}-\\d{1,2}-\\d{1,2}$"
;
/**
* 日期正则yyyy-MM-dd hh:mm
*/
public
static
final
String
DATE_REGEX_YYYYMMDDHHMM
=
"^\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}$"
;
/**
* 日期正则yyyy-MM-dd hh:mm:ss
*/
public
static
final
String
DATE_REGEX_YYYYMMDDHHMMSS
=
"^\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}$"
;
/**
* Instant日期秒+纳秒
*/
public
static
final
String
DATE_REGEX_SECOND_DOT_NANOSECOND
=
"^[0-9]+\\.[0-9]{1,9}$"
;
/**
* 日期正则yyyy-MM-dd'T'HH:mm:ssZ
*/
public
static
final
String
DATE_REGEX_YYYYMMDD_T_HHMMSS_Z
=
"^\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}Z$"
;
/**
* 日期正则yyyy-MM-dd'T'HH:mm:ssZ
*/
public
static
final
String
DATE_REGEX_YYYYMMDD_T_HHMMSS_SSS_Z
=
"^\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}\\.\\d{1,3}Z$"
;
/**
* 以T分隔日期和时间,并带时区信息,符合ISO8601规范
*/
public
static
final
String
PATTERN_ISO
=
"yyyy-MM-dd'T'HH:mm:ss.SSSZZ"
;
public
static
final
String
PATTERN_ISO_ON_SECOND
=
"yyyy-MM-dd'T'HH:mm:ssZZ"
;
public
static
final
String
PATTERN_ISO_ON_DATE
=
"yyyy-MM-dd"
;
public
static
final
String
PATTERN_ISO_ON_MONTH
=
"yyyy-MM"
;
/**
* 以空格分隔日期和时间,不带时区信息
*/
public
static
final
String
PATTERN_DEFAULT
=
"yyyy-MM-dd HH:mm:ss.SSS"
;
public
static
final
String
PATTERN_DEFAULT_ON_SECOND
=
"yyyy-MM-dd HH:mm:ss"
;
public
static
final
String
PATTERN_DEFAULT_ON_MINUTE
=
"yyyy-MM-dd HH:mm"
;
//
/**
* 以T分隔日期和时间,并带时区信息,符合ISO8601规范
*/
public
static
final
FastDateFormat
ISO_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_ISO
);
public
static
final
FastDateFormat
ISO_ON_SECOND_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_ISO_ON_SECOND
);
public
static
final
FastDateFormat
ISO_ON_DATE_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_ISO_ON_DATE
);
public
static
final
FastDateFormat
ISO_ON_MONTH_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_ISO_ON_MONTH
);
/**
* 以空格分隔日期和时间,不带时区信息
*/
public
static
final
FastDateFormat
DEFAULT_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_DEFAULT
);
public
static
final
FastDateFormat
DEFAULT_ON_SECOND_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_DEFAULT_ON_SECOND
);
public
static
final
FastDateFormat
DEFAULT_ON_MINUTE_FORMAT
=
FastDateFormat
.
getInstance
(
PATTERN_DEFAULT_ON_MINUTE
);
/**
* 将日期格式的字符串转换成指定格式的日期
* @param pattern 日期格式
* @param dateString 日期字符串
* @return
* @throws ParseException
*/
public
static
Date
pareDate
(
String
pattern
,
String
dateString
)
throws
ParseException
{
return
FastDateFormat
.
getInstance
(
pattern
).
parse
(
dateString
);
}
/**
* 将日期格式的字符串根据正则转换成相应格式的日期
* @param dateString 日期字符串
* @return
* @throws ParseException
*/
public
static
Date
pareDate
(
String
dateString
)
throws
ParseException
{
String
source
=
dateString
.
trim
();
if
(
StringUtils
.
isNotBlank
(
source
))
{
if
(
source
.
matches
(
DATE_REGEX_YYYYMM
)){
return
ISO_ON_MONTH_FORMAT
.
parse
(
source
);
}
else
if
(
source
.
matches
(
DATE_REGEX_YYYYMMDD
)){
return
ISO_ON_DATE_FORMAT
.
parse
(
source
);
}
else
if
(
source
.
matches
(
DATE_REGEX_YYYYMMDDHHMM
)){
return
DEFAULT_ON_MINUTE_FORMAT
.
parse
(
source
);
}
else
if
(
source
.
matches
(
DATE_REGEX_YYYYMMDDHHMMSS
)){
return
DEFAULT_ON_SECOND_FORMAT
.
parse
(
source
);
}
else
if
(
source
.
matches
(
DATE_REGEX_YYYYMMDD_T_HHMMSS_Z
)){
return
ISO_ON_SECOND_FORMAT
.
parse
(
source
);
}
else
if
(
source
.
matches
(
DATE_REGEX_YYYYMMDD_T_HHMMSS_SSS_Z
)){
return
ISO_FORMAT
.
parse
(
source
);
}
else
if
(
source
.
matches
(
DATE_REGEX_SECOND_DOT_NANOSECOND
)){
String
[]
split
=
source
.
split
(
SYMBOL_DOT
);
return
Date
.
from
(
Instant
.
ofEpochSecond
(
Long
.
parseLong
(
split
[
0
]),
Long
.
parseLong
(
split
[
1
])));
}
else
{
throw
new
IllegalArgumentException
(
"Invalid date value '"
+
source
+
"'"
);
}
}
return
null
;
}
}
src/main/java/com/tykj/base/util/FileUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
base
.
util
;
import
java.io.*
;
/**
* @author HuangXiahao
* @version V1.0
* @class FileUtil
* @packageName com.tykj.workflowcore.base.util
**/
public
class
FileUtil
{
public
static
File
createFileByString
(
String
filePath
,
String
fileString
){
File
f
=
null
;
try
{
f
=
new
File
(
filePath
);
// 判断文件是否存在
if
(!
f
.
exists
()){
f
.
createNewFile
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
BufferedReader
bufferedReader
=
null
;
BufferedWriter
bufferedWriter
=
null
;
try
{
bufferedReader
=
new
BufferedReader
(
new
StringReader
(
fileString
));
bufferedWriter
=
new
BufferedWriter
(
new
FileWriter
(
f
));
//字符缓冲区
char
buf
[]
=
new
char
[
1024
];
int
len
;
while
((
len
=
bufferedReader
.
read
(
buf
))
!=
-
1
)
{
bufferedWriter
.
write
(
buf
,
0
,
len
);
}
bufferedWriter
.
flush
();
bufferedReader
.
close
();
bufferedWriter
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
bufferedReader
!=
null
)
{
try
{
bufferedReader
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
return
f
;
}
}
src/main/java/com/tykj/model/controller/ModelController.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
controller
;
import
com.tykj.datawarehouse.base.result.ApiException
;
import
com.tykj.datawarehouse.base.result.ResultUtil
;
import
com.tykj.datawarehouse.model.dao.QuoteDao
;
import
com.tykj.datawarehouse.model.dao.RuleDao
;
import
com.tykj.datawarehouse.model.entity.ColumnInfo
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
com.tykj.datawarehouse.model.entity.Rule
;
import
com.tykj.datawarehouse.model.entity.TableInfo
;
import
com.tykj.datawarehouse.model.entity.vo.*
;
import
com.tykj.datawarehouse.model.service.ModelService
;
import
com.tykj.datawarehouse.model.service.impl.ModelHelper
;
import
com.tykj.datawarehouse.model.utils.SessionUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.hibernate.Session
;
import
org.hibernate.internal.SessionImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
/**
* @ClassName ModelController
* @Description TODO
* @Author WWW
* @Date 2021/2/26 13:35
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping
(
"/model"
)
@Api
(
tags
=
"数据模型层接口"
)
public
class
ModelController
{
@Autowired
private
ModelService
modelService
;
@Autowired
private
ModelHelper
modelHelper
;
@Autowired
private
QuoteDao
quoteDao
;
@Autowired
private
RuleDao
ruleDao
;
@Autowired
SessionUtil
sessionUtil
;
/**
* @param
* @return java.util.List<com.tykj.workflowcore.model_layer.model.TableInfo>
* @Author WWW
* @Description 得到所有数据库信息
* @Date 16:19 2021/3/4
**/
@ApiOperation
(
"得到所有数据表信息"
)
@PostMapping
(
"/getAllEntity"
)
public
ResponseEntity
getAllEntity
(
@RequestBody
SearchTableInfoVo
searchTableInfoVo
)
{
Page
<
TableInfo
>
tableInfos
;
tableInfos
=
modelService
.
pageAllEntities
(
searchTableInfoVo
);
return
ResultUtil
.
success
(
tableInfos
,
"数据查询成功!"
);
}
/**
* @return org.springframework.http.ResponseEntity
* @Author WWW
* @Description 根据表名查询所有数据
* @Date 9:30 2021/3/11
**/
@ApiOperation
(
"根据表名查询所有数据"
)
@PostMapping
(
"/getAll"
)
public
ResponseEntity
getAll
(
@RequestBody
SearchAllVO
searchAllVO
)
throws
SQLException
{
if
(
searchAllVO
.
getOrderConditions
()
!=
null
&&
searchAllVO
.
getOrderConditions
().
size
()
>
0
)
{
return
ResultUtil
.
success
(
modelService
.
findAllByName
(
searchAllVO
.
getTableName
(),
searchAllVO
.
getOrderConditions
()),
"查询成功!"
);
}
return
ResultUtil
.
success
(
modelService
.
findAllByName
(
searchAllVO
.
getTableName
()),
"查询成功!"
);
}
/**
* @param searchColumnInfoVo
* @return java.util.List<com.tykj.workflowcore.model_layer.model.ColumnInfo>
* @Author WWW
* @Description 根据表名得到所有字段名
* @Date 16:20 2021/3/4
**/
@ApiOperation
(
"根据表名或者id查询表中所有字段"
)
@PostMapping
(
"/getAllField"
)
public
ResponseEntity
getFields
(
@RequestBody
SearchColumnInfoVo
searchColumnInfoVo
)
{
List
<
ColumnInfo
>
columnInfos
=
modelService
.
showModelFields
(
searchColumnInfoVo
);
for
(
ColumnInfo
columnInfo
:
columnInfos
)
{
List
<
Quote
>
allQuote
=
quoteDao
.
findAllByColumnId
(
columnInfo
.
getId
());
Rule
rule
;
try
{
rule
=
ruleDao
.
findAllByColumnId
(
columnInfo
.
getId
());
}
catch
(
Exception
e
)
{
throw
new
ApiException
(
"规则不唯一!"
);
}
columnInfo
.
setRule
(
rule
);
columnInfo
.
setQuoteList
(
allQuote
);
}
return
ResultUtil
.
success
(
columnInfos
,
"数据查询成功!"
);
}
/**
* @param
* @return org.springframework.http.ResponseEntity
* @Author WWW
* @Description 新增数据模型
* @Date 16:21 2021/3/4
**/
@ApiOperation
(
"新增数据模型"
)
@PostMapping
(
value
=
"/addModel"
)
public
ResponseEntity
addModel
(
@RequestBody
TableVO
tableVO
)
{
long
start
=
System
.
currentTimeMillis
();
modelService
.
newTable
(
tableVO
);
long
end
=
System
.
currentTimeMillis
();
log
.
warn
(
"创建总用时为:{}秒"
,
(
end
-
start
)
/
1000.0
);
return
ResultUtil
.
success
(
""
,
"新建成功!"
);
}
/**
* @param map
* @return int
* @Author WWW
* @Description 对应表插入数据
* map (表名,字段数据)
* @Date 16:22 2021/3/4
**/
@ApiOperation
(
value
=
"根据表名表插入数据"
)
@PostMapping
(
"/insertValues"
)
public
ResponseEntity
insertValues
(
@RequestBody
Map
<
String
,
Object
>
map
)
{
SessionImpl
session
=(
SessionImpl
)
sessionUtil
.
getSession
();
int
i
=
modelService
.
operationValueByEntityName
(
map
,
session
,
session:
:
saveOrUpdate
,
modelService:
:
validationAllRuleAndQuote
);
if
(
i
==
0
)
{
return
ResultUtil
.
success
(
""
,
"数据插入成功!"
);
}
return
ResultUtil
.
failed
(
"模型类型不支持插入数据!"
);
}
/**
* @param mapList
* @return int
* @Author WWW
* @Description 对应表插入数据
* map (表名,字段数据)
* @Date 16:22 2021/3/4
**/
@ApiOperation
(
value
=
"根据表名表插入数据"
)
@PostMapping
(
"/insertValueList"
)
public
ResponseEntity
insertValueList
(
@RequestBody
List
<
Map
<
String
,
Object
>>
mapList
)
{
SessionImpl
session
=(
SessionImpl
)
sessionUtil
.
getSession
();
int
i
=
modelService
.
operationValueByEntityNameList
(
mapList
,
session
,
session:
:
saveOrUpdate
,
modelService:
:
validationAllRuleAndQuote
);
if
(
i
==
0
)
{
return
ResultUtil
.
success
(
""
,
"数据保存成功!"
);
}
return
ResultUtil
.
failed
(
"模型类型不支持插入数据!"
);
}
/**
* @param complexQueryVo
* @return 复杂查询
*/
@ApiOperation
(
"复杂查询"
)
@PostMapping
(
"/complexQuery"
)
public
ResponseEntity
complexQuery
(
@RequestBody
complexQueryVo
complexQueryVo
)
{
List
list
=
modelService
.
complexQuery
(
complexQueryVo
.
getTableName
(),
complexQueryVo
.
getColumnNames
(),
complexQueryVo
.
getQueryConditions
(),
complexQueryVo
.
getGroupByColumn
()
);
if
(
list
!=
null
)
{
return
ResultUtil
.
success
(
list
,
"查询成功!"
);
}
return
ResultUtil
.
failed
(
null
,
"没有数据!"
);
}
/**
* @param complexQueryVo
* @return 复杂查询
*/
@ApiOperation
(
"复杂查询(分类)"
)
@PostMapping
(
"/complexQuery/group"
)
public
ResponseEntity
complexQueryWithGroup
(
@RequestBody
complexQueryVo
complexQueryVo
)
{
CustomPage
customPage
=
modelService
.
complexQueryWithGroup
(
complexQueryVo
.
getTableName
(),
complexQueryVo
.
getGroupCondition
(),
complexQueryVo
.
getColumnNames
(),
complexQueryVo
.
getQueryConditions
(),
complexQueryVo
.
getGroupByColumn
(),
complexQueryVo
.
getPage
(),
complexQueryVo
.
getSize
());
if
(
customPage
.
getContents
()
!=
null
)
{
return
ResultUtil
.
success
(
customPage
,
"查询成功!"
);
}
return
ResultUtil
.
failed
(
HttpStatus
.
INTERNAL_SERVER_ERROR
,
"没有数据!"
);
}
@ApiOperation
(
"编辑操作"
)
@PutMapping
(
"/update"
)
public
ResponseEntity
updateTable
(
@RequestBody
UpdateTableInfoVO
updateTableInfoVO
)
{
return
modelService
.
updateTable
(
updateTableInfoVO
);
// if (i == 1) {
// return ResultUtil.success("", "修改成功!");
// }
// return ResultUtil.failed("业务不支持修改!");
}
@ApiOperation
(
"删除操作"
)
@DeleteMapping
(
"/delete"
)
public
ResponseEntity
delTable
(
DelTableVO
delTableVO
)
{
int
i
=
modelService
.
delTable
(
delTableVO
);
if
(
i
==
1
)
{
return
ResultUtil
.
success
(
""
,
"删除成功!"
);
}
return
ResultUtil
.
failed
(
"业务类型不支持删除!"
);
}
@ApiOperation
(
"获得获得非聚合对象example"
)
@GetMapping
(
"/example"
)
public
ResponseEntity
getJSONExample
(
Integer
id
)
{
return
ResultUtil
.
success
(
modelHelper
.
getJsonExample
(
id
),
"获得example成功!"
);
}
@ApiOperation
(
"自定义SQL查询"
)
@PostMapping
(
"/sql"
)
public
ResponseEntity
executeSql
(
String
sql
)
{
try
{
return
ResultUtil
.
success
(
modelService
.
executeQuery
(
sql
),
"查询成功!"
);
}
catch
(
SQLException
throwables
)
{
throwables
.
printStackTrace
();
}
return
ResultUtil
.
failed
(
"SQL错误,查询失败!"
);
}
@ApiOperation
(
"删除接口"
)
@PostMapping
(
"/deleteValue"
)
public
ResponseEntity
deleteValue
(
@RequestBody
Map
<
String
,
Object
>
map
)
{
SessionImpl
session
=(
SessionImpl
)
sessionUtil
.
getSession
();
int
i
=
modelService
.
operationValueByEntityName
(
map
,
session
,
session:
:
delete
,
null
);
if
(
i
==
0
)
{
return
ResultUtil
.
success
(
""
,
"数据删除成功!"
);
}
return
ResultUtil
.
failed
(
"数据删除失败!"
);
}
@ApiOperation
(
"字段类型"
)
@GetMapping
(
"/type"
)
public
ResponseEntity
type
()
{
//这代码狗都不改
List
<
ColumnTypeVO
>
columnTypeVOS
=
Arrays
.
asList
(
new
ColumnTypeVO
(
"数字"
,
"java.lang.Integer"
,
"11"
)
,
new
ColumnTypeVO
(
"浮点数"
,
"java.lang.Double"
,
"11"
)
,
new
ColumnTypeVO
(
"单/多行文本"
,
"java.lang.String"
,
"255"
)
,
new
ColumnTypeVO
(
"布尔值"
,
"java.lang.Boolean"
,
"1"
));
return
ResultUtil
.
success
(
columnTypeVOS
,
"查询成功!"
);
}
}
src/main/java/com/tykj/model/controller/QuoteController.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
controller
;
import
com.tykj.datawarehouse.base.result.ResultUtil
;
import
com.tykj.datawarehouse.model.dao.ColumnInfoDao
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
com.tykj.datawarehouse.model.entity.vo.SearchQuoteVO
;
import
com.tykj.datawarehouse.model.entity.vo.UpdateQuoteVO
;
import
com.tykj.datawarehouse.model.service.QuoteService
;
import
com.tykj.datawarehouse.model.service.impl.ModelImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:57
*/
@Api
(
tags
=
"引用接口"
)
@RestController
@RequestMapping
(
"/quote"
)
public
class
QuoteController
{
@Autowired
private
QuoteService
quoteService
;
@ApiOperation
(
"引用删除"
)
@GetMapping
(
"/delete"
)
public
ResponseEntity
deleteQuote
(
Integer
id
)
{
Integer
integer
=
quoteService
.
delQuote
(
id
);
if
(
integer
==
1
){
return
ResultUtil
.
success
(
"删除成功!"
);
}
return
ResultUtil
.
failed
(
"此id不存在,删除失败"
);
}
@ApiOperation
(
"引用更新"
)
@PostMapping
(
"/update"
)
public
ResponseEntity
UpdateQuote
(
@RequestBody
UpdateQuoteVO
updateQuoteVO
)
{
int
i
=
quoteService
.
updateQuote
(
updateQuoteVO
);
if
(
i
==
0
){
return
ResultUtil
.
success
(
"更新/保存成功!"
);
}
return
ResultUtil
.
failed
(
"引用数据重复,导致更新/保存失败!"
);
}
@ApiOperation
(
"查找所有引用"
)
@PostMapping
(
"/getAllQuote"
)
public
ResponseEntity
getAllQuote
(
@RequestBody
SearchQuoteVO
searchQuoteVO
)
{
return
ResultUtil
.
success
(
quoteService
.
getAllQuote
(
searchQuoteVO
),
"查询成功!"
);
}
@ApiOperation
(
"保存引用"
)
@PostMapping
(
"/saveQuote"
)
public
ResponseEntity
saveQuote
(
@RequestBody
Quote
quote
)
{
return
ResultUtil
.
success
(
quoteService
.
saveQuote
(
quote
),
"保存成功!"
);
}
}
src/main/java/com/tykj/model/controller/RuleController.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
controller
;
import
com.tykj.datawarehouse.base.result.ResultUtil
;
import
com.tykj.datawarehouse.model.entity.vo.RuleVo
;
import
com.tykj.datawarehouse.model.service.RuleService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 16:39
*/
@Api
(
tags
=
"规则接口"
)
@RestController
@RequestMapping
(
"/rule"
)
public
class
RuleController
{
@Autowired
RuleService
ruleService
;
@ApiOperation
(
"规则删除"
)
@GetMapping
(
"/delete"
)
public
ResponseEntity
deleteRule
(
Integer
id
)
{
try
{
ruleService
.
del
(
id
);
return
ResultUtil
.
success
(
"删除成功!"
);
}
catch
(
Exception
e
)
{
}
return
ResultUtil
.
failed
(
"此id已经被删除!"
);
}
@ApiOperation
(
"规则新增"
)
@PostMapping
(
"/save"
)
public
ResponseEntity
add
(
@RequestBody
RuleVo
ruleVo
)
{
try
{
ruleService
.
add
(
ruleVo
);
return
ResultUtil
.
success
(
"保存成功!"
);
}
catch
(
Exception
e
)
{
}
return
ResultUtil
.
failed
(
"保存失败!"
);
}
@ApiOperation
(
"规则修改"
)
@PostMapping
(
"/update"
)
public
ResponseEntity
update
(
@RequestBody
RuleVo
ruleVo
)
{
try
{
ruleService
.
update
(
ruleVo
);
return
ResultUtil
.
success
(
"操作成功!"
);
}
catch
(
Exception
ignored
)
{
}
return
ResultUtil
.
failed
(
"操作失败!"
);
}
@ApiOperation
(
"查询全部"
)
@PostMapping
(
"/getAll"
)
public
ResponseEntity
get
()
{
return
ResultUtil
.
success
(
ruleService
.
getAll
(),
"查询成功"
);
}
}
src/main/java/com/tykj/model/dao/ColumnInfoDao.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
dao
;
import
com.tykj.datawarehouse.model.entity.ColumnInfo
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
/**
* @ClassName ColumnInfoDao
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:22
* @Version 1.0
*/
public
interface
ColumnInfoDao
extends
JpaRepository
<
ColumnInfo
,
Integer
>,
JpaSpecificationExecutor
<
ColumnInfo
>
{
/**
* 根据dbId查询所有
* @param id
* @return
*/
List
<
ColumnInfo
>
findAllByDbId
(
int
id
);
/**
* 根据dbID删除
* @param id
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Modifying
void
deleteAllByDbId
(
Integer
id
);
/**
* @param id
* @param columnName
* @return
*/
ColumnInfo
findByDbIdAndFieldName
(
Integer
id
,
String
columnName
);
}
src/main/java/com/tykj/model/dao/QuoteDao.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
dao
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:23
*/
public
interface
QuoteDao
extends
JpaRepository
<
Quote
,
Integer
>,
JpaSpecificationExecutor
<
Quote
>
{
/**
* 根据Columnid查询全部
* @param id
* @return
*/
List
<
Quote
>
findAllByColumnId
(
Integer
id
);
}
src/main/java/com/tykj/model/dao/RuleDao.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
dao
;
import
com.tykj.datawarehouse.model.entity.Rule
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:01
*/
public
interface
RuleDao
extends
JpaRepository
<
Rule
,
Integer
>,
JpaSpecificationExecutor
<
Rule
>
{
/**
* 根据columnId查询
* @param id
* @return
*/
Rule
findAllByColumnId
(
Integer
id
);
}
src/main/java/com/tykj/model/dao/TableInfoDao.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
dao
;
import
com.tykj.datawarehouse.model.entity.TableInfo
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
/**
* @ClassName TableInfoDao
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:20
* @Version 1.0
*/
public
interface
TableInfoDao
extends
JpaRepository
<
TableInfo
,
Integer
>,
JpaSpecificationExecutor
<
TableInfo
>
{
/**
* 根据表名查询tableInfo
* @param name
* @return
*/
TableInfo
findByModelName
(
String
name
);
}
src/main/java/com/tykj/model/entity/ColumnInfo.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
;
import
com.tykj.datawarehouse.base.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
import
javax.persistence.Transient
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @ClassName ColumnInfo
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:14
* @Version 1.0
*/
@Data
@NoArgsConstructor
@Entity
@Table
@ApiModel
(
"列对象"
)
public
class
ColumnInfo
extends
BaseEntity
{
/**
* 是否primary key, 0是,1否
*/
@ApiModelProperty
(
"是否主键"
)
private
Integer
primaryKey
;
@ApiModelProperty
(
"列名"
)
private
String
fieldName
;
@ApiModelProperty
(
"列名中文描述"
)
private
String
fieldTitle
;
@ApiModelProperty
(
"列类型"
)
private
String
fieldType
;
@ApiModelProperty
(
"长度"
)
private
Integer
fieldLength
;
@ApiModelProperty
(
"所属表名"
)
private
String
dbName
;
@ApiModelProperty
(
"所属表id"
)
private
Integer
dbId
;
@ApiModelProperty
(
"详细描述"
)
private
String
description
;
@ApiModelProperty
(
"规则"
)
@Transient
private
Rule
rule
=
new
Rule
();
@ApiModelProperty
(
"引用对象"
)
@Transient
private
List
<
Quote
>
quoteList
=
new
ArrayList
<>();
public
ColumnInfo
(
Integer
primaryKey
,
String
fieldName
,
String
fieldTitle
,
String
fieldType
,
Integer
fieldLength
,
String
dbName
,
Integer
dbId
,
String
description
)
{
this
.
primaryKey
=
primaryKey
;
this
.
fieldName
=
fieldName
;
this
.
fieldTitle
=
fieldTitle
;
this
.
fieldType
=
fieldType
;
this
.
fieldLength
=
fieldLength
;
this
.
dbName
=
dbName
;
this
.
dbId
=
dbId
;
this
.
description
=
description
;
}
}
src/main/java/com/tykj/model/entity/Quote.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
;
import
com.tykj.datawarehouse.base.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
@ApiModel
(
"引用对象"
)
public
class
Quote
extends
BaseEntity
{
@Column
@ApiModelProperty
(
"columnId"
)
private
Integer
columnId
;
@ApiModelProperty
(
"值"
)
private
String
value
;
}
src/main/java/com/tykj/model/entity/Rule.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
;
import
com.tykj.datawarehouse.base.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author HASEE
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table
@ApiModel
(
"规则表"
)
public
class
Rule
extends
BaseEntity
{
@ApiModelProperty
(
"表id"
)
private
Integer
tableId
;
@ApiModelProperty
(
"字段id"
)
private
Integer
columnId
;
@ApiModelProperty
(
"规则"
)
private
String
regular
;
}
src/main/java/com/tykj/model/entity/TableInfo.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
;
import
com.tykj.datawarehouse.base.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Lob
;
import
javax.persistence.Table
;
/**
* @ClassName TableInfo
* @Description TODO
* @Author WWW
* @Date 2021/2/24 11:05
* @Version 1.0
*/
@Entity
@Table
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
"表对象"
)
public
class
TableInfo
extends
BaseEntity
{
@ApiModelProperty
(
"数据对象名,不能为空"
)
@Column
(
nullable
=
false
)
private
String
modelName
;
@ApiModelProperty
(
"表中文名,不能为空"
)
@Column
(
nullable
=
false
)
private
String
modelTitle
;
@ApiModelProperty
(
"详细描述"
)
private
String
description
;
@Lob
@ApiModelProperty
(
"表对应hbm.xml"
)
private
String
xml
;
}
src/main/java/com/tykj/model/entity/customEnums/ConnectionType.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
customEnums
;
/**
* @ClassName ModelType
* @Description TODO 模型的3种类型
* @Author Hxh
* @Date 2021/3/26 14:41
* @Version 1.0
*/
public
enum
ConnectionType
{
/**
* or
*/
OR
(
" or "
),
/**
* and
*/
AND
(
" and "
);
private
final
String
type
;
ConnectionType
(
String
type
)
{
this
.
type
=
type
;
}
public
String
getType
()
{
return
type
;
}
}
src/main/java/com/tykj/model/entity/vo/ColumnTypeVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/30 9:51
*/
@ApiModel
(
"列类型VO"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ColumnTypeVO
{
@ApiModelProperty
(
"中文名"
)
private
String
lab
;
@ApiModelProperty
(
"类型"
)
private
String
value
;
@ApiModelProperty
(
"长度"
)
private
String
lengths
;
}
src/main/java/com/tykj/model/entity/vo/ColumnVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
com.tykj.datawarehouse.model.entity.Rule
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @ClassName ColumnVO
* @Description TODO
* @Author WWW
* @Date 2021/3/1 9:58
* @Version 1.0
*/
@ApiModel
(
"列信息VO"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ColumnVO
{
@ApiModelProperty
(
"id"
)
private
Integer
id
;
@ApiModelProperty
(
"是否主键"
)
private
Integer
primaryKey
=
1
;
@ApiModelProperty
(
"字段类型"
)
private
String
fieldType
;
@ApiModelProperty
(
"字段名"
)
private
String
fieldName
;
@ApiModelProperty
(
"中文描述"
)
private
String
fieldTitle
;
@ApiModelProperty
(
"字段长度,有默认值"
)
private
Integer
fieldLength
;
@ApiModelProperty
(
"规则"
)
private
Rule
rule
;
@ApiModelProperty
(
"详细描述"
)
private
String
description
;
@ApiModelProperty
(
"引用数组"
)
private
List
<
Quote
>
quoteList
;
}
src/main/java/com/tykj/model/entity/vo/ColumnWithQuoteVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.model.entity.ColumnInfo
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/18 14:19
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ColumnWithQuoteVO
{
private
ColumnInfo
columnInfo
;
private
List
<
Quote
>
quotes
;
}
src/main/java/com/tykj/model/entity/vo/CustomPage.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @author HuangXiahao
* @version V1.0
* @class CustomPage
* @packageName com.tykj.model_layer.entity.vo
**/
@ApiModel
(
"带分页的返回"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
CustomPage
{
public
long
total
;
public
List
contents
;
}
src/main/java/com/tykj/model/entity/vo/DelTableVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @ClassName DelTableVO
* @Description TODO
* @Author WWW
* @Date 2021/3/23 18:51
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel
(
"删除VO类"
)
public
class
DelTableVO
{
@ApiModelProperty
(
"模型id"
)
private
Integer
id
;
@ApiModelProperty
(
"模型名称"
)
private
String
dbName
;
}
src/main/java/com/tykj/model/entity/vo/GroupCondition.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
GroupCondition
{
private
String
name
;
private
String
value
;
}
src/main/java/com/tykj/model/entity/vo/OrderCondition.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/9 17:03
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
OrderCondition
{
@ApiModelProperty
(
"列"
)
private
String
columns
;
@ApiModelProperty
(
"排序"
)
private
String
sortValue
;
}
src/main/java/com/tykj/model/entity/vo/QueryCondition.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.model.entity.customEnums.ConnectionType
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author HASEE
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
"复杂查询"
)
public
class
QueryCondition
{
/**
* 字段名 例如:age
*/
@ApiModelProperty
(
value
=
"查询字段名"
,
example
=
"age"
)
private
String
name
;
/**
* 条件符号类型 例如:>
*/
@ApiModelProperty
(
value
=
"查询条件符号类型"
,
example
=
">"
)
private
String
type
;
/**
* 条件参数值 例如:20
*/
@ApiModelProperty
(
value
=
"条件参数值"
,
example
=
"18"
)
private
String
value
;
@ApiModelProperty
(
value
=
"连接条件"
,
example
=
"or或者and"
)
private
ConnectionType
connectionType
;
}
src/main/java/com/tykj/model/entity/vo/RuleVo.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author HASEE
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
"查询规则信息VO"
)
public
class
RuleVo
{
@ApiModelProperty
private
Integer
id
;
@ApiModelProperty
(
"表id"
)
private
Integer
tableId
;
@ApiModelProperty
(
"字段id"
)
private
Integer
columnId
;
@ApiModelProperty
(
"规则"
)
private
String
regular
;
}
src/main/java/com/tykj/model/entity/vo/SearchAllVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/9 19:24
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SearchAllVO
{
private
String
tableName
;
List
<
OrderCondition
>
orderConditions
;
}
src/main/java/com/tykj/model/entity/vo/SearchColumnInfoVo.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.base.page.JpaCustomPage
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @ClassName SearchColumnInfoVo
* @Description TODO
* @Author WWW
* @Date 2021/3/15 14:46
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel
(
"查询列信息VO"
)
public
class
SearchColumnInfoVo
extends
JpaCustomPage
{
@ApiModelProperty
(
"查询表id"
)
private
Integer
dbId
;
@ApiModelProperty
(
"列名称"
)
private
String
dbName
;
}
src/main/java/com/tykj/model/entity/vo/SearchQuoteVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/18 13:19
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SearchQuoteVO
{
private
Integer
[]
columnIds
;
private
Integer
[]
ids
;
private
String
value
;
private
String
[]
values
;
}
src/main/java/com/tykj/model/entity/vo/SearchTableInfoVo.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.base.page.JpaCustomPage
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @ClassName SearchTableInfoVo
* @Description TODO
* @Author WWW
* @Date 2021/3/11 16:06
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel
(
"查询表信息VO"
)
public
class
SearchTableInfoVo
extends
JpaCustomPage
{
@ApiModelProperty
(
"表id"
)
private
Integer
id
;
@ApiModelProperty
(
"表名称"
)
private
String
modelName
;
@ApiModelProperty
(
"表中文名"
)
private
String
modelTitle
;
@ApiModelProperty
(
"表名称数组"
)
private
Integer
[]
modelType
;
@ApiModelProperty
(
"表id数组"
)
private
Integer
[]
ids
;
}
src/main/java/com/tykj/model/entity/vo/TableAndColumnInfoVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.model.entity.ColumnInfo
;
import
com.tykj.datawarehouse.model.entity.TableInfo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @ClassName TableAndColumnInfoVO
* @Description TODO
* @Author WWW
* @Date 2021/3/29 9:59
* @Version 1.0
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
TableAndColumnInfoVO
{
private
List
<
TableInfo
>
tableInfos
;
private
List
<
ColumnInfo
>
columnInfos
;
}
src/main/java/com/tykj/model/entity/vo/TableVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @ClassName tableVO
* @Description TODO
* @Author WWW
* @Date 2021/3/1 9:56
* @Version 1.0
*/
@ApiModel
(
"表信息VO"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
TableVO
{
@ApiModelProperty
(
"中文描述"
)
private
String
modelTitle
;
@ApiModelProperty
(
"表名"
)
private
String
modelName
;
@ApiModelProperty
(
"详细描述"
)
private
String
description
;
/**
* 0扫描,1自建,2扫描后自选
*/
@ApiModelProperty
(
"模型类型"
)
private
Integer
modelType
;
@ApiModelProperty
(
"父表名称"
)
private
String
parentTable
;
@ApiModelProperty
(
"列数组"
)
private
List
<
ColumnVO
>
dataList
;
}
src/main/java/com/tykj/model/entity/vo/UpdateQuoteVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/18 15:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
UpdateQuoteVO
{
@ApiModelProperty
(
"id"
)
private
Integer
id
;
private
List
<
Quote
>
quoteList
;
}
src/main/java/com/tykj/model/entity/vo/UpdateTableInfoVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @ClassName UpdateTableInfoVO
* @Description TODO
* @Author WWW
* @Date 2021/3/16 13:43
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
"更新表VO"
)
public
class
UpdateTableInfoVO
{
@ApiModelProperty
(
"表id"
)
private
Integer
dbId
;
@ApiModelProperty
(
"表名称"
)
private
String
dbName
;
@ApiModelProperty
(
"TableVO"
)
private
TableVO
tableVO
;
}
src/main/java/com/tykj/model/entity/vo/VersionVO.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Lob
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/19 15:42
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
VersionVO
{
@ApiModelProperty
(
"tableInfoID"
)
private
Integer
dbId
;
@ApiModelProperty
(
"版本号"
)
private
String
versionId
;
@ApiModelProperty
(
"版本号"
)
private
String
versionDesc
;
@Lob
@ApiModelProperty
(
"版本对应数据"
)
private
String
content
;
}
src/main/java/com/tykj/model/entity/vo/complexQueryVo.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
entity
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @author HuangXiahao
* @version V1.0
* @class complexQueryVo
* @packageName com.tykj.model_layer.entity.vo
**/
@ApiModel
(
"复杂查询VO"
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
complexQueryVo
{
@ApiModelProperty
(
"表名"
)
String
tableName
;
@ApiModelProperty
(
"筛选字段"
)
List
<
String
>
columnNames
;
@ApiModelProperty
(
"分类条件信息"
)
GroupCondition
groupCondition
;
@ApiModelProperty
(
"查询条件"
)
List
<
QueryCondition
>
queryConditions
;
@ApiModelProperty
(
"分类字段"
)
String
groupByColumn
;
Integer
page
=
0
;
Integer
size
=
15
;
}
src/main/java/com/tykj/model/myEnum/ModelType.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
myEnum
;
/**
* @ClassName ModelType
* @Description TODO 模型的3种类型
* @Author WWW
* @Date 2021/3/26 14:41
* @Version 1.0
*/
public
class
ModelType
{
/**
* 聚合对象
*/
// public static final Integer AGGREGATION = -1;
/**
* 基础扫描对象
*/
public
static
final
Integer
BASICS
=
0
;
/**
* 业务对象
*/
// public static final Integer BUSINESS = 1;
/**
* 基础对象延伸
*/
// public static final Integer BASICS_EXTENSION = 2;
/**
* 数据源对象
*/
public
static
final
Integer
DATA_SOURCE
=
3
;
/**
*虚拟对象,业务对象加聚合对象
*/
public
static
final
Integer
VIRTUAL
=
4
;
}
src/main/java/com/tykj/model/service/ModelService.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
service
;
import
com.tykj.datawarehouse.base.consumer.FourComsumer
;
import
com.tykj.datawarehouse.model.entity.ColumnInfo
;
import
com.tykj.datawarehouse.model.entity.TableInfo
;
import
com.tykj.datawarehouse.model.entity.vo.*
;
import
org.hibernate.internal.SessionImpl
;
import
org.hibernate.type.Type
;
import
org.springframework.data.domain.Page
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.sql.SQLException
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.BiConsumer
;
/**
* @ClassName ModelService
* @Description TODO
* @Author WWW
* @Date 2021/2/26 13:36
* @Version 1.0
*/
public
interface
ModelService
{
/**
* 分页查询
*
* @param searchTableInfoVo
* @return
*/
Page
<
TableInfo
>
pageAllEntities
(
SearchTableInfoVo
searchTableInfoVo
);
/**
* 方法重载不分页查询
*
* @return
*/
List
<
TableInfo
>
listAllEntities
(
SearchTableInfoVo
searchTableInfoVo
);
/**
* 根据表名查询所有字段信息
*
* @param searchColumnInfoVo
* @return
*/
List
<
ColumnInfo
>
showModelFields
(
SearchColumnInfoVo
searchColumnInfoVo
);
/**
* 新建模型
*
* @param tableVO
* @return
*/
TableInfo
newTable
(
TableVO
tableVO
);
/**
*
*根据表名插入数据
* @param map
* @return
*/
int
operationValueByEntityName
(
Map
<
String
,
Object
>
map
,
SessionImpl
session
,
BiConsumer
<
String
,
Object
>
biConsumer
,
FourComsumer
<
TableInfo
,
Object
,
Type
,
String
>
valitor
);
int
operationValueByEntityNameList
(
List
<
Map
<
String
,
Object
>>
mapList
,
SessionImpl
session
,
BiConsumer
<
String
,
Object
>
biConsumer
,
FourComsumer
<
TableInfo
,
Object
,
Type
,
String
>
valitor
);
/**
* 根据表名查询所有
*
* @param name
* @return
* @throws SQLException
*/
List
<
Map
<
String
,
Object
>>
findAllByName
(
String
name
)
throws
SQLException
;
List
<
Map
<
String
,
Object
>>
findAllByName
(
String
name
,
List
<
OrderCondition
>
orderConditions
)
;
/**
* 复杂查询
*
* @param tableName
* @param queryConditions
* @return
*/
List
<
Map
<
String
,
Object
>>
complexQuery
(
String
tableName
,
List
<
String
>
columnNames
,
List
<
QueryCondition
>
queryConditions
,
String
groupName
);
/**
* 复杂查询(带分类)
*
* @param tableName
* @param queryConditions
* @return
*/
CustomPage
complexQueryWithGroup
(
String
tableName
,
GroupCondition
groupCondition
,
List
<
String
>
columnNames
,
List
<
QueryCondition
>
queryConditions
,
String
groupByColumn
,
Integer
page
,
Integer
size
);
/**
* 修改表
*
* @param updateTableInfoVO
* @return
*/
ResponseEntity
updateTable
(
UpdateTableInfoVO
updateTableInfoVO
);
/**
* 删除表
*
* @param delTableVO
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
int
delTable
(
DelTableVO
delTableVO
);
/**
* 根据id批量查询所有tableInfo和ColumnInfo
*
* @param ids
* @return
*/
TableAndColumnInfoVO
getTableInfoAndColumnInfoByBatch
(
Integer
[]
ids
);
/**
* 执行自定义SQL
* @param sql
* @return
* @throws SQLException
*/
List
<
Map
<
String
,
Object
>>
executeQuery
(
String
sql
)
throws
SQLException
;
void
validationAllRuleAndQuote
(
TableInfo
tableInfo
,
Object
value
,
Type
propertyType
,
String
propertyNames
);
}
src/main/java/com/tykj/model/service/QuoteService.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
service
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
com.tykj.datawarehouse.model.entity.vo.SearchQuoteVO
;
import
com.tykj.datawarehouse.model.entity.vo.UpdateQuoteVO
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:58
*/
public
interface
QuoteService
{
/**
* 更新quote
* @param updateQuoteVO
*/
int
updateQuote
(
UpdateQuoteVO
updateQuoteVO
);
/**
* 条件查询引用
* @param searchQuoteVO
* @return
*/
List
<
Quote
>
getAllQuote
(
SearchQuoteVO
searchQuoteVO
);
Quote
saveQuote
(
Quote
quote
);
Integer
delQuote
(
Integer
id
);
}
src/main/java/com/tykj/model/service/RuleService.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
service
;
import
com.tykj.datawarehouse.model.entity.Rule
;
import
com.tykj.datawarehouse.model.entity.vo.RuleVo
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:04
*/
public
interface
RuleService
{
/**
* 新增
* @param ruleVo
*/
void
add
(
RuleVo
ruleVo
);
/**
* 修改
* @param ruleVo
*/
void
update
(
RuleVo
ruleVo
);
/**
* 删除
* @param id
*/
void
del
(
Integer
id
);
/**
* 查询
* @return
*/
List
<
Rule
>
getAll
();
}
src/main/java/com/tykj/model/service/impl/ModelHelper.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
service
.
impl
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.tykj.datawarehouse.base.result.ApiException
;
import
com.tykj.datawarehouse.model.dao.ColumnInfoDao
;
import
com.tykj.datawarehouse.model.dao.TableInfoDao
;
import
com.tykj.datawarehouse.model.entity.ColumnInfo
;
import
com.tykj.datawarehouse.model.entity.TableInfo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
static
java
.
lang
.
String
.
format
;
/**
* @author C
*/
@Service
public
class
ModelHelper
{
@Autowired
private
TableInfoDao
tableInfoDao
;
@Autowired
private
ColumnInfoDao
columnInfoDao
;
/**
* 获取指定数据模型的json格式数据示例
*
* @param tableInfoId 指定id
* @return json格式的数据示例
*/
public
String
getJsonExample
(
Integer
tableInfoId
)
{
/* 你要放10个元素,10/0.75+1=14 */
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
TableInfo
tableInfo
=
tableInfoDao
.
findById
(
tableInfoId
)
.
orElseThrow
(()
->
new
ApiException
(
format
(
"未找到该id的数据:%s"
,
tableInfoId
)));
String
resultKey
=
tableInfo
.
getModelName
();
Map
<
String
,
Object
>
resultValue
=
new
HashMap
<>();
//根据表id查出字段信息 并加入Map结果
List
<
ColumnInfo
>
columnInfos
=
columnInfoDao
.
findAllByDbId
(
tableInfoId
);
for
(
ColumnInfo
columnInfo
:
columnInfos
)
{
resultValue
.
put
(
columnInfo
.
getFieldName
(),
null
);
}
result
.
put
(
resultKey
,
resultValue
);
//做json转换并返回
try
{
return
new
ObjectMapper
().
writeValueAsString
(
result
);
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
throw
new
ApiException
(
"json转换时出现异常"
);
}
}
}
src/main/java/com/tykj/model/service/impl/ModelImpl.java
0 → 100644
浏览文件 @
7a20c95f
差异被折叠。
点击展开。
src/main/java/com/tykj/model/service/impl/QuoteServiceImpl.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
service
.
impl
;
import
com.github.wenhao.jpa.PredicateBuilder
;
import
com.github.wenhao.jpa.Specifications
;
import
com.tykj.datawarehouse.base.result.ApiException
;
import
com.tykj.datawarehouse.model.dao.QuoteDao
;
import
com.tykj.datawarehouse.model.entity.Quote
;
import
com.tykj.datawarehouse.model.entity.vo.SearchQuoteVO
;
import
com.tykj.datawarehouse.model.entity.vo.UpdateQuoteVO
;
import
com.tykj.datawarehouse.model.service.QuoteService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
java
.
util
.
Objects
.
isNull
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/17 15:59
*/
@Service
public
class
QuoteServiceImpl
implements
QuoteService
{
@Autowired
private
QuoteDao
quoteDao
;
@Override
public
int
updateQuote
(
UpdateQuoteVO
updateQuoteVO
)
{
List
<
Quote
>
quoteList
=
updateQuoteVO
.
getQuoteList
();
try
{
for
(
Quote
quote
:
quoteList
)
{
quote
.
setColumnId
(
updateQuoteVO
.
getId
());
if
(
existValue
(
quote
.
getColumnId
(),
quote
.
getValue
()))
{
quoteDao
.
save
(
quote
);
}
}
return
0
;
}
catch
(
Exception
e
){
return
1
;
}
}
@Override
public
List
<
Quote
>
getAllQuote
(
SearchQuoteVO
sqv
)
{
PredicateBuilder
<
Quote
>
and
=
Specifications
.
and
();
if
(
sqv
!=
null
){
and
.
like
(!
isNull
(
sqv
.
getValue
()
)
&&
StringUtils
.
isNotEmpty
(
sqv
.
getValue
()),
"value"
,
"%"
+
sqv
.
getValue
()
+
"%"
);
and
.
in
(
sqv
.
getColumnIds
()!=
null
&&
sqv
.
getColumnIds
().
length
>
0
,
"columnId"
,
sqv
.
getColumnIds
());
and
.
in
(
sqv
.
getValues
()!=
null
&&
sqv
.
getValues
().
length
>
0
,
"value"
,
sqv
.
getValues
());
}
return
quoteDao
.
findAll
(
and
.
build
());
}
@Override
public
Quote
saveQuote
(
Quote
quote
)
{
if
(
existValue
(
quote
.
getColumnId
(),
quote
.
getValue
()))
{
return
quoteDao
.
save
(
quote
);
}
throw
new
ApiException
(
"插入错误!"
);
}
@Override
public
Integer
delQuote
(
Integer
id
)
{
quoteDao
.
deleteById
(
id
);
return
1
;
}
public
boolean
existValue
(
Integer
cId
,
String
value
)
{
List
<
String
>
collect
=
quoteDao
.
findAllByColumnId
(
cId
)
.
stream
()
.
map
(
Quote:
:
getValue
)
.
collect
(
Collectors
.
toList
());
if
(
collect
.
contains
(
value
))
{
return
false
;
}
return
true
;
}
}
src/main/java/com/tykj/model/service/impl/RuleServiceImpl.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
service
.
impl
;
import
com.tykj.datawarehouse.model.dao.RuleDao
;
import
com.tykj.datawarehouse.model.entity.Rule
;
import
com.tykj.datawarehouse.model.entity.vo.RuleVo
;
import
com.tykj.datawarehouse.model.service.RuleService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:05
*/
@Service
public
class
RuleServiceImpl
implements
RuleService
{
@Autowired
RuleDao
ruleDao
;
/**
* @param ruleVo
*/
@Override
public
void
add
(
RuleVo
ruleVo
)
{
Rule
rule
=
new
Rule
(
ruleVo
.
getTableId
(),
ruleVo
.
getColumnId
(),
ruleVo
.
getRegular
()
);
ruleDao
.
save
(
rule
);
}
/**
* 修改
*
* @param ruleVo
*/
@Override
public
void
update
(
RuleVo
ruleVo
)
{
Rule
rule
=
new
Rule
();
rule
.
setId
(
ruleVo
.
getId
());
rule
.
setColumnId
(
ruleVo
.
getColumnId
());
rule
.
setRegular
(
ruleVo
.
getRegular
());
rule
.
setTableId
(
ruleVo
.
getTableId
());
rule
.
setUpdatedTime
(
new
Date
());
ruleDao
.
save
(
rule
);
}
/**
* 删除
*
* @param id
*/
@Override
public
void
del
(
Integer
id
)
{
ruleDao
.
deleteById
(
id
);
}
/**
* 查询
*
* @return
*/
@Override
public
List
<
Rule
>
getAll
()
{
return
ruleDao
.
findAll
();
}
}
src/main/java/com/tykj/model/sqlType/MysqlSqlType.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
sqlType
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author HASEE
*/
public
class
MysqlSqlType
{
/**
* java类型对应sql类型Map
*/
public
static
Map
<
String
,
String
>
TYPE_MAP
=
new
HashMap
<>();
static
{
TYPE_MAP
.
put
(
"java.lang.Integer"
,
"int"
);
TYPE_MAP
.
put
(
"java.lang.Long"
,
"bigint"
);
TYPE_MAP
.
put
(
"java.lang.Short"
,
"smallint"
);
TYPE_MAP
.
put
(
"java.lang.Float"
,
"float"
);
TYPE_MAP
.
put
(
"java.lang.Double"
,
"double"
);
TYPE_MAP
.
put
(
"java.lang.BigDecimal"
,
"numeric"
);
TYPE_MAP
.
put
(
"java.lang.Character"
,
"char(1)"
);
TYPE_MAP
.
put
(
"java.lang.String"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.lang.Byte"
,
"tinyint"
);
TYPE_MAP
.
put
(
"java.lang.Boolean"
,
"bit"
);
TYPE_MAP
.
put
(
"java.lang.Class"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.util.Date"
,
"date"
);
TYPE_MAP
.
put
(
"java.util.Calendar"
,
"timestamp"
);
TYPE_MAP
.
put
(
"java.util.Locale"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.util.TimeZone"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.util.Currency"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.sql.Date"
,
"date"
);
TYPE_MAP
.
put
(
"java.sql.Time"
,
"time"
);
TYPE_MAP
.
put
(
"java.sql.Timestamp"
,
"timestamp"
);
TYPE_MAP
.
put
(
"java.sql.Clob"
,
"clob"
);
TYPE_MAP
.
put
(
"java.sql.Blob"
,
"blob"
);
}
}
src/main/java/com/tykj/model/sqlType/OscarSqlType.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
sqlType
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author HASEE
*/
public
class
OscarSqlType
{
/**
* java类型对应sql类型Map
*/
public
static
Map
<
String
,
String
>
TYPE_MAP
=
new
HashMap
<>();
static
{
TYPE_MAP
.
put
(
"java.lang.Integer"
,
"int"
);
TYPE_MAP
.
put
(
"java.lang.Long"
,
"bigint"
);
TYPE_MAP
.
put
(
"java.lang.Short"
,
"smallint"
);
TYPE_MAP
.
put
(
"java.lang.Float"
,
"float"
);
TYPE_MAP
.
put
(
"java.lang.Double"
,
"DOUBLE PRECISION"
);
TYPE_MAP
.
put
(
"java.lang.BigDecimal"
,
"numeric"
);
TYPE_MAP
.
put
(
"java.lang.Character"
,
"char(1)"
);
TYPE_MAP
.
put
(
"java.lang.String"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.lang.Byte"
,
"tinyint"
);
TYPE_MAP
.
put
(
"java.lang.Boolean"
,
"BOOL"
);
TYPE_MAP
.
put
(
"java.lang.Class"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.util.Date"
,
"date"
);
TYPE_MAP
.
put
(
"java.util.Calendar"
,
"timestamp"
);
TYPE_MAP
.
put
(
"java.util.Locale"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.util.TimeZone"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.util.Currency"
,
"varchar"
);
TYPE_MAP
.
put
(
"java.sql.Date"
,
"date"
);
TYPE_MAP
.
put
(
"java.sql.Time"
,
"time"
);
TYPE_MAP
.
put
(
"java.sql.Timestamp"
,
"timestamp"
);
TYPE_MAP
.
put
(
"java.sql.Clob"
,
"clob"
);
TYPE_MAP
.
put
(
"java.sql.Blob"
,
"blob"
);
}
}
src/main/java/com/tykj/model/utils/CheckUtils.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
com.tykj.datawarehouse.base.result.ApiException
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.List
;
import
java.util.regex.Pattern
;
import
static
java
.
util
.
Objects
.
isNull
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/6/29 11:19
*/
public
class
CheckUtils
{
/**
* 正则校验
*
* @param regx
* @param val
* @return
*/
public
static
Boolean
validationRule
(
String
regx
,
String
val
)
{
//假如规则不为空,值为空默认通过校验
if
(!
StringUtils
.
isEmpty
(
regx
))
{
if
(
StringUtils
.
isEmpty
(
val
)
||
isNull
(
val
))
{
return
true
;
}
else
{
Pattern
pattern
=
Pattern
.
compile
(
regx
);
return
pattern
.
matcher
(
val
).
matches
();
}
}
throw
new
ApiException
(
"校验不通过!"
);
}
public
static
Boolean
validationQuote
(
List
<
String
>
quotes
,
Object
val
)
{
//如果没有引用就通过
if
(
quotes
.
size
()
==
0
)
{
return
true
;
}
//如果引用存在则通过
if
(
val
instanceof
String
){
if
(
quotes
.
contains
(
val
))
{
return
true
;
}
}
if
(
val
instanceof
Integer
){
if
(
quotes
.
contains
(
val
))
{
return
true
;
}
}
if
(
val
instanceof
Double
){
if
(
quotes
.
contains
(
val
))
{
return
true
;
}
}
throw
new
ApiException
(
"引用不通过!"
);
}
}
src/main/java/com/tykj/model/utils/ClassTypeLength.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
/**
* @ClassName ClassTypeLength
* @Description TODO
* @Author WWW
* @Date 2021/3/15 9:53
* @Version 1.0
*/
public
class
ClassTypeLength
{
public
static
String
STRING
=
"class java.lang.String"
;
public
static
String
Integer
=
"class java.lang.Integer"
;
public
static
String
Double
=
"class java.lang.Double"
;
public
static
int
setLength
(
String
genericType
)
{
int
length
;
if
(
STRING
.
equals
(
genericType
))
{
length
=
255
;
}
else
if
(
Integer
.
equals
(
genericType
))
{
length
=
11
;
}
else
if
(
Double
.
equals
(
genericType
))
{
length
=
10
;
}
else
{
length
=
1
;
}
return
length
;
}
}
src/main/java/com/tykj/model/utils/CreateTableUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
com.tykj.datawarehouse.base.result.ApiException
;
import
com.tykj.datawarehouse.model.entity.vo.ColumnVO
;
import
com.tykj.datawarehouse.model.entity.vo.TableVO
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @ClassName CreateTableUtil
* @Description TODO
* @Author WWW
* @Date 2021/3/1 14:35
* @Version 1.0
*/
public
class
CreateTableUtil
{
private
static
final
Map
<
String
,
String
>
TYPE_MAP
=
new
HashMap
<>();
static
{
TYPE_MAP
.
put
(
"java.lang.Integer"
,
"java.lang.Integer"
);
TYPE_MAP
.
put
(
"java.lang.Long"
,
"java.lang.Long"
);
TYPE_MAP
.
put
(
"java.lang.Short"
,
"java.lang.Short"
);
TYPE_MAP
.
put
(
"java.lang.Float"
,
"java.lang.Float"
);
TYPE_MAP
.
put
(
"java.lang.Double"
,
"java.lang.Double"
);
TYPE_MAP
.
put
(
"java.lang.BigDecimal"
,
"java.lang.BigDecimal"
);
TYPE_MAP
.
put
(
"java.lang.String"
,
"java.lang.String"
);
TYPE_MAP
.
put
(
"java.lang.Byte"
,
"java.lang.Byte"
);
TYPE_MAP
.
put
(
"java.lang.Boolean"
,
"java.lang.Boolean"
);
TYPE_MAP
.
put
(
"java.lang.Class"
,
"java.lang.String"
);
TYPE_MAP
.
put
(
"java.util.Date"
,
"java.util.Date"
);
TYPE_MAP
.
put
(
"java.util.Calendar"
,
"java.util.Calendar"
);
TYPE_MAP
.
put
(
"java.util.Locale"
,
"java.util.String"
);
TYPE_MAP
.
put
(
"java.util.TimeZone"
,
"java.util.String"
);
TYPE_MAP
.
put
(
"java.util.Currency"
,
"java.util.String"
);
TYPE_MAP
.
put
(
"java.sql.Date"
,
"java.sql.Date"
);
TYPE_MAP
.
put
(
"java.sql.Time"
,
"java.sql.Time"
);
TYPE_MAP
.
put
(
"java.sql.Timestamp"
,
"java.sql.Timestamp"
);
TYPE_MAP
.
put
(
"java.sql.Clob"
,
"java.sql.Clob"
);
TYPE_MAP
.
put
(
"java.sql.Blob"
,
"java.sql.Blob"
);
TYPE_MAP
.
put
(
"java.lang.Object"
,
"java.lang.String"
);
TYPE_MAP
.
put
(
"java.util.Map"
,
"java.lang.String"
);
}
public
static
String
createTable
(
TableVO
tableVO
)
{
// 1sql-type="text" string 转为text文本,2长度超过会自动转换
List
<
ColumnVO
>
dataList
=
tableVO
.
getDataList
();
String
xmlMapping
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
"<!DOCTYPE hibernate-mapping PUBLIC\n"
+
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n"
+
"<hibernate-mapping>\n"
+
" <class entity-name=\""
+
tableVO
.
getModelName
().
toLowerCase
().
toUpperCase
()
+
"\" table=\""
+
tableVO
.
getModelName
().
toLowerCase
().
toUpperCase
()
+
"\">\n"
;
xmlMapping
+=
" <id name=\"ID\" type=\"java.lang.Integer\" length=\"11\" unsaved-value=\"null\" >\n"
+
" <generator class=\"com.tykj.datawarehouse.base.entity.XMQGenerator\" >\n"
+
"<param name=\"sequence\">SEQUENCE_"
+
tableVO
.
getModelName
().
toLowerCase
().
toUpperCase
()
+
"</param>"
+
"</generator>"
+
" </id>\n"
;
for
(
ColumnVO
columnVO
:
dataList
)
{
try
{
xmlMapping
+=
"\n <property type=\""
+
columnVO
.
getFieldType
()
+
"\" name=\""
+
columnVO
.
getFieldName
().
toUpperCase
()
+
"\" length=\""
+
columnVO
.
getFieldLength
()
+
"\" column=\""
+
columnVO
.
getFieldName
().
toUpperCase
()
+
"\"/>\n"
;
}
catch
(
Exception
e
)
{
throw
new
ApiException
(
"名称不合法!"
);
}
}
// xmlMapping+=" <property name =\"CREATE_TIME\" type =\"calendar\" generated=\"always\" insert=\"false\" update=\"false\" access=\"field\" >" +
// "<column name=\"CREATE_TIME\" not-null=\"true\" default=\"CURRENT_TIMESTAMP\" />\n"+
// "</property> " ;
//
// xmlMapping+=" <property name =\"UPDATE_TIME\" type =\"calendar\" generated=\"always\" insert=\"false\" update=\"false\" access=\"field\" >" +
// "<column name=\"UPDATE_TIME\" not-null=\"true\" default=\"CURRENT_TIMESTAMP\" />\n"+
// "</property> " ;
;
xmlMapping
+=
" <property name = \"CREATE_TIME\" type =\"java.util.Date\" generated=\"always\" > \n"
+
" <column name = \"CREATE_TIME\" default = \"CURRENT_TIMESTAMP\" /> \n"
+
" </property> \n"
+
" <property name = \"UPDATE_TIME\" type =\"java.util.Date\" > \n"
+
" <column name = \"UPDATE_TIME\" default = \"CURRENT_TIMESTAMP\" /> \n"
+
" </property> "
;
xmlMapping
+=
" </class>\n"
+
"</hibernate-mapping>"
;
return
xmlMapping
;
}
public
static
String
createTable
(
String
entityName
,
ColumnVO
primaryColumn
,
List
<
ColumnVO
>
dataList
)
{
// 1sql-type="text" string 转为text文本,2长度超过会自动转换
// List<ColumnVO> dataList = tableVO.getDataList();
String
xmlMapping
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
"<!DOCTYPE hibernate-mapping PUBLIC\n"
+
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n"
+
"<hibernate-mapping>\n"
+
" <class entity-name=\""
+
entityName
+
"\" table=\""
+
entityName
+
"\">\n"
;
xmlMapping
+=
" <id name=\""
+
primaryColumn
.
getFieldName
()
+
"\" type=\""
+
primaryColumn
.
getFieldType
()
+
"\" unsaved-value=\"null\" >\n"
+
" </id>"
;
for
(
ColumnVO
columnVO
:
dataList
)
{
// xmlMapping +=
// "\n <property type=\"" + columnVO.getFieldType() + "\" name=\"" + columnVO.getFieldName() +
// "\" column=\"" + columnVO.getFieldName() + "\"/>\n";
xmlMapping
+=
"\n <property type=\""
+
columnVO
.
getFieldType
()
+
"\" name=\""
+
columnVO
.
getFieldName
()
+
"\" length=\""
+
columnVO
.
getFieldLength
()
+
"\" column=\""
+
columnVO
.
getFieldName
()
+
"\"/>\n"
;
}
xmlMapping
+=
" <property name=\"createTime\" column=\"CREATETIME\" type=\"calendar\" insert=\"false\" \n"
+
" update=\"false\" access=\"field\" generated=\"always\" default=\"CURRENT_TIMESTAMP\"/> \n"
+
" <property name=\"updateTime\" column=\"UPDATETIME\" type=\"calendar\" insert=\"false\" \n"
+
" update=\"false\" access=\"field\" generated=\"always\" default=\"CURRENT_TIMESTAMP\" /> "
;
xmlMapping
+=
" </class>\n"
+
"</hibernate-mapping>"
;
return
xmlMapping
;
}
/**
*小写
*/
String
lowerCaseReg
=
"^[a-z]+$"
;
/**
*大写
*/
String
upperCaseReg
=
"^[A-Z]+$"
;
}
src/main/java/com/tykj/model/utils/GetIndexUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
/**
* @Description TODO
* @Author WWW
* @Date 2021/5/19 17:46
*/
public
class
GetIndexUtil
{
public
static
String
getIndex
(
Integer
id
){
return
""
;
}
}
src/main/java/com/tykj/model/utils/HqlUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
com.tykj.datawarehouse.model.entity.vo.QueryCondition
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author C
*/
@Slf4j
public
class
HqlUtil
{
public
static
String
createQuery
(
String
tableName
,
List
<
String
>
columnNames
,
List
<
QueryCondition
>
conditions
,
String
groupByColumn
)
{
StringBuilder
result
=
new
StringBuilder
(
"select "
);
if
(
Objects
.
isNull
(
columnNames
)
||
columnNames
.
isEmpty
())
{
result
.
append
(
"entity "
);
}
else
{
for
(
String
columnName
:
columnNames
)
{
result
.
append
(
"entity."
).
append
(
columnName
).
append
(
","
);
}
result
.
delete
(
result
.
lastIndexOf
(
","
),
result
.
length
()
);
}
result
.
append
(
" from "
).
append
(
tableName
).
append
(
" entity "
);
if
(
Objects
.
nonNull
(
conditions
)
&&
!
conditions
.
isEmpty
())
{
result
.
append
(
" where "
);
for
(
QueryCondition
condition
:
conditions
)
{
result
.
append
(
"entity."
)
.
append
(
condition
.
getName
())
.
append
(
" "
+
condition
.
getType
()
+
" "
)
.
append
(
"'"
)
.
append
(
condition
.
getValue
())
.
append
(
"'"
);
if
(
condition
.
getConnectionType
()!=
null
){
result
.
append
(
condition
.
getConnectionType
().
getType
());
}
}
if
(
result
.
lastIndexOf
(
" and "
)
>
-
1
)
{
result
.
delete
(
result
.
lastIndexOf
(
" and "
),
result
.
length
());
}
if
(
result
.
lastIndexOf
(
" or "
)
>
-
1
)
{
result
.
delete
(
result
.
lastIndexOf
(
" or "
),
result
.
length
());
}
}
if
(
StringUtils
.
isNotEmpty
(
groupByColumn
))
{
result
.
append
(
" group by entity."
+
groupByColumn
);
}
System
.
out
.
println
(
result
.
toString
());
return
result
.
toString
();
}
}
src/main/java/com/tykj/model/utils/ObjectUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
java.lang.reflect.Field
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author HuangXiahao
* @version V1.0
* @class ObjectUtil
* @packageName com.tykj.model_layer.utils
**/
public
class
ObjectUtil
{
//Object转Map
public
static
Map
<
String
,
Object
>
objectToMap
(
Object
obj
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Class
<?>
clazz
=
obj
.
getClass
();
for
(
Field
field
:
clazz
.
getDeclaredFields
())
{
field
.
setAccessible
(
true
);
String
fieldName
=
field
.
getName
();
Object
value
=
null
;
try
{
value
=
field
.
get
(
obj
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
map
.
put
(
fieldName
,
value
);
}
return
map
;
}
}
src/main/java/com/tykj/model/utils/SessionUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
com.google.common.base.Strings
;
import
com.tykj.datawarehouse.model.dao.TableInfoDao
;
import
com.tykj.datawarehouse.model.entity.TableInfo
;
import
org.hibernate.Session
;
import
org.hibernate.SessionFactory
;
import
org.hibernate.boot.Metadata
;
import
org.hibernate.boot.MetadataSources
;
import
org.hibernate.boot.jaxb.hbm.spi.JaxbHbmHibernateMapping
;
import
org.hibernate.boot.jaxb.hbm.spi.JaxbHbmRootEntityType
;
import
org.hibernate.boot.jaxb.spi.Binding
;
import
org.hibernate.boot.registry.StandardServiceRegistry
;
import
org.hibernate.tool.hbm2ddl.SchemaUpdate
;
import
org.hibernate.tool.schema.TargetType
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
javax.persistence.EntityManagerFactory
;
import
java.io.ByteArrayInputStream
;
import
java.util.EnumSet
;
import
java.util.List
;
/**
* @ClassName SessionUtil
* @Description TODO
* @Author WWW
* @Date 2021/4/1 10:08
* @Version 1.0
*/
@Component
public
class
SessionUtil
{
SessionFactory
sessionFactory
;
StandardServiceRegistry
serviceRegistry
;
@Autowired
TableInfoDao
tableInfoDao
;
MetadataSources
metadataSources
;
public
SessionUtil
(
EntityManagerFactory
entityManagerFactory
,
TableInfoDao
tableInfoDao
){
this
.
tableInfoDao
=
tableInfoDao
;
sessionFactory
=
entityManagerFactory
.
unwrap
(
SessionFactory
.
class
);
serviceRegistry
=
sessionFactory
.
getSessionFactoryOptions
().
getServiceRegistry
();
init
();
}
public
void
init
(){
metadataSources
=
new
MetadataSources
(
serviceRegistry
);
//去数据库读取所有的XML 加载到 metasource里
List
<
TableInfo
>
all
=
tableInfoDao
.
findAll
();
for
(
TableInfo
tableInfo
:
all
)
{
String
xml
=
tableInfo
.
getXml
();
if
(!
Strings
.
isNullOrEmpty
(
xml
)){
addXml
(
xml
);
}
}
}
public
void
addXml
(
String
xmlStr
){
metadataSources
.
addInputStream
(
new
ByteArrayInputStream
(
xmlStr
.
getBytes
()));
Metadata
metadata
=
metadataSources
.
buildMetadata
();
//更新数据库Schema,如果不存在就创建表,存在就更新字段,不会影响已有数据
SchemaUpdate
schemaUpdate
=
new
SchemaUpdate
();
schemaUpdate
.
execute
(
EnumSet
.
of
(
TargetType
.
DATABASE
),
metadata
,
serviceRegistry
);
}
public
Session
getSession
(){
Metadata
metadata
=
metadataSources
.
buildMetadata
();
//创建会话工厂
SessionFactory
newSessionFactory
=
metadata
.
buildSessionFactory
();
//保存对象
return
newSessionFactory
.
openSession
();
}
public
Metadata
getMetadata
(){
return
metadataSources
.
buildMetadata
();
}
public
MetadataSources
getMetadataSources
()
{
return
metadataSources
;
}
public
void
deleteTableInMeteData
(
String
tableName
){
int
needDelete
=
-
1
;
List
<
Binding
>
xmlBindings
=
metadataSources
.
getXmlBindings
();
for
(
int
i
=
0
;
i
<
xmlBindings
.
size
();
i
++)
{
Object
root
=
xmlBindings
.
get
(
i
).
getRoot
();
if
(
root
instanceof
JaxbHbmHibernateMapping
){
List
<
JaxbHbmRootEntityType
>
listEntity
=
((
JaxbHbmHibernateMapping
)
root
).
getClazz
();
for
(
JaxbHbmRootEntityType
jaxbHbmRootEntityType
:
listEntity
)
{
String
currentTableName
=
jaxbHbmRootEntityType
.
getTable
();
if
(
currentTableName
.
equals
(
tableName
)){
needDelete
=
i
;
break
;
}
}
}
}
if
(
needDelete
>-
1
){
xmlBindings
.
remove
(
needDelete
);
}
System
.
out
.
println
(
"1"
);
}
}
src/main/java/com/tykj/model/utils/SqlTypeUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
com.tykj.datawarehouse.model.sqlType.MysqlSqlType
;
import
com.tykj.datawarehouse.model.sqlType.OscarSqlType
;
import
java.util.Map
;
/**
* @author HASEE
*/
public
class
SqlTypeUtil
{
public
static
Map
<
String
,
String
>
getSqlTypeMap
(
String
driveName
){
switch
(
driveName
){
case
"org.h2.Driver"
:
case
"com.oscar.Driver"
:
return
OscarSqlType
.
TYPE_MAP
;
default
:
return
MysqlSqlType
.
TYPE_MAP
;
}
}
}
src/main/java/com/tykj/model/utils/SqlUtil.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
.
datawarehouse
.
model
.
utils
;
import
com.google.common.base.Strings
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.env.Environment
;
import
java.util.Map
;
import
static
java
.
util
.
Objects
.
isNull
;
import
static
java
.
util
.
Objects
.
nonNull
;
/**
* @author C
*/
@Slf4j
public
class
SqlUtil
{
@Autowired
private
Environment
env
;
/**
* 修改表名的SQL语句
*
* @param table 原表名
* @param newTable 新表名
* @return SQL语句
*/
public
static
String
renameTable
(
String
table
,
String
newTable
)
{
return
String
.
format
(
"rename table %s to %s;"
,
table
,
newTable
);
}
/**
* 增加单个字段的SQL语句
*
* @param table 表名
* @param name 字段名
* @param type 字段类型
* @param length 字段长度
* @return SQL语句
*/
public
static
String
addColumn
(
String
table
,
String
name
,
String
type
,
Integer
length
,
Map
<
String
,
String
>
sqlTypeMap
)
{
type
=
sqlTypeMap
.
get
(
type
);
boolean
hasValue
=
!
Strings
.
isNullOrEmpty
(
table
)
&&
!
Strings
.
isNullOrEmpty
(
name
)
&&
nonNull
(
type
);
StringBuilder
result
=
new
StringBuilder
();
if
(
hasValue
)
{
//基本部分
result
.
append
(
String
.
format
(
"ALTER TABLE %s ADD COLUMN %s %s"
,
table
,
name
,
type
));
//字段长度
if
(
nonNull
(
length
)
&&
type
.
equals
(
"java.lang.String"
))
{
result
.
append
(
String
.
format
(
"(%s)"
,
length
));
}
result
.
append
(
";"
);
return
result
.
toString
();
}
else
{
log
.
error
(
"表名或字段名不能为空"
);
throw
new
RuntimeException
(
"表名或字段名不能为空"
);
}
}
/**
* 修改表的单个字段的SQL语句
*
* @param table 表名
* @param name 旧字段名
* @param newName 新字段名
* @param newType 字段类型
* @param newLength 字段长度
* @return SQL语句
*/
public
static
String
updateColumnType
(
String
table
,
String
name
,
String
newName
,
String
newType
,
Integer
newLength
,
String
driverType
,
Map
<
String
,
String
>
sqlTypeMap
)
{
newType
=
sqlTypeMap
.
get
(
newType
);
boolean
hasValue
=
!
Strings
.
isNullOrEmpty
(
table
)
&&
nonNull
(
newType
);
StringBuilder
result
=
new
StringBuilder
();
if
(
hasValue
)
{
if
(
needLengthColumn
(
newType
))
{
result
.
append
(
String
.
format
(
"ALTER TABLE %s MODIFY %s %s (%s) ;"
,
table
,
name
,
newType
,
newLength
));
}
else
{
result
.
append
(
String
.
format
(
"ALTER TABLE %s MODIFY %s %s ;"
,
table
,
name
,
newType
));
}
if
(
isNull
(
newName
))
{
result
.
append
(
String
.
format
(
"ALTER TABLE %s RENAME COLUMN %s TO %s ;"
,
table
,
name
,
newName
));
}
}
else
{
log
.
error
(
"参数缺失"
);
}
return
result
.
toString
();
}
/**
* 修改表的单个字段的SQL语句
*
* @param table 表名
* @param name 旧字段名
* @param newName 新字段名
* @return SQL语句
*/
public
static
String
updateColumnName
(
String
table
,
String
name
,
String
newName
)
{
boolean
hasValue
=
!
Strings
.
isNullOrEmpty
(
table
);
StringBuilder
result
=
new
StringBuilder
();
if
(
hasValue
)
{
if
(!
isNull
(
newName
))
{
result
.
append
(
String
.
format
(
"ALTER TABLE %s RENAME COLUMN %s TO %s ;"
,
table
,
name
,
newName
));
}
}
else
{
log
.
error
(
"参数缺失"
);
}
return
result
.
toString
();
}
/**
* 删除单个字段的SQL语句
*
* @param table 表名
* @param name 字段名
* @return SQL语句
*/
public
static
String
deleteColumn
(
String
table
,
String
name
)
{
return
String
.
format
(
"ALTER TABLE %s DROP %s;"
,
table
,
name
);
}
private
static
boolean
needLengthColumn
(
String
type
)
{
switch
(
type
)
{
case
"varchar"
:
return
true
;
default
:
return
false
;
}
}
}
src/main/resources/application.yml
0 → 100644
浏览文件 @
7a20c95f
spring
:
jackson
:
date-format
:
yyyy-MM-dd HH:mm:ss
time-zone
:
GMT+8
datasource
:
username
:
punish
password
:
123456
url
:
jdbc:oscar://192.168.102.200:2003/OSRDB
driver-class-name
:
com.oscar.Driver
hikari
:
read-only
:
false
connection-timeout
:
60000
idle-timeout
:
60000
validation-timeout
:
3000
max-lifetime
:
60000
login-timeout
:
5
maximum-pool-size
:
60
minimum-idle
:
10
jpa
:
show-sql
:
true
hibernate
:
ddl-auto
:
update
database-platform
:
org.hibernate.dialect.OscarDialect
server
:
port
:
8089
\ No newline at end of file
src/test/java/com/tykj/AnnualPerformanceIndicatorsApplicationTests.java
0 → 100644
浏览文件 @
7a20c95f
package
com
.
tykj
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
AnnualPerformanceIndicatorsApplicationTests
{
@Test
void
contextLoads
()
{
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论