Commit f587ac7c by 杨伟程
parents 552573ff 0c93240d
Showing with 1478 additions and 264 deletions
......@@ -109,6 +109,18 @@
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
......
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<webroots />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.6" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.6" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.32" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.12" level="project" />
<orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.11" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.54" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.54" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.12" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-mail:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.12" level="project" />
<orderEntry type="library" name="Maven: com.sun.mail:jakarta.mail:1.6.7" level="project" />
<orderEntry type="library" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.3.4" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.3.4" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.3.4" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.3.4" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.3.4" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.7" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.6" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.12" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.27" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.54" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-boot-starter:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-oas:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.1.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models:2.1.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.83" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-webmvc:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-webflux:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.mapstruct:mapstruct:1.3.1.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-data-rest:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.32" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:2.0.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:2.0.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-annotations:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:27.0.1-android" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.2" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:2.5.6" level="project" />
<orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.7.5" level="project" />
<orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.12" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson:3.17.5" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.1.1" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" name="Maven: io.reactivex.rxjava3:rxjava:3.1.5" level="project" />
<orderEntry type="library" name="Maven: org.jboss.marshalling:jboss-marshalling:2.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.marshalling:jboss-marshalling-river:2.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.5" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.22" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:5.1.6" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:5.1.6" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson-spring-data-27:3.17.5" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.13.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.14" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.10" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
<orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:dysmsapi20170525:2.0.9" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-util:0.2.13" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:endpoint-util:0.0.6" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea:1.1.14" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.14.9" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.17.2" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-openapi:0.2.2" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:credentials-java:0.2.4" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:5.2.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.07" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:3.1.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel-core:3.1.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel-support:3.1.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.9.7" level="project" />
<orderEntry type="library" name="Maven: com.deepoove:poi-tl:1.12.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-constants:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-i18n:1.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.14" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-codec:1.14" level="project" />
<orderEntry type="library" name="Maven: com.xuxueli:xxl-job-core:2.3.1" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-haproxy:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-memcache:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-mqtt:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-redis:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-smtp:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-stomp:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-xml:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:1.0.0" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:4.0.0" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-rxtx:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: org.rxtx:rxtx:2.1.7" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-sctp:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-udt:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: com.barchart.udt:barchart-udt-bundle:2.3.0" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-epoll:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-kqueue:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver-dns-native-macos:4.1.69.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.69.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-aarch_64:4.1.69.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.69.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-aarch_64:4.1.69.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.69.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-aarch_64:4.1.69.Final" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.8" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:3.0.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.5.6" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:transmittable-thread-local:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.pdfbox:pdfbox:2.0.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.pdfbox:fontbox:2.0.27" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
</component>
</module>
\ No newline at end of file
package com.makeit.module.iot.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Condition {
private String assetType;
private List<Targets> targets;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class Targets{
private String id;
private String type;
}
}
package com.makeit.module.iot.dto;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Map;
@Data
public class IotColumn {
@Schema(
description = "字段名"
)
private String name;
@Hidden
private String type;
@Hidden
private Map<String, Object> opts;
}
package com.makeit.module.iot.dto;
import lombok.Data;
import lombok.NonNull;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@Data
public class IotParam {
private List<Term> terms = new LinkedList();
private Set<String> includes = new LinkedHashSet();
private Set<String> excludes = new LinkedHashSet();
}
package com.makeit.module.iot.dto;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class IotQueryParam extends IotParam {
@Schema(
description = "是否分页"
)
private boolean paging = true;
@Schema(
description = "第一页索引"
)
private int firstPageIndex;
@Schema(
description = "页码"
)
private int pageIndex;
@Schema(
description = "每页数量"
)
private int pageSize;
private List<IotSort> sorts;
}
package com.makeit.module.iot.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class IotSort extends IotColumn {
@Schema(
description = "排序方式",
allowableValues = {"asc", "desc"},
minLength = 3,
maxLength = 4
)
private String order = "asc";
@Schema(
description = "指定的值优先排序"
)
private Object value;
}
package com.makeit.module.iot.dto;
import com.google.common.collect.Lists;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Term {
@Schema(
description = "字段名"
)
private String column;
@Schema(
description = "条件值"
)
private Object value;
@Schema(
description = "多个条件关联类型",
defaultValue = "and"
)
private Type type;
@Schema(
description = "动态条件类型",
defaultValue = "eq"
)
private String termType;
@Schema(
description = "拓展选项"
)
private List<String> options = new ArrayList<>();
@Schema(
description = "嵌套条件"
)
private List<Term> terms = new LinkedList<>();
public enum Type {
or,
and;
private Type() {
}
}
}
package com.makeit.module.iot.enums;
import lombok.AllArgsConstructor;
import lombok.Generated;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum DeviceLogType {
event("事件上报"),
readProperty("读取属性"),
writeProperty("修改属性"),
writePropertyReply("修改属性回复"),
reportProperty("属性上报"),
readPropertyReply("读取属性回复"),
child("子设备消息"),
childReply("子设备消息回复"),
functionInvoke("调用功能"),
functionReply("调用功能回复"),
register("设备注册"),
unregister("设备注销"),
readFirmware("读取固件信息"),
readFirmwareReply("读取固件信息回复"),
reportFirmware("上报固件信息"),
pullFirmware("拉取固件信息"),
pullFirmwareReply("拉取固件信息回复"),
upgradeFirmware("推送固件信息"),
upgradeFirmwareReply("推送固件信息回复"),
upgradeFirmwareProgress("固件更新进度"),
log("日志"),
tag("标签更新"),
offline("离线"),
online("上线"),
other("其它"),
direct("透传"),
acknowledge("应答"),
metadata("上报物模型"),
stateCheck("状态检查"),
stateCheckReply("状态检查回复"),
//状态检查
disconnect("断开连接"),
disconnectReply("断开连接回复"),
reportCollectorData("上报数采数据"),
readCollectorData("读取数采数据"),
readCollectorDataReply("读取数采数据回复"),
writeCollectorData("修改数采数据"),
writeCollectorDataReply("修改数采数据回复")
;
private final String text;
}
package com.makeit.module.iot.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum DeviceState {
notActive("禁用"),
offline("离线"),
online("在线");
private final String text;
}
package com.makeit.module.iot.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum DeviceType {
device("直连设备"),
childrenDevice("网关子设备"),
gateway("网关设备");
private final String text;
}
package com.makeit.module.iot.service;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.makeit.module.iot.dto.Condition;
import com.makeit.module.iot.dto.IotQueryParam;
import com.makeit.module.iot.dto.IotSort;
import com.makeit.module.iot.dto.Term;
import com.makeit.module.iot.util.HeaderUtils;
import com.makeit.module.iot.util.HttpRequest;
import com.makeit.module.iot.util.Response;
import com.makeit.module.iot.util.SimpleHttpRequest;
import com.makeit.module.iot.vo.ResponseMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException;
import java.util.List;
@Slf4j
public class IotCommonService {
@Autowired
public HeaderUtils headerUtils;
@Value("${iot.url:}")
public String iotUrl;
protected static HttpClient httpClient = HttpClientBuilder.create().build();
public HttpRequest buildRequest(String url,String body) {
log.info("接口:{},请求参数:{}",url,body);
HttpRequest request = new SimpleHttpRequest(url, httpClient);
request.headers(headerUtils.createHeadersOfJsonString(body));
request.requestBody(body);
return request;
}
public ResponseMessage sendPost(String url, HttpRequest request) throws IOException {
Response response = request.post();
Object result = JSON.parse(response.asBytes());
ResponseMessage responseMessage = JSON.parseObject(result.toString(), ResponseMessage.class);
log.info("接口:{},返回信息:{}",url,JSON.toJSONString(responseMessage));
return responseMessage;
}
/**
* 默认按照时间倒叙
* 可以根据terms进行条件查询 格式
* [
* {
* "terms": [
* {
* "type": "or",
* "value": "%123%",
* "termType": "like",
* "column": "name"
* }
* ]
* }
* ]
* @return
*/
public static IotQueryParam buildQueryParam(int pageSize) {
IotQueryParam iotQueryParam = new IotQueryParam();
iotQueryParam.setPageIndex(0);
iotQueryParam.setPageSize(pageSize);
buildSort("timestamp");
iotQueryParam.setTerms(Lists.newArrayList());
return iotQueryParam;
}
/**
*
* @param pageSize 页大小
* @param column 查询列
* @param termType 动态条件类型
* @param assetType
* @param pkId
* @param type
* @return
*/
public static IotQueryParam buildQueryParam(int pageSize,String column,String termType,String assetType,String pkId,String type,String sortColumn) {
IotQueryParam iotQueryParam = new IotQueryParam();
iotQueryParam.setPageIndex(0);
iotQueryParam.setPageSize(pageSize);
List<Term> terms = getTerms(column, termType, assetType, pkId, type);
iotQueryParam.setTerms(terms);
List<IotSort> iotSortList = buildSort(sortColumn);
iotQueryParam.setSorts(iotSortList);
return iotQueryParam;
}
private static List<IotSort> buildSort(String createTime) {
List<IotSort> iotSortList = Lists.newArrayList();
IotSort iotSort = new IotSort();
iotSort.setOrder("desc");
iotSort.setName(createTime);
iotSortList.add(iotSort);
return iotSortList;
}
private static List<Term> getTerms(String column, String termType, String assetType, String pkId, String type) {
List<Term> terms = Lists.newArrayList();
if (StringUtils.isEmpty(column)) {
return terms;
}
List<Condition.Targets> targets = Lists.newArrayList();
Condition.Targets target = Condition.Targets.builder()
.id(pkId)
.type(type).build();
targets.add(target);
Condition condition = Condition.builder()
.assetType(assetType)
.targets(targets)
.build();
Term term = Term.builder()
.column(column)
.termType(termType)
.value(condition)
.terms(Lists.newArrayList())
.options(Lists.newArrayList())
.build();
terms.add(term);
return terms;
}
}
package com.makeit.module.iot.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.makeit.module.admin.vo.plat.PlatTenantVO;
import com.makeit.module.iot.dto.Condition;
import com.makeit.module.iot.dto.IotQueryParam;
import com.makeit.module.iot.dto.IotSort;
import com.makeit.module.iot.dto.Term;
import com.makeit.module.iot.util.HttpRequest;
import com.makeit.module.iot.util.Response;
import com.makeit.module.iot.util.SimpleHttpRequest;
import com.makeit.module.iot.vo.*;
import com.makeit.utils.data.convert.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* iot 组织机构相关接口
*/
@Component
@Slf4j
public class IotOrgService extends IotCommonService{
public static final String DEVICE_PRODUCT_PREFIX_URL = "device-product/";
/**
* iot同步新增组织机构
*/
public OrganizationEntity syncTenantInfoToIot(PlatTenantVO platTenantVO) {
String url = iotUrl + "organization";
Map<String,Object> reqMap = Maps.newHashMap();
reqMap.put("name",platTenantVO.getName());
reqMap.put("sortIndex",5);
String body = JSON.toJSONString(reqMap);
HttpRequest request = new SimpleHttpRequest(url, httpClient);
request.headers(headerUtils.createHeadersOfJsonString(body));
request.requestBody(body);
try {
ResponseMessage responseMessage = sendPost(url, request);
if (responseMessage.getStatus() == 200) {
OrganizationEntity organizationEntity = JSON.parseObject(responseMessage.getResult().toString(), OrganizationEntity.class);
log.info("新增机构成功,机构id:{}",organizationEntity.getId());
return organizationEntity;
}
log.error("新增机构失败:{}",responseMessage.getMessage());
} catch (IOException e) {
log.error("调用:{}接口异常:{}",url,e.getMessage());
}
return null;
}
/**
* 获取iot组织机构绑定的产品
*/
public List<DeviceProductEntity> getOrgProduct(String iotOrgId) {
String url = iotUrl + DEVICE_PRODUCT_PREFIX_URL + "_query";
IotQueryParam queryParam = buildQueryParam(10, "id", "dim-assets", "product", iotOrgId, "org", "createTime");
String body = JsonUtil.toJson(queryParam);
HttpRequest request = buildRequest(url, body);
try {
ResponseMessage responseMessage = sendPost(url,request);
if (responseMessage.getStatus() == 200) {
IotPagerResult pagerResult = JSON.parseObject(responseMessage.getResult().toString(), IotPagerResult.class);
List<DeviceProductEntity> deviceProductEntityList = JSONArray.parseArray(pagerResult.getData().toString()).toJavaList(DeviceProductEntity.class);
return deviceProductEntityList;
} else {
log.error("获取设备接口失败:{}",responseMessage.getMessage());
}
} catch (IOException e) {
log.error("调用:{}接口异常:{}",url,e.getMessage());
}
return Lists.newArrayList();
}
/**
* 获取iot组织机构绑定的设备
*/
public List<DeviceInstanceEntity> getOrgDevice(String iotOrgId) {
String url = iotUrl + "device/instance/_query";
IotQueryParam queryParam = buildQueryParam(10, "id", "dim-assets", "device", iotOrgId, "org", "createTime");
String body = JsonUtil.toJson(queryParam);
HttpRequest request = buildRequest(url,body);
try {
ResponseMessage responseMessage = sendPost(url, request);
if (responseMessage.getStatus() == 200) {
IotPagerResult pagerResult = JSON.parseObject(responseMessage.getResult().toString(), IotPagerResult.class);
List<DeviceInstanceEntity> deviceInstanceEntityList = JSONArray.parseArray(pagerResult.getData().toString()).toJavaList(DeviceInstanceEntity.class);
return deviceInstanceEntityList;
}
log.error("获取设备接口失败:{}",responseMessage.getMessage());
} catch (IOException e) {
log.error("调用:{}接口异常:{}",url,e.getMessage());
}
return Lists.newArrayList();
}
}
package com.makeit.module.iot.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.Lists;
import com.makeit.module.iot.dto.IotQueryParam;
import com.makeit.module.iot.util.HttpRequest;
import com.makeit.module.iot.vo.DeviceInstanceEntity;
import com.makeit.module.iot.vo.DeviceOperationLogEntity;
import com.makeit.module.iot.vo.IotPagerResult;
import com.makeit.module.iot.vo.ResponseMessage;
import com.makeit.utils.data.convert.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.List;
/**
* iot产品设备相关接口
*/
@Component
@Slf4j
public class IotProductDeviceService extends IotCommonService {
public static final String DEVICE_PREFIX_URL = "/device-instance/";
/**
* 获取设备信息
*/
public List<DeviceInstanceEntity> getEquipmentInfo() {
String url = iotUrl + DEVICE_PREFIX_URL + "_query";
// 条件可以自己改
IotQueryParam iotQueryParam = buildQueryParam(10);
String body = JsonUtil.toJson(iotQueryParam);
HttpRequest request = buildRequest(url, body);
try {
ResponseMessage responseMessage = sendPost(url, request);
if (responseMessage.getStatus() == 200) {
IotPagerResult pagerResult = JSON.parseObject(responseMessage.getResult().toString(), IotPagerResult.class);
List<DeviceInstanceEntity> deviceOperationLogEntities = JSONArray.parseArray(pagerResult.getData().toString()).toJavaList(DeviceInstanceEntity.class);
return deviceOperationLogEntities;
}
log.error("获取设备接口失败:{}", responseMessage.getMessage());
} catch (IOException e) {
log.error("调用:{}接口异常:{}", url, e.getMessage());
}
return Lists.newArrayList();
}
/**
* 获取设备的日志
*
* @param deviceId
*/
public List<DeviceOperationLogEntity> getDeviceLog(String deviceId) {
String url = iotUrl + DEVICE_PREFIX_URL + deviceId + "/logs";
IotQueryParam iotQueryParam = buildQueryParam(10);
String body = JsonUtil.toJson(iotQueryParam);
HttpRequest request = buildRequest(url, body);
try {
ResponseMessage responseMessage = sendPost(url, request);
if (responseMessage.getStatus() == 200) {
IotPagerResult pagerResult = JSON.parseObject(responseMessage.getResult().toString(), IotPagerResult.class);
List<DeviceOperationLogEntity> deviceOperationLogEntities = JSONArray.parseArray(pagerResult.getData().toString()).toJavaList(DeviceOperationLogEntity.class);
//Map maps = (Map) JSON.parse(datum.getContent().toString());
return deviceOperationLogEntities;
}
log.error("获取设备接口失败:{}", responseMessage.getMessage());
} catch (IOException e) {
log.error("调用:{}接口异常:{}", url, e.getMessage());
}
return Lists.newArrayList();
}
}
package com.makeit.module.iot.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.security.MessageDigest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
/**
* @author wangzheng
* @see
* @since 1.0
*/
@Component
@Slf4j
public class HeaderUtils {
@Value("${iot.clientId}")
private String clientId;
@Value("${iot.secureKey}")
private String secureKey;
public Map<String, String> createHeadersOfJsonString(String jsonString) {
//时间戳
String xTimestamp = String.valueOf(new Date().getTime());
//openApi客户端id
//密钥
//param+X-Timestamp+SecureKey通过MD5加密
MessageDigest digest = DigestUtils.getMd5Digest();
System.out.println(jsonString + xTimestamp + secureKey);
digest.update(jsonString.getBytes());
digest.update(xTimestamp.getBytes());
digest.update(secureKey.getBytes());
Map<String, String> headers = new HashMap<>();
headers.put("X-Sign", Hex.encodeHexString(digest.digest()));
headers.put("X-Client-Id", clientId);
headers.put("X-Timestamp", xTimestamp);
log.info("请求头信息:{}",Hex.encodeHexString(digest.digest()) +"|"+clientId+"|"+ xTimestamp);
return headers;
}
}
package com.makeit.module.iot.util;
import java.io.Closeable;
import java.io.IOException;
import java.util.Map;
/**
* @author wang
* @see
* @since 1.0
*/
public interface HttpRequest extends Closeable {
Response get() throws IOException;
Response post() throws IOException;
Response put() throws IOException;
Response delete() throws IOException;
Response patch() throws IOException;
HttpRequest encode(String encode);
HttpRequest contentType(String type);
HttpRequest param(String name, String value);
HttpRequest params(Map<String, Object> params);
HttpRequest header(String name, String value);
HttpRequest headers(Map<String, String> headers);
HttpRequest requestBody(String body);
HttpRequest resultAsJsonString();
}
package com.makeit.module.iot.util;
import java.io.IOException;
/**
* @author wang
* @see
* @since 1.0
*/
public interface Response {
byte[] asBytes() throws IOException;
}
package com.makeit.module.iot.util;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author wang
* @see
* @since 1.0
*/
public class SimpleHttpRequest implements HttpRequest {
private Map<String, Object> params = new LinkedHashMap<>();
private Map<String, String> headers = new LinkedHashMap<>();
private String url;
private String requestBody;
private String contentType;
private String encode = "utf-8";
protected HttpClient httpClient;
public SimpleHttpRequest(String url) {
this.url = url;
createHttpClient();
}
public SimpleHttpRequest(String url, HttpClient client) {
this.url = url;
this.httpClient = client;
}
protected void createHttpClient() {
if (httpClient == null) {
HttpClientBuilder builder = HttpClientBuilder.create();
httpClient = builder.build();
}
}
@Override
public Response get() throws IOException {
String param = EntityUtils.toString(createUrlEncodedFormEntity());
String tmpUrl = url + (url.contains("?") ? "&" : "?") + param;
HttpGet get = new HttpGet(tmpUrl);
HttpResponse response = execute(get);
return getResultValue(response);
}
@Override
public Response post() throws IOException {
HttpPost post = new HttpPost(url);
if (requestBody != null)
post.setEntity(new StringEntity(requestBody, ContentType.create(contentType,encode)));
else {
post.setEntity(createUrlEncodedFormEntity());
}
HttpResponse response = execute(post);
return getResultValue(response);
}
@Override
public Response put() throws IOException {
HttpPut put = new HttpPut(url);
if (requestBody != null)
put.setEntity(new StringEntity(requestBody, ContentType.create(contentType, encode)));
else {
put.setEntity(createUrlEncodedFormEntity());
}
HttpResponse response = execute(put);
return getResultValue(response);
}
protected UrlEncodedFormEntity createUrlEncodedFormEntity() throws UnsupportedEncodingException {
List<NameValuePair> nameValuePair = params.entrySet()
.stream().map(stringStringEntry ->
new BasicNameValuePair(stringStringEntry.getKey(), String.valueOf(stringStringEntry.getValue())))
.collect(Collectors.toList());
return new UrlEncodedFormEntity(nameValuePair, encode);
}
@Override
public Response delete() throws IOException {
HttpDelete delete = new HttpDelete(url);
HttpResponse response = execute(delete);
return getResultValue(response);
}
@Override
public Response patch() throws IOException {
HttpPatch delete = new HttpPatch(url);
if (requestBody != null)
delete.setEntity(new StringEntity(requestBody, ContentType.create(contentType)));
else {
delete.setEntity(createUrlEncodedFormEntity());
}
return getResultValue(execute(delete));
}
@Override
public void close() throws IOException {
if (httpClient != null && httpClient instanceof CloseableHttpClient) {
((CloseableHttpClient) httpClient).close();
}
}
@Override
public HttpRequest resultAsJsonString() {
header("Accept", "application/json");
return this;
}
@Override
public HttpRequest requestBody(String body) {
contentType("application/json");
this.requestBody = body;
return this;
}
@Override
public HttpRequest encode(String encode) {
this.encode = encode;
return this;
}
@Override
public HttpRequest contentType(String type) {
this.contentType = type;
return this;
}
@Override
public HttpRequest param(String name, String value) {
this.params.put(name, value);
return this;
}
@Override
public HttpRequest params(Map<String, Object> params) {
this.params.putAll(params);
return this;
}
@Override
public HttpRequest header(String name, String value) {
this.headers.put(name, value);
return this;
}
@Override
public HttpRequest headers(Map<String, String> header) {
this.headers.putAll(header);
return this;
}
private Response getResultValue(HttpResponse res) throws IOException {
return new SimpleResponse(res);
}
private HttpResponse execute(HttpRequestBase request) throws IOException {
putHeader(request);
return httpClient.execute(request);
}
private void putHeader(HttpUriRequest request) {
headers.forEach(request::setHeader);
}
}
package com.makeit.module.iot.util;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
/**
* @author wang
* @see
* @since 1.0
*/
public class SimpleResponse implements Response {
HttpResponse response;
public SimpleResponse(HttpResponse response) {
this.response = response;
}
@Override
public byte[] asBytes() throws IOException {
return EntityUtils.toByteArray(response.getEntity());
}
}
package com.makeit.module.iot.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
/**
* @author wangzheng
* @see
* @since 1.0
*/
public class Utils {
public static Map<String,String> queryStringToMap(String queryString, String charset){
try {
Map<String,String> map = new HashMap<>();
String[] decode = URLDecoder.decode(queryString,charset).split("&");
for (String keyValue : decode) {
String[] kv = keyValue.split("[=]",2);
map.put(kv[0],kv.length>1?kv[1]:"");
}
return map;
} catch (UnsupportedEncodingException e) {
throw new UnsupportedOperationException(e);
}
}
}
package com.makeit.module.iot.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Map;
@Data
public class DeviceInstanceEntity {
private String id;
@Schema(description = "图片地址")
private String photoUrl;
@Schema(description = "设备名称")
private String name;
@Schema(description = "设备类型")
private String deviceType;
@Schema(description = "说明")
private String describe;
@Schema(description = "产品ID")
private String productId;
@Schema(description = "产品名称")
private String productName;
@Schema(description = "配置信息")
private Map<String, Object> configuration;
@Schema(description = "派生(独立)物模型")
private String deriveMetadata;
@Schema(
description = "状态(只读)"
, accessMode = Schema.AccessMode.READ_ONLY
, defaultValue = "notActive"
)
private String state;
@Schema(
description = "创建者ID(只读)"
, accessMode = Schema.AccessMode.READ_ONLY
)
private String creatorId;
@Schema(
description = "创建者名称(只读)"
, accessMode = Schema.AccessMode.READ_ONLY
)
private String creatorName;
@Schema(
description = "创建时间(只读)"
, accessMode = Schema.AccessMode.READ_ONLY
)
private Long createTime;
@Schema(description = "激活时间"
, accessMode = Schema.AccessMode.READ_ONLY
)
private Long registryTime;
@Schema(description = "机构ID", hidden = true)
//已弃用,机构和设备存在多对多关系,已由资产功能统一管理
@Deprecated
private String orgId;
@Schema(description = "父级设备ID")
private String parentId;
//拓展特性,比如是否为子设备独立状态管理。
// private DeviceFeature[] features;
@Schema(
description = "修改时间"
, accessMode = Schema.AccessMode.READ_ONLY
)
private Long modifyTime;
@Schema(
description = "修改人ID"
, accessMode = Schema.AccessMode.READ_ONLY
)
private String modifierId;
@Schema(
description = "修改人名称"
, accessMode = Schema.AccessMode.READ_ONLY
)
private String modifierName;
}
package com.makeit.module.iot.vo;
import com.makeit.module.iot.enums.DeviceLogType;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
/**
* @author bsetfeng
* @since 1.0
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Generated
public class DeviceOperationLogEntity {
private static final long serialVersionUID = -6849794470754667710L;
@Schema(description = "日志ID")
private String id;
@Schema(description = "设备ID")
private String deviceId;
@Schema(description = "产品ID")
private String productId;
@Schema(description = "日志类型")
private String type;
@Schema(description = "创建时间")
private long createTime;
@Schema(description = "日志内容")
private Object content;
@Schema(description = "消息ID")
private String messageId;
@Hidden
private String orgId;
@Schema(description = "数据时间")
private long timestamp;
}
package com.makeit.module.iot.vo;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Map;
@Data
public class DeviceProductEntity {
private String id;
@Schema(description = "产品名称")
private String name;
@Schema(description = "所属项目")
private String projectId;
@Schema(description = "图片地址")
private String photoUrl;
@Schema(description = "项目名称")
@Hidden
private String projectName;
@Schema(description = "说明")
private String describe;
@Schema(description = "所属品类ID")
private String classifiedId;
@Schema(description = "所属品类名称")
private String classifiedName;
@Schema(description = "消息协议ID")
private String messageProtocol;
@Schema(description = "消息协议名称")
private String protocolName;
@Schema(description = "物模型定义")
private String metadata;
@Schema(description = "传输协议")
private String transportProtocol;
@Schema(description = "入网方式")
private String networkWay;
@Schema(description = "设备类型")
private String deviceType;
@Schema(description = "协议相关配置")
private Map<String, Object> configuration;
@Schema(description = "产品状态 1正常,0禁用")
private Byte state;
@Schema(description = "创建者ID(只读)")
private String creatorId;
@Schema(description = "创建者时间(只读)")
private Long createTime;
@Schema(description = "机构ID")
@Deprecated
@Hidden
private String orgId;
@Schema(description = "设备接入方式ID")
private String accessId;
@Schema(description = "设备接入方式")
private String accessProvider;
@Schema(description = "设备接入方式名称")
private String accessName;
@Schema(description = "数据存储策略")
private String storePolicy;
@Schema(description = "数据存储策略相关配置")
private Map<String, Object> storePolicyConfiguration;
@Schema(description = "修改人")
private String modifierId;
@Schema(description = "修改时间")
private Long modifyTime;
}
package com.makeit.module.iot.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class IotPagerResult<E> {
@Schema(
description = "页码"
)
private int pageIndex;
@Schema(
description = "每页数据量"
)
private int pageSize;
@Schema(
description = "数据总量"
)
private int total;
@Schema(
description = "数据列表"
)
private List<E> data;
}
package com.makeit.module.iot.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class OrganizationEntity {
@Schema(description = "ID")
private String id;
@Schema(description = "编码")
private String code;
@Schema(description = "名称")
private String name;
@Schema(description = "类型")
private String type;
@Schema(description = "说明")
private String describe;
@Schema(description = "其他配置")
private Map<String, Object> properties;
@Schema(
description = "创建者ID(只读)"
, accessMode = Schema.AccessMode.READ_ONLY
)
private String creatorId;
@Schema(description = "创建时间"
, accessMode = Schema.AccessMode.READ_ONLY
)
private Long createTime;
private List<OrganizationEntity> children;
}
package com.makeit.module.iot.vo;
import io.swagger.v3.oas.annotations.media.Schema;
public class ResponseMessage<T> {
@Schema(
description = "消息提示"
)
private String message;
@Schema(
description = "数据内容"
)
private T result;
@Schema(
description = "状态码"
)
private int status;
@Schema(
description = "业务码"
)
private String code;
@Schema(
description = "时间戳(毫秒)"
)
private Long timestamp = System.currentTimeMillis();
public ResponseMessage() {
}
public static <T> ResponseMessage<T> ok() {
return (ResponseMessage<T>) ok((Object)null);
}
public static <T> ResponseMessage<T> ok(T result) {
return of("success", result, 200, (String)null, System.currentTimeMillis());
}
public static <T> ResponseMessage<T> error(String message) {
return error("error", message);
}
public static <T> ResponseMessage<T> error(String code, String message) {
return error(500, code, message);
}
public static <T> ResponseMessage<T> error(int status, String code, String message) {
return (ResponseMessage<T>) of(message, (Object)null, status, code, System.currentTimeMillis());
}
public static <T> ResponseMessage<T> of(String message, T result, int status, String code, Long timestamp) {
ResponseMessage<T> msg = new ResponseMessage<>();
msg.setMessage(message);
msg.setResult(result);
msg.setStatus(status);
msg.setCode(code);
msg.setTimestamp(timestamp);
return msg;
}
public ResponseMessage<T> result(T result) {
this.result = result;
return this;
}
public String getMessage() {
return this.message;
}
public T getResult() {
return this.result;
}
public int getStatus() {
return this.status;
}
public String getCode() {
return this.code;
}
public Long getTimestamp() {
return this.timestamp;
}
public void setMessage(String message) {
this.message = message;
}
public void setResult(T result) {
this.result = result;
}
public void setStatus(int status) {
this.status = status;
}
public void setCode(String code) {
this.code = code;
}
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return "ResponseMessage{" +
"message='" + message + '\'' +
", result=" + result +
", status=" + status +
", code='" + code + '\'' +
", timestamp=" + timestamp +
'}';
}
}
package com.makeit.task;
import com.makeit.module.iot.service.IotOrgService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class IotSyncTask {
@Autowired
private IotOrgService iotOrgService;
@Scheduled(cron = "0 */1 * * * ?")
public void syncEquipmentInfo() {
log.info("开始执行同步设备信息接口");
log.info("结束执行同步设备信息接口");
}
@Scheduled(cron = "0 0/1 * * * ?")
public void syncDeviceLog() {
log.info("开始同步设备日志");
log.info("同步设备日志结束");
}
}
......@@ -86,4 +86,9 @@ maven:
redis:
prefix:
libreOffice: C:\\Program Files\\LibreOffice\\program\\soffice
\ No newline at end of file
libreOffice: C:\\Program Files\\LibreOffice\\program\\soffice
iot:
url: http://iot.meiqicloud.com/api/
clientId: fyxmb5h52iKwE2Hi
secureKey: 22fZbnH36wdHn7ZTyKKHraFw233npcez
\ No newline at end of file
package com.makeit.iotapi;
import com.makeit.module.admin.vo.plat.PlatTenantVO;
import com.makeit.module.iot.service.IotOrgService;
import com.makeit.module.iot.service.IotProductDeviceService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class IotTest {
@Autowired
private IotOrgService iotOrgService;
@Autowired
private IotProductDeviceService iotProductDeviceService;
@Test
void syncTenantInfoToIot() {
PlatTenantVO platTenantVO = new PlatTenantVO();
platTenantVO.setName("lxl2");
iotOrgService.syncTenantInfoToIot(platTenantVO);
}
@Test
void getEquipmentInfo() {
iotProductDeviceService.getEquipmentInfo();
}
@Test
void getOrgProduct() {
iotOrgService.getOrgProduct("1698939546961244160");
}
@Test
void getOrgDevice() {
iotOrgService.getOrgDevice("1698939546961244160");
}
@Test
void getDeviceLog() {
iotProductDeviceService.getDeviceLog("1694547143952007168");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment