提交 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
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1289296 bytes for Chunk::new
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (allocation.cpp:389), pid=24932, tid=0x000000000000ba6c
#
# JRE version: Java(TM) SE Runtime Environment (8.0_311-b11) (build 1.8.0_311-b11)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.311-b11 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
--------------- T H R E A D ---------------
Current thread (0x000002bbfe40a000): JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=47724, stack(0x000000e464000000,0x000000e464100000)]
Stack: [0x000000e464000000,0x000000e464100000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x32f239]
V [jvm.dll+0x275882]
V [jvm.dll+0x27652d]
V [jvm.dll+0x26cf65]
V [jvm.dll+0xd558c]
V [jvm.dll+0xd5d8c]
V [jvm.dll+0x470b13]
V [jvm.dll+0x438210]
V [jvm.dll+0x441215]
V [jvm.dll+0x4405d5]
V [jvm.dll+0x42b38b]
V [jvm.dll+0xac22b]
V [jvm.dll+0xaa88b]
V [jvm.dll+0x23df22]
V [jvm.dll+0x29253c]
C [ucrtbase.dll+0x2268a]
C [KERNEL32.DLL+0x17974]
C [ntdll.dll+0x5a2f1]
Current CompileTask:
C2: 80052 10976 4 org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradlePomModuleDescriptorBuilder::doAddDependency (381 bytes)
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x000002bb8f161800 JavaThread "Unconstrained build operations Thread 40" [_thread_blocked, id=43992, stack(0x000000e468b00000,0x000000e468c00000)]
0x000002bb8f160800 JavaThread "Unconstrained build operations Thread 39" [_thread_blocked, id=33712, stack(0x000000e468a00000,0x000000e468b00000)]
0x000002bb8f163800 JavaThread "Unconstrained build operations Thread 38" [_thread_blocked, id=18880, stack(0x000000e468900000,0x000000e468a00000)]
0x000002bb8f160000 JavaThread "Unconstrained build operations Thread 37" [_thread_blocked, id=15368, stack(0x000000e468800000,0x000000e468900000)]
0x000002bb8f163000 JavaThread "Unconstrained build operations Thread 36" [_thread_blocked, id=33896, stack(0x000000e468700000,0x000000e468800000)]
0x000002bb8f15c000 JavaThread "Unconstrained build operations Thread 35" [_thread_blocked, id=6464, stack(0x000000e468600000,0x000000e468700000)]
0x000002bb8f15d800 JavaThread "Unconstrained build operations Thread 34" [_thread_blocked, id=46064, stack(0x000000e468500000,0x000000e468600000)]
0x000002bb8f15d000 JavaThread "Unconstrained build operations Thread 33" [_thread_in_native, id=11700, stack(0x000000e468400000,0x000000e468500000)]
0x000002bb8f15f000 JavaThread "Unconstrained build operations Thread 32" [_thread_blocked, id=58648, stack(0x000000e468300000,0x000000e468400000)]
0x000002bb8f162000 JavaThread "Unconstrained build operations Thread 31" [_thread_blocked, id=50776, stack(0x000000e468200000,0x000000e468300000)]
0x000002bb909ea800 JavaThread "Unconstrained build operations Thread 30" [_thread_blocked, id=28240, stack(0x000000e468100000,0x000000e468200000)]
0x000002bb909e9800 JavaThread "Unconstrained build operations Thread 29" [_thread_blocked, id=17352, stack(0x000000e468000000,0x000000e468100000)]
0x000002bb909e9000 JavaThread "Unconstrained build operations Thread 28" [_thread_blocked, id=54476, stack(0x000000e467f00000,0x000000e468000000)]
0x000002bb909e8000 JavaThread "Unconstrained build operations Thread 27" [_thread_blocked, id=45804, stack(0x000000e467e00000,0x000000e467f00000)]
0x000002bb909e7800 JavaThread "Unconstrained build operations Thread 26" [_thread_blocked, id=48836, stack(0x000000e467d00000,0x000000e467e00000)]
0x000002bb909e6800 JavaThread "Unconstrained build operations Thread 25" [_thread_blocked, id=19004, stack(0x000000e467c00000,0x000000e467d00000)]
0x000002bb909de800 JavaThread "Unconstrained build operations Thread 24" [_thread_blocked, id=1060, stack(0x000000e467b00000,0x000000e467c00000)]
0x000002bb909e5000 JavaThread "Unconstrained build operations Thread 23" [_thread_blocked, id=53080, stack(0x000000e467a00000,0x000000e467b00000)]
0x000002bb909e3800 JavaThread "Unconstrained build operations Thread 22" [_thread_blocked, id=16448, stack(0x000000e467900000,0x000000e467a00000)]
0x000002bb909e6000 JavaThread "Cache worker for execution history cache (G:\mmcCode\tmj\.gradle\7.1\executionHistory)" [_thread_blocked, id=52416, stack(0x000000e467800000,0x000000e467900000)]
0x000002bb909e1800 JavaThread "Memory manager" [_thread_blocked, id=59216, stack(0x000000e467400000,0x000000e467500000)]
0x000002bb909e0000 JavaThread "Unconstrained build operations Thread 21" [_thread_blocked, id=12512, stack(0x000000e467300000,0x000000e467400000)]
0x000002bb909e4800 JavaThread "Unconstrained build operations Thread 20" [_thread_blocked, id=54028, stack(0x000000e467200000,0x000000e467300000)]
0x000002bb909dd000 JavaThread "Unconstrained build operations Thread 19" [_thread_blocked, id=16624, stack(0x000000e467100000,0x000000e467200000)]
0x000002bb909df000 JavaThread "Unconstrained build operations Thread 18" [_thread_blocked, id=48420, stack(0x000000e467000000,0x000000e467100000)]
0x000002bb909db800 JavaThread "Unconstrained build operations Thread 17" [_thread_blocked, id=57952, stack(0x000000e466f00000,0x000000e467000000)]
0x000002bb909dc000 JavaThread "Unconstrained build operations Thread 16" [_thread_blocked, id=44396, stack(0x000000e466e00000,0x000000e466f00000)]
0x000002bb909dd800 JavaThread "Unconstrained build operations Thread 15" [_thread_blocked, id=55480, stack(0x000000e466d00000,0x000000e466e00000)]
0x000002bb909e2000 JavaThread "Unconstrained build operations Thread 14" [_thread_blocked, id=13736, stack(0x000000e466c00000,0x000000e466d00000)]
0x000002bb91d4d800 JavaThread "Unconstrained build operations Thread 13" [_thread_blocked, id=44860, stack(0x000000e466b00000,0x000000e466c00000)]
0x000002bb91d4d000 JavaThread "Unconstrained build operations Thread 12" [_thread_blocked, id=45280, stack(0x000000e466a00000,0x000000e466b00000)]
0x000002bb91d51800 JavaThread "Unconstrained build operations Thread 11" [_thread_blocked, id=16564, stack(0x000000e466900000,0x000000e466a00000)]
0x000002bb91d52000 JavaThread "Unconstrained build operations Thread 10" [_thread_blocked, id=51028, stack(0x000000e466800000,0x000000e466900000)]
0x000002bb91d50000 JavaThread "Unconstrained build operations Thread 9" [_thread_blocked, id=12880, stack(0x000000e466700000,0x000000e466800000)]
0x000002bb91d4e800 JavaThread "Unconstrained build operations Thread 8" [_thread_blocked, id=50180, stack(0x000000e466600000,0x000000e466700000)]
0x000002bb91d4c000 JavaThread "Unconstrained build operations Thread 7" [_thread_blocked, id=56656, stack(0x000000e466500000,0x000000e466600000)]
0x000002bb91d4f000 JavaThread "Unconstrained build operations Thread 6" [_thread_blocked, id=56552, stack(0x000000e466400000,0x000000e466500000)]
0x000002bb91d50800 JavaThread "Unconstrained build operations Thread 5" [_thread_blocked, id=29908, stack(0x000000e466300000,0x000000e466400000)]
0x000002bb91d45800 JavaThread "Unconstrained build operations Thread 4" [_thread_blocked, id=57252, stack(0x000000e466200000,0x000000e466300000)]
0x000002bb91d4b800 JavaThread "Unconstrained build operations Thread 3" [_thread_blocked, id=38224, stack(0x000000e466100000,0x000000e466200000)]
0x000002bb91d4a800 JavaThread "Unconstrained build operations Thread 2" [_thread_blocked, id=13760, stack(0x000000e466000000,0x000000e466100000)]
0x000002bb91d46000 JavaThread "Unconstrained build operations" [_thread_blocked, id=21812, stack(0x000000e465f00000,0x000000e466000000)]
0x000002bb91d43000 JavaThread "Cache worker for Build Output Cleanup Cache (G:\mmcCode\tmj\.gradle\buildOutputCleanup)" [_thread_blocked, id=55252, stack(0x000000e465e00000,0x000000e465f00000)]
0x000002bb91d44000 JavaThread "Cache worker for dependencies-accessors (G:\mmcCode\tmj\.gradle\7.1\dependencies-accessors)" [_thread_blocked, id=28024, stack(0x000000e465d00000,0x000000e465e00000)]
0x000002bb91d44800 JavaThread "Cache worker for file content cache (E:\huzhiyou\gradle-7.3\caches\7.1\fileContent)" [_thread_blocked, id=34784, stack(0x000000e465c00000,0x000000e465d00000)]
0x000002bb91d48800 JavaThread "Cache worker for execution history cache (E:\huzhiyou\gradle-7.3\caches\7.1\executionHistory)" [_thread_blocked, id=15824, stack(0x000000e465b00000,0x000000e465c00000)]
0x000002bb91d47000 JavaThread "Cache worker for cache directory md-rule (E:\huzhiyou\gradle-7.3\caches\7.1\md-rule)" [_thread_blocked, id=11992, stack(0x000000e465a00000,0x000000e465b00000)]
0x000002bb91d49000 JavaThread "Cache worker for cache directory md-supplier (E:\huzhiyou\gradle-7.3\caches\7.1\md-supplier)" [_thread_blocked, id=23888, stack(0x000000e465900000,0x000000e465a00000)]
0x000002bb91d4a000 JavaThread "Cache worker for checksums cache (G:\mmcCode\tmj\.gradle\checksums)" [_thread_blocked, id=13188, stack(0x000000e465800000,0x000000e465900000)]
0x000002bb91bac000 JavaThread "jar transforms Thread 4" [_thread_blocked, id=32624, stack(0x000000e465700000,0x000000e465800000)]
0x000002bb91bab000 JavaThread "jar transforms Thread 3" [_thread_blocked, id=5268, stack(0x000000e465600000,0x000000e465700000)]
0x000002bb91ba9000 JavaThread "jar transforms Thread 2" [_thread_blocked, id=19776, stack(0x000000e465500000,0x000000e465600000)]
0x000002bb91baa800 JavaThread "jar transforms" [_thread_blocked, id=53436, stack(0x000000e465400000,0x000000e465500000)]
0x000002bb91ba8000 JavaThread "File watcher consumer" daemon [_thread_blocked, id=12560, stack(0x000000e465300000,0x000000e465400000)]
0x000002bb91bae000 JavaThread "File watcher server" daemon [_thread_in_native, id=13660, stack(0x000000e465200000,0x000000e465300000)]
0x000002bb91bad800 JavaThread "Cache worker for file hash cache (G:\mmcCode\tmj\.gradle\7.1\fileHashes)" [_thread_blocked, id=16940, stack(0x000000e465100000,0x000000e465200000)]
0x000002bb91baf000 JavaThread "Cache worker for file hash cache (E:\huzhiyou\gradle-7.3\caches\7.1\fileHashes)" [_thread_blocked, id=38360, stack(0x000000e465000000,0x000000e465100000)]
0x000002bb91bac800 JavaThread "File lock request listener" [_thread_in_native, id=45288, stack(0x000000e464f00000,0x000000e465000000)]
0x000002bb91ba9800 JavaThread "Cache worker for journal cache (E:\huzhiyou\gradle-7.3\caches\journal-1)" [_thread_blocked, id=57092, stack(0x000000e464e00000,0x000000e464f00000)]
0x000002bb8fe2e000 JavaThread "Daemon client event forwarder" [_thread_blocked, id=13868, stack(0x000000e464d00000,0x000000e464e00000)]
0x000002bb8fe15800 JavaThread "Asynchronous log dispatcher for DefaultDaemonConnection: socket connection from /127.0.0.1:64959 to /127.0.0.1:64960" [_thread_blocked, id=50500, stack(0x000000e464b00000,0x000000e464c00000)]
0x000002bb8fdce000 JavaThread "Daemon worker" [_thread_blocked, id=14660, stack(0x000000e464a00000,0x000000e464b00000)]
0x000002bb8fdcd800 JavaThread "Cancel handler" [_thread_blocked, id=2996, stack(0x000000e464900000,0x000000e464a00000)]
0x000002bb8fd76800 JavaThread "Handler for socket connection from /127.0.0.1:64959 to /127.0.0.1:64960" [_thread_in_native, id=57464, stack(0x000000e464800000,0x000000e464900000)]
0x000002bb8fd75800 JavaThread "Daemon" [_thread_blocked, id=32796, stack(0x000000e464700000,0x000000e464800000)]
0x000002bb8fd62000 JavaThread "Daemon periodic checks" [_thread_blocked, id=45152, stack(0x000000e464600000,0x000000e464700000)]
0x000002bb8fd56000 JavaThread "Incoming local TCP Connector on port 64959" [_thread_in_native, id=20448, stack(0x000000e464500000,0x000000e464600000)]
0x000002bb8fcb1000 JavaThread "Daemon health stats" [_thread_blocked, id=17284, stack(0x000000e464400000,0x000000e464500000)]
0x000002bbfe471800 JavaThread "Service Thread" daemon [_thread_blocked, id=49104, stack(0x000000e464200000,0x000000e464300000)]
0x000002bbfe466800 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=49644, stack(0x000000e464100000,0x000000e464200000)]
=>0x000002bbfe40a000 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=47724, stack(0x000000e464000000,0x000000e464100000)]
0x000002bbfe3b3800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=57368, stack(0x000000e463f00000,0x000000e464000000)]
0x000002bbfe3b3000 JavaThread "Attach Listener" daemon [_thread_blocked, id=35600, stack(0x000000e463e00000,0x000000e463f00000)]
0x000002bbfe406800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=21200, stack(0x000000e463d00000,0x000000e463e00000)]
0x000002bbfdc5a000 JavaThread "Finalizer" daemon [_thread_blocked, id=43088, stack(0x000000e463c00000,0x000000e463d00000)]
0x000002bbfe386000 JavaThread "Reference Handler" daemon [_thread_blocked, id=34856, stack(0x000000e463b00000,0x000000e463c00000)]
0x000002bbfa456000 JavaThread "main" [_thread_blocked, id=14292, stack(0x000000e463500000,0x000000e463600000)]
Other Threads:
0x000002bbfe363000 VMThread [stack: 0x000000e463a00000,0x000000e463b00000] [id=50256]
0x000002bbfe481800 WatcherThread [stack: 0x000000e464300000,0x000000e464400000] [id=36456]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
heap address: 0x00000000e0000000, size: 512 MB, Compressed Oops mode: 32-bit
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
Compressed class space size: 1073741824 Address: 0x0000000100000000
Heap:
PSYoungGen total 151040K, used 146769K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
eden space 134656K, 97% used [0x00000000f5580000,0x00000000fd562d30,0x00000000fd900000)
from space 16384K, 96% used [0x00000000ff000000,0x00000000fff71718,0x0000000100000000)
to space 19968K, 0% used [0x00000000fd900000,0x00000000fd900000,0x00000000fec80000)
ParOldGen total 225792K, used 34466K [0x00000000e0000000, 0x00000000edc80000, 0x00000000f5580000)
object space 225792K, 15% used [0x00000000e0000000,0x00000000e21a8840,0x00000000edc80000)
Metaspace used 68127K, capacity 71914K, committed 72024K, reserved 1112064K
class space used 9409K, capacity 10105K, committed 10112K, reserved 1048576K
Card table byte_map: [0x000002bbfc090000,0x000002bbfc1a0000] byte_map_base: 0x000002bbfb990000
Marking Bits: (ParMarkBitMap*) 0x0000000060548030
Begin Bits: [0x000002bbfc250000, 0x000002bbfca50000)
End Bits: [0x000002bbfca50000, 0x000002bbfd250000)
Polling page: 0x000002bbfa400000
CodeCache: size=245760Kb used=30286Kb max_used=30286Kb free=215473Kb
bounds [0x000002bb80000000, 0x000002bb81dd0000, 0x000002bb8f000000]
total_blobs=10116 nmethods=9271 adapters=756
compilation: enabled
Compilation events (10 events):
Event: 79.671 Thread 0x000002bbfe466800 nmethod 10971 0x000002bb81d98f90 code [0x000002bb81d990e0, 0x000002bb81d991f8]
Event: 79.671 Thread 0x000002bbfe466800 10972 1 org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradlePomModuleDescriptorBuilder::getComponentIdentifier (5 bytes)
Event: 79.671 Thread 0x000002bbfe40a000 10976 4 org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradlePomModuleDescriptorBuilder::doAddDependency (381 bytes)
Event: 79.671 Thread 0x000002bbfe466800 nmethod 10972 0x000002bb81d96a90 code [0x000002bb81d96be0, 0x000002bb81d96cf8]
Event: 79.671 Thread 0x000002bbfe466800 10973 1 org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradlePomModuleDescriptorBuilder::getStatus (5 bytes)
Event: 79.671 Thread 0x000002bbfe466800 nmethod 10973 0x000002bb81d967d0 code [0x000002bb81d96920, 0x000002bb81d96a38]
Event: 79.671 Thread 0x000002bbfe466800 10974 1 org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository::lambda$static$0 (2 bytes)
Event: 79.671 Thread 0x000002bbfe466800 nmethod 10974 0x000002bb81d96510 code [0x000002bb81d96660, 0x000002bb81d96758]
Event: 79.671 Thread 0x000002bbfe466800 10975 1 org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.DefaultParseResult::hasGradleMetadataRedirectionMarker (5 bytes)
Event: 79.671 Thread 0x000002bbfe466800 nmethod 10975 0x000002bb81d96250 code [0x000002bb81d963a0, 0x000002bb81d964b8]
GC Heap History (10 events):
Event: 12.535 GC heap before
{Heap before GC invocations=23 (full 2):
PSYoungGen total 156160K, used 146005K [0x00000000f5580000, 0x00000000ffe00000, 0x0000000100000000)
eden space 141824K, 100% used [0x00000000f5580000,0x00000000fe000000,0x00000000fe000000)
from space 14336K, 29% used [0x00000000ff000000,0x00000000ff4154e8,0x00000000ffe00000)
to space 15360K, 0% used [0x00000000fe000000,0x00000000fe000000,0x00000000fef00000)
ParOldGen total 175104K, used 28488K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5580000)
object space 175104K, 16% used [0x00000000e0000000,0x00000000e1bd2328,0x00000000eab00000)
Metaspace used 52725K, capacity 55998K, committed 56064K, reserved 1097728K
class space used 7590K, capacity 8178K, committed 8192K, reserved 1048576K
Event: 12.543 GC heap after
Heap after GC invocations=23 (full 2):
PSYoungGen total 157184K, used 8045K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
eden space 141824K, 0% used [0x00000000f5580000,0x00000000f5580000,0x00000000fe000000)
from space 15360K, 52% used [0x00000000fe000000,0x00000000fe7db4a8,0x00000000fef00000)
to space 15360K, 0% used [0x00000000ff100000,0x00000000ff100000,0x0000000100000000)
ParOldGen total 175104K, used 30304K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5580000)
object space 175104K, 17% used [0x00000000e0000000,0x00000000e1d98358,0x00000000eab00000)
Metaspace used 52725K, capacity 55998K, committed 56064K, reserved 1097728K
class space used 7590K, capacity 8178K, committed 8192K, reserved 1048576K
}
Event: 13.487 GC heap before
{Heap before GC invocations=24 (full 2):
PSYoungGen total 157184K, used 51776K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
eden space 141824K, 30% used [0x00000000f5580000,0x00000000f8034f00,0x00000000fe000000)
from space 15360K, 52% used [0x00000000fe000000,0x00000000fe7db4a8,0x00000000fef00000)
to space 15360K, 0% used [0x00000000ff100000,0x00000000ff100000,0x0000000100000000)
ParOldGen total 175104K, used 30304K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5580000)
object space 175104K, 17% used [0x00000000e0000000,0x00000000e1d98358,0x00000000eab00000)
Metaspace used 55421K, capacity 59022K, committed 59096K, reserved 1099776K
class space used 7990K, capacity 8689K, committed 8704K, reserved 1048576K
Event: 13.495 GC heap after
Heap after GC invocations=24 (full 2):
PSYoungGen total 158208K, used 3093K [0x00000000f5580000, 0x00000000fff00000, 0x0000000100000000)
eden space 143872K, 0% used [0x00000000f5580000,0x00000000f5580000,0x00000000fe200000)
from space 14336K, 21% used [0x00000000ff100000,0x00000000ff4055d8,0x00000000fff00000)
to space 14848K, 0% used [0x00000000fe200000,0x00000000fe200000,0x00000000ff080000)
ParOldGen total 175104K, used 36752K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5580000)
object space 175104K, 20% used [0x00000000e0000000,0x00000000e23e43a8,0x00000000eab00000)
Metaspace used 55421K, capacity 59022K, committed 59096K, reserved 1099776K
class space used 7990K, capacity 8689K, committed 8704K, reserved 1048576K
}
Event: 13.495 GC heap before
{Heap before GC invocations=25 (full 3):
PSYoungGen total 158208K, used 3093K [0x00000000f5580000, 0x00000000fff00000, 0x0000000100000000)
eden space 143872K, 0% used [0x00000000f5580000,0x00000000f5580000,0x00000000fe200000)
from space 14336K, 21% used [0x00000000ff100000,0x00000000ff4055d8,0x00000000fff00000)
to space 14848K, 0% used [0x00000000fe200000,0x00000000fe200000,0x00000000ff080000)
ParOldGen total 175104K, used 36752K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5580000)
object space 175104K, 20% used [0x00000000e0000000,0x00000000e23e43a8,0x00000000eab00000)
Metaspace used 55421K, capacity 59022K, committed 59096K, reserved 1099776K
class space used 7990K, capacity 8689K, committed 8704K, reserved 1048576K
Event: 13.681 GC heap after
Heap after GC invocations=25 (full 3):
PSYoungGen total 158208K, used 0K [0x00000000f5580000, 0x00000000fff00000, 0x0000000100000000)
eden space 143872K, 0% used [0x00000000f5580000,0x00000000f5580000,0x00000000fe200000)
from space 14336K, 0% used [0x00000000ff100000,0x00000000ff100000,0x00000000fff00000)
to space 14848K, 0% used [0x00000000fe200000,0x00000000fe200000,0x00000000ff080000)
ParOldGen total 225792K, used 34378K [0x00000000e0000000, 0x00000000edc80000, 0x00000000f5580000)
object space 225792K, 15% used [0x00000000e0000000,0x00000000e2192830,0x00000000edc80000)
Metaspace used 55291K, capacity 58764K, committed 59096K, reserved 1099776K
class space used 7951K, capacity 8624K, committed 8704K, reserved 1048576K
}
Event: 38.492 GC heap before
{Heap before GC invocations=26 (full 3):
PSYoungGen total 158208K, used 143872K [0x00000000f5580000, 0x00000000fff00000, 0x0000000100000000)
eden space 143872K, 100% used [0x00000000f5580000,0x00000000fe200000,0x00000000fe200000)
from space 14336K, 0% used [0x00000000ff100000,0x00000000ff100000,0x00000000fff00000)
to space 14848K, 0% used [0x00000000fe200000,0x00000000fe200000,0x00000000ff080000)
ParOldGen total 225792K, used 34378K [0x00000000e0000000, 0x00000000edc80000, 0x00000000f5580000)
object space 225792K, 15% used [0x00000000e0000000,0x00000000e2192830,0x00000000edc80000)
Metaspace used 64887K, capacity 68492K, committed 68824K, reserved 1107968K
class space used 9170K, capacity 9858K, committed 9984K, reserved 1048576K
Event: 38.501 GC heap after
Heap after GC invocations=26 (full 3):
PSYoungGen total 158208K, used 14219K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
eden space 143872K, 0% used [0x00000000f5580000,0x00000000f5580000,0x00000000fe200000)
from space 14336K, 99% used [0x00000000fe200000,0x00000000fefe2e68,0x00000000ff000000)
to space 16384K, 0% used [0x00000000ff000000,0x00000000ff000000,0x0000000100000000)
ParOldGen total 225792K, used 34458K [0x00000000e0000000, 0x00000000edc80000, 0x00000000f5580000)
object space 225792K, 15% used [0x00000000e0000000,0x00000000e21a6840,0x00000000edc80000)
Metaspace used 64887K, capacity 68492K, committed 68824K, reserved 1107968K
class space used 9170K, capacity 9858K, committed 9984K, reserved 1048576K
}
Event: 59.434 GC heap before
{Heap before GC invocations=27 (full 3):
PSYoungGen total 158208K, used 158091K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
eden space 143872K, 100% used [0x00000000f5580000,0x00000000fe200000,0x00000000fe200000)
from space 14336K, 99% used [0x00000000fe200000,0x00000000fefe2e68,0x00000000ff000000)
to space 16384K, 0% used [0x00000000ff000000,0x00000000ff000000,0x0000000100000000)
ParOldGen total 225792K, used 34458K [0x00000000e0000000, 0x00000000edc80000, 0x00000000f5580000)
object space 225792K, 15% used [0x00000000e0000000,0x00000000e21a6840,0x00000000edc80000)
Metaspace used 67235K, capacity 71078K, committed 71256K, reserved 1110016K
class space used 9354K, capacity 10057K, committed 10112K, reserved 1048576K
Event: 59.444 GC heap after
Heap after GC invocations=27 (full 3):
PSYoungGen total 151040K, used 15813K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
eden space 134656K, 0% used [0x00000000f5580000,0x00000000f5580000,0x00000000fd900000)
from space 16384K, 96% used [0x00000000ff000000,0x00000000fff71718,0x0000000100000000)
to space 19968K, 0% used [0x00000000fd900000,0x00000000fd900000,0x00000000fec80000)
ParOldGen total 225792K, used 34466K [0x00000000e0000000, 0x00000000edc80000, 0x00000000f5580000)
object space 225792K, 15% used [0x00000000e0000000,0x00000000e21a8840,0x00000000edc80000)
Metaspace used 67235K, capacity 71078K, committed 71256K, reserved 1110016K
class space used 9354K, capacity 10057K, committed 10112K, reserved 1048576K
}
Deoptimization events (10 events):
Event: 59.233 Thread 0x000002bb8fdce000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000002bb81780c88 method=com.google.common.collect.ImmutableList.hashCode()I @ 23
Event: 59.233 Thread 0x000002bb8fdce000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000002bb81780c88 method=com.google.common.collect.ImmutableList.hashCode()I @ 23
Event: 59.233 Thread 0x000002bb8fdce000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x000002bb81780c88 method=com.google.common.collect.ImmutableList.hashCode()I @ 23
Event: 59.238 Thread 0x000002bb8fdce000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002bb8188b398 method=com.google.common.cache.LocalCache.isExpired(Lcom/google/common/cache/ReferenceEntry;J)Z @ 9
Event: 59.431 Thread 0x000002bb8fdce000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002bb81a913e0 method=io.spring.gradle.dependencymanagement.org.codehaus.plexus.util.xml.pull.MXParser.nextTag()I @ 10
Event: 59.611 Thread 0x000002bb8fdce000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002bb81883e00 method=io.spring.gradle.dependencymanagement.org.codehaus.plexus.util.xml.pull.MXParser.isS(C)Z @ 21
Event: 60.871 Thread 0x000002bb8fdce000 Uncommon trap: reason=null_check action=make_not_entrant pc=0x000002bb81c25960 method=org.gradle.internal.classpath.Instrumented$DecoratingEntrySet$1.computeNext()Ljava/util/Map$Entry; @ 16
Event: 60.921 Thread 0x000002bb8fdce000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002bb81a60ad0 method=com.esotericsoftware.kryo.io.Output.writeString(Ljava/lang/String;)V @ 93
Event: 75.586 Thread 0x000002bb8f15d000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002bb811558e0 method=com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.ensureCapacity(I)V @ 88
Event: 76.084 Thread 0x000002bb8f163800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002bb815d7db0 method=java.util.concurrent.ConcurrentHashMap.addCount(JI)V @ 110
Classes redefined (0 events):
No events
Internal exceptions (10 events):
Event: 36.594 Thread 0x000002bb8fdce000 Exception <a 'java/net/SocketTimeoutException': Read timed out> (0x00000000fdabff50) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share\vm\prims\jni.cpp, line 737]
Event: 49.143 Thread 0x000002bb8fdce000 Implicit null exception at 0x000002bb818f49c7 to 0x000002bb818f4e99
Event: 55.161 Thread 0x000002bb8f15c000 Exception <a 'java/net/SocketTimeoutException': Read timed out> (0x00000000f796d900) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share\vm\prims\jni.cpp, line 737]
Event: 60.871 Thread 0x000002bb8fdce000 Implicit null exception at 0x000002bb81c257ab to 0x000002bb81c25956
Event: 74.386 Thread 0x000002bb8fdce000 Exception <a 'java/lang/ClassNotFoundException': org/gradle/api/internal/tasks/DefaultSourceSetContainer_DecoratedBeanInfo> (0x00000000fa08ddb0) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share\vm\classfile\sy
Event: 74.387 Thread 0x000002bb8fdce000 Exception <a 'java/lang/ClassNotFoundException': org/gradle/api/internal/tasks/DefaultSourceSetContainerBeanInfo> (0x00000000fa0c5b68) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share\vm\classfile\systemDictio
Event: 74.387 Thread 0x000002bb8fdce000 Exception <a 'java/lang/ClassNotFoundException': org/gradle/api/internal/tasks/DefaultSourceSetContainerCustomizer> (0x00000000fa0fe630) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share\vm\classfile\systemDict
Event: 74.388 Thread 0x000002bb8fdce000 Exception <a 'java/lang/ClassNotFoundException': org/gradle/api/internal/tasks/DefaultSourceSetContainer_DecoratedCustomizer> (0x00000000fa14bd38) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share\vm\classfile\
Event: 74.395 Thread 0x000002bb8fdce000 Exception <a 'java/lang/ClassNotFoundException': org/jetbrains/plugins/gradle/tooling/tasks/DependenciesReport$ProjectNameFunctionBeanInfo> (0x00000000fa21d318) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\share
Event: 74.395 Thread 0x000002bb8fdce000 Exception <a 'java/lang/ClassNotFoundException': org/jetbrains/plugins/gradle/tooling/tasks/DependenciesReport$ProjectNameFunctionCustomizer> (0x00000000fa23b800) thrown at [C:\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u311\1894\hotspot\src\sha
Events (10 events):
Event: 75.586 Thread 0x000002bb8f15d000 Uncommon trap: trap_request=0xffffff65 fr.pc=0x000002bb811558e0
Event: 75.586 Thread 0x000002bb8f15d000 DEOPT PACKING pc=0x000002bb811558e0 sp=0x000000e4684fa790
Event: 75.586 Thread 0x000002bb8f15d000 DEOPT UNPACKING pc=0x000002bb800458c3 sp=0x000000e4684fa718 mode 2
Event: 75.689 loading class com/google/common/cache/LocalCache$AccessQueue$2
Event: 75.689 loading class com/google/common/cache/LocalCache$AccessQueue$2 done
Event: 75.690 loading class com/google/common/collect/AbstractSequentialIterator
Event: 75.690 loading class com/google/common/collect/AbstractSequentialIterator done
Event: 76.084 Thread 0x000002bb8f163800 Uncommon trap: trap_request=0xffffff65 fr.pc=0x000002bb815d7db0
Event: 76.084 Thread 0x000002bb8f163800 DEOPT PACKING pc=0x000002bb815d7db0 sp=0x000000e4689f9550
Event: 76.084 Thread 0x000002bb8f163800 DEOPT UNPACKING pc=0x000002bb800458c3 sp=0x000000e4689f9490 mode 2
Dynamic libraries:
0x00007ff6c9700000 - 0x00007ff6c9747000 E:\huzhiyou\JDK1.8\bin\java.exe
0x00007ff803c00000 - 0x00007ff803ded000 C:\windows\SYSTEM32\ntdll.dll
0x00007ff8020a0000 - 0x00007ff802153000 C:\windows\System32\KERNEL32.DLL
0x00007fffffd50000 - 0x00007ffffffe5000 C:\windows\System32\KERNELBASE.dll
0x00007ff8024d0000 - 0x00007ff802574000 C:\windows\System32\ADVAPI32.dll
0x00007ff8010e0000 - 0x00007ff80117e000 C:\windows\System32\msvcrt.dll
0x00007ff8017a0000 - 0x00007ff80183e000 C:\windows\System32\sechost.dll
0x00007ff801b10000 - 0x00007ff801c2f000 C:\windows\System32\RPCRT4.dll
0x00007ff802330000 - 0x00007ff8024c8000 C:\windows\System32\USER32.dll
0x00007ff800520000 - 0x00007ff800540000 C:\windows\System32\win32u.dll
0x00007ff801c30000 - 0x00007ff801c59000 C:\windows\System32\GDI32.dll
0x00007ff800c90000 - 0x00007ff800e2c000 C:\windows\System32\gdi32full.dll
0x00007ff800050000 - 0x00007ff8000f0000 C:\windows\System32\msvcp_win.dll
0x00007fffffc50000 - 0x00007fffffd4a000 C:\windows\System32\ucrtbase.dll
0x00007fffec950000 - 0x00007fffecbc9000 C:\windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17763.2061_none_de73cf545348ec45\COMCTL32.dll
0x00007ff801d70000 - 0x00007ff80209d000 C:\windows\System32\combase.dll
0x00007ff800490000 - 0x00007ff800512000 C:\windows\System32\bcryptPrimitives.dll
0x00007ff801c70000 - 0x00007ff801c9e000 C:\windows\System32\IMM32.DLL
0x00007fffed400000 - 0x00007fffed415000 E:\huzhiyou\JDK1.8\jre\bin\vcruntime140.dll
0x00007fffe18e0000 - 0x00007fffe197b000 E:\huzhiyou\JDK1.8\jre\bin\msvcp140.dll
0x000000005fd60000 - 0x00000000605c0000 E:\huzhiyou\JDK1.8\jre\bin\server\jvm.dll
0x00007ff801c60000 - 0x00007ff801c68000 C:\windows\System32\PSAPI.DLL
0x00007ffffb3d0000 - 0x00007ffffb3da000 C:\windows\SYSTEM32\VERSION.dll
0x00007ffffddc0000 - 0x00007ffffdde4000 C:\windows\SYSTEM32\WINMM.dll
0x00007fffed710000 - 0x00007fffed719000 C:\windows\SYSTEM32\WSOCK32.dll
0x00007ff801730000 - 0x00007ff80179d000 C:\windows\System32\WS2_32.dll
0x00007ffffdd50000 - 0x00007ffffdd7d000 C:\windows\SYSTEM32\WINMMBASE.dll
0x00007ff8000f0000 - 0x00007ff80013a000 C:\windows\System32\cfgmgr32.dll
0x00007fffffbd0000 - 0x00007fffffbe1000 C:\windows\System32\kernel.appcore.dll
0x00007ffffbde0000 - 0x00007ffffbdf0000 E:\huzhiyou\JDK1.8\jre\bin\verify.dll
0x00007fffed3d0000 - 0x00007fffed3fb000 E:\huzhiyou\JDK1.8\jre\bin\java.dll
0x00007fffed330000 - 0x00007fffed348000 E:\huzhiyou\JDK1.8\jre\bin\zip.dll
0x00007ff802600000 - 0x00007ff803af9000 C:\windows\System32\SHELL32.dll
0x00007ff803b20000 - 0x00007ff803bc8000 C:\windows\System32\shcore.dll
0x00007ff800540000 - 0x00007ff800c8b000 C:\windows\System32\windows.storage.dll
0x00007ff800020000 - 0x00007ff800044000 C:\windows\System32\profapi.dll
0x00007fffffbf0000 - 0x00007fffffc4d000 C:\windows\System32\powrprof.dll
0x00007ff8022c0000 - 0x00007ff802312000 C:\windows\System32\shlwapi.dll
0x00007ff800440000 - 0x00007ff800457000 C:\windows\System32\cryptsp.dll
0x00007fffed310000 - 0x00007fffed32c000 E:\huzhiyou\JDK1.8\jre\bin\net.dll
0x00007fffff350000 - 0x00007fffff3b7000 C:\windows\system32\mswsock.dll
0x00007fffe9820000 - 0x00007fffe9833000 E:\huzhiyou\JDK1.8\jre\bin\nio.dll
0x00007ffff30d0000 - 0x00007ffff30f7000 E:\huzhiyou\gradle-7.3\native\8bec1ad78214c89d9ad589b4d07fe93259594b29d510b10fafb7a158f7737e5d\windows-amd64\native-platform.dll
0x00007fffa4210000 - 0x00007fffa434d000 E:\huzhiyou\gradle-7.3\native\53dbd7edfb1c66fb8903c78663c9afc45aea4f116125fa6feffd364cf09443e8\windows-amd64\native-platform-file-events.dll
0x00007ffff7af0000 - 0x00007ffff7afd000 E:\huzhiyou\JDK1.8\jre\bin\management.dll
0x00007ffffeef0000 - 0x00007ffffef23000 C:\windows\system32\rsaenh.dll
0x00007ff800460000 - 0x00007ff800486000 C:\windows\System32\bcrypt.dll
0x00007fffffad0000 - 0x00007fffffaf9000 C:\windows\SYSTEM32\USERENV.dll
0x00007fffff530000 - 0x00007fffff53c000 C:\windows\SYSTEM32\CRYPTBASE.dll
0x00007fffff080000 - 0x00007fffff0bd000 C:\windows\SYSTEM32\IPHLPAPI.DLL
0x00007ff802320000 - 0x00007ff802328000 C:\windows\System32\NSI.dll
0x00007ffffa7e0000 - 0x00007ffffa7f6000 C:\windows\SYSTEM32\dhcpcsvc6.DLL
0x00007ffffa7b0000 - 0x00007ffffa7cc000 C:\windows\SYSTEM32\dhcpcsvc.DLL
0x00007fffff0c0000 - 0x00007fffff186000 C:\windows\SYSTEM32\DNSAPI.dll
0x00007fffe1840000 - 0x00007fffe1864000 E:\huzhiyou\JDK1.8\jre\bin\sunec.dll
0x00007fffef220000 - 0x00007fffef253000 C:\Program Files (x86)\Sangfor\SSL\ClientComponent\SangforNspX64.dll
0x00007ff802160000 - 0x00007ff8022b6000 C:\windows\System32\ole32.dll
0x00007ff801ca0000 - 0x00007ff801d64000 C:\windows\System32\OLEAUT32.dll
0x00007ffff8760000 - 0x00007ffff876a000 C:\Windows\System32\rasadhlp.dll
0x00007ffffa3a0000 - 0x00007ffffa419000 C:\windows\System32\fwpuclnt.dll
0x00007ffff7a00000 - 0x00007ffff7a0d000 E:\huzhiyou\JDK1.8\jre\bin\sunmscapi.dll
0x00007ff800250000 - 0x00007ff800433000 C:\windows\System32\CRYPT32.dll
0x00007ff800000000 - 0x00007ff800012000 C:\windows\System32\MSASN1.dll
0x00007fffff680000 - 0x00007fffff6a6000 C:\windows\SYSTEM32\ncrypt.dll
0x00007fffff620000 - 0x00007fffff65c000 C:\windows\SYSTEM32\NTASN1.dll
0x00007fffecde0000 - 0x00007fffecfcd000 C:\windows\SYSTEM32\dbghelp.dll
VM Arguments:
jvm_args: -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=CN -Duser.language=zh -Duser.variant
java_command: org.gradle.launcher.daemon.bootstrap.GradleDaemon 7.1
java_class_path (initial): E:\huzhiyou\gradle-7.3\wrapper\dists\gradle-7.1-bin\4pslxx9lrxt5svtz5wbnb6tkz\gradle-7.1\lib\gradle-launcher-7.1.jar
Launcher Type: SUN_STANDARD
Environment Variables:
PATH=E:\huzhiyou\JDK1.8\bin;E:\huzhiyou\apache-maven-3.8.3\bin;E:\huzhiyou\gradle-7.3\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;E:\huzhiyou\Git\cmd;;E:\huzhiyou\xftp\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;E:\huzhiyou\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;;E:\huzhiyou\IntelliJ IDEA 2021.2.2\bin;
USERNAME=Administrator
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 9, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows 10.0 , 64 bit Build 17763 (10.0.17763.2028)
CPU:total 4 (initial active 4) (4 cores per cpu, 1 threads per core) family 6 model 158 stepping 9, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, rtm, 3dnowpref, lzcnt, tsc, tscinvbit, bmi1, bmi2, adx
Memory: 4k page, physical 16734952k(706560k free), swap 36396004k(3508k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.311-b11) for windows-amd64 JRE (1.8.0_311-b11), built on Sep 27 2021 05:15:14 by "java_re" with MS VC++ 15.9 (VS2017)
time: Sat May 7 13:58:01 2022
timezone: ?D1???
elapsed time: 80.086009 seconds (0d 0h 1m 20s)
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;
}
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 TrainPointListMapVo {
private String trainName;
private String trainAddress;
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 TrainPointListSimpleVo {
private Integer id;
private String trainName;
private String trainPointDescript;
}
package com.mmc.tmj.entity.response;
import com.mmc.tmj.entity.response.province.ProvinceFlyNumListVo;
import com.mmc.tmj.entity.response.province.ProvinceTrainPointNumListVo;
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 TrainPointNumListVo {
private Integer totailNum;
private Integer onlineNum;
private Integer offlineNum;
private List<ProvinceTrainPointNumListVo> provinceTrainPointNumList;
}
package com.mmc.tmj.entity.response.province;
import lombok.Builder;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:22
* @Version 1.0
* @description
*/
@Data
@Builder
public class ProvinceBaseNumListVo {
private String provinceCode;
private Integer num;
}
package com.mmc.tmj.entity.response.province;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:22
* @Version 1.0
* @description
*/
@Data
public class ProvinceExhibitionPointNumListVo {
private String provinceCode;
private Integer exhibitionPointNum;
}
package com.mmc.tmj.entity.response.province;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:22
* @Version 1.0
* @description
*/
@Data
public class ProvinceFlyManNumListVo {
private String provinceCode;
private Integer flyManNum;
}
package com.mmc.tmj.entity.response.province;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:22
* @Version 1.0
* @description
*/
@Data
public class ProvinceFlyNumListVo {
private String provinceCode;
private Integer flyNum;
}
package com.mmc.tmj.entity.response.province;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:22
* @Version 1.0
* @description
*/
@Data
public class ProvinceServicePointNumListVo {
private String provinceCode;
private Integer servicePoint;
}
package com.mmc.tmj.entity.response.province;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/21 17:22
* @Version 1.0
* @description
*/
@Data
public class ProvinceTrainPointNumListVo {
private String provinceCode;
private Integer trainPointNum;
}
package com.mmc.tmj.entity.result;
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 17:58
* @Version 1.0
* @description
*/
@Data
@ApiModel(description = "动作详情")
public class ActionDetail {
@ApiModelProperty(value = "动作类型", example = "STAY")
@NotNull
private ActionType type;
/** 动作耗时,目前单位是second */
@ApiModelProperty(value = "动作耗时(s)或拍照数量(张)", example = "10")
private Integer takeSecond;
}
package com.mmc.tmj.entity.result;
import lombok.Getter;
import lombok.Setter;
/**
* @Author lcz
* @Date 2022/5/7 17:42
* @Version 1.0
* @description
*/
@Setter
@Getter
public class BaseResponse<T> {
private static final int SERVER_ERROR = 500;
/*状态码*/
private int code = 200;
/*描述信息*/
private String msg;
/*返回数据*/
private T data;
public static <T> BaseResponse<T> error() {
return error("未知异常,请联系管理员", SERVER_ERROR);
}
public static <T> BaseResponse<T> error(T data) {
BaseResponse<T> r = new BaseResponse<>();
r.setData(data);
return r;
}
public static <T> BaseResponse<T> error(String msg) {
return error(msg, SERVER_ERROR);
}
public static <T> BaseResponse<T> error(String msg, int code) {
return error(msg, code, null);
}
public static <T> BaseResponse<T> error(String msg, int code, T errors) {
BaseResponse<T> r = new BaseResponse<>();
r.setCode(code);
r.setMsg(msg);
r.setData(errors);
return r;
}
public static <T> BaseResponse<T> ok(T data) {
BaseResponse<T> r = new BaseResponse<>();
r.setData(data);
return r;
}
public static <T> BaseResponse<T> ok(String msg, T data) {
BaseResponse<T> r = new BaseResponse<>();
r.setMsg(msg);
r.setData(data);
return r;
}
public static <T> BaseResponse<T> ok(String msg, int code, T data) {
BaseResponse<T> r = new BaseResponse<>();
r.setMsg(msg);
r.setCode(code);
r.setData(data);
return r;
}
// --------------------------------------------------------------------------------构造器End
public static BaseResponse<Void> ok() {
return new BaseResponse<>();
}
}
package com.mmc.tmj.entity.result;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author lcz
* @Date 2022/5/13 16:31
* @Version 1.0
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceSelectDto {
@JsonProperty("id")
private Integer device_id;
@JsonProperty("deviceName")
private String deviceName;
@JsonProperty("status")
private Integer socketStatus;
@JsonProperty("deviceSerial")
private String deviceSerial;
@JsonProperty("deviceHardId")
private String deviceHardId;
@JsonProperty("deviceHashId")
private String deviceHashId;
}
package com.mmc.tmj.entity.result;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/12 10:23
* @Version 1.0
* @description
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class PageRespVo<T> extends SliceRespVo<T>{
//总记录数
private Long totalSize;
//页码总数
private Integer totalNum;
}
package com.mmc.tmj.entity.result;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/14 14:43
* @Version 1.0
* @description
*/
@Data
public class PhotographListVo {
private String images;
private String createTime;
}
package com.mmc.tmj.entity.result;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 17:52
* @Version 1.0
* @description
*/
@Data
public class RouteDetail {
@ApiModelProperty(value = "航线ID", example = "1")
private Integer id;
@ApiModelProperty(value = "航线名称", example = "xxx")
private String name;
@ApiModelProperty(value = "航点列表")
private List<RoutePointDetail> points;
}
package com.mmc.tmj.entity.result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/17 10:38
* @Version 1.0
* @description
*/
@Data
@ApiModel(description = "航线列表")
public class RouteList {
@ApiModelProperty(value = "航线名称", example = "xxx")
private String name;
@ApiModelProperty(value = "默认海拔", example = "10.56987")
private Double defaultAltitude;
@ApiModelProperty(value = "默认速度(m/s)", example = "10")
private Double defaultSpeed;
@ApiModelProperty(value = "备注", example = "No Comment")
private String remark;
@ApiModelProperty(value = "航线ID", example = "1")
private Integer id;
@ApiModelProperty(value = "航点数量", example = "10")
private int numOfPoint;
@ApiModelProperty(value = "航线长度(单位km)", example = "10")
private double kmOfRoute;
@ApiModelProperty(value = "预计时长(单位min)", example = "10")
private double expectTakeMinute;
@ApiModelProperty(value = "创建时间", example = "20210803")
private String createWhen;
}
package com.mmc.tmj.entity.result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/16 17:55
* @Version 1.0
* @description
*/
@Data
@ApiModel(description = "航点详情")
public class RoutePointDetail {
/** 航点唯一标识,由前端生成 */
@ApiModelProperty(value = "航点UUID")
private String uuid;
@ApiModelProperty(value = "航点纬度", example = "10.03564")
private double latitude;
/** 经度,目前单位都是度 */
@ApiModelProperty(value = "航点经度", example = "10.03564")
private double longitude;
/** 海拔高度,可能叫elevation更为准确,目前海拔高度的单位都是米 */
@ApiModelProperty(value = "航点海拔", example = "10.03564")
private double altitude;
/** 偏航角度,目前单位都是度;暂时没有必要拆成值对象 */
@ApiModelProperty(value = "航点偏航角", example = "10")
private double yawAngle;
/** 俯仰角度,目前单位都是度;暂时没有必要拆成值对象 */
@ApiModelProperty(value = "航点俯仰角", example = "10.03564")
private double pitchAngle;
/** 单位m/s */
@ApiModelProperty(value = "航点速度(m/s)", example = "10.03")
private double speed;
/** 航点动作 */
@ApiModelProperty(value = "动作")
private List<ActionDetail> actions;
}
package com.mmc.tmj.entity.result;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author lcz
* @Date 2022/5/12 10:22
* @Version 1.0
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SliceRespVo<T> {
private Integer num;
private Integer size;
private List<T> data;
}
package com.mmc.tmj.entity.result;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/14 10:45
* @Version 1.0
* @description
*/
@Data
public class TaskInfoVo {
private String taskName;
private String routeName;
private String deviceName;
}
package com.mmc.tmj.entity.result;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/12 10:35
* @Version 1.0
* @description
*/
@Data
public class TaskListVo {
private Integer id;
private String taskName;
private String routeName;
private Integer taskStatue;
private String organizationName;
private String mark;
private Integer deviceId;
private String deviceName;
private Integer deviceStatus;
private String deviceHardId;
private String createWhen;
}
package com.mmc.tmj.entity.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/18 13:57
* @Version 1.0
* @description
*/
@Data
public class TaskReportDto {
/** 任务id */
@ApiModelProperty(value = "任务id", example = "98")
private Integer taskId;
/** 任务名称 */
@ApiModelProperty(value = "任务名称", example = "测试任务")
private String taskName;
/** 事故坐标 */
@ApiModelProperty(value = "事故坐标", example = "11.33")
private String location;
/** 任务起始时间 */
@ApiModelProperty(value = "任务起始时间", example = "2020-11-22")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime startTime;
/** 任务结束时间 */
@ApiModelProperty(value = "任务结束时间", example = "2020-11-25")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime endTime;
/** 任务日期 */
@ApiModelProperty(value = "任务日期", example = "2020-11-22")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime taskDate;
/** 天气情况 */
@ApiModelProperty(value = "天气情况", example = "晴天")
private String weather;
/** 设备编号(设备硬件Id) */
@ApiModelProperty(value = "设备硬件Id", example = "aaa")
private String deviceHardId;
/** 执行人 */
@ApiModelProperty(value = "执行人", example = "阿强")
private String executePerson;
/** 报告生成时间 */
@ApiModelProperty(value = "报告生成时间", example = "2020-11-25")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime reportAddTime;
/** 备注 */
@ApiModelProperty(value = "备注", example = "666")
private String remark;
}
package com.mmc.tmj.entity.result;
import lombok.Data;
/**
* @Author lcz
* @Date 2022/5/14 9:48
* @Version 1.0
* @description
*/
@Data
public class TaskSelectVo {
private Integer id;
private String taskName;
}
package com.mmc.tmj.entity.result;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import org.springframework.http.HttpStatus;
/**
* @Author lcz
* @Date 2022/5/18 17:27
* @Version 1.0
* @description
*/
@Getter
@Setter
public class ValidationErrorResponse {
/**
* 状态码
*/
private final int code = HttpStatus.BAD_REQUEST.value();
private List<Violation> data = new ArrayList<>();
}
package com.mmc.tmj.entity.result;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
/**
* @Author lcz
* @Date 2022/5/18 17:27
* @Version 1.0
* @description
*/
@Getter
@Setter
@AllArgsConstructor
public class Violation {
private final String fieldName;
private final String message;
}
package com.mmc.tmj.enums;
/**
* @Author lcz
* @Date 2022/5/16 10:26
* @Version 1.0
* @description
*/
public enum ActionType {
/** 悬停 */
STAY,
/** 开始拍照 */
START_TAKE_PHOTO,
/** 开始录像 */
START_RECORD,
/** 停止录像 */
STOP_RECORD,
GIMBAL_PITCH,
ROTATE_AIRCRAFT
}
package com.mmc.tmj.exception;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
/**
* @Author lcz
* @Date 2022/5/16 14:42
* @Version 1.0
* @description
*/
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class BaseException extends RuntimeException{
public static final int FILE_STORE_OUTSIDE_CURRENT_DIRECTORY = 11003;
public static final int FILE_EMPTY = 11002;
private static final int SERVER_CODE = 500;
private int code;
private String msg;
public BaseException(String msg) {
super(msg);
this.msg=msg;
this.code=SERVER_CODE;
}
public BaseException(String msg,Throwable throwable) {
super(msg,throwable);
this.msg=msg;
this.code=SERVER_CODE;
}
public BaseException(String msg,int code) {
super(msg);
this.msg=msg;
this.code=code;
}
public BaseException(String msg,int code,Throwable throwable) {
super(msg,throwable);
this.msg=msg;
this.code=code;
}
}
package com.mmc.tmj.filter;
import com.alibaba.fastjson.JSONObject;
import com.mmc.tmj.service.login.LoginService;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.stereotype.Component;
/**
* @Author lcz
* @Date 2022/5/19 10:24
* @Version 1.0
* @description
*/
@Component
@Slf4j
public class LoginFilter implements Filter {
@Autowired
private LoginService loginService;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void destroy() {
Filter.super.destroy();
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest =(HttpServletRequest) request;
log.info("进入filter");
log.info("request={}", request);
log.info("httpServletRequest={}", httpServletRequest.getHeader("token"));
//chain.doFilter(request,response);
log.info("出去filter");
String requestURI = httpServletRequest.getRequestURI();
log.info("requestURI={}",requestURI);
//白名单过滤
if(requestURI.equals("/tmj/doc.html")|| requestURI.startsWith("/tmj/taskPointExportToWord") || requestURI.startsWith("/tmj/webjars") || requestURI.startsWith("/tmj/favicon.ico")|| requestURI.startsWith("/tmj/swagger")|| requestURI.startsWith("/tmj/v2")){
chain.doFilter(request,response);
}else {
if(loginService.checkLoginInfo(httpServletRequest.getHeader("token"))){
chain.doFilter(request,response);
}else {
log.info("解析token异常");
return;
};
}
}
}
package com.mmc.tmj.log;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Aspect
@Component
@Slf4j
public class LoggingAspect {
@Autowired private ObjectMapper objectMapper;
@Around("execution(* com.mmc..*Controller.*(..))")
public Object profileControllerMethods(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
String className = methodSignature.getDeclaringType().getSimpleName();
String methodName = methodSignature.getName();
Object[] args = proceedingJoinPoint.getArgs();
log.info(String.format("In Controller Method: %s#%s,Parameters:", className, methodName));
logEachParameter(args);
final StopWatch stopWatch = new StopWatch();
stopWatch.start();
Object result = proceedingJoinPoint.proceed();
stopWatch.stop();
log.info(
"Execution time of "
+ className
+ "#"
+ methodName
+ " "
+ ":: "
+ stopWatch.getTotalTimeMillis()
+ " ms");
log.info(
String.format(
"Out Controller Method: %s#%s,Return:%s",
className, methodName, objectMapper.writeValueAsString(result)));
return result;
}
/**
* 获取请求参数方式二:直接序列化args,但是Jackson依赖不支持,需要其他序列化Jar实现。或者依次log
*
* @return
*/
private void logEachParameter(Object[] args) {
for (Object arg : args) {
log.info(String.format("#####Parameter:%s", arg));
}
}
/**
* 获取请求参数方式一:取巧方式,不推荐
*
* @return
*/
private String parameterFromContext() {
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes sra = (ServletRequestAttributes) ra;
HttpServletRequest request = sra.getRequest();
// String url = request.getRequestURL().toString();
// String method = request.getMethod();
// String uri = request.getRequestURI();
String queryString = request.getQueryString();
return queryString;
}
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.DeviceDo;
import com.mmc.tmj.entity.database.DeviceList;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param;
/**
* @Author lcz
* @Date 2022/5/17 16:33
* @Version 1.0
* @description
*/
public interface DeviceRepository extends JpaRepository<DeviceDo, Integer>,
QuerydslPredicateExecutor<DeviceDo> {
/*@Select({"<script>"
+ "SELECT "
+ "d.device_id as device_id, "
+ "d.deviceName, "
+ "d.deviceSerial, "
+ "d.deviceHardId, "
+ "d.hashId as deviceHashId, "
+ "d.STATUS as socketStatus "
+ "FROM "
+ "`mmc_device` AS d "
+ "WHERE "
+ "d.is_del = 0 "
+ "AND d.device_id IN "
+ "(SELECT mdau.device_id "
+ "FROM mmc_device_app_user AS mdau "
+ "WHERE mdau.user_id IN "
+ "(SELECT id "
+ "FROM mmc_user "
+ "WHERE company_id = #{companyId} AND STATUS != 99 )) "
+ "</script>"})*/
@Query(
nativeQuery = true,
value = "SELECT "
+ "d.device_id as device_id, "
+ "d.deviceName, "
+ "d.deviceSerial, "
+ "d.deviceHardId, "
+ "d.hashId as deviceHashId, "
+ "d.STATUS as socketStatus "
+ "FROM "
+ "`mmc_device` AS d "
+ "WHERE "
+ "d.is_del = 0 "
+ "AND d.device_id IN "
+ "(SELECT mdau.device_id "
+ "FROM mmc_device_app_user AS mdau "
+ "WHERE mdau.user_id IN "
+ "(SELECT id "
+ "FROM mmc_user "
+ "WHERE company_id = :companyId AND STATUS != 99 )) ")
List<DeviceList> devicesByCompanyId(@Param("companyId") Integer companyId);
@Query(nativeQuery = true,value = "update mmc_device set deviceName = :deviceName where deviceHardId = :deviceHardId ")
public int updateDeviceNameByDeviceHardId(String deviceHardId , String deviceName);
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.GISMapDo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository;
/**
* @Author lcz
* @Date 2022/5/17 15:47
* @Version 1.0
* @description
*/
@Repository
public interface GISMapRepository extends JpaRepository<GISMapDo, Integer>,
QuerydslPredicateExecutor<GISMapDo> {
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.database.TaskDto;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param;
/**
* @Author lcz
* @Date 2022/5/9 9:46
* @Version 1.0
* @description
*/
public interface PhotographDoRepository extends JpaRepository<PhotographDo,Integer> , QuerydslPredicateExecutor<PhotographDo> {
public List<PhotographDo> findAllByTaskId(Integer taskId);
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.param.RouteDataDto;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param;
/**
* @Author lcz
* @Date 2022/5/9 9:46
* @Version 1.0
* @description
*/
public interface RouteRepository extends JpaRepository<RouteDo,Integer> , QuerydslPredicateExecutor<RouteDo> {
public RouteDo findByName(String name);
@Query(nativeQuery = true,value = "select count(1) from task_dto where task_status !=3 and route_name=:routeName")
int checkTaskStatusByRouteName(@Param("routeName") String routeName);
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.DeviceDo;
import com.mmc.tmj.entity.database.RunProjectDo;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
/**
* @Author lcz
* @Date 2022/5/21 15:03
* @Version 1.0
* @description
*/
public interface RunProjectRepository extends JpaRepository<RunProjectDo, Integer>,
QuerydslPredicateExecutor<RunProjectDo> {
RunProjectDo findByProjectName(String projectName);
List<RunProjectDo> findAllByProjectNameLike(String projectName);
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.TaskDto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
/**
* @Author lcz
* @Date 2022/5/9 9:46
* @Version 1.0
* @description
*/
public interface TaskRepository extends JpaRepository<TaskDto,Integer> , QuerydslPredicateExecutor<TaskDto> {
public TaskDto findByTaskName(String taskName);
@Query(
nativeQuery = true,
value = "update task_dto set task_status =:status ,start_time=now() where id=:id"
)
public boolean updateTaskStatus(@Param("id") Integer id,@Param("status") int status);
public TaskDto findByIdAndTaskStatus(Integer id,int taskStatus);
@Query("select 1 from TaskDto where deviceId=:id and (taskStatus=1 or taskStatus=2)")
Integer deviceHaveTask(Integer id);
@Query(
nativeQuery = true,
value = "select count(1) from task_dto where task_status = 3 and id =:taskId"
)
Integer checkTaskStatus(@Param("taskId") Integer taskId);
@Transactional
@Modifying
@Query(
nativeQuery = true,
value = "insert task_report values (null,?1,?2,0)"
)
void saveTaskReportInfo(Integer taskId, String uploadPath);
}
package com.mmc.tmj.mapper;
import com.mmc.tmj.entity.database.GISMapDo;
import com.mmc.tmj.entity.database.TrackDo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository;
/**
* @Author lcz
* @Date 2022/5/17 15:47
* @Version 1.0
* @description
*/
@Repository
public interface TrackRepository extends JpaRepository<TrackDo, Integer>,
QuerydslPredicateExecutor<GISMapDo> {
}
package com.mmc.tmj.requestHandler;
import com.mmc.tmj.entity.result.BaseResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;
/**
* BaseExceptionHandler
*
* @description
* @author Chuck
* @date 1/13/2022 2:36 PM
*/
@RestControllerAdvice
@Slf4j
public class BaseExceptionHandler {
@ResponseBody
@ExceptionHandler(HttpServerErrorException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public BaseResponse<Void> onHttpServerErrorException(HttpServerErrorException e) {
log.error(e.getMessage());
return BaseResponse.error(
"第三方服务内部异常:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value());
}
@ResponseBody
@ExceptionHandler(HttpClientErrorException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public BaseResponse<Void> onHttpClientErrorException(HttpClientErrorException e) {
log.error(e.getMessage());
return BaseResponse.error(
"第三方服务客户端异常:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value());
}
}
package com.mmc.tmj.requestHandler;
import com.mmc.tmj.entity.result.BaseResponse;
import com.querydsl.core.NonUniqueResultException;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.NoSuchElementException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mapping.PropertyReferenceException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* DataExceptionHandler
*
* @description
* @author Chuck
* @date 1/13/2022 2:38 PM
*/
@RestControllerAdvice
@Slf4j
public class DataExceptionHandler {
@ResponseBody
@ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE)
@ExceptionHandler(NonUniqueResultException.class)
public BaseResponse<Void> onBaseException(NonUniqueResultException e) {
log.error(e.getMessage());
return BaseResponse.error(
"数据异常,返回多条数据:" + e.getMessage(), HttpStatus.SERVICE_UNAVAILABLE.value());
}
@ResponseBody
@ExceptionHandler(IllegalArgumentException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public BaseResponse<Void> onIllegalArgumentException(IllegalArgumentException e) {
log.error(e.getMessage());
return BaseResponse.error(e.getMessage(), HttpStatus.BAD_REQUEST.value());
}
@ResponseBody
@ExceptionHandler(NoSuchElementException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public BaseResponse<Void> onNoSuchElementException(NoSuchElementException e) {
log.error(e.getMessage());
return BaseResponse.error(e.getMessage(), HttpStatus.BAD_REQUEST.value());
}
@ResponseBody
@ExceptionHandler(PropertyReferenceException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public BaseResponse<Void> onPropertyReferenceException(PropertyReferenceException e) {
return BaseResponse.error(e.getMessage(), HttpStatus.BAD_REQUEST.value());
}
@ResponseBody
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public BaseResponse<Void> onSQLIntegrityConstraintViolationException(
SQLIntegrityConstraintViolationException e) {
return BaseResponse.error(e.getMessage(), HttpStatus.BAD_REQUEST.value());
}
}
package com.mmc.tmj.requestHandler;
import com.mmc.tmj.entity.result.BaseResponse;
import com.mmc.tmj.entity.result.ValidationErrorResponse;
import com.mmc.tmj.entity.result.Violation;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* @author Chuck
* @version 0.0.1
* @apiNote
* @since 7/31/2021
*/
@RestControllerAdvice
@Slf4j
public class ValidationExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
ValidationErrorResponse onConstraintValidationException(ConstraintViolationException e) {
ValidationErrorResponse error = new ValidationErrorResponse();
for (ConstraintViolation violation : e.getConstraintViolations()) {
error
.getData()
.add(new Violation(violation.getPropertyPath().toString(), violation.getMessage()));
log.error(violation.getPropertyPath().toString() + ":" + violation.getMessage());
}
return error;
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
ValidationErrorResponse onMethodArgumentNotValidException(MethodArgumentNotValidException e) {
log.error(e.getMessage());
ValidationErrorResponse error = new ValidationErrorResponse();
for (FieldError fieldError : e.getBindingResult().getFieldErrors()) {
error.getData().add(new Violation(fieldError.getField(), fieldError.getDefaultMessage()));
log.error(fieldError.getField() + ":" + fieldError.getDefaultMessage());
}
return error;
}
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public BaseResponse<Void> onHttpMessageNotReadableException(HttpMessageNotReadableException e) {
log.error(e.getMessage());
return BaseResponse.error(e.getMessage(), HttpStatus.BAD_REQUEST.value());
}
}
package com.mmc.tmj.service.device;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.LoginTokenInfo;
/**
* @Author lcz
* @Date 2022/5/12 17:15
* @Version 1.0
* @description
*/
public interface DeviceService {
public DataObj getDeviceSelect(LoginTokenInfo loginTokenInfo,Integer organizationId);
Integer deviceHaveTask(Integer id);
String updateDeviceName(LoginTokenInfo token, String deviceHardId, String deviceName);
}
package com.mmc.tmj.service.device.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.tmj.entity.database.DeviceList;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.LoginTokenInfo;
import com.mmc.tmj.mapper.DeviceRepository;
import com.mmc.tmj.mapper.TaskRepository;
import com.mmc.tmj.service.device.DeviceService;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import lombok.SneakyThrows;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* @Author lcz
* @Date 2022/5/12 17:15
* @Version 1.0
* @description
*/
@Service
public class DeviceServiceImpl implements DeviceService {
@Value("${mmc.tmj-v1.url}")
private String TMJ_V1_URl;
private static String DEVICE_CHILD_PLATFORM_PATH = "devicecentersystemserver/";
@Resource
private RestTemplate restTemplate;
@Resource
private ObjectMapper objectMapper;
@Resource
private TaskRepository taskRepository;
@Autowired
private DeviceRepository deviceRepository;
@SneakyThrows
@Override
public DataObj getDeviceSelect(LoginTokenInfo loginTokenInfo,Integer organizationId) {
/*String url = TMJ_V1_URl+DEVICE_CHILD_PLATFORM_PATH+"device/devicesByCompanyId?companyId="+organizationId;
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
httpHeaders.set("mmc-identity",loginTokenInfo.getMmc_identity());
httpHeaders.set("FLYINGSESSIONID",loginTokenInfo.getFLYINGSESSIONID());
HttpEntity<Object> objectHttpEntity = new HttpEntity<>(httpHeaders);
ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET,
objectHttpEntity, String.class);
String body = exchange.getBody();*/
return new DataObj<List>("200","ok", deviceRepository.devicesByCompanyId(organizationId));
}
@Override
public Integer deviceHaveTask(Integer id) {
return taskRepository.deviceHaveTask(id);
}
@Override
public String updateDeviceName(LoginTokenInfo token, String deviceHardId, String deviceName) {
/*String url = TMJ_V1_URl+DEVICE_CHILD_PLATFORM_PATH+"/datareport/updateDeviceName";
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
httpHeaders.set("mmc-identity",token.getMmc_identity());
httpHeaders.set("FLYINGSESSIONID",token.getFLYINGSESSIONID());
MultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("deviceHardId",deviceHardId);
map.add("deviceName",deviceName);
HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<>(map,httpHeaders);
ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(url, entity, String.class);*/
deviceRepository.updateDeviceNameByDeviceHardId(deviceHardId,deviceName);
return "ok";
}
}
package com.mmc.tmj.service.file;
import java.nio.file.Path;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/14 13:44
* @Version 1.0
* @description
*/
public interface StoreageService {
String store(MultipartFile ia);
String storeElseAndRename(MultipartFile file, Path path, String fileName);
Path loadFromElse(Path path, String fileName);
}
package com.mmc.tmj.service.file.impl;
import com.mmc.tmj.configuration.MinioPropConfiguration;
import com.mmc.tmj.exception.BaseException;
import com.mmc.tmj.service.file.StoreageService;
import io.minio.MinioClient;
import io.minio.policy.PolicyType;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/14 13:46
* @Version 1.0
* @description
*/
@Service
public class MinioStoreageServiceImpl implements StoreageService {
@Autowired
private MinioClient minioClient;
private MinioPropConfiguration minioPropConfiguration;
@Value("${spring.profiles.active}")
private String bucketName;
@SneakyThrows
public void init(){
if(!minioClient.bucketExists(bucketName)){
minioClient.makeBucket(bucketName);
minioClient.setBucketPolicy(bucketName,"*", PolicyType.READ_WRITE);
}
}
@SneakyThrows
@Override
public String store(MultipartFile ia) {
String fileName =bucketName +"_"+System.currentTimeMillis()+"_"+ia.getName();
minioClient.putObject(bucketName,fileName,ia.getInputStream(),ia.getContentType());
return minioPropConfiguration.getEndpoint()+"/"+bucketName+"/"+fileName;
}
@SneakyThrows
@Override
public String storeElseAndRename(MultipartFile file, Path dir, String newName) {
//判空
if(null == file){
throw new BaseException("Failed to store empty file " + newName, BaseException.FILE_EMPTY);
}
if(newName.contains("..")){
throw new BaseException(
"Cannot store file with relatvie path outside current directory " + newName,
BaseException.FILE_STORE_OUTSIDE_CURRENT_DIRECTORY);
}
try (InputStream inputStream = file.getInputStream()){
Files.copy(inputStream,dir.resolve(newName), StandardCopyOption.REPLACE_EXISTING);
}
//特殊字符判断
return newName;
}
@Override
public Path loadFromElse(Path dir, String fileName) {
return dir.resolve(fileName);
}
}
package com.mmc.tmj.service.gis;
import com.mmc.tmj.entity.param.GISMapWebDto;
/**
* @Author lcz
* @Date 2022/5/17 15:09
* @Version 1.0
* @description
*/
public interface GIsMapService {
void create(GISMapWebDto gisMapWebDto);
}
package com.mmc.tmj.service.gis.impl;
import com.mmc.tmj.entity.param.GISMapWebDto;
import com.mmc.tmj.mapper.GISMapRepository;
import com.mmc.tmj.service.gis.GIsMapService;
import com.mmc.tmj.utils.BeanTransFormUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Author lcz
* @Date 2022/5/17 15:09
* @Version 1.0
* @description
*/
@Service
public class GIsMapServiceImpl implements GIsMapService {
@Autowired
private GISMapRepository gisMapRepository;
@Override
public void create(GISMapWebDto gisMapWebDto) {
gisMapRepository.save(BeanTransFormUtil.transGISMapDoByGISMapWebDto(gisMapWebDto));
}
}
package com.mmc.tmj.service.login;
import com.mmc.tmj.entity.other.LoginTokenInfo;
/**
* @Author lcz
* @Date 2022/5/12 15:47
* @Version 1.0
* @description
*/
public interface LoginService {
public LoginTokenInfo getLoginInfo(String token, String appid);
public boolean checkLoginInfo(String token);
}
package com.mmc.tmj.service.login.impl;
import com.mmc.tmj.entity.other.LoginTokenInfo;
import com.mmc.tmj.service.login.LoginService;
import com.mmc.tmj.utils.JWTUtil;
import io.jsonwebtoken.Claims;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
/**
* @Author lcz
* @Date 2022/5/12 15:48
* @Version 1.0
* @description
*/
@Service
public class LoginServiceImpl implements LoginService {
@Value("${mmcflying.base64Secret}")
private String base64Secret;
@Value("${mmcflying.tokenAllowHash}")
private String tokenAllowHash;
@Resource
private StringRedisTemplate redisUserTemplate;
@Override
public LoginTokenInfo getLoginInfo(String token, String appid) {
String appToken = appid+token;
String identity =(String) redisUserTemplate.opsForHash().get(appToken, "mmc-identity");
String flyingsessionid =(String) redisUserTemplate.opsForHash().get(appToken, "FLYINGSESSIONID");
LoginTokenInfo loginTokenInfo = new LoginTokenInfo();
loginTokenInfo.setMmc_identity(identity);
loginTokenInfo.setFLYINGSESSIONID(flyingsessionid);
return loginTokenInfo;
}
@Override
public boolean checkLoginInfo(String token) {
String jwtToken = token;
String realToken = jwtToken.replace(JWTUtil.TOKEN_PREFIX, "");
Claims claims = JWTUtil.parseJWT(realToken, base64Secret);
if(null == claims){
return false;
}
String userId = claims.get(JWTUtil.X_USER_ID)+"";
Object oldToken = redisUserTemplate.opsForHash().get(tokenAllowHash, userId);
if(null != oldToken && jwtToken.equals(oldToken.toString())){
return true;
}
return false;
}
}
package com.mmc.tmj.service.photo;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.result.PhotographListVo;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/14 14:40
* @Version 1.0
* @description
*/
public interface PhotographService {
void savePhotograph(PhotographDo photographDo);
List<PhotographListVo> getPhotographByTaskId(Integer taskId);
}
package com.mmc.tmj.service.photo.impl;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.mapper.PhotographDoRepository;
import com.mmc.tmj.service.photo.PhotographService;
import com.mmc.tmj.utils.BeanTransFormUtil;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @Author lcz
* @Date 2022/5/14 14:40
* @Version 1.0
* @description
*/
@Service
public class PhotographServiceImpl implements PhotographService {
@Resource
protected PhotographDoRepository photographDoRepository;
@Override
public void savePhotograph(PhotographDo photographDo) {
photographDoRepository.save(photographDo);
}
@Override
public List<PhotographListVo> getPhotographByTaskId(Integer taskId) {
List<PhotographDo> allByTaskId = photographDoRepository.findAllByTaskId(taskId);
return allByTaskId.stream().map(BeanTransFormUtil::transPhotographListVo).collect(Collectors.toList());
}
}
package com.mmc.tmj.service.route;
import com.mmc.tmj.entity.param.RouteDataDto;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RouteList;
import com.mmc.tmj.entity.result.SliceRespVo;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/14 16:29
* @Version 1.0
* @description
*/
public interface RouteService {
boolean planRoute(RouteDataDto routeDataDto);
boolean updateRoute(RouteDataDto routeDataDto);
void saveUploadRoute(MultipartFile file);
boolean deleteByid(int id);
RouteDetail routeDetail(String name);
SliceRespVo<RouteList> pages(String name, int num, int size, String sort);
}
package com.mmc.tmj.service.route.assembler;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.other.RouteUploadDto;
import com.mmc.tmj.entity.param.RouteDataDto;
import com.mmc.tmj.mapper.RouteRepository;
import com.mmc.tmj.utils.BeanTransFormUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author lcz
* @Date 2022/5/16 10:40
* @Version 1.0
* @description
*/
@Component
public class RouteAssembler {
@Autowired
private RouteRepository routeRepository;
public RouteDo fromRouteDto(RouteDataDto routeDataDto) {
RouteDo byName = routeRepository.findByName(routeDataDto.getName());
if(null != byName){
return null;
}
return BeanTransFormUtil.transRouteDo(routeDataDto);
}
public RouteDo fromUpdateRouteDto(RouteDataDto routeDataDto) {
RouteDo byName = routeRepository.findByName(routeDataDto.getName());
return BeanTransFormUtil.transUpdateRouteDo(byName,routeDataDto);
}
public RouteDo fromRouteByUploadJson(String routeJson) {
return BeanTransFormUtil.transRouteDoByUpload(routeJson);
}
}
package com.mmc.tmj.service.route.impl;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.other.RouteUploadDto;
import com.mmc.tmj.entity.param.RouteDataDto;
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.mapper.RouteRepository;
import com.mmc.tmj.service.file.impl.MinioStoreageServiceImpl;
import com.mmc.tmj.service.route.RouteService;
import com.mmc.tmj.service.route.assembler.RouteAssembler;
import com.mmc.tmj.utils.BeanTransFormUtil;
import com.mmc.tmj.utils.FileUtils;
import com.mmc.tmj.utils.SortUtils;
import com.mmc.tmj.utils.TmjBeanPath;
import com.querydsl.core.BooleanBuilder;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/14 16:29
* @Version 1.0
* @description
*/
@Service
public class RouteServiceImpl implements RouteService {
@Autowired
private RouteAssembler routeAssembler;
@Autowired
private RouteRepository routeRepository;
@Resource
private MinioStoreageServiceImpl minioStoreageService;
@Value("${com.chuck.uploadDir}")
private String uploadDir;
@Override
public boolean planRoute(RouteDataDto routeDataDto) {
//查重,转换database bean,
RouteDo routeDo=routeAssembler.fromRouteDto(routeDataDto);
if(null== routeDo){
return false;
//throw new IllegalArgumentException("创建航线时,名称重复");
}
//保存
routeRepository.save(routeDo);
return true;
}
@Override
public boolean updateRoute(RouteDataDto routeDataDto) {
//查重,转换database bean,
RouteDo routeDo=routeAssembler.fromUpdateRouteDto(routeDataDto);
if(null == routeDo){
return false;
//throw new IllegalArgumentException("创建航线时,名称重复");
}
//保存
routeRepository.save(routeDo);
return true;
}
@Override
public void saveUploadRoute(MultipartFile file) {
Path path = FileUtils.dateTimePath(uploadDir);
String fileName = FileUtils.uuidFileName(file.getOriginalFilename());
minioStoreageService.storeElseAndRename(file,path,fileName);
Path routeRe=minioStoreageService.loadFromElse(path,fileName);
String routeJson = FileUtils.jsonString(routeRe);
RouteDo v=routeAssembler.fromRouteByUploadJson(routeJson);
RouteDo byName = routeRepository.findByName(v.getName());
if(null != byName){
throw new IllegalArgumentException("上传航线时,名称重复");
}
routeRepository.save(v);
}
@Override
public boolean deleteByid(int id) {
Optional<RouteDo> byId = routeRepository.findById(id);
Boolean aBoolean = byId.map(
iu -> routeRepository.checkTaskStatusByRouteName(iu.getName()) > 0)
.orElseThrow(() -> new IllegalArgumentException("不存在的航线id"));
if(aBoolean.booleanValue()){
return false;
}
routeRepository.deleteById(id);
return true;
}
@Override
public RouteDetail routeDetail(String name) {
RouteDo byName = routeRepository.findByName(name);
return BeanTransFormUtil.transRouteDetailByRouteDo(byName);
}
@Override
public SliceRespVo<RouteList> pages(String name, int num, int size, String sort) {
BooleanBuilder booleanBuilder = new BooleanBuilder();
Optional.ofNullable(name).filter(StringUtils::isNotEmpty).ifPresent(is->{
booleanBuilder.and(
TmjBeanPath.of(RouteDo.class,"routeDo").createString("name").like("%"+is+"%"));
});
Sort by = Sort.by(SortUtils.ordersOfSort(sort));
PageRequest of = PageRequest.of(num - 1, size, by);
Page<RouteDo> all = (null==booleanBuilder.getValue())? routeRepository.findAll(of) : routeRepository.findAll(booleanBuilder.getValue(), of);
return new SliceRespVo<>(
all.getNumber()+1,
all.getSize(),
all.getContent().stream()
.map(BeanTransFormUtil::transRouteListByRouteDo).collect(
Collectors.toList())
);
}
}
package com.mmc.tmj.service.runProject;
import com.mmc.tmj.entity.other.RunProjectDto;
import com.mmc.tmj.entity.other.RunProjectListDto;
import com.mmc.tmj.entity.param.RunProjectWebDto;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/21 15:02
* @Version 1.0
* @description
*/
public interface RunProjectService {
boolean createRunProject(RunProjectWebDto runProjectWebDto);
List<RunProjectListDto> getRunProjectListSimple(Integer accountId, String projectName);
boolean delete(Integer accountId, Integer id);
RunProjectDto getRunProjectInfo(Integer accountId, Integer id);
}
package com.mmc.tmj.service.runProject.impl;
import com.mmc.tmj.entity.database.RunProjectDo;
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.mapper.RunProjectRepository;
import com.mmc.tmj.service.runProject.RunProjectService;
import com.mmc.tmj.utils.BeanTransFormUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Author lcz
* @Date 2022/5/21 15:02
* @Version 1.0
* @description
*/
@Service
public class RunProjectServiceImpl implements RunProjectService {
@Autowired
private RunProjectRepository runProjectRepository;
@Override
public boolean createRunProject(RunProjectWebDto runProjectWebDto) {
if(null != runProjectRepository.findByProjectName(runProjectWebDto.getProjectName())){
return false;
}
runProjectRepository.save(BeanTransFormUtil.transRunProjectDoByRunProjectWebDto(runProjectWebDto));
return true;
}
@Override
public List<RunProjectListDto> getRunProjectListSimple(Integer accountId, String projectName) {
List<RunProjectDo> allByProjectNameLike = runProjectRepository.findAllByProjectNameLike(
"%"+projectName+"%");
final int[] i={0};
return null!=allByProjectNameLike?allByProjectNameLike.stream().map(it->{
i[0]=i[0]+1;
return BeanTransFormUtil.transRunProjectListDtoByRunProjectDo(it,i[0]);}).collect(
Collectors.toList()) : new ArrayList<>();
}
@Override
public boolean delete(Integer accountId, Integer id) {
Optional<RunProjectDo> byId = runProjectRepository.findById(id);
if(null!=byId && byId.isPresent()){
runProjectRepository.deleteById(id);
return true;
}
return false;
}
@Override
public RunProjectDto getRunProjectInfo(Integer accountId, Integer id) {
Optional<RunProjectDo> byId = runProjectRepository.findById(id);
if(null != byId && byId.isPresent()){
return BeanTransFormUtil.transRunProjectDtoByRunProjectDo(byId.get());
}
return null;
}
}
package com.mmc.tmj.service.task;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.param.TaskWebDto;
import com.mmc.tmj.entity.result.PageRespVo;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.entity.result.TaskReportDto;
import com.mmc.tmj.entity.result.TaskSelectVo;
import java.util.List;
import java.util.Map;
/**
* @Author lcz
* @Date 2022/5/7 16:44
* @Version 1.0
* @description
*/
public interface TaskService {
boolean createTask(TaskWebDto createDto);
PageRespVo<TaskListVo> getTaskList(String taskName, String status, int num, int size);
List<TaskSelectVo> getTaskSelect(String name);
boolean updateTask(TaskWebDto taskWebDto);
TaskInfoVo getTaskInfoById(Integer id);
boolean updateTaskStatus(Integer id,int oldStatus,int newStatus);
boolean deleteTask(Integer id);
void savePhotograph(PhotographDo photographDo);
Integer checkTaskStatus(Integer taskId);
TaskReportDto export(Integer taskId);
Map<String, Object> dataMap(TaskReportDto taskReportDto, String username);
void saveTaskReportInfo(Integer taskId, String s);
}
package com.mmc.tmj.service.task.assembler;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.param.TaskWebDto;
import com.mmc.tmj.mapper.TaskRepository;
import com.mmc.tmj.utils.BeanTransFormUtil;
import java.util.Optional;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
/**
* @Author lcz
* @Date 2022/5/9 9:59
* @Version 1.0
* @description
*/
@Component
public class TaskDoAssembler {
@Resource
private TaskRepository taskRepository;
public TaskDto fromTaskCreateDto(TaskWebDto createDto) {
TaskDto byTaskName = taskRepository.findByTaskName(createDto.getTaskName());
if(null != byTaskName){
return null;
}
return BeanTransFormUtil.transCreateTaskDto(createDto);
}
public TaskDto fromTaskUpdateDto(TaskWebDto taskWebDto) {
if(null==taskWebDto.getId()){
throw new IllegalArgumentException("缺失id");
}
TaskDto byTaskName = taskRepository.findByTaskName(taskWebDto.getTaskName());
TaskDto taskDto = taskRepository.findById(taskWebDto.getId()).get();
if(null != byTaskName && !taskDto.getId().equals(byTaskName.getId())){
return null;
}
return BeanTransFormUtil.transUpdateTaskDto(taskDto,taskWebDto);
}
}
package com.mmc.tmj.service.task.impl;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.param.TaskWebDto;
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.TaskReportDto;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.mapper.PhotographDoRepository;
import com.mmc.tmj.mapper.TaskRepository;
import com.mmc.tmj.service.photo.PhotographService;
import com.mmc.tmj.service.task.TaskService;
import com.mmc.tmj.service.task.assembler.TaskDoAssembler;
import com.mmc.tmj.utils.BeanTransFormUtil;
import com.mmc.tmj.utils.TmjBeanPath;
import com.mmc.tmj.utils.builder.statement.impl.PageRespVoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskInfoVoTmBuilder;
import com.querydsl.core.BooleanBuilder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.stereotype.Service;
/**
* @Author lcz
* @Date 2022/5/7 16:44
* @Version 1.0
* @description
*/
@Service
public class TaskServiceImpl implements TaskService {
//专门干脏活累活的类
@Resource
private TaskDoAssembler taskDoAssembler;
@Resource
private TaskRepository taskRepository;
@Resource
private PhotographDoRepository photographDoRepository;
@Autowired
private PhotographService photographService;
@Override
public boolean createTask(TaskWebDto createDto) {
TaskDto taskDto = taskDoAssembler.fromTaskCreateDto(createDto);
if(null != taskDto){
taskRepository.save(taskDto);
return true;
}
return false;
}
@Override
public PageRespVo<TaskListVo> getTaskList(String taskName, String status, int num, int size) {
BooleanBuilder booleanBuilder = new BooleanBuilder();
Optional.ofNullable(taskName).filter(StringUtils::isNotEmpty).ifPresent(is->{
booleanBuilder.and(TmjBeanPath.of(TaskDto.class,"taskDto").createString("taskName").like("%"+is+"%"));
});
Optional.ofNullable(status).filter(StringUtils::isNotEmpty).ifPresent(is->{
booleanBuilder.and(TmjBeanPath.of(TaskDto.class,"taskDto").createNumber("taskStatus",Integer.class).eq(Integer.parseInt(is)));
});
Page<TaskDto> pages=null;
if(null==booleanBuilder.getValue()){
pages=taskRepository.findAll(PageRequest.of(num, size, Direction.DESC, "id"));
}else {
pages=taskRepository.findAll(booleanBuilder.getValue(),PageRequest.of(num, size, Direction.DESC, "id"));
}
return (PageRespVo) PageRespVoTmBuilder.getInstance()
.init()
.buildNum(pages.getNumber() + 1)
.buildSize(pages.getSize())
.buildTotalNum(pages.getTotalPages())
.buildData(0!=pages.getContent().size()?pages.getContent().stream().map(
BeanTransFormUtil::transTaskListVo).collect(
Collectors.toList()) : pages.getContent())
.getObject();
}
@Override
public List<TaskSelectVo> getTaskSelect(String name) {
List<TaskDto> all = (List<TaskDto>) taskRepository.findAll(
TmjBeanPath.of(TaskDto.class, "taskDto").createString("taskName")
.like("%" + null != name ? name:"" + "%"));
return all.stream().map(BeanTransFormUtil::transTaskSelectVo).collect(Collectors.toList());
}
@Override
public boolean updateTask(TaskWebDto taskWebDto) {
TaskDto taskDto = taskDoAssembler.fromTaskUpdateDto(taskWebDto);
if(null != taskDto){
taskRepository.save(taskDto);
return true;
}
return false;
}
@Override
public TaskInfoVo getTaskInfoById(Integer id) {
Optional<TaskDto> byId = taskRepository.findById(id);
if(!byId.isPresent()){
throw new IllegalArgumentException("任务不存在");
}
return BeanTransFormUtil.transTaskInfoVo(byId.get());
}
@Override
public boolean updateTaskStatus(Integer id,int oldStatus,int newStatus) {
Optional<TaskDto> byId = taskRepository.findById(id);
if(byId.isPresent() && !byId.get().getTaskStatus().equals(oldStatus)){
return false;
}
TaskDto taskDto = byId.get();
taskDto.setTaskStatus(newStatus);
taskDto.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
taskRepository.save(taskDto);
return true;
}
@Override
public boolean deleteTask(Integer id) {
if(null != taskRepository.findByIdAndTaskStatus(id,1)){
taskRepository.deleteById(id);
return true;
}
return false;
}
@Override
public void savePhotograph(PhotographDo photographDo) {
photographDoRepository.save(photographDo);
}
@Override
public Integer checkTaskStatus(Integer taskId) {
return taskRepository.checkTaskStatus(taskId);
}
@Override
public TaskReportDto export(Integer taskId) {
return BeanTransFormUtil.transTaskReportDtoByTaskDto(taskRepository.findById(taskId).get());
}
@Override
public Map<String, Object> dataMap(TaskReportDto taskReportDto, String username) {
List<PhotographListVo> photographByTaskId = photographService.getPhotographByTaskId(
taskReportDto.getTaskId());
return BeanTransFormUtil.transTaskReportMapByParam(taskReportDto,username,photographByTaskId);
}
@Override
public void saveTaskReportInfo(Integer taskId, String uploadPath) {
taskRepository.saveTaskReportInfo(taskId,uploadPath);
}
}
package com.mmc.tmj.service.track;
import com.mmc.tmj.entity.other.DataObj;
/**
* @Author lcz
* @Date 2022/5/18 10:20
* @Version 1.0
* @description
*/
public interface TrackFlightSortieInfoService {
DataObj isExitTable(String tableName);
}
package com.mmc.tmj.service.track;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.TaskDataParam;
import com.mmc.tmj.entity.param.TrackWebDto;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
/**
* @Author lcz
* @Date 2022/5/17 17:49
* @Version 1.0
* @description
*/
public interface TrackService {
void create(TrackWebDto trackWebDto);
DataObj getAircraftFlightSortieData(TaskDataParam readValue);
String getAircraftData(String deviceHardId, String appid);
String getGroundStationByIdData(String flightSortieInfo,HttpServletRequest request);
String getGroundStationData(Map<String, String> map, HttpServletRequest request);
}
package com.mmc.tmj.service.track.impl;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.service.track.TrackFlightSortieInfoService;
import javax.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Author lcz
* @Date 2022/5/18 10:20
* @Version 1.0
* @description
*/
@Service
public class TrackFlightSortieInfoServiceImpl implements TrackFlightSortieInfoService {
@Autowired
private EntityManager entityManager;
@Override
public DataObj isExitTable(String tableName) {
DataObj dataObj = new DataObj();
dataObj.setData(entityManager.createNativeQuery("select data from"+tableName));
return dataObj;
}
}
package com.mmc.tmj.service.track.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.entity.other.DataObj;
import com.mmc.tmj.entity.other.TaskDataParam;
import com.mmc.tmj.entity.param.ApiDataParam;
import com.mmc.tmj.entity.param.TrackWebDto;
import com.mmc.tmj.mapper.TrackRepository;
import com.mmc.tmj.service.track.TrackService;
import com.mmc.tmj.utils.BeanTransFormUtil;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* @Author lcz
* @Date 2022/5/17 17:49
* @Version 1.0
* @description
*/
@Service
public class TrackServiceImpl implements TrackService {
@Autowired
private TrackRepository trackRepository;
@Autowired
private EntityManager entityManager;
@Autowired
private RestTemplate restTemplate;
@Value("${mmc.tmj.restUrl}")
private String restUrl;
@Value("${mmc.tmj.login}")
private String login;
@Value("${mmc.tmj.groundData3}")
private String groundData3;
@Value("${mmc.tmj.groundData}")
private String groundData;
@Value("${mmc.tmj.flyData}")
private String flyData;
@Value("${mmc.tmj.username}")
private String username;
@Value("${mmc.tmj.password}")
private String password;
@Override
public void create(TrackWebDto trackWebDto) {
trackRepository.findById(trackWebDto.getId()).ifPresent(is->{
throw new IllegalArgumentException("数据已存在,请重新操作");
});
trackRepository.save(BeanTransFormUtil.transTrackDoByTrackWebDto(trackWebDto));
}
@Override
public DataObj getAircraftFlightSortieData(TaskDataParam readValue) {
String tableName = "sum_nav_"+readValue.getHashID();
String sql = "select data from "+tableName+"where flight_sort in "+readValue.getFlightSorties();
DataObj dataObj = new DataObj();
try{
dataObj.setData(entityManager.createNativeQuery(sql).getSingleResult());
}catch (Exception e){
dataObj.setData("没有相关数据");
}
return dataObj;
}
@Override
public String getAircraftData(String deviceHardId, String appid) {
Map<String, String> login = login();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("mmc-identity",login.get("mmc-identity"));
httpHeaders.set("FLYINGSESSIONID",login.get("FLYINGSESSIONID"));
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
param.add("deviceHardId",deviceHardId);
param.add("appid",appid);
HttpEntity<MultiValueMap<String,String>> entity = new HttpEntity<>(param,httpHeaders);
String url = restUrl+flyData.replace("{deviceHardId}",deviceHardId).replace("{appid}",appid);
return restTemplate.exchange(url, HttpMethod.GET,entity,String.class).getBody();
}
@Override
public String getGroundStationByIdData(String flightSortieInfo, HttpServletRequest request) {
//Map<String, String> login = login();
HttpHeaders httpHeaders = new HttpHeaders();
//httpHeaders.set("mmc-identity",login.get("mmc-identity"));
httpHeaders.set("token",request.getHeader("token"));
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
param.add("flightSortieInfo",flightSortieInfo);
HttpEntity<MultiValueMap<String,String>> entity = new HttpEntity<>(param,httpHeaders);
String url = restUrl+groundData;
return restTemplate.postForEntity(url,entity,String.class).getBody();
}
@Override
public String getGroundStationData(Map<String, String> map,HttpServletRequest request) {
//Map<String, String> login = login();
HttpHeaders httpHeaders = new HttpHeaders();
//httpHeaders.set("mmc-identity",login.get("mmc-identity"));
httpHeaders.set("token",request.getHeader("token"));
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
ApiDataParam apiDataParam = new ApiDataParam();
apiDataParam.setStart(map.get("start"));
apiDataParam.setEnd(map.get("end"));
apiDataParam.setHashID(map.get("hashID"));
HttpEntity<Object> entity = new HttpEntity<>(JSONObject.toJSONString(apiDataParam),httpHeaders);
String url = restUrl+groundData3;
return restTemplate.exchange(url,HttpMethod.POST,entity,String.class).getBody();
}
public Map<String, String> login() {
// 请求头设置,x-www-form-urlencoded格式的数据
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 提交参数设置
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("username", username);
map.add("password", password);
// 组装请求体
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
// 发送post请求,并打印结果,以String类型接收响应结果JSON字符串
String result =
restTemplate.postForObject(
restUrl+login,
request,
String.class);
DataObj data = JSON.parseObject(result, DataObj.class);
return (Map<String, String>) data.getData();
}
}
package com.mmc.tmj.utils;
import cn.afterturn.easypoi.entity.ImageEntity;
import com.alibaba.fastjson.JSONObject;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.GISMapDo;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.entity.database.RunProjectDo;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.entity.other.ActionFormat;
import com.mmc.tmj.entity.other.PointFormat;
import com.mmc.tmj.entity.other.RouteFormat;
import com.mmc.tmj.entity.other.RouteUploadDto;
import com.mmc.tmj.entity.other.RouteUploadDto.ActionUploadDto;
import com.mmc.tmj.entity.other.RouteUploadDto.RoutePointUploadDto;
import com.mmc.tmj.entity.other.RunProjectDto;
import com.mmc.tmj.entity.other.RunProjectListDto;
import com.mmc.tmj.entity.other.SpeedDistanceTuple;
import com.mmc.tmj.entity.param.ActionWebDto;
import com.mmc.tmj.entity.param.GISMapWebDto;
import com.mmc.tmj.entity.param.RouteDataDto;
import com.mmc.tmj.entity.param.RoutePointDataDto;
import com.mmc.tmj.entity.param.RunProjectWebDto;
import com.mmc.tmj.entity.param.TaskWebDto;
import com.mmc.tmj.entity.param.TrackWebDto;
import com.mmc.tmj.entity.response.ExhibitionPointListMapVo;
import com.mmc.tmj.entity.response.FlyBaseInfo;
import com.mmc.tmj.entity.response.FlyHealthStatuInfo;
import com.mmc.tmj.entity.response.FlyListMapVo;
import com.mmc.tmj.entity.response.FlyManListMapVo;
import com.mmc.tmj.entity.response.ServicePointListMapVo;
import com.mmc.tmj.entity.response.TrainPointListMapVo;
import com.mmc.tmj.entity.result.ActionDetail;
import com.mmc.tmj.entity.result.DeviceSelectDto;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RouteList;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.entity.result.TaskReportDto;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.statement.impl.ActionDetailTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.ActionDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.ActionUploadDtoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.DeviceSelectDtoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.GisMapDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.ImageEntityTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.PhotographDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.PhotographListVoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RouteDetailTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RouteDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RouteListTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RoutePointDetailTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RoutePointDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RoutePointUploadDtoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RouteUploadDtoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.RunProjectDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskDoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskInfoVoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskListVoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskReportDtoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskReportMapTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TaskSelectVoTmBuilder;
import com.mmc.tmj.utils.builder.statement.impl.TrackDoTmBuilder;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;
/**
* @Author lcz
* @Date 2022/5/14 10:03
* @Version 1.0
* @description
*/
public class BeanTransFormUtil {
public static TaskListVo transTaskListVo(TaskDto taskDto){
return TaskListVoTmBuilder.getInstance()
.init()
.buildId(taskDto.getId())
.buildDeviceHardId(taskDto.getDeviceHardId())
.buildCreateWhen(taskDto.getAddTime())
.buildDeviceName(taskDto.getDeviceName())
.buildTaskName(taskDto.getTaskName())
.buildTaskStatus(taskDto.getTaskStatus())
.buildOrganizationName(taskDto.getOrganizationName())
.buildDeviceId(taskDto.getDeviceId())
.buildDeviceStatus(taskDto.getDeviceStatus())
.buildRouteName(taskDto.getRouteName())
.getObject();
}
public static TaskSelectVo transTaskSelectVo(TaskDto taskDto){
return TaskSelectVoTmBuilder.getInstance()
.init()
.buildId(taskDto.getId())
.buildTaskName(taskDto.getTaskName())
.getObject();
}
public static TaskInfoVo transTaskInfoVo(TaskDto taskDto){
return TaskInfoVoTmBuilder.getInstance()
.init()
.buildTaskName(taskDto.getTaskName())
.buildDeviceName(taskDto.getDeviceName())
.buildRouteName(taskDto.getRouteName())
.getObject();
}
public static TaskDto transCreateTaskDto(TaskWebDto createDto){
return TaskDoTmBuilder.getInstance()
.init()
.buildTaskName(createDto.getTaskName())
.buildRouteName(createDto.getRouteName())
.buildOrganizationName(createDto.getOrganizationName())
.buildDeviceId(createDto.getDeviceId())
.buildDeviceName(createDto.getDeviceName())
.buildDeviceStatus(createDto.getDeviceStatus())
.buildRemark(createDto.getRemark())
.buildDeviceHardId(createDto.getDeviceHardId())
.buildTaskStatus(1)
.buildAddTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
.getObject();
}
public static TaskDto transUpdateTaskDto(TaskDto taskDto,TaskWebDto createDto){
return TaskDoTmBuilder.getInstance()
.init(taskDto)
.buildId(createDto.getId())
.buildTaskName(createDto.getTaskName())
.buildRouteName(createDto.getRouteName())
.buildOrganizationName(createDto.getOrganizationName())
.buildDeviceId(createDto.getDeviceId())
.buildDeviceName(createDto.getDeviceName())
.buildRemark(createDto.getRemark())
.buildDeviceHardId(createDto.getDeviceHardId())
.getObject();
}
public static PhotographDo transPhotographDo(Integer taskId,String deviceHardId,String image){
return PhotographDoTmBuilder.getInstance()
.init()
.buildDeviceHardId(deviceHardId)
.buildImages(image)
.buildTaskId(taskId)
.buildCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
.getObject();
}
public static PhotographListVo transPhotographListVo(PhotographDo photographDo){
return PhotographListVoTmBuilder.getInstance()
.init()
.buildImages(photographDo.getImages())
.buildCreateTime(photographDo.getCreateTime())
.getObject();
}
public static RouteDo transRouteDo(RouteDataDto routeDataDto){
return RouteDoTmBuilder.getInstance()
.init()
.buildDefaultAltitude(routeDataDto.getDefaultAltitude())
.buildDefaultPitchAngle(routeDataDto.getDefaultPitchAngle())
.buildDefaultSpeed(routeDataDto.getDefaultSpeed())
.buildDefaultYawAngle(routeDataDto.getDefaultYawAngle())
.buildName(routeDataDto.getName())
.buildPoints(null!=routeDataDto.getPoints()?routeDataDto.getPoints().stream().map(BeanTransFormUtil::transRoutePointDo).collect(
Collectors.toList()):null)
.getObject();
}
public static RoutePointDo transRoutePointDo(RoutePointDataDto routePointDataDto){
return RoutePointDoTmBuilder.getInstance()
.init()
.buildAltitude(routePointDataDto.getAltitude())
.buildSpeed(routePointDataDto.getSpeed())
.buildLatitude(routePointDataDto.getLatitude())
.buildLongitude(routePointDataDto.getLongitude())
.buildPitchAngle(routePointDataDto.getPitchAngle())
.buildYawAngle(routePointDataDto.getYawAngle())
.buildUuid(routePointDataDto.getUuid())
.buildActions(routePointDataDto.getActions().stream().map(BeanTransFormUtil::transActionDo).collect(Collectors.toList()))
.getObject();
}
public static ActionDo transActionDo(ActionWebDto actionWebDto){
return ActionDoTmBuilder.getInstance()
.init()
.buildTakeSecond(actionWebDto.getTakeSecond())
.buildActionType(actionWebDto.getType())
.getObject();
}
public static RouteDo transUpdateRouteDo(RouteDo oldRouteDo, RouteDataDto routeDataDto) {
return RouteDoTmBuilder.getInstance()
.init(oldRouteDo)
.buildDefaultAltitude(routeDataDto.getDefaultAltitude())
.buildDefaultPitchAngle(routeDataDto.getDefaultPitchAngle())
.buildDefaultSpeed(routeDataDto.getDefaultSpeed())
.buildDefaultYawAngle(routeDataDto.getDefaultYawAngle())
.buildName(routeDataDto.getName())
.buildPoints(null!=routeDataDto.getPoints()?routeDataDto.getPoints().stream().map(BeanTransFormUtil::transRoutePointDo).collect(
Collectors.toList()):null)
.getObject();
}
public static RouteDo transRouteDoByUpload(String routeJson) {
RouteFormat routeFormat = transRouteFormatByUploadJson(routeJson);
RouteUploadDto routeUploadDto = transRouteUploadDtoByRouteFormat(routeFormat);
return RouteDoTmBuilder.getInstance()
.init()
.buildDefaultAltitude(routeUploadDto.getDefaultAltitude())
.buildDefaultPitchAngle(routeUploadDto.getDefaultPitchAngle())
.buildDefaultSpeed(routeUploadDto.getDefaultSpeed())
.buildDefaultYawAngle(routeUploadDto.getDefaultYawAngle())
.buildName(routeUploadDto.getName())
.buildPoints(null!=routeUploadDto.getPoints()?routeUploadDto.getPoints().stream().map(BeanTransFormUtil::transRoutePointDoByUpload).collect(
Collectors.toList()):null)
.buildRemark(routeUploadDto.getRemark())
.getObject();
}
public static RoutePointDo transRoutePointDoByUpload(RoutePointUploadDto routePointUploadDto){
return RoutePointDoTmBuilder.getInstance()
.init()
.buildAltitude(routePointUploadDto.getAltitude())
.buildSpeed(routePointUploadDto.getSpeed())
.buildLatitude(routePointUploadDto.getLatitude())
.buildLongitude(routePointUploadDto.getLongitude())
.buildPitchAngle(routePointUploadDto.getPitchAngle())
.buildYawAngle(routePointUploadDto.getYawAngle())
.buildUuid(routePointUploadDto.getUuid())
.buildActions(routePointUploadDto.getActions().stream().map(BeanTransFormUtil::transActionDoByUpload).collect(Collectors.toList()))
.getObject();
}
public static ActionDo transActionDoByUpload(ActionUploadDto actionUploadDto){
return ActionDoTmBuilder.getInstance()
.init()
.buildTakeSecond(actionUploadDto.getTakeSecond())
.buildActionType(actionUploadDto.getType())
.getObject();
}
public static RouteFormat transRouteFormatByUploadJson(String routeJson){
return JSONObject.parseObject(routeJson, RouteFormat.class);
}
public static RouteUploadDto transRouteUploadDtoByRouteFormat(RouteFormat routeFormat){
return RouteUploadDtoTmBuilder.getInstance()
.init()
.buildDefaultAltitude(routeFormat.getLine().getBaseAltitude())
.buildDefaultSpeed(routeFormat.getLine().getBaseSpeed())
.buildDefaultPitchAngle(0.0)
.buildDefaultYawAngle(0.0)
.buildPoints(null!=routeFormat.getPoints()?routeFormat.getPoints().stream().map(BeanTransFormUtil::transRoutePointUploadDtoByPointFormat).collect(
Collectors.toList()):null)
.getObject();
}
public static RoutePointUploadDto transRoutePointUploadDtoByPointFormat(PointFormat pointFormat){
return RoutePointUploadDtoTmBuilder.getInstance()
.init()
.buildName(pointFormat.getDescribe())
.buildAltitude(pointFormat.getAlt())
.buildSpeed(3.0)
.buildLatitude(pointFormat.getLat())
.buildLongitude(pointFormat.getLon())
.buildPitchAngle(pointFormat.getGimbalPitch())
.buildYawAngle(pointFormat.getPitch())
.buildUuid(UUID.randomUUID().toString())
.buildActions(pointFormat.getActions().stream().map(BeanTransFormUtil::transActionUploadDtoByActionFormat).collect(Collectors.toList()))
.getObject();
}
public static ActionUploadDto transActionUploadDtoByActionFormat(ActionFormat actionFormat){
return ActionUploadDtoTmBuilder.getInstance()
.init()
.buildTakeSecond(actionFormat.getActionParam())
.buildActionType(actionFormat.getActionType())
.getObject();
}
public static RouteDetail transRouteDetailByRouteDo(RouteDo routeDo){
return RouteDetailTmBuilder.getInstance()
.init()
.buildId(routeDo.getId())
.buildName(routeDo.getName())
.buildPoints(routeDo.getPoints().stream().map(BeanTransFormUtil::transRoutePointDetailByRoutePointDo).collect(
Collectors.toList()))
.getObject();
}
public static RoutePointDetail transRoutePointDetailByRoutePointDo(RoutePointDo routePointDo){
return RoutePointDetailTmBuilder.getInstance()
.init()
.buildAltitude(routePointDo.getAltitude())
.buildLatitude(routePointDo.getLatitude())
.buildSpeed(routePointDo.getSpeed())
.buildLongitude(routePointDo.getLongitude())
.buildPitchAngle(routePointDo.getPitchAngle())
.buildYawAngle(routePointDo.getYawAngle())
.buildUuid(routePointDo.getUuid())
.buildActions(routePointDo.getActions().stream().map(BeanTransFormUtil::transActionDetailByActionDo).collect(Collectors.toList()))
.getObject();
}
public static ActionDetail transActionDetailByActionDo(ActionDo actionDo){
return ActionDetailTmBuilder.getInstance()
.init()
.buildTakeSecond(actionDo.getTakeSecond())
.buildType(actionDo.getType())
.getObject();
}
public static RouteList transRouteListByRouteDo(RouteDo routeDo){
return RouteListTmBuilder.getInstance()
.init()
.buildCreateWhen(null!=routeDo.getCreateWhen() ? DateUtils.dateTimeString(routeDo.getCreateWhen(),"") : null)
.buildDefaultAltitude(routeDo.getDefaultAltitude())
.buildDefaultSpeed(routeDo.getDefaultSpeed())
.buildName(routeDo.getName())
.buildRemark(routeDo.getRemark())
.buildExpectTakeMinute(expectTakeMinute(routeDo.getPoints()))
.buildKmOfRoute(kmOfRoute(routeDo.getPoints()))
.buildNumOfPoint(routeDo.getPoints().size())
.buildId(routeDo.getId())
.getObject();
}
public static GISMapDo transGISMapDoByGISMapWebDto(GISMapWebDto gisMapWebDto){
return GisMapDoTmBuilder.getInstance()
.init()
.buildAddress(gisMapWebDto.getAddresss())
.buildLatitude(gisMapWebDto.getLatitude())
.buildLongitude(gisMapWebDto.getLongitude())
.buildUnit(gisMapWebDto.getUnit())
.buildName(gisMapWebDto.getName())
.getObject();
}
public static DeviceSelectDto transDeviceSelectDtoByDataObj(Map<String, Object> map){
return DeviceSelectDtoTmBuilder.getInstance()
.init()
.buildDevice_id((Integer)map.get("device_id"))
.buildDeviceHardId((String) map.get("deviceHardId"))
.buildDeviceHashId((String) map.get("deviceHashId"))
.buildDeviceName((String) map.get("deviceName"))
.buildDeviceSerial((String) map.get("deviceSerial"))
.buildSocketStatus((Integer)map.get("socketStatus"))
.getObject();
}
public static TrackDo transTrackDoByTrackWebDto(TrackWebDto trackWebDto){
return TrackDoTmBuilder.getInstance()
.init()
.buildId(trackWebDto.getId())
.getObject();
}
public static TaskReportDto transTaskReportDtoByTaskDto(TaskDto taskDto){
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return TaskReportDtoTmBuilder.getInstance()
.init()
.buildTaskId(taskDto.getId())
.buildTaskName(taskDto.getTaskName())
.buildTaskDate(LocalDateTime.parse(taskDto.getAddTime(),df))
.buildStartTime(LocalDateTime.parse(taskDto.getStartTime(),df))
.buildEndTime(LocalDateTime.parse(taskDto.getEndTime(),df))
.buildRemark(taskDto.getRemark())
.getObject();
}
public static Map<String,Object> transTaskReportMapByParam(TaskReportDto taskReportDto, String username,List<PhotographListVo> photograph){
return TaskReportMapTmBuilder.getInstance()
.init()
.buildTaskId(taskReportDto.getTaskId())
.buildTaskName(taskReportDto.getTaskName())
.buildTaskDate(taskReportDto.getTaskDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
.buildTaskTime((null!=photograph && photograph.size()>0) ? photograph.get(0).getCreateTime() : new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
.buildImageList((null!=photograph && photograph.size()>0) ? photograph.stream().map(BeanTransFormUtil::transImageEntityByPhotographListVo).collect(
Collectors.toList()) : new ArrayList<>())
.buildDeviceHardId(taskReportDto.getDeviceHardId())
.buildExecutePerson(username)
.buildReportAddTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
.buildRemark(taskReportDto.getRemark())
.getObject();
}
public static ImageEntity transImageEntityByPhotographListVo(PhotographListVo photographListVo){
return ImageEntityTmBuilder.getInstance()
.init()
.buildHeight(170)
.buildWidth(380)
.buildType(ImageEntity.URL)
.buildUrl(photographListVo.getImages())
.getObject();
}
public static ImageEntity transImageEntityByPhotographListVoTest(String url){
return ImageEntityTmBuilder.getInstance()
.init()
.buildHeight(170)
.buildWidth(380)
.buildType(ImageEntity.URL)
.buildUrl(url)
.getObject();
}
public static RunProjectDo transRunProjectDoByRunProjectWebDto(RunProjectWebDto runProjectWebDto){
return RunProjectDoTmBuilder.getInstance()
.init()
.buildProjectName(runProjectWebDto.getProjectName())
.buildProjectDescript(runProjectWebDto.getProjectDescript())
.buildProjectAddress("深圳科比特")
.buildLongitude(103.54682424)
.buildLatitude(23.564865424)
.getObject();
}
public static RunProjectListDto transRunProjectListDtoByRunProjectDo(RunProjectDo runProjectDo,Integer id){
return RunProjectListDto.builder()
.projectName(runProjectDo.getProjectName())
.order(id)
.id(runProjectDo.getId())
.build();
}
public static RunProjectDto transRunProjectDtoByRunProjectDo(RunProjectDo runProjectDo){
return RunProjectDto.builder()
.projectName(runProjectDo.getProjectName())
.projectDescript(runProjectDo.getProjectDescript())
.id(runProjectDo.getId())
.build();
}
public static FlyListMapVo transFlyListMapVoByMap(Map map,String id,String name){
return FlyListMapVo.builder()
.latitude((Double) map.get("lat"))
.longitude((Double) map.get("lon"))
.id(Integer.parseInt(id))
.order(Integer.parseInt(id))
.flyInfo(transFlyBaseInfoByMap(map,name,Integer.parseInt(id)))
.healthStatuInfo(transFlyHealthStatuInfoByRamdown())
.build();
}
public static FlyBaseInfo transFlyBaseInfoByMap(Map map,String name,Integer id){
return FlyBaseInfo.builder()
.flyType((String) map.get("device_name"))
.flyName(name)
.id(id)
.imageType(transSumalationImageTypeMap().get((String) map.get("device_name")))
.flyModel("SN_"+UUID.randomUUID().toString())
.flySeriaNum(UUID.randomUUID().toString())
.onlineStatus("在线")
.flyStatus("忙碌")
.build();
}
public static FlyHealthStatuInfo transFlyHealthStatuInfoByRamdown(){
return FlyHealthStatuInfo.builder()
.accelerationStatus(1)
.airborneComputerStatus(1)
.angularVilocityStatus(2)
.attitudeUnlockStatus(1)
.barometerStatus(1)
.compassStatus(3)
.distanceDetectionStatus(1)
.electricMachineryStatus(1)
.electronicFence(1)
.fixeHeightStatus(1)
.gyroscopeStatus(1)
.headingControlStatus(1)
.horizontalPositionStatus(1)
.laserPositiStatus(1)
.loggingStatus(1)
.obsAvoidanceStatus(2)
.optailFlowStatus(1)
.positiModelStatus(1)
.powerStatus(1)
.rdpStatus(3)
.powerSupplyStatus(1)
.remoteControlStatus(1)
.residualAccelerationStatus(3)
.residualCompassStatus(1)
.residualGyroscopeStatus(3)
.satelliteCommunication(1)
.simulatedFlight(1)
.takeOffDetectionStatus(3)
.verticalPositionStatus(1)
.build();
}
public static Map<String,Integer> transSumalationImageTypeMap(){
Map<String,Integer> map = new HashMap<>();
map.put("入云龙-001",3);
map.put("玉麒麟",2);
map.put("入云龙",3);
map.put("插翅虎-M12",4);
map.put("小旋风Ⅰ",5);
map.put("插翅虎-M9",6);
return map;
}
public static FlyManListMapVo transFlyManListMapVoByMap(Map map,String id){
return FlyManListMapVo.builder()
.id(Integer.parseInt(id))
.latitude((Double) map.get("lat"))
.longitude((Double) map.get("lon"))
.name((String) map.get("account_name"))
.phone((String) map.get("phone_num"))
.order(Integer.parseInt(id))
.build();
}
public static TrainPointListMapVo transTrainPointListMapVoByMap(Map map,String id){
return TrainPointListMapVo.builder()
.id(Integer.parseInt(id))
.latitude(Double.parseDouble(map.get("lat")+""))
.longitude(Double.parseDouble(map.get("lon")+""))
.trainAddress((String) map.get("address"))
.trainName((String) map.get("name"))
.order(Integer.parseInt(id))
.build();
}
public static ServicePointListMapVo transServicePointListMapVoByMap(Map map,String id){
return ServicePointListMapVo.builder()
.id(Integer.parseInt(id))
.latitude(Double.parseDouble(map.get("lat")+""))
.longitude(Double.parseDouble(map.get("lon")+""))
.serviceAddress((String) map.get("address"))
.serviceName((String) map.get("name"))
.order(Integer.parseInt(id))
.build();
}
public static ExhibitionPointListMapVo transExhibitionPointListMapVoByMap(Map map,String id){
return ExhibitionPointListMapVo.builder()
.id(Integer.parseInt(id))
.latitude(Double.parseDouble(map.get("lat")+""))
.longitude(Double.parseDouble(map.get("lon")+""))
.exhibitionAddress((String) map.get("address"))
.exhibitionName((String) map.get("name"))
.order(Integer.parseInt(id))
.build();
}
//预计时长(单位min)
private static double expectTakeMinute(List<RoutePointDo> points) {
//speedKmTuples(points);
return speedKmTuples(points).stream().map(SpeedDistanceTuple::takeMinute).reduce(0.0, Double::sum);
}
//航线长度(单位km)
private static double kmOfRoute(List<RoutePointDo> points) {
return speedKmTuples(points).stream().map(SpeedDistanceTuple::getKm).reduce(0.0, Double::sum);
}
//获取
private static List<SpeedDistanceTuple> speedKmTuples(List<RoutePointDo> points) {
List<SpeedDistanceTuple> tuples = new ArrayList<>();
for (int i = 0; i < points.size(); i++) {
RoutePointDo point = points.get(i);
RoutePointDo nextPoint = (i + 1) >= points.size() ? null : points.get(i + 1);
if (nextPoint == null) {
return tuples;
}
tuples.add(
new SpeedDistanceTuple(
point.getSpeed(), kmBetween(point.getLatitude(), point.getLongitude(), nextPoint.getLatitude(), nextPoint.getLongitude())));
}
return tuples;
}
private static double kmBetween(double lat1, double lng1, double lat2, double lng2){
return GpsUtils.getKmDistance(
lat1, lng1, lat2, lng2);
}
}
package com.mmc.tmj.utils;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Random;
/**
* @Author lcz
* @Date 2022/5/16 14:19
* @Version 1.0
* @description
*/
public class CodeUtils {
private CodeUtils() {
}
private static final Random RANDOM = new Random();
private static final String CODE_FORMAT = "yyyyMMddHHmmss";
private static final int BOUND = 1000;
private static String codeSuffix(LocalDateTime dateTime) {
return dateTime.format(DateTimeFormatter.ofPattern(CODE_FORMAT)) + RANDOM.nextInt(BOUND);
}
private static String fixedCodeSuffix(LocalDateTime dateTime) {
return dateTime.format(DateTimeFormatter.ofPattern(CODE_FORMAT)) + (int) ((Math.random() * 9 + 1) * 100);
}
// Public Method
public static String code(String prefix) {
return prefix + fixedCodeSuffix(LocalDateTime.now());
}
public static String code(String prefix, LocalDateTime dateTime) {
return prefix + fixedCodeSuffix(dateTime);
}
}
package com.mmc.tmj.utils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @Author lcz
* @Date 2022/5/16 14:20
* @Version 1.0
* @description
*/
public class DateUtils {
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
// For Date
public static String dateString(LocalDate date) {
return date.format(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT));
}
public static String dateString(LocalDate date, String format) {
return date.format(DateTimeFormatter.ofPattern(format));
}
public static String dateTimeString(LocalDateTime dateTime, String format) {
return dateTime.format(DateTimeFormatter.ofPattern(format));
}
}
package com.mmc.tmj.utils;
import com.google.common.io.CharStreams;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.UUID;
import javax.servlet.http.HttpServletResponse;
import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author lcz
* @Date 2022/5/16 14:18
* @Version 1.0
* @description
*/
public abstract class FileUtils {
/**
* 下载文件
*
* @param response
* @param file
* @param newFileName
*/
public static void downloadFile(HttpServletResponse response, File file, String newFileName) {
try {
response.setHeader("Content-Disposition", "attachment; filename=" + newFileName);
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
InputStream is = new FileInputStream(file.getAbsolutePath());
BufferedInputStream bis = new BufferedInputStream(is);
int length = 0;
byte[] temp = new byte[1 * 1024 * 10];
while ((length = bis.read(temp)) != -1) {
bos.write(temp, 0, length);
}
bos.flush();
bis.close();
bos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String timestampFileName(String originalFilename) {
String suffix = FileUtils.suffix(originalFilename);
String newName = CodeUtils.code("") + suffix;
return newName;
}
public static String uuidFileName(String originalFilename) {
String suffix = FileUtils.suffix(originalFilename);
String newName = UUID.randomUUID() + suffix;
return newName;
}
public static String suffix(String filename) {
int lastIndex = filename.lastIndexOf(".");
String suffix = filename.substring(lastIndex);
return suffix;
}
public static BasicFileAttributes fileAttributes(Path path) {
BasicFileAttributes attr = null;
try {
attr = Files.readAttributes(path, BasicFileAttributes.class);
} catch (IOException e) {
e.printStackTrace();
}
return attr;
}
public static LocalDateTime createTime(Path path) {
BasicFileAttributes attr = FileUtils.fileAttributes(path);
LocalDateTime createTime =
LocalDateTime.ofInstant(attr.creationTime().toInstant(), ZoneId.systemDefault());
return createTime;
}
private static final String SLASH_DATE_FORMAT = "yyyy/MM/dd";
public static File dateTimeFolder(String parentPath) {
String format = DateUtils.dateString(LocalDate.now(), SLASH_DATE_FORMAT);
File folder = new File(parentPath + format);
if (!folder.isDirectory()) {
folder.mkdirs();
}
return folder;
}
public static String dateTimeFolderAndUUFilename(String parentPath, String originalFilename) {
String format = DateUtils.dateString(LocalDate.now(), SLASH_DATE_FORMAT);
File folder = new File(parentPath + format);
if (!folder.isDirectory()) {
folder.mkdirs();
}
return folder.getAbsolutePath() + FileUtils.uuidFileName(originalFilename);
}
public static Path dateTimePath(String parentPath) {
return FileUtils.dateTimeFolder(parentPath).toPath();
}
public static String jsonString(File file) {
String jsonStr = "";
try (FileInputStream inputStream = new FileInputStream(file)) {
int length = inputStream.available();
byte[] bytes = new byte[length];
inputStream.read(bytes);
jsonStr = new String(bytes, StandardCharsets.UTF_8);
} catch (Exception e) {
e.printStackTrace();
throw new IllegalArgumentException(e);
}
return jsonStr;
}
@Deprecated
public static String jsonString(MultipartFile file) throws UnsupportedOperationException {
String jsonStr = "";
// TODO
return jsonStr;
}
public static String jsonString(Path path) {
String jsonStr = "";
try (Reader reader = Files.newBufferedReader(path); ) {
jsonStr = CharStreams.toString(reader);
} catch (IOException e) {
e.printStackTrace();
throw new IllegalArgumentException(e);
}
return jsonStr;
}
/**
* 采用Files.newBufferedReader(file.getFile().toPath())在jar中会出现cannot be resolved to absolute file
* path because it does not reside in the file system: jar
*
* @param file
* @return
* @throws UnsupportedOperationException
*/
public static String jsonString(Resource file) throws UnsupportedOperationException {
String jsonStr = "";
try (InputStream is = file.getInputStream()) {
jsonStr = inputStreamToString(is);
} catch (IOException e) {
e.printStackTrace();
throw new IllegalArgumentException(e);
}
return jsonStr;
}
private static String inputStreamToString(InputStream is) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int length;
while ((length = is.read(buffer)) != -1) {
os.write(buffer, 0, length);
}
return os.toString("UTF-8");
}
}
package com.mmc.tmj.utils;
/**
* @Author lcz
* @Date 2022/5/17 14:33
* @Version 1.0
* @description
*/
public class GpsUtils {
/** 取赤道半径 */
private static double EARTH_RADIUS = 6378.137;
private static double getRadian(double degree) {
return degree * Math.PI / 180.0;
}
public static double getKmDistance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = getRadian(lat1);
double radLat2 = getRadian(lat2);
double a = radLat1 - radLat2;
double b = getRadian(lng1) - getRadian(lng2);
double s =
2
* Math.asin(
Math.sqrt(
Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
return s;
}
}
package com.mmc.tmj.utils;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import javax.xml.bind.DatatypeConverter;
public class JWTUtil {
public static final String X_USER_ID = "x-user-id";
public static final String TOKEN_PREFIX = "bearer;"; // token前缀
/** 解析jwt */
public static Claims parseJWT(String jsonWebToken, String base64Security) {
try {
Claims claims =
Jwts.parser()
.setSigningKey(DatatypeConverter.parseBase64Binary(base64Security))
.parseClaimsJws(jsonWebToken)
.getBody();
return claims;
} catch (Exception ex) {
return null;
}
}
}
package com.mmc.tmj.utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
/**
* @Author lcz
* @Date 2022/5/17 10:51
* @Version 1.0
* @description
*/
public class SortUtils {
public static List<Order> ordersOfSort(String sort) {
if(ObjectUtils.isEmpty(sort)){
return Arrays.asList(Order.by("id"));
}
List<Order> orders = new ArrayList<>();
String[] split = sort.split(",");
for(String sp:split){
orders.add(order(sp));
}
return orders;
}
private static Order order(String orderOfStr) {
Direction dir = Direction.ASC;
String proper = orderOfStr;
if(hasPlusOrMinusSymbol(orderOfStr)){
proper=orderOfStr.substring(1);
}
if(orderOfStr.startsWith("-")){
dir=Direction.DESC;
}
return new Order(dir,proper);
}
private static boolean hasPlusOrMinusSymbol(String orderOfStr) {
if(ObjectUtils.isEmpty(orderOfStr)){
return false;
}
if(orderOfStr.startsWith("-") || orderOfStr.startsWith("+") ){
return true;
}
return false;
}
}
package com.mmc.tmj.utils;
import com.mmc.tmj.entity.database.TaskDto;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.PathType;
import com.querydsl.core.types.dsl.ArrayPath;
import com.querydsl.core.types.dsl.BeanPath;
import com.querydsl.core.types.dsl.BooleanPath;
import com.querydsl.core.types.dsl.CollectionPath;
import com.querydsl.core.types.dsl.ComparablePath;
import com.querydsl.core.types.dsl.DatePath;
import com.querydsl.core.types.dsl.DateTimePath;
import com.querydsl.core.types.dsl.EnumPath;
import com.querydsl.core.types.dsl.ListPath;
import com.querydsl.core.types.dsl.MapPath;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.PathInits;
import com.querydsl.core.types.dsl.SetPath;
import com.querydsl.core.types.dsl.SimpleExpression;
import com.querydsl.core.types.dsl.SimplePath;
import com.querydsl.core.types.dsl.StringPath;
import com.querydsl.core.types.dsl.TimePath;
import javax.annotation.Nullable;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/12 11:19
* @Version 1.0
* @description
*/
public class TmjBeanPath extends BeanPath<T> {
private static TmjBeanPath tmjBeanPath;
@Override
public <P extends Path<?>> P add(P path) {
return super.add(path);
}
@Override
public <A, E> ArrayPath<A, E> createArray(String property, Class<? super A> type) {
return super.createArray(property, type);
}
@Override
public BooleanPath createBoolean(String property) {
return super.createBoolean(property);
}
@Override
public <A extends Number & Comparable<?>> NumberPath<A> createNumber(String property,
Class<? super A> type) {
//NumberPath<A> number = super.createNumber(property, type);
return super.add(new TmjNumberPath<A>((Class) type, forProperty(property)));
}
@Override
public <A extends Comparable> ComparablePath<A> createComparable(String property,
Class<? super A> type) {
return super.createComparable(property, type);
}
@Override
public <A extends Enum<A>> EnumPath<A> createEnum(String property, Class<A> type) {
return super.createEnum(property, type);
}
@Override
public <A extends Comparable> DatePath<A> createDate(String property,
Class<? super A> type) {
return super.createDate(property, type);
}
@Override
public <A extends Comparable> DateTimePath<A> createDateTime(String property,
Class<? super A> type) {
return super.createDateTime(property, type);
}
@Override
public <A> SimplePath<A> createSimple(String property, Class<? super A> type) {
return super.createSimple(property, type);
}
@Override
public StringPath createString(String property) {
return super.createString(property);
}
@Override
public <A extends Comparable> TimePath<A> createTime(String property,
Class<? super A> type) {
return super.createTime(property, type);
}
@Override
public PathMetadata forProperty(String property) {
return super.forProperty(property);
}
public static TmjBeanPath of(Class type,String variable){
if (null != tmjBeanPath) {
if(tmjBeanPath.getType().equals(type) && tmjBeanPath.getMetadata().getElement().equals(variable)){
return tmjBeanPath;
}
}
tmjBeanPath=new TmjBeanPath(type, new PathMetadata(null, variable, PathType.VARIABLE));
return tmjBeanPath;
}
public TmjBeanPath(Class<? extends T> type, String variable) {
super(type, variable);
}
public TmjBeanPath(Class<? extends T> type, Path<?> parent,
String property) {
super(type, parent, property);
}
public TmjBeanPath(Class<? extends T> type, PathMetadata metadata) {
super(type, metadata);
}
public TmjBeanPath(Class<? extends T> type, PathMetadata metadata,
@Nullable PathInits inits) {
super(type, metadata, inits);
}
}
package com.mmc.tmj.utils;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.PathImpl;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.dsl.NumberPath;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/12 14:18
* @Version 1.0
* @description
*/
public class TmjNumberPath<T extends Number & Comparable<?>> extends NumberPath<T> {
protected TmjNumberPath(PathImpl<T> mixin) {
super(mixin);
}
protected TmjNumberPath(Class<? extends T> type, Path<?> parent,
String property) {
super(type, parent, property);
}
protected TmjNumberPath(Class<? extends T> type, PathMetadata metadata) {
super(type, metadata);
}
protected TmjNumberPath(Class<? extends T> type, String var) {
super(type, var);
}
}
package com.mmc.tmj.utils.builder;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/9 10:15
* @Version 1.0
* @description
*/
public abstract class TmBuilder<T> {
public abstract T getObject();
public abstract TmBuilder init(T object);
public abstract TmBuilder init();
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.result.ActionDetail;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.enums.ActionType;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class ActionDetailStatementTmBuilder<T> extends TmBuilder<ActionDetail> {
protected ActionDetail actionDetail = new ActionDetail();
@Override
public abstract ActionDetailStatementTmBuilder init(ActionDetail object);
@Override
public abstract ActionDetailStatementTmBuilder init();
public abstract ActionDetailStatementTmBuilder buildType(ActionType type);
public abstract ActionDetailStatementTmBuilder buildTakeSecond(Integer takeSecond);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.enums.ActionType;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class ActionDoStatementTmBuilder<T> extends TmBuilder<ActionDo> {
protected ActionDo actionDo = new ActionDo();
@Override
public abstract ActionDoStatementTmBuilder init(ActionDo object);
@Override
public abstract ActionDoStatementTmBuilder init();
public abstract ActionDoStatementTmBuilder buildId(Integer id);
public abstract ActionDoStatementTmBuilder buildActionType(ActionType actionType);
public abstract ActionDoStatementTmBuilder buildTakeSecond(Integer takeSecond);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.other.RouteUploadDto.ActionUploadDto;
import com.mmc.tmj.enums.ActionType;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class ActionUploadDtoStatementTmBuilder<T> extends TmBuilder<ActionUploadDto> {
protected ActionUploadDto actionUploadDto = new ActionUploadDto();
@Override
public abstract ActionUploadDtoStatementTmBuilder init(ActionUploadDto object);
@Override
public abstract ActionUploadDtoStatementTmBuilder init();
public abstract ActionUploadDtoStatementTmBuilder buildActionType(ActionType actionType);
public abstract ActionUploadDtoStatementTmBuilder buildTakeSecond(Integer takeSecond);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.result.DeviceSelectDto;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class DeviceSelectDtoStatementTmBuilder<T> extends TmBuilder<DeviceSelectDto> {
protected DeviceSelectDto deviceSelectDto = new DeviceSelectDto();
@Override
public abstract DeviceSelectDtoStatementTmBuilder init(DeviceSelectDto object);
@Override
public abstract DeviceSelectDtoStatementTmBuilder init();
public abstract DeviceSelectDtoStatementTmBuilder buildDevice_id(Integer device_id);
public abstract DeviceSelectDtoStatementTmBuilder buildDeviceName(String deviceName);
public abstract DeviceSelectDtoStatementTmBuilder buildSocketStatus(Integer socketStatus);
public abstract DeviceSelectDtoStatementTmBuilder buildDeviceSerial(String deviceSerial);
public abstract DeviceSelectDtoStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract DeviceSelectDtoStatementTmBuilder buildDeviceHashId(String deviceHashId);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.GISMapDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class GisMapDoStatementTmBuilder<T> extends TmBuilder<GISMapDo> {
protected GISMapDo gisMapDo = new GISMapDo();
@Override
public abstract GisMapDoStatementTmBuilder init(GISMapDo object);
@Override
public abstract GisMapDoStatementTmBuilder init();
public abstract GisMapDoStatementTmBuilder buildId(Integer id);
public abstract GisMapDoStatementTmBuilder buildName(String name);
public abstract GisMapDoStatementTmBuilder buildLatitude(double latitude);
public abstract GisMapDoStatementTmBuilder buildLongitude(double longitude);
public abstract GisMapDoStatementTmBuilder buildAddress(String altitude);
public abstract GisMapDoStatementTmBuilder buildUnit(String unit);
}
package com.mmc.tmj.utils.builder.statement;
import cn.afterturn.easypoi.entity.ImageEntity;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class ImageEntityStatementTmBuilder<T> extends TmBuilder<ImageEntity> {
protected ImageEntity imageEntity = new ImageEntity();
@Override
public abstract ImageEntityStatementTmBuilder init(ImageEntity object);
@Override
public abstract ImageEntityStatementTmBuilder init();
public abstract ImageEntityStatementTmBuilder buildHeight(int height);
public abstract ImageEntityStatementTmBuilder buildWidth(int width);
public abstract ImageEntityStatementTmBuilder buildUrl(String url);
public abstract ImageEntityStatementTmBuilder buildType(String type);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.result.PageRespVo;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/12 11:51
* @Version 1.0
* @description
*/
public abstract class PageRespVoStatementTmBuilder<T> extends TmBuilder<PageRespVo<T>> {
protected PageRespVo<T> pageRespVo = new PageRespVo<T>();
@Override
public PageRespVoStatementTmBuilder init(PageRespVo<T> object) {
pageRespVo = object;
return this;
}
@Override
public PageRespVoStatementTmBuilder init() {
return this;
}
public abstract PageRespVoStatementTmBuilder buildTotalSize(Long totalSize);
public abstract PageRespVoStatementTmBuilder buildTotalNum(Integer totalNum);
public abstract PageRespVoStatementTmBuilder buildNum(Integer num);
public abstract PageRespVoStatementTmBuilder buildSize(Integer size);
public abstract PageRespVoStatementTmBuilder buildData(List<T> data);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class PhotographDoStatementTmBuilder<T> extends TmBuilder<PhotographDo> {
protected PhotographDo photographDo = new PhotographDo();
@Override
public abstract PhotographDoStatementTmBuilder init(PhotographDo object);
@Override
public abstract PhotographDoStatementTmBuilder init();
public abstract PhotographDoStatementTmBuilder buildId(Integer id);
public abstract PhotographDoStatementTmBuilder buildTaskId(Integer taskId);
public abstract PhotographDoStatementTmBuilder buildImages(String image);
public abstract PhotographDoStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract PhotographDoStatementTmBuilder buildCreateTime(String createTime);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class PhotographListVoStatementTmBuilder<T> extends TmBuilder<PhotographListVo> {
protected PhotographListVo photographListVo = new PhotographListVo();
@Override
public abstract PhotographListVoStatementTmBuilder init(PhotographListVo object);
@Override
public abstract PhotographListVoStatementTmBuilder init();
public abstract PhotographListVoStatementTmBuilder buildImages(String images);
public abstract PhotographListVoStatementTmBuilder buildCreateTime(String createTime);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RouteDetailStatementTmBuilder<T> extends TmBuilder<RouteDetail> {
protected RouteDetail routeDetail = new RouteDetail();
@Override
public abstract RouteDetailStatementTmBuilder init(RouteDetail object);
@Override
public abstract RouteDetailStatementTmBuilder init();
public abstract RouteDetailStatementTmBuilder buildId(Integer id);
public abstract RouteDetailStatementTmBuilder buildName(String name);
public abstract RouteDetailStatementTmBuilder buildPoints(List<RoutePointDetail> points);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RouteDoStatementTmBuilder<T> extends TmBuilder<RouteDo> {
protected RouteDo routeDo = new RouteDo();
@Override
public abstract RouteDoStatementTmBuilder init(RouteDo object);
@Override
public abstract RouteDoStatementTmBuilder init();
public abstract RouteDoStatementTmBuilder buildId(Integer id);
public abstract RouteDoStatementTmBuilder buildName(String name);
public abstract RouteDoStatementTmBuilder buildDefaultAltitude(Double defaultAltitude);
public abstract RouteDoStatementTmBuilder buildDefaultSpeed(Double defaultSpeed);
public abstract RouteDoStatementTmBuilder buildDefaultYawAngle(Double defaultYawAngle);
public abstract RouteDoStatementTmBuilder buildDefaultPitchAngle(Double defaultPitchAngle);
public abstract RouteDoStatementTmBuilder buildPoints(List<RoutePointDo> points);
public abstract RouteDoStatementTmBuilder buildCreateWhen(LocalDateTime createWhen);
public abstract RouteDoStatementTmBuilder buildRemark(String remark);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RouteList;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RouteListStatementTmBuilder<T> extends TmBuilder<RouteList> {
protected RouteList routeList = new RouteList();
@Override
public abstract RouteListStatementTmBuilder init(RouteList object);
@Override
public abstract RouteListStatementTmBuilder init();
public abstract RouteListStatementTmBuilder buildName(String name);
public abstract RouteListStatementTmBuilder buildDefaultAltitude(Double defaultAltitude);
public abstract RouteListStatementTmBuilder buildDefaultSpeed(Double defaultSpeed);
public abstract RouteListStatementTmBuilder buildRemark(String remark);
public abstract RouteListStatementTmBuilder buildId(Integer id);
public abstract RouteListStatementTmBuilder buildNumOfPoint(int numOfPoint);
public abstract RouteListStatementTmBuilder buildKmOfRoute(double kmOfRoute);
public abstract RouteListStatementTmBuilder buildExpectTakeMinute(double expectTakeMinute);
public abstract RouteListStatementTmBuilder buildCreateWhen(String createWhen);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.entity.result.ActionDetail;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RoutePointDetailStatementTmBuilder<T> extends TmBuilder<RoutePointDetail> {
protected RoutePointDetail routePointDetail = new RoutePointDetail();
@Override
public abstract RoutePointDetailStatementTmBuilder init(RoutePointDetail object);
@Override
public abstract RoutePointDetailStatementTmBuilder init();
public abstract RoutePointDetailStatementTmBuilder buildUuid(String uuid);
public abstract RoutePointDetailStatementTmBuilder buildLatitude(Double latitude);
public abstract RoutePointDetailStatementTmBuilder buildLongitude(Double longitude);
public abstract RoutePointDetailStatementTmBuilder buildAltitude(Double altitude);
public abstract RoutePointDetailStatementTmBuilder buildYawAngle(Double yawAngle);
public abstract RoutePointDetailStatementTmBuilder buildPitchAngle(Double pitchAngle);
public abstract RoutePointDetailStatementTmBuilder buildSpeed(Double speed);
public abstract RoutePointDetailStatementTmBuilder buildActions(List<ActionDetail> actions);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RoutePointDoStatementTmBuilder<T> extends TmBuilder<RoutePointDo> {
protected RoutePointDo routePointDo = new RoutePointDo();
@Override
public abstract RoutePointDoStatementTmBuilder init(RoutePointDo object);
@Override
public abstract RoutePointDoStatementTmBuilder init();
public abstract RoutePointDoStatementTmBuilder buildId(Integer id);
public abstract RoutePointDoStatementTmBuilder buildUuid(String uuid);
public abstract RoutePointDoStatementTmBuilder buildLatitude(Double latitude);
public abstract RoutePointDoStatementTmBuilder buildLongitude(Double longitude);
public abstract RoutePointDoStatementTmBuilder buildAltitude(Double altitude);
public abstract RoutePointDoStatementTmBuilder buildYawAngle(Double yawAngle);
public abstract RoutePointDoStatementTmBuilder buildPitchAngle(Double pitchAngle);
public abstract RoutePointDoStatementTmBuilder buildSpeed(Double speed);
public abstract RoutePointDoStatementTmBuilder buildActions(List<ActionDo> actions);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.entity.other.RouteUploadDto.ActionUploadDto;
import com.mmc.tmj.entity.other.RouteUploadDto.RoutePointUploadDto;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RoutePointUploadDtoStatementTmBuilder<T> extends TmBuilder<RoutePointUploadDto> {
protected RoutePointUploadDto routePointUploadDto = new RoutePointUploadDto();
@Override
public abstract RoutePointUploadDtoStatementTmBuilder init(RoutePointUploadDto object);
@Override
public abstract RoutePointUploadDtoStatementTmBuilder init();
public abstract RoutePointUploadDtoStatementTmBuilder buildName(String name);
public abstract RoutePointUploadDtoStatementTmBuilder buildUuid(String uuid);
public abstract RoutePointUploadDtoStatementTmBuilder buildLatitude(Double latitude);
public abstract RoutePointUploadDtoStatementTmBuilder buildLongitude(Double longitude);
public abstract RoutePointUploadDtoStatementTmBuilder buildAltitude(Double altitude);
public abstract RoutePointUploadDtoStatementTmBuilder buildYawAngle(Double yawAngle);
public abstract RoutePointUploadDtoStatementTmBuilder buildPitchAngle(Double pitchAngle);
public abstract RoutePointUploadDtoStatementTmBuilder buildSpeed(Double speed);
public abstract RoutePointUploadDtoStatementTmBuilder buildActions(List<ActionUploadDto> actions);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.entity.other.RouteUploadDto;
import com.mmc.tmj.entity.other.RouteUploadDto.RoutePointUploadDto;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RouteUploadDtoStatementTmBuilder<T> extends TmBuilder<RouteUploadDto> {
protected RouteUploadDto routeUploadDto = new RouteUploadDto();
@Override
public abstract RouteUploadDtoStatementTmBuilder init(RouteUploadDto object);
@Override
public abstract RouteUploadDtoStatementTmBuilder init();
public abstract RouteUploadDtoStatementTmBuilder buildName(String name);
public abstract RouteUploadDtoStatementTmBuilder buildDefaultAltitude(Double defaultAltitude);
public abstract RouteUploadDtoStatementTmBuilder buildDefaultSpeed(Double defaultSpeed);
public abstract RouteUploadDtoStatementTmBuilder buildDefaultYawAngle(Double defaultYawAngle);
public abstract RouteUploadDtoStatementTmBuilder buildDefaultPitchAngle(Double defaultPitchAngle);
public abstract RouteUploadDtoStatementTmBuilder buildPoints(List<RoutePointUploadDto> points);
public abstract RouteUploadDtoStatementTmBuilder buildRemark(String remark);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.RunProjectDo;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class RunProjectDoStatementTmBuilder<T> extends TmBuilder<RunProjectDo> {
protected RunProjectDo runProjectDo = new RunProjectDo();
@Override
public abstract RunProjectDoStatementTmBuilder init(RunProjectDo object);
@Override
public abstract RunProjectDoStatementTmBuilder init();
public abstract RunProjectDoStatementTmBuilder buildId(Integer id);
public abstract RunProjectDoStatementTmBuilder buildProjectName(String projectName);
public abstract RunProjectDoStatementTmBuilder buildProjectDescript(String projectDescript);
public abstract RunProjectDoStatementTmBuilder buildProjectAddress(String projectAddress);
public abstract RunProjectDoStatementTmBuilder buildLatitude(Double latitude);
public abstract RunProjectDoStatementTmBuilder buildLongitude(Double longitude);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TaskDoStatementTmBuilder<T> extends TmBuilder<TaskDto> {
protected TaskDto taskDto = new TaskDto();
@Override
public abstract TaskDoStatementTmBuilder init(TaskDto object);
@Override
public abstract TaskDoStatementTmBuilder init();
public abstract TaskDoStatementTmBuilder buildId(Integer id);
public abstract TaskDoStatementTmBuilder buildTaskName(String taskName);
public abstract TaskDoStatementTmBuilder buildRouteName(String routeName);
public abstract TaskDoStatementTmBuilder buildOrganizationName(String organizationName);
public abstract TaskDoStatementTmBuilder buildDeviceId(Integer deviceId);
public abstract TaskDoStatementTmBuilder buildDeviceName(String deviceName);
public abstract TaskDoStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract TaskDoStatementTmBuilder buildRemark(String remark);
public abstract TaskDoStatementTmBuilder buildDeviceStatus(Integer deviceStatus);
public abstract TaskDoStatementTmBuilder buildTaskStatus(Integer taskStatus);
public abstract TaskDoStatementTmBuilder buildAddTime(String addTime);
public abstract TaskDoStatementTmBuilder buildStartTime(String startTime);
public abstract TaskDoStatementTmBuilder buildEndTime(String endTime);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TaskInfoVoStatementTmBuilder<T> extends TmBuilder<TaskInfoVo> {
protected TaskInfoVo taskInfoVo = new TaskInfoVo();
@Override
public abstract TaskInfoVoStatementTmBuilder init(TaskInfoVo object);
@Override
public abstract TaskInfoVoStatementTmBuilder init();
public abstract TaskInfoVoStatementTmBuilder buildRouteName(String routeName);
public abstract TaskInfoVoStatementTmBuilder buildTaskName(String taskName);
public abstract TaskInfoVoStatementTmBuilder buildDeviceName(String deviceName);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TaskListVoStatementTmBuilder<T> extends TmBuilder<TaskListVo> {
protected TaskListVo taskDto = new TaskListVo();
@Override
public abstract TaskListVoStatementTmBuilder init(TaskListVo object);
@Override
public abstract TaskListVoStatementTmBuilder init();
public abstract TaskListVoStatementTmBuilder buildId(Integer id);
public abstract TaskListVoStatementTmBuilder buildTaskName(String taskName);
public abstract TaskListVoStatementTmBuilder buildRouteName(String routeName);
public abstract TaskListVoStatementTmBuilder buildOrganizationName(String organizationName);
public abstract TaskListVoStatementTmBuilder buildDeviceId(Integer deviceId);
public abstract TaskListVoStatementTmBuilder buildDeviceName(String deviceName);
public abstract TaskListVoStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract TaskListVoStatementTmBuilder buildDeviceStatus(Integer deviceStatus);
public abstract TaskListVoStatementTmBuilder buildTaskStatus(Integer taskStatus);
public abstract TaskListVoStatementTmBuilder buildCreateWhen(String createWhen);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.entity.result.TaskReportDto;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.time.LocalDateTime;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TaskReportDtoStatementTmBuilder<T> extends TmBuilder<TaskReportDto> {
protected TaskReportDto taskReportDto = new TaskReportDto();
@Override
public abstract TaskReportDtoStatementTmBuilder init(TaskReportDto object);
@Override
public abstract TaskReportDtoStatementTmBuilder init();
public abstract TaskReportDtoStatementTmBuilder buildTaskId(Integer taskId);
public abstract TaskReportDtoStatementTmBuilder buildTaskName(String taskName);
public abstract TaskReportDtoStatementTmBuilder buildLocation(String location);
public abstract TaskReportDtoStatementTmBuilder buildStartTime(LocalDateTime startTime);
public abstract TaskReportDtoStatementTmBuilder buildEndTime(LocalDateTime endTime);
public abstract TaskReportDtoStatementTmBuilder buildTaskDate(LocalDateTime taskDate);
public abstract TaskReportDtoStatementTmBuilder buildWeather(String weather);
public abstract TaskReportDtoStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract TaskReportDtoStatementTmBuilder buildExecutePerson(String executePerson);
public abstract TaskReportDtoStatementTmBuilder buildReportAddTime(LocalDateTime reportAddTime);
public abstract TaskReportDtoStatementTmBuilder buildRemark(String remark);
}
package com.mmc.tmj.utils.builder.statement;
import cn.afterturn.easypoi.entity.ImageEntity;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.utils.builder.TmBuilder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TaskReportMapStatementTmBuilder<T> extends TmBuilder<Map<String,Object>> {
protected Map<String,Object> map = new HashMap<String,Object>();
@Override
public abstract TaskReportMapStatementTmBuilder init(Map<String,Object> object);
@Override
public abstract TaskReportMapStatementTmBuilder init();
public abstract TaskReportMapStatementTmBuilder buildTaskId(Integer taskId);
public abstract TaskReportMapStatementTmBuilder buildTaskName(String taskName);
public abstract TaskReportMapStatementTmBuilder buildTaskDate(String taskDate);
public abstract TaskReportMapStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract TaskReportMapStatementTmBuilder buildTaskTime(String taskTime);
public abstract TaskReportMapStatementTmBuilder buildImageList(List<ImageEntity> imageList);
public abstract TaskReportMapStatementTmBuilder buildExecutePerson(String executePerson);
public abstract TaskReportMapStatementTmBuilder buildReportAddTime(String reportAddTime);
public abstract TaskReportMapStatementTmBuilder buildRemark(String remark);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TaskSelectVoStatementTmBuilder<T> extends TmBuilder<TaskSelectVo> {
protected TaskSelectVo taskSelectVo = new TaskSelectVo();
@Override
public abstract TaskSelectVoStatementTmBuilder init(TaskSelectVo object);
@Override
public abstract TaskSelectVoStatementTmBuilder init();
public abstract TaskSelectVoStatementTmBuilder buildId(Integer id);
public abstract TaskSelectVoStatementTmBuilder buildTaskName(String taskName);
}
package com.mmc.tmj.utils.builder.statement;
import com.mmc.tmj.entity.database.GISMapDo;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.utils.builder.TmBuilder;
/**
* @Author lcz
* @Date 2022/5/9 10:16
* @Version 1.0
* @description
*/
public abstract class TrackDoStatementTmBuilder<T> extends TmBuilder<TrackDo> {
protected TrackDo trackDo = new TrackDo();
@Override
public abstract TrackDoStatementTmBuilder init(TrackDo object);
@Override
public abstract TrackDoStatementTmBuilder init();
public abstract TrackDoStatementTmBuilder buildId(Integer id);
public abstract TrackDoStatementTmBuilder buildSystemCode(String systemCode);
public abstract TrackDoStatementTmBuilder buildDeviceType(String deviceType);
public abstract TrackDoStatementTmBuilder buildDeviceHardId(String deviceHardId);
public abstract TrackDoStatementTmBuilder buildFlightSortie(String flightSortie);
public abstract TrackDoStatementTmBuilder buildData(String data);
public abstract TrackDoStatementTmBuilder buildTime(Integer time);
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.result.ActionDetail;
import com.mmc.tmj.enums.ActionType;
import com.mmc.tmj.utils.builder.statement.ActionDetailStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.ActionDoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:42
* @Version 1.0
* @description
*/
public class ActionDetailTmBuilder extends ActionDetailStatementTmBuilder<ActionDetail> {
public static ActionDetailTmBuilder getInstance(){
return new ActionDetailTmBuilder();
}
@Override
public ActionDetail getObject() {
return actionDetail;
}
@Override
public ActionDetailTmBuilder init(ActionDetail object) {
actionDetail = object;
return this;
}
@Override
public ActionDetailTmBuilder init() {
actionDetail = new ActionDetail();
return this;
}
@Override
public ActionDetailTmBuilder buildType(ActionType actionType) {
Optional.ofNullable(actionType).ifPresent(inte ->{
this.actionDetail.setType(inte);
});
return this;
}
@Override
public ActionDetailTmBuilder buildTakeSecond(Integer takeSecond) {
this.actionDetail.setTakeSecond(Optional.ofNullable(takeSecond).orElse(0));
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.enums.ActionType;
import com.mmc.tmj.utils.builder.statement.ActionDoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:42
* @Version 1.0
* @description
*/
public class ActionDoTmBuilder extends ActionDoStatementTmBuilder<ActionDo> {
public static ActionDoTmBuilder getInstance(){
return new ActionDoTmBuilder();
}
@Override
public ActionDo getObject() {
return actionDo;
}
@Override
public ActionDoTmBuilder init(ActionDo object) {
actionDo = object;
return this;
}
@Override
public ActionDoTmBuilder init() {
actionDo = new ActionDo();
return this;
}
@Override
public ActionDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.actionDo.setId(inte);
});
return this;
}
@Override
public ActionDoTmBuilder buildActionType(ActionType actionType) {
Optional.ofNullable(actionType).ifPresent(inte ->{
this.actionDo.setType(inte);
});
return this;
}
@Override
public ActionDoTmBuilder buildTakeSecond(Integer takeSecond) {
this.actionDo.setTakeSecond(Optional.ofNullable(takeSecond).orElse(0));
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.other.RouteUploadDto.ActionUploadDto;
import com.mmc.tmj.enums.ActionType;
import com.mmc.tmj.utils.builder.statement.ActionDoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.ActionUploadDtoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:42
* @Version 1.0
* @description
*/
public class ActionUploadDtoTmBuilder extends ActionUploadDtoStatementTmBuilder<ActionUploadDto> {
public static ActionUploadDtoTmBuilder getInstance(){
return new ActionUploadDtoTmBuilder();
}
@Override
public ActionUploadDto getObject() {
return actionUploadDto;
}
@Override
public ActionUploadDtoTmBuilder init(ActionUploadDto object) {
actionUploadDto = object;
return this;
}
@Override
public ActionUploadDtoTmBuilder init() {
actionUploadDto = new ActionUploadDto();
return this;
}
@Override
public ActionUploadDtoTmBuilder buildActionType(ActionType actionType) {
Optional.ofNullable(actionType).ifPresent(inte ->{
this.actionUploadDto.setType(inte);
});
return this;
}
@Override
public ActionUploadDtoTmBuilder buildTakeSecond(Integer takeSecond) {
this.actionUploadDto.setTakeSecond(Optional.ofNullable(takeSecond).orElse(0));
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.DeviceSelectDto;
import com.mmc.tmj.utils.builder.statement.DeviceSelectDtoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/17 16:48
* @Version 1.0
* @description
*/
public class DeviceSelectDtoTmBuilder extends DeviceSelectDtoStatementTmBuilder<DeviceSelectDto> {
public static DeviceSelectDtoTmBuilder getInstance(){
return new DeviceSelectDtoTmBuilder();
}
@Override
public DeviceSelectDto getObject() {
return deviceSelectDto;
}
@Override
public DeviceSelectDtoTmBuilder init(DeviceSelectDto object) {
deviceSelectDto = object;
return this;
}
@Override
public DeviceSelectDtoTmBuilder init() {
deviceSelectDto = new DeviceSelectDto();
return this;
}
@Override
public DeviceSelectDtoTmBuilder buildDevice_id(Integer device_id) {
Optional.ofNullable(device_id).ifPresent(inte ->{
this.deviceSelectDto.setDevice_id(inte);
});
return this;
}
@Override
public DeviceSelectDtoTmBuilder buildDeviceName(String deviceName) {
Optional.ofNullable(deviceName).ifPresent(inte ->{
this.deviceSelectDto.setDeviceName(inte);
});
return this;
}
@Override
public DeviceSelectDtoTmBuilder buildSocketStatus(Integer socketStatus) {
Optional.ofNullable(socketStatus).ifPresent(inte ->{
this.deviceSelectDto.setSocketStatus(inte);
});
return this;
}
@Override
public DeviceSelectDtoTmBuilder buildDeviceSerial(String deviceSerial) {
Optional.ofNullable(deviceSerial).ifPresent(inte ->{
this.deviceSelectDto.setDeviceSerial(inte);
});
return this;
}
@Override
public DeviceSelectDtoTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.deviceSelectDto.setDeviceHardId(inte);
});
return this;
}
@Override
public DeviceSelectDtoTmBuilder buildDeviceHashId(String deviceHashId) {
Optional.ofNullable(deviceHashId).ifPresent(inte ->{
this.deviceSelectDto.setDeviceHashId(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.GISMapDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.utils.builder.statement.GisMapDoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.RoutePointDoStatementTmBuilder;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:25
* @Version 1.0
* @description
*/
public class GisMapDoTmBuilder extends GisMapDoStatementTmBuilder<GISMapDo> {
public static GisMapDoTmBuilder getInstance(){
return new GisMapDoTmBuilder();
}
@Override
public GISMapDo getObject() {
return gisMapDo;
}
@Override
public GisMapDoTmBuilder init(GISMapDo object) {
gisMapDo=object;
return this;
}
@Override
public GisMapDoTmBuilder init() {
gisMapDo=new GISMapDo();
return this;
}
@Override
public GisMapDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.gisMapDo.setId(inte);
});
return this;
}
@Override
public GisMapDoTmBuilder buildName(String name) {
Optional.ofNullable(name).ifPresent(inte ->{
this.gisMapDo.setName(inte);
});
return this;
}
@Override
public GisMapDoTmBuilder buildLatitude(double latitude) {
Optional.ofNullable(latitude).ifPresent(inte ->{
this.gisMapDo.setLatitude(inte);
});
return this;
}
@Override
public GisMapDoTmBuilder buildLongitude(double longitude) {
Optional.ofNullable(longitude).ifPresent(inte ->{
this.gisMapDo.setLongitude(inte);
});
return this;
}
@Override
public GisMapDoTmBuilder buildAddress(String address) {
Optional.ofNullable(address).ifPresent(inte ->{
this.gisMapDo.setAddress(inte);
});
return this;
}
@Override
public GisMapDoTmBuilder buildUnit(String unit) {
Optional.ofNullable(unit).ifPresent(inte ->{
this.gisMapDo.setUnit(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import cn.afterturn.easypoi.entity.ImageEntity;
import com.mmc.tmj.utils.builder.statement.ImageEntityStatementTmBuilder;
/**
* @Author lcz
* @Date 2022/5/18 16:03
* @Version 1.0
* @description
*/
public class ImageEntityTmBuilder extends ImageEntityStatementTmBuilder<ImageEntity> {
public static ImageEntityTmBuilder getInstance(){
return new ImageEntityTmBuilder();
}
@Override
public ImageEntity getObject() {
return imageEntity;
}
@Override
public ImageEntityTmBuilder init(ImageEntity object) {
imageEntity = object;
return this;
}
@Override
public ImageEntityTmBuilder init() {
imageEntity = new ImageEntity();
return this;
}
@Override
public ImageEntityTmBuilder buildHeight(int height) {
imageEntity.setHeight(height);
return this;
}
@Override
public ImageEntityTmBuilder buildWidth(int width) {
imageEntity.setWidth(width);
return this;
}
@Override
public ImageEntityTmBuilder buildUrl(String url) {
imageEntity.setUrl(url);
return this;
}
@Override
public ImageEntityTmBuilder buildType(String type) {
imageEntity.setType(type);
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.PageRespVo;
import com.mmc.tmj.utils.builder.statement.PageRespVoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.TaskDoStatementTmBuilder;
import java.util.List;
import java.util.Optional;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/12 11:56
* @Version 1.0
* @description
*/
public class PageRespVoTmBuilder extends PageRespVoStatementTmBuilder<PageRespVo<T>> {
public static PageRespVoTmBuilder getInstance(){
return new PageRespVoTmBuilder();
}
@Override
public PageRespVo getObject() {
return this.pageRespVo;
}
@Override
public PageRespVoTmBuilder buildTotalSize(Long totalSize) {
Optional.ofNullable(totalSize).ifPresent(in->{
this.pageRespVo.setTotalSize(in);
});
return this;
}
@Override
public PageRespVoTmBuilder buildTotalNum(Integer totalNum) {
Optional.ofNullable(totalNum).ifPresent(in->{
this.pageRespVo.setTotalNum(in);
});
return this;
}
@Override
public PageRespVoTmBuilder buildNum(Integer num) {
Optional.ofNullable(num).ifPresent(in->{
this.pageRespVo.setNum(in);
});
return this;
}
@Override
public PageRespVoTmBuilder buildSize(Integer size) {
Optional.ofNullable(size).ifPresent(in->{
this.pageRespVo.setSize(in);
});
return this;
}
@Override
public PageRespVoStatementTmBuilder buildData(List<PageRespVo<T>> data) {
Optional.ofNullable(data).ifPresent(in->{
this.pageRespVo.setData(in);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.statement.PhotographDoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.TaskSelectVoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/9 10:19
* @Version 1.0
* @description
*/
public class PhotographDoTmBuilder extends PhotographDoStatementTmBuilder<PhotographDo> {
public static PhotographDoTmBuilder getInstance(){
return new PhotographDoTmBuilder();
}
@Override
public PhotographDo getObject() {
return photographDo;
}
@Override
public PhotographDoTmBuilder init(PhotographDo object) {
photographDo=object;
return this;
}
@Override
public PhotographDoTmBuilder init() {
photographDo=new PhotographDo();
return this;
}
@Override
public PhotographDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.photographDo.setId(inte);
});
return this;
}
@Override
public PhotographDoTmBuilder buildTaskId(Integer taskId) {
Optional.ofNullable(taskId).ifPresent(inte ->{
this.photographDo.setTaskId(inte);
});
return this;
}
@Override
public PhotographDoTmBuilder buildImages(String image) {
Optional.ofNullable(image).ifPresent(inte ->{
this.photographDo.setImages(inte);
});
return this;
}
@Override
public PhotographDoTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.photographDo.setDeviceHardId(inte);
});
return null;
}
@Override
public PhotographDoTmBuilder buildCreateTime(String createTime) {
Optional.ofNullable(createTime).ifPresent(inte ->{
this.photographDo.setCreateTime(inte);
});
return null;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.PhotographDo;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.utils.builder.statement.PhotographDoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.PhotographListVoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/9 10:19
* @Version 1.0
* @description
*/
public class PhotographListVoTmBuilder extends PhotographListVoStatementTmBuilder<PhotographListVo> {
public static PhotographListVoTmBuilder getInstance(){
return new PhotographListVoTmBuilder();
}
@Override
public PhotographListVo getObject() {
return photographListVo;
}
@Override
public PhotographListVoTmBuilder init(PhotographListVo object) {
photographListVo=object;
return this;
}
@Override
public PhotographListVoTmBuilder init() {
photographListVo=new PhotographListVo();
return this;
}
@Override
public PhotographListVoTmBuilder buildImages(String image) {
Optional.ofNullable(image).ifPresent(inte ->{
this.photographListVo.setImages(inte);
});
return this;
}
@Override
public PhotographListVoTmBuilder buildCreateTime(String createTime) {
Optional.ofNullable(createTime).ifPresent(inte ->{
this.photographListVo.setCreateTime(inte);
});
return null;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.RouteDetail;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.utils.builder.statement.RouteDetailStatementTmBuilder;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/17 10:18
* @Version 1.0
* @description
*/
public class RouteDetailTmBuilder extends RouteDetailStatementTmBuilder<RouteDetail> {
public static RouteDetailTmBuilder getInstance(){
return new RouteDetailTmBuilder();
}
@Override
public RouteDetail getObject() {
return routeDetail;
}
@Override
public RouteDetailTmBuilder init(RouteDetail object) {
routeDetail=object;
return this;
}
@Override
public RouteDetailTmBuilder init() {
routeDetail = new RouteDetail();
return this;
}
@Override
public RouteDetailTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.routeDetail.setId(inte);
});
return this;
}
@Override
public RouteDetailTmBuilder buildName(String name) {
Optional.ofNullable(name).ifPresent(inte ->{
this.routeDetail.setName(inte);
});
return this;
}
@Override
public RouteDetailTmBuilder buildPoints(List<RoutePointDetail> points) {
Optional.ofNullable(points).ifPresent(inte ->{
this.routeDetail.setPoints(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.utils.builder.statement.RouteDoStatementTmBuilder;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 10:52
* @Version 1.0
* @description
*/
public class RouteDoTmBuilder extends RouteDoStatementTmBuilder<RouteDo> {
public static RouteDoTmBuilder getInstance(){
return new RouteDoTmBuilder();
}
@Override
public RouteDo getObject() {
return routeDo;
}
@Override
public RouteDoTmBuilder init(RouteDo object) {
this.routeDo=object;
return this;
}
@Override
public RouteDoTmBuilder init() {
this.routeDo=new RouteDo();
return this;
}
@Override
public RouteDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.routeDo.setId(inte);
});
return this;
}
@Override
public RouteDoTmBuilder buildName(String name) {
Optional.ofNullable(name).ifPresent(inte ->{
this.routeDo.setName(inte);
});
return this;
}
@Override
public RouteDoTmBuilder buildDefaultAltitude(Double defaultAltitude) {
this.routeDo.setDefaultAltitude(Optional.ofNullable(defaultAltitude).orElse(0.0));
return this;
}
@Override
public RouteDoTmBuilder buildDefaultSpeed(Double defaultSpeed) {
this.routeDo.setDefaultSpeed(Optional.ofNullable(defaultSpeed).orElse(0.0));
return this;
}
@Override
public RouteDoTmBuilder buildDefaultYawAngle(Double defaultYawAngle) {
this.routeDo.setDefaultYawAngle(Optional.ofNullable(defaultYawAngle).orElse(0.0));
return this;
}
@Override
public RouteDoTmBuilder buildDefaultPitchAngle(Double defaultPitchAngle) {
this.routeDo.setDefaultPitchAngle(Optional.ofNullable(defaultPitchAngle).orElse(0.0));
return this;
}
@Override
public RouteDoTmBuilder buildPoints(List<RoutePointDo> points) {
this.routeDo.setPoints(points);
return this;
}
@Override
public RouteDoTmBuilder buildCreateWhen(LocalDateTime createWhen) {
Optional.ofNullable(createWhen).ifPresent(inte ->{
this.routeDo.setCreateWhen(inte);
});
return this;
}
@Override
public RouteDoTmBuilder buildRemark(String remark) {
Optional.ofNullable(remark).ifPresent(inte ->{
this.routeDo.setRemark(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.RouteList;
import com.mmc.tmj.utils.builder.statement.RouteListStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/17 13:46
* @Version 1.0
* @description
*/
public class RouteListTmBuilder extends RouteListStatementTmBuilder<RouteList> {
public static RouteListTmBuilder getInstance(){
return new RouteListTmBuilder();
}
@Override
public RouteList getObject() {
return routeList;
}
@Override
public RouteListTmBuilder init(RouteList object) {
routeList=object;
return this;
}
@Override
public RouteListTmBuilder init() {
routeList=new RouteList();
return this;
}
@Override
public RouteListTmBuilder buildName(String name) {
Optional.ofNullable(name).ifPresent(inte ->{
this.routeList.setName(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildDefaultAltitude(Double defaultAltitude) {
Optional.ofNullable(defaultAltitude).ifPresent(inte ->{
this.routeList.setDefaultAltitude(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildDefaultSpeed(Double defaultSpeed) {
Optional.ofNullable(defaultSpeed).ifPresent(inte ->{
this.routeList.setDefaultSpeed(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildRemark(String remark) {
Optional.ofNullable(remark).ifPresent(inte ->{
this.routeList.setRemark(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.routeList.setId(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildNumOfPoint(int numOfPoint) {
Optional.ofNullable(numOfPoint).ifPresent(inte ->{
this.routeList.setNumOfPoint(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildKmOfRoute(double kmOfRoute) {
Optional.ofNullable(kmOfRoute).ifPresent(inte ->{
this.routeList.setKmOfRoute(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildExpectTakeMinute(double expectTakeMinute) {
Optional.ofNullable(expectTakeMinute).ifPresent(inte ->{
this.routeList.setExpectTakeMinute(inte);
});
return this;
}
@Override
public RouteListTmBuilder buildCreateWhen(String createWhen) {
Optional.ofNullable(createWhen).ifPresent(inte ->{
this.routeList.setCreateWhen(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.ActionDetail;
import com.mmc.tmj.entity.result.RoutePointDetail;
import com.mmc.tmj.utils.builder.statement.RoutePointDetailStatementTmBuilder;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:25
* @Version 1.0
* @description
*/
public class RoutePointDetailTmBuilder extends RoutePointDetailStatementTmBuilder<RoutePointDetail> {
public static RoutePointDetailTmBuilder getInstance(){
return new RoutePointDetailTmBuilder();
}
@Override
public RoutePointDetail getObject() {
return routePointDetail;
}
@Override
public RoutePointDetailTmBuilder init(RoutePointDetail object) {
routePointDetail=object;
return this;
}
@Override
public RoutePointDetailTmBuilder init() {
routePointDetail=new RoutePointDetail();
return this;
}
@Override
public RoutePointDetailTmBuilder buildUuid(String uuid) {
Optional.ofNullable(uuid).ifPresent(inte ->{
this.routePointDetail.setUuid(inte);
});
return this;
}
@Override
public RoutePointDetailTmBuilder buildLatitude(Double latitude) {
this.routePointDetail.setLatitude(Optional.ofNullable(latitude).orElse(0.0));
return this;
}
@Override
public RoutePointDetailTmBuilder buildLongitude(Double longitude) {
this.routePointDetail.setLongitude(Optional.ofNullable(longitude).orElse(0.0));
return this;
}
@Override
public RoutePointDetailTmBuilder buildAltitude(Double altitude) {
this.routePointDetail.setAltitude(Optional.ofNullable(altitude).orElse(100.0));
return this;
}
@Override
public RoutePointDetailTmBuilder buildYawAngle(Double yawAngle) {
this.routePointDetail.setYawAngle(Optional.ofNullable(yawAngle).orElse(0.0));
return this;
}
@Override
public RoutePointDetailTmBuilder buildPitchAngle(Double pitchAngle) {
this.routePointDetail.setPitchAngle(Optional.ofNullable(pitchAngle).orElse(0.0));
return this;
}
@Override
public RoutePointDetailTmBuilder buildSpeed(Double speed) {
this.routePointDetail.setSpeed(Optional.ofNullable(speed).orElse(3.0));
return this;
}
@Override
public RoutePointDetailTmBuilder buildActions(List<ActionDetail> actions) {
this.routePointDetail.setActions(actions);
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.ActionDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.utils.builder.statement.RoutePointDoStatementTmBuilder;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:25
* @Version 1.0
* @description
*/
public class RoutePointDoTmBuilder extends RoutePointDoStatementTmBuilder<RoutePointDo> {
public static RoutePointDoTmBuilder getInstance(){
return new RoutePointDoTmBuilder();
}
@Override
public RoutePointDo getObject() {
return routePointDo;
}
@Override
public RoutePointDoTmBuilder init(RoutePointDo object) {
routePointDo=object;
return this;
}
@Override
public RoutePointDoTmBuilder init() {
routePointDo=new RoutePointDo();
return this;
}
@Override
public RoutePointDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.routePointDo.setId(inte);
});
return this;
}
@Override
public RoutePointDoTmBuilder buildUuid(String uuid) {
Optional.ofNullable(uuid).ifPresent(inte ->{
this.routePointDo.setUuid(inte);
});
return this;
}
@Override
public RoutePointDoTmBuilder buildLatitude(Double latitude) {
this.routePointDo.setLatitude(Optional.ofNullable(latitude).orElse(0.0));
return this;
}
@Override
public RoutePointDoTmBuilder buildLongitude(Double longitude) {
this.routePointDo.setLongitude(Optional.ofNullable(longitude).orElse(0.0));
return this;
}
@Override
public RoutePointDoTmBuilder buildAltitude(Double altitude) {
this.routePointDo.setAltitude(Optional.ofNullable(altitude).orElse(100.0));
return this;
}
@Override
public RoutePointDoTmBuilder buildYawAngle(Double yawAngle) {
this.routePointDo.setYawAngle(Optional.ofNullable(yawAngle).orElse(0.0));
return this;
}
@Override
public RoutePointDoTmBuilder buildPitchAngle(Double pitchAngle) {
this.routePointDo.setPitchAngle(Optional.ofNullable(pitchAngle).orElse(0.0));
return this;
}
@Override
public RoutePointDoTmBuilder buildSpeed(Double speed) {
this.routePointDo.setSpeed(Optional.ofNullable(speed).orElse(3.0));
return this;
}
@Override
public RoutePointDoTmBuilder buildActions(List<ActionDo> actions) {
this.routePointDo.setActions(actions);
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.other.RouteUploadDto.ActionUploadDto;
import com.mmc.tmj.entity.other.RouteUploadDto.RoutePointUploadDto;
import com.mmc.tmj.utils.builder.statement.RoutePointUploadDtoStatementTmBuilder;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 11:25
* @Version 1.0
* @description
*/
public class RoutePointUploadDtoTmBuilder extends RoutePointUploadDtoStatementTmBuilder<RoutePointUploadDto> {
public static RoutePointUploadDtoTmBuilder getInstance(){
return new RoutePointUploadDtoTmBuilder();
}
@Override
public RoutePointUploadDto getObject() {
return routePointUploadDto;
}
@Override
public RoutePointUploadDtoTmBuilder init(RoutePointUploadDto object) {
routePointUploadDto=object;
return this;
}
@Override
public RoutePointUploadDtoTmBuilder init() {
routePointUploadDto=new RoutePointUploadDto();
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildName(String name) {
Optional.ofNullable(name).ifPresent(inte ->{
this.routePointUploadDto.setName(inte);
});
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildUuid(String uuid) {
Optional.ofNullable(uuid).ifPresent(inte ->{
this.routePointUploadDto.setUuid(inte);
});
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildLatitude(Double latitude) {
this.routePointUploadDto.setLatitude(Optional.ofNullable(latitude).orElse(0.0));
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildLongitude(Double longitude) {
this.routePointUploadDto.setLongitude(Optional.ofNullable(longitude).orElse(0.0));
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildAltitude(Double altitude) {
this.routePointUploadDto.setAltitude(Optional.ofNullable(altitude).orElse(100.0));
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildYawAngle(Double yawAngle) {
this.routePointUploadDto.setYawAngle(Optional.ofNullable(yawAngle).orElse(0.0));
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildPitchAngle(Double pitchAngle) {
this.routePointUploadDto.setPitchAngle(Optional.ofNullable(pitchAngle).orElse(0.0));
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildSpeed(Double speed) {
this.routePointUploadDto.setSpeed(Optional.ofNullable(speed).orElse(3.0));
return this;
}
@Override
public RoutePointUploadDtoTmBuilder buildActions(List<ActionUploadDto> actions) {
this.routePointUploadDto.setActions(actions);
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.RouteDo;
import com.mmc.tmj.entity.database.RoutePointDo;
import com.mmc.tmj.entity.other.RouteUploadDto;
import com.mmc.tmj.entity.other.RouteUploadDto.RoutePointUploadDto;
import com.mmc.tmj.utils.builder.statement.RouteDoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.RouteUploadDtoStatementTmBuilder;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/16 10:52
* @Version 1.0
* @description
*/
public class RouteUploadDtoTmBuilder extends RouteUploadDtoStatementTmBuilder<RouteUploadDto> {
public static RouteUploadDtoTmBuilder getInstance(){
return new RouteUploadDtoTmBuilder();
}
@Override
public RouteUploadDto getObject() {
return routeUploadDto;
}
@Override
public RouteUploadDtoTmBuilder init(RouteUploadDto object) {
this.routeUploadDto=object;
return this;
}
@Override
public RouteUploadDtoTmBuilder init() {
this.routeUploadDto=new RouteUploadDto();
return this;
}
@Override
public RouteUploadDtoTmBuilder buildName(String name) {
Optional.ofNullable(name).ifPresent(inte ->{
this.routeUploadDto.setName(inte);
});
return this;
}
@Override
public RouteUploadDtoTmBuilder buildDefaultAltitude(Double defaultAltitude) {
this.routeUploadDto.setDefaultAltitude(Optional.ofNullable(defaultAltitude).orElse(100.0));
return this;
}
@Override
public RouteUploadDtoTmBuilder buildDefaultSpeed(Double defaultSpeed) {
this.routeUploadDto.setDefaultSpeed(Optional.ofNullable(defaultSpeed).orElse(3.0));
return this;
}
@Override
public RouteUploadDtoTmBuilder buildDefaultYawAngle(Double defaultYawAngle) {
this.routeUploadDto.setDefaultYawAngle(Optional.ofNullable(defaultYawAngle).orElse(0.0));
return this;
}
@Override
public RouteUploadDtoTmBuilder buildDefaultPitchAngle(Double defaultPitchAngle) {
this.routeUploadDto.setDefaultPitchAngle(Optional.ofNullable(defaultPitchAngle).orElse(0.0));
return this;
}
@Override
public RouteUploadDtoTmBuilder buildPoints(List<RoutePointUploadDto> points) {
this.routeUploadDto.setPoints(points);
return this;
}
@Override
public RouteUploadDtoTmBuilder buildRemark(String remark) {
Optional.ofNullable(remark).ifPresent(inte ->{
this.routeUploadDto.setRemark(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.RunProjectDo;
import com.mmc.tmj.utils.builder.statement.RunProjectDoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/21 15:12
* @Version 1.0
* @description
*/
public class RunProjectDoTmBuilder extends RunProjectDoStatementTmBuilder<RunProjectDo> {
public static RunProjectDoTmBuilder getInstance(){
return new RunProjectDoTmBuilder();
}
@Override
public RunProjectDo getObject() {
return runProjectDo;
}
@Override
public RunProjectDoTmBuilder init(RunProjectDo object) {
runProjectDo=object;
return this;
}
@Override
public RunProjectDoTmBuilder init() {
runProjectDo=new RunProjectDo();
return this;
}
@Override
public RunProjectDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(it->{
runProjectDo.setId(it);
});
return this;
}
@Override
public RunProjectDoTmBuilder buildProjectName(String projectName) {
Optional.ofNullable(projectName).ifPresent(it->{
runProjectDo.setProjectName(it);
});
return this;
}
@Override
public RunProjectDoTmBuilder buildProjectDescript(String projectDescript) {
Optional.ofNullable(projectDescript).ifPresent(it->{
runProjectDo.setProjectDescript(it);
});
return this;
}
@Override
public RunProjectDoTmBuilder buildProjectAddress(String projectAddress) {
Optional.ofNullable(projectAddress).ifPresent(it->{
runProjectDo.setProjectAddress(it);
});
return this;
}
@Override
public RunProjectDoTmBuilder buildLatitude(Double latitude) {
Optional.ofNullable(latitude).ifPresent(it->{
runProjectDo.setLatitude(it);
});
return this;
}
@Override
public RunProjectDoTmBuilder buildLongitude(Double longitude) {
Optional.ofNullable(longitude).ifPresent(it->{
runProjectDo.setLongitude(it);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.utils.builder.statement.TaskDoStatementTmBuilder;
import java.util.Optional;
import org.apache.poi.ss.formula.functions.T;
/**
* @Author lcz
* @Date 2022/5/9 10:19
* @Version 1.0
* @description
*/
public class TaskDoTmBuilder extends TaskDoStatementTmBuilder<TaskDto> {
public static TaskDoTmBuilder getInstance(){
return new TaskDoTmBuilder();
}
@Override
public TaskDto getObject() {
return taskDto;
}
@Override
public TaskDoTmBuilder init(TaskDto object) {
this.taskDto=object;
return this;
}
@Override
public TaskDoTmBuilder init() {
this.taskDto=new TaskDto();
return this;
}
@Override
public TaskDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.taskDto.setId(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildTaskName(String taskName) {
Optional.ofNullable(taskName).ifPresent(inte ->{
this.taskDto.setTaskName(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildRouteName(String routeName) {
Optional.ofNullable(routeName).ifPresent(inte ->{
this.taskDto.setRouteName(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildOrganizationName(String organizationName) {
Optional.ofNullable(organizationName).ifPresent(inte ->{
this.taskDto.setOrganizationName(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildDeviceId(Integer deviceId) {
Optional.ofNullable(deviceId).ifPresent(inte ->{
this.taskDto.setDeviceId(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildDeviceName(String deviceName) {
Optional.ofNullable(deviceName).ifPresent(inte ->{
this.taskDto.setDeviceName(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.taskDto.setDeviceHardId(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildRemark(String remark) {
Optional.ofNullable(remark).ifPresent(inte ->{
this.taskDto.setRemark(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildDeviceStatus(Integer deviceStatus) {
Optional.ofNullable(deviceStatus).ifPresent(inte ->{
this.taskDto.setDeviceStatus(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildTaskStatus(Integer taskStatus) {
Optional.ofNullable(taskStatus).ifPresent(inte ->{
this.taskDto.setTaskStatus(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildAddTime(String addTime) {
Optional.ofNullable(addTime).ifPresent(inte ->{
this.taskDto.setAddTime(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildStartTime(String startTime) {
Optional.ofNullable(startTime).ifPresent(inte ->{
this.taskDto.setStartTime(inte);
});
return this;
}
@Override
public TaskDoTmBuilder buildEndTime(String endTime) {
Optional.ofNullable(endTime).ifPresent(inte ->{
this.taskDto.setEndTime(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.TaskInfoVo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.statement.TaskInfoVoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.TaskSelectVoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/9 10:19
* @Version 1.0
* @description
*/
public class TaskInfoVoTmBuilder extends TaskInfoVoStatementTmBuilder<TaskInfoVo> {
public static TaskInfoVoTmBuilder getInstance(){
return new TaskInfoVoTmBuilder();
}
@Override
public TaskInfoVo getObject() {
return taskInfoVo;
}
@Override
public TaskInfoVoTmBuilder init(TaskInfoVo object) {
this.taskInfoVo=object;
return this;
}
@Override
public TaskInfoVoTmBuilder init() {
this.taskInfoVo=new TaskInfoVo();
return this;
}
@Override
public TaskInfoVoTmBuilder buildRouteName(String routeName) {
Optional.ofNullable(routeName).ifPresent(inte ->{
this.taskInfoVo.setRouteName(inte);
});
return this;
}
@Override
public TaskInfoVoTmBuilder buildTaskName(String taskName) {
Optional.ofNullable(taskName).ifPresent(inte ->{
this.taskInfoVo.setTaskName(inte);
});
return this;
}
@Override
public TaskInfoVoTmBuilder buildDeviceName(String deviceName) {
Optional.ofNullable(deviceName).ifPresent(inte ->{
this.taskInfoVo.setDeviceName(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.TaskDto;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.utils.builder.statement.TaskDoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.TaskListVoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/9 10:19
* @Version 1.0
* @description
*/
public class TaskListVoTmBuilder extends TaskListVoStatementTmBuilder<TaskListVo> {
public static TaskListVoTmBuilder getInstance(){
return new TaskListVoTmBuilder();
}
@Override
public TaskListVo getObject() {
return taskDto;
}
@Override
public TaskListVoTmBuilder init(TaskListVo object) {
this.taskDto=object;
return this;
}
@Override
public TaskListVoTmBuilder init() {
this.taskDto=new TaskListVo();
return this;
}
@Override
public TaskListVoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.taskDto.setId(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildTaskName(String taskName) {
Optional.ofNullable(taskName).ifPresent(inte ->{
this.taskDto.setTaskName(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildRouteName(String routeName) {
Optional.ofNullable(routeName).ifPresent(inte ->{
this.taskDto.setRouteName(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildOrganizationName(String organizationName) {
Optional.ofNullable(organizationName).ifPresent(inte ->{
this.taskDto.setOrganizationName(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildDeviceId(Integer deviceId) {
Optional.ofNullable(deviceId).ifPresent(inte ->{
this.taskDto.setDeviceId(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildDeviceName(String deviceName) {
Optional.ofNullable(deviceName).ifPresent(inte ->{
this.taskDto.setDeviceName(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.taskDto.setDeviceHardId(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildDeviceStatus(Integer deviceStatus) {
Optional.ofNullable(deviceStatus).ifPresent(inte ->{
this.taskDto.setDeviceStatus(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildTaskStatus(Integer taskStatus) {
Optional.ofNullable(taskStatus).ifPresent(inte ->{
this.taskDto.setTaskStatue(inte);
});
return this;
}
@Override
public TaskListVoTmBuilder buildCreateWhen(String createWhen) {
Optional.ofNullable(createWhen).ifPresent(inte ->{
this.taskDto.setCreateWhen(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.TaskReportDto;
import com.mmc.tmj.utils.builder.statement.TaskReportDtoStatementTmBuilder;
import java.time.LocalDateTime;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/18 14:11
* @Version 1.0
* @description
*/
public class TaskReportDtoTmBuilder extends TaskReportDtoStatementTmBuilder<TaskReportDto> {
public static TaskReportDtoTmBuilder getInstance(){
return new TaskReportDtoTmBuilder();
}
@Override
public TaskReportDto getObject() {
return taskReportDto;
}
@Override
public TaskReportDtoTmBuilder init(TaskReportDto object) {
taskReportDto=object;
return this;
}
@Override
public TaskReportDtoTmBuilder init() {
taskReportDto = new TaskReportDto();
return this;
}
@Override
public TaskReportDtoTmBuilder buildTaskId(Integer taskId) {
Optional.ofNullable(taskId).ifPresent(inte ->{
this.taskReportDto.setTaskId(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildTaskName(String taskName) {
Optional.ofNullable(taskName).ifPresent(inte ->{
this.taskReportDto.setTaskName(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildLocation(String location) {
Optional.ofNullable(location).ifPresent(inte ->{
this.taskReportDto.setLocation(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildStartTime(LocalDateTime startTime) {
Optional.ofNullable(startTime).ifPresent(inte ->{
this.taskReportDto.setStartTime(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildEndTime(LocalDateTime endTime) {
Optional.ofNullable(endTime).ifPresent(inte ->{
this.taskReportDto.setEndTime(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildTaskDate(LocalDateTime taskDate) {
Optional.ofNullable(taskDate).ifPresent(inte ->{
this.taskReportDto.setTaskDate(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildWeather(String weather) {
Optional.ofNullable(weather).ifPresent(inte ->{
this.taskReportDto.setWeather(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.taskReportDto.setDeviceHardId(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildExecutePerson(String executePerson) {
Optional.ofNullable(executePerson).ifPresent(inte ->{
this.taskReportDto.setExecutePerson(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildReportAddTime(LocalDateTime reportAddTime) {
Optional.ofNullable(reportAddTime).ifPresent(inte ->{
this.taskReportDto.setReportAddTime(inte);
});
return this;
}
@Override
public TaskReportDtoTmBuilder buildRemark(String remark) {
Optional.ofNullable(remark).ifPresent(inte ->{
this.taskReportDto.setRemark(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import cn.afterturn.easypoi.entity.ImageEntity;
import com.mmc.tmj.entity.result.PhotographListVo;
import com.mmc.tmj.utils.builder.statement.TaskReportMapStatementTmBuilder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/18 15:16
* @Version 1.0
* @description
*/
public class TaskReportMapTmBuilder extends TaskReportMapStatementTmBuilder<Map<String,Object>> {
public static TaskReportMapTmBuilder getInstance(){
return new TaskReportMapTmBuilder();
}
@Override
public Map<String, Object> getObject() {
return map;
}
@Override
public TaskReportMapTmBuilder init(Map<String, Object> object) {
map=object;
return this;
}
@Override
public TaskReportMapTmBuilder init() {
map=new HashMap<String,Object>();
return this;
}
@Override
public TaskReportMapTmBuilder buildTaskId(Integer taskId) {
Optional.ofNullable(taskId).ifPresent(inte ->{
this.map.put("taskId",inte);
});
return this;
}
@Override
public TaskReportMapTmBuilder buildTaskName(String taskName) {
Optional.ofNullable(taskName).ifPresent(inte ->{
this.map.put("taskName",inte);
});
return this;
}
@Override
public TaskReportMapTmBuilder buildTaskDate(String taskDate) {
Optional.ofNullable(taskDate).ifPresent(inte ->{
this.map.put("taskDate",inte);
});
return this;
}
@Override
public TaskReportMapTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.map.put("deviceHardId",inte);
});
return this;
}
@Override
public TaskReportMapTmBuilder buildTaskTime(String taskTime) {
this.map.put("taskTime",taskTime);
return this;
}
@Override
public TaskReportMapTmBuilder buildImageList(List<ImageEntity> imageList) {
this.map.put("imageList",imageList);
return this;
}
@Override
public TaskReportMapTmBuilder buildExecutePerson(String executePerson) {
Optional.ofNullable(executePerson).ifPresent(inte ->{
this.map.put("executePerson",inte);
});
return this;
}
@Override
public TaskReportMapTmBuilder buildReportAddTime(String reportAddTime) {
Optional.ofNullable(reportAddTime).ifPresent(inte ->{
this.map.put("reportAddTime",inte);
});
return this;
}
@Override
public TaskReportMapTmBuilder buildRemark(String remark) {
Optional.ofNullable(remark).ifPresent(inte ->{
this.map.put("remark",inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.result.TaskListVo;
import com.mmc.tmj.entity.result.TaskSelectVo;
import com.mmc.tmj.utils.builder.statement.TaskListVoStatementTmBuilder;
import com.mmc.tmj.utils.builder.statement.TaskSelectVoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/9 10:19
* @Version 1.0
* @description
*/
public class TaskSelectVoTmBuilder extends TaskSelectVoStatementTmBuilder<TaskSelectVo> {
public static TaskSelectVoTmBuilder getInstance(){
return new TaskSelectVoTmBuilder();
}
@Override
public TaskSelectVo getObject() {
return taskSelectVo;
}
@Override
public TaskSelectVoTmBuilder init(TaskSelectVo object) {
this.taskSelectVo=object;
return this;
}
@Override
public TaskSelectVoTmBuilder init() {
this.taskSelectVo=new TaskSelectVo();
return this;
}
@Override
public TaskSelectVoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.taskSelectVo.setId(inte);
});
return this;
}
@Override
public TaskSelectVoTmBuilder buildTaskName(String taskName) {
Optional.ofNullable(taskName).ifPresent(inte ->{
this.taskSelectVo.setTaskName(inte);
});
return this;
}
}
package com.mmc.tmj.utils.builder.statement.impl;
import com.mmc.tmj.entity.database.TrackDo;
import com.mmc.tmj.utils.builder.statement.TrackDoStatementTmBuilder;
import java.util.Optional;
/**
* @Author lcz
* @Date 2022/5/18 9:36
* @Version 1.0
* @description
*/
public class TrackDoTmBuilder extends TrackDoStatementTmBuilder<TrackDo> {
public static TrackDoTmBuilder getInstance(){
return new TrackDoTmBuilder();
}
@Override
public TrackDo getObject() {
return trackDo;
}
@Override
public TrackDoTmBuilder init(TrackDo object) {
return this;
}
@Override
public TrackDoTmBuilder init() {
return this;
}
@Override
public TrackDoTmBuilder buildId(Integer id) {
Optional.ofNullable(id).ifPresent(inte ->{
this.trackDo.setId(inte);
});
return this;
}
@Override
public TrackDoTmBuilder buildSystemCode(String systemCode) {
Optional.ofNullable(systemCode).ifPresent(inte ->{
this.trackDo.setSystemCode(inte);
});
return this;
}
@Override
public TrackDoTmBuilder buildDeviceType(String deviceType) {
Optional.ofNullable(deviceType).ifPresent(inte ->{
this.trackDo.setDeviceType(inte);
});
return this;
}
@Override
public TrackDoTmBuilder buildDeviceHardId(String deviceHardId) {
Optional.ofNullable(deviceHardId).ifPresent(inte ->{
this.trackDo.setDeviceHardId(inte);
});
return this;
}
@Override
public TrackDoTmBuilder buildFlightSortie(String flightSortie) {
Optional.ofNullable(flightSortie).ifPresent(inte ->{
this.trackDo.setFlightSortie(inte);
});
return this;
}
@Override
public TrackDoTmBuilder buildData(String data) {
Optional.ofNullable(data).ifPresent(inte ->{
this.trackDo.setData(inte);
});
return this;
}
@Override
public TrackDoTmBuilder buildTime(Integer time) {
Optional.ofNullable(time).ifPresent(inte ->{
this.trackDo.setTime(inte);
});
return this;
}
}
spring:
datasource:
username: tmj
password: MMC@2022&MYSQL
url: jdbc:mysql://rm-wz9dd796t4j1giz6t2o.mysql.rds.aliyuncs.com:3306/tmj_v1?useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
redis:
host: r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
port: 6379
password: MMC@2022&REDIS
jpa:
hibernate:
ddl-auto: update
show-sql: true
mmc:
tmj:
lastModifyDate: '2022-03-10'
# 0.0.1 :主版本号-次版本号(奇数为开发版本、偶数为稳定版本)-修订版本
version: '0.1.1'
physicalUrl: file:/files/
webUrl: http://120.25.160.49:30008/tmj
logging:
level:
org.springframework.web: INFO
file:
name: "logs/${spring.application.name}.log" #springboot会自动切分日志,如crm.log.1、crm.log.2
spring:
datasource:
url: jdbc:mysql://192.168.5.85:3306/user_center?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: MMC123123mmc2021
type: com.zaxxer.hikari.HikariDataSource
# url: jdbc:mysql://120.25.160.49:30006/tmj?useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
# username: root
# password: 1234567
# redis:
# host: 120.25.160.49
# port: 30379
# password: mmcaabcE
redis:
host: localhost
port: 6379
password:
jpa:
hibernate:
ddl-auto: update
show-sql: true
#dev
#mmc:
# tmj:
# lastModifyDate: '2022-03-10'
# # 0.0.1 :主版本号-次版本号(奇数为开发版本、偶数为稳定版本)-修订版本
# version: '0.1.1'
# physicalUrl: file:/files/
# webUrl: http://120.25.160.49:30008/tmj
mmc:
tmj:
lastModifyDate: '2021-07-29'
# 0.0.1 :主版本号-次版本号(奇数为开发版本、偶数为稳定版本)-修订版本
version: '0.1.1'
physicalUrl: file:./files/
webUrl: http://localhost:10008/tmj
restUrl: http://localhost:20189/
login: usercentersystemserver/user/externalLogin
groundData3: api/getAircraftFlightsortieData3
groundData: api/getAircraftFlightsortieData
flyData: devicecentersystemserver/api/getLatestDataByDeviceHardId?appid={appid}&deviceHardId={deviceHardId}
username: Chuck-public
password: 1234567
logging:
level:
org.springframework.web: DEBUG
file:
name: "log/${spring.application.name}.log"
\ No newline at end of file
spring:
datasource:
username: tmj
password: MMC@2022&MYSQL
url: jdbc:mysql://rm-wz9dd796t4j1giz6t.mysql.rds.aliyuncs.com:3306/tmj_v1?useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
redis:
host: r-wz9ke310fs684hacn1.redis.rds.aliyuncs.com
port: 6379
password: MMC@2022&REDIS
jpa:
hibernate:
ddl-auto: update
show-sql: true
mmc:
tmj:
lastModifyDate: '2022-03-10'
# 0.0.1 :主版本号-次版本号(奇数为开发版本、偶数为稳定版本)-修订版本
version: '0.1.1'
physicalUrl: file:/files/
webUrl: http://120.25.160.49:30008/tmj
logging:
level:
org.springframework.web: INFO
file:
name: "logs/${spring.application.name}.log" #springboot会自动切分日志,如crm.log.1、crm.log.2
server:
port: 10009
servlet:
context-path: /tmj
spring:
application:
name: tmj
profiles:
active: local
servlet:
multipart:
max-file-size: 100MB
max-request-size: 120MB
batch:
job:
enabled: false
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
- org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
com:
chuck:
fileLocation: ./files
uploadDir: ./upload/
mmc:
tmj-v1:
url: http://121.43.58.140:32015/
minio:
endpoint: http://120.25.160.49:9000
accesskey: minio
secretkey: minio1234567
mmcflying:
base64Secret: PF297HdbMAG93OJI4O4g5Gd=
tokenAllowHash: token::allow::hash
\ No newline at end of file
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!--定义参数,后面可以通过${APP_NAME}使用-->
<property name="APP_NAME" value="start" />
<property name="LOG_PATH" value="${user.home}/${APP_NAME}/logs" />
<property name="LOG_FILE" value="${LOG_PATH}/application.log" />
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--定义日志输出的路径-->
<file>${LOG_FILE}</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>50MB</maxFileSize>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!--rootLogger是默认的logger-->
<root level="INFO">
<!--定义了两个appender,日志会通过往这两个appender里面写-->
<appender-ref ref="CONSOLE" />
<appender-ref ref="APPLICATION" />
</root>
<!--应用日志-->
<!--这个logger没有指定appender,它会继承root节点中定义的那些appender-->
<logger name="com.mmc.tmj" level="DEBUG"/>
<!--数据库日志-->
<!--由于这个logger自动继承了root的appender,root中已经有stdout的appender了,自己这边又引入了stdout的appender-->
<!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
<!--additivity表示要不要使用rootLogger配置的appender进行输出-->
<logger name="com.apache.ibatis" level="TRACE" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</configuration>
[
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.07,\n \"altitude\": 173.35,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 98.00,\n \"climbRate\": 1.20,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485097\",\n \"distanceToHome\": 0.08,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 2.29,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"3\",\n \"groundSpeed\": 0.00,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219492\",\n \"longitude\": \"120.8745705\",\n \"pitch\": 2,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.59,\n \"yaw\": -119.04181\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.05,\n \"altitude\": 174.96,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 97.00,\n \"climbRate\": 1.95,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485098\",\n \"distanceToHome\": 0.12,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 3.61,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"4\",\n \"groundSpeed\": 0.00,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219488\",\n \"longitude\": \"120.8745707\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.56,\n \"yaw\": -119.16658\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.08,\n \"altitude\": 176.90,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 96.00,\n \"climbRate\": 2.12,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485099\",\n \"distanceToHome\": 0.12,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 6.45,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"5\",\n \"groundSpeed\": -0.04,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219486\",\n \"longitude\": \"120.8745706\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.51,\n \"yaw\": -118.58542\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.07,\n \"altitude\": 179.71,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 95.55,\n \"climbRate\": 2.92,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485100\",\n \"distanceToHome\": 0.12,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 8.62,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"6\",\n \"groundSpeed\": -0.02,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219487\",\n \"longitude\": \"120.8745705\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 17,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.47,\n \"yaw\": -118.67817\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.04,\n \"altitude\": 182.76,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 95.00,\n \"climbRate\": 3.38,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485101\",\n \"distanceToHome\": 0.09,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 11.52,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"7\",\n \"groundSpeed\": -0.04,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219488\",\n \"longitude\": \"120.8745706\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.36,\n \"yaw\": -118.437744\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.01,\n \"altitude\": 185.94,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 94.00,\n \"climbRate\": 3.46,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485102\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 14.67,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"8\",\n \"groundSpeed\": -0.02,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219489\",\n \"longitude\": \"120.8745705\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.41,\n \"yaw\": -118.460754\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.07,\n \"altitude\": 189.72,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 93.00,\n \"climbRate\": 2.73,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485103\",\n \"distanceToHome\": 0.13,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 19.27,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"9\",\n \"groundSpeed\": -0.01,\n \"height\": 100,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219489\",\n \"longitude\": \"120.8745705\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.41,\n \"yaw\": -118.22346\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.0,\n \"altitude\": 191.71,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 92.00,\n \"climbRate\": 2.24,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485104\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 20.35,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"10\",\n \"groundSpeed\": 0.04,\n \"height\": 21.26,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219491\",\n \"longitude\": \"120.87457\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.51,\n \"yaw\": -118.60165\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.0,\n \"altitude\": 194.97,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 91.00,\n \"climbRate\": 3.11,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485105\",\n \"distanceToHome\": 0.09,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 24.52,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"11\",\n \"groundSpeed\": -0.07,\n \"height\": 24.52,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219491\",\n \"longitude\": \"120.87457\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -118.42574\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.0,\n \"altitude\": 197.18,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 90.00,\n \"climbRate\": 1.85,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485106\",\n \"distanceToHome\": 0.05,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 25.78,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"12\",\n \"groundSpeed\": -0.03,\n \"height\": 26.73,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219489\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1048\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.36,\n \"yaw\": -117.17714\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-小旋风-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-小旋风-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.0,\n \"altitude\": 199.57,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 89.90,\n \"climbRate\": 2.84,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485107\",\n \"distanceToHome\": 0.05,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 28.51,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"13\",\n \"groundSpeed\": -0.02,\n \"height\": 29.12,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219488\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.5,\n \"yaw\": -97.81129\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.1,\n \"altitude\": 202.10,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 89.76,\n \"climbRate\": 2.90,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485108\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 31.03,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"14\",\n \"groundSpeed\": -0.01,\n \"height\": 31.65,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219488\",\n \"longitude\": \"120.8745699\",\n \"pitch\": 3,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 17,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -82.91312\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.03,\n \"altitude\": 204.75,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 89.43,\n \"climbRate\": 3.08,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485109\",\n \"distanceToHome\": 0.21,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 33.62,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"15\",\n \"groundSpeed\": -0.02,\n \"height\": 34.30,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219487\",\n \"longitude\": \"120.8745702\",\n \"pitch\": 2,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.31,\n \"yaw\": -84.925804\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.11,\n \"altitude\": 208.16,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 89.05,\n \"climbRate\": 3.03,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485110\",\n \"distanceToHome\": 0.18,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 37.73,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"16\",\n \"groundSpeed\": -0.08,\n \"height\": 37.71,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219487\",\n \"longitude\": \"120.8745705\",\n \"pitch\": 2,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 17,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.28,\n \"yaw\": -94.41134\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.09,\n \"altitude\": 210.82,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 89.00,\n \"climbRate\": 2.96,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485111\",\n \"distanceToHome\": 0.10,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"17\",\n \"groundSpeed\": 0.07,\n \"height\": 40.37,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219488\",\n \"longitude\": \"120.8745706\",\n \"pitch\": 1,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.25,\n \"yaw\": -98.26951\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.03,\n \"altitude\": 213.93,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 88.90,\n \"climbRate\": 2.21,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485112\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18\",\n \"groundSpeed\": -0.08,\n \"height\": 43.48,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219489\",\n \"longitude\": \"120.8745706\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -2,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.25,\n \"yaw\": -105.02513\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.00,\n \"altitude\": 215.60,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 88.60,\n \"climbRate\": 1.48,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485113\",\n \"distanceToHome\": 0.13,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"19\",\n \"groundSpeed\": -0.05,\n \"height\": 45.15,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219489\",\n \"longitude\": \"120.8745704\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.34,\n \"yaw\": -105.32069\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.02,\n \"altitude\": 216.86,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 88.49,\n \"climbRate\": 1.47,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485114\",\n \"distanceToHome\": 0.14,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"20\",\n \"groundSpeed\": -0.10,\n \"height\": 46.41,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.821949\",\n \"longitude\": \"120.8745704\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.39,\n \"yaw\": -105.56245\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.07,\n \"altitude\": 218.88,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 88.45,\n \"climbRate\": 2.98,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485115\",\n \"distanceToHome\": 0.15,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"21\",\n \"groundSpeed\": -0.09,\n \"height\": 48.43 ,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219491\",\n \"longitude\": \"120.8745701\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.17,\n \"yaw\": -105.71583\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.13,\n \"altitude\": 221.37,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 88.02,\n \"climbRate\": 2.27,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485116\",\n \"distanceToHome\": 0.09,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"22\",\n \"groundSpeed\": 0.05,\n \"height\": 50.91,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.821949\",\n \"longitude\": \"120.8745701\",\n \"pitch\": 1,\n \"platformType\": 0,\n \"roll\": -2,\n \"satCount\": 18,\n \"taskId\": \"1054\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.14,\n \"yaw\": -105.44572\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-插翅虎-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.02,\n \"altitude\": 222.63,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 87.90,\n \"climbRate\": 0.10,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485117\",\n \"distanceToHome\": 0.15,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"23\",\n \"groundSpeed\": -0.05,\n \"height\": 52.18,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"31.821949\",\n \"longitude\": \"120.8745701\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.38,\n \"yaw\": -105.440445\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.05,\n \"altitude\": 222.68,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 87.55,\n \"climbRate\": 0.02,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485118\",\n \"distanceToHome\": 0.19,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"24\",\n \"groundSpeed\": 0.01,\n \"height\": 52.23,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"32.821949\",\n \"longitude\": \"120.87457\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": 100\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.09,\n \"altitude\": 222.72,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 86.55,\n \"climbRate\": -0.02,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485119\",\n \"distanceToHome\": 0.14,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"25\",\n \"groundSpeed\": 0.00,\n \"height\": 52.27,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"33.821949\",\n \"longitude\": \"120.87457\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.33,\n \"yaw\": -105.90194\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.07,\n \"altitude\": 222.71,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 85.00,\n \"climbRate\": -0.01,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485120\",\n \"distanceToHome\": 0.14,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"26\",\n \"groundSpeed\": -0.01,\n \"height\": 52.26,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"34.821949\",\n \"longitude\": \"120.8745699\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -105.9561\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.06,\n \"altitude\": 222.71,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 84.55,\n \"climbRate\": -0.02,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485121\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"27\",\n \"groundSpeed\": -0.05,\n \"height\": 52.26,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"35.8219489\",\n \"longitude\": \".120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -105.816216\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.02,\n \"altitude\": 222.74,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 0.00,\n \"climbRate\": -0.06,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485122\",\n \"distanceToHome\": 0.07,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"28\",\n \"groundSpeed\": -0.07,\n \"height\": 52.29,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"36.8219488\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -105.71509\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": -0.01,\n \"altitude\": 222.72,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 0.00,\n \"climbRate\": -0.03,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485123\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"29\",\n \"groundSpeed\": 0.00,\n \"height\": 52.27,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"37.8219489\",\n \"longitude\": \"120.8745698\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -105.71837\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.01,\n \"altitude\": 222.67,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 82.66,\n \"climbRate\": -0.02,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485125\",\n \"distanceToHome\": 0.11,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 1520,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"31\",\n \"groundSpeed\": -0.07,\n \"height\": 52.22,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"38.821949\",\n \"longitude\": \"120.8745699\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.3,\n \"yaw\": -105.684906\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.00,\n \"altitude\": 222.65,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 81.55,\n \"climbRate\": 0.00,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485126\",\n \"distanceToHome\": 0.07,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"32\",\n \"groundSpeed\": -0.05,\n \"height\": 52.20,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"39.8219491\",\n \"longitude\": \"120.8745699\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.28,\n \"yaw\": -105.62343\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.00,\n \"altitude\": 222.68,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 80.75,\n \"climbRate\": -0.01,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485127\",\n \"distanceToHome\": 0.06,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"33\",\n \"groundSpeed\": -0.02,\n \"height\": 52.23,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"40.8219493\",\n \"longitude\": \"120.8745699\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1063\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.26,\n \"yaw\": -105.578896\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_JIEDAO\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-入云龙-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-入云龙-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.00,\n \"altitude\": 222.70,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 60.81,\n \"climbRate\": -0.04,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485128\",\n \"distanceToHome\": 0.07,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"34\",\n \"groundSpeed\": -0.04,\n \"height\": 52.25,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219496\",\n \"longitude\": \"120.87457\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.26,\n \"yaw\": -105.69836\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-玉麒麟-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.03,\n \"altitude\": 222.74,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 55.55,\n \"climbRate\": -0.06,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485129\",\n \"distanceToHome\": 0.12,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"35\",\n \"groundSpeed\": -0.03,\n \"height\": 52.28,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219496\",\n \"longitude\": \"120.8745701\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.25,\n \"yaw\": -105.62724\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-玉麒麟-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.02,\n \"altitude\": 222.74,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 50.22,\n \"climbRate\": -0.09,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485130\",\n \"distanceToHome\": 0.07,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"36\",\n \"groundSpeed\": -0.12,\n \"height\": 52.29,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219496\",\n \"longitude\": \"120.8745702\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.25,\n \"yaw\": -105.42953\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-玉麒麟-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.04,\n \"altitude\": 222.68,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 45.55,\n \"climbRate\": -0.02,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485131\",\n \"distanceToHome\": 0.10,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"37\",\n \"groundSpeed\": 0.00,\n \"height\": 52.23,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219496\",\n \"longitude\": \"120.8745702\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.25,\n \"yaw\": -105.44079\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-玉麒麟-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.01,\n \"altitude\": 222.68,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 40.22,\n \"climbRate\": -0.03,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485132\",\n \"distanceToHome\": 0.06,\n \"distanceToNext\": 0,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"38\",\n \"groundSpeed\": 0.04,\n \"height\": 52.23,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.82194951527\",\n \"longitude\": \"120.87457\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.25,\n \"yaw\": -105.5409\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.03,\n \"altitude\": 222.64,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 35.00,\n \"climbRate\": -0.01,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485133\",\n \"distanceToHome\": 0.04,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.19,\n \"height\": 52.19,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219497\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.23,\n \"yaw\": -105.59802\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.06,\n \"altitude\": 222.58,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 30.00,\n \"climbRate\": 0.03,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485134\",\n \"distanceToHome\": 0.10,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.13,\n \"height\": 52.13,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219496\",\n \"longitude\": \"120.8745696\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": -1,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.22,\n \"yaw\": -105.55239\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.03,\n \"altitude\": 222.58,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 25.00,\n \"climbRate\": 0.05,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485135\",\n \"distanceToHome\": 0.12,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.13,\n \"height\": 52.13,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219495\",\n \"longitude\": \"120.8745695\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.22,\n \"yaw\": -105.578354\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.09,\n \"altitude\": 222.61,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 20.00,\n \"climbRate\": 0.01,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485136\",\n \"distanceToHome\": 0.09,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.16,\n \"height\": 52.16,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219493\",\n \"longitude\": \"120.8745696\",\n \"pitch\": -1,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.23,\n \"yaw\": -105.52199\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"3b9569f5-cf33-4763-9844-5c2887de8b04\",\n \"uavInfo\": {\n \"airSpeed\": 0.01,\n \"altitude\": 222.66,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 15.00,\n \"climbRate\": 0.00,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485137\",\n \"distanceToHome\": 0.06,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.20,\n \"height\": 52.20,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219491\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.23,\n \"yaw\": -105.40922\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/smoke\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"mock-插翅虎-deviceHardId-001\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "mock-玉麒麟-deviceHardId-001"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"123456\",\n \"uavInfo\": {\n \"airSpeed\": 0.01,\n \"altitude\": 222.66,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 15.00,\n \"climbRate\": 0.00,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485137\",\n \"distanceToHome\": 0.06,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.20,\n \"height\": 52.20,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219491\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.23,\n \"yaw\": -105.40922\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_HUAPO001\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"202204241634\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "202204241728"
},
{
"appId": 40003,
"deviceData": "{\n \"appId\": 40003,\n \"data\": {\n \"mountInfo\": [\n ],\n \"openid\": \"1234567\",\n \"uavInfo\": {\n \"airSpeed\": 0.01,\n \"altitude\": 222.66,\n \"barometerTemp\": 28.00,\n \"battaryRemain\": 15.00,\n \"climbRate\": 0.00,\n \"current\": 0.00,\n \"currentMountType\": [\n ],\n \"customData\": 0,\n \"dateTime\": \"1600485137\",\n \"distanceToHome\": 0.06,\n \"distanceToNext\": 0.00,\n \"flightDistance\": 51.74,\n \"flightMode\": \"èªç¨³æ¨¡å¼\",\n \"flightSortie\": \"1.60E+12\",\n \"flightState\": 0,\n \"flightTime\": \"18521.850\",\n \"groundSpeed\": 52.20,\n \"height\": 52.20,\n \"imuTemp\": 0,\n \"isLocation\": \"1\",\n \"latitude\": \"30.8219491\",\n \"longitude\": \"120.8745698\",\n \"pitch\": 0,\n \"platformType\": 0,\n \"roll\": 0,\n \"satCount\": 18,\n \"taskId\": \"1081\",\n \"uid\": 0,\n \"unmannedId\": 0,\n \"voltage\": 24.23,\n \"yaw\": -105.40922\n },\n \"videoInfo\": [\n {\n \"vUrl\": \"rtmp://15.38.12.4:1935/live/\",\n \"videoType\": \"rtmp\"\n },\n {\n \"vUrl\": \"http://15.38.12.4:8900/live/\",\n \"videoType\": \"hls\"\n },\n {\n \"vUrl\": \"webrtc://121.43.58.140/live/D_HUAPO002\",\n \"videoType\": \"flv\"\n }\n ]\n },\n \"deviceHardId\": \"202204241635\",\n \"deviceType\": \"1\",\n \"systemCode\": \"MMC\"\n}\n",
"deviceHardId": "202204241729"
}
]
\ No newline at end of file
[
{
"account_name":"何杰",
"phone_num":"18620432685",
"lon":112.577891,
"lat":23.177482
},
{
"account_name":"欧庆辉",
"phone_num":"17603072228",
"lon":113.940442,
"lat":22.576854
},
{
"account_name":"姚树杰",
"phone_num":"15668235102",
"lon":112.577671,
"lat":23.177492
},
{
"account_name":"樊昊",
"phone_num":"13667241367",
"lon":114.037697,
"lat":22.705956
},
{
"account_name":"高小斌",
"phone_num":"13301303221",
"lon":110.840863,
"lat":35.425105
},
{
"account_name":"白璐",
"phone_num":"17793414044",
"lon":107.179917,
"lat":35.683565
},
{
"account_name":"冀恒",
"phone_num":"13080990679",
"lon":107.696315,
"lat":36.775658
},
{
"account_name":"肇庆市云中科技服务有限公司",
"phone_num":"18307009046",
"lon":114.930464,
"lat":25.821016
},
{
"account_name":"深圳市志飞航科技服务有限公司",
"phone_num":"15875506179",
"lon":114.055615,
"lat":22.662853
},
{
"account_name":"魏传阳",
"phone_num":"17645308479",
"lon":129.595481,
"lat":44.568138
},
{
"account_name":"王毅",
"phone_num":"15347476460",
"lon":114.327957,
"lat":23.161235
},
{
"account_name":"韦家利",
"phone_num":"15878164308",
"lon":114.105840,
"lat":22.623136
},
{
"account_name":"王春琦",
"phone_num":"18565879847",
"lon":103.965608,
"lat":30.687780
},
{
"account_name":"李林海",
"phone_num":"13023770874",
"lon":117.011679,
"lat":35.420444
},
{
"account_name":"谢新愉",
"phone_num":"18869965803",
"lon":120.556901,
"lat":27.974635
},
{
"account_name":"周博",
"phone_num":"18687888404",
"lon":101.491854,
"lat":25.176037
},
{
"account_name":"王寿麟",
"phone_num":"18252580095",
"lon":103.819423,
"lat":36.054982
},
{
"account_name":"苏锦辉",
"phone_num":"15705775574",
"lon":120.681195,
"lat":27.985186
},
{
"account_name":"李积锦",
"phone_num":"15352667910",
"lon":103.755344,
"lat":31.117696
},
{
"account_name":"张晓鹏",
"phone_num":"15993591614",
"lon":113.193454,
"lat":33.765829
},
{
"account_name":"山西云界航空科技有限公司",
"phone_num":"13835669758",
"lon":112.890949,
"lat":35.566783
},
{
"account_name":"蒋维东",
"phone_num":"18280287552",
"lon":104.003821,
"lat":30.468020
},
{
"account_name":"钱入仓",
"phone_num":"18751258443",
"lon":120.877505,
"lat":31.398428
},
{
"account_name":"杨鹏",
"phone_num":"15954146468",
"lon":119.161615,
"lat":36.737093
},
{
"account_name":"吕友斌",
"phone_num":"17669604987",
"lon":120.040556,
"lat":35.903406
},
{
"account_name":"李坚绍",
"phone_num":"13422751533",
"lon":113.077485,
"lat":22.587691
},
{
"account_name":"曲舍",
"phone_num":"15942080550",
"lon":123.497667,
"lat":41.769094
},
{
"account_name":"谢小奋",
"phone_num":"15270963445",
"lon":121.543592,
"lat":29.807052
},
{
"account_name":"张强",
"phone_num":"18662239860",
"lon":114.102386,
"lat":22.558377
},
{
"account_name":"邓苗均",
"phone_num":"18328206474",
"lon":104.307933,
"lat":30.623095
},
{
"account_name":"廖林",
"phone_num":"13730834445",
"lon":104.034290,
"lat":30.626351
},
{
"account_name":"金杨",
"phone_num":"15734850676",
"lon":111.841656,
"lat":40.907160
},
{
"account_name":"申振鹏",
"phone_num":"13256355868",
"lon":115.653026,
"lat":36.262054
},
{
"account_name":"易紫瑜",
"phone_num":"13822200479",
"lon":113.160161,
"lat":23.022946
},
{
"account_name":"李曦",
"phone_num":"18671487896",
"lon":115.006437,
"lat":30.196200
},
{
"account_name":"方斌",
"phone_num":"13307977258",
"lon":104.461854,
"lat":30.862229
},
{
"account_name":"王旭阳",
"phone_num":"18264538819",
"lon":116.043065,
"lat":36.460090
},
{
"account_name":"翁国桦",
"phone_num":"15622101037",
"lon":114.112167,
"lat":22.579226
},
{
"account_name":"于博洋",
"phone_num":"19857012804",
"lon":119.984805,
"lat":30.278943
},
{
"account_name":"段家耀",
"phone_num":"18560523802",
"lon":117.946227,
"lat":34.851051
},
{
"account_name":"赵益宽",
"phone_num":"18848255341",
"lon":104.461432,
"lat":30.864879
},
{
"account_name":"居勇",
"phone_num":"18182266655",
"lon":109.462392,
"lat":31.018816
},
{
"account_name":"范平阳",
"phone_num":"13287127720",
"lon":118.604748,
"lat":34.890646
},
{
"account_name":"雷凌云",
"phone_num":"18502335799",
"lon":106.278778,
"lat":29.397589
},
{
"account_name":"张杰",
"phone_num":"13679262206",
"lon":108.895831,
"lat":34.204484
},
{
"account_name":"邓亚建",
"phone_num":"18707944799",
"lon":113.365854,
"lat":23.104432
},
{
"account_name":"莫凯德",
"phone_num":"18772902559",
"lon":110.232799,
"lat":32.224754
},
{
"account_name":"李荣贵",
"phone_num":"18152263215",
"lon":117.169332,
"lat":39.135881
},
{
"account_name":"刘炳生",
"phone_num":"19970793489",
"lon":114.281407,
"lat":30.587382
},
{
"account_name":"冯广元",
"phone_num":"15638022297",
"lon":121.344563,
"lat":31.158175
},
{
"account_name":"陈溢博",
"phone_num":"18802969961",
"lon":109.097970,
"lat":34.076365
},
{
"account_name":"姚博兴",
"phone_num":"17602930321",
"lon":108.792000,
"lat":34.286500
},
{
"account_name":"蔺岩",
"phone_num":"18709408180",
"lon":105.266167,
"lat":34.913459
},
{
"account_name":"刘正丹",
"phone_num":"13172629567",
"lon":112.814983,
"lat":23.290170
},
{
"account_name":"甘肃宇瀚科技有限责任公司",
"phone_num":"13299810899",
"lon":105.698065,
"lat":33.727629
},
{
"account_name":"刘存",
"phone_num":"18571175131",
"lon":113.018063,
"lat":22.619244
},
{
"account_name":"柴腾龙",
"phone_num":"13207140276",
"lon":82.750955,
"lat":41.216569
},
{
"account_name":"张超宇",
"phone_num":"15087175578",
"lon":102.708541,
"lat":24.995862
},
{
"account_name":"王科举",
"phone_num":"19525452182",
"lon":119.324876,
"lat":26.153781
},
{
"account_name":"孙学普",
"phone_num":"17369458610",
"lon":120.687009,
"lat":28.007480
},
{
"account_name":"吴鹏",
"phone_num":"18690305188",
"lon":79.267709,
"lat":37.217080
},
{
"account_name":"冯泽竣",
"phone_num":"18468039931",
"lon":116.078620,
"lat":39.885990
},
{
"account_name":"刘向明",
"phone_num":"18095134175",
"lon":106.378575,
"lat":39.030067
},
{
"account_name":"蔡世纪",
"phone_num":"13295216509",
"lon":89.700297,
"lat":42.705415
},
{
"account_name":"陈辉",
"phone_num":"15963775812",
"lon":117.292885,
"lat":35.659644
},
{
"account_name":null,
"phone_num":"15112682437",
"lon":113.940302,
"lat":22.576896
},
{
"account_name":"张红斌",
"phone_num":"13085628167",
"lon":120.700425,
"lat":30.791740
},
{
"account_name":"李佳航",
"phone_num":"17625056591",
"lon":118.770960,
"lat":31.872888
},
{
"account_name":"蓝泽龙",
"phone_num":"15297857083",
"lon":114.891762,
"lat":25.886072
},
{
"account_name":"申明",
"phone_num":"13100574005",
"lon":108.310799,
"lat":22.793100
},
{
"account_name":"陈慧",
"phone_num":"18520988447",
"lon":114.046150,
"lat":22.998932
},
{
"account_name":"苏晨晨",
"phone_num":"17600874447",
"lon":120.296099,
"lat":36.285916
},
{
"account_name":"陈鹤",
"phone_num":"15656065939",
"lon":117.114681,
"lat":31.999005
},
{
"account_name":"骆进",
"phone_num":"13660345656",
"lon":113.389979,
"lat":23.007151
},
{
"account_name":"王岿章",
"phone_num":"18309365805",
"lon":106.079426,
"lat":37.620859
},
{
"account_name":"米珍斌",
"phone_num":"16609103472",
"lon":116.051878,
"lat":36.446941
},
{
"account_name":"丁晟琪",
"phone_num":"18251514207",
"lon":118.048398,
"lat":34.127873
},
{
"account_name":"郭俊成",
"phone_num":"18103948735",
"lon":116.146399,
"lat":39.932656
},
{
"account_name":"朱安坤",
"phone_num":"17862358710",
"lon":118.825309,
"lat":35.566494
},
{
"account_name":"孙磊",
"phone_num":"17616208050",
"lon":118.327344,
"lat":33.909248
},
{
"account_name":"台勇",
"phone_num":"15706462137",
"lon":117.108230,
"lat":38.999206
},
{
"account_name":"陈鉴康",
"phone_num":"18318277453",
"lon":113.361610,
"lat":23.018834
},
{
"account_name":"郭文",
"phone_num":"18700023365",
"lon":121.907726,
"lat":30.872513
},
{
"account_name":"王东辉",
"phone_num":"17710451534",
"lon":120.786821,
"lat":42.213687
},
{
"account_name":"县敏杰",
"phone_num":"13201229036",
"lon":87.521620,
"lat":43.938251
},
{
"account_name":"云城区小鹿文化传播工作室",
"phone_num":"18316899255",
"lon":112.023706,
"lat":22.932501
},
{
"account_name":"黄聪",
"phone_num":"15970031435",
"lon":113.182091,
"lat":23.148241
},
{
"account_name":"姚龙",
"phone_num":"13319042183",
"lon":113.211610,
"lat":22.929996
},
{
"account_name":"湘耒科技服务(肇庆)有限公司",
"phone_num":"17612029666",
"lon":112.560590,
"lat":23.149626
},
{
"account_name":"邹城鑫悦无人机科技有限公司",
"phone_num":"16678194017",
"lon":115.706037,
"lat":36.832738
},
{
"account_name":"茅炳云",
"phone_num":"13660656902",
"lon":113.017439,
"lat":23.127651
},
{
"account_name":"徐怀龙",
"phone_num":"18553533788",
"lon":121.358143,
"lat":37.475603
},
{
"account_name":"郑飞虎",
"phone_num":"15121918368",
"lon":121.308186,
"lat":30.834683
},
{
"account_name":"严焕飞",
"phone_num":"15119881698",
"lon":116.642200,
"lat":36.947500
},
{
"account_name":"宋洪乾",
"phone_num":"17753655351",
"lon":117.087384,
"lat":36.672539
},
{
"account_name":"王凤桐",
"phone_num":"18865292191",
"lon":115.896707,
"lat":36.168102
},
{
"account_name":"丁晓辉",
"phone_num":"13111196988",
"lon":120.074421,
"lat":31.923851
},
{
"account_name":"刘雄刚",
"phone_num":"18403471322",
"lon":112.419074,
"lat":39.300439
},
{
"account_name":"谢飞",
"phone_num":"17729164951",
"lon":110.445102,
"lat":18.972887
},
{
"account_name":"张新哲",
"phone_num":"17538339501",
"lon":113.792430,
"lat":35.124875
},
{
"account_name":"王嘉龙",
"phone_num":"13424883756",
"lon":113.106247,
"lat":23.740064
},
{
"account_name":"于文岭",
"phone_num":"13043615324",
"lon":113.556363,
"lat":34.820391
},
{
"account_name":"孙文强",
"phone_num":"13191717315",
"lon":122.130287,
"lat":30.105286
},
{
"account_name":"刘驰",
"phone_num":"15527563857",
"lon":114.275834,
"lat":30.629692
},
{
"account_name":"陆斌",
"phone_num":"13713522047",
"lon":113.916073,
"lat":22.768098
},
{
"account_name":"杨尚德",
"phone_num":"18189362271",
"lon":100.742339,
"lat":38.457392
},
{
"account_name":"韦立权",
"phone_num":"19125200186",
"lon":114.039570,
"lat":22.669264
},
{
"account_name":"邢文龙",
"phone_num":"18236456287",
"lon":113.667336,
"lat":34.824586
},
{
"account_name":"韩浩浩",
"phone_num":"18655555534",
"lon":113.409144,
"lat":23.137307
},
{
"account_name":"张伟",
"phone_num":"18894375278",
"lon":121.614203,
"lat":31.143685
},
{
"account_name":"刘登涛",
"phone_num":"18309641305",
"lon":106.104334,
"lat":38.501328
},
{
"account_name":"杨浩锋",
"phone_num":"13168002684",
"lon":112.578029,
"lat":23.177469
},
{
"account_name":"梁巨泽",
"phone_num":"18076735028",
"lon":118.342042,
"lat":24.565117
},
{
"account_name":"李隐",
"phone_num":"18689730307",
"lon":113.172903,
"lat":23.024577
},
{
"account_name":"黄少泽",
"phone_num":"15364097041",
"lon":112.996315,
"lat":28.061670
},
{
"account_name":"王旭栋",
"phone_num":"15291819946",
"lon":108.069064,
"lat":24.687369
},
{
"account_name":"李伟杰",
"phone_num":"15816248342",
"lon":113.038226,
"lat":23.724868
},
{
"account_name":"孙山峰",
"phone_num":"19981844353",
"lon":110.269342,
"lat":25.355923
},
{
"account_name":"邱飞龙",
"phone_num":"15767035232",
"lon":113.711942,
"lat":22.986066
},
{
"account_name":"魏帝升",
"phone_num":"13549974055",
"lon":113.191467,
"lat":23.090207
},
{
"account_name":"李斯根",
"phone_num":"18307050487",
"lon":113.369901,
"lat":23.052198
},
{
"account_name":"张满森",
"phone_num":"13790919225",
"lon":114.063152,
"lat":22.658514
},
{
"account_name":"陈煜超",
"phone_num":"13798690605",
"lon":112.974187,
"lat":23.095497
},
{
"account_name":"王啸",
"phone_num":"13410118744",
"lon":114.206015,
"lat":22.654675
},
{
"account_name":"成鹏林",
"phone_num":"13080913919",
"lon":108.828379,
"lat":34.213200
},
{
"account_name":"张龙",
"phone_num":"13997463479",
"lon":115.512005,
"lat":38.224812
},
{
"account_name":"李承瑾",
"phone_num":"17630922014",
"lon":114.982705,
"lat":31.817071
},
{
"account_name":"钟佳诚",
"phone_num":"18629903915",
"lon":126.620033,
"lat":43.894072
},
{
"account_name":"李可心",
"phone_num":"16604328245",
"lon":126.545886,
"lat":43.790114
},
{
"account_name":"刘金鑫",
"phone_num":"18043071518",
"lon":126.088252,
"lat":44.708832
},
{
"account_name":"张洪洋",
"phone_num":"15844363215",
"lon":119.958218,
"lat":30.273428
},
{
"account_name":"叶长春",
"phone_num":"18605953603",
"lon":118.662998,
"lat":24.924115
},
{
"account_name":"李龙龙",
"phone_num":"15716782745",
"lon":114.000310,
"lat":32.871370
},
{
"account_name":"胡翰林",
"phone_num":"18682818252",
"lon":113.455788,
"lat":23.139774
},
{
"account_name":"陈陶",
"phone_num":"16673144291",
"lon":111.951976,
"lat":28.118950
},
{
"account_name":"张锦豪",
"phone_num":"15635131779",
"lon":112.592996,
"lat":37.811703
},
{
"account_name":"田丰",
"phone_num":"15666016331",
"lon":117.085588,
"lat":36.642820
},
{
"account_name":"代博源",
"phone_num":"18211926599",
"lon":114.316089,
"lat":22.693409
},
{
"account_name":"蔡伟",
"phone_num":"18502202635",
"lon":117.168580,
"lat":39.237955
},
{
"account_name":"贾银虎",
"phone_num":"17762283719",
"lon":121.813980,
"lat":31.134256
},
{
"account_name":"袁国芳",
"phone_num":"18278194536",
"lon":113.784952,
"lat":34.742555
},
{
"account_name":"张凯",
"phone_num":"15507335102",
"lon":113.138709,
"lat":27.787153
},
{
"account_name":"张宇",
"phone_num":"18310919045",
"lon":117.212098,
"lat":40.199699
},
{
"account_name":"朱清正",
"phone_num":"15305302450",
"lon":115.586008,
"lat":35.110877
},
{
"account_name":"程满",
"phone_num":"18503227713",
"lon":112.591153,
"lat":33.028846
},
{
"account_name":"陈伟湛",
"phone_num":"13189479523",
"lon":113.301475,
"lat":23.150020
},
{
"account_name":"马家乐",
"phone_num":"13001689805",
"lon":104.063867,
"lat":30.579100
},
{
"account_name":"殷李军",
"phone_num":"19924997045",
"lon":114.123468,
"lat":22.743454
},
{
"account_name":"陈勇强",
"phone_num":"13207018610",
"lon":104.650417,
"lat":28.750039
},
{
"account_name":"燕东浩",
"phone_num":"18254644816",
"lon":118.838606,
"lat":37.963623
},
{
"account_name":"王昊天",
"phone_num":"18847901777",
"lon":111.840542,
"lat":40.898087
},
{
"account_name":"曾庆龙",
"phone_num":"18175820263",
"lon":113.088832,
"lat":27.886028
},
{
"account_name":"邱明伟",
"phone_num":"18193401591",
"lon":117.209950,
"lat":39.136510
},
{
"account_name":"荆星",
"phone_num":"18636269871",
"lon":113.385532,
"lat":39.935832
},
{
"account_name":"苏芊",
"phone_num":"17835602770",
"lon":113.384200,
"lat":39.936000
},
{
"account_name":"郭文超",
"phone_num":"18534607502",
"lon":118.548100,
"lat":36.576800
},
{
"account_name":"郝彦斌",
"phone_num":"13133347397",
"lon":112.554095,
"lat":37.799437
},
{
"account_name":"李博魏",
"phone_num":"15332428071",
"lon":116.576107,
"lat":39.785623
},
{
"account_name":"王青坡",
"phone_num":"13123903926",
"lon":121.623504,
"lat":31.129850
},
{
"account_name":"唐建雪",
"phone_num":"13518144287",
"lon":104.122112,
"lat":30.676360
},
{
"account_name":"李浩民",
"phone_num":"18935801296",
"lon":109.248813,
"lat":34.658799
},
{
"account_name":"向志强",
"phone_num":"18815011132",
"lon":120.555416,
"lat":27.972763
},
{
"account_name":"赵康健",
"phone_num":"13474170951",
"lon":108.081102,
"lat":34.261842
},
{
"account_name":"王同贺",
"phone_num":"15094770117",
"lon":116.038750,
"lat":36.432568
},
{
"account_name":"钟小山",
"phone_num":"13268066855",
"lon":113.250341,
"lat":23.210592
},
{
"account_name":"黄伟浩",
"phone_num":"15088065332",
"lon":113.328098,
"lat":23.078684
},
{
"account_name":"邵喆桢",
"phone_num":"13129593297",
"lon":113.906154,
"lat":22.581737
},
{
"account_name":"郑治成",
"phone_num":"18664920903",
"lon":103.816498,
"lat":36.049221
},
{
"account_name":"康崟",
"phone_num":"17584509882",
"lon":112.155204,
"lat":37.528480
},
{
"account_name":"刘绍晗",
"phone_num":"13303077076",
"lon":116.016740,
"lat":38.579497
},
{
"account_name":"薛陟篯",
"phone_num":"13670282074",
"lon":114.136132,
"lat":22.634559
},
{
"account_name":"王飞",
"phone_num":"17775715071",
"lon":111.483922,
"lat":27.236331
},
{
"account_name":"文杰",
"phone_num":"13760072311",
"lon":112.500487,
"lat":23.113375
},
{
"account_name":"王运宁",
"phone_num":"19903355080",
"lon":119.319709,
"lat":39.815049
},
{
"account_name":"饶先明",
"phone_num":"18370795175",
"lon":113.354101,
"lat":22.952698
},
{
"account_name":"白王天子",
"phone_num":"13087049050",
"lon":113.411000,
"lat":33.188400
},
{
"account_name":"易涛",
"phone_num":"13574801846",
"lon":113.113500,
"lat":28.222611
},
{
"account_name":"孟浩辉",
"phone_num":"13069563686",
"lon":117.894484,
"lat":30.632075
},
{
"account_name":"李心豪",
"phone_num":"18737692465",
"lon":114.143400,
"lat":32.059800
},
{
"account_name":"赵君鹏",
"phone_num":"15738465836",
"lon":114.054230,
"lat":32.156657
},
{
"account_name":"郑锦翔",
"phone_num":"18610976116",
"lon":115.047871,
"lat":31.971915
},
{
"account_name":"景东洋",
"phone_num":"18731472657",
"lon":120.171313,
"lat":33.356354
},
{
"account_name":"杨德智",
"phone_num":"18978547724",
"lon":113.179848,
"lat":23.099617
},
{
"account_name":"龚建波",
"phone_num":"18886213850",
"lon":106.505640,
"lat":26.353472
},
{
"account_name":"张旭初",
"phone_num":"15064215647",
"lon":119.961128,
"lat":36.794593
},
{
"account_name":"潘杨斌",
"phone_num":"15170363112",
"lon":114.888088,
"lat":27.812503
},
{
"account_name":"赖佳",
"phone_num":"17630219980",
"lon":104.026306,
"lat":30.732712
},
{
"account_name":"钟桥",
"phone_num":"18588725992",
"lon":121.478301,
"lat":31.287176
},
{
"account_name":"阳益虎",
"phone_num":"15399884801",
"lon":107.449401,
"lat":25.339659
},
{
"account_name":"沈岭峰",
"phone_num":"13757084792",
"lon":120.081528,
"lat":30.871834
},
{
"account_name":"刘坪",
"phone_num":"17620005834",
"lon":113.269167,
"lat":23.141936
},
{
"account_name":"胡锦泽",
"phone_num":"18451997707",
"lon":115.369433,
"lat":35.450512
},
{
"account_name":"宋特赏",
"phone_num":"15072426878",
"lon":114.315329,
"lat":30.457447
},
{
"account_name":"朱何龙",
"phone_num":"19986751884",
"lon":112.114198,
"lat":32.082235
},
{
"account_name":"黄荣敏",
"phone_num":"15018575909",
"lon":113.203155,
"lat":23.245507
},
{
"account_name":"张炳营",
"phone_num":"18719038865",
"lon":113.940382,
"lat":22.577027
},
{
"account_name":"陈小强",
"phone_num":"15014530058",
"lon":113.169307,
"lat":23.029437
},
{
"account_name":"何沅林",
"phone_num":"18664228263",
"lon":112.801221,
"lat":23.323307
},
{
"account_name":"陈政茂",
"phone_num":"13326587231",
"lon":112.014013,
"lat":21.873780
},
{
"account_name":"唐歌",
"phone_num":"19925382238",
"lon":113.940458,
"lat":22.576768
},
{
"account_name":"李旭炜",
"phone_num":"17666222094",
"lon":113.562339,
"lat":23.441965
},
{
"account_name":"江龙",
"phone_num":"18984972537",
"lon":107.584107,
"lat":28.834311
},
{
"account_name":"何沛",
"phone_num":"18748843673",
"lon":104.912011,
"lat":25.113222
},
{
"account_name":"李群",
"phone_num":"15063268286",
"lon":117.362046,
"lat":34.823455
},
{
"account_name":"深圳市云自在航空科技有限公司",
"phone_num":"17614890968",
"lon":114.409491,
"lat":22.631954
},
{
"account_name":"方连成",
"phone_num":"18555881240",
"lon":115.963251,
"lat":32.377842
},
{
"account_name":"徐铭键",
"phone_num":"18645225093",
"lon":117.209364,
"lat":31.768731
},
{
"account_name":"龚龙君",
"phone_num":"18681737095",
"lon":103.813697,
"lat":29.405379
},
{
"account_name":"唐宏",
"phone_num":"13686893900",
"lon":113.902411,
"lat":22.552343
},
{
"account_name":"梁金洲",
"phone_num":"13028766367",
"lon":105.156573,
"lat":35.404073
},
{
"account_name":"刘月",
"phone_num":"15264331752",
"lon":117.981487,
"lat":36.755545
},
{
"account_name":"杜鹏",
"phone_num":"17635052409",
"lon":112.404756,
"lat":39.309384
},
{
"account_name":"赵天宸",
"phone_num":"13151095868",
"lon":118.759675,
"lat":32.109713
},
{
"account_name":"黄议航",
"phone_num":"15521000872",
"lon":110.357310,
"lat":21.270355
},
{
"account_name":"何灿辉",
"phone_num":"18218682160",
"lon":113.162080,
"lat":23.021620
},
{
"account_name":"姚泳宇",
"phone_num":"13433624679",
"lon":113.154500,
"lat":23.025500
},
{
"account_name":"华若健",
"phone_num":"18813540337",
"lon":113.287701,
"lat":23.288319
}
]
\ No newline at end of file
[{"name":"榆林市无人机服务","address":"山西省榆林市","lon":"109.741616","lat":"38.290884"},{"name":"济南市禁毒支队指挥车","address":"山东","lon":"117.126399","lat":"36.656554"},{"name":"江苏省宿迁市指挥车","address":"江苏","lon":"118.281574","lat":"33.96775"},{"name":"福建指挥车","address":"福建","lon":"116.413384","lat":"39.910925"},{"name":"安徽星格科技","address":"安徽省合肥市","lon":"117.233443","lat":"31.826578"},{"name":"成都政府烟花巡查","address":"成都","lon":"116.413384","lat":"39.910925"},{"name":"安徽星格科技有限公司","address":"安徽合肥","lon":"116.413384","lat":"39.910925"},{"name":"江西省赣州市指挥车","address":"江西","lon":"116.413384","lat":"39.910925"},{"name":"上海幻飞","address":"太原","lon":"116.413384","lat":"39.910925"},{"name":"安微星格","address":"成都市双流区","lon":"103.930392","lat":"30.580399"},{"name":"合肥达捷测绘导航技术有限公司","address":"安徽省合肥市","lon":"117.233443","lat":"31.826578"},{"name":"安阳县通航服务站项目/河南省安阳市指挥车","address":"河南安阳","lon":"114.476734","lat":"36.088624"},{"name":"陕西-卤阳湖国家湿地公园","address":"陕西","lon":"116.413384","lat":"39.910925"},{"name":"甘孜测绘项目","address":"四川甘孜","lon":"99.996344","lat":"31.631061"},{"name":"宁夏消防项目","address":"宁夏","lon":"116.413384","lat":"39.910925"},{"name":"甘肃省应急管理厅","address":"甘肃","lon":"103.833182","lat":"36.066455"},{"name":"广东省深圳市指挥车演示/大沙河","address":"深圳","lon":"114.064552","lat":"22.548457"},{"name":"东莞松山湖三维建模","address":"东莞","lon":"113.75842","lat":"23.027308"},{"name":"江苏省扬州市水岸非法侵占巡检","address":"扬州","lon":"119.419419","lat":"32.400677"},{"name":"江西省南昌高速无人机巡查","address":"江西省南昌市","lon":"115.864589","lat":"28.689455"},{"name":"南昌市西山大岭区域进行森林防火无人机巡检","address":"江西省南昌市","lon":"102.671557","lat":"25.043199"},{"name":"山东省枣庄市无人机服务","address":"山东枣庄","lon":"117.330542","lat":"34.815994"},{"name":"南山边海防无人机服务","address":"深圳","lon":"113.927519","lat":"22.530836"},{"name":"智慧吉华街道应急无人机服务","address":"深圳","lon":"114.118898","lat":"22.657482"},{"name":"山东济南禁毒服务","address":"山东济南","lon":"116.413384","lat":"39.910925"},{"name":"陕西省榆林市交付培训无人机服务","address":"陕西省榆林市","lon":"109.741616","lat":"38.290884"},{"name":"北京慧诺瑞德科技有限公司","address":"黑龙江哈尔滨市","lon":"126.541615","lat":"45.808826"},{"name":"江西安高旭科技有限公司","address":"江西省吉安市","lon":"115.000511","lat":"27.119727"},{"name":"江西鉴真防务有限甲方客户江西高速公路局","address":"江西省南昌市","lon":"115.757247","lat":"28.702983"},{"name":"南京大桥机器有限公司","address":"江苏南京市","lon":"118.71283","lat":"32.138"},{"name":"新余博迅汽车有限公司","address":"江西新余","lon":"114.923535","lat":"27.823579"},{"name":"巡演-云南,大理公安局","address":"云南大理","lon":"100.308072","lat":"25.684614"},{"name":"巡演-云南,昆明公安局","address":"云南昆明","lon":"102.839445","lat":"24.886272"},{"name":"巡演-河南-中电27所","address":"河南郑州","lon":"113.631419","lat":"34.753439"},{"name":"中共山东德州运河经济开发区","address":"山东省德州市","lon":"116.365557","lat":"37.441308"},{"name":"中山联通","address":"广东省中山市","lon":"113.399422","lat":"22.522315"},{"name":"郑州新图信息科技股份有限公司","address":"江苏省无锡市","lon":"120.318583","lat":"31.49881"},{"name":"王新院","address":"宁夏银川","lon":"106.238494","lat":"38.49246"},{"name":"青岛峻海物联","address":"山东青岛","lon":"120.389455","lat":"36.072227"},{"name":"宿迁移动","address":"江苏省宿迁市","lon":"118.281574","lat":"33.96775"},{"name":"中海达北京分公司","address":"北京","lon":"116.465069","lat":"39.965072"},{"name":"宁夏科比特创新科技有限公司","address":"新疆阿勒泰","lon":"88.139227","lat":"47.832753"},{"name":"思南农业农村局","address":"贵州","lon":"107.037923","lat":"27.728325"},{"name":"合肥佳讯","address":"安徽合肥","lon":"117.233443","lat":"31.826578"},{"name":"星格徽州","address":"安徽黄山市徽州区","lon":"118.343436","lat":"29.834221"},{"name":"安罡-济南市公安局","address":"济南市公安局","lon":"117.126399","lat":"36.656554"},{"name":"广西壮都集团","address":"广西桂林","lon":"110.186195","lat":"25.241699"}]
\ No newline at end of file
[{"name":"广东服务网点","address":"广东省肇庆市鼎湖区观砚大道双创园","lon":"112.587074","lat":"23.181346"},{"name":"浙江服务网点","address":"浙江省嘉兴市嘉善县罗星街道归谷园区创业中心D座","lon":"120.88318","lat":"30.826251"},{"name":"江西服务网点","address":"江西省赣州市赣州经济技术开发区华昌科技园D6栋","lon":"114.903868","lat":"25.887353"},{"name":"山东服务网点","address":"山东省济宁市邹城市太平东路201号","lon":"116.989952","lat":"35.410475"},{"name":"甘肃服务网点","address":"兰州市城关区定西路东口民航大厦","lon":"116.329233","lat":"39.503846"},{"name":"北京服务网点","address":"北京市石景山区石景山路68号冬训中心冰壶馆","lon":"116.159948","lat":"39.922597"},{"name":"山西服务网点","address":"山西省太原市不锈钢经济园区阳兴南街丰源西路25号","lon":"112.580472","lat":"37.978539"},{"name":"江苏服务网点","address":"盐城市盐南高新区大数据产业园南区(宏洲智能科技园)8号楼","lon":"120.200567","lat":"33.29817"},{"name":"福建服务网点","address":"福建省三明市沙县区虬江街道迎宾大道9号三明中关村科技园11号楼","lon":"117.792701","lat":"26.375622"}]
\ No newline at end of file
[{"name":"江西科比特航空科技有限公司","address":"江西省赣州市大余县新华工业小区","lon":"114.35803","lat":"25.361738"},{"name":"广东省世纪南方科技有限公司","address":"广东省肇庆市鼎湖区观砚大道双创园","lon":"112.587074","lat":"23.181346"},{"name":"山东科比特数据科技有限公司","address":"山东省德州市运河经济开发区新区服务管理办公室德州市公安局产业园","lon":"116.267154","lat":"37.456114"},{"name":"四川科比特天目航空科技有限公司","address":"四川省成都市金堂县白果街道绍元路8号","lon":"104.548014","lat":"30.672329"},{"name":"江苏科比特航空设备有限公司","address":"盐城市盐南高新区大数据产业园南区(宏洲智能科技园)8号楼","lon":"120.200567","lat":"33.29817"},{"name":"山西科比特天目科技有限公司","address":"山西省太原市不锈钢经济园区阳兴南街丰源西路25号","lon":"112.580472","lat":"37.978539"},{"name":"上海科比特航空科技有限公司","address":"上海市青浦区诸光路1588弄309号","lon":"121.307841","lat":"31.190398"},{"name":"北京科比特天目科技有限公司","address":"北京市石景山区石景山路68号冬训中心冰壶馆","lon":"116.159948","lat":"39.922597"},{"name":"山东科比特航空科技有限公司","address":"山东省济宁市邹城市太平东路201号","lon":"116.989952","lat":"35.410475"},{"name":"浙江科比特科技有限公司","address":"浙江省嘉兴市嘉善县罗星街道归谷园区创业中心D座","lon":"120.88318","lat":"30.826251"},{"name":"科比特航空科技(广东)有限公司","address":"肇庆市鼎湖区坑口新城39区","lon":"112.577945","lat":"23.168254"},{"name":"山东黑鲨智能科技有限公司","address":"山东省聊城市东昌府区嘉明经济开发区嘉隆路","lon":"116.52025","lat":"39.769255"},{"name":"深圳市科比特航空技术有限公司","address":"深圳市南山区西丽街道西丽社区打石一路深圳国际创新谷六栋A座","lon":"113.951244","lat":"22.579217"},{"name":"北京科比特智教科技有限公司","address":"北京市朝阳区广顺北大街19号","lon":"116.473539","lat":"40.01301"},{"name":"陕西科比特航空科技有限公司","address":"陕西省榆林市高新技术产业园区开源大道高科大厦A座","lon":"109.7687","lat":"38.253177"},{"name":"重庆科比特创新科技有限公司","address":"重庆市北碚区蔡家岗镇嘉运大道111号2幢","lon":"106.485982","lat":"29.756529"},{"name":"江西科比特通用航空有限公司","address":"江西省赣州市赣州经济技术开发区华昌科技园D6栋","lon":"114.903868","lat":"25.887353"},{"name":"三明市科比特航空科技有限公司","address":"福建省三明市沙县区虬江街道迎宾大道9号三明中关村科技园11号楼","lon":"117.792701","lat":"26.375622"},{"name":"武汉科比特创新科技有限公司","address":"武昌区杨园街道纺机路29号万科金域华府商业中心11层会议室2号,3号德沃克孵化器","lon":"114.357117","lat":"30.60576"},{"name":"山东科比特科技创新有限公司","address":"山东省枣庄高新区锦水长街(互联网小镇)2号楼","lon":"117.317244","lat":"34.786332"},{"name":"广西科比特创新科技有限公司","address":"中国(广西)自由贸易试验区南宁片区博艺路5一1号梦之岛江湾一品5号楼","lon":"108.375572","lat":"22.823269"},{"name":"吉林省科比特航空科技有限公司","address":"长春市南关区人民大街7088号伟峰国际大厦","lon":"125.332912","lat":"43.850831"},{"name":"内蒙古科比特航空科技有限公司","address":"内蒙古自治区呼和浩特市如意工业园区晨光街2号呼和浩特科创中心","lon":"111.784311","lat":"40.835879"},{"name":"深圳市科比特航空服务有限公司","address":"深圳市南山区西丽街道西丽社区打石一路深圳国际创新谷六栋A座","lon":"113.951244","lat":"22.579217"},{"name":"宁夏科比特创新科技有限公司","address":"宁夏银川市西夏区宁夏职业技术学院竞新楼C段","lon":"106.148921","lat":"38.531163"}]
\ No newline at end of file
[{"name":"广东培训网点","address":"广东省肇庆市鼎湖区观砚大道双创园","lon":"112.587074","lat":"23.181346"},{"name":"浙江培训网点","address":"浙江省嘉兴市嘉善县罗星街道归谷园区创业中心D座","lon":"120.88318","lat":"30.826251"},{"name":"江西培训网点","address":"江西省赣州市赣州经济技术开发区华昌科技园D6栋","lon":"114.903868","lat":"25.887353"},{"name":"山东培训网点","address":"山东省济宁市邹城市太平东路201号","lon":"116.989952","lat":"35.410475"},{"name":"甘肃培训网点","address":"兰州市城关区定西路东口民航大厦","lon":"116.329233","lat":"39.503846"},{"name":"北京培训网点","address":"北京市石景山区石景山路68号冬训中心冰壶馆","lon":"116.159948","lat":"39.922597"},{"name":"山西培训网点","address":"山西省太原市不锈钢经济园区阳兴南街丰源西路25号","lon":"112.580472","lat":"37.978539"},{"name":"江苏培训网点","address":"盐城市盐南高新区大数据产业园南区(宏洲智能科技园)8号楼","lon":"120.200567","lat":"33.29817"},{"name":"福建培训网点","address":"福建省三明市沙县区虬江街道迎宾大道9号三明中关村科技园11号楼","lon":"117.792701","lat":"26.375622"}]
\ No newline at end of file
[
{
"account_name":"何杰",
"phone_num":"18620432685",
"img_type": 3,
"device_name": "入云龙-001",
"lon":112.577891,
"lat":23.177482
},
{
"account_name":"欧庆辉",
"phone_num":"17603072228",
"img_type": 3,
"device_name": "入云龙-001",
"lon":113.940442,
"lat":22.576854
},
{
"account_name":"姚树杰",
"phone_num":"15668235102",
"img_type": 3,
"device_name": "入云龙-001",
"lon":112.577671,
"lat":23.177492,
"on_line": true
},
{
"account_name":"樊昊",
"phone_num":"13667241367",
"img_type": 3,
"device_name": "入云龙-001",
"lon":114.037697,
"lat":22.705956
},
{
"account_name":"高小斌",
"phone_num":"13301303221",
"img_type": 3,
"device_name": "入云龙-001",
"lon":110.840863,
"lat":35.425105
},
{
"account_name":"白璐",
"phone_num":"17793414044",
"img_type": 3,
"device_name": "入云龙-001",
"lon":107.179917,
"lat":35.683565,
"on_line": true
},
{
"account_name":"冀恒",
"phone_num":"13080990679",
"img_type": 3,
"device_name": "入云龙-001",
"lon":107.696315,
"lat":36.775658
},
{
"account_name":"肇庆市云中科技服务有限公司",
"phone_num":"18307009046",
"img_type": 3,
"device_name": "入云龙-001",
"lon":114.930464,
"lat":25.821016
},
{
"account_name":"深圳市志飞航科技服务有限公司",
"phone_num":"15875506179",
"img_type": 3,
"device_name": "入云龙-001",
"lon":114.055615,
"lat":22.662853,
"on_line": true
},
{
"account_name":"魏传阳",
"phone_num":"17645308479",
"img_type": 3,
"device_name": "入云龙-001",
"lon":129.595481,
"lat":44.568138
},
{
"account_name":"王毅",
"phone_num":"15347476460",
"img_type": 3,
"device_name": "入云龙-001",
"lon":114.327957,
"lat":23.161235
},
{
"account_name":"韦家利",
"phone_num":"15878164308",
"img_type": 3,
"device_name": "入云龙-001",
"lon":114.105840,
"lat":22.623136
},
{
"account_name":"王春琦",
"phone_num":"18565879847",
"img_type": 3,
"device_name": "入云龙-001",
"lon":103.965608,
"lat":30.687780
},
{
"account_name":"李林海",
"phone_num":"13023770874",
"img_type": 3,
"device_name": "入云龙-001",
"lon":117.011679,
"lat":35.420444,
"on_line": true
},
{
"account_name":"谢新愉",
"phone_num":"18869965803",
"img_type": 3,
"device_name": "入云龙-001",
"lon":120.556901,
"lat":27.974635
},
{
"account_name":"周博",
"phone_num":"18687888404",
"img_type": 3,
"device_name": "入云龙-001",
"lon":101.491854,
"lat":25.176037
},
{
"account_name":"王寿麟",
"phone_num":"18252580095",
"img_type": 3,
"device_name": "入云龙-001",
"lon":103.819423,
"lat":36.054982
},
{
"account_name":"苏锦辉",
"phone_num":"15705775574",
"img_type": 3,
"device_name": "入云龙-001",
"lon":120.681195,
"lat":27.985186
},
{
"account_name":"李积锦",
"phone_num":"15352667910",
"img_type": 3,
"device_name": "入云龙-001",
"lon":103.755344,
"lat":31.117696
},
{
"account_name":"张晓鹏",
"phone_num":"15993591614",
"img_type": 3,
"device_name": "入云龙-001",
"lon":113.193454,
"lat":33.765829
},
{
"account_name":"山西云界航空科技有限公司",
"phone_num":"13835669758",
"img_type": 3,
"device_name": "入云龙-001",
"lon":112.890949,
"lat":35.566783
},
{
"account_name":"蒋维东",
"phone_num":"18280287552",
"img_type": 3,
"device_name": "入云龙-001",
"lon":104.003821,
"lat":30.468020
},
{
"account_name":"钱入仓",
"phone_num":"18751258443",
"img_type": 3,
"device_name": "入云龙-001",
"lon":120.877505,
"lat":31.398428
},
{
"account_name":"杨鹏",
"phone_num":"15954146468",
"img_type": 3,
"device_name": "入云龙-001",
"lon":119.161615,
"lat":36.737093
},
{
"account_name":"吕友斌",
"phone_num":"17669604987",
"img_type": 3,
"device_name": "入云龙-001",
"lon":120.040556,
"lat":35.903406,
"on_line": true
},
{
"account_name":"李坚绍",
"phone_num":"13422751533",
"img_type": 3,
"device_name": "入云龙-001",
"lon":113.077485,
"lat":22.587691
},
{
"account_name":"曲舍",
"phone_num":"15942080550",
"img_type": 3,
"device_name": "入云龙-001",
"lon":123.497667,
"lat":41.769094
},
{
"account_name":"谢小奋",
"phone_num":"15270963445",
"img_type": 3,
"device_name": "入云龙-001",
"lon":121.543592,
"lat":29.807052
},
{
"account_name":"张强",
"phone_num":"18662239860",
"img_type": 2,
"device_name": "玉麒麟",
"lon":114.102386,
"lat":22.558377
},
{
"account_name":"邓苗均",
"phone_num":"18328206474",
"img_type": 2,
"device_name": "玉麒麟",
"lon":104.307933,
"lat":30.623095
},
{
"account_name":"廖林",
"phone_num":"13730834445",
"img_type": 2,
"device_name": "玉麒麟",
"lon":104.034290,
"lat":30.626351
},
{
"account_name":"金杨",
"phone_num":"15734850676",
"img_type": 2,
"device_name": "玉麒麟",
"lon":111.841656,
"lat":40.907160
},
{
"account_name":"申振鹏",
"phone_num":"13256355868",
"img_type": 2,
"device_name": "玉麒麟",
"lon":115.653026,
"lat":36.262054
},
{
"account_name":"易紫瑜",
"phone_num":"13822200479",
"img_type": 2,
"device_name": "玉麒麟",
"lon":113.160161,
"lat":23.022946
},
{
"account_name":"李曦",
"phone_num":"18671487896",
"img_type": 2,
"device_name": "玉麒麟",
"lon":115.006437,
"lat":30.196200
},
{
"account_name":"方斌",
"phone_num":"13307977258",
"img_type": 2,
"device_name": "玉麒麟",
"lon":104.461854,
"lat":30.862229
},
{
"account_name":"王旭阳",
"phone_num":"18264538819",
"img_type": 2,
"device_name": "玉麒麟",
"lon":116.043065,
"lat":36.460090
},
{
"account_name":"翁国桦",
"phone_num":"15622101037",
"img_type": 2,
"device_name": "玉麒麟",
"lon":114.112167,
"lat":22.579226
},
{
"account_name":"于博洋",
"phone_num":"19857012804",
"img_type": 2,
"device_name": "玉麒麟",
"lon":119.984805,
"lat":30.278943
},
{
"account_name":"段家耀",
"phone_num":"18560523802",
"img_type": 2,
"device_name": "玉麒麟",
"lon":117.946227,
"lat":34.851051
},
{
"account_name":"赵益宽",
"phone_num":"18848255341",
"img_type": 2,
"device_name": "玉麒麟",
"lon":104.461432,
"lat":30.864879
},
{
"account_name":"居勇",
"phone_num":"18182266655",
"img_type": 2,
"device_name": "玉麒麟",
"lon":109.462392,
"lat":31.018816
},
{
"account_name":"范平阳",
"phone_num":"13287127720",
"img_type": 2,
"device_name": "玉麒麟",
"lon":118.604748,
"lat":34.890646
},
{
"account_name":"雷凌云",
"phone_num":"18502335799",
"img_type": 2,
"device_name": "玉麒麟",
"lon":106.278778,
"lat":29.397589
},
{
"account_name":"张杰",
"phone_num":"13679262206",
"img_type": 2,
"device_name": "玉麒麟",
"lon":108.895831,
"lat":34.204484
},
{
"account_name":"邓亚建",
"phone_num":"18707944799",
"img_type": 2,
"device_name": "玉麒麟",
"lon":113.365854,
"lat":23.104432
},
{
"account_name":"莫凯德",
"phone_num":"18772902559",
"img_type": 2,
"device_name": "玉麒麟",
"lon":110.232799,
"lat":32.224754
},
{
"account_name":"李荣贵",
"phone_num":"18152263215",
"img_type": 2,
"device_name": "玉麒麟",
"lon":117.169332,
"lat":39.135881
},
{
"account_name":"刘炳生",
"phone_num":"19970793489",
"img_type": 2,
"device_name": "玉麒麟",
"lon":114.281407,
"lat":30.587382
},
{
"account_name":"冯广元",
"phone_num":"15638022297",
"img_type": 2,
"device_name": "玉麒麟",
"lon":121.344563,
"lat":31.158175
},
{
"account_name":"陈溢博",
"phone_num":"18802969961",
"img_type": 2,
"device_name": "玉麒麟",
"lon":109.097970,
"lat":34.076365
},
{
"account_name":"姚博兴",
"phone_num":"17602930321",
"img_type": 2,
"device_name": "玉麒麟",
"lon":108.792000,
"lat":34.286500
},
{
"account_name":"蔺岩",
"phone_num":"18709408180",
"img_type": 2,
"device_name": "玉麒麟",
"lon":105.266167,
"lat":34.913459
},
{
"account_name":"刘正丹",
"phone_num":"13172629567",
"img_type": 2,
"device_name": "玉麒麟",
"lon":112.814983,
"lat":23.290170
},
{
"account_name":"甘肃宇瀚科技有限责任公司",
"phone_num":"13299810899",
"img_type": 2,
"device_name": "玉麒麟",
"lon":105.698065,
"lat":33.727629
},
{
"account_name":"刘存",
"phone_num":"18571175131",
"img_type": 2,
"device_name": "玉麒麟",
"lon":113.018063,
"lat":22.619244
},
{
"account_name":"柴腾龙",
"phone_num":"13207140276",
"img_type": 2,
"device_name": "玉麒麟",
"lon":82.750955,
"lat":41.216569
},
{
"account_name":"张超宇",
"phone_num":"15087175578",
"img_type": 2,
"device_name": "玉麒麟",
"lon":102.708541,
"lat":24.995862
},
{
"account_name":"王科举",
"phone_num":"19525452182",
"img_type": 2,
"device_name": "玉麒麟",
"lon":119.324876,
"lat":26.153781
},
{
"account_name":"孙学普",
"phone_num":"17369458610",
"img_type": 2,
"device_name": "玉麒麟",
"lon":120.687009,
"lat":28.007480
},
{
"account_name":"吴鹏",
"phone_num":"18690305188",
"img_type": 2,
"device_name": "玉麒麟",
"lon":79.267709,
"lat":37.217080
},
{
"account_name":"冯泽竣",
"phone_num":"18468039931",
"img_type": 2,
"device_name": "玉麒麟",
"lon":116.078620,
"lat":39.885990
},
{
"account_name":"刘向明",
"phone_num":"18095134175",
"img_type": 2,
"device_name": "玉麒麟",
"lon":106.378575,
"lat":39.030067
},
{
"account_name":"蔡世纪",
"phone_num":"13295216509",
"img_type": 2,
"device_name": "玉麒麟",
"lon":89.700297,
"lat":42.705415
},
{
"account_name":"陈辉",
"phone_num":"15963775812",
"img_type": 2,
"device_name": "玉麒麟",
"lon":117.292885,
"lat":35.659644
},
{
"account_name":null,
"phone_num":"15112682437",
"img_type":3,
"device_name":"入云龙",
"lon":113.940302,
"lat":22.576896
},
{
"account_name":"张红斌",
"phone_num":"13085628167",
"img_type":3,
"device_name":"入云龙",
"lon":120.700425,
"lat":30.791740
},
{
"account_name":"李佳航",
"phone_num":"17625056591",
"img_type":3,
"device_name":"入云龙",
"lon":118.770960,
"lat":31.872888
},
{
"account_name":"蓝泽龙",
"phone_num":"15297857083",
"img_type":3,
"device_name":"入云龙",
"lon":114.891762,
"lat":25.886072
},
{
"account_name":"申明",
"phone_num":"13100574005",
"img_type":3,
"device_name":"入云龙",
"lon":108.310799,
"lat":22.793100
},
{
"account_name":"陈慧",
"phone_num":"18520988447",
"img_type":3,
"device_name":"入云龙",
"lon":114.046150,
"lat":22.998932
},
{
"account_name":"苏晨晨",
"phone_num":"17600874447",
"img_type":3,
"device_name":"入云龙",
"lon":120.296099,
"lat":36.285916
},
{
"account_name":"陈鹤",
"phone_num":"15656065939",
"img_type":3,
"device_name":"入云龙",
"lon":117.114681,
"lat":31.999005
},
{
"account_name":"骆进",
"phone_num":"13660345656",
"img_type":3,
"device_name":"入云龙",
"lon":113.389979,
"lat":23.007151
},
{
"account_name":"王岿章",
"phone_num":"18309365805",
"img_type":3,
"device_name":"入云龙",
"lon":106.079426,
"lat":37.620859
},
{
"account_name":"米珍斌",
"phone_num":"16609103472",
"img_type":3,
"device_name":"入云龙",
"lon":116.051878,
"lat":36.446941
},
{
"account_name":"丁晟琪",
"phone_num":"18251514207",
"img_type":3,
"device_name":"入云龙",
"lon":118.048398,
"lat":34.127873
},
{
"account_name":"郭俊成",
"phone_num":"18103948735",
"img_type":3,
"device_name":"入云龙",
"lon":116.146399,
"lat":39.932656
},
{
"account_name":"朱安坤",
"phone_num":"17862358710",
"img_type":3,
"device_name":"入云龙",
"lon":118.825309,
"lat":35.566494
},
{
"account_name":"孙磊",
"phone_num":"17616208050",
"img_type":3,
"device_name":"入云龙",
"lon":118.327344,
"lat":33.909248
},
{
"account_name":"台勇",
"phone_num":"15706462137",
"img_type":3,
"device_name":"入云龙",
"lon":117.108230,
"lat":38.999206
},
{
"account_name":"陈鉴康",
"phone_num":"18318277453",
"img_type":3,
"device_name":"入云龙",
"lon":113.361610,
"lat":23.018834
},
{
"account_name":"郭文",
"phone_num":"18700023365",
"img_type":3,
"device_name":"入云龙",
"lon":121.907726,
"lat":30.872513
},
{
"account_name":"王东辉",
"phone_num":"17710451534",
"img_type":3,
"device_name":"入云龙",
"lon":120.786821,
"lat":42.213687
},
{
"account_name":"县敏杰",
"phone_num":"13201229036",
"img_type":3,
"device_name":"入云龙",
"lon":87.521620,
"lat":43.938251
},
{
"account_name":"云城区小鹿文化传播工作室",
"phone_num":"18316899255",
"img_type":3,
"device_name":"入云龙",
"lon":112.023706,
"lat":22.932501
},
{
"account_name":"黄聪",
"phone_num":"15970031435",
"img_type":3,
"device_name":"入云龙",
"lon":113.182091,
"lat":23.148241
},
{
"account_name":"姚龙",
"phone_num":"13319042183",
"img_type":3,
"device_name":"入云龙",
"lon":113.211610,
"lat":22.929996
},
{
"account_name":"湘耒科技服务(肇庆)有限公司",
"phone_num":"17612029666",
"img_type":3,
"device_name":"入云龙",
"lon":112.560590,
"lat":23.149626
},
{
"account_name":"邹城鑫悦无人机科技有限公司",
"phone_num":"16678194017",
"img_type":3,
"device_name":"入云龙",
"lon":115.706037,
"lat":36.832738
},
{
"account_name":"茅炳云",
"phone_num":"13660656902",
"img_type":3,
"device_name":"入云龙",
"lon":113.017439,
"lat":23.127651
},
{
"account_name":"徐怀龙",
"phone_num":"18553533788",
"img_type":3,
"device_name":"入云龙",
"lon":121.358143,
"lat":37.475603
},
{
"account_name":"郑飞虎",
"phone_num":"15121918368",
"img_type":3,
"device_name":"入云龙",
"lon":121.308186,
"lat":30.834683
},
{
"account_name":"严焕飞",
"phone_num":"15119881698",
"img_type":3,
"device_name":"入云龙",
"lon":116.642200,
"lat":36.947500
},
{
"account_name":"宋洪乾",
"phone_num":"17753655351",
"img_type":3,
"device_name":"入云龙",
"lon":117.087384,
"lat":36.672539
},
{
"account_name":"王凤桐",
"phone_num":"18865292191",
"img_type":3,
"device_name":"入云龙",
"lon":115.896707,
"lat":36.168102
},
{
"account_name":"丁晓辉",
"phone_num":"13111196988",
"img_type":3,
"device_name":"入云龙",
"lon":120.074421,
"lat":31.923851
},
{
"account_name":"刘雄刚",
"phone_num":"18403471322",
"img_type":3,
"device_name":"入云龙",
"lon":112.419074,
"lat":39.300439
},
{
"account_name":"谢飞",
"phone_num":"17729164951",
"img_type":3,
"device_name":"入云龙",
"lon":110.445102,
"lat":18.972887
},
{
"account_name":"张新哲",
"phone_num":"17538339501",
"img_type":3,
"device_name":"入云龙",
"lon":113.792430,
"lat":35.124875
},
{
"account_name":"王嘉龙",
"phone_num":"13424883756",
"img_type":3,
"device_name":"入云龙",
"lon":113.106247,
"lat":23.740064
},
{
"account_name":"于文岭",
"phone_num":"13043615324",
"img_type":3,
"device_name":"入云龙",
"lon":113.556363,
"lat":34.820391
},
{
"account_name":"孙文强",
"phone_num":"13191717315",
"img_type":3,
"device_name":"入云龙",
"lon":122.130287,
"lat":30.105286
},
{
"account_name":"刘驰",
"phone_num":"15527563857",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.275834,
"lat":30.629692
},
{
"account_name":"陆斌",
"phone_num":"13713522047",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.916073,
"lat":22.768098
},
{
"account_name":"杨尚德",
"phone_num":"18189362271",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":100.742339,
"lat":38.457392
},
{
"account_name":"韦立权",
"phone_num":"19125200186",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.039570,
"lat":22.669264
},
{
"account_name":"邢文龙",
"phone_num":"18236456287",
"img_type": 4,
"lon":113.667336,
"lat":34.824586
},
{
"account_name":"韩浩浩",
"phone_num":"18655555534",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.409144,
"lat":23.137307
},
{
"account_name":"张伟",
"phone_num":"18894375278",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":121.614203,
"lat":31.143685
},
{
"account_name":"刘登涛",
"phone_num":"18309641305",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":106.104334,
"lat":38.501328
},
{
"account_name":"杨浩锋",
"phone_num":"13168002684",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":112.578029,
"lat":23.177469
},
{
"account_name":"梁巨泽",
"phone_num":"18076735028",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":118.342042,
"lat":24.565117
},
{
"account_name":"李隐",
"phone_num":"18689730307",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.172903,
"lat":23.024577
},
{
"account_name":"黄少泽",
"phone_num":"15364097041",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":112.996315,
"lat":28.061670
},
{
"account_name":"王旭栋",
"phone_num":"15291819946",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":108.069064,
"lat":24.687369
},
{
"account_name":"李伟杰",
"phone_num":"15816248342",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.038226,
"lat":23.724868
},
{
"account_name":"孙山峰",
"phone_num":"19981844353",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":110.269342,
"lat":25.355923
},
{
"account_name":"邱飞龙",
"phone_num":"15767035232",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.711942,
"lat":22.986066
},
{
"account_name":"魏帝升",
"phone_num":"13549974055",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.191467,
"lat":23.090207
},
{
"account_name":"李斯根",
"phone_num":"18307050487",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.369901,
"lat":23.052198
},
{
"account_name":"张满森",
"phone_num":"13790919225",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.063152,
"lat":22.658514
},
{
"account_name":"陈煜超",
"phone_num":"13798690605",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":112.974187,
"lat":23.095497
},
{
"account_name":"王啸",
"phone_num":"13410118744",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.206015,
"lat":22.654675
},
{
"account_name":"成鹏林",
"phone_num":"13080913919",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":108.828379,
"lat":34.213200
},
{
"account_name":"张龙",
"phone_num":"13997463479",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":115.512005,
"lat":38.224812
},
{
"account_name":"李承瑾",
"phone_num":"17630922014",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.982705,
"lat":31.817071
},
{
"account_name":"钟佳诚",
"phone_num":"18629903915",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":126.620033,
"lat":43.894072
},
{
"account_name":"李可心",
"phone_num":"16604328245",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":126.545886,
"lat":43.790114
},
{
"account_name":"刘金鑫",
"phone_num":"18043071518",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":126.088252,
"lat":44.708832
},
{
"account_name":"张洪洋",
"phone_num":"15844363215",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":119.958218,
"lat":30.273428
},
{
"account_name":"叶长春",
"phone_num":"18605953603",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":118.662998,
"lat":24.924115
},
{
"account_name":"李龙龙",
"phone_num":"15716782745",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.000310,
"lat":32.871370
},
{
"account_name":"胡翰林",
"phone_num":"18682818252",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.455788,
"lat":23.139774
},
{
"account_name":"陈陶",
"phone_num":"16673144291",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":111.951976,
"lat":28.118950
},
{
"account_name":"张锦豪",
"phone_num":"15635131779",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":112.592996,
"lat":37.811703
},
{
"account_name":"田丰",
"phone_num":"15666016331",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":117.085588,
"lat":36.642820
},
{
"account_name":"代博源",
"phone_num":"18211926599",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":114.316089,
"lat":22.693409
},
{
"account_name":"蔡伟",
"phone_num":"18502202635",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":117.168580,
"lat":39.237955
},
{
"account_name":"贾银虎",
"phone_num":"17762283719",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":121.813980,
"lat":31.134256
},
{
"account_name":"袁国芳",
"phone_num":"18278194536",
"img_type": 4,
"device_name": "插翅虎-M12",
"lon":113.784952,
"lat":34.742555
},
{
"account_name":"张凯",
"phone_num":"15507335102",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.138709,
"lat":27.787153
},
{
"account_name":"张宇",
"phone_num":"18310919045",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":117.212098,
"lat":40.199699
},
{
"account_name":"朱清正",
"phone_num":"15305302450",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":115.586008,
"lat":35.110877
},
{
"account_name":"程满",
"phone_num":"18503227713",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":112.591153,
"lat":33.028846
},
{
"account_name":"陈伟湛",
"phone_num":"13189479523",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.301475,
"lat":23.150020
},
{
"account_name":"马家乐",
"phone_num":"13001689805",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":104.063867,
"lat":30.579100
},
{
"account_name":"殷李军",
"phone_num":"19924997045",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":114.123468,
"lat":22.743454
},
{
"account_name":"陈勇强",
"phone_num":"13207018610",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":104.650417,
"lat":28.750039
},
{
"account_name":"燕东浩",
"phone_num":"18254644816",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":118.838606,
"lat":37.963623
},
{
"account_name":"王昊天",
"phone_num":"18847901777",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":111.840542,
"lat":40.898087
},
{
"account_name":"曾庆龙",
"phone_num":"18175820263",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.088832,
"lat":27.886028
},
{
"account_name":"邱明伟",
"phone_num":"18193401591",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":117.209950,
"lat":39.136510
},
{
"account_name":"荆星",
"phone_num":"18636269871",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.385532,
"lat":39.935832
},
{
"account_name":"苏芊",
"phone_num":"17835602770",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.384200,
"lat":39.936000
},
{
"account_name":"郭文超",
"phone_num":"18534607502",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":118.548100,
"lat":36.576800
},
{
"account_name":"郝彦斌",
"phone_num":"13133347397",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":112.554095,
"lat":37.799437
},
{
"account_name":"李博魏",
"phone_num":"15332428071",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":116.576107,
"lat":39.785623
},
{
"account_name":"王青坡",
"phone_num":"13123903926",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":121.623504,
"lat":31.129850
},
{
"account_name":"唐建雪",
"phone_num":"13518144287",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":104.122112,
"lat":30.676360
},
{
"account_name":"李浩民",
"phone_num":"18935801296",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":109.248813,
"lat":34.658799
},
{
"account_name":"向志强",
"phone_num":"18815011132",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":120.555416,
"lat":27.972763
},
{
"account_name":"赵康健",
"phone_num":"13474170951",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":108.081102,
"lat":34.261842
},
{
"account_name":"王同贺",
"phone_num":"15094770117",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":116.038750,
"lat":36.432568
},
{
"account_name":"钟小山",
"phone_num":"13268066855",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.250341,
"lat":23.210592
},
{
"account_name":"黄伟浩",
"phone_num":"15088065332",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.328098,
"lat":23.078684
},
{
"account_name":"邵喆桢",
"phone_num":"13129593297",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.906154,
"lat":22.581737
},
{
"account_name":"郑治成",
"phone_num":"18664920903",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":103.816498,
"lat":36.049221
},
{
"account_name":"康崟",
"phone_num":"17584509882",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":112.155204,
"lat":37.528480
},
{
"account_name":"刘绍晗",
"phone_num":"13303077076",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":116.016740,
"lat":38.579497
},
{
"account_name":"薛陟篯",
"phone_num":"13670282074",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":114.136132,
"lat":22.634559
},
{
"account_name":"王飞",
"phone_num":"17775715071",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":111.483922,
"lat":27.236331
},
{
"account_name":"文杰",
"phone_num":"13760072311",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":112.500487,
"lat":23.113375
},
{
"account_name":"王运宁",
"phone_num":"19903355080",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":119.319709,
"lat":39.815049
},
{
"account_name":"饶先明",
"phone_num":"18370795175",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.354101,
"lat":22.952698
},
{
"account_name":"白王天子",
"phone_num":"13087049050",
"img_type": 5,
"device_name": "小旋风Ⅰ",
"lon":113.411000,
"lat":33.188400
},
{
"account_name":"易涛",
"phone_num":"13574801846",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.113500,
"lat":28.222611
},
{
"account_name":"孟浩辉",
"phone_num":"13069563686",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":117.894484,
"lat":30.632075
},
{
"account_name":"李心豪",
"phone_num":"18737692465",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":114.143400,
"lat":32.059800
},
{
"account_name":"赵君鹏",
"phone_num":"15738465836",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":114.054230,
"lat":32.156657
},
{
"account_name":"郑锦翔",
"phone_num":"18610976116",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":115.047871,
"lat":31.971915
},
{
"account_name":"景东洋",
"phone_num":"18731472657",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":120.171313,
"lat":33.356354
},
{
"account_name":"杨德智",
"phone_num":"18978547724",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.179848,
"lat":23.099617
},
{
"account_name":"龚建波",
"phone_num":"18886213850",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":106.505640,
"lat":26.353472
},
{
"account_name":"张旭初",
"phone_num":"15064215647",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":119.961128,
"lat":36.794593
},
{
"account_name":"潘杨斌",
"phone_num":"15170363112",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":114.888088,
"lat":27.812503
},
{
"account_name":"赖佳",
"phone_num":"17630219980",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":104.026306,
"lat":30.732712
},
{
"account_name":"钟桥",
"phone_num":"18588725992",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":121.478301,
"lat":31.287176
},
{
"account_name":"阳益虎",
"phone_num":"15399884801",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":107.449401,
"lat":25.339659
},
{
"account_name":"沈岭峰",
"phone_num":"13757084792",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":120.081528,
"lat":30.871834
},
{
"account_name":"刘坪",
"phone_num":"17620005834",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.269167,
"lat":23.141936
},
{
"account_name":"胡锦泽",
"phone_num":"18451997707",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":115.369433,
"lat":35.450512
},
{
"account_name":"宋特赏",
"phone_num":"15072426878",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":114.315329,
"lat":30.457447
},
{
"account_name":"朱何龙",
"phone_num":"19986751884",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":112.114198,
"lat":32.082235
},
{
"account_name":"黄荣敏",
"phone_num":"15018575909",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.203155,
"lat":23.245507
},
{
"account_name":"张炳营",
"phone_num":"18719038865",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.940382,
"lat":22.577027
},
{
"account_name":"陈小强",
"phone_num":"15014530058",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.169307,
"lat":23.029437
},
{
"account_name":"何沅林",
"phone_num":"18664228263",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":112.801221,
"lat":23.323307
},
{
"account_name":"陈政茂",
"phone_num":"13326587231",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":112.014013,
"lat":21.873780
},
{
"account_name":"唐歌",
"phone_num":"19925382238",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.940458,
"lat":22.576768
},
{
"account_name":"李旭炜",
"phone_num":"17666222094",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.562339,
"lat":23.441965
},
{
"account_name":"江龙",
"phone_num":"18984972537",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":107.584107,
"lat":28.834311
},
{
"account_name":"何沛",
"phone_num":"18748843673",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":104.912011,
"lat":25.113222
},
{
"account_name":"李群",
"phone_num":"15063268286",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":117.362046,
"lat":34.823455
},
{
"account_name":"深圳市云自在航空科技有限公司",
"phone_num":"17614890968",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":114.409491,
"lat":22.631954
},
{
"account_name":"方连成",
"phone_num":"18555881240",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":115.963251,
"lat":32.377842
},
{
"account_name":"徐铭键",
"phone_num":"18645225093",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":117.209364,
"lat":31.768731
},
{
"account_name":"龚龙君",
"phone_num":"18681737095",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":103.813697,
"lat":29.405379
},
{
"account_name":"唐宏",
"phone_num":"13686893900",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.902411,
"lat":22.552343
},
{
"account_name":"梁金洲",
"phone_num":"13028766367",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":105.156573,
"lat":35.404073
},
{
"account_name":"刘月",
"phone_num":"15264331752",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":117.981487,
"lat":36.755545
},
{
"account_name":"杜鹏",
"phone_num":"17635052409",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":112.404756,
"lat":39.309384
},
{
"account_name":"赵天宸",
"phone_num":"13151095868",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":118.759675,
"lat":32.109713
},
{
"account_name":"黄议航",
"phone_num":"15521000872",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":110.357310,
"lat":21.270355
},
{
"account_name":"何灿辉",
"phone_num":"18218682160",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.162080,
"lat":23.021620
},
{
"account_name":"姚泳宇",
"phone_num":"13433624679",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.154500,
"lat":23.025500
},
{
"account_name":"华若健",
"phone_num":"18813540337",
"img_type": 6,
"device_name":"插翅虎-M9",
"lon":113.287701,
"lat":23.288319
}
]
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论