diff --git a/czsj-common/pom.xml b/czsj-common/pom.xml
index e366902..80394a8 100644
--- a/czsj-common/pom.xml
+++ b/czsj-common/pom.xml
@@ -124,6 +124,108 @@
javax.servlet-api
+
+ ch.ethz.ganymed
+ ganymed-ssh2
+ build210
+
+
+
+ com.baomidou
+ mybatisplus-spring-boot-starter
+ 1.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+ 3.3.1
+ compile
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.24
+ compile
+
+
+ org.apache.commons
+ commons-lang3
+ 3.3.2
+ compile
+
+
+ commons-collections
+ commons-collections
+ 3.2.2
+ compile
+
+
+ junit
+ junit
+ test
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ com.dtstack.dtcenter
+ common.loader.core
+ 1.8.0-RELEASE
+
+
+ cn.hutool
+ hutool-all
+ 4.5.1
+ compile
+
+
+ com.czsj
+ czsj-core
+ 3.8.2
+ compile
+
+
+ com.aspose
+ aspose-words
+ 20.3
+ jdk17
+
+
+
+ com.zaxxer
+ HikariCP
+ 5.0.1
+
+
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+ 12.8.0.jre11
+
+
+
+
+
+
+
+
+ org.springframework.amqp
+ spring-rabbit
+
+
+ org.springframework
+ spring-webmvc
+
+
+
+
+ AsposeJavaAPI
+ Aspose Java API
+ https://releases.aspose.com/java/repo/
+
+
\ No newline at end of file
diff --git a/czsj-common/src/main/java/com/czsj/common/database/DialectFactory.java b/czsj-common/src/main/java/com/czsj/common/database/DialectFactory.java
new file mode 100644
index 0000000..3a8c313
--- /dev/null
+++ b/czsj-common/src/main/java/com/czsj/common/database/DialectFactory.java
@@ -0,0 +1,24 @@
+package com.czsj.common.database;
+
+
+
+
+import com.czsj.common.database.constants.DbType;
+import com.czsj.common.database.dialect.DialectRegistry;
+import com.czsj.common.database.service.DbDialect;
+
+
+/**
+ * 方言工厂类
+ *
+ * @author yuwei
+ * @since 2020-03-14
+ */
+public class DialectFactory {
+
+ private static final DialectRegistry DIALECT_REGISTRY = new DialectRegistry();
+
+ public static DbDialect getDialect(DbType dbType) {
+ return DIALECT_REGISTRY.getDialect(dbType);
+ }
+}
diff --git a/czsj-common/src/main/java/com/czsj/common/database/cache/DefaultSqlCache.java b/czsj-common/src/main/java/com/czsj/common/database/cache/DefaultSqlCache.java
new file mode 100644
index 0000000..f60758e
--- /dev/null
+++ b/czsj-common/src/main/java/com/czsj/common/database/cache/DefaultSqlCache.java
@@ -0,0 +1,123 @@
+package com.czsj.common.database.cache;
+
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+public class DefaultSqlCache extends LinkedHashMap> implements SqlCache {
+
+ private int capacity;
+
+ private long expire;
+
+ private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
+ public DefaultSqlCache(int capacity, long expire) {
+ super((int) Math.ceil(capacity / 0.75) + 1, 0.75f, true);
+ // 容量
+ this.capacity = capacity;
+ // 固定过期时间
+ this.expire = expire;
+ }
+
+ @Override
+ public void put(String key, Object value, long ttl) {
+ long expireTime = Long.MAX_VALUE;
+ if (ttl >= 0) {
+ expireTime = System.currentTimeMillis() + (ttl == 0 ? this.expire : ttl);
+ }
+ lock.writeLock().lock();
+ try {
+ // 封装成过期时间节点
+ put(key, new ExpireNode<>(expireTime, value));
+ } finally {
+ lock.writeLock().unlock();
+ }
+ }
+
+ @Override
+ public Object get(String key) {
+ lock.readLock().lock();
+ ExpireNode