diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2d81824
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,51 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!.mvn/wrapper/maven-wrapper.properties
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+.log
+*.class
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+# windows #
+Thumbs.db
+
+# Mac #
+.DS_Store
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+logs
+
+rebel.xml
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..8b26890
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,27 @@
+FROM adoptopenjdk/openjdk8-openj9:alpine-slim
+
+MAINTAINER dev@qingniaoiiot.com
+
+RUN echo "#aliyun" > /etc/apk/repositories
+RUN echo "https://mirrors.aliyun.com/alpine/v3.12/main/" >> /etc/apk/repositories
+RUN echo "https://mirrors.aliyun.com/alpine/v3.12/community/" >> /etc/apk/repositories
+RUN apk update
+
+RUN apk add --no-cache tzdata
+
+ENV TIME_ZONE="Asia/Shanghai"
+
+RUN set -xe \
+&& apk --no-cache add ttf-dejavu fontconfig
+
+RUN mkdir -p /snhub
+
+WORKDIR /snhub
+
+RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo '$TIME_ZONE' > /etc/timezone
+
+EXPOSE 9093
+
+ADD ./target/qn-sn-hub.jar ./app.jar
+
+ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..812bf5d
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.1</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>com.sinenux</groupId>
+    <artifactId>qn-ys-hub</artifactId>
+    <version>1.0.0</version>
+    <name>SNHub</name>
+    <description>qn-ys-hub</description>
+
+    <properties>
+        <hub.project.name>qn-ys-hub</hub.project.name>
+
+        <java.version>8</java.version>
+        <maven.plugin.version>3.8.1</maven.plugin.version>
+
+        <!-- 推荐使用Harbor -->
+        <harbor.library>qn-ys-hub</harbor.library>
+        <harbor.tag>1.0.0</harbor.tag>
+
+        <docker.serverId>harbor</docker.serverId>
+        <docker.registry.url>192.168.1.251</docker.registry.url>
+        <!--        <docker.registry.url>192.168.40.203:8089</docker.registry.url>-->
+        <docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>
+        <docker.username>admin</docker.username>
+        <docker.plugin.version>1.4.13</docker.plugin.version>
+        <docker.username>admin</docker.username>
+        <docker.password>Qingniao13542</docker.password>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.dream-orm</groupId>
+            <artifactId>dream-orm-spring-boot-starter</artifactId>
+            <version>1.2.6</version>
+        </dependency>
+
+        <!-- fastjson -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>2.0.25</version>
+        </dependency>
+        <!--        <dependency>-->
+        <!--            <groupId>com.bluebird</groupId>-->
+        <!--            <artifactId>hulk-starter-http</artifactId>-->
+        <!--            <version>1.2.2.RELEASE</version>-->
+        <!--        </dependency>-->
+        <!-- mongo -->
+        <dependency>
+            <groupId>com.bluebird</groupId>
+            <artifactId>hulk-starter-mongo</artifactId>
+            <version>1.2.2.RELEASE</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.bluebird</groupId>
+                    <artifactId>hulk-core-launch</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.3.2</version>
+        </dependency>
+        <!--        <dependency>-->
+        <!--            <groupId>com.bluebird</groupId>-->
+        <!--            <artifactId>hulk-starter-mybatis</artifactId>-->
+        <!--            <version>1.2.2.RELEASE</version>-->
+        <!--        </dependency>-->
+    </dependencies>
+
+    <build>
+        <finalName>${hub.project.name}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>dockerfile-maven-plugin</artifactId>
+                <version>${docker.plugin.version}</version>
+                <configuration>
+                    <username>${docker.username}</username>
+                    <password>${docker.password}</password>
+                    <repository>${docker.registry.url}/${harbor.library}/${project.artifactId}</repository>
+                    <tag>${harbor.tag}</tag>
+                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+                    <buildArgs>
+                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+                    </buildArgs>
+                    <skip>false</skip>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven.plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>compile</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>testCompile</id>
+                        <phase>test-compile</phase>
+                        <goals>
+                            <goal>testCompile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+        <resources>
+            <!-- 扫描src/main/java下所有xx.xml文件 -->
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <!-- 扫描resources下所有资源 -->
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>aliyun-repos</id>
+            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>aliyun-plugin</id>
+            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+</project>
diff --git a/src/main/java/com/sinenux/yshub/HubApplication.java b/src/main/java/com/sinenux/yshub/HubApplication.java
new file mode 100644
index 0000000..e501d72
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/HubApplication.java
@@ -0,0 +1,39 @@
+package com.sinenux.yshub;
+
+import com.dream.boot.bean.ConfigurationBean;
+import com.dream.drive.listener.DebugListener;
+import com.dream.flex.annotation.FlexAPT;
+import com.dream.system.core.listener.Listener;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.StandardEnvironment;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+@MapperScan("com.sinenux.yshub.mapper")
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+public class HubApplication {
+
+    public static void main(String[] args) {
+        // 创建一个SpringApplication实例
+        SpringApplication app = new SpringApplication(HubApplication.class);
+
+        // 读取环境变量,使用spring boot的规则
+        ConfigurableEnvironment environment = new StandardEnvironment();
+
+        // 检查是否存在名为 "spring.profiles.active" 的环境属性,如果不存在,则设置为 "dev"
+        if (environment.getProperty("spring.profiles.active") == null) {
+            app.setDefaultProperties(Collections.singletonMap("spring.profiles.active", "dev"));
+        }
+
+        // 启动应用程序
+        app.run(args);
+    }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java b/src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java
new file mode 100644
index 0000000..2c67350
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java
@@ -0,0 +1,43 @@
+package com.sinenux.yshub.config;
+
+import com.bluebird.core.tool.utils.Func;
+import com.bluebird.core.tool.utils.WebUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+
+@Slf4j
+public class IpWhitelistInterceptor implements HandlerInterceptor {
+
+    //    private final List<String> allowedIpList = Arrays.asList("127.0.0.1", "192.168.1.100", "192.168.1.101");
+    private final String ips;
+
+    public IpWhitelistInterceptor(String ips) {
+        this.ips = ips;
+    }
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler) {
+        if (Func.isBlank(ips) || Func.equals("0.0.0.0", ips)) {
+            return true;
+        }
+        log.info("SN-HUB ===================== IP白名单 为 {}", ips);
+
+        String[] ipArray = Func.split(ips, ",");
+        List<String> allowedIpList = Arrays.asList(ipArray);
+
+        String requestIp = WebUtil.getIP(request);
+        log.info("SN-HUB ===================== 请求IP 为 {}", requestIp);
+        if (!allowedIpList.contains(requestIp)) {
+            response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+            return false; // 不允许访问
+        }
+        return true; // 允许访问
+    }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/MongoConfig.java b/src/main/java/com/sinenux/yshub/config/MongoConfig.java
new file mode 100644
index 0000000..7b350ec
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/MongoConfig.java
@@ -0,0 +1,29 @@
+package com.sinenux.yshub.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
+
+@Slf4j
+@Configuration
+public class MongoConfig {
+
+    @Value("${MONGODB_URI}")
+    private String mongodbUri;
+
+    @Bean
+    public SimpleMongoClientDatabaseFactory mongoDbFactory() {
+        log.info("SN-HUB ===================== 获取到的 mongodbUri 为 {}", mongodbUri);
+        return new SimpleMongoClientDatabaseFactory(mongodbUri);
+
+    }
+
+    @Bean
+    public MongoTemplate mongoTemplate() {
+        return new MongoTemplate(mongoDbFactory());
+    }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/MysqlConfig.java b/src/main/java/com/sinenux/yshub/config/MysqlConfig.java
new file mode 100644
index 0000000..56de48c
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/MysqlConfig.java
@@ -0,0 +1,61 @@
+package com.sinenux.yshub.config;
+
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.bluebird.core.tool.utils.Func;
+import com.dream.drive.factory.DriveDataSourceFactory;
+import com.dream.system.datasource.DataSourceFactory;
+import com.zaxxer.hikari.HikariDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.annotation.MapperScan;
+import org.mybatis.spring.transaction.SpringManagedTransactionFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+
+@Configuration
+@Slf4j
+@MapperScan("com.sinenux.yshub.mapper")
+public class MysqlConfig {
+    @Value("${MYSQL_URL}")
+    private String url;
+    @Value("${MYSQL_USERNAME}")
+    private String username;
+    @Value("${MYSQL_PASSWORD}")
+    private String password;
+
+    @Bean
+    public DataSource mySqlDataSource() throws SQLException {
+        HikariDataSource dataSource = new HikariDataSource();
+        dataSource.setJdbcUrl(url);
+        dataSource.setUsername(username);
+        dataSource.setPassword(password);
+        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+        if (Func.isNotEmpty(url)) {
+            dataSource.getConnection().close();
+        }
+
+        return dataSource;
+    }
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
+        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
+        sqlSessionFactory.setDataSource(dataSource);
+        sqlSessionFactory.setTypeAliasesPackage("com.sinenux.snhub.entity");
+
+        sqlSessionFactory.setTransactionFactory(new SpringManagedTransactionFactory());
+
+        return sqlSessionFactory.getObject();
+    }
+
+    @Bean
+    public DataSourceFactory dataSourceFactory(DataSource dataSource) {
+        return new DriveDataSourceFactory(dataSource);
+    }
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/WebMvcConfig.java b/src/main/java/com/sinenux/yshub/config/WebMvcConfig.java
new file mode 100644
index 0000000..eda0064
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/WebMvcConfig.java
@@ -0,0 +1,18 @@
+package com.sinenux.yshub.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Value("${REQUEST_IPS:0.0.0.0}")
+    private String requestIps;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(new IpWhitelistInterceptor(requestIps));
+    }
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/DemoController.java b/src/main/java/com/sinenux/yshub/controller/DemoController.java
new file mode 100644
index 0000000..57caef1
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/DemoController.java
@@ -0,0 +1,13 @@
+package com.sinenux.yshub.controller;
+
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/demo")
+public class DemoController {
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java b/src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java
new file mode 100644
index 0000000..f39dab5
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java
@@ -0,0 +1,66 @@
+package com.sinenux.yshub.controller;
+
+import com.bluebird.core.tool.api.R;
+import com.sinenux.yshub.entity.EnterprisePrefix;
+import com.sinenux.yshub.service.IEnterprisePrefixService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 告警记录 控制器
+ *
+ * @author wtc
+ * @since 2023-05-24
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/enterprise/prefix")
+@Api(value = "企业前缀", tags = "企业前缀接口")
+public class EnterprisePrefixController {
+
+    private final IEnterprisePrefixService enterprisePrefixService;
+
+    /**
+     * 企业前缀top10
+     */
+    @GetMapping("/top")
+    @ApiOperation(value = "企业前缀top10", notes = "企业前缀top10")
+    public R<List<EnterprisePrefix>> prefixTop() {
+        List<EnterprisePrefix> list = enterprisePrefixService.getTop10();
+        return R.data(list);
+    }
+
+    /**
+     * 获取所有企业名称
+     */
+    @GetMapping("/allName")
+    @ApiOperation(value = "所有企业名称", notes = "所有企业名称")
+    public R<List<String>> list() {
+        List<String> list = enterprisePrefixService.lambdaQuery()
+                .select(EnterprisePrefix::getEntName)
+                .eq(EnterprisePrefix::getState, 1)
+                .list()
+                .stream()
+                .map(EnterprisePrefix::getEntName)
+                .collect(Collectors.toList());
+        return R.data(list);
+    }
+
+    /**
+     * 获取当前注册量,以及昨日注册量,增长量
+     */
+    @GetMapping("/statistics")
+    @ApiOperation(value = "前缀注册量统计", notes = "前缀注册量统计")
+    public R<Map<String, Object>> statistics() {
+        Map<String, Object> map = enterprisePrefixService.prefixStatistics();
+        return R.data(map);
+    }
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/HandleInfoController.java b/src/main/java/com/sinenux/yshub/controller/HandleInfoController.java
new file mode 100644
index 0000000..ae1e04d
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/HandleInfoController.java
@@ -0,0 +1,36 @@
+package com.sinenux.yshub.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.bluebird.core.tool.api.R;
+import com.sinenux.yshub.dto.HandleQuery;
+import com.sinenux.yshub.entity.MHandleInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 标识 控制器
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/handle")
+@Api(value = "标识表", tags = "标识接口")
+public class HandleInfoController {
+
+    private final IHandleInfoService handleInfoRepository;
+
+    /**
+     * 标识列表分页
+     */
+    @GetMapping("/page")
+    @ApiOperation(value = "分页", notes = "传入handleInput")
+    public R<Page<MHandleInfo>> page(HandleQuery handleQuery) {
+
+        Page<MHandleInfo> page = handleInfoRepository.selectPage(handleQuery);
+        return R.data(page);
+    }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/MainController.java b/src/main/java/com/sinenux/yshub/controller/MainController.java
new file mode 100644
index 0000000..c1b9214
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/MainController.java
@@ -0,0 +1,45 @@
+package com.sinenux.yshub.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.bluebird.core.tool.api.R;
+import com.dream.jdbc.mapper.JdbcMapper;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 超级接口
+ */
+@RestController
+@RequestMapping("/super")
+@AllArgsConstructor
+public class MainController {
+    private final JdbcMapper jdbcMapper;
+
+    @PostMapping("/selectList")
+    public R test(@RequestParam String sql) {
+        try {
+            sql = AESUtil.AESDncode(sql);
+            JSONArray jsonArray = new JSONArray(jdbcMapper.queryForList(sql, JSONObject.class));
+            return R.data(jsonArray);
+        } catch (Exception e) {
+            return R.fail("sql语句错误");
+        }
+    }
+
+    @PostMapping("/selectOne")
+    public R test2(@RequestParam String sql) {
+        try {
+            sql = AESUtil.AESDncode(sql);
+            JSONObject jsonObject = jdbcMapper.queryForObject(sql, JSONObject.class);
+            return R.data(jsonObject);
+        } catch (Exception e) {
+            return R.fail("sql语句错误");
+
+        }
+    }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/TemplateController.java b/src/main/java/com/sinenux/yshub/controller/TemplateController.java
new file mode 100644
index 0000000..a3c1a75
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/TemplateController.java
@@ -0,0 +1,47 @@
+package com.sinenux.yshub.controller;
+
+import com.bluebird.core.tool.api.R;
+import com.bluebird.core.tool.utils.Func;
+import com.sinenux.yshub.dto.IdentityTemplateQuery;
+import com.sinenux.yshub.entity.IdentityTemplate;
+import com.sinenux.yshub.entity.IdentityTemplateItem;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 标识模板 控制器
+ */
+@RestController
+@RequestMapping("/template")
+@AllArgsConstructor
+public class TemplateController {
+    private final IIdentityTemplateService identityTemplateService;
+    private final IIdentityTemplateItemService identityTemplateItemService;
+
+    @GetMapping("/list")
+    public R test(IdentityTemplateQuery identityTemplate) {
+        List<IdentityTemplate> identityTemplates = identityTemplateService.queryContent(identityTemplate);
+        return R.data(identityTemplates);
+    }
+
+    @GetMapping("/list/item")
+    public R test2(IdentityTemplateItem identityTemplateItem) {
+        List<IdentityTemplateItem> list = identityTemplateService.queryContentItem(identityTemplateItem);
+        return R.data(list);
+    }
+
+    @GetMapping("/list/item/date")
+    public R test3(Date startDate, Date endDate) {
+        List<IdentityTemplateItem> list = identityTemplateItemService.lambdaQuery()
+                .ge(Func.isNotEmpty(startDate), IdentityTemplateItem::getUpdateDate, startDate)
+                .le(Func.isNotEmpty(endDate), IdentityTemplateItem::getUpdateDate, endDate)
+                .list();
+        return R.data(list);
+    }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/dto/HandleQuery.java b/src/main/java/com/sinenux/yshub/dto/HandleQuery.java
new file mode 100644
index 0000000..f944ac5
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/dto/HandleQuery.java
@@ -0,0 +1,34 @@
+package com.sinenux.yshub.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author laifeng
+ * @since 2023/3/24
+ */
+@Data
+public class HandleQuery implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty("页码")
+    String pageNo;
+    @ApiModelProperty("页面数量")
+    String pageSize;
+
+    @ApiModelProperty("企业前缀")
+    private String prefix;
+
+    @ApiModelProperty("标识名称")
+    private String handleName;
+
+
+    @ApiModelProperty("开始时间")
+    private String startTime;
+
+
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+}
diff --git a/src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java b/src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java
new file mode 100644
index 0000000..18d6da6
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java
@@ -0,0 +1,90 @@
+package com.sinenux.yshub.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 标识模板 查询类
+ *
+ * @author laifeng
+ * @since 2023-11-27
+ */
+@Data
+public class IdentityTemplateQuery {
+
+    /**
+     * 主键id
+     */
+    private Long id;
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 企业前缀
+     */
+    private String prefix;
+
+    /**
+     * 版本型号
+     */
+    private String version;
+
+    /**
+     * 标识模板
+     */
+    private String handle;
+
+    /**
+     * 行业门类
+     */
+    private String industryCategory;
+    /**
+     * 行业大类
+     */
+    private String industrySpecific;
+
+    /**
+     * 行业中类
+     */
+    private String industryTrade;
+
+    /**
+     * 行业小类
+     */
+    private String industrySubclass;
+
+    /**
+     * 模板类型
+     */
+    private Integer type;
+
+    /**
+     * 是否删除
+     */
+    private Integer isDeleted;
+
+    /**
+     * 开始时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private String startDate;
+
+    /**
+     * 结束时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private String endDate;
+}
diff --git a/src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java b/src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java
new file mode 100644
index 0000000..5c87f89
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java
@@ -0,0 +1,80 @@
+package com.sinenux.yshub.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 企业前缀 实体类(只写了部分字段)
+ *
+ * @author cgm
+ * @since 2021-09-01
+ */
+@Data
+@TableName("nbms_ent_prefix")
+@ApiModel(value = "AliIotConfig对象", description = "云对接-阿里云物联网配置表")
+public class EnterprisePrefix {
+
+    /**
+     * 主键Id
+     */
+    @JsonSerialize(
+            using = ToStringSerializer.class
+    )
+    @ApiModelProperty("主键Id")
+    @TableId(
+            value = "id"
+    )
+    private Long id;
+
+
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @ApiModelProperty(value = "创建时间", hidden = true)
+    private Date createDate;
+
+
+    /**
+     * 更新时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @ApiModelProperty(value = "更新时间", hidden = true)
+    private Date updateDate;
+
+    /**
+     * 业务状态
+     */
+    @ApiModelProperty(value = "状态是否有效 1启用2停用")
+    private Integer state;
+    /**
+     * 标识前缀
+     */
+    @ApiModelProperty(value = "标识前缀")
+    private String entPrefix;
+
+    /**
+     * 企业名称
+     */
+    @ApiModelProperty(value = "企业名称")
+    private String entName;
+}
diff --git a/src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java b/src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java
new file mode 100644
index 0000000..cfaa4f7
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java
@@ -0,0 +1,100 @@
+package com.sinenux.yshub.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 标识模板 实体类
+ *
+ * @author laifeng
+ * @since 2023-11-27
+ */
+@Data
+@TableName("nbms_identity_template")
+@ApiModel(value = "nbms_identity_template对象", description = "标识模板")
+public class IdentityTemplate {
+
+    /**
+     * 主键id
+     */
+    @TableId(
+            value = "id"
+    )
+    private Long id;
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 企业前缀
+     */
+    private String prefix;
+
+    /**
+     * 版本型号
+     */
+    private String version;
+
+    /**
+     * 标识模板
+     */
+    private String handle;
+
+    /**
+     * 行业门类
+     */
+    private String industryCategory;
+    /**
+     * 行业大类
+     */
+    private String industrySpecific;
+
+    /**
+     * 行业中类
+     */
+    private String industryTrade;
+
+    /**
+     * 行业小类
+     */
+    private String industrySubclass;
+
+    /**
+     * 模板类型
+     */
+    private Integer type;
+
+    /**
+     * 是否删除
+     */
+    private Integer isDeleted;
+
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date createDate;
+
+    /**
+     * 更新时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date updateDate;
+}
diff --git a/src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java b/src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java
new file mode 100644
index 0000000..55baf5f
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java
@@ -0,0 +1,78 @@
+package com.sinenux.yshub.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 标识模板内容 实体类
+ *
+ * @author laifeng
+ * @since 2023-11-27
+ */
+@Data
+@TableName("nbms_identity_template_item")
+@ApiModel(value = "nbms_identity_template对象", description = "标识模板内容")
+public class IdentityTemplateItem {
+
+    /**
+     * 主键id
+     */
+    @TableId(
+            value = "id"
+    )
+    private Long id;
+    /**
+     * 权限码
+     */
+    private String authorizationKey;
+    /**
+     * 下标
+     */
+    private Integer idIndex;
+    /**
+     * 英文名称
+     */
+    private String idType;
+    /**
+     * 中文名称
+     */
+    private String name;
+
+    /**
+     * 模板id
+     */
+    private Long tid;
+
+    /**
+     * 禁用状态(0:禁用 1:启用)
+     */
+    private Integer state;
+
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date createDate;
+
+    /**
+     * 更新时间
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date updateDate;
+}
diff --git a/src/main/java/com/sinenux/yshub/entity/MHandleInfo.java b/src/main/java/com/sinenux/yshub/entity/MHandleInfo.java
new file mode 100644
index 0000000..f1b1d30
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/entity/MHandleInfo.java
@@ -0,0 +1,62 @@
+package com.sinenux.yshub.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.data.mongodb.core.mapping.Field;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 标识Mongo实体类(只写了部份字段)
+ *
+ * @author laifeng
+ * @date 2023-3-24
+ */
+@Data
+@Document("handle_info")
+@ApiModel(value = "handle_info对象", description = "标识统计表")
+public class MHandleInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @ApiModelProperty("主键id")
+    private String id;
+
+    /**
+     * 企业前缀
+     */
+    @ApiModelProperty("企业前缀")
+    private String prefix;
+
+    /**
+     * 二级前缀
+     */
+    @ApiModelProperty("二级前缀")
+    private String subPrefix;
+
+    /**
+     * 标识名称
+     */
+    @ApiModelProperty("标识名称")
+    @Field("handle_name")
+    private String handleName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", hidden = true)
+    @Field("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间", hidden = true)
+    @Field("update_time")
+    private Date updateTime;
+}
diff --git a/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java
new file mode 100644
index 0000000..a86ccef
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java
@@ -0,0 +1,17 @@
+package com.sinenux.yshub.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sinenux.yshub.entity.EnterprisePrefix;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 告警规则表 Mapper 接口
+ *
+ * @author acX
+ * @since 2023-04-24
+ */
+@Mapper
+public interface EnterprisePrefixMapper extends BaseMapper<EnterprisePrefix> {
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml
new file mode 100644
index 0000000..e39daeb
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sinenux.snhub.mapper.EnterprisePrefixMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="alarmRuleResultMap" type="com.sinenux.yshub.entity.EnterprisePrefix">
+        <result column="id" property="id"/>
+        <result column="state" property="state"/>
+        <result column="ent_prefix" property="entPrefix"/>
+        <result column="ent_name" property="entName"/>
+        <result column="create_Date" property="createDate"/>
+        <result column="update_Date" property="updateDate"/>
+    </resultMap>
+
+
+</mapper>
diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java
new file mode 100644
index 0000000..2fa2360
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java
@@ -0,0 +1,17 @@
+package com.sinenux.yshub.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sinenux.yshub.entity.IdentityTemplateItem;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 模板内容表 Mapper 接口
+ *
+ * @author laifeng
+ * @since 2023-11-27
+ */
+@Mapper
+public interface IdentityTemplateItemMapper extends BaseMapper<IdentityTemplateItem> {
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml
new file mode 100644
index 0000000..dd916c7
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sinenux.snhub.mapper.IdentityTemplateItemMapper">
+
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java
new file mode 100644
index 0000000..50b83be
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java
@@ -0,0 +1,17 @@
+package com.sinenux.yshub.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sinenux.yshub.entity.IdentityTemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 模板表 Mapper 接口
+ *
+ * @author laifeng
+ * @since 2023-11-27
+ */
+@Mapper
+public interface IdentityTemplateMapper extends BaseMapper<IdentityTemplate> {
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml
new file mode 100644
index 0000000..e9e983a
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sinenux.snhub.mapper.IdentityTemplateMapper">
+
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java b/src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java
new file mode 100644
index 0000000..0f060e7
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java
@@ -0,0 +1,25 @@
+package com.sinenux.yshub.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sinenux.yshub.entity.EnterprisePrefix;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 企业前缀 服务类
+ *
+ * @author laifeng
+ * @since 2023-11-08
+ */
+
+public interface IEnterprisePrefixService extends IService<EnterprisePrefix> {
+
+    /**
+     * 获取企业前缀Top10
+     */
+    List<EnterprisePrefix> getTop10();
+
+    Map<String,Object> prefixStatistics();
+}
diff --git a/src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java b/src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java
new file mode 100644
index 0000000..7f7a2d6
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java
@@ -0,0 +1,48 @@
+package com.sinenux.yshub.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.bluebird.core.tool.utils.DateUtil;
+import com.sinenux.yshub.entity.EnterprisePrefix;
+import com.sinenux.yshub.mapper.EnterprisePrefixMapper;
+import com.sinenux.yshub.service.IEnterprisePrefixService;
+import com.sinenux.yshub.utils.MyDateUtil;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+public class EnterprisePrefixServiceImpl extends ServiceImpl<EnterprisePrefixMapper, EnterprisePrefix> implements IEnterprisePrefixService {
+    private final EnterprisePrefixMapper enterprisePrefixMapper;
+
+    @Override
+    public List<EnterprisePrefix> getTop10() {
+        List<EnterprisePrefix> list = this.lambdaQuery().eq(EnterprisePrefix::getState, 1)
+                .orderByDesc(EnterprisePrefix::getCreateDate)
+                .last("limit 10")
+                .list();
+        return list;
+    }
+
+    @Override
+    public Map<String, Object> prefixStatistics() {
+        Date date = MyDateUtil.getDateOfHour(DateUtil.now());
+
+        Long totalCount = this.lambdaQuery()
+                .eq(EnterprisePrefix::getState, 1)
+                .count();
+        Long yesterdayCount = this.lambdaQuery()
+                .eq(EnterprisePrefix::getState, 1)
+                .lt(EnterprisePrefix::getCreateDate, date)
+                .count();
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("totalCount", totalCount);
+        map.put("yesterdayCount", yesterdayCount);
+        map.put("increaseCount", totalCount - yesterdayCount);
+        return map;
+    }
+}
diff --git a/src/main/java/com/sinenux/yshub/utils/MyDateUtil.java b/src/main/java/com/sinenux/yshub/utils/MyDateUtil.java
new file mode 100644
index 0000000..bc869a7
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/utils/MyDateUtil.java
@@ -0,0 +1,102 @@
+package com.sinenux.yshub.utils;
+
+import com.bluebird.core.tool.utils.ConcurrentDateFormat;
+import com.bluebird.core.tool.utils.DateUtil;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 日期工具类(补充)
+ *
+ * @author cgm
+ * @date 2022/2/15 17:17
+ */
+public class MyDateUtil {
+	public static final ConcurrentDateFormat YEAR_FORMAT = ConcurrentDateFormat.of("yyyy");
+	public static final ConcurrentDateFormat MONTH_FORMAT = ConcurrentDateFormat.of("yyyyMM");
+
+	public static String formatYear(Date date) {
+		return YEAR_FORMAT.format(date);
+	}
+
+	public static String formatMonth(Date date) {
+		return MONTH_FORMAT.format(date);
+	}
+
+	/**
+	 * 获取当月所有日期
+	 */
+	public static List<Date> getAllDateOfTheMonth(Date date) {
+		List<Date> list = new ArrayList<>();
+
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date);
+		calendar.set(Calendar.DATE, 1);
+
+		int month = calendar.get(Calendar.MONTH);
+		while (calendar.get(Calendar.MONTH) == month) {
+			list.add(calendar.getTime());
+			calendar.add(Calendar.DATE, 1);
+		}
+
+		return list;
+	}
+
+	/**
+	 * 将当前时间 分秒归零
+	 */
+	public static Date getDateOfMinute(Date date) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date);
+		calendar.set(Calendar.MINUTE, 0);
+		calendar.set(Calendar.SECOND, 0);
+		calendar.set(Calendar.MILLISECOND, 0);
+		String time = DateUtil.formatDateTime(calendar.getTime());
+		return DateUtil.parse(time, DateUtil.DATETIME_FORMAT);
+	}
+
+	/**
+	 * 将当前时间 时分秒归零
+	 */
+	public static Date getDateOfHour(Date date) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date);
+		calendar.set(Calendar.HOUR_OF_DAY, 0);
+		calendar.set(Calendar.MINUTE, 0);
+		calendar.set(Calendar.SECOND, 0);
+		calendar.set(Calendar.MILLISECOND, 0);
+		String time = DateUtil.formatDateTime(calendar.getTime());
+		return DateUtil.parse(time, DateUtil.DATETIME_FORMAT);
+	}
+
+	/**
+	 * 将yyyy-mm-dd格式 或者 yyyy-MM 格式 转换成 yyyy-MM-dd HH:mm:ss
+	 *
+	 * @param
+	 * @return
+	 */
+	public static String formatShortTimeToLong(String shortTimeStr) {
+		if (shortTimeStr == null) {
+			return null;
+		}
+		// 定义SimpleDateFormat的格式
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+		// 解析日期字符串
+		Date date = null;
+		try {
+			date = sdf.parse(shortTimeStr);
+		} catch (ParseException e) {
+			return null;
+		}
+
+		// 将Date转换为带时间的字符串格式并返回
+		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		return sdf2.format(date);
+	}
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..bf7055c
--- /dev/null
+++ b/src/main/resources/application-dev.yml
@@ -0,0 +1,13 @@
+#本地测试使用
+MONGODB_URI: mongodb://idis_user:Teleinfo-88@223.99.228.240:27017/idis_lhs?authSource=admin
+REQUEST_IPS: 0.0.0.0
+MYSQL_URL: jdbc:mysql://223.99.228.240:3306/snms?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai
+MYSQL_USERNAME: idis_user
+MYSQL_PASSWORD: Teleinfo-88
+#MYSQL_URL: jdbc:mysql://47.97.5.58:3306/cat_app?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai
+#MYSQL_USERNAME: root
+#MYSQL_PASSWORD: 157242
+logging:
+  level:
+    org.springframework.data.mongodb.core: debug
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..d104007
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,3 @@
+#服务器端口
+server:
+  port: 9093
diff --git a/src/test/java/com/sinenux/yshub/HubApplicationTests.java b/src/test/java/com/sinenux/yshub/HubApplicationTests.java
new file mode 100644
index 0000000..c7f53b9
--- /dev/null
+++ b/src/test/java/com/sinenux/yshub/HubApplicationTests.java
@@ -0,0 +1,22 @@
+package com.sinenux.yshub;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.data.mongodb.core.query.Query;
+
+@SpringBootTest
+class HubApplicationTests {
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Test
+    void contextLoads() {
+        Query query = new Query();
+        Document one = mongoTemplate.findOne(query, Document.class);
+        System.out.println(one);
+    }
+
+}