提交 4228a2b8 作者: rin

天目将二期api

上级
# 默认忽略的文件
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "io.freefair.lombok" version "5.3.3.3"
id 'java-library'
id 'maven-publish'
id 'java'
id 'idea'
}
group 'com.mmc.tmj'
version '1.0-SNAPSHOT'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
allowInsecureProtocol = true
url ALIYUN_REPOSITORY_URL
}
maven {
allowInsecureProtocol = true
url ALIYUN_JCENTER_URL }
}
ext {
set('jedisVersion', '3.7.1')
set('testcontainersVersion', "1.16.2")
set('validationApiVersion', "2.0.0.Final")
set('knife4jVersion', "2.0.7")
set('nexusUrl', "http://192.168.5.85:8081")
set('jwtVersion', '0.9.1')
set('validatorVersion', "6.0.22.Final")
set('springdocVersion', "1.6.4")
set('spockVersion', "2.1-M2-groovy-3.0")
set('commonVersion', '0.0.1')
set('queryDslVersion', "4.4.0")
set('jakartaPersistenceVersion', "3.0.0")
set("baseVersion", "0.0.1")
set("guavaVersion", "20.0")
set('mapstructVersion', '1.4.2.Final')
}
dependencies {
testImplementation 'junit:junit:4.11'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation "com.github.xiaoymin:knife4j-spring-boot-starter:${knife4jVersion}"
implementation 'org.springframework.boot:spring-boot-starter-data-redis:2.5.9'
implementation 'cn.afterturn:easypoi-base:4.4.0'
implementation "org.hibernate.validator:hibernate-validator:${validatorVersion}"
implementation "redis.clients:jedis:${jedisVersion}"
implementation "jakarta.persistence:jakarta.persistence-api"
implementation 'com.alibaba:fastjson:1.1.54.android'
implementation 'commons-beanutils:commons-beanutils:1.9.3'
api "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor 'javax.annotation:javax.annotation-api'
runtimeOnly 'mysql:mysql-connector-java'
implementation 'io.minio:minio:3.0.10'
compileOnly "org.mapstruct:mapstruct:${mapstructVersion}"
testImplementation "org.spockframework:spock-spring:${spockVersion}"
testAnnotationProcessor("org.mapstruct:mapstruct-processor:${mapstructVersion}")
implementation ('org.springframework.boot:spring-boot-starter-web'){
exclude group:'org.springframework.boot',module:'spring-boot-starter-security'
}
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'io.jsonwebtoken:jjwt:0.6.0'
implementation 'cn.afterturn:easypoi-base:4.4.0'
implementation 'commons-io:commons-io:2.5'
implementation 'org.freemarker:freemarker:2.3.29'
implementation 'fr.opensagres.xdocreport:fr.opensagres.xdocreport.template.freemarker:2.0.2'
implementation 'fr.opensagres.xdocreport:fr.opensagres.xdocreport.document.docx:2.0.2'
implementation 'fr.opensagres.xdocreport:fr.opensagres.xdocreport.template:2.0.2'
implementation 'fr.opensagres.xdocreport:fr.opensagres.xdocreport.document:2.0.2'
implementation 'fr.opensagres.xdocreport:fr.opensagres.xdocreport.core:2.0.2'
implementation 'org.jxls:jxls-poi:1.2.0'
implementation ('org.jxls:jxls:2.6.0'){
exclude group: 'ch.qos.logback'
}
implementation 'org.apache.poi:poi-ooxml:4.1.0'
implementation 'org.apache.poi:poi:4.1.1'
annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa")
annotationProcessor("org.mapstruct:mapstruct-processor:${mapstructVersion}")
compileOnly "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "redis.clients:jedis"
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.data:spring-data-commons'
implementation "com.google.guava:guava:${guavaVersion}"
implementation 'org.apache.poi:poi-ooxml:4.0.1'
implementation 'com.aliyun.oss:aliyun-sdk-oss:3.10.2'
implementation 'org.apache.httpcomponents:httpclient:4.5.13'
implementation 'org.springframework.boot:spring-boot-starter-validation'
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jpa"
testImplementation "org.spockframework:spock-core:${spockVersion}"
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation "javax.validation:validation-api:${validationApiVersion}"
}
java {
// withJavadocJar()
withSourcesJar()
}
publishing {
publications {
mavenJava(MavenPublication) {
artifactId 'base'
from components.java
versionMapping {
usage('java-api') {
fromResolutionOf('runtimeClasspath')
}
usage('java-runtime') {
fromResolutionResult()
}
}
}
}
repositories {
maven {
def releasesRepoUrl = "${nexusUrl}/repository/maven-releases/"
def snapshotsRepoUrl = "${nexusUrl}/repository/maven-snapshots/"
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
allowInsecureProtocol = true
credentials {
username 'admin'
password '1234567'
}
}
}
}
javadoc {
if (JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}
jar {
enabled = true
}
bootJar {
enabled = false
from {
(configurations.runtimeClasspath).collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
tasks.withType(Test).configureEach {
useJUnitPlatform()
}
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MSYS* | MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
allprojects {
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
}
maven { url ALIYUN_JCENTER_URL }
}
}
\ No newline at end of file
# This file is generated by the 'io.freefair.lombok' Gradle plugin
config.stopBubbling = true
This source diff could not be displayed because it is too large. You can view the blob instead.
rootProject.name = 'tmj'
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QActionDo is a Querydsl query type for ActionDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QActionDo extends EntityPathBase<ActionDo> {
private static final long serialVersionUID = -1066345570L;
public static final QActionDo actionDo = new QActionDo("actionDo");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final NumberPath<Integer> takeSecond = createNumber("takeSecond", Integer.class);
public final EnumPath<com.mmc.tmj.enums.ActionType> type = createEnum("type", com.mmc.tmj.enums.ActionType.class);
public QActionDo(String variable) {
super(ActionDo.class, forVariable(variable));
}
public QActionDo(Path<? extends ActionDo> path) {
super(path.getType(), path.getMetadata());
}
public QActionDo(PathMetadata metadata) {
super(ActionDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QDeviceDo is a Querydsl query type for DeviceDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QDeviceDo extends EntityPathBase<DeviceDo> {
private static final long serialVersionUID = 1699017662L;
public static final QDeviceDo deviceDo = new QDeviceDo("deviceDo");
public final StringPath deviceHardId = createString("deviceHardId");
public final StringPath deviceHashId = createString("deviceHashId");
public final StringPath deviceSerial = createString("deviceSerial");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final StringPath name = createString("name");
public final NumberPath<Integer> status = createNumber("status", Integer.class);
public QDeviceDo(String variable) {
super(DeviceDo.class, forVariable(variable));
}
public QDeviceDo(Path<? extends DeviceDo> path) {
super(path.getType(), path.getMetadata());
}
public QDeviceDo(PathMetadata metadata) {
super(DeviceDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QGISMapDo is a Querydsl query type for GISMapDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QGISMapDo extends EntityPathBase<GISMapDo> {
private static final long serialVersionUID = -1770713101L;
public static final QGISMapDo gISMapDo = new QGISMapDo("gISMapDo");
public final StringPath address = createString("address");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final NumberPath<Double> latitude = createNumber("latitude", Double.class);
public final NumberPath<Double> longitude = createNumber("longitude", Double.class);
public final StringPath name = createString("name");
public final StringPath unit = createString("unit");
public QGISMapDo(String variable) {
super(GISMapDo.class, forVariable(variable));
}
public QGISMapDo(Path<? extends GISMapDo> path) {
super(path.getType(), path.getMetadata());
}
public QGISMapDo(PathMetadata metadata) {
super(GISMapDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QPhotographDo is a Querydsl query type for PhotographDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QPhotographDo extends EntityPathBase<PhotographDo> {
private static final long serialVersionUID = -264103996L;
public static final QPhotographDo photographDo = new QPhotographDo("photographDo");
public final StringPath createTime = createString("createTime");
public final StringPath deviceHardId = createString("deviceHardId");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final StringPath images = createString("images");
public final NumberPath<Integer> taskId = createNumber("taskId", Integer.class);
public QPhotographDo(String variable) {
super(PhotographDo.class, forVariable(variable));
}
public QPhotographDo(Path<? extends PhotographDo> path) {
super(path.getType(), path.getMetadata());
}
public QPhotographDo(PathMetadata metadata) {
super(PhotographDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.dsl.PathInits;
/**
* QRouteDo is a Querydsl query type for RouteDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QRouteDo extends EntityPathBase<RouteDo> {
private static final long serialVersionUID = -950630697L;
public static final QRouteDo routeDo = new QRouteDo("routeDo");
public final DateTimePath<java.time.LocalDateTime> createWhen = createDateTime("createWhen", java.time.LocalDateTime.class);
public final NumberPath<Double> defaultAltitude = createNumber("defaultAltitude", Double.class);
public final NumberPath<Double> defaultPitchAngle = createNumber("defaultPitchAngle", Double.class);
public final NumberPath<Double> defaultSpeed = createNumber("defaultSpeed", Double.class);
public final NumberPath<Double> defaultYawAngle = createNumber("defaultYawAngle", Double.class);
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final StringPath name = createString("name");
public final ListPath<RoutePointDo, QRoutePointDo> points = this.<RoutePointDo, QRoutePointDo>createList("points", RoutePointDo.class, QRoutePointDo.class, PathInits.DIRECT2);
public final StringPath remark = createString("remark");
public QRouteDo(String variable) {
super(RouteDo.class, forVariable(variable));
}
public QRouteDo(Path<? extends RouteDo> path) {
super(path.getType(), path.getMetadata());
}
public QRouteDo(PathMetadata metadata) {
super(RouteDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.dsl.PathInits;
/**
* QRoutePointDo is a Querydsl query type for RoutePointDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QRoutePointDo extends EntityPathBase<RoutePointDo> {
private static final long serialVersionUID = -143306897L;
public static final QRoutePointDo routePointDo = new QRoutePointDo("routePointDo");
public final ListPath<ActionDo, QActionDo> actions = this.<ActionDo, QActionDo>createList("actions", ActionDo.class, QActionDo.class, PathInits.DIRECT2);
public final NumberPath<Double> altitude = createNumber("altitude", Double.class);
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final NumberPath<Double> latitude = createNumber("latitude", Double.class);
public final NumberPath<Double> longitude = createNumber("longitude", Double.class);
public final NumberPath<Double> pitchAngle = createNumber("pitchAngle", Double.class);
public final NumberPath<Double> speed = createNumber("speed", Double.class);
public final StringPath uuid = createString("uuid");
public final NumberPath<Double> yawAngle = createNumber("yawAngle", Double.class);
public QRoutePointDo(String variable) {
super(RoutePointDo.class, forVariable(variable));
}
public QRoutePointDo(Path<? extends RoutePointDo> path) {
super(path.getType(), path.getMetadata());
}
public QRoutePointDo(PathMetadata metadata) {
super(RoutePointDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QRunProjectDo is a Querydsl query type for RunProjectDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QRunProjectDo extends EntityPathBase<RunProjectDo> {
private static final long serialVersionUID = -1833261322L;
public static final QRunProjectDo runProjectDo = new QRunProjectDo("runProjectDo");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final NumberPath<Double> latitude = createNumber("latitude", Double.class);
public final NumberPath<Double> longitude = createNumber("longitude", Double.class);
public final StringPath projectAddress = createString("projectAddress");
public final StringPath projectDescript = createString("projectDescript");
public final StringPath projectName = createString("projectName");
public QRunProjectDo(String variable) {
super(RunProjectDo.class, forVariable(variable));
}
public QRunProjectDo(Path<? extends RunProjectDo> path) {
super(path.getType(), path.getMetadata());
}
public QRunProjectDo(PathMetadata metadata) {
super(RunProjectDo.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QTaskDto is a Querydsl query type for TaskDto
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QTaskDto extends EntityPathBase<TaskDto> {
private static final long serialVersionUID = 421423165L;
public static final QTaskDto taskDto = new QTaskDto("taskDto");
public final StringPath addTime = createString("addTime");
public final StringPath deviceHardId = createString("deviceHardId");
public final NumberPath<Integer> deviceId = createNumber("deviceId", Integer.class);
public final StringPath deviceName = createString("deviceName");
public final NumberPath<Integer> deviceStatus = createNumber("deviceStatus", Integer.class);
public final StringPath endTime = createString("endTime");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final StringPath organizationName = createString("organizationName");
public final StringPath remark = createString("remark");
public final StringPath routeName = createString("routeName");
public final StringPath startTime = createString("startTime");
public final StringPath taskName = createString("taskName");
public final NumberPath<Integer> taskStatus = createNumber("taskStatus", Integer.class);
public QTaskDto(String variable) {
super(TaskDto.class, forVariable(variable));
}
public QTaskDto(Path<? extends TaskDto> path) {
super(path.getType(), path.getMetadata());
}
public QTaskDto(PathMetadata metadata) {
super(TaskDto.class, metadata);
}
}
package com.mmc.tmj.entity.database;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
/**
* QTrackDo is a Querydsl query type for TrackDo
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QTrackDo extends EntityPathBase<TrackDo> {
private static final long serialVersionUID = 891293017L;
public static final QTrackDo trackDo = new QTrackDo("trackDo");
public final StringPath data = createString("data");
public final StringPath deviceHardId = createString("deviceHardId");
public final StringPath deviceType = createString("deviceType");
public final StringPath flightSortie = createString("flightSortie");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final StringPath systemCode = createString("systemCode");
public final NumberPath<Integer> time = createNumber("time", Integer.class);
public QTrackDo(String variable) {
super(TrackDo.class, forVariable(variable));
}
public QTrackDo(Path<? extends TrackDo> path) {
super(path.getType(), path.getMetadata());
}
public QTrackDo(PathMetadata metadata) {
super(TrackDo.class, metadata);
}
}
package com.mmc.tmj;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author lcz
* @Date 2022/5/7 14:23
* @Version 1.0
* @description
*/
@SpringBootApplication
public class TmjApplication {
public static void main(String[] args) {
SpringApplication.run(TmjApplication.class,args);
}
}
package com.mmc.tmj.configuration;
import java.util.concurrent.Executor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.AdviceMode;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
/**
*
* @author Chuck
* @since 8/2/2021
* @version 0.0.1
* @apiNote
**/
@Configuration
@EnableScheduling
@EnableAsync(mode = AdviceMode.PROXY, proxyTargetClass = true, order = Ordered.HIGHEST_PRECEDENCE)
@Slf4j
public class AsyncAndScheduledConfig implements AsyncConfigurer, SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
TaskScheduler scheduler = this.taskScheduler();
log.info("Configuring scheduled method executor {}.", scheduler);
taskRegistrar.setTaskScheduler(scheduler);
}
@Bean
public ThreadPoolTaskScheduler taskScheduler() {
log.info("Setting up thread pool task scheduler with 20 threads.");
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(20);
scheduler.setThreadNamePrefix("task-");
scheduler.setAwaitTerminationSeconds(60);
scheduler.setWaitForTasksToCompleteOnShutdown(true);
scheduler.setErrorHandler(t -> log.error("Unknown error occurred while executing task.", t));
scheduler.setRejectedExecutionHandler(
(r, e) -> log.error("Execution of task {} was rejected for unknown reasons.", r));
return scheduler;
}
@Override
public Executor getAsyncExecutor() {
Executor executor = this.taskScheduler();
log.info("Configuring asynchronous method executor {}.", executor);
return executor;
}
}
package com.mmc.tmj.configuration;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.List;
import javax.annotation.Resource;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.AdviceMode;
import org.springframework.core.Ordered;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.ResourceHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.xml.SourceHttpMessageConverter;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UrlPathHelper;
/**
* @author Chuck
* @since 7/5/2021
* @version 0.0.1
* @apiNote
*/
//@Configuration
@EnableWebMvc
@EnableTransactionManagement(
mode = AdviceMode.PROXY,
proxyTargetClass = false,
order = Ordered.LOWEST_PRECEDENCE)
public class ContextConfig implements WebMvcConfigurer {
@Resource @Setter private SpringValidatorAdapter validator;
@Resource @Setter private ObjectMapper objectMapper;
@Value("${com.chuck.fileLocation}")
private String fileLocation;
/** 替代SpringMVC自行创建的Validator实例,用于表单对象参数的验证 */
@Override
public Validator getValidator() {
return this.validator;
}
/** 仅支持Json的MessageConverters */
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new SourceHttpMessageConverter<>());
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
jsonConverter.setSupportedMediaTypes(
Arrays.asList(new MediaType("application", "json"), new MediaType("text", "json")));
jsonConverter.setObjectMapper(this.objectMapper);
converters.add(jsonConverter);
converters.add(new ResourceHttpMessageConverter());
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.defaultContentType(MediaType.APPLICATION_JSON);
}
// @Bean
// public LocaleResolver localeResolver() {
// return new AcceptHeaderLocaleResolver();
// }
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
//
// registry.addResourceHandler("/static-resources/**").addResourceLocations("/static-resources/"
// );
// registry.addResourceHandler("/files/**").addResourceLocations("classpath:/static/" );
// 缓存静态内容
//
// registry.addResourceHandler("/static-resources/**").addResourceLocations("/static-resources/"
// ).setCachePeriod(365*24*60*60);
// 启用Gzip压缩
//
// registry.addResourceHandler("/static-resources/**").addResourceLocations("/static-resources/"
// ).resourceChain(true).addResolver(new GzipResourceResolver()).addResolver(new
// PathResourceResolver());
// }
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper helper = new UrlPathHelper();
helper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(helper);
}
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
//
// registry.addResourceHandler(ServletUriComponentsBuilder.fromCurrentContextPath().path("/files/")
// .toUriString()).addResourceLocations("file:"+storageProperties.getFileLocation());
// }
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry
.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
}
}
package com.mmc.tmj.configuration;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
/**
*
* @author Chuck
* @since 6/25/2021
* @version 0.0.1
* @apiNote
**/
@Configuration
public class DateDeserializeConfig {
private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final String DATE_PATTERN = "yyyy-MM-dd";
/**
* string转localdate
*/
// @Bean
public Converter<String, LocalDate> localDateConverter() {
return source -> {
if (source.trim().length() == 0) {
return null;
}
try {
return LocalDate.parse(source);
} catch (Exception e) {
return LocalDate.parse(source, DateTimeFormatter.ofPattern(DATE_PATTERN));
}
};
}
/**
* string转localdatetime
*/
// @Bean
public Converter<String, LocalDateTime> localDateTimeConverter() {
return source -> {
if (source.trim().length() == 0) {
return null;
}
// 先尝试ISO格式: 2019-07-15T16:00:00
try {
return LocalDateTime.parse(source);
} catch (Exception e) {
return LocalDateTime.parse(source, DateTimeFormatter.ofPattern(DATE_TIME_PATTERN));
}
};
}
/**
* 统一配置
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
JavaTimeModule module = new JavaTimeModule();
LocalDateTimeDeserializer localDateTimeDeserializer = new LocalDateTimeDeserializer(
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
module.addDeserializer(LocalDateTime.class, localDateTimeDeserializer);
return builder -> {
builder.simpleDateFormat(DATE_TIME_PATTERN);
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(DATE_PATTERN)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
builder.modules(module);
};
}
}
package com.mmc.tmj.configuration;
import com.mmc.tmj.filter.LoginFilter;
import io.swagger.annotations.ApiOperation;
import java.util.Arrays;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author lcz
* @Date 2022/5/19 10:26
* @Version 1.0
* @description
*/
@Configuration
public class FilterConfiguration {
@Autowired
private LoginFilter loginFilter;
@Bean
public FilterRegistrationBean loginFilterBean(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(loginFilter);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
return filterRegistrationBean;
}
}
package com.mmc.tmj.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Author lcz
* @Date 2022/5/18 16:21
* @Version 1.0
* @description
*/
@Configuration
public class GloableCrorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/**")
.exposedHeaders("token")
.allowedOriginPatterns("*")
.allowedMethods("HEAD", "POST", "GET", "PUT", "OPTIONS", "DELETE", "PATCH")
.maxAge(168000)
.allowedHeaders("*")
.allowCredentials(true);
}
}
package com.mmc.tmj.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
/**
* @Author lcz
* @Date 2022/5/18 16:22
* @Version 1.0
* @description
*/
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(
new ApiInfoBuilder()
.title("TMJ基础平台")
.description("TMJ基础平台文档")
.termsOfServiceUrl("http://www.mmc.cn/tmj")
.version("0.0.1")
.build())
// 分组名称
.groupName("开发版本")
.select()
// 这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.mmc"))
.paths(PathSelectors.any())
.build();
}
}
package com.mmc.tmj.configuration;
import io.minio.MinioClient;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author lcz
* @Date 2022/5/14 15:04
* @Version 1.0
* @description
*/
@Configuration
@EnableConfigurationProperties(MinioPropConfiguration.class)
public class MinioConfiguration {
@Autowired
private MinioPropConfiguration minioPropConfiguration;
@SneakyThrows
@Bean
public MinioClient minioClient(){
return new MinioClient(minioPropConfiguration.getEndpoint(),minioPropConfiguration.getAccesskey(),minioPropConfiguration.getSecretkey());
}
}
package com.mmc.tmj.configuration;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* @Author lcz
* @Date 2022/5/14 13:58
* @Version 1.0
* @description
*/
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioPropConfiguration {
private String endpoint;
private String accesskey;
private String secretkey;
}
package com.mmc.tmj.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import redis.clients.jedis.JedisPoolConfig;
/**
* @Author lcz
* @Date 2022/4/8 9:42
* @Version 1.0
* @description
*/
@Configuration
public class RedisTemplateConfiguration {
@Value("${spring.redis.host}")
private String orderHost;
@Value("${spring.redis.port}")
private String orderPort;
@Value("${spring.redis.password}")
private String orderPassword;
//最大空闲连接数
private static final int MAX_IDLE =200;
//最大连接数
private static final int MAX_TOTAL =1024;
//建立连接等待时长
private static final long MAX_WAIT_MILLIS = 10000;
//配置工厂
public RedisConnectionFactory connectionFactory(String host, int port, String password, int maxIdle,
int maxTotal, long maxWaitMillis, int index) {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName(host);
jedisConnectionFactory.setPort(port);
if (!StringUtils.isEmpty(password)) {
jedisConnectionFactory.setPassword(password);
}
if (index != 0) {
jedisConnectionFactory.setDatabase(index);
}
jedisConnectionFactory.setPoolConfig(poolConfig(maxIdle, maxTotal, maxWaitMillis, false));
jedisConnectionFactory.afterPropertiesSet();
return jedisConnectionFactory;
}
//连接池配置
public JedisPoolConfig poolConfig(int maxIdle, int maxTotal, long maxWaitMillis, boolean testOnBorrow) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMaxTotal(maxTotal);
poolConfig.setMaxWaitMillis(maxWaitMillis);
poolConfig.setTestOnBorrow(testOnBorrow);
return poolConfig;
}
//------------------------------------
@Bean(name = "redisOrderTemplate")
public StringRedisTemplate redisOrderTemplate() {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(
connectionFactory(orderHost, Integer.parseInt(orderPort), orderPassword, MAX_IDLE, MAX_TOTAL, MAX_WAIT_MILLIS, 0));
//OptUtil.redisTemplate0 = template;
return template;
}
//------------------------------------
@Bean(name = "redisUserTemplate")
public StringRedisTemplate userUserTemplate() {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(
connectionFactory(orderHost, Integer.parseInt(orderPort), orderPassword, MAX_IDLE, MAX_TOTAL, MAX_WAIT_MILLIS, 2));
//OptUtil.redisTemplate2 = template;
return template;
}
}
package com.mmc.tmj.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/**
* @Author lcz
* @Date 2022/5/12 17:39
* @Version 1.0
* @description
*/
@Configuration
public class RestemplateConfiguration {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory clientHttpRequestFactory){
return new RestTemplate(clientHttpRequestFactory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);
factory.setConnectTimeout(15000);
return factory;
}
}
package com.mmc.tmj.configuration;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.tmj.utils.FileUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
/**
* @Author lcz
* @Date 2022/5/23 9:51
* @Version 1.0
* @description 模拟数据
*/
@Configuration
@Slf4j
public class SimulationConfiguration {
@Autowired
private ResourceLoader resourceLoader;
@Autowired
private ObjectMapper objectMapper;
@Bean
public Map<String, List<Map<String,Object>>> sumalationData() throws JsonProcessingException {
Resource flyer = resourceLoader.getResource("classpath:/simulation_data/flyer.json");
//Resource project = resourceLoader.getResource("classpath:/simulation_data/project.json");
Resource service = resourceLoader.getResource("classpath:/simulation_data/service.json");
Resource show = resourceLoader.getResource("classpath:/simulation_data/show.json");
Resource train = resourceLoader.getResource("classpath:/simulation_data/train.json");
Resource uav = resourceLoader.getResource("classpath:/simulation_data/uav.json");
String flyerJson = FileUtils.jsonString(flyer);
List<Map<String,Object>> flyerList = objectMapper.readValue(flyerJson, List.class);
String serviceJson = FileUtils.jsonString(service);
List<Map<String,Object>> serviceList = objectMapper.readValue(serviceJson, List.class);
String showJson = FileUtils.jsonString(show);
List<Map<String,Object>> showList = objectMapper.readValue(showJson, List.class);
String trainJson = FileUtils.jsonString(train);
List<Map<String,Object>> trainList = objectMapper.readValue(trainJson, List.class);
String uavJson = FileUtils.jsonString(uav);
List<Map<String,Object>> uavList = objectMapper.readValue(uavJson, List.class);
System.out.println("flyerList={}"+ JSONObject.toJSONString(flyerList));
System.out.println("serviceList={}"+ JSONObject.toJSONString(serviceList));
System.out.println("showList={}"+ JSONObject.toJSONString(showList));
System.out.println("trainList={}"+ JSONObject.toJSONString(trainList));
System.out.println("uavList={}"+ JSONObject.toJSONString(uavList));
Map<String,List<Map<String,Object>>> map = new HashMap();
map.put("flyer",flyerList);
map.put("service",serviceList);
map.put("show",showList);
map.put("train",trainList);
map.put("uav",uavList);
System.out.println("sumalationData={}"+ JSONObject.toJSONString(map));
return map;
}
}
package com.mmc.tmj.configuration;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @author Administrator
* @since 2021/8/25
* @version 0.0.1
* @apiNote Value Object
*/
@ConfigurationProperties(prefix = "com.chuck")
@Configuration
@Getter
@Setter
public class StorageProperties {
private String fileLocation;
}
package com.mmc.tmj.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Author lcz
* @Date 2022/5/18 16:23
* @Version 1.0
* @description
*/
@Configuration
public class SwaggerConfig implements WebMvcConfigurer {
// 文档按路由分组
@Value("${mmc.tmj.physicalUrl}")
private String physicalUrl;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/files/**").addResourceLocations(physicalUrl);
}
}
package com.mmc.tmj.configuration;
import java.nio.charset.StandardCharsets;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
/**
*
* @author Chuck
* @since 7/5/2021
* @version 0.0.1
* @apiNote
**/
@Configuration
public class ValidatorConfig {
/**
* 方法参数和返回值验证:为@Validated标注的类创建代理
*
* @return
*/
// @Bean
// public MethodValidationPostProcessor methodValidationPostProcessor() {
// MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
// processor.setValidator(localValidatorFactoryBean());
// return processor;
// }
// @Bean
// public LocalValidatorFactoryBean localValidatorFactoryBean() {
// LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
// factory.setProviderClass(HibernateValidator.class);
// factory.setValidationMessageSource(messageSource());
// return factory;
// }
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setCacheSeconds(-1);
messageSource.setDefaultEncoding(StandardCharsets.UTF_8.name());
// messageSource.setBasenames("", "");
return messageSource;
}
public static interface InsertGroup {
}
public static interface SelectGroup {
}
public static interface UpdateGroup {
}
public static interface DeleteGroup {
}
}
package com.mmc.tmj.configuration;
/**
* @Author lcz
* @Date 2022/5/19 10:20
* @Version 1.0
* @description
*/
public class WebFilterConfiguration {
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.LoginTokenInfo;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.entity.result.DeviceSelectDto;
import com.mmc.tmj.service.device.DeviceService;
import com.mmc.tmj.service.login.LoginService;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
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;
/**
* @Author lcz
* @Date 2022/5/12 9:55
* @Version 1.0
* @description
*/
@Api(tags = "设备")
@Validated
@Slf4j
@RequestMapping("/device")
@RestController
public class DeviceController {
@Autowired
private DeviceService deviceService;
@Autowired
private LoginService loginService;
@ApiOperation("下拉列表显示设备")
@GetMapping("/getDeviceSelect")
public BaseResponse getDeviceSelect(@RequestParam @DecimalMin("1") int organizationId, HttpServletRequest request){
//LoginTokenInfo token = loginService.getLoginInfo(request.getHeader("token"), "88990");
DataObj dataObj = deviceService.getDeviceSelect(null,organizationId);
return BaseResponse.ok(dataObj);
}
@ApiOperation("下拉显示未关联待执行状态任务的设备")
@GetMapping("/unbindDevices")
public BaseResponse<List<DeviceSelectDto>> unbindTaskDevices(@RequestParam @DecimalMin("1") int organizationId, HttpServletRequest request){
//LoginTokenInfo token = loginService.getLoginInfo(request.getHeader("token"), "88990");
DataObj dataObj = deviceService.getDeviceSelect(null,organizationId);
return BaseResponse.ok(((List<Map<String, Object>>) dataObj).stream().filter(it-> null!=deviceService.deviceHaveTask((Integer) it.get("device_id"))).map(BeanTransFormUtil::transDeviceSelectDtoByDataObj).collect(
Collectors.toList()));
}
@ApiOperation("判断设备是否有任务")
@PostMapping("/deviceHaveTask")
public BaseResponse<DataObj> deviceHaveTask(@RequestParam Integer id) {
if(null != deviceService.deviceHaveTask(id)){
return BaseResponse.ok(new DataObj("ok", "200", null));
}
return BaseResponse.error(new DataObj( "ok","400", null));
}
@ApiOperation("通过设备id更改设备名字")
@PostMapping("/updateDeviceName")
public BaseResponse deviceHaveTask(@RequestParam @NotNull String deviceHardId,@RequestParam @NotNull String deviceName,HttpServletRequest request) {
//LoginTokenInfo token = loginService.getLoginInfo(request.getHeader("token"), "88990");
String body=deviceService.updateDeviceName(null,deviceHardId,deviceName);
return BaseResponse.ok(body);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.response.BaseNumListVo;
import com.mmc.tmj.entity.response.ExhibitionPointBaseInfo;
import com.mmc.tmj.entity.response.ExhibitionPointListMapVo;
import com.mmc.tmj.entity.response.ExhibitionPointListSimpleVo;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/21 16:57
* @Version 1.0
* @description
*/
@Api(tags = "展示网点")
@Validated
@Slf4j
@RequestMapping("/exhibitionPoint")
@RestController
public class ExhibitionPointController {
@Autowired
private Map<String, List<Map<String,Object>>> sumalationData;
//@GetMapping("/getExhibitionPointNum")
public BaseResponse<List<BaseNumListVo>> getExhibitionPointNum(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
@GetMapping("/getExhibitionPointListMap")
@ApiOperation("获取展示项目列表")
public BaseResponse<List<ExhibitionPointListMapVo>> getExhibitionPointListMap(@Valid @NotNull @RequestParam Integer accountId){
List<Map<String, Object>> flyer = sumalationData.get("show");
final int[] i = {0};
List<ExhibitionPointListMapVo> mmc1 = flyer.stream().map((map) -> {
i[0] = i[0] +1;
return BeanTransFormUtil.transExhibitionPointListMapVoByMap(map, ""+i[0]);
}).collect(Collectors.toList());
return BaseResponse.ok(mmc1);
}
//@GetMapping("/getExhibitionPointListSimple")
public BaseResponse<List<ExhibitionPointListSimpleVo>> getExhibitionPointListSimple(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
//@GetMapping("/getExhibitionPointInfo")
public BaseResponse<ExhibitionPointBaseInfo> getExhibitionPointInfo(@Valid @NotNull @RequestParam Integer accountId,@Valid @NotNull @RequestParam Integer id){
return BaseResponse.ok(null);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.response.BaseNumListVo;
import com.mmc.tmj.entity.response.FlyListMapVo;
import com.mmc.tmj.entity.response.FlyListSimpleVo;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/21 16:55
* @Version 1.0
* @description
*/
@Api(tags = "无人机")
@Validated
@Slf4j
@RequestMapping("/fly")
@RestController
public class FlyController {
@Autowired
private Map<String, List<Map<String,Object>>> sumalationData;
//@GetMapping("/getflyNum")
public BaseResponse<List<BaseNumListVo>> getflyNum(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
@GetMapping("/getflyListMap")
@ApiOperation("获取无人机列表数据")
public BaseResponse<List<FlyListMapVo>> getflyListMap(@Valid @NotNull @RequestParam Integer accountId){
List<Map<String, Object>> flyer = sumalationData.get("uav");
final int[] i = {0};
List<FlyListMapVo> mmc1 = flyer.stream().map((map) -> {
i[0] = i[0] +1;
return BeanTransFormUtil.transFlyListMapVoByMap(map, ""+i[0], "MMC无人机"+i[0]);
}).collect(Collectors.toList());
return BaseResponse.ok(mmc1);
}
//@GetMapping("/getflyListSimple")
public BaseResponse<List<FlyListSimpleVo>> getflyListSimple(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
//@GetMapping("/getflyInfo")
public BaseResponse<FlyListSimpleVo> getflyInfo(@Valid @NotNull @RequestParam Integer accountId,@Valid @NotNull @RequestParam Integer id){
return BaseResponse.ok(null);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.response.BaseNumListVo;
import com.mmc.tmj.entity.response.FlyListMapVo;
import com.mmc.tmj.entity.response.FlyManListMapVo;
import com.mmc.tmj.entity.response.FlyManListSimpleVo;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/21 16:56
* @Version 1.0
* @description
*/
@Api(tags = "飞手")
@Validated
@Slf4j
@RequestMapping("/flyMan")
@RestController
public class FlyManController {
@Autowired
private Map<String, List<Map<String,Object>>> sumalationData;
//@GetMapping("/getflyManNum")
public BaseResponse<List<BaseNumListVo>> getflyManNum(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
@GetMapping("/getflyManListMap")
@ApiOperation("获取飞手列表数据")
public BaseResponse<List<FlyManListMapVo>> getflyManListMap(@Valid @NotNull @RequestParam Integer accountId){
List<Map<String, Object>> flyer = sumalationData.get("flyer");
final int[] i = {0};
List<FlyManListMapVo> mmc1 = flyer.stream().map((map) -> {
i[0] = i[0] +1;
return BeanTransFormUtil.transFlyManListMapVoByMap(map, ""+i[0]);
}).collect(Collectors.toList());
return BaseResponse.ok(mmc1);
}
//@GetMapping("/getflyManListSimple")
public BaseResponse<List<FlyManListSimpleVo>> getflyManListSimple(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.param.GISMapWebDto;
import com.mmc.tmj.service.gis.GIsMapService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/12 9:56
* @Version 1.0
* @description
*/
@RestController
@RequestMapping(path = "GISMap")
@Validated
@Slf4j
public class GisMapController {
@Autowired
private GIsMapService gisMapService;
@PostMapping
public void create(@RequestBody GISMapWebDto gisMapWebDto){
gisMapService.create(gisMapWebDto);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.param.RouteDataDto;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RouteList;
import com.mmc.tmj.entity.result.SliceRespVo;
import com.mmc.tmj.service.file.impl.MinioStoreageServiceImpl;
import com.mmc.tmj.service.route.RouteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.DecimalMin;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/12 9:56
* @Version 1.0
* @description
*/
@RequestMapping("route")
@RestController
@Api(tags = "航线")
@Validated
public class RouteController {
@Resource
private RouteService routeService;
@PostMapping
@ApiOperation("规划航线")
public BaseResponse planRoute(@Valid @RequestBody @ApiParam(value = "航线规划模型") RouteDataDto routeDataDto){
if(!routeService.planRoute(routeDataDto)){
return BaseResponse.error("名称重复",400);
};
return BaseResponse.ok();
}
@PutMapping
@ApiOperation("编辑航线")
public BaseResponse updateRoute(@Valid @RequestBody @ApiParam(value = "航线规划模型") RouteDataDto routeDataDto){
if(!routeService.updateRoute(routeDataDto)){
return BaseResponse.error("更新失败",400);
};
return BaseResponse.ok();
}
@PostMapping("/uploadRoutes")
@ApiOperation("上传多条航线")
public BaseResponse uploadRoutes(@RequestParam(value = "files") MultipartFile[] files){
for(MultipartFile file:files){
uploadRoute(file);
}
return BaseResponse.ok();
}
@PostMapping("/upload")
@ApiOperation("上传航线")
public BaseResponse uploadRoute(@RequestParam(value = "file") MultipartFile file){
String substring = file.getOriginalFilename()
.substring(file.getOriginalFilename().lastIndexOf("."));
if(".json".equals(substring)){
routeService.saveUploadRoute(file);
return BaseResponse.ok();
}
if(".kml".equals(substring)){
throw new IllegalArgumentException("暂不支持KML数据格式");
}
return BaseResponse.error("文件:" + file.getOriginalFilename() + "格式错误,上传失败");
}
@DeleteMapping("/{id}")
@ApiOperation("依据ID删除航线")
public BaseResponse deleteById(@PathVariable @ApiParam(value = "航线Id") @DecimalMin("1") int id){
if(routeService.deleteByid(id)){
return BaseResponse.ok("删除成功");
};
return BaseResponse.error("删除失败");
}
@GetMapping("/routes")
@ApiOperation("分页查询航线")
public BaseResponse<SliceRespVo<RouteList>> pages(
@RequestParam(required = false) @ApiParam(value = "航线名称")String name,
@RequestParam(defaultValue = "1") @ApiParam(value = "第几页") int num,
@RequestParam(defaultValue = "10") @ApiParam(value = "每页大小") int size,
@RequestParam(defaultValue = "-id")
@ApiParam(value = "排序,例子:id,-code,+name。代表按id升序、code降序、name升序依次排列")
String sort){
return BaseResponse.ok(routeService.pages(name,num,size,sort));
}
@GetMapping("/{name}")
@ApiOperation("航线详情")
public BaseResponse<RouteDetail> routeDetail(@PathVariable String name){
return BaseResponse.ok(routeService.routeDetail(name));
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.other.RunProjectDto;
import com.mmc.tmj.entity.other.RunProjectListDto;
import com.mmc.tmj.entity.param.RunProjectWebDto;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.service.runProject.RunProjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/21 14:14
* @Version 1.0
* @description
*/
@Api(tags = "运行项目")
@Validated
@Slf4j
@RequestMapping("/runProject")
@RestController
public class RunPorjectController {
@Autowired
private RunProjectService runProjectService;
//新增项目
@PostMapping("/createRunProject")
@ApiOperation("创建运行项目")
public BaseResponse createRunProject(@Valid @RequestBody RunProjectWebDto runProjectWebDto){
if(runProjectService.createRunProject(runProjectWebDto)){
return BaseResponse.ok();
}
return BaseResponse.error("重名");
}
//查询项目列表
@GetMapping("/getRunProjectListSimple")
@ApiOperation("获取培训运行项目列表")
public BaseResponse<List<RunProjectListDto>> getRunProjectListSimple(@Valid @NotNull @RequestParam Integer accountId,@RequestParam(defaultValue = "") String projectName){
return BaseResponse.ok(runProjectService.getRunProjectListSimple(accountId,projectName));
}
//查看单个项目详情
@GetMapping("/getRunProjectInfo")
@ApiOperation("获取运行项目详情")
public BaseResponse<RunProjectDto> getRunProjectInfo(@Valid @NotNull @RequestParam Integer accountId,@Valid @NotNull @RequestParam Integer id){
return BaseResponse.ok(runProjectService.getRunProjectInfo(accountId,id));
}
//删除项目
@DeleteMapping("/delete")
@ApiOperation("删除运行项目")
public BaseResponse delete(@Valid @NotNull @RequestParam Integer accountId,@Valid @NotNull @RequestParam Integer id){
if(runProjectService.delete(accountId,id)){
return BaseResponse.ok();
}
return BaseResponse.error("已被删除");
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.response.BaseNumListVo;
import com.mmc.tmj.entity.response.ServicePointBaseInfo;
import com.mmc.tmj.entity.response.ServicePointListMapVo;
import com.mmc.tmj.entity.response.ServicePointListSimpleVo;
import com.mmc.tmj.entity.response.TrainPointListMapVo;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/21 16:57
* @Version 1.0
* @description
*/
@Api(tags = "服务网点")
@Validated
@Slf4j
@RequestMapping("/servicePoint")
@RestController
public class ServicePointController {
@Autowired
private Map<String, List<Map<String,Object>>> sumalationData;
//@GetMapping("/getServicePointNum")
public BaseResponse<List<BaseNumListVo>> getServicePointNum(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
@GetMapping("/getServicePointListMap")
@ApiOperation("获取服务网点数据列表")
public BaseResponse<List<ServicePointListMapVo>> getServicePointListMap(@Valid @NotNull @RequestParam Integer accountId){
List<Map<String, Object>> flyer = sumalationData.get("service");
final int[] i = {0};
List<ServicePointListMapVo> mmc1 = flyer.stream().map((map) -> {
i[0] = i[0] +1;
return BeanTransFormUtil.transServicePointListMapVoByMap(map, ""+i[0]);
}).collect(Collectors.toList());
return BaseResponse.ok(mmc1);
}
//@GetMapping("/getServicePointListSimple")
public BaseResponse<List<ServicePointListSimpleVo>> getServicePointListSimple(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
//@GetMapping("/getServicePointInfo")
public BaseResponse<ServicePointBaseInfo> getServicePointInfo(@Valid @NotNull @RequestParam Integer accountId,@Valid @NotNull @RequestParam Integer id){
return BaseResponse.ok(null);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.LoginTokenInfo;
import com.mmc.tmj.entity.param.TaskWebDto;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.entity.result.DeviceSelectDto;
import com.mmc.tmj.entity.result.PageRespVo;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.service.device.DeviceService;
import com.mmc.tmj.service.file.impl.MinioStoreageServiceImpl;
import com.mmc.tmj.service.login.LoginService;
import com.mmc.tmj.service.photo.PhotographService;
import com.mmc.tmj.service.task.TaskService;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import javax.websocket.server.PathParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/7 14:38
* @Version 1.0
* @description
*/
@Api(tags = "任务")
@Slf4j
@Validated
@RequestMapping("/task")
@RestController
public class TaskController {
@Resource
private TaskService taskService;
@Resource
private LoginService loginService;
@Resource
private DeviceService deviceService;
@Resource
private MinioStoreageServiceImpl minioStoreageService;
@Resource
private PhotographService photographService;
//创建任务
@ApiOperation("创建任务")
@PostMapping("/createTask")
public BaseResponse createTask(@Valid @RequestBody TaskWebDto taskWebDto){
if(taskService.createTask(taskWebDto)){
return BaseResponse.ok("创建成功", 200, "{}");
};
return BaseResponse.error("创建失败,任务名称已存在", 400, "{}");
}
//分页获取任务列表
@ApiOperation("获取任务列表")
@PostMapping("/getTaskList")
public BaseResponse getTaskList(
@RequestParam(defaultValue = "") String taskName,
@RequestParam(defaultValue = "") String status,
@RequestParam(defaultValue = "0") int num,
@RequestParam(defaultValue = "10") int size,
HttpServletRequest request){
//查询对应的任务列表数据
PageRespVo<TaskListVo> taskList = taskService.getTaskList(taskName, status, num, size);
//LoginTokenInfo loginInfo = loginService.getLoginInfo(request.getHeader("token"), "88990");
/*DataObj exec = deviceService.getDeviceSelect(loginInfo, 1);
List<Map<String,String>> data =(List<Map<String,String>>) exec.getData();
List<DeviceSelectDto> deviceSelectDtos = data.stream().map(it -> {
DeviceSelectDto deviceSelectDto = new DeviceSelectDto();
deviceSelectDto.setDevice_id(Integer.parseInt(it.get("device_id")));
deviceSelectDto.setDeviceName(it.get("deviceName"));
deviceSelectDto.setDeviceHashId(it.get("hashId"));
deviceSelectDto.setDeviceSerial(it.get("deviceSerial"));
deviceSelectDto.setDeviceHardId(it.get("deviceHardId"));
deviceSelectDto.setSocketStatus(Integer.parseInt(it.get("status")));
return deviceSelectDto;
}).collect(Collectors.toList());
for(TaskListVo taskListVo:taskList.getData()){
if(null != taskListVo.getDeviceHardId() && taskListVo.getDeviceHardId().startsWith("mock-")){
taskListVo.setDeviceStatus(1);
continue;
}
for (DeviceSelectDto deviceSelectDto:deviceSelectDtos){
if(deviceSelectDto.getDevice_id().equals(taskListVo.getDeviceId())){
taskListVo.setDeviceStatus(deviceSelectDto.getSocketStatus());
break;
}else {
taskListVo.setDeviceStatus(0);
}
}
}*/
return BaseResponse.ok("查询成功", 200, taskList);
}
//选择任务列表(可带名称查询)
@ApiOperation("选择任务列表(可带名称查询)")
@GetMapping("/getTaskSelect")
public BaseResponse<List<TaskSelectVo>> getSelectList(@RequestParam(required = false) String name){
return BaseResponse.ok(taskService.getTaskSelect(name));
}
//更新任务
@ApiOperation("更新任务")
@PutMapping("/updateTask")
public BaseResponse updateTask(@Valid @RequestBody TaskWebDto taskWebDto) {
if(taskService.updateTask(taskWebDto)){
return BaseResponse.ok("更新成功", 200, "{}");
};
return BaseResponse.error("更新失败,任务名称已存在", 400, "{}");
}
//任务详情
@ApiOperation("任务详情")
@GetMapping("/getTaskInfoById")
public BaseResponse<TaskInfoVo> getTaskInfoById(@RequestParam Integer id){
TaskInfoVo taskInfoVo=taskService.getTaskInfoById(id);
return BaseResponse.ok(taskInfoVo);
}
//开始任务
@ApiOperation("开始任务")
@GetMapping("/startTask")
public BaseResponse startTask(@RequestParam Integer id){
if(taskService.updateTaskStatus(id,1,2)){
return BaseResponse.ok("开始任务成功", 200, "{}");
};
return BaseResponse.error("开始任务失败", 400, "{}");
}
//完成任务
@ApiOperation("完成任务")
@GetMapping("/endTask")
public BaseResponse endTask(@RequestParam Integer id){
if(taskService.updateTaskStatus(id,2,3)){
return BaseResponse.ok("完成任务成功", 200, "{}");
};
return BaseResponse.error("完成任务失败", 400, "{}");
}
//保存图片
@ApiOperation("保存图片")
@PostMapping(
value = "/photograph",
consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public BaseResponse photograph(@RequestParam(
value = "task_id",required = false) Integer taskId,
@RequestParam(value = "images") MultipartFile[] images,
@RequestParam(value = "deviceHardId",defaultValue = "")String deviceHardId){
Arrays.stream(images).forEach(ia->{
String fileParm=minioStoreageService.store(ia);
photographService.savePhotograph(BeanTransFormUtil.transPhotographDo(taskId,deviceHardId,fileParm));
});
return BaseResponse.ok("上传成功");
}
//查询图片地址
@ApiOperation("查询图片地址")
@GetMapping("/getPhotograph")
public BaseResponse<List<PhotographListVo>> getPhotograph(Integer taskId){
return BaseResponse.ok("查询成功",200,photographService.getPhotographByTaskId(taskId));
}
//删除任务
@ApiOperation("删除任务")
@DeleteMapping("/deleteTask/{id}")
public BaseResponse deleteTask(@PathVariable("id") Integer id){
if(taskService.deleteTask(id)){
return BaseResponse.ok("删除任务成功", 200, "{}");
};
return BaseResponse.error("删除任务失败", 400, "{}");
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.result.TaskReportDto;
import com.mmc.tmj.service.task.TaskService;
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IContext;
import fr.opensagres.xdocreport.template.TemplateEngineKind;
import fr.opensagres.xdocreport.template.formatter.FieldsMetadata;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ResourceLoader;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @Author lcz
* @Date 2022/5/12 9:56
* @Version 1.0
* @description
*/
@Controller
@Api(tags = "任务报告")
@Validated
@Slf4j
public class TaskResportController {
@Autowired
private TaskService taskService;
@Autowired
private ResourceLoader resourceLoader;
@Autowired
private StringRedisTemplate redisUserTemplate;
@Value("${mmc.tmj.physicalUrl}")
private String uploadPath;
//导出模板,代码需要按实际做调整
@SneakyThrows
@GetMapping("/taskPointExportToWord")
@ApiOperation("导出任务报告")
public void taskPointExportToWord(@RequestParam Integer taskId, HttpServletRequest request, HttpServletResponse response){
// 1 检查任务状态是否为已完成
if(taskService.checkTaskStatus(taskId).intValue()==0){
throw new IllegalArgumentException("导出失败,请检查任务状态是否为已完成");
};
// 2 获取导出的模板
InputStream resourceAsStream = this.getClass().getResourceAsStream("/天目将无人机任务报告模板.docx");
IXDocReport ixDocReport = XDocReportRegistry.getRegistry()
.loadReport(resourceAsStream, TemplateEngineKind.Freemarker);
IContext context = ixDocReport.createContext();
FieldsMetadata fieldsMetadata = ixDocReport.createFieldsMetadata();
ixDocReport.createFieldsMetadata();
context.put("taskId","666");
context.put("taskName","777");
context.put("taskDate","888");
context.put("taskTime","999");
context.put("deviceHardId","100");
context.put("remark","200");
context.put("executePerson","300");
context.put("reportAddTime","400");
//图片获取
InputStream resourceAsStream1 = this.getClass().getResourceAsStream("/imgs/1.png");
InputStream resourceAsStream2 = this.getClass().getResourceAsStream("/imgs/2.png");
InputStream resourceAsStream3 = this.getClass().getResourceAsStream("/imgs/3.png");
context.put("img1",resourceAsStream1);
context.put("img2",resourceAsStream2);
context.put("img3",resourceAsStream3);
fieldsMetadata.addFieldAsImage("img1");
fieldsMetadata.addFieldAsImage("img2");
fieldsMetadata.addFieldAsImage("img3");
log.info("获取模板文件成功");
// 3 获取导出的用户名称,任务数据
String username=(String)redisUserTemplate.opsForHash().get("token::allow:hash","1");
TaskReportDto taskReportDto=taskService.export(taskId);
Map<String, Object> map= taskService.dataMap(taskReportDto,username);
// 4 生成导出的模板数据,导出的文件名称
String reportFile = taskReportDto.getTaskName()+"任务报告.docx";
// 5 生成word文档,保存数据库对应数据id,名称
//taskService.saveTaskReportInfo(taskReportDto.getTaskId(),uploadPath+"任务报告.docx");
// 6 word文档导出浏览器
response.reset();
try {
reportFile = URLEncoder.encode(reportFile,"UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("文件名编码失败", e);
}
log.info("文件名编码成功");
response.setHeader("Content-disposition","attachment; filename=" + reportFile);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/msword");
try (ServletOutputStream outputStream = response.getOutputStream();){
ixDocReport.process(context,outputStream);
//Files.copy(file.toPath(),outputStream);
} catch (IOException e) {
e.printStackTrace();
}
log.info("报告导出成功");
}
}
package com.mmc.tmj.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.TaskDataParam;
import com.mmc.tmj.entity.param.TrackWebDto;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.service.track.TrackFlightSortieInfoService;
import com.mmc.tmj.service.track.TrackService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.awt.image.RasterFormatException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/12 9:57
* @Version 1.0
* @description
*/
@RestController
@RequestMapping(path = "Track")
@Api(tags = "航迹")
@Validated
@Slf4j
public class TrackController {
/**
* 获取飞机实时数据1
*
* @param deviceHardIds
* @return
*/
@Autowired
private StringRedisTemplate redisUserTemplate;
@Autowired
private TrackService trackService;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private TrackFlightSortieInfoService trackFlightSortieInfoService;
@PostMapping
@ApiOperation("接收航轨")
public void create(TrackWebDto trackWebDto){
trackService.create(trackWebDto);
}
/**
* 地面站上报数据(关联任务id)
*/
@SneakyThrows
@GetMapping("/getAircraftFlightSortieData")
@ApiOperation("地面站上报数据")
public BaseResponse getAircraftFlightSortieData(@RequestParam("flightSortieInfo") String flightSortieInfo){
DataObj dataObj=trackService.getAircraftFlightSortieData(objectMapper.readValue(flightSortieInfo, TaskDataParam.class));
return BaseResponse.ok(dataObj);
}
@GetMapping(value = "/pan")
@ApiOperation("判断表")
public BaseResponse getAircraftLatestDataByDeviceHardId(String tableName){
return BaseResponse.ok(trackFlightSortieInfoService.isExitTable(tableName));
}
@GetMapping(value = "/getLatestDataByDeviceHardId")
@ApiOperation("获取飞机实时数据")
public BaseResponse<Map<String, String>> getAircraftLatestDataByDeviceHardId(String deviceHardId,String appid){
Map<String, String> map = new HashMap<>();
map.put(deviceHardId,redisUserTemplate.opsForValue().get("latest_data_"+appid+"_"+deviceHardId));
return BaseResponse.ok(null);
}
@GetMapping("/getAircraftData")
// @ApiOperation("获取飞机实时数据")
public BaseResponse<String> getAircraftData(String deviceHardId,String appid){
String body=trackService.getAircraftData(deviceHardId,appid);
return BaseResponse.ok(body);
}
@PostMapping("/getGroundStationByIdData")
// @ApiOperation("地面站上报数据(关联任务id)")
public BaseResponse<String> getGroundStationByIdData(@RequestParam("flightSortieInfo") String flightSortieInfo,
HttpServletRequest request){
String body=trackService.getGroundStationByIdData(flightSortieInfo,request);
return BaseResponse.ok(body);
}
@PostMapping("/getGroundStationData")
// @ApiOperation("地面站上报数据(不关联任务id)")
public BaseResponse<String> getGroundStationData(@RequestBody Map<String,String> map,HttpServletRequest request){
String body=trackService.getGroundStationData(map,request);
return BaseResponse.ok(body);
}
}
package com.mmc.tmj.controller;
import com.mmc.tmj.entity.response.BaseNumListVo;
import com.mmc.tmj.entity.response.FlyManListMapVo;
import com.mmc.tmj.entity.response.TrainPointBaseInfo;
import com.mmc.tmj.entity.response.TrainPointListMapVo;
import com.mmc.tmj.entity.response.TrainPointListSimpleVo;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.utils.BeanTransFormUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author lcz
* @Date 2022/5/21 16:57
* @Version 1.0
* @description
*/
@Api(tags = "培训网点")
@Validated
@Slf4j
@RequestMapping("/trainPoint")
@RestController
public class TrainPointController {
@Autowired
private Map<String, List<Map<String,Object>>> sumalationData;
//@GetMapping("/getTrainPointNum")
public BaseResponse<List<BaseNumListVo>> getTrainPointNum(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
@GetMapping("/getTrainPointListMap")
@ApiOperation("获取培训网点数据列表")
public BaseResponse<List<TrainPointListMapVo>> getTrainPointListMap(@Valid @NotNull @RequestParam Integer accountId){
List<Map<String, Object>> flyer = sumalationData.get("train");
final int[] i = {0};
List<TrainPointListMapVo> mmc1 = flyer.stream().map((map) -> {
i[0] = i[0] +1;
return BeanTransFormUtil.transTrainPointListMapVoByMap(map, ""+i[0]);
}).collect(Collectors.toList());
return BaseResponse.ok(mmc1);
}
//@GetMapping("/getTrainPointListSimple")
public BaseResponse<List<TrainPointListSimpleVo>> getTrainPointListSimple(@Valid @NotNull @RequestParam Integer accountId){
return BaseResponse.ok(null);
}
//@GetMapping("/getTrainPointInfo")
public BaseResponse<TrainPointBaseInfo> getTrainPointInfo(@Valid @NotNull @RequestParam Integer accountId,@Valid @NotNull @RequestParam Integer id){
return BaseResponse.ok(null);
}
}
package com.mmc.tmj.entity.database;
import com.mmc.tmj.enums.ActionType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 10:21
* @Version 1.0
* @description
*/
@Entity
@Data
@Table(name = "action")
public class ActionDo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private ActionType type;
@Column(nullable = false)
private Integer takeSecond;
}
package com.mmc.tmj.entity.database;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/17 16:33
* @Version 1.0
* @description
*/
@Data
@Entity
public class DeviceDo {
@Id
@GeneratedValue
private Integer id;
/** 设备名称 */
@Column(name = "name")
private String name;
/** 设备硬件id */
private String deviceHardId;
/** 设备序列号 */
private String deviceSerial;
/** 设备HashId */
private String deviceHashId;
/** 状态 (0:离线,1:在线,99:删除) */
private Integer status;
}
package com.mmc.tmj.entity.database;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/23 14:48
* @Version 1.0
* @description
*/
@Data
public class DeviceList {
private Integer device_id;
private String deviceName;
private String deviceSerial;
private String deviceHardId;
private String deviceHashId;
private Integer socketStatus;
}
package com.mmc.tmj.entity.database;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/17 15:32
* @Version 1.0
* @description
*/
@Entity
@Data
public class GISMapDo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
private double latitude;
private double longitude;
private String unit;
private String address;
}
package com.mmc.tmj.entity.database;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/14 14:10
* @Version 1.0
* @description
*/
@Entity
@Data
public class PhotographDo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
/*任务id*/
private Integer taskId;
/** 图片地址 */
private String images;
/** 设备id */
private String deviceHardId;
/** 时间 */
private String createTime;
}
package com.mmc.tmj.entity.database;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.PathType;
import com.querydsl.core.types.dsl.EntityPathBase;
import com.querydsl.core.types.dsl.PathInits;
import com.querydsl.core.types.dsl.StringPath;
import javax.annotation.Generated;
import javax.annotation.Nullable;
import net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable;
/**
* @Author lcz
* @Date 2022/5/12 10:51
* @Version 1.0
* @description
*/
//生成对象的唯一标识
@Generated("com.querydsl.codegen.EntitySerializer")
public class QTaskDo extends EntityPathBase<TaskDto> {
public static final QTaskDo taskDo = new QTaskDo("taskDo");
public StringPath taskName = null;
public StringPath taskStatus = null;
public QTaskDo(String variable) {
super(TaskDto.class, new PathMetadata(null, variable, PathType.VARIABLE));
}
public QTaskDo(Class<? extends TaskDto> type, String variable) {
super(type, variable);
}
public QTaskDo(Class<? extends TaskDto> type, PathMetadata metadata) {
super(type, metadata);
}
public QTaskDo(Class<? extends TaskDto> type, PathMetadata metadata,
@Nullable PathInits inits) {
super(type, metadata, inits);
}
}
package com.mmc.tmj.entity.database;
import java.time.LocalDateTime;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import lombok.Data;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
/**
* @Author lcz
* @Date 2022/5/16 10:12
* @Version 1.0
* @description
*/
@Entity
@Data
@Table(name = "route")
public class RouteDo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
private Double defaultAltitude;
private Double defaultSpeed;
private Double defaultYawAngle;
private Double defaultPitchAngle;
@OneToMany(
cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE},
fetch = FetchType.EAGER,
orphanRemoval = false)
@JoinColumn(name = "route_id")
@Fetch(FetchMode.SUBSELECT)
private List<RoutePointDo> points;
private LocalDateTime createWhen;
private String remark;
}
package com.mmc.tmj.entity.database;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import lombok.Data;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
/**
* @Author lcz
* @Date 2022/5/16 10:17
* @Version 1.0
* @description
*/
@Data
@Entity
@Table(name = "route_point")
public class RoutePointDo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
/** 航点唯一标识,由前端生成 */
private String uuid;
/** 纬度,目前单位都是度 */
private Double latitude;
/** 纬度,目前单位都是度 */
private Double longitude;
/** 海拔高度,可能叫elevation更为准确,目前海拔高度的单位都是米 */
private Double altitude;
/** 偏航角度;暂时没有必要拆成值对象 */
private Double yawAngle;
/** 俯仰角度;暂时没有必要拆成值对象 */
private Double pitchAngle;
/** 航点速度 */
private Double speed;
/** 航点动作 */
@OneToMany(
cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE},
fetch = FetchType.EAGER,
orphanRemoval = true)
@Fetch(FetchMode.SUBSELECT)
@JoinColumn(name = "point_id")
private List<ActionDo> actions;
}
package com.mmc.tmj.entity.database;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
/**
* @Author lcz
* @Date 2022/5/21 14:51
* @Version 1.0
* @description
*/
@Entity
@Data
@Table(name = "mmc_run_project")
@DynamicUpdate
@DynamicInsert
public class RunProjectDo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
//运行项目名称
private String projectName;
//运行项目简介
private String projectDescript;
//运行项目地址
private String projectAddress;
//经度
private Double latitude;
//纬度
private Double longitude;
}
package com.mmc.tmj.entity.database;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
/**
* @Author lcz
* @Date 2022/5/9 9:48
* @Version 1.0
* @description
*/
@Entity
@Data
@DynamicUpdate
@DynamicInsert
public class TaskDto {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
/** 任务名称 */
private String taskName;
/** 航线名称 */
private String routeName;
/** 责任单位名称 */
private String organizationName;
/** 设备id */
private Integer deviceId;
/** 设备名称 */
private String deviceName;
/** 设备硬件ID */
private String deviceHardId;
/** 设备在线状态(0:离线1:在线) */
private Integer deviceStatus;
/** 任务描述 */
private String remark;
/** 任务状态 */
private Integer taskStatus;
/** 经度 */
// private String lng;
/** 纬度 */
// private String lat;
/** 任务创建时间 */
private String addTime;
/** 任务开始时间 */
private String startTime;
/** 任务结束时间 */
private String endTime;
}
package com.mmc.tmj.entity.database;
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/17 17:55
* @Version 1.0
* @description
*/
@Data
@Entity
public class TrackDo {
@Id
private Integer id;
/** 系统编码 */
private String systemCode;
/** 设备类型:1无人机 2地面站 3挂载 */
private String deviceType;
/** 设备id */
private String deviceHardId;
/** 飞行架次 */
private String flightSortie;
/** 上报数据(源数据) */
private String data;
/** 上报时间 */
private Integer time;
}
package com.mmc.tmj.entity.other;
import com.mmc.tmj.enums.ActionType;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 15:40
* @Version 1.0
* @description
*/
@Data
public class ActionFormat {
/** 动作参数[STAY:0~32000毫秒,ROTATE_AIRCRAFT:-180~180,GIMBAL_PITCH:0~-90,其他为1] */
private Integer actionParam;
/**
* 动作类型[STAY:悬停,ROTATE_AIRCRAFT:无人机偏航角,GIMBAL_PITCH:云台俯仰角,START_TAKE_PHOTO:拍照,START_RECORD:开始录像,STOP_RECORD:结束
*/
private ActionType actionType;
}
package com.mmc.tmj.entity.other;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/12 17:17
* @Version 1.0
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataObj<T> {
private String message;
private String status;
private T data;
}
package com.mmc.tmj.entity.other;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 15:56
* @Version 1.0
* @description
*/
@Data
public class LineFormat {
/** 航线高度 */
private Double baseAltitude;
/** 航线速度 */
private Double baseSpeed;
/** 通道速度[如果是杆塔巡检,2塔之间的通道就使用此速度] */
private String channelSpeed;
private String coordinates;
/** 遥控器丢失是否退出航线任务[退出:true,继续任务:false] */
private String exitMissionOnRCSignalLost;
/** 航线任务完成后的动作[自动返航:GO_HOME,悬停:NO_ACTION,原地降落:AUTO_LAND 返回航线起始点:GO_FIRST_WAYPOINT ] */
private String finishedAction;
/** 云台控制模式[使用航点控制:true,手动控制:false] */
private String gimbalPitchRotation;
/** 机头模式[使用航点设置:USING_WAYPOINT_HEADING,沿航线方向:AUTO,手动控制:CONTROL_BY_REMOTE_CONTROLLER] */
private String headingMode;
/** 通道速度开关[如果是杆塔巡检 true:2塔之间的通道就使用通道速度 ,false:使用baseSpeed] */
private String useChannelSpeed;
}
package com.mmc.tmj.entity.other;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/12 15:51
* @Version 1.0
* @description
*/
@Data
public class LoginTokenInfo {
private String mmc_identity;
private String FLYINGSESSIONID;
}
package com.mmc.tmj.entity.other;
import java.util.List;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 15:40
* @Version 1.0
* @description
*/
@Data
public class PointFormat {
/*航点动作数据组*/
private List<ActionFormat> actions;
/** 航点高度 */
private Double alt;
/** 航点描述 */
private String describe;
/** 航点获取途径(用什么方式获取)[0:未知,1:GPS,2:RTK,3:手动,4:点云] */
private String getStatus;
/** 云台俯仰角度 */
private Double gimbalPitch;
/** 高度模式[相对高度:true */
private String isRelativeAltitude;
/** 航点是否显示 */
private String isShow;
/*是否使用航线高度 [使用line中的baseAltitude高度:true,使用航点的alt高度:false]*/
private String isUseWaylineAltitude;
private Double lat;
private Double lon;
/** 飞机偏航角 */
private Double pitch;
/** 航点类型 [起始点:1,正常航点(任务点):2,辅助点:3,终止点:4] */
private Double pointType;
/** 飞机偏航时的方向 [顺时针:CLOCKWISE,逆时针:COUNTER_CLOCKWISE,自动:AUTO] */
private Double turnMode;
}
package com.mmc.tmj.entity.other;
import com.mmc.tmj.utils.GpsUtils;
import lombok.Value;
/**
* @Author lcz
* @Date 2022/5/17 14:33
* @Version 1.0
* @description
*/
@Value
public class Position {
/** 纬度,目前单位都是度 */
private double latitude;
/** 经度,目前单位都是度 */
private double longitude;
/** 海拔高度,可能叫elevation更为准确,目前海拔高度的单位都是米 */
private double altitude;
public double kmBetween(Position lastPosition) {
return GpsUtils.getKmDistance(
latitude, longitude, lastPosition.getLatitude(), lastPosition.getLongitude());
}
}
package com.mmc.tmj.entity.other;
import java.util.List;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 15:39
* @Version 1.0
* @description
*/
@Data
public class RouteFormat {
private List<PointFormat> points;
private String fileName;
private LineFormat line;
}
package com.mmc.tmj.entity.other;
import com.mmc.tmj.enums.ActionType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 15:03
* @Version 1.0
* @description
*/
@Data
@ApiModel(description = "航线上传格式")
public class RouteUploadDto {
private String name;
@DecimalMin("1")
@DecimalMax("150")
private Double defaultAltitude;
@DecimalMin("1")
@DecimalMax("26")
private Double defaultSpeed;
private Double defaultYawAngle;
private Double defaultPitchAngle;
private List<RoutePointUploadDto> points;
@ApiModelProperty(value = "航线备注")
private String remark;
@Data
@ApiModel(description = "航线内航点上传格式")
public static class RoutePointUploadDto{
@ApiModelProperty(value = "航点唯一标识(请自行生成)", required = true, example = "xxxxxxxxx")
private String uuid;
@ApiModelProperty(value = "经度(单位度),西经为负", example = "26.8764")
private Double latitude;
/** 纬度 */
@ApiModelProperty(value = "纬度(单位度),南纬为负", example = "26.8764")
private Double longitude;
/** 高度(单位M) */
@ApiModelProperty(value = "高度(单位M)", example = "20")
@DecimalMin("1")
@DecimalMax("150")
private Double altitude;
/** 偏航角度,目前单位都是度;暂时没有必要拆成值对象 */
@ApiModelProperty(value = "偏航角度", example = "-20")
private Double yawAngle;
/** 俯仰角度,目前单位都是度;暂时没有必要拆成值对象 */
@ApiModelProperty(value = "俯仰角度", example = "-20")
private Double pitchAngle;
/** 名称,描述 */
@ApiModelProperty(value = "航点名称", example = "起始点")
private String name;
/** 巡检点动作 */
private List<ActionUploadDto> actions;
@DecimalMin("1")
@DecimalMax("26")
private Double speed;
}
@Data
@ApiModel(description = "航线-航点内动作上传格式")
public static class ActionUploadDto{
@ApiModelProperty(value = "动作类型", required = true, example = "STAY")
private ActionType type;
/** 动作耗时,目前单位是second */
@ApiModelProperty(value = "动作参数(单位s)", example = "6")
private Integer takeSecond;
/**
* 拍照数量;
*
* <p>业务逻辑1、仅用于拍照动作 TODO
*/
@ApiModelProperty(value = "照片拍摄数量", example = "6")
private Integer takePhotoNumber;
}
}
package com.mmc.tmj.entity.other;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 16:14
* @Version 1.0
* @description
*/
@Data
@Builder
public class RunProjectDto {
private Integer id;
private String projectName;
private String projectDescript;
}
package com.mmc.tmj.entity.other;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 16:14
* @Version 1.0
* @description
*/
@Data
@Builder
public class RunProjectListDto {
private Integer id;
private String projectName;
private Integer order;
}
package com.mmc.tmj.entity.other;
import lombok.Data;
import lombok.Value;
/**
* @Author lcz
* @Date 2022/5/17 14:30
* @Version 1.0
* @description
*/
@Value
public class SpeedDistanceTuple {
private double speedMs;
private double km;
public static double takeMinute(SpeedDistanceTuple speedDistanceTuple) {
return ((1000 * speedDistanceTuple.getKm()) / speedDistanceTuple.getSpeedMs()) / 60;
}
}
package com.mmc.tmj.entity.other;
import java.util.List;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/18 9:49
* @Version 1.0
* @description
*/
@Data
public class TaskDataParam {
private List<String> flightSorties ;
private String hashID;
}
package com.mmc.tmj.entity.param;
import com.mmc.tmj.enums.ActionType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 11:13
* @Version 1.0
* @description
*/
@Data
@ApiModel(description = "动作模型")
public class ActionWebDto {
@ApiModelProperty(value = "动作类型", example = "STAY")
@NotNull
private ActionType type;
/** 动作耗时,目前单位是second */
@ApiModelProperty(value = "动作耗时(s)或拍照数量(张)", example = "10")
private Integer takeSecond;
/*
* 拍照数量
* */
private Integer takePhotoNumber;
}
package com.mmc.tmj.entity.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/19 15:09
* @Version 1.0
* @description
*/
@Data
@ApiModel("api接口入参")
public class ApiDataParam {
@NotEmpty(message = "开始时间不能为空")
@ApiModelProperty("开始时间")
private String start;
@NotEmpty(message = "结束时间不能为空")
@ApiModelProperty("结束时间")
private String end;
@NotEmpty(message = "hashID不能为空")
@ApiModelProperty("hash id")
private String hashID;
}
package com.mmc.tmj.entity.param;
import javax.validation.constraints.NotBlank;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 15:41
* @Version 1.0
* @description
*/
@Data
public class BaseWebDto {
// 当前登陆账号id
@NotBlank
private Integer accountId;
}
package com.mmc.tmj.entity.param;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/17 15:27
* @Version 1.0
* @description
*/
@Data
public class GISMapWebDto {
//无人机名称
private String name;
// 无人机单位
private String unit;
// 无人机起降场详细地址
private String addresss;
// 纬度
private Double latitude;
// 经度
private Double longitude;
}
package com.mmc.tmj.entity.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/14 16:40
* @Version 1.0
* @description 航线规划web端数据载体
*/
@Data
@ApiModel("航点规划(创建)模型")
public class RouteDataDto {
@ApiModelProperty(value = "航线名称", required = true, example = "xxx")
@NotBlank(message = "航线名称不能为空")
private String name;
@ApiModelProperty(value = "默认高度", example = "10.0")
@DecimalMin("1")
@DecimalMax("150")
private Double defaultAltitude;
@ApiModelProperty(value = "默认速度", example = "10.0")
@DecimalMin("1")
@DecimalMax("26")
private Double defaultSpeed;
@ApiModelProperty(value = "默认偏航角", example = "10.56987")
private Double defaultYawAngle;
@ApiModelProperty(value = "默认俯仰角", example = "10.56987")
private Double defaultPitchAngle;
@Valid
@NotNull(message = "points不能为空")
private List<RoutePointDataDto> points;
}
package com.mmc.tmj.entity.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 11:06
* @Version 1.0
* @description
*/
@Data
@ApiModel(description = "航点规划模型")
public class RoutePointDataDto {
/** 航点唯一标识,由前端生成 */
@ApiModelProperty(value = "航点唯一标识(请自行生成)", required = true, example = "xxxxxxxxx")
private String uuid;
@ApiModelProperty(value = "经度", required = true, example = "-10.56987")
private Double longitude;
@ApiModelProperty(value = "纬度", required = true, example = "-10.56987")
private Double latitude;
@ApiModelProperty(value = "海拔", required = true, example = "10.56987")
@DecimalMin("1")
@DecimalMax("150")
private Double altitude;
@ApiModelProperty(value = "偏航角", example = "10.56987")
private Double yawAngle;
@ApiModelProperty(value = "俯仰角", example = "10.56987")
private Double pitchAngle;
@ApiModelProperty(value = "航点速度(m/s)", example = "10")
@DecimalMin("1")
@DecimalMax("26")
private Double speed;
@Valid
@NotNull
private List<ActionWebDto> actions;
}
package com.mmc.tmj.entity.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 14:59
* @Version 1.0
* @description
*/
@Data
@ApiModel("运行项目web")
public class RunProjectWebDto{
// 当前登陆账号id
@NotNull
private Integer accountId;
@ApiModelProperty(value = "运行项目名称", required = true, example = "xxx")
@NotBlank
private String projectName;
@ApiModelProperty(value = "运行项目简介", required = true, example = "xxx")
private String projectDescript;
}
package com.mmc.tmj.entity.param;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/7 17:56
* @Version 1.0
* @description
*/
@Data
public class TaskWebDto {
/** 任务id */
@ApiModelProperty(value = "任务id")
private Integer id;
/** 任务名称 */
@ApiModelProperty(value = "任务名称", example = "测试任务1")
@NotNull(message = "taskName不能为空")
private String taskName;
/** 航线 */
@ApiModelProperty(value = "航线名称", example = "测试航线1")
@NotNull(message = "routeName不能为空")
private String routeName;
/** 责任部门名称 */
@ApiModelProperty(value = "部门名称", example = "科比特")
@NotNull(message = "organizationName不能为空")
private String organizationName;
/** 无人机id */
@ApiModelProperty(value = "设备id", example = "67")
@NotNull(message = "deviceId不能为空")
private Integer deviceId;
/** 无人机名称 */
@ApiModelProperty(value = "设备名称", example = "入云龙11")
@NotNull(message = "deviceName不能为空")
private String deviceName;
@ApiModelProperty(value = "设备硬件ID", example = "入云龙11")
@NotNull(message = "deviceHardId不能为空")
private String deviceHardId;
/** 无人机状态(0:离线1:在线) */
@ApiModelProperty(value = "设备状态 0:离线 1:在线", example = "1")
@NotNull(message = "deviceStatus不能为空")
private Integer deviceStatus;
/** 任务描述 */
@ApiModelProperty(value = "任务描述", example = "一个任务")
private String remark;
}
package com.mmc.tmj.entity.param;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/17 17:42
* @Version 1.0
* @description
*/
@Data
public class TrackWebDto {
private Integer id;
/** 系统编码 */
private String systemCode;
/** 设备类型:1无人机 2地面站 3挂载 */
private String deviceType;
/** 设备id */
private String deviceHardId;
/** 飞行架次 */
private String flightSortie;
/** 上报数据(源数据) */
private String data;
/** 上报时间 */
private Integer time;
}
package com.mmc.tmj.entity.response;
import com.mmc.tmj.entity.response.province.ProvinceBaseNumListVo;
import com.mmc.tmj.entity.response.province.ProvinceExhibitionPointNumListVo;
import java.util.List;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:29
* @Version 1.0
* @description
*/
@Data
@Builder
public class BaseNumListVo {
private Integer totailNum;
private Integer onlineNum;
private Integer offlineNum;
private List<ProvinceBaseNumListVo> provinceNumList;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 18:02
* @Version 1.0
* @description
*/
@Data
@Builder
public class ExhibitionPointBaseInfo {
private Integer id;
private String exhibitionPointName;
private String exhibitionPointDescript;
private String callMan;
private String callManPhone;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:57
* @Version 1.0
* @description
*/
@Data
@Builder
public class ExhibitionPointListMapVo {
private String exhibitionName;
private String exhibitionAddress;
private Double latitude;
private Double longitude;
private Integer id;
private Integer order;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:59
* @Version 1.0
* @description
*/
@Data
@Builder
public class ExhibitionPointListSimpleVo {
private Integer id;
private String serviceName;
private String servicePointDescript;
}
package com.mmc.tmj.entity.response;
import com.mmc.tmj.entity.response.province.ProvinceExhibitionPointNumListVo;
import com.mmc.tmj.entity.response.province.ProvinceFlyNumListVo;
import java.util.List;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:20
* @Version 1.0
* @description
*/
@Data
@Builder
public class ExhibitionPointNumListVo {
private Integer totailNum;
private Integer onlineNum;
private Integer offlineNum;
private List<ProvinceExhibitionPointNumListVo> provinceExhibitionPointNumList;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:39
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyBaseInfo {
//无人机名称
private String flyName;
//无人机类型
private String flyType;
//无人机id
private Integer id;
//飞行状态
private String flyStatus;
//序列号
private String flySeriaNum;
//联网状态
private String onlineStatus;
//无人机型号
private String flyModel;
private Integer imageType;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:54
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyHealthStatu {
private Integer on;
private Integer total;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17;//43
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyHealthStatuInfo {
private Integer gyroscopeStatus;//陀螺仪状态;
private Integer accelerationStatus;//加速度状态;
private Integer compassStatus;//罗盘状态;
private Integer barometerStatus;//气压计状态;
private Integer rdpStatus;//相对压差状态;
private Integer positiModelStatus;//定位模块状态;
private Integer optailFlowStatus;//光流状态;
private Integer airborneComputerStatus;//机载计算机状态;
private Integer laserPositiStatus;//激光定位模块状态;
private Integer fixeHeightStatus;//定高功能模块状态;
private Integer angularVilocityStatus;//角速度状态;
private Integer headingControlStatus;//航向控制状态;
private Integer verticalPositionStatus;//垂直位置控制状态;
private Integer horizontalPositionStatus;//水平位置控制状态;
private Integer powerStatus;//动力状态;
private Integer remoteControlStatus;//遥控器状态;
private Integer residualGyroscopeStatus;//冗余陀螺仪状态;
private Integer residualAccelerationStatus;// 冗余加速度状态;
private Integer residualCompassStatus;// 冗余罗盘状态;
private Integer electronicFence;//电子围栏功能模块;
private Integer attitudeUnlockStatus;//姿态解锁状态;
private Integer simulatedFlight;//仿地飞行;
private Integer electricMachineryStatus;//电机状态状态;
private Integer loggingStatus;//日志记录状态;
private Integer powerSupplyStatus;//电池及电源状态;
private Integer distanceDetectionStatus;//距离检测状态;
private Integer satelliteCommunication;//卫星通信模块;
private Integer takeOffDetectionStatus;//起飞检测状态;
private Integer obsAvoidanceStatus;//避障功能模块状态;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:38
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyListMapVo {
private FlyBaseInfo flyInfo;
private FlyHealthStatuInfo healthStatuInfo;
private Double latitude;
private Double longitude;
private Integer id;
// 排序
private Integer order;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:53
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyListSimpleVo {
private Integer id;
private String flyName;
private Integer onlineStatus;
private FlyHealthStatu healthStatu;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:57
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyManListMapVo {
private String name;
private String phone;
private Double latitude;
private Double longitude;
private Integer id;
private Integer order;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:59
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyManListSimpleVo {
private Integer id;
private String name;
private String phone;
}
package com.mmc.tmj.entity.response;
import com.mmc.tmj.entity.response.province.ProvinceFlyManNumListVo;
import com.mmc.tmj.entity.response.province.ProvinceFlyNumListVo;
import java.util.List;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:20
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyManNumListVo {
private Integer totailNum;
private Integer onlineNum;
private Integer offlineNum;
private List<ProvinceFlyManNumListVo> provinceFlyManNumList;
}
package com.mmc.tmj.entity.response;
import com.mmc.tmj.entity.response.province.ProvinceFlyNumListVo;
import java.util.List;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:20
* @Version 1.0
* @description
*/
@Data
@Builder
public class FlyNumListVo {
private Integer totailNum;
private Integer onlineNum;
private Integer offlineNum;
private List<ProvinceFlyNumListVo> provinceFlyNumList;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 18:02
* @Version 1.0
* @description
*/
@Data
@Builder
public class ServicePointBaseInfo {
private Integer id;
private String servicePointName;
private String servicePointDescript;
private String callMan;
private String callManPhone;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:57
* @Version 1.0
* @description
*/
@Data
@Builder
public class ServicePointListMapVo {
private String serviceName;
private String serviceAddress;
private Double latitude;
private Double longitude;
private Integer id;
private Integer order;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:59
* @Version 1.0
* @description
*/
@Data
@Builder
public class ServicePointListSimpleVo {
private Integer id;
private String serviceName;
private String servicePointDescript;
}
package com.mmc.tmj.entity.response;
import com.mmc.tmj.entity.response.province.ProvinceFlyNumListVo;
import com.mmc.tmj.entity.response.province.ProvinceServicePointNumListVo;
import java.util.List;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:20
* @Version 1.0
* @description
*/
@Data
@Builder
public class ServicePointNumListVo {
private Integer totailNum;
private Integer onlineNum;
private Integer offlineNum;
private List<ProvinceServicePointNumListVo> provinceServicePointNumList;
}
package com.mmc.tmj.entity.response;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 18:02
* @Version 1.0
* @description
*/
@Data
@Builder
public class TrainPointBaseInfo {
private Integer id;
private String trainPointName;
private String trainPointDescript;
private String callMan;
private String callManPhone;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论