Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
Smart Hospital
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
李俊
Smart Hospital
Commits
74f13ddc
Commit
74f13ddc
authored
Apr 27, 2022
by
lijun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
del job model
parent
16a8bf92
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
22 additions
and
838 deletions
+22
-838
smart-hospital-auth/Dockerfile
smart-hospital-auth/Dockerfile
+4
-4
smart-hospital-common/pom.xml
smart-hospital-common/pom.xml
+0
-1
smart-hospital-common/smart-common-bom/pom.xml
smart-hospital-common/smart-common-bom/pom.xml
+1
-6
smart-hospital-common/smart-common-data/src/main/java/com/smart/hospital/common/data/mybatis/MybatisPlusConfig.java
...smart/hospital/common/data/mybatis/MybatisPlusConfig.java
+1
-1
smart-hospital-common/smart-common-datasource/pom.xml
smart-hospital-common/smart-common-datasource/pom.xml
+1
-1
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/configuration/SmartRibbonRuleAutoConfiguration.java
...teway/configuration/SmartRibbonRuleAutoConfiguration.java
+2
-2
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/predicate/GrayMetadataAwarePredicate.java
.../common/gateway/predicate/GrayMetadataAwarePredicate.java
+2
-2
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/rule/MetadataAwareRule.java
...smart/hospital/common/gateway/rule/MetadataAwareRule.java
+2
-2
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/support/SmartRibbonRuleProperties.java
...tal/common/gateway/support/SmartRibbonRuleProperties.java
+1
-1
smart-hospital-common/smart-common-job/pom.xml
smart-hospital-common/smart-common-job/pom.xml
+0
-55
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/ElasticJobAutoConfiguration.java
...mart/hospital/common/job/ElasticJobAutoConfiguration.java
+0
-72
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/annotation/EnablePigxJob.java
...m/smart/hospital/common/job/annotation/EnablePigxJob.java
+0
-21
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/AbstractJobInitialization.java
...ospital/common/job/jobinit/AbstractJobInitialization.java
+0
-271
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/DataflowJobInitialization.java
...ospital/common/job/jobinit/DataflowJobInitialization.java
+0
-38
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/ScriptJobInitialization.java
.../hospital/common/job/jobinit/ScriptJobInitialization.java
+0
-38
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/SimpleJobInitialization.java
.../hospital/common/job/jobinit/SimpleJobInitialization.java
+0
-38
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/properties/ElasticJobProperties.java
.../hospital/common/job/properties/ElasticJobProperties.java
+0
-277
smart-hospital-common/smart-common-security/src/main/java/com/smart/hospital/common/security/util/SecurityUtils.java
...om/smart/hospital/common/security/util/SecurityUtils.java
+3
-3
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/BaseSequenceProperties.java
...al/common/sequence/properties/BaseSequenceProperties.java
+1
-1
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/SequenceDbProperties.java
...ital/common/sequence/properties/SequenceDbProperties.java
+1
-1
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/SequenceRedisProperties.java
...l/common/sequence/properties/SequenceRedisProperties.java
+1
-1
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/SequenceSnowflakeProperties.java
...mmon/sequence/properties/SequenceSnowflakeProperties.java
+1
-1
smart-hospital-common/smart-common-swagger/src/main/java/com/smart/hospital/common/swagger/annotation/EnableSwaggerSwagger2.java
...ital/common/swagger/annotation/EnableSwaggerSwagger2.java
+1
-1
No files found.
smart-hospital-auth/Dockerfile
View file @
74f13ddc
...
...
@@ -4,12 +4,12 @@ MAINTAINER wangiegie@gmail.com
RUN
ln
-sf
/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN
mkdir
-p
/
pigx
-auth
RUN
mkdir
-p
/
smart-hospital
-auth
WORKDIR
/
pigx
-auth
WORKDIR
/
smart-hospital
-auth
EXPOSE
3000
ADD
./
pigx-auth/target/pigx
-auth.jar ./
ADD
./
smart-hospital-auth/target/smart-hospital
-auth.jar ./
CMD
sleep 120;java -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar
pigx
-auth.jar
CMD
sleep 120;java -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar
smart-hospital
-auth.jar
smart-hospital-common/pom.xml
View file @
74f13ddc
...
...
@@ -18,7 +18,6 @@
<module>
smart-common-data
</module>
<module>
smart-common-datasource
</module>
<module>
smart-common-gateway
</module>
<module>
smart-common-job
</module>
<module>
smart-common-log
</module>
<module>
smart-common-minio
</module>
<module>
smart-common-security
</module>
...
...
smart-hospital-common/smart-common-bom/pom.xml
View file @
74f13ddc
...
...
@@ -13,7 +13,7 @@
<artifactId>
smart-common-bom
</artifactId>
<packaging>
pom
</packaging>
<version>
${smart.version}
</version>
<description>
pigx
公共版本控制
</description>
<description>
smart hospital
公共版本控制
</description>
<properties>
<smart.version>
3.3.0
</smart.version>
...
...
@@ -51,11 +51,6 @@
<artifactId>
smart-common-datasource
</artifactId>
<version>
${smart.version}
</version>
</dependency>
<dependency>
<groupId>
com.smart.hospital
</groupId>
<artifactId>
smart-common-job
</artifactId>
<version>
${smart.version}
</version>
</dependency>
<dependency>
<groupId>
com.smart.hospital
</groupId>
<artifactId>
smart-common-log
</artifactId>
...
...
smart-hospital-common/smart-common-data/src/main/java/com/smart/hospital/common/data/mybatis/MybatisPlusConfig.java
View file @
74f13ddc
...
...
@@ -42,7 +42,7 @@ public class MybatisPlusConfig {
*/
@Bean
@ConditionalOnMissingBean
public
SmartTenantHandler
pigx
TenantHandler
()
{
public
SmartTenantHandler
smart
TenantHandler
()
{
return
new
SmartTenantHandler
();
}
...
...
smart-hospital-common/smart-common-datasource/pom.xml
View file @
74f13ddc
...
...
@@ -14,7 +14,7 @@
<packaging>
jar
</packaging>
<description>
pigx
动态切换数据源
</description>
<description>
smart hospital
动态切换数据源
</description>
<dependencies>
<dependency>
...
...
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/configuration/SmartRibbonRuleAutoConfiguration.java
View file @
74f13ddc
...
...
@@ -6,7 +6,7 @@ import com.alibaba.cloud.nacos.ribbon.NacosServer;
import
com.smart.hospital.common.gateway.filter.GrayLoadBalancerClientFilter
;
import
com.smart.hospital.common.gateway.rule.AbstractDiscoveryEnabledRule
;
import
com.smart.hospital.common.gateway.rule.MetadataAwareRule
;
import
com.smart.hospital.common.gateway.support.
Pigx
RibbonRuleProperties
;
import
com.smart.hospital.common.gateway.support.
Smart
RibbonRuleProperties
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.config.ConfigurableBeanFactory
;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
...
...
@@ -34,7 +34,7 @@ import org.springframework.context.annotation.Scope;
@RequiredArgsConstructor
@ConditionalOnClass
(
NacosServer
.
class
)
@AutoConfigureBefore
(
RibbonClientConfiguration
.
class
)
@EnableConfigurationProperties
(
Pigx
RibbonRuleProperties
.
class
)
@EnableConfigurationProperties
(
Smart
RibbonRuleProperties
.
class
)
@ConditionalOnProperty
(
value
=
"ribbon.rule.enabled"
,
matchIfMissing
=
true
)
public
class
SmartRibbonRuleAutoConfiguration
{
...
...
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/predicate/GrayMetadataAwarePredicate.java
View file @
74f13ddc
...
...
@@ -6,7 +6,7 @@ import cn.hutool.core.util.StrUtil;
import
com.alibaba.cloud.nacos.ribbon.NacosServer
;
import
com.smart.hospital.common.core.constant.CommonConstants
;
import
com.smart.hospital.common.core.util.SpringContextHolder
;
import
com.smart.hospital.common.gateway.support.
Pigx
RibbonRuleProperties
;
import
com.smart.hospital.common.gateway.support.
Smart
RibbonRuleProperties
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.HttpHeaders
;
...
...
@@ -23,7 +23,7 @@ public class GrayMetadataAwarePredicate extends AbstractDiscoveryEnabledPredicat
@Override
protected
boolean
apply
(
NacosServer
server
,
HttpHeaders
headers
)
{
PigxRibbonRuleProperties
ribbonProperties
=
SpringContextHolder
.
getBean
(
Pigx
RibbonRuleProperties
.
class
);
SmartRibbonRuleProperties
ribbonProperties
=
SpringContextHolder
.
getBean
(
Smart
RibbonRuleProperties
.
class
);
if
(!
ribbonProperties
.
isGrayEnabled
())
{
log
.
debug
(
"gray closed,GrayMetadataAwarePredicate return true"
);
...
...
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/rule/MetadataAwareRule.java
View file @
74f13ddc
...
...
@@ -9,7 +9,7 @@ import com.netflix.loadbalancer.Server;
import
com.smart.hospital.common.core.util.SpringContextHolder
;
import
com.smart.hospital.common.gateway.predicate.AbstractDiscoveryEnabledPredicate
;
import
com.smart.hospital.common.gateway.predicate.GrayMetadataAwarePredicate
;
import
com.smart.hospital.common.gateway.support.
Pigx
RibbonRuleProperties
;
import
com.smart.hospital.common.gateway.support.
Smart
RibbonRuleProperties
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.util.PatternMatchUtils
;
...
...
@@ -35,7 +35,7 @@ public class MetadataAwareRule extends AbstractDiscoveryEnabledRule {
@Override
public
List
<
Server
>
filterServers
(
List
<
Server
>
serverList
)
{
PigxRibbonRuleProperties
ribbonProperties
=
SpringContextHolder
.
getBean
(
Pigx
RibbonRuleProperties
.
class
);
SmartRibbonRuleProperties
ribbonProperties
=
SpringContextHolder
.
getBean
(
Smart
RibbonRuleProperties
.
class
);
List
<
String
>
priorIpPattern
=
ribbonProperties
.
getPriorIpPattern
();
if
(
ribbonProperties
.
isGrayEnabled
())
{
...
...
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/support/
Pigx
RibbonRuleProperties.java
→
smart-hospital-common/smart-common-gateway/src/main/java/com/smart/hospital/common/gateway/support/
Smart
RibbonRuleProperties.java
View file @
74f13ddc
...
...
@@ -19,7 +19,7 @@ import java.util.List;
@Setter
@RefreshScope
@ConfigurationProperties
(
"ribbon.rule"
)
public
class
Pigx
RibbonRuleProperties
{
public
class
Smart
RibbonRuleProperties
{
/**
* 是否开启,默认:true
*/
...
...
smart-hospital-common/smart-common-job/pom.xml
deleted
100644 → 0
View file @
16a8bf92
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, giaogiao All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the pig4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: giaogiao (wangiegie@gmail.com)
~
-->
<project
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns=
"http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.smart.hospital
</groupId>
<artifactId>
smart-hospital-common
</artifactId>
<version>
3.3.0
</version>
</parent>
<artifactId>
smart-common-job
</artifactId>
<packaging>
jar
</packaging>
<description>
pigx 定时任务
</description>
<dependencies>
<!-- import elastic-job lite core -->
<dependency>
<groupId>
com.dangdang
</groupId>
<artifactId>
elastic-job-lite-core
</artifactId>
<version>
${elastic-job-lite.version}
</version>
<exclusions>
<exclusion>
<groupId>
com.zaxxer
</groupId>
<artifactId>
HikariCP-java7
</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- import other module if need -->
<dependency>
<groupId>
com.dangdang
</groupId>
<artifactId>
elastic-job-lite-spring
</artifactId>
<version>
${elastic-job-lite.version}
</version>
</dependency>
</dependencies>
</project>
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/ElasticJobAutoConfiguration.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job
;
import
com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration
;
import
com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter
;
import
com.smart.hospital.common.job.jobinit.DataflowJobInitialization
;
import
com.smart.hospital.common.job.jobinit.ScriptJobInitialization
;
import
com.smart.hospital.common.job.jobinit.SimpleJobInitialization
;
import
com.smart.hospital.common.job.properties.ElasticJobProperties
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author giaogiao
* @date 2018/7/24
* 任务初配置入口类
*/
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
(
ElasticJobProperties
.
class
)
public
class
ElasticJobAutoConfiguration
{
/**
* 默认注册中心
*/
public
static
final
String
DEFAULT_REGISTRY_CENTER_NAME
=
"elasticJobRegistryCenter"
;
@Autowired
private
ElasticJobProperties
elasticJobProperties
;
@Bean
(
name
=
DEFAULT_REGISTRY_CENTER_NAME
,
initMethod
=
"init"
)
@ConditionalOnMissingBean
public
ZookeeperRegistryCenter
elasticJobRegistryCenter
()
{
ElasticJobProperties
.
ZkConfiguration
regCenterProperties
=
elasticJobProperties
.
getZookeeper
();
ZookeeperConfiguration
zookeeperConfiguration
=
new
ZookeeperConfiguration
(
regCenterProperties
.
getServerLists
(),
regCenterProperties
.
getNamespace
());
zookeeperConfiguration
.
setBaseSleepTimeMilliseconds
(
regCenterProperties
.
getBaseSleepTimeMilliseconds
());
zookeeperConfiguration
.
setConnectionTimeoutMilliseconds
(
regCenterProperties
.
getConnectionTimeoutMilliseconds
());
zookeeperConfiguration
.
setMaxSleepTimeMilliseconds
(
regCenterProperties
.
getMaxSleepTimeMilliseconds
());
zookeeperConfiguration
.
setSessionTimeoutMilliseconds
(
regCenterProperties
.
getSessionTimeoutMilliseconds
());
zookeeperConfiguration
.
setMaxRetries
(
regCenterProperties
.
getMaxRetries
());
zookeeperConfiguration
.
setDigest
(
regCenterProperties
.
getDigest
());
return
new
ZookeeperRegistryCenter
(
zookeeperConfiguration
);
}
@Bean
(
initMethod
=
"init"
)
@ConditionalOnMissingBean
@ConditionalOnBean
(
ZookeeperRegistryCenter
.
class
)
public
SimpleJobInitialization
simpleJobInitialization
()
{
return
new
SimpleJobInitialization
(
elasticJobProperties
.
getSimples
());
}
@Bean
(
initMethod
=
"init"
)
@ConditionalOnMissingBean
@ConditionalOnBean
(
ZookeeperRegistryCenter
.
class
)
public
DataflowJobInitialization
dataflowJobInitialization
()
{
return
new
DataflowJobInitialization
(
elasticJobProperties
.
getDataflows
());
}
@Bean
(
initMethod
=
"init"
)
@ConditionalOnMissingBean
@ConditionalOnBean
(
ZookeeperRegistryCenter
.
class
)
public
ScriptJobInitialization
scriptJobInitialization
()
{
return
new
ScriptJobInitialization
(
elasticJobProperties
.
getScripts
());
}
}
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/annotation/EnablePigxJob.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job.annotation
;
import
com.smart.hospital.common.job.ElasticJobAutoConfiguration
;
import
org.springframework.context.annotation.Import
;
import
java.lang.annotation.*
;
/**
* @author giaogiao
* @date 2018/7/24
* 开启pigx job
*/
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Inherited
@Import
({
ElasticJobAutoConfiguration
.
class
})
public
@interface
EnablePigxJob
{
}
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/AbstractJobInitialization.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job.jobinit
;
import
com.dangdang.ddframe.job.api.ElasticJob
;
import
com.dangdang.ddframe.job.api.JobType
;
import
com.dangdang.ddframe.job.api.dataflow.DataflowJob
;
import
com.dangdang.ddframe.job.api.simple.SimpleJob
;
import
com.dangdang.ddframe.job.config.JobCoreConfiguration
;
import
com.dangdang.ddframe.job.config.JobTypeConfiguration
;
import
com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration
;
import
com.dangdang.ddframe.job.executor.handler.JobProperties.JobPropertiesEnum
;
import
com.dangdang.ddframe.job.lite.api.listener.AbstractDistributeOnceElasticJobListener
;
import
com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener
;
import
com.dangdang.ddframe.job.lite.config.LiteJobConfiguration
;
import
com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler
;
import
com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter
;
import
com.smart.hospital.common.job.properties.ElasticJobProperties
;
import
lombok.SneakyThrows
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.support.BeanDefinitionBuilder
;
import
org.springframework.beans.factory.support.DefaultListableBeanFactory
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.util.CollectionUtils
;
import
javax.sql.DataSource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
static
com
.
smart
.
hospital
.
common
.
job
.
ElasticJobAutoConfiguration
.
DEFAULT_REGISTRY_CENTER_NAME
;
/**
* @author giaogiao
* @date 2018/7/24
* 任务初始化基类
*/
public
abstract
class
AbstractJobInitialization
implements
ApplicationContextAware
{
protected
ApplicationContext
applicationContext
;
@Override
@SneakyThrows
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
{
this
.
applicationContext
=
applicationContext
;
}
/**
* 初始化任务
*
* @param jobName 任务名称
* @param jobType 任务类型
* @param configuration 配置
*/
protected
void
initJob
(
String
jobName
,
JobType
jobType
,
ElasticJobProperties
.
JobConfiguration
configuration
)
{
//向spring容器中注册作业任务
ElasticJob
elasticJob
=
registerElasticJob
(
jobName
,
configuration
.
getJobClass
(),
jobType
);
//获取注册中心
ZookeeperRegistryCenter
regCenter
=
getZookeeperRegistryCenter
(
configuration
.
getRegistryCenterRef
());
//构建核心配置
JobCoreConfiguration
jobCoreConfiguration
=
getJobCoreConfiguration
(
jobName
,
configuration
);
//获取作业类型配置
JobTypeConfiguration
jobTypeConfiguration
=
getJobTypeConfiguration
(
jobName
,
jobCoreConfiguration
);
//获取Lite作业配置
LiteJobConfiguration
liteJobConfiguration
=
getLiteJobConfiguration
(
jobTypeConfiguration
,
configuration
);
//获取作业事件追踪的数据源配置
JobEventRdbConfiguration
jobEventRdbConfiguration
=
getJobEventRdbConfiguration
(
configuration
.
getEventTraceRdbDataSource
());
//获取作业监听器
ElasticJobListener
[]
elasticJobListeners
=
creatElasticJobListeners
(
configuration
.
getListener
());
elasticJobListeners
=
null
==
elasticJobListeners
?
new
ElasticJobListener
[
0
]
:
elasticJobListeners
;
//注册作业
if
(
null
==
jobEventRdbConfiguration
)
{
new
SpringJobScheduler
(
elasticJob
,
regCenter
,
liteJobConfiguration
,
elasticJobListeners
).
init
();
}
else
{
new
SpringJobScheduler
(
elasticJob
,
regCenter
,
liteJobConfiguration
,
jobEventRdbConfiguration
,
elasticJobListeners
).
init
();
}
}
/**
* 获取作业类型配置
*
* @param jobName 任务名称
* @param jobCoreConfiguration 任务核心配置
* @return JobTypeConfiguration
*/
public
abstract
JobTypeConfiguration
getJobTypeConfiguration
(
String
jobName
,
JobCoreConfiguration
jobCoreConfiguration
);
/**
* 获取作业任务实例
*
* @param jobName 任务名称
* @param jobType 任务类型
* @param strClass 任务类全路径
* @return ElasticJob
*/
private
ElasticJob
registerElasticJob
(
String
jobName
,
String
strClass
,
JobType
jobType
)
{
switch
(
jobType
)
{
case
SIMPLE:
return
registerBean
(
jobName
,
strClass
,
SimpleJob
.
class
);
case
DATAFLOW:
return
registerBean
(
jobName
,
strClass
,
DataflowJob
.
class
);
default
:
return
null
;
}
}
/**
* 获取注册中心
*
* @param registryCenterRef 注册中心引用
* @return ZookeeperRegistryCenter
*/
private
ZookeeperRegistryCenter
getZookeeperRegistryCenter
(
String
registryCenterRef
)
{
if
(
StringUtils
.
isBlank
(
registryCenterRef
))
{
registryCenterRef
=
DEFAULT_REGISTRY_CENTER_NAME
;
}
if
(!
applicationContext
.
containsBean
(
registryCenterRef
))
{
throw
new
RuntimeException
(
"not exist ZookeeperRegistryCenter ["
+
registryCenterRef
+
"] !"
);
}
return
applicationContext
.
getBean
(
registryCenterRef
,
ZookeeperRegistryCenter
.
class
);
}
/**
* 获取作业事件追踪的数据源配置
*
* @param eventTraceRdbDataSource 作业事件追踪的数据源Bean引用
* @return JobEventRdbConfiguration
*/
private
JobEventRdbConfiguration
getJobEventRdbConfiguration
(
String
eventTraceRdbDataSource
)
{
if
(
StringUtils
.
isBlank
(
eventTraceRdbDataSource
))
{
return
null
;
}
if
(!
applicationContext
.
containsBean
(
eventTraceRdbDataSource
))
{
throw
new
RuntimeException
(
"not exist datasource ["
+
eventTraceRdbDataSource
+
"] !"
);
}
DataSource
dataSource
=
(
DataSource
)
applicationContext
.
getBean
(
eventTraceRdbDataSource
);
return
new
JobEventRdbConfiguration
(
dataSource
);
}
/**
* 构建Lite作业
*
* @param jobTypeConfiguration 任务类型
* @param jobConfiguration 任务配置
* @return LiteJobConfiguration
*/
private
LiteJobConfiguration
getLiteJobConfiguration
(
JobTypeConfiguration
jobTypeConfiguration
,
ElasticJobProperties
.
JobConfiguration
jobConfiguration
)
{
//构建Lite作业
return
LiteJobConfiguration
.
newBuilder
(
Objects
.
requireNonNull
(
jobTypeConfiguration
))
.
monitorExecution
(
jobConfiguration
.
isMonitorExecution
())
.
monitorPort
(
jobConfiguration
.
getMonitorPort
())
.
maxTimeDiffSeconds
(
jobConfiguration
.
getMaxTimeDiffSeconds
())
.
jobShardingStrategyClass
(
jobConfiguration
.
getJobShardingStrategyClass
())
.
reconcileIntervalMinutes
(
jobConfiguration
.
getReconcileIntervalMinutes
())
.
disabled
(
jobConfiguration
.
isDisabled
())
.
overwrite
(
jobConfiguration
.
isOverwrite
()).
build
();
}
/**
* 构建任务核心配置
*
* @param jobName 任务执行名称
* @param jobConfiguration 任务配置
* @return JobCoreConfiguration
*/
protected
JobCoreConfiguration
getJobCoreConfiguration
(
String
jobName
,
ElasticJobProperties
.
JobConfiguration
jobConfiguration
)
{
JobCoreConfiguration
.
Builder
builder
=
JobCoreConfiguration
.
newBuilder
(
jobName
,
jobConfiguration
.
getCron
(),
jobConfiguration
.
getShardingTotalCount
())
.
shardingItemParameters
(
jobConfiguration
.
getShardingItemParameters
())
.
jobParameter
(
jobConfiguration
.
getJobParameter
())
.
failover
(
jobConfiguration
.
isFailover
())
.
misfire
(
jobConfiguration
.
isMisfire
())
.
description
(
jobConfiguration
.
getDescription
());
if
(
StringUtils
.
isNotBlank
(
jobConfiguration
.
getJobExceptionHandler
()))
{
builder
.
jobProperties
(
JobPropertiesEnum
.
JOB_EXCEPTION_HANDLER
.
getKey
(),
jobConfiguration
.
getJobExceptionHandler
());
}
if
(
StringUtils
.
isNotBlank
(
jobConfiguration
.
getExecutorServiceHandler
()))
{
builder
.
jobProperties
(
JobPropertiesEnum
.
EXECUTOR_SERVICE_HANDLER
.
getKey
(),
jobConfiguration
.
getExecutorServiceHandler
());
}
return
builder
.
build
();
}
/**
* 获取监听器
*
* @param listener 监听器配置
* @return ElasticJobListener[]
*/
private
ElasticJobListener
[]
creatElasticJobListeners
(
ElasticJobProperties
.
JobConfiguration
.
Listener
listener
)
{
if
(
null
==
listener
)
{
return
null
;
}
List
<
ElasticJobListener
>
elasticJobListeners
=
new
ArrayList
<>(
2
);
//注册每台作业节点均执行的监听
ElasticJobListener
elasticJobListener
=
registerBean
(
listener
.
getListenerClass
(),
listener
.
getListenerClass
(),
ElasticJobListener
.
class
);
if
(
null
!=
elasticJobListener
)
{
elasticJobListeners
.
add
(
elasticJobListener
);
}
//注册分布式监听者
AbstractDistributeOnceElasticJobListener
distributedListener
=
registerBean
(
listener
.
getDistributedListenerClass
(),
listener
.
getDistributedListenerClass
(),
AbstractDistributeOnceElasticJobListener
.
class
,
listener
.
getStartedTimeoutMilliseconds
(),
listener
.
getCompletedTimeoutMilliseconds
());
if
(
null
!=
distributedListener
)
{
elasticJobListeners
.
add
(
distributedListener
);
}
if
(
CollectionUtils
.
isEmpty
(
elasticJobListeners
))
{
return
null
;
}
//集合转数组
ElasticJobListener
[]
elasticJobListenerArray
=
new
ElasticJobListener
[
elasticJobListeners
.
size
()];
for
(
int
i
=
0
;
i
<
elasticJobListeners
.
size
();
i
++)
{
elasticJobListenerArray
[
i
]
=
elasticJobListeners
.
get
(
i
);
}
return
elasticJobListenerArray
;
}
/**
* 向spring容器中注册bean
*
* @param beanName bean名字
* @param strClass 类全路径
* @param tClass 类类型
* @param constructorArgValue 构造函数参数
* @param <T> 泛型
* @return T
*/
protected
<
T
>
T
registerBean
(
String
beanName
,
String
strClass
,
Class
<
T
>
tClass
,
Object
...
constructorArgValue
)
{
//判断是否配置了监听者
if
(
StringUtils
.
isBlank
(
strClass
))
{
return
null
;
}
if
(
StringUtils
.
isBlank
(
beanName
))
{
beanName
=
strClass
;
}
//判断监听者是否已经在spring容器中存在
if
(
applicationContext
.
containsBean
(
beanName
))
{
return
applicationContext
.
getBean
(
beanName
,
tClass
);
}
//不存在则创建并注册到Spring容器中
BeanDefinitionBuilder
beanDefinitionBuilder
=
BeanDefinitionBuilder
.
rootBeanDefinition
(
strClass
);
beanDefinitionBuilder
.
setScope
(
BeanDefinition
.
SCOPE_PROTOTYPE
);
//设置参数
for
(
Object
argValue
:
constructorArgValue
)
{
beanDefinitionBuilder
.
addConstructorArgValue
(
argValue
);
}
getDefaultListableBeanFactory
().
registerBeanDefinition
(
beanName
,
beanDefinitionBuilder
.
getBeanDefinition
());
return
applicationContext
.
getBean
(
beanName
,
tClass
);
}
/**
* 获取beanFactory
*
* @return DefaultListableBeanFactory
*/
private
DefaultListableBeanFactory
getDefaultListableBeanFactory
()
{
return
(
DefaultListableBeanFactory
)
((
ConfigurableApplicationContext
)
applicationContext
).
getBeanFactory
();
}
}
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/DataflowJobInitialization.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job.jobinit
;
import
com.dangdang.ddframe.job.config.JobCoreConfiguration
;
import
com.dangdang.ddframe.job.config.JobTypeConfiguration
;
import
com.dangdang.ddframe.job.config.dataflow.DataflowJobConfiguration
;
import
com.smart.hospital.common.job.properties.ElasticJobProperties
;
import
java.util.Map
;
/**
* @author giaogiao
* @date 2018/7/24
* 流式任务初始
*/
public
class
DataflowJobInitialization
extends
AbstractJobInitialization
{
private
Map
<
String
,
ElasticJobProperties
.
DataflowConfiguration
>
dataflowConfigurationMap
;
public
DataflowJobInitialization
(
final
Map
<
String
,
ElasticJobProperties
.
DataflowConfiguration
>
dataflowConfigurationMap
)
{
this
.
dataflowConfigurationMap
=
dataflowConfigurationMap
;
}
public
void
init
()
{
for
(
String
jobName
:
dataflowConfigurationMap
.
keySet
())
{
ElasticJobProperties
.
DataflowConfiguration
configuration
=
dataflowConfigurationMap
.
get
(
jobName
);
initJob
(
jobName
,
configuration
.
getJobType
(),
configuration
);
}
}
@Override
public
JobTypeConfiguration
getJobTypeConfiguration
(
String
jobName
,
JobCoreConfiguration
jobCoreConfiguration
)
{
ElasticJobProperties
.
DataflowConfiguration
configuration
=
dataflowConfigurationMap
.
get
(
jobName
);
return
new
DataflowJobConfiguration
(
jobCoreConfiguration
,
configuration
.
getJobClass
(),
configuration
.
isStreamingProcess
());
}
}
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/ScriptJobInitialization.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job.jobinit
;
import
com.dangdang.ddframe.job.config.JobCoreConfiguration
;
import
com.dangdang.ddframe.job.config.JobTypeConfiguration
;
import
com.dangdang.ddframe.job.config.script.ScriptJobConfiguration
;
import
com.smart.hospital.common.job.properties.ElasticJobProperties
;
import
java.util.Map
;
/**
* @author giaogiao
* @date 2018/7/24
* 脚本任务初始
*/
public
class
ScriptJobInitialization
extends
AbstractJobInitialization
{
private
Map
<
String
,
ElasticJobProperties
.
ScriptConfiguration
>
scriptConfigurationMap
;
public
ScriptJobInitialization
(
final
Map
<
String
,
ElasticJobProperties
.
ScriptConfiguration
>
scriptConfigurationMap
)
{
this
.
scriptConfigurationMap
=
scriptConfigurationMap
;
}
public
void
init
()
{
for
(
String
jobName
:
scriptConfigurationMap
.
keySet
())
{
ElasticJobProperties
.
ScriptConfiguration
configuration
=
scriptConfigurationMap
.
get
(
jobName
);
initJob
(
jobName
,
configuration
.
getJobType
(),
configuration
);
}
}
@Override
public
JobTypeConfiguration
getJobTypeConfiguration
(
String
jobName
,
JobCoreConfiguration
jobCoreConfiguration
)
{
ElasticJobProperties
.
ScriptConfiguration
configuration
=
scriptConfigurationMap
.
get
(
jobName
);
return
new
ScriptJobConfiguration
(
jobCoreConfiguration
,
configuration
.
getScriptCommandLine
());
}
}
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/jobinit/SimpleJobInitialization.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job.jobinit
;
import
com.dangdang.ddframe.job.config.JobCoreConfiguration
;
import
com.dangdang.ddframe.job.config.JobTypeConfiguration
;
import
com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration
;
import
com.smart.hospital.common.job.properties.ElasticJobProperties
;
import
java.util.Map
;
/**
* @author giaogiao
* @date 2018/7/24
* 简单任务初始
*/
public
class
SimpleJobInitialization
extends
AbstractJobInitialization
{
private
Map
<
String
,
ElasticJobProperties
.
SimpleConfiguration
>
simpleConfigurationMap
;
public
SimpleJobInitialization
(
final
Map
<
String
,
ElasticJobProperties
.
SimpleConfiguration
>
simpleConfigurationMap
)
{
this
.
simpleConfigurationMap
=
simpleConfigurationMap
;
}
public
void
init
()
{
for
(
String
jobName
:
simpleConfigurationMap
.
keySet
())
{
ElasticJobProperties
.
SimpleConfiguration
configuration
=
simpleConfigurationMap
.
get
(
jobName
);
initJob
(
jobName
,
configuration
.
getJobType
(),
configuration
);
}
}
@Override
public
JobTypeConfiguration
getJobTypeConfiguration
(
String
jobName
,
JobCoreConfiguration
jobCoreConfiguration
)
{
ElasticJobProperties
.
SimpleConfiguration
configuration
=
simpleConfigurationMap
.
get
(
jobName
);
return
new
SimpleJobConfiguration
(
jobCoreConfiguration
,
configuration
.
getJobClass
());
}
}
smart-hospital-common/smart-common-job/src/main/java/com/smart/hospital/common/job/properties/ElasticJobProperties.java
deleted
100644 → 0
View file @
16a8bf92
package
com.smart.hospital.common.job.properties
;
import
com.dangdang.ddframe.job.api.JobType
;
import
com.smart.hospital.common.job.ElasticJobAutoConfiguration
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
/**
* @author giaogiao
* @date 2018/7/24
* 任务配置类
*/
@Getter
@Setter
@ConfigurationProperties
(
prefix
=
"spring.elasticjob"
)
public
class
ElasticJobProperties
{
/**
* 注册中心
*/
private
ZkConfiguration
zookeeper
;
/**
* 简单作业配置
*/
private
Map
<
String
,
SimpleConfiguration
>
simples
=
new
LinkedHashMap
<>();
/**
* 流式作业配置
*/
private
Map
<
String
,
DataflowConfiguration
>
dataflows
=
new
LinkedHashMap
<>();
/**
* 脚本作业配置
*/
private
Map
<
String
,
ScriptConfiguration
>
scripts
=
new
LinkedHashMap
<>();
@Getter
@Setter
public
static
class
ZkConfiguration
{
/**
* 连接Zookeeper服务器的列表
* 包括IP地址和端口号
* 多个地址用逗号分隔
* 如: host1:2181,host2:2181
*/
private
String
serverLists
;
/**
* Zookeeper的命名空间
*/
private
String
namespace
;
/**
* 等待重试的间隔时间的初始值
* 单位:毫秒
*/
private
int
baseSleepTimeMilliseconds
=
1000
;
/**
* 等待重试的间隔时间的最大值
* 单位:毫秒
*/
private
int
maxSleepTimeMilliseconds
=
3000
;
/**
* 最大重试次数
*/
private
int
maxRetries
=
3
;
/**
* 连接超时时间
* 单位:毫秒
*/
private
int
connectionTimeoutMilliseconds
=
15000
;
/**
* 会话超时时间
* 单位:毫秒
*/
private
int
sessionTimeoutMilliseconds
=
60000
;
/**
* 连接Zookeeper的权限令牌
* 缺省为不需要权限验
*/
private
String
digest
;
}
@Getter
@Setter
public
static
class
SimpleConfiguration
extends
JobConfiguration
{
/**
* 作业类型
*/
private
final
JobType
jobType
=
JobType
.
SIMPLE
;
}
@Getter
@Setter
public
static
class
DataflowConfiguration
extends
JobConfiguration
{
/**
* 作业类型
*/
private
final
JobType
jobType
=
JobType
.
DATAFLOW
;
/**
* 是否流式处理数据
* 如果流式处理数据, 则fetchData不返回空结果将持续执行作业
* 如果非流式处理数据, 则处理数据完成后作业结束
*/
private
boolean
streamingProcess
=
false
;
}
@Getter
@Setter
public
static
class
ScriptConfiguration
extends
JobConfiguration
{
/**
* 作业类型
*/
private
final
JobType
jobType
=
JobType
.
SCRIPT
;
/**
* 脚本型作业执行命令行
*/
private
String
scriptCommandLine
;
}
@Getter
@Setter
public
static
class
JobConfiguration
{
/**
* 作业实现类,需实现ElasticJob接口
*/
private
String
jobClass
;
/**
* 注册中心Bean的引用,需引用reg:zookeeper的声明
*/
private
String
registryCenterRef
=
ElasticJobAutoConfiguration
.
DEFAULT_REGISTRY_CENTER_NAME
;
/**
* cron表达式,用于控制作业触发时间
*/
private
String
cron
;
/**
* 作业分片总数
*/
private
int
shardingTotalCount
=
1
;
/**
* 分片序列号和参数用等号分隔,多个键值对用逗号分隔
* 分片序列号从0开始,不可大于或等于作业分片总数
* 如:0=a,1=b,2=c
*/
private
String
shardingItemParameters
=
"0=A"
;
/**
* 作业实例主键,同IP可运行实例主键不同, 但名称相同的多个作业实例
*/
private
String
jobInstanceId
;
/**
* 作业自定义参数
* 作业自定义参数,可通过传递该参数为作业调度的业务方法传参,用于实现带参数的作业
* 例:每次获取的数据量、作业实例从数据库读取的主键等
*/
private
String
jobParameter
;
/**
* 监控作业运行时状态
* 每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率。
* 因为是瞬时状态,所以无必要监控。请用户自行增加数据堆积监控。并且不能保证数据重复选取,应在作业中实现幂等性。
* 每次作业执行时间和间隔时间均较长的情况,建议监控作业运行时状态,可保证数据不会重复选取。
*/
private
boolean
monitorExecution
=
true
;
/**
* 作业监控端口
* 建议配置作业监控端口, 方便开发者dump作业信息。
* 使用方法: echo “dump” | nc 127.0.0.1 9888
*/
private
int
monitorPort
=
-
1
;
/**
* 最大允许的本机与注册中心的时间误差秒数
* 如果时间误差超过配置秒数则作业启动时将抛异常
* 配置为-1表示不校验时间误差
*/
private
int
maxTimeDiffSeconds
=
-
1
;
/**
* 是否开启失效转移
*/
private
boolean
failover
=
false
;
/**
* 是否开启错过任务重新执行
*/
private
boolean
misfire
=
true
;
/**
* 作业分片策略实现类全路径
* 默认使用平均分配策略
* 详情参见:作业分片策略http://elasticjob.io/docs/elastic-job-lite/02-guide/job-sharding-strategy
*/
private
String
jobShardingStrategyClass
;
/**
* 作业描述信息
*/
private
String
description
;
/**
* 作业是否禁止启动
* 可用于部署作业时,先禁止启动,部署结束后统一启动
*/
private
boolean
disabled
=
false
;
/**
* 本地配置是否可覆盖注册中心配置
* 如果可覆盖,每次启动作业都以本地配置为准
*/
private
boolean
overwrite
=
true
;
/**
* 扩展异常处理类
*/
private
String
jobExceptionHandler
;
/**
* 扩展作业处理线程池类
*/
private
String
executorServiceHandler
;
/**
* 修复作业服务器不一致状态服务调度间隔时间,配置为小于1的任意值表示不执行修复
* 单位:分钟
*/
private
int
reconcileIntervalMinutes
=
10
;
/**
* 作业事件追踪的数据源Bean引用
*/
private
String
eventTraceRdbDataSource
;
/**
* 监听器
*/
private
Listener
listener
;
@Getter
@Setter
public
static
class
Listener
{
/**
* 每台作业节点均执行的监听
* 若作业处理作业服务器的文件,处理完成后删除文件,可考虑使用每个节点均执行清理任务。
* 此类型任务实现简单,且无需考虑全局分布式任务是否完成,请尽量使用此类型监听器。
*
* <p>注意:类必须继承com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener</p>
*/
String
listenerClass
;
/**
* 分布式场景中仅单一节点执行的监听
* 若作业处理数据库数据,处理完成后只需一个节点完成数据清理任务即可。
* 此类型任务处理复杂,需同步分布式环境下作业的状态同步,提供了超时设置来避免作业不同步导致的死锁,请谨慎使用。
*
* <p>注意:类必须继承com.dangdang.ddframe.job.lite.api.listener.AbstractDistributeOnceElasticJobListener</p>
*/
String
distributedListenerClass
;
/**
* 最后一个作业执行前的执行方法的超时时间
* 单位:毫秒
*/
Long
startedTimeoutMilliseconds
=
Long
.
MAX_VALUE
;
/**
* 最后一个作业执行后的执行方法的超时时间
* 单位:毫秒
*/
Long
completedTimeoutMilliseconds
=
Long
.
MAX_VALUE
;
}
}
}
smart-hospital-common/smart-common-security/src/main/java/com/smart/hospital/common/security/util/SecurityUtils.java
View file @
74f13ddc
...
...
@@ -33,10 +33,10 @@ public class SecurityUtils {
* 获取用户
*
* @param authentication
* @return
Pigx
User
* @return
Smart
User
* <p>
* 获取当前用户的全部信息 Enable
Pigx
ResourceServer true
* 获取当前用户的用户名 Enable
Pigx
ResourceServer false
* 获取当前用户的全部信息 Enable
SmartUser
ResourceServer true
* 获取当前用户的用户名 Enable
SmartUser
ResourceServer false
*/
public
SmartUser
getUser
(
Authentication
authentication
)
{
Object
principal
=
authentication
.
getPrincipal
();
...
...
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/BaseSequenceProperties.java
View file @
74f13ddc
...
...
@@ -23,5 +23,5 @@ class BaseSequenceProperties {
/**
* 业务名称
*/
private
String
bizName
=
"
pigx
"
;
private
String
bizName
=
"
smart
"
;
}
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/SequenceDbProperties.java
View file @
74f13ddc
...
...
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
*/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"
pigx
.xsequence.db"
)
@ConfigurationProperties
(
prefix
=
"
smart
.xsequence.db"
)
public
class
SequenceDbProperties
extends
BaseSequenceProperties
{
/**
* 表名称
...
...
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/SequenceRedisProperties.java
View file @
74f13ddc
...
...
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
*/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"
pigx
.xsequence.redis"
)
@ConfigurationProperties
(
prefix
=
"
smart
.xsequence.redis"
)
public
class
SequenceRedisProperties
extends
BaseSequenceProperties
{
}
\ No newline at end of file
smart-hospital-common/smart-common-sequence/src/main/java/com/smart/hospital/common/sequence/properties/SequenceSnowflakeProperties.java
View file @
74f13ddc
...
...
@@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
*/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"
pigx
.xsequence.snowflake"
)
@ConfigurationProperties
(
prefix
=
"
smart
.xsequence.snowflake"
)
public
class
SequenceSnowflakeProperties
extends
BaseSequenceProperties
{
/**
...
...
smart-hospital-common/smart-common-swagger/src/main/java/com/smart/hospital/common/swagger/annotation/EnableSwaggerSwagger2.java
View file @
74f13ddc
...
...
@@ -10,7 +10,7 @@ import java.lang.annotation.*;
/**
* @author giaogiao
* @date 2018/7/21
* 开启
pigx
swagger
* 开启swagger
*/
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment