Compare commits
35 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4af1c07029 | ||
|
8918116dbd | ||
|
1c16fc1d4a | ||
|
95542bf4c9 | ||
|
3598fafe66 | ||
|
de1dd3a808 | ||
|
9c3b53b701 | ||
|
f2cb431c90 | ||
|
9facc1b682 | ||
|
93835778ad | ||
|
8020eabaa9 | ||
|
5693bbe1f5 | ||
|
0055f479cb | ||
|
1c41b701dd | ||
|
9476f7f616 | ||
|
cbe405f6ea | ||
|
7414bc492e | ||
|
6f14087a16 | ||
|
328d4b916d | ||
|
b42a8176ca | ||
|
2a9beec31d | ||
|
910fe6261b | ||
|
0c820b96d8 | ||
|
c3c49a05c2 | ||
|
68a616d7c7 | ||
|
a0447de061 | ||
|
46db06a22b | ||
|
de5ae4a05e | ||
|
c0d430f4e5 | ||
|
d910888181 | ||
|
db2dfee6ae | ||
|
d311d56bbf | ||
|
3bc5ef38d3 | ||
|
bac3b3a0dc | ||
|
07fded4da9 |
@ -1,11 +1,11 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
|
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
|
||||||
</p>
|
</p>
|
||||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.1</h1>
|
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.2</h1>
|
||||||
<h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4>
|
<h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
|
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
|
||||||
<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.1-brightgreen.svg"></a>
|
<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.2-brightgreen.svg"></a>
|
||||||
<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
|
<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
33
demo/.gitignore
vendored
Normal file
33
demo/.gitignore
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
HELP.md
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
BIN
demo/.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
BIN
demo/.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
Binary file not shown.
2
demo/.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
2
demo/.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip
|
||||||
|
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
|
316
demo/mvnw
vendored
Normal file
316
demo/mvnw
vendored
Normal file
@ -0,0 +1,316 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you 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.
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Maven Start Up Batch script
|
||||||
|
#
|
||||||
|
# Required ENV vars:
|
||||||
|
# ------------------
|
||||||
|
# JAVA_HOME - location of a JDK home dir
|
||||||
|
#
|
||||||
|
# Optional ENV vars
|
||||||
|
# -----------------
|
||||||
|
# M2_HOME - location of maven2's installed home dir
|
||||||
|
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||||
|
# e.g. to debug Maven itself, use
|
||||||
|
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||||
|
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||||
|
|
||||||
|
if [ -f /usr/local/etc/mavenrc ] ; then
|
||||||
|
. /usr/local/etc/mavenrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /etc/mavenrc ] ; then
|
||||||
|
. /etc/mavenrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$HOME/.mavenrc" ] ; then
|
||||||
|
. "$HOME/.mavenrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# OS specific support. $var _must_ be set to either true or false.
|
||||||
|
cygwin=false;
|
||||||
|
darwin=false;
|
||||||
|
mingw=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN*) cygwin=true ;;
|
||||||
|
MINGW*) mingw=true;;
|
||||||
|
Darwin*) darwin=true
|
||||||
|
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||||
|
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||||
|
if [ -z "$JAVA_HOME" ]; then
|
||||||
|
if [ -x "/usr/libexec/java_home" ]; then
|
||||||
|
export JAVA_HOME="`/usr/libexec/java_home`"
|
||||||
|
else
|
||||||
|
export JAVA_HOME="/Library/Java/Home"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$JAVA_HOME" ] ; then
|
||||||
|
if [ -r /etc/gentoo-release ] ; then
|
||||||
|
JAVA_HOME=`java-config --jre-home`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$M2_HOME" ] ; then
|
||||||
|
## resolve links - $0 may be a link to maven's home
|
||||||
|
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
|
||||||
|
|
||||||
|
saveddir=`pwd`
|
||||||
|
|
||||||
|
M2_HOME=`dirname "$PRG"`/..
|
||||||
|
|
||||||
|
# make it fully qualified
|
||||||
|
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||||
|
|
||||||
|
cd "$saveddir"
|
||||||
|
# echo Using m2 at $M2_HOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $cygwin ; then
|
||||||
|
[ -n "$M2_HOME" ] &&
|
||||||
|
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||||
|
[ -n "$CLASSPATH" ] &&
|
||||||
|
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $mingw ; then
|
||||||
|
[ -n "$M2_HOME" ] &&
|
||||||
|
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVA_HOME" ]; then
|
||||||
|
javaExecutable="`which javac`"
|
||||||
|
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||||
|
# readlink(1) is not available as standard on Solaris 10.
|
||||||
|
readLink=`which readlink`
|
||||||
|
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||||
|
if $darwin ; then
|
||||||
|
javaHome="`dirname \"$javaExecutable\"`"
|
||||||
|
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||||
|
else
|
||||||
|
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||||
|
fi
|
||||||
|
javaHome="`dirname \"$javaExecutable\"`"
|
||||||
|
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||||
|
JAVA_HOME="$javaHome"
|
||||||
|
export JAVA_HOME
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVACMD" ] ; then
|
||||||
|
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
|
||||||
|
else
|
||||||
|
JAVACMD="`\\unset -f command; \\command -v java`"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||||
|
echo " We cannot execute $JAVACMD" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVA_HOME" ] ; then
|
||||||
|
echo "Warning: JAVA_HOME environment variable is not set."
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||||
|
|
||||||
|
# traverses directory structure from process work directory to filesystem root
|
||||||
|
# first directory with .mvn subdirectory is considered project base directory
|
||||||
|
find_maven_basedir() {
|
||||||
|
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "Path not specified to find_maven_basedir"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
basedir="$1"
|
||||||
|
wdir="$1"
|
||||||
|
while [ "$wdir" != '/' ] ; do
|
||||||
|
if [ -d "$wdir"/.mvn ] ; then
|
||||||
|
basedir=$wdir
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||||
|
if [ -d "${wdir}" ]; then
|
||||||
|
wdir=`cd "$wdir/.."; pwd`
|
||||||
|
fi
|
||||||
|
# end of workaround
|
||||||
|
done
|
||||||
|
echo "${basedir}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# concatenates all lines of a file
|
||||||
|
concat_lines() {
|
||||||
|
if [ -f "$1" ]; then
|
||||||
|
echo "$(tr -s '\n' ' ' < "$1")"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
BASE_DIR=`find_maven_basedir "$(pwd)"`
|
||||||
|
if [ -z "$BASE_DIR" ]; then
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||||
|
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||||
|
##########################################################################################
|
||||||
|
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Found .mvn/wrapper/maven-wrapper.jar"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
||||||
|
fi
|
||||||
|
if [ -n "$MVNW_REPOURL" ]; then
|
||||||
|
jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||||
|
else
|
||||||
|
jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||||
|
fi
|
||||||
|
while IFS="=" read key value; do
|
||||||
|
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
||||||
|
esac
|
||||||
|
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Downloading from: $jarUrl"
|
||||||
|
fi
|
||||||
|
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
|
||||||
|
if $cygwin; then
|
||||||
|
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v wget > /dev/null; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Found wget ... using wget"
|
||||||
|
fi
|
||||||
|
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||||
|
wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
|
||||||
|
else
|
||||||
|
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
|
||||||
|
fi
|
||||||
|
elif command -v curl > /dev/null; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Found curl ... using curl"
|
||||||
|
fi
|
||||||
|
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||||
|
curl -o "$wrapperJarPath" "$jarUrl" -f
|
||||||
|
else
|
||||||
|
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Falling back to using Java to download"
|
||||||
|
fi
|
||||||
|
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||||
|
# For Cygwin, switch paths to Windows format before running javac
|
||||||
|
if $cygwin; then
|
||||||
|
javaClass=`cygpath --path --windows "$javaClass"`
|
||||||
|
fi
|
||||||
|
if [ -e "$javaClass" ]; then
|
||||||
|
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo " - Compiling MavenWrapperDownloader.java ..."
|
||||||
|
fi
|
||||||
|
# Compiling the Java class
|
||||||
|
("$JAVA_HOME/bin/javac" "$javaClass")
|
||||||
|
fi
|
||||||
|
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||||
|
# Running the downloader
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo " - Running MavenWrapperDownloader.java ..."
|
||||||
|
fi
|
||||||
|
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
##########################################################################################
|
||||||
|
# End of extension
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo $MAVEN_PROJECTBASEDIR
|
||||||
|
fi
|
||||||
|
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||||
|
|
||||||
|
# For Cygwin, switch paths to Windows format before running java
|
||||||
|
if $cygwin; then
|
||||||
|
[ -n "$M2_HOME" ] &&
|
||||||
|
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||||
|
[ -n "$CLASSPATH" ] &&
|
||||||
|
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||||
|
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||||
|
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Provide a "standardized" way to retrieve the CLI args that will
|
||||||
|
# work with both Windows and non-Windows executions.
|
||||||
|
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
|
||||||
|
export MAVEN_CMD_LINE_ARGS
|
||||||
|
|
||||||
|
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||||
|
|
||||||
|
exec "$JAVACMD" \
|
||||||
|
$MAVEN_OPTS \
|
||||||
|
$MAVEN_DEBUG_OPTS \
|
||||||
|
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||||
|
"-Dmaven.home=${M2_HOME}" \
|
||||||
|
"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||||
|
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
188
demo/mvnw.cmd
vendored
Normal file
188
demo/mvnw.cmd
vendored
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
@REM or more contributor license agreements. See the NOTICE file
|
||||||
|
@REM distributed with this work for additional information
|
||||||
|
@REM regarding copyright ownership. The ASF licenses this file
|
||||||
|
@REM to you under the Apache License, Version 2.0 (the
|
||||||
|
@REM "License"); you may not use this file except in compliance
|
||||||
|
@REM with the License. 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,
|
||||||
|
@REM software distributed under the License is distributed on an
|
||||||
|
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
@REM KIND, either express or implied. See the License for the
|
||||||
|
@REM specific language governing permissions and limitations
|
||||||
|
@REM under the License.
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
@REM Maven Start Up Batch script
|
||||||
|
@REM
|
||||||
|
@REM Required ENV vars:
|
||||||
|
@REM JAVA_HOME - location of a JDK home dir
|
||||||
|
@REM
|
||||||
|
@REM Optional ENV vars
|
||||||
|
@REM M2_HOME - location of maven2's installed home dir
|
||||||
|
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
|
||||||
|
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
|
||||||
|
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||||
|
@REM e.g. to debug Maven itself, use
|
||||||
|
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||||
|
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
|
||||||
|
@echo off
|
||||||
|
@REM set title of command window
|
||||||
|
title %0
|
||||||
|
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
|
||||||
|
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
|
||||||
|
|
||||||
|
@REM set %HOME% to equivalent of $HOME
|
||||||
|
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
|
||||||
|
|
||||||
|
@REM Execute a user defined script before this one
|
||||||
|
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
|
||||||
|
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
|
||||||
|
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
|
||||||
|
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
|
||||||
|
:skipRcPre
|
||||||
|
|
||||||
|
@setlocal
|
||||||
|
|
||||||
|
set ERROR_CODE=0
|
||||||
|
|
||||||
|
@REM To isolate internal variables from possible post scripts, we use another setlocal
|
||||||
|
@setlocal
|
||||||
|
|
||||||
|
@REM ==== START VALIDATION ====
|
||||||
|
if not "%JAVA_HOME%" == "" goto OkJHome
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Error: JAVA_HOME not found in your environment. >&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||||
|
echo location of your Java installation. >&2
|
||||||
|
echo.
|
||||||
|
goto error
|
||||||
|
|
||||||
|
:OkJHome
|
||||||
|
if exist "%JAVA_HOME%\bin\java.exe" goto init
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Error: JAVA_HOME is set to an invalid directory. >&2
|
||||||
|
echo JAVA_HOME = "%JAVA_HOME%" >&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||||
|
echo location of your Java installation. >&2
|
||||||
|
echo.
|
||||||
|
goto error
|
||||||
|
|
||||||
|
@REM ==== END VALIDATION ====
|
||||||
|
|
||||||
|
:init
|
||||||
|
|
||||||
|
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
|
||||||
|
@REM Fallback to current working directory if not found.
|
||||||
|
|
||||||
|
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
|
||||||
|
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
|
||||||
|
|
||||||
|
set EXEC_DIR=%CD%
|
||||||
|
set WDIR=%EXEC_DIR%
|
||||||
|
:findBaseDir
|
||||||
|
IF EXIST "%WDIR%"\.mvn goto baseDirFound
|
||||||
|
cd ..
|
||||||
|
IF "%WDIR%"=="%CD%" goto baseDirNotFound
|
||||||
|
set WDIR=%CD%
|
||||||
|
goto findBaseDir
|
||||||
|
|
||||||
|
:baseDirFound
|
||||||
|
set MAVEN_PROJECTBASEDIR=%WDIR%
|
||||||
|
cd "%EXEC_DIR%"
|
||||||
|
goto endDetectBaseDir
|
||||||
|
|
||||||
|
:baseDirNotFound
|
||||||
|
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
|
||||||
|
cd "%EXEC_DIR%"
|
||||||
|
|
||||||
|
:endDetectBaseDir
|
||||||
|
|
||||||
|
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
|
||||||
|
|
||||||
|
@setlocal EnableExtensions EnableDelayedExpansion
|
||||||
|
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
|
||||||
|
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
|
||||||
|
|
||||||
|
:endReadAdditionalConfig
|
||||||
|
|
||||||
|
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
||||||
|
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
||||||
|
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||||
|
|
||||||
|
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||||
|
|
||||||
|
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||||
|
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
|
||||||
|
)
|
||||||
|
|
||||||
|
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||||
|
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||||
|
if exist %WRAPPER_JAR% (
|
||||||
|
if "%MVNW_VERBOSE%" == "true" (
|
||||||
|
echo Found %WRAPPER_JAR%
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
if not "%MVNW_REPOURL%" == "" (
|
||||||
|
SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||||
|
)
|
||||||
|
if "%MVNW_VERBOSE%" == "true" (
|
||||||
|
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
||||||
|
echo Downloading from: %DOWNLOAD_URL%
|
||||||
|
)
|
||||||
|
|
||||||
|
powershell -Command "&{"^
|
||||||
|
"$webclient = new-object System.Net.WebClient;"^
|
||||||
|
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
|
||||||
|
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
|
||||||
|
"}"^
|
||||||
|
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
|
||||||
|
"}"
|
||||||
|
if "%MVNW_VERBOSE%" == "true" (
|
||||||
|
echo Finished downloading %WRAPPER_JAR%
|
||||||
|
)
|
||||||
|
)
|
||||||
|
@REM End of extension
|
||||||
|
|
||||||
|
@REM Provide a "standardized" way to retrieve the CLI args that will
|
||||||
|
@REM work with both Windows and non-Windows executions.
|
||||||
|
set MAVEN_CMD_LINE_ARGS=%*
|
||||||
|
|
||||||
|
%MAVEN_JAVA_EXE% ^
|
||||||
|
%JVM_CONFIG_MAVEN_PROPS% ^
|
||||||
|
%MAVEN_OPTS% ^
|
||||||
|
%MAVEN_DEBUG_OPTS% ^
|
||||||
|
-classpath %WRAPPER_JAR% ^
|
||||||
|
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
|
||||||
|
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
|
||||||
|
if ERRORLEVEL 1 goto error
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:error
|
||||||
|
set ERROR_CODE=1
|
||||||
|
|
||||||
|
:end
|
||||||
|
@endlocal & set ERROR_CODE=%ERROR_CODE%
|
||||||
|
|
||||||
|
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
|
||||||
|
@REM check for post script, once with legacy .bat ending and once with .cmd ending
|
||||||
|
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
|
||||||
|
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
|
||||||
|
:skipRcPost
|
||||||
|
|
||||||
|
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
|
||||||
|
if "%MAVEN_BATCH_PAUSE%"=="on" pause
|
||||||
|
|
||||||
|
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
|
||||||
|
|
||||||
|
cmd /C exit /B %ERROR_CODE%
|
41
demo/pom.xml
Normal file
41
demo/pom.xml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>2.7.0</version>
|
||||||
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
<groupId>com.example</groupId>
|
||||||
|
<artifactId>demo</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>demo</name>
|
||||||
|
<description>Demo project for Spring Boot</description>
|
||||||
|
<properties>
|
||||||
|
<java.version>11</java.version>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
13
demo/src/main/java/com/example/demo/DemoApplication.java
Normal file
13
demo/src/main/java/com/example/demo/DemoApplication.java
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.demo;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class DemoApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(DemoApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
1
demo/src/main/resources/application.properties
Normal file
1
demo/src/main/resources/application.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.demo;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
class DemoApplicationTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void contextLoads() {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
25
pom.xml
25
pom.xml
@ -16,17 +16,16 @@
|
|||||||
<ruoyi.version>3.8.2</ruoyi.version>
|
<ruoyi.version>3.8.2</ruoyi.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<java.version>1.8</java.version>
|
<java.version>11</java.version>
|
||||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||||
<druid.version>1.2.8</druid.version>
|
<druid.version>1.2.11</druid.version>
|
||||||
<bitwalker.version>1.21</bitwalker.version>
|
<bitwalker.version>1.21</bitwalker.version>
|
||||||
<swagger.version>3.0.0</swagger.version>
|
<swagger.version>3.0.0</swagger.version>
|
||||||
<kaptcha.version>2.3.2</kaptcha.version>
|
<kaptcha.version>2.3.2</kaptcha.version>
|
||||||
<mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version>
|
<mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version>
|
||||||
<pagehelper.boot.version>1.4.1</pagehelper.boot.version>
|
<pagehelper.boot.version>1.4.2</pagehelper.boot.version>
|
||||||
<fastjson.version>1.2.80</fastjson.version>
|
<fastjson.version>1.2.83</fastjson.version>
|
||||||
<oshi.version>6.1.2</oshi.version>
|
<oshi.version>6.1.6</oshi.version>
|
||||||
<jna.version>5.10.0</jna.version>
|
|
||||||
<commons.io.version>2.11.0</commons.io.version>
|
<commons.io.version>2.11.0</commons.io.version>
|
||||||
<commons.fileupload.version>1.4</commons.fileupload.version>
|
<commons.fileupload.version>1.4</commons.fileupload.version>
|
||||||
<commons.collections.version>3.2.2</commons.collections.version>
|
<commons.collections.version>3.2.2</commons.collections.version>
|
||||||
@ -43,7 +42,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-dependencies</artifactId>
|
<artifactId>spring-boot-dependencies</artifactId>
|
||||||
<version>2.5.11</version>
|
<version>2.5.14</version>
|
||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
@ -83,18 +82,6 @@
|
|||||||
<version>${oshi.version}</version>
|
<version>${oshi.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.java.dev.jna</groupId>
|
|
||||||
<artifactId>jna</artifactId>
|
|
||||||
<version>${jna.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.java.dev.jna</groupId>
|
|
||||||
<artifactId>jna-platform</artifactId>
|
|
||||||
<version>${jna.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Swagger3依赖 -->
|
<!-- Swagger3依赖 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.springfox</groupId>
|
<groupId>io.springfox</groupId>
|
||||||
|
@ -17,7 +17,27 @@
|
|||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!-- spring-boot-devtools -->
|
<dependency>
|
||||||
|
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
|
||||||
|
<artifactId>poi</artifactId>
|
||||||
|
|
||||||
|
<version>4.0.1</version>
|
||||||
|
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
|
||||||
|
<artifactId>poi-ooxml</artifactId>
|
||||||
|
|
||||||
|
<version>4.0.1</version>
|
||||||
|
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-devtools</artifactId>
|
<artifactId>spring-boot-devtools</artifactId>
|
||||||
@ -34,7 +54,19 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.swagger</groupId>
|
<groupId>io.swagger</groupId>
|
||||||
<artifactId>swagger-models</artifactId>
|
<artifactId>swagger-models</artifactId>
|
||||||
<version>1.6.2</version>
|
<version>1.6.6</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- knife4j -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
|
<artifactId>knife4j-spring-boot-starter</artifactId>
|
||||||
|
<version>3.0.3</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- postgresql驱动包-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<version>42.2.20</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Mysql驱动包 -->
|
<!-- Mysql驱动包 -->
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi;
|
package com.ruoyi;
|
||||||
|
|
||||||
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||||
@ -10,21 +11,25 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
|||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
||||||
|
@MapperScan("com.ruoyi.system.mapper_yada")
|
||||||
public class RuoYiApplication
|
public class RuoYiApplication
|
||||||
{
|
{
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
// System.setProperty("spring.devtools.restart.enabled", "false");
|
// System.setProperty("spring.devtools.restart.enabled", "false");
|
||||||
SpringApplication.run(RuoYiApplication.class, args);
|
SpringApplication.run(RuoYiApplication.class, args);
|
||||||
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +
|
System.out.println();
|
||||||
" .-------. ____ __ \n" +
|
System.out.println(" --->>>启动成功!<<<---");
|
||||||
" | _ _ \\ \\ \\ / / \n" +
|
// System.out.println("(♥◠‿◠)ノ゙ ლ(´ڡ`ლ)゙ \n" +
|
||||||
" | ( ' ) | \\ _. / ' \n" +
|
// " .-------. ____ __ \n" +
|
||||||
" |(_ o _) / _( )_ .' \n" +
|
// " | _ _ \\ \\ \\ / / \n" +
|
||||||
" | (_,_).' __ ___(_ o _)' \n" +
|
// " | ( ' ) | \\ _. / ' \n" +
|
||||||
" | |\\ \\ | || |(_,_)' \n" +
|
// " |(_ o _) / _( )_ .' \n" +
|
||||||
" | | \\ `' /| `-' / \n" +
|
// " | (_,_).' __ ___(_ o _)' \n" +
|
||||||
" | | \\ / \\ / \n" +
|
// " | |\\ \\ | || |(_,_)' \n" +
|
||||||
" ''-' `'-' `-..-' ");
|
// " | | \\ `' /| `-' / \n" +
|
||||||
|
// " | | \\ / \\ / \n" +
|
||||||
|
// " ''-' `'-' `-..-' ");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
package com.ruoyi.web.controller.common;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import com.ruoyi.common.config.RuoYiConfig;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.util.FastByteArrayOutputStream;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import com.google.code.kaptcha.Producer;
|
|
||||||
import com.ruoyi.common.constant.Constants;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.redis.RedisCache;
|
|
||||||
import com.ruoyi.common.utils.sign.Base64;
|
|
||||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
|
||||||
import com.ruoyi.system.service.ISysConfigService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码操作处理
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
public class CaptchaController
|
|
||||||
{
|
|
||||||
@Resource(name = "captchaProducer")
|
|
||||||
private Producer captchaProducer;
|
|
||||||
|
|
||||||
@Resource(name = "captchaProducerMath")
|
|
||||||
private Producer captchaProducerMath;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RedisCache redisCache;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ISysConfigService configService;
|
|
||||||
/**
|
|
||||||
* 生成验证码
|
|
||||||
*/
|
|
||||||
@GetMapping("/captchaImage")
|
|
||||||
public AjaxResult getCode(HttpServletResponse response) throws IOException
|
|
||||||
{
|
|
||||||
AjaxResult ajax = AjaxResult.success();
|
|
||||||
boolean captchaOnOff = configService.selectCaptchaOnOff();
|
|
||||||
ajax.put("captchaOnOff", captchaOnOff);
|
|
||||||
if (!captchaOnOff)
|
|
||||||
{
|
|
||||||
return ajax;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存验证码信息
|
|
||||||
String uuid = IdUtils.simpleUUID();
|
|
||||||
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
|
|
||||||
|
|
||||||
String capStr = null, code = null;
|
|
||||||
BufferedImage image = null;
|
|
||||||
|
|
||||||
// 生成验证码
|
|
||||||
String captchaType = RuoYiConfig.getCaptchaType();
|
|
||||||
if ("math".equals(captchaType))
|
|
||||||
{
|
|
||||||
String capText = captchaProducerMath.createText();
|
|
||||||
capStr = capText.substring(0, capText.lastIndexOf("@"));
|
|
||||||
code = capText.substring(capText.lastIndexOf("@") + 1);
|
|
||||||
image = captchaProducerMath.createImage(capStr);
|
|
||||||
}
|
|
||||||
else if ("char".equals(captchaType))
|
|
||||||
{
|
|
||||||
capStr = code = captchaProducer.createText();
|
|
||||||
image = captchaProducer.createImage(capStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
|
||||||
// 转换流信息写出
|
|
||||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ImageIO.write(image, "jpg", os);
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
return AjaxResult.error(e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
ajax.put("uuid", uuid);
|
|
||||||
ajax.put("img", Base64.encode(os.toByteArray()));
|
|
||||||
return ajax;
|
|
||||||
}
|
|
||||||
}
|
|
@ -12,9 +12,11 @@ import com.ruoyi.common.core.domain.AjaxResult;
|
|||||||
import com.ruoyi.common.core.domain.entity.SysMenu;
|
import com.ruoyi.common.core.domain.entity.SysMenu;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
import com.ruoyi.common.core.domain.model.LoginBody;
|
import com.ruoyi.common.core.domain.model.LoginBody;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
import com.ruoyi.framework.web.service.SysLoginService;
|
import com.ruoyi.framework.web.service.SysLoginService;
|
||||||
import com.ruoyi.framework.web.service.SysPermissionService;
|
import com.ruoyi.framework.web.service.SysPermissionService;
|
||||||
|
import com.ruoyi.framework.web.service.TokenService;
|
||||||
import com.ruoyi.system.service.ISysMenuService;
|
import com.ruoyi.system.service.ISysMenuService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,6 +36,9 @@ public class SysLoginController
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SysPermissionService permissionService;
|
private SysPermissionService permissionService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TokenService tokenService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录方法
|
* 登录方法
|
||||||
*
|
*
|
||||||
@ -45,8 +50,7 @@ public class SysLoginController
|
|||||||
{
|
{
|
||||||
AjaxResult ajax = AjaxResult.success();
|
AjaxResult ajax = AjaxResult.success();
|
||||||
// 生成令牌
|
// 生成令牌
|
||||||
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode());
|
||||||
loginBody.getUuid());
|
|
||||||
ajax.put(Constants.TOKEN, token);
|
ajax.put(Constants.TOKEN, token);
|
||||||
return ajax;
|
return ajax;
|
||||||
}
|
}
|
||||||
@ -59,7 +63,8 @@ public class SysLoginController
|
|||||||
@GetMapping("getInfo")
|
@GetMapping("getInfo")
|
||||||
public AjaxResult getInfo()
|
public AjaxResult getInfo()
|
||||||
{
|
{
|
||||||
SysUser user = SecurityUtils.getLoginUser().getUser();
|
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
||||||
|
SysUser user = loginUser.getUser();
|
||||||
// 角色集合
|
// 角色集合
|
||||||
Set<String> roles = permissionService.getRolePermission(user);
|
Set<String> roles = permissionService.getRolePermission(user);
|
||||||
// 权限集合
|
// 权限集合
|
||||||
@ -79,8 +84,10 @@ public class SysLoginController
|
|||||||
@GetMapping("getRouters")
|
@GetMapping("getRouters")
|
||||||
public AjaxResult getRouters()
|
public AjaxResult getRouters()
|
||||||
{
|
{
|
||||||
Long userId = SecurityUtils.getUserId();
|
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
||||||
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
|
// 用户信息
|
||||||
|
SysUser user = loginUser.getUser();
|
||||||
|
List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getUserId());
|
||||||
return AjaxResult.success(menuService.buildMenus(menus));
|
return AjaxResult.success(menuService.buildMenus(menus));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,10 +28,10 @@ public class SysRegisterController extends BaseController
|
|||||||
@PostMapping("/register")
|
@PostMapping("/register")
|
||||||
public AjaxResult register(@RequestBody RegisterBody user)
|
public AjaxResult register(@RequestBody RegisterBody user)
|
||||||
{
|
{
|
||||||
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
|
// if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
|
||||||
{
|
// {
|
||||||
return error("当前系统没有开启注册功能!");
|
// return error("当前系统没有开启注册功能!");
|
||||||
}
|
// }
|
||||||
String msg = registerService.register(user);
|
String msg = registerService.register(user);
|
||||||
return StringUtils.isEmpty(msg) ? success() : error(msg);
|
return StringUtils.isEmpty(msg) ? success() : error(msg);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,172 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.config.RuoYiConfig;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||||
|
import com.ruoyi.common.utils.file.FileUtils;
|
||||||
|
import com.ruoyi.system.domain_yada.*;
|
||||||
|
import com.ruoyi.system.service_yada.IAorestCoverageService;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.service_yada.ThematicMapService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.xml.crypto.Data;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.security.Guard;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 森林覆盖率
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/Aorest", produces = "application/json;charset=UTF-8")
|
||||||
|
@Api(tags = "森林覆盖率")
|
||||||
|
public class AorestCoverageController {
|
||||||
|
@Resource
|
||||||
|
private IAorestCoverageService service;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ThematicMapService thematicMapService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* 需要查询的字段参数
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectAorestCoverage",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
public AjaxResult selectAorestCoverage()
|
||||||
|
{
|
||||||
|
List<AorestCoverageVO> eastVOSList= service.selectAorestCoverage();
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelAorestCoverage",method = {RequestMethod.DELETE})
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
public AjaxResult DelAorestCoverage(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = service.DelAorestCoverage(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/IntoAorestCoverage",method = {RequestMethod.POST})
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
public AjaxResult IntoAorestCoverage(@RequestBody AorestCoverageVO eastVOS)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = service.IntoAorestCoverage(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
catch (Exception E){
|
||||||
|
E.getMessage();
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传文件
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/IntoUpLoad",method = {RequestMethod.POST})
|
||||||
|
@ApiOperation(value = "上传文件",httpMethod = "POST")
|
||||||
|
public AjaxResult IntoUpload(@RequestBody MultipartFile file)
|
||||||
|
{
|
||||||
|
UploadFile upload=new UploadFile();
|
||||||
|
|
||||||
|
ThematicMapDomain domain=new ThematicMapDomain();
|
||||||
|
|
||||||
|
UploadFile value= null;
|
||||||
|
try {
|
||||||
|
value = uploadFile(file,upload);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
int NUM = service.IntoUpload(value);
|
||||||
|
domain.setPictureCode(value.getFileId());
|
||||||
|
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件查询
|
||||||
|
* @param response 头
|
||||||
|
* @param request 客户端请求
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectUpload",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "文件查询",httpMethod = "GET")
|
||||||
|
public AjaxResult selectUpload(HttpServletResponse response, HttpServletRequest request,@RequestBody UploadFile upload)
|
||||||
|
{
|
||||||
|
List<UploadFile> eastVOSList= service.selectUpload(upload.getFileId(),upload.getFileName());
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public UploadFile uploadFile(MultipartFile file,UploadFile upload) throws Exception
|
||||||
|
{
|
||||||
|
// 上传文件路径
|
||||||
|
String filePath = RuoYiConfig.getUploadPath();
|
||||||
|
// 上传并返回新文件名称
|
||||||
|
String fileName = FileUploadUtils.upload(filePath, file);
|
||||||
|
upload.setFileId(String.valueOf(System.currentTimeMillis()));
|
||||||
|
upload.setFileName(file.getOriginalFilename());
|
||||||
|
upload.setFilePath(fileName);
|
||||||
|
upload.setFileSize(String.valueOf(file.getSize()));
|
||||||
|
upload.setCreateTime(LocalDateTime.now());
|
||||||
|
return upload;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/Dictionary")
|
||||||
|
@ApiOperation(value = "字典查询",httpMethod = "POST")
|
||||||
|
public AjaxResult Dictionary(@RequestBody Dictionary dic)
|
||||||
|
{
|
||||||
|
List<Dictionary> diclist=service.selectDic(dic.getCodingType(),dic.getCodingType1(), dic.getCodingType2());
|
||||||
|
return AjaxResult.success(diclist);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 澳大利亚中东部地区
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/Australia", produces = "application/json;charset=UTF-8")
|
||||||
|
@Api(tags = "澳大利亚中东部地区")
|
||||||
|
public class AustraliaMiddleEastController
|
||||||
|
{
|
||||||
|
@Resource
|
||||||
|
private IAustraliaMiddleEastService australiaMiddleEastService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @return 实体类
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
@RequestMapping(value = "/SelectAustralia",method = {RequestMethod.GET})
|
||||||
|
public AjaxResult SelectAustralia(@RequestBody AustraliaMiddleEastVO eastVO )
|
||||||
|
{
|
||||||
|
List<AustraliaMiddleEastVO> eastVOSList= australiaMiddleEastService.selectAustralia(eastVO.getYearMonth(),eastVO.getMonth());
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelAustralia",method = {RequestMethod.DELETE})
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
public AjaxResult DelAustralia(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = australiaMiddleEastService.DelAustralia(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/IntoAustralia",method = {RequestMethod.POST})
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
public AjaxResult IntoAustralia(@RequestBody AustraliaMiddleEastVO eastVOS)
|
||||||
|
{
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = australiaMiddleEastService.IntoAustralia(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,85 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.GlobalTypeVO;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.service_yada.IGlobalTypeService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*全球各类型占比
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/monitor/clobal")
|
||||||
|
@Api(tags = "全球各类型占比")
|
||||||
|
public class GlobalTypeController {
|
||||||
|
@Resource
|
||||||
|
private IGlobalTypeService typeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @param response 响应头
|
||||||
|
* @param request 客户端请求
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectGlobalType",method = {RequestMethod.POST})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "POST")
|
||||||
|
public AjaxResult selectGlobalType(HttpServletResponse response, HttpServletRequest request,@RequestBody GlobalTypeVO TypeVO)
|
||||||
|
{
|
||||||
|
List<GlobalTypeVO> eastVOSList= typeService.selectGlobalType(TypeVO.getTypeName(),TypeVO.getParticularYear());
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelGlobalType",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
|
||||||
|
public AjaxResult DelGlobalType(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = typeService.DelGlobalType(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/IntoGlobalType",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult IntoGlobalType(@RequestBody GlobalTypeVO eastVOS)
|
||||||
|
{
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = typeService.IntoGlobalType(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.OceanTemperatureVO;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.service_yada.IOceanTemperatureService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 海洋表面温度监测
|
||||||
|
*/
|
||||||
|
@Api(tags = "海洋表面温度监测")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/Ocean", produces = "application/json;charset=UTF-8")
|
||||||
|
public class OceanTemperatureController {
|
||||||
|
@Resource
|
||||||
|
private IOceanTemperatureService temperatureService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectOcean",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
public AjaxResult selectOcean(@RequestBody OceanTemperatureVO temperatureVO)
|
||||||
|
{
|
||||||
|
List<OceanTemperatureVO> eastVOSList= temperatureService.selectOcean(temperatureVO.getStartDate());
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelOcean",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
|
||||||
|
|
||||||
|
public AjaxResult DelOcean(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = temperatureService.DelOcean(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/IntoAustralia",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult IntoOcean(@RequestBody OceanTemperatureVO eastVOS)
|
||||||
|
{
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = temperatureService.IntoOcean(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.service_yada.IRegionVGIService;
|
||||||
|
import com.ruoyi.system.domain_yada.RegionVGIVO;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 各区域VGI
|
||||||
|
*/
|
||||||
|
@Api(tags = "各区域VGI")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/orderMng", produces = "application/json;charset=UTF-8")
|
||||||
|
public class RegionVGIController
|
||||||
|
{
|
||||||
|
@Resource
|
||||||
|
private IRegionVGIService regionVGIService;
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/SelectRegion",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
public AjaxResult SelectRegion()
|
||||||
|
{
|
||||||
|
List<RegionVGIVO> vgivost= regionVGIService.selectRegion();
|
||||||
|
return AjaxResult.success(vgivost);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelRegion",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
|
||||||
|
public AjaxResult DelRegion(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = regionVGIService.DelRegion(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param vgivo 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/IntoRegion",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult IntoRegion(@RequestBody RegionVGIVO vgivo)
|
||||||
|
{
|
||||||
|
vgivo.setCreatedTime(LocalDateTime.now());
|
||||||
|
int NUM = regionVGIService.IntoRegion(vgivo);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.RegionVGIVO;
|
||||||
|
import com.ruoyi.system.domain_yada.RegionalSystemVO;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.service_yada.IRegionalSystemService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区域生态系统
|
||||||
|
*/
|
||||||
|
@Api(tags = "区域生态系统")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/Regional", produces = "application/json;charset=UTF-8")
|
||||||
|
public class RegionalSystemController {
|
||||||
|
@Resource
|
||||||
|
private IRegionalSystemService systemService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectRegional",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
public AjaxResult selectRegional(@RequestParam("region") String region)
|
||||||
|
{
|
||||||
|
List<RegionalSystemVO> eastVOSList= systemService.selectRegional(region);
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelRegional",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
|
||||||
|
public AjaxResult DelRegional(@RequestParam("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = systemService.DelRegional(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/IntoRegional",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult IntoRegional(@RequestBody RegionalSystemVO eastVOS)
|
||||||
|
{
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = systemService.IntoRegional(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,330 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.utils.file.WeatherUtils;
|
||||||
|
import com.ruoyi.system.domain_yada.*;
|
||||||
|
import com.ruoyi.system.service_yada.*;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import jdk.jfr.Frequency;
|
||||||
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import springfox.documentation.spring.web.json.Json;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.net.http.HttpRequest;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/Special")
|
||||||
|
@Api(tags = "模板导入")
|
||||||
|
public class SpecialController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IRegionVGIService regionVGIService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IAustraliaMiddleEastService australiaMiddleEastService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IAorestCoverageService service;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IVegetationCoverageService coverageService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IRegionalSystemService systemService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
|
||||||
|
@RequestMapping(value = "/helpSaveExcel")
|
||||||
|
private AjaxResult helpSaveExcel(@RequestBody MultipartFile file) {
|
||||||
|
List<RegionVGIVO> value = saveExcel(file);
|
||||||
|
|
||||||
|
return IntoRegion(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/helpWeatherClass",method = {RequestMethod.GET})
|
||||||
|
public AjaxResult helpWeatherClass(String city,String type)
|
||||||
|
{
|
||||||
|
String url="https://restapi.amap.com/v3/weather/weatherInfo";
|
||||||
|
Map<String,String> map=new HashMap<>();
|
||||||
|
map.put("key","37087f0a3007dc67d37859553cd02d33");
|
||||||
|
map.put("city",city);
|
||||||
|
if (type!=null){ map.put("extensions",type);}
|
||||||
|
map.put("output","json");
|
||||||
|
String value= WeatherUtils.httpRequest(url,map);
|
||||||
|
WeatherUtilsVO vo = JSON.parseObject(value,WeatherUtilsVO.class);
|
||||||
|
// String value2=vo.getForecasts().substring(1,vo.getForecasts().length()-1);
|
||||||
|
// System.out.println(value2);
|
||||||
|
// vo.setForecast(JSON.parseObject(value2,ForecastVo.class));
|
||||||
|
// JSONObject userJson=JSONObject.parseObject(value);
|
||||||
|
// WeatherUtilsVO utilsValue= JSON.toJavaObject(userJson,WeatherUtilsVO.class);
|
||||||
|
|
||||||
|
return AjaxResult.success(vo);
|
||||||
|
} /**
|
||||||
|
* 森林覆盖率模板导入
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/helpExcelAorest")
|
||||||
|
private AjaxResult helpExcelAorest(@RequestBody MultipartFile file) {
|
||||||
|
List<AorestCoverageVO> value = saveExcelAorest(file);
|
||||||
|
|
||||||
|
return IntoAorestCoverage(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*平均植被覆盖度和净初级生产力
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/helpExcelnpp")
|
||||||
|
private AjaxResult helpExcelnpp(@RequestBody MultipartFile file) {
|
||||||
|
List<VegetationCoverageVO> value = saveExcelnpp(file);
|
||||||
|
|
||||||
|
return IntoVegetation(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 澳大利亚中部地区模板导入
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/helpExcelAus")
|
||||||
|
private AjaxResult helpExcelAus(@RequestBody MultipartFile file) {
|
||||||
|
List<AustraliaMiddleEastVO> value = saveExcelAus(file);
|
||||||
|
|
||||||
|
return IntoAustralia(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区域生态系统类型转移
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/helpExcelRegion")
|
||||||
|
private AjaxResult helpExcelRegion(@RequestBody MultipartFile file) {
|
||||||
|
List<RegionalSystemVO> value = saveExcelRegion(file);
|
||||||
|
|
||||||
|
return IntoRegional(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AjaxResult IntoRegional(List<RegionalSystemVO> eastVOS)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < eastVOS.size(); i++) {
|
||||||
|
eastVOS.get(i).setCreateTime(LocalDateTime.now());
|
||||||
|
systemService.IntoRegional(eastVOS.get(i));
|
||||||
|
}
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
catch (Exception E){
|
||||||
|
E.getMessage();
|
||||||
|
return AjaxResult.error(E.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AjaxResult IntoAustralia(List<AustraliaMiddleEastVO> eastVOS) {
|
||||||
|
|
||||||
|
for (int i = 0; i < eastVOS.size(); i++) {
|
||||||
|
eastVOS.get(i).setCreateTime(LocalDateTime.now());
|
||||||
|
australiaMiddleEastService.IntoAustralia(eastVOS.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
public AjaxResult IntoRegion(List<RegionVGIVO> vgivo) {
|
||||||
|
for (int i = 0; i < vgivo.size(); i++) {
|
||||||
|
vgivo.get(i).setCreatedTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
regionVGIService.IntoRegion(vgivo.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return AjaxResult.success();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public AjaxResult IntoAorestCoverage(List<AorestCoverageVO> eastVOS)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < eastVOS.size(); i++) {
|
||||||
|
eastVOS.get(i).setCreateTime(LocalDateTime.now());
|
||||||
|
service.IntoAorestCoverage(eastVOS.get(i));
|
||||||
|
}
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
catch (Exception E){
|
||||||
|
E.getMessage();
|
||||||
|
return AjaxResult.error(E.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AjaxResult IntoVegetation(List<VegetationCoverageVO> eastVOS)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < eastVOS.size(); i++) {
|
||||||
|
eastVOS.get(i).setCreateTime(LocalDateTime.now());
|
||||||
|
coverageService.IntoVegetation(eastVOS.get(i));
|
||||||
|
}
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
catch (Exception E){
|
||||||
|
E.getMessage();
|
||||||
|
return AjaxResult.error(E.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<RegionVGIVO> saveExcel(MultipartFile file) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<RegionVGIVO> Value = new ArrayList<>();
|
||||||
|
InputStream inputStream = file.getInputStream();
|
||||||
|
Workbook book;
|
||||||
|
Sheet sheet;
|
||||||
|
book = new XSSFWorkbook(inputStream);
|
||||||
|
sheet = book.getSheetAt(0);
|
||||||
|
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
|
||||||
|
RegionVGIVO value = new RegionVGIVO();
|
||||||
|
Row row = sheet.getRow(i);
|
||||||
|
value.setCreatedTime(LocalDateTime.now());
|
||||||
|
value.setRegion(row.getCell(0).toString());
|
||||||
|
value.setRegionEn(row.getCell(1).toString());
|
||||||
|
value.setForest(Double.parseDouble(row.getCell(2).toString()));
|
||||||
|
value.setGrassland(Double.parseDouble(row.getCell(3).toString()));
|
||||||
|
value.setParticularYear(row.getCell(4).toString());
|
||||||
|
Value.add(value);
|
||||||
|
}
|
||||||
|
return Value;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<AustraliaMiddleEastVO> saveExcelAus(MultipartFile file) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<AustraliaMiddleEastVO> Value = new ArrayList<>();
|
||||||
|
InputStream inputStream = file.getInputStream();
|
||||||
|
Workbook book;
|
||||||
|
Sheet sheet;
|
||||||
|
book = new XSSFWorkbook(inputStream);
|
||||||
|
sheet = book.getSheetAt(0);
|
||||||
|
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
|
||||||
|
AustraliaMiddleEastVO value = new AustraliaMiddleEastVO();
|
||||||
|
Row row = sheet.getRow(i);
|
||||||
|
value.setYearMonth(row.getCell(0).toString());
|
||||||
|
value.setMonth(row.getCell(1).toString());
|
||||||
|
value.setSstAnomalyIndex(Double.parseDouble(row.getCell(2).toString()));
|
||||||
|
value.setTemperatureAnomolies(Double.parseDouble(row.getCell(3).toString()));
|
||||||
|
value.setPrecipitationAnomolies(Double.parseDouble(row.getCell(4).toString()));
|
||||||
|
value.setVaiAnomolies(Double.parseDouble(row.getCell(5).toString()));
|
||||||
|
Value.add(value);
|
||||||
|
}
|
||||||
|
return Value;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<AorestCoverageVO> saveExcelAorest(MultipartFile file) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<AorestCoverageVO> Value = new ArrayList<>();
|
||||||
|
InputStream inputStream = file.getInputStream();
|
||||||
|
Workbook book;
|
||||||
|
Sheet sheet;
|
||||||
|
book = new XSSFWorkbook(inputStream);
|
||||||
|
sheet = book.getSheetAt(0);
|
||||||
|
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
|
||||||
|
AorestCoverageVO value = new AorestCoverageVO();
|
||||||
|
Row row = sheet.getRow(i);
|
||||||
|
value.setRegion(row.getCell(0).toString());
|
||||||
|
value.setRegionEn(row.getCell(1).toString());
|
||||||
|
value.setProtectedLands(Double.parseDouble(row.getCell(2).toString()));
|
||||||
|
value.setNonProtectedLands(Double.parseDouble(row.getCell(3).toString()));
|
||||||
|
value.setMountain(Double.parseDouble(row.getCell(4).toString()));
|
||||||
|
value.setNonMountain(Double.parseDouble(row.getCell(5).toString()));
|
||||||
|
value.setCreateTime(LocalDateTime.now());
|
||||||
|
Value.add(value);
|
||||||
|
}
|
||||||
|
return Value;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VegetationCoverageVO> saveExcelnpp(MultipartFile file) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<VegetationCoverageVO> Value = new ArrayList<>();
|
||||||
|
InputStream inputStream = file.getInputStream();
|
||||||
|
Workbook book;
|
||||||
|
Sheet sheet;
|
||||||
|
book = new XSSFWorkbook(inputStream);
|
||||||
|
sheet = book.getSheetAt(0);
|
||||||
|
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
|
||||||
|
VegetationCoverageVO value = new VegetationCoverageVO();
|
||||||
|
Row row = sheet.getRow(i);
|
||||||
|
value.setRegion(row.getCell(0).toString());
|
||||||
|
value.setRegionEn(row.getCell(1).toString());
|
||||||
|
value.setProtectedLands(Double.parseDouble(row.getCell(4).toString()));
|
||||||
|
value.setNonProtectedLands(Double.parseDouble(row.getCell(5).toString()));
|
||||||
|
value.setMountain(Double.parseDouble(row.getCell(2).toString()));
|
||||||
|
value.setNonMountain(Double.parseDouble(row.getCell(3).toString()));
|
||||||
|
value.setCreateTime(LocalDateTime.now());
|
||||||
|
Value.add(value);
|
||||||
|
}
|
||||||
|
return Value;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<RegionalSystemVO> saveExcelRegion(MultipartFile file) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<RegionalSystemVO> Value = new ArrayList<>();
|
||||||
|
InputStream inputStream = file.getInputStream();
|
||||||
|
Workbook book;
|
||||||
|
Sheet sheet;
|
||||||
|
book = new XSSFWorkbook(inputStream);
|
||||||
|
sheet = book.getSheetAt(0);
|
||||||
|
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
|
||||||
|
RegionalSystemVO value = new RegionalSystemVO();
|
||||||
|
Row row = sheet.getRow(i);
|
||||||
|
value.setRegion(row.getCell(0).toString());
|
||||||
|
value.setRegionEn(row.getCell(1).toString());
|
||||||
|
value.setTypeConversion(row.getCell(2).toString());
|
||||||
|
value.setTypeconversionEn(row.getCell(3).toString());
|
||||||
|
value.setProportionOfChangedAreas(Double.parseDouble(row.getCell(4).toString()));
|
||||||
|
value.setCreateTime(LocalDateTime.now());
|
||||||
|
Value.add(value);
|
||||||
|
}
|
||||||
|
return Value;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.config.RuoYiConfig;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||||
|
import com.ruoyi.common.utils.file.FileUtils;
|
||||||
|
import com.ruoyi.system.domain_yada.ThematicMapDomain;
|
||||||
|
import com.ruoyi.system.service_yada.ThematicMapService;
|
||||||
|
import io.swagger.annotations.*;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 专题图模块
|
||||||
|
* @author taco chen
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/thematic-map")
|
||||||
|
@Api(tags = "专题图模块")
|
||||||
|
public class ThematicMapController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ThematicMapService thematicMapService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @param response 响应头
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取所有专题图")
|
||||||
|
@ApiImplicitParams({})
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(code =200,message = "请求成功"),
|
||||||
|
@ApiResponse(code =401,message = "没有认证"),
|
||||||
|
@ApiResponse(code =403,message = "权限不足"),
|
||||||
|
@ApiResponse(code =404,message = "未找到")
|
||||||
|
})
|
||||||
|
@RequestMapping(value = "/get/all",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult selectAllThematicMap(HttpServletResponse response,@RequestBody ThematicMapDomain thematicMapDomain)
|
||||||
|
{
|
||||||
|
List<ThematicMapDomain> res= thematicMapService.selectAll(thematicMapDomain.getPictureType(),
|
||||||
|
thematicMapDomain.getPictureTypeOne(),thematicMapDomain.getPictureTypeTwo());
|
||||||
|
return AjaxResult.success(res);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param id id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/delete",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long", paramType = "path", dataTypeClass = long.class)
|
||||||
|
public AjaxResult deleteThematicMap(@Param("id") Long id)
|
||||||
|
{
|
||||||
|
int num = thematicMapService.deleteById(id);
|
||||||
|
if (num>0) {
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param thematicMapDomain 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/add",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult saveThematicMap(@RequestBody ThematicMapDomain thematicMapDomain)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
thematicMapDomain.setCreatedTime(LocalDateTime.now());
|
||||||
|
int num = thematicMapService.save(thematicMapDomain);
|
||||||
|
if (num>0) {
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.UrbanVO;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.service_yada.IUrbanService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 中国城市监测
|
||||||
|
*/
|
||||||
|
@Api(tags = "中国城市监测")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/Urban", produces = "application/json;charset=UTF-8")
|
||||||
|
public class UrbanController {
|
||||||
|
@Resource
|
||||||
|
private IUrbanService urbanService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @param response 响应头
|
||||||
|
* @param request 客户端请求
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectUrban",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
public AjaxResult selectUrban(HttpServletResponse response, HttpServletRequest request,@RequestBody UrbanVO urbanVO)
|
||||||
|
{
|
||||||
|
List<UrbanVO> eastVOSList= urbanService.selectUrban(urbanVO.getName(),urbanVO.getParticularYear());
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelUrban",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
public AjaxResult DelUrban(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = urbanService.DelUrban(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/IntoUrban",method = {RequestMethod.POST})
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long", paramType = "path", dataTypeClass = long.class)
|
||||||
|
public AjaxResult IntoUrban(@RequestBody UrbanVO eastVOS)
|
||||||
|
{
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = urbanService.IntoUrban(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.ruoyi.web.controller.yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.VegetationCoverageVO;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.service_yada.IVegetationCoverageService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平均植被覆盖度和净初级生产力
|
||||||
|
*/
|
||||||
|
@Api(tags = "平均植被覆盖度和净初级生产力")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/business-service/api/Vegetation", produces = "application/json;charset=UTF-8")
|
||||||
|
public class VegetationCoverageController {
|
||||||
|
@Resource
|
||||||
|
private IVegetationCoverageService coverageService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询方法
|
||||||
|
* @return 参数类
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/selectVegetation",method = {RequestMethod.GET})
|
||||||
|
@ApiOperation(value = "查询方法",httpMethod = "GET")
|
||||||
|
public AjaxResult selectVegetation()
|
||||||
|
{
|
||||||
|
List<VegetationCoverageVO> eastVOSList= coverageService.selectVegetation();
|
||||||
|
return AjaxResult.success(eastVOSList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除方法
|
||||||
|
* @param ID id
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/DelVegetation",method = {RequestMethod.DELETE})
|
||||||
|
@ApiOperation(value = "删除方法",httpMethod = "DELETE")
|
||||||
|
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long", paramType = "path", dataTypeClass = long.class)
|
||||||
|
public AjaxResult DelVegetation(@Param("ID") String ID)
|
||||||
|
{
|
||||||
|
int NUM = coverageService.DelVegetation(ID);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增方法
|
||||||
|
* @param eastVOS 新增实体类
|
||||||
|
* @return 状态码
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "新增方法",httpMethod = "POST")
|
||||||
|
@RequestMapping(value = "/IntoVegetation",method = {RequestMethod.POST})
|
||||||
|
public AjaxResult IntoVegetation(@RequestBody VegetationCoverageVO eastVOS)
|
||||||
|
{
|
||||||
|
eastVOS.setCreateTime(LocalDateTime.now());
|
||||||
|
int NUM = coverageService.IntoVegetation(eastVOS);
|
||||||
|
if (NUM>0)
|
||||||
|
{
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
com.ruoyi.framework.web.service.CaptchaRedisService
|
@ -2,13 +2,17 @@
|
|||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
# driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
|
driver-class-name: org.postgresql.Driver
|
||||||
druid:
|
druid:
|
||||||
# 主库数据源
|
|
||||||
master:
|
master:
|
||||||
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
#url: jdbc:postgresql://47.243.79.66:5432/yada?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
|
||||||
username: root
|
#url: jdbc:postgresql://192.168.2.9:5432/yada?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
|
||||||
password: password
|
# username: postgres
|
||||||
|
# password: postgres
|
||||||
|
url: jdbc:postgresql://118.195.242.28:5432/yada?AllowPublicKeyRetrieval=True&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
|
||||||
|
username: gty
|
||||||
|
password: 308525
|
||||||
# 从库数据源
|
# 从库数据源
|
||||||
slave:
|
slave:
|
||||||
# 从数据源开关/默认关闭
|
# 从数据源开关/默认关闭
|
||||||
@ -30,8 +34,9 @@ spring:
|
|||||||
minEvictableIdleTimeMillis: 300000
|
minEvictableIdleTimeMillis: 300000
|
||||||
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
||||||
maxEvictableIdleTimeMillis: 900000
|
maxEvictableIdleTimeMillis: 900000
|
||||||
# 配置检测连接是否有效
|
# 配置检测连接是否有效select * from pg_stat_activity
|
||||||
validationQuery: SELECT 1 FROM DUAL
|
# validationQuery: SELECT 1 FROM DUAL
|
||||||
|
validationQuery: SELECT version()
|
||||||
testWhileIdle: true
|
testWhileIdle: true
|
||||||
testOnBorrow: false
|
testOnBorrow: false
|
||||||
testOnReturn: false
|
testOnReturn: false
|
||||||
|
@ -3,13 +3,13 @@ ruoyi:
|
|||||||
# 名称
|
# 名称
|
||||||
name: RuoYi
|
name: RuoYi
|
||||||
# 版本
|
# 版本
|
||||||
version: 3.8.2
|
version: 3.4.0
|
||||||
# 版权年份
|
# 版权年份
|
||||||
copyrightYear: 2022
|
copyrightYear: 2021
|
||||||
# 实例演示开关
|
# 实例演示开关
|
||||||
demoEnabled: true
|
demoEnabled: true
|
||||||
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
||||||
profile: D:/ruoyi/uploadPath
|
profile: /home/gty/ruoyi/uploadPath
|
||||||
# 获取ip地址开关
|
# 获取ip地址开关
|
||||||
addressEnabled: false
|
addressEnabled: false
|
||||||
# 验证码类型 math 数组计算 char 字符验证
|
# 验证码类型 math 数组计算 char 字符验证
|
||||||
@ -19,19 +19,17 @@ ruoyi:
|
|||||||
server:
|
server:
|
||||||
# 服务器的HTTP端口,默认为8080
|
# 服务器的HTTP端口,默认为8080
|
||||||
port: 8080
|
port: 8080
|
||||||
|
#port: 6061
|
||||||
servlet:
|
servlet:
|
||||||
# 应用的访问路径
|
# 应用的访问路径
|
||||||
context-path: /
|
context-path: /
|
||||||
tomcat:
|
tomcat:
|
||||||
# tomcat的URI编码
|
# tomcat的URI编码
|
||||||
uri-encoding: UTF-8
|
uri-encoding: UTF-8
|
||||||
# 连接数满后的排队数,默认为100
|
|
||||||
accept-count: 1000
|
|
||||||
threads:
|
|
||||||
# tomcat最大线程数,默认为200
|
# tomcat最大线程数,默认为200
|
||||||
max: 800
|
max-threads: 800
|
||||||
# Tomcat启动初始化的线程数,默认值10
|
# Tomcat启动初始化的线程数,默认值25
|
||||||
min-spare: 100
|
min-spare-threads: 30
|
||||||
|
|
||||||
# 日志配置
|
# 日志配置
|
||||||
logging:
|
logging:
|
||||||
@ -68,7 +66,7 @@ spring:
|
|||||||
# 数据库索引
|
# 数据库索引
|
||||||
database: 0
|
database: 0
|
||||||
# 密码
|
# 密码
|
||||||
password:
|
password: '*&jkjusWETO(^ses%i'
|
||||||
# 连接超时时间
|
# 连接超时时间
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
lettuce:
|
lettuce:
|
||||||
@ -89,7 +87,7 @@ token:
|
|||||||
# 令牌密钥
|
# 令牌密钥
|
||||||
secret: abcdefghijklmnopqrstuvwxyz
|
secret: abcdefghijklmnopqrstuvwxyz
|
||||||
# 令牌有效期(默认30分钟)
|
# 令牌有效期(默认30分钟)
|
||||||
expireTime: 30
|
expireTime: 300
|
||||||
|
|
||||||
# MyBatis配置
|
# MyBatis配置
|
||||||
mybatis:
|
mybatis:
|
||||||
@ -103,6 +101,7 @@ mybatis:
|
|||||||
# PageHelper分页插件
|
# PageHelper分页插件
|
||||||
pagehelper:
|
pagehelper:
|
||||||
helperDialect: mysql
|
helperDialect: mysql
|
||||||
|
reasonable: true
|
||||||
supportMethodsArguments: true
|
supportMethodsArguments: true
|
||||||
params: count=countSql
|
params: count=countSql
|
||||||
|
|
||||||
@ -113,11 +112,27 @@ swagger:
|
|||||||
# 请求前缀
|
# 请求前缀
|
||||||
pathMapping: /dev-api
|
pathMapping: /dev-api
|
||||||
|
|
||||||
|
# 滑块验证码
|
||||||
|
aj:
|
||||||
|
captcha:
|
||||||
|
cache-type: redis
|
||||||
|
# blockPuzzle 滑块 clickWord 文字点选 default默认两者都实例化
|
||||||
|
type: blockPuzzle
|
||||||
|
# 右下角显示字
|
||||||
|
water-mark: ruoyi.vip
|
||||||
|
# 校验滑动拼图允许误差偏移量(默认5像素)
|
||||||
|
slip-offset: 5
|
||||||
|
# aes加密坐标开启或者禁用(true|false)
|
||||||
|
aes-status: true
|
||||||
|
# 滑动干扰项(0/1/2)
|
||||||
|
interference-options: 2
|
||||||
|
|
||||||
# 防止XSS攻击
|
# 防止XSS攻击
|
||||||
xss:
|
xss:
|
||||||
# 过滤开关
|
# 过滤开关
|
||||||
enabled: true
|
enabled: true
|
||||||
# 排除链接(多个用逗号分隔)
|
# 排除链接(多个用逗号分隔)
|
||||||
excludes: /system/notice
|
excludes: /system/notice/*
|
||||||
# 匹配链接
|
# 匹配链接
|
||||||
urlPatterns: /system/*,/monitor/*,/tool/*
|
urlPatterns: /system/*,/monitor/*,/tool/*
|
||||||
|
|
||||||
|
@ -1,24 +1,6 @@
|
|||||||
Application Version: ${ruoyi.version}
|
_
|
||||||
Spring Boot Version: ${spring-boot.version}
|
( )
|
||||||
////////////////////////////////////////////////////////////////////
|
| |/') _ __ ___
|
||||||
// _ooOoo_ //
|
(`\/')| , < ( '__)/',__)
|
||||||
// o8888888o //
|
> < | |\`\ | | \__, \
|
||||||
// 88" . "88 //
|
(_/\_)(_) (_)(_) (____/
|
||||||
// (| ^_^ |) //
|
|
||||||
// O\ = /O //
|
|
||||||
// ____/`---'\____ //
|
|
||||||
// .' \\| |// `. //
|
|
||||||
// / \\||| : |||// \ //
|
|
||||||
// / _||||| -:- |||||- \ //
|
|
||||||
// | | \\\ - /// | | //
|
|
||||||
// | \_| ''\---/'' | | //
|
|
||||||
// \ .-\__ `-` ___/-. / //
|
|
||||||
// ___`. .' /--.--\ `. . ___ //
|
|
||||||
// ."" '< `.___\_<|>_/___.' >'"". //
|
|
||||||
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
|
|
||||||
// \ \ `-. \_ __\ /__ _/ .-` / / //
|
|
||||||
// ========`-.____`-.___\_____/___.-`____.-'======== //
|
|
||||||
// `=---=' //
|
|
||||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
|
|
||||||
// 佛祖保佑 永不宕机 永无BUG //
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
@ -5,6 +5,8 @@ import java.lang.annotation.Retention;
|
|||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||||
|
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||||
import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
|
import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,11 +58,6 @@ public @interface Excel
|
|||||||
*/
|
*/
|
||||||
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
|
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出类型(0数字 1字符串)
|
|
||||||
*/
|
|
||||||
public ColumnType cellType() default ColumnType.STRING;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出时在excel中每个列的高度 单位为字符
|
* 导出时在excel中每个列的高度 单位为字符
|
||||||
*/
|
*/
|
||||||
@ -107,9 +104,19 @@ public @interface Excel
|
|||||||
public boolean isStatistics() default false;
|
public boolean isStatistics() default false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右)
|
* 导出类型(0数字 1字符串)
|
||||||
*/
|
*/
|
||||||
public Align align() default Align.AUTO;
|
public ColumnType cellType() default ColumnType.STRING;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出字体颜色
|
||||||
|
*/
|
||||||
|
public IndexedColors color() default IndexedColors.BLACK;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出字段对齐方式
|
||||||
|
*/
|
||||||
|
public HorizontalAlignment align() default HorizontalAlignment.CENTER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义数据处理器
|
* 自定义数据处理器
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.constraints.Email;
|
import javax.validation.constraints.Email;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
@ -31,7 +32,7 @@ public class SysDept extends BaseEntity
|
|||||||
private String deptName;
|
private String deptName;
|
||||||
|
|
||||||
/** 显示顺序 */
|
/** 显示顺序 */
|
||||||
private String orderNum;
|
private Integer orderNum;
|
||||||
|
|
||||||
/** 负责人 */
|
/** 负责人 */
|
||||||
private String leader;
|
private String leader;
|
||||||
@ -96,13 +97,13 @@ public class SysDept extends BaseEntity
|
|||||||
this.deptName = deptName;
|
this.deptName = deptName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotBlank(message = "显示顺序不能为空")
|
@NotNull(message = "显示顺序不能为空")
|
||||||
public String getOrderNum()
|
public Integer getOrderNum()
|
||||||
{
|
{
|
||||||
return orderNum;
|
return orderNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOrderNum(String orderNum)
|
public void setOrderNum(Integer orderNum)
|
||||||
{
|
{
|
||||||
this.orderNum = orderNum;
|
this.orderNum = orderNum;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.common.core.domain.entity;
|
package com.ruoyi.common.core.domain.entity;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.Pattern;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
@ -57,6 +58,7 @@ public class SysDictType extends BaseEntity
|
|||||||
|
|
||||||
@NotBlank(message = "字典类型不能为空")
|
@NotBlank(message = "字典类型不能为空")
|
||||||
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
|
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
|
||||||
|
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
|
||||||
public String getDictType()
|
public String getDictType()
|
||||||
{
|
{
|
||||||
return dictType;
|
return dictType;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.common.core.page;
|
package com.ruoyi.common.core.page;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.text.Convert;
|
||||||
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,8 +41,8 @@ public class TableSupport
|
|||||||
public static PageDomain getPageDomain()
|
public static PageDomain getPageDomain()
|
||||||
{
|
{
|
||||||
PageDomain pageDomain = new PageDomain();
|
PageDomain pageDomain = new PageDomain();
|
||||||
pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
|
pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
|
||||||
pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
|
pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
|
||||||
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
|
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
|
||||||
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
|
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
|
||||||
pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
|
pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
|
||||||
|
@ -15,18 +15,16 @@ public class PageUtils extends PageHelper
|
|||||||
/**
|
/**
|
||||||
* 设置请求分页数据
|
* 设置请求分页数据
|
||||||
*/
|
*/
|
||||||
public static void startPage()
|
public static void
|
||||||
|
startPage()
|
||||||
{
|
{
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||||
Integer pageNum = pageDomain.getPageNum();
|
Integer pageNum = pageDomain.getPageNum();
|
||||||
Integer pageSize = pageDomain.getPageSize();
|
Integer pageSize = pageDomain.getPageSize();
|
||||||
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
|
|
||||||
{
|
|
||||||
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
|
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
|
||||||
Boolean reasonable = pageDomain.getReasonable();
|
Boolean reasonable = pageDomain.getReasonable();
|
||||||
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
|
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清理分页的线程变量
|
* 清理分页的线程变量
|
||||||
|
@ -17,6 +17,7 @@ import com.ruoyi.common.config.RuoYiConfig;
|
|||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
import com.ruoyi.common.utils.uuid.IdUtils;
|
||||||
|
import org.apache.commons.io.FilenameUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件处理工具类
|
* 文件处理工具类
|
||||||
@ -256,7 +257,7 @@ public class FileUtils
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取名称
|
* 获取文件名称 /profile/upload/2022/04/16/ruoyi.png -- ruoyi.png
|
||||||
*
|
*
|
||||||
* @param fileName 路径名称
|
* @param fileName 路径名称
|
||||||
* @return 没有文件路径的名称
|
* @return 没有文件路径的名称
|
||||||
@ -272,4 +273,21 @@ public class FileUtils
|
|||||||
int index = Math.max(lastUnixPos, lastWindowsPos);
|
int index = Math.max(lastUnixPos, lastWindowsPos);
|
||||||
return fileName.substring(index + 1);
|
return fileName.substring(index + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取不带后缀文件名称 /profile/upload/2022/04/16/ruoyi.png -- ruoyi
|
||||||
|
*
|
||||||
|
* @param fileName 路径名称
|
||||||
|
* @return 没有文件路径和后缀的名称
|
||||||
|
*/
|
||||||
|
public static String getNameNotSuffix(String fileName)
|
||||||
|
{
|
||||||
|
if (fileName == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String baseName = FilenameUtils.getBaseName(fileName);
|
||||||
|
return baseName;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
package com.ruoyi.common.utils.file;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.*;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/6/10 9:17
|
||||||
|
*/
|
||||||
|
public class WeatherUtils
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public static String httpRequest(String requestUrl,Map params) {
|
||||||
|
//buffer用于接受返回的字符
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
try {
|
||||||
|
//建立URL,把请求地址给补全,其中urlencode()方法用于把params里的参数给取出来
|
||||||
|
URL url = new URL(requestUrl+"?"+urlencode(params));
|
||||||
|
//打开http连接
|
||||||
|
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
|
||||||
|
httpUrlConn.setDoInput(true);
|
||||||
|
httpUrlConn.setRequestMethod("GET");
|
||||||
|
httpUrlConn.connect();
|
||||||
|
|
||||||
|
//获得输入
|
||||||
|
InputStream inputStream = httpUrlConn.getInputStream();
|
||||||
|
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
|
||||||
|
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
|
||||||
|
|
||||||
|
//将bufferReader的值给放到buffer里
|
||||||
|
String str = null;
|
||||||
|
while ((str = bufferedReader.readLine()) != null) {
|
||||||
|
buffer.append(str);
|
||||||
|
}
|
||||||
|
//关闭bufferReader和输入流
|
||||||
|
bufferedReader.close();
|
||||||
|
inputStreamReader.close();
|
||||||
|
inputStream.close();
|
||||||
|
inputStream = null;
|
||||||
|
//断开连接
|
||||||
|
httpUrlConn.disconnect();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
//返回字符串
|
||||||
|
return buffer.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String urlencode(Map<String,Object>data) {
|
||||||
|
//将map里的参数变成像 showapi_appid=###&showapi_sign=###&的样子
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (Map.Entry i : data.entrySet()) {
|
||||||
|
try {
|
||||||
|
sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -672,21 +672,46 @@ public class ExcelUtil<T>
|
|||||||
style.setFont(totalFont);
|
style.setFont(totalFont);
|
||||||
styles.put("total", style);
|
styles.put("total", style);
|
||||||
|
|
||||||
style = wb.createCellStyle();
|
styles.putAll(annotationStyles(wb));
|
||||||
style.cloneStyleFrom(styles.get("data"));
|
|
||||||
style.setAlignment(HorizontalAlignment.LEFT);
|
|
||||||
styles.put("data1", style);
|
|
||||||
|
|
||||||
style = wb.createCellStyle();
|
return styles;
|
||||||
style.cloneStyleFrom(styles.get("data"));
|
}
|
||||||
style.setAlignment(HorizontalAlignment.CENTER);
|
|
||||||
styles.put("data2", style);
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据Excel注解创建表格样式
|
||||||
|
*
|
||||||
|
* @param wb 工作薄对象
|
||||||
|
* @return 自定义样式列表
|
||||||
|
*/
|
||||||
|
private Map<String, CellStyle> annotationStyles(Workbook wb)
|
||||||
|
{
|
||||||
|
Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
|
||||||
|
for (Object[] os : fields)
|
||||||
|
{
|
||||||
|
Excel excel = (Excel) os[1];
|
||||||
|
String key = "data_" + excel.align() + "_" + excel.color();
|
||||||
|
if (!styles.containsKey(key))
|
||||||
|
{
|
||||||
|
CellStyle style = wb.createCellStyle();
|
||||||
style = wb.createCellStyle();
|
style = wb.createCellStyle();
|
||||||
style.cloneStyleFrom(styles.get("data"));
|
style.setAlignment(excel.align());
|
||||||
style.setAlignment(HorizontalAlignment.RIGHT);
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||||
styles.put("data3", style);
|
style.setBorderRight(BorderStyle.THIN);
|
||||||
|
style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||||
|
style.setBorderLeft(BorderStyle.THIN);
|
||||||
|
style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||||
|
style.setBorderTop(BorderStyle.THIN);
|
||||||
|
style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||||
|
style.setBorderBottom(BorderStyle.THIN);
|
||||||
|
style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
|
||||||
|
Font dataFont = wb.createFont();
|
||||||
|
dataFont.setFontName("Arial");
|
||||||
|
dataFont.setFontHeightInPoints((short) 10);
|
||||||
|
dataFont.setColor(excel.color().index);
|
||||||
|
style.setFont(dataFont);
|
||||||
|
styles.put(key, style);
|
||||||
|
}
|
||||||
|
}
|
||||||
return styles;
|
return styles;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -786,17 +811,10 @@ public class ExcelUtil<T>
|
|||||||
// 设置列宽
|
// 设置列宽
|
||||||
sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256));
|
sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256));
|
||||||
}
|
}
|
||||||
// 如果设置了提示信息则鼠标放上去提示.
|
if (StringUtils.isNotEmpty(attr.prompt()) || attr.combo().length > 0)
|
||||||
if (StringUtils.isNotEmpty(attr.prompt()))
|
|
||||||
{
|
{
|
||||||
// 这里默认设了2-101列提示.
|
// 提示信息或只能选择不能输入的列内容.
|
||||||
setXSSFPrompt(sheet, "", attr.prompt(), 1, 100, column, column);
|
setPromptOrValidation(sheet, attr.combo(), attr.prompt(), 1, 100, column, column);
|
||||||
}
|
|
||||||
// 如果设置了combo属性则本列只能选择不能输入
|
|
||||||
if (attr.combo().length > 0)
|
|
||||||
{
|
|
||||||
// 这里默认设了2-101列只能选择不能输入.
|
|
||||||
setXSSFValidation(sheet, attr.combo(), 1, 100, column, column);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -815,8 +833,7 @@ public class ExcelUtil<T>
|
|||||||
{
|
{
|
||||||
// 创建cell
|
// 创建cell
|
||||||
cell = row.createCell(column);
|
cell = row.createCell(column);
|
||||||
int align = attr.align().value();
|
cell.setCellStyle(styles.get("data_" + attr.align() + "_" + attr.color()));
|
||||||
cell.setCellStyle(styles.get("data" + (align >= 1 && align <= 3 ? align : "")));
|
|
||||||
|
|
||||||
// 用于读取对象中的属性
|
// 用于读取对象中的属性
|
||||||
Object value = getTargetValue(vo, field, attr);
|
Object value = getTargetValue(vo, field, attr);
|
||||||
@ -860,48 +877,29 @@ public class ExcelUtil<T>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置 POI XSSFSheet 单元格提示
|
* 设置 POI XSSFSheet 单元格提示或选择框
|
||||||
*
|
*
|
||||||
* @param sheet 表单
|
* @param sheet 表单
|
||||||
* @param promptTitle 提示标题
|
* @param textlist 下拉框显示的内容
|
||||||
* @param promptContent 提示内容
|
* @param promptContent 提示内容
|
||||||
* @param firstRow 开始行
|
* @param firstRow 开始行
|
||||||
* @param endRow 结束行
|
* @param endRow 结束行
|
||||||
* @param firstCol 开始列
|
* @param firstCol 开始列
|
||||||
* @param endCol 结束列
|
* @param endCol 结束列
|
||||||
*/
|
*/
|
||||||
public void setXSSFPrompt(Sheet sheet, String promptTitle, String promptContent, int firstRow, int endRow,
|
public void setPromptOrValidation(Sheet sheet, String[] textlist, String promptContent, int firstRow, int endRow,
|
||||||
int firstCol, int endCol)
|
int firstCol, int endCol)
|
||||||
{
|
{
|
||||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
DataValidationHelper helper = sheet.getDataValidationHelper();
|
||||||
DataValidationConstraint constraint = helper.createCustomConstraint("DD1");
|
DataValidationConstraint constraint = textlist.length > 0 ? helper.createExplicitListConstraint(textlist) : helper.createCustomConstraint("DD1");
|
||||||
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
|
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
|
||||||
DataValidation dataValidation = helper.createValidation(constraint, regions);
|
DataValidation dataValidation = helper.createValidation(constraint, regions);
|
||||||
dataValidation.createPromptBox(promptTitle, promptContent);
|
if (StringUtils.isNotEmpty(promptContent))
|
||||||
dataValidation.setShowPromptBox(true);
|
|
||||||
sheet.addValidationData(dataValidation);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置某些列的值只能输入预制的数据,显示下拉框.
|
|
||||||
*
|
|
||||||
* @param sheet 要设置的sheet.
|
|
||||||
* @param textlist 下拉框显示的内容
|
|
||||||
* @param firstRow 开始行
|
|
||||||
* @param endRow 结束行
|
|
||||||
* @param firstCol 开始列
|
|
||||||
* @param endCol 结束列
|
|
||||||
* @return 设置好的sheet.
|
|
||||||
*/
|
|
||||||
public void setXSSFValidation(Sheet sheet, String[] textlist, int firstRow, int endRow, int firstCol, int endCol)
|
|
||||||
{
|
{
|
||||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
// 如果设置了提示信息则鼠标放上去提示
|
||||||
// 加载下拉列表内容
|
dataValidation.createPromptBox("", promptContent);
|
||||||
DataValidationConstraint constraint = helper.createExplicitListConstraint(textlist);
|
dataValidation.setShowPromptBox(true);
|
||||||
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
|
}
|
||||||
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
|
|
||||||
// 数据有效性对象
|
|
||||||
DataValidation dataValidation = helper.createValidation(constraint, regions);
|
|
||||||
// 处理Excel兼容性问题
|
// 处理Excel兼容性问题
|
||||||
if (dataValidation instanceof XSSFDataValidation)
|
if (dataValidation instanceof XSSFDataValidation)
|
||||||
{
|
{
|
||||||
@ -912,7 +910,6 @@ public class ExcelUtil<T>
|
|||||||
{
|
{
|
||||||
dataValidation.setSuppressDropDownArrow(false);
|
dataValidation.setSuppressDropDownArrow(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
sheet.addValidationData(dataValidation);
|
sheet.addValidationData(dataValidation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,18 +35,26 @@
|
|||||||
<artifactId>druid-spring-boot-starter</artifactId>
|
<artifactId>druid-spring-boot-starter</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 验证码 -->
|
|
||||||
|
<!-- 滑块验证码-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.penggle</groupId>
|
<groupId>com.github.anji-plus</groupId>
|
||||||
<artifactId>kaptcha</artifactId>
|
<artifactId>captcha-spring-boot-starter</artifactId>
|
||||||
<exclusions>
|
<version>1.2.7</version>
|
||||||
<exclusion>
|
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
|
||||||
<groupId>javax.servlet</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 验证码 -->
|
||||||
|
<!-- <dependency>-->
|
||||||
|
<!-- <groupId>com.github.penggle</groupId>-->
|
||||||
|
<!-- <artifactId>kaptcha</artifactId>-->
|
||||||
|
<!-- <exclusions>-->
|
||||||
|
<!-- <exclusion>-->
|
||||||
|
<!-- <artifactId>javax.servlet-api</artifactId>-->
|
||||||
|
<!-- <groupId>javax.servlet</groupId>-->
|
||||||
|
<!-- </exclusion>-->
|
||||||
|
<!-- </exclusions>-->
|
||||||
|
<!-- </dependency>-->
|
||||||
|
|
||||||
<!-- 获取系统信息 -->
|
<!-- 获取系统信息 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.oshi</groupId>
|
<groupId>com.github.oshi</groupId>
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
package com.ruoyi.framework.config;
|
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import com.google.code.kaptcha.impl.DefaultKaptcha;
|
|
||||||
import com.google.code.kaptcha.util.Config;
|
|
||||||
import static com.google.code.kaptcha.Constants.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码配置
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class CaptchaConfig
|
|
||||||
{
|
|
||||||
@Bean(name = "captchaProducer")
|
|
||||||
public DefaultKaptcha getKaptchaBean()
|
|
||||||
{
|
|
||||||
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
|
|
||||||
Properties properties = new Properties();
|
|
||||||
// 是否有边框 默认为true 我们可以自己设置yes,no
|
|
||||||
properties.setProperty(KAPTCHA_BORDER, "yes");
|
|
||||||
// 验证码文本字符颜色 默认为Color.BLACK
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
|
|
||||||
// 验证码图片宽度 默认为200
|
|
||||||
properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
|
|
||||||
// 验证码图片高度 默认为50
|
|
||||||
properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
|
|
||||||
// 验证码文本字符大小 默认为40
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");
|
|
||||||
// KAPTCHA_SESSION_KEY
|
|
||||||
properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");
|
|
||||||
// 验证码文本字符长度 默认为5
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
|
|
||||||
// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
|
|
||||||
// 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
|
|
||||||
properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
|
|
||||||
Config config = new Config(properties);
|
|
||||||
defaultKaptcha.setConfig(config);
|
|
||||||
return defaultKaptcha;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean(name = "captchaProducerMath")
|
|
||||||
public DefaultKaptcha getKaptchaBeanMath()
|
|
||||||
{
|
|
||||||
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
|
|
||||||
Properties properties = new Properties();
|
|
||||||
// 是否有边框 默认为true 我们可以自己设置yes,no
|
|
||||||
properties.setProperty(KAPTCHA_BORDER, "yes");
|
|
||||||
// 边框颜色 默认为Color.BLACK
|
|
||||||
properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");
|
|
||||||
// 验证码文本字符颜色 默认为Color.BLACK
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
|
|
||||||
// 验证码图片宽度 默认为200
|
|
||||||
properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
|
|
||||||
// 验证码图片高度 默认为50
|
|
||||||
properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
|
|
||||||
// 验证码文本字符大小 默认为40
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35");
|
|
||||||
// KAPTCHA_SESSION_KEY
|
|
||||||
properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");
|
|
||||||
// 验证码文本生成器
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.ruoyi.framework.config.KaptchaTextCreator");
|
|
||||||
// 验证码文本字符间距 默认为2
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");
|
|
||||||
// 验证码文本字符长度 默认为5
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");
|
|
||||||
// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
|
|
||||||
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
|
|
||||||
// 验证码噪点颜色 默认为Color.BLACK
|
|
||||||
properties.setProperty(KAPTCHA_NOISE_COLOR, "white");
|
|
||||||
// 干扰实现类
|
|
||||||
properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
|
|
||||||
// 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
|
|
||||||
properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
|
|
||||||
Config config = new Config(properties);
|
|
||||||
defaultKaptcha.setConfig(config);
|
|
||||||
return defaultKaptcha;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
package com.ruoyi.framework.config;
|
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
import com.google.code.kaptcha.text.impl.DefaultTextCreator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码文本生成器
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
public class KaptchaTextCreator extends DefaultTextCreator
|
|
||||||
{
|
|
||||||
private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(",");
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getText()
|
|
||||||
{
|
|
||||||
Integer result = 0;
|
|
||||||
Random random = new Random();
|
|
||||||
int x = random.nextInt(10);
|
|
||||||
int y = random.nextInt(10);
|
|
||||||
StringBuilder suChinese = new StringBuilder();
|
|
||||||
int randomoperands = (int) Math.round(Math.random() * 2);
|
|
||||||
if (randomoperands == 0)
|
|
||||||
{
|
|
||||||
result = x * y;
|
|
||||||
suChinese.append(CNUMBERS[x]);
|
|
||||||
suChinese.append("*");
|
|
||||||
suChinese.append(CNUMBERS[y]);
|
|
||||||
}
|
|
||||||
else if (randomoperands == 1)
|
|
||||||
{
|
|
||||||
if (!(x == 0) && y % x == 0)
|
|
||||||
{
|
|
||||||
result = y / x;
|
|
||||||
suChinese.append(CNUMBERS[y]);
|
|
||||||
suChinese.append("/");
|
|
||||||
suChinese.append(CNUMBERS[x]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = x + y;
|
|
||||||
suChinese.append(CNUMBERS[x]);
|
|
||||||
suChinese.append("+");
|
|
||||||
suChinese.append(CNUMBERS[y]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (randomoperands == 2)
|
|
||||||
{
|
|
||||||
if (x >= y)
|
|
||||||
{
|
|
||||||
result = x - y;
|
|
||||||
suChinese.append(CNUMBERS[x]);
|
|
||||||
suChinese.append("-");
|
|
||||||
suChinese.append(CNUMBERS[y]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = y - x;
|
|
||||||
suChinese.append(CNUMBERS[y]);
|
|
||||||
suChinese.append("-");
|
|
||||||
suChinese.append(CNUMBERS[x]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = x + y;
|
|
||||||
suChinese.append(CNUMBERS[x]);
|
|
||||||
suChinese.append("+");
|
|
||||||
suChinese.append(CNUMBERS[y]);
|
|
||||||
}
|
|
||||||
suChinese.append("=?@" + result);
|
|
||||||
return suChinese.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -97,7 +97,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
|||||||
// 过滤请求
|
// 过滤请求
|
||||||
.authorizeRequests()
|
.authorizeRequests()
|
||||||
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
|
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
|
||||||
.antMatchers("/login", "/register", "/captchaImage").anonymous()
|
// .antMatchers("/login", "/register", "/captchaImage").anonymous()
|
||||||
|
.antMatchers("/login", "/register", "/captcha/get", "/captcha/check").permitAll()
|
||||||
.antMatchers(
|
.antMatchers(
|
||||||
HttpMethod.GET,
|
HttpMethod.GET,
|
||||||
"/",
|
"/",
|
||||||
@ -110,6 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
|||||||
.antMatchers("/swagger-ui.html").anonymous()
|
.antMatchers("/swagger-ui.html").anonymous()
|
||||||
.antMatchers("/swagger-resources/**").anonymous()
|
.antMatchers("/swagger-resources/**").anonymous()
|
||||||
.antMatchers("/webjars/**").anonymous()
|
.antMatchers("/webjars/**").anonymous()
|
||||||
|
.antMatchers("/login", "/captcha/get", "/captcha/check").permitAll()
|
||||||
.antMatchers("/*/api-docs").anonymous()
|
.antMatchers("/*/api-docs").anonymous()
|
||||||
.antMatchers("/druid/**").anonymous()
|
.antMatchers("/druid/**").anonymous()
|
||||||
// 除上面外的所有请求全部需要鉴权认证
|
// 除上面外的所有请求全部需要鉴权认证
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
package com.ruoyi.framework.web.service;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
import com.anji.captcha.service.CaptchaCacheService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义redis验证码缓存实现类
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
public class CaptchaRedisService implements CaptchaCacheService
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void set(String key, String value, long expiresInSeconds)
|
||||||
|
{
|
||||||
|
stringRedisTemplate.opsForValue().set(key, value, expiresInSeconds, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean exists(String key)
|
||||||
|
{
|
||||||
|
return stringRedisTemplate.hasKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delete(String key)
|
||||||
|
{
|
||||||
|
stringRedisTemplate.delete(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String get(String key)
|
||||||
|
{
|
||||||
|
return stringRedisTemplate.opsForValue().get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long increment(String key, long val)
|
||||||
|
{
|
||||||
|
return stringRedisTemplate.opsForValue().increment(key, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String type()
|
||||||
|
{
|
||||||
|
return "redis";
|
||||||
|
}
|
||||||
|
}
|
@ -2,27 +2,27 @@ package com.ruoyi.framework.web.service;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.BadCredentialsException;
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import com.anji.captcha.model.common.ResponseModel;
|
||||||
|
import com.anji.captcha.model.vo.CaptchaVO;
|
||||||
|
import com.anji.captcha.service.CaptchaService;
|
||||||
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.constant.Constants;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.core.redis.RedisCache;
|
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import com.ruoyi.common.exception.user.CaptchaException;
|
import com.ruoyi.common.exception.user.CaptchaException;
|
||||||
import com.ruoyi.common.exception.user.CaptchaExpireException;
|
|
||||||
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
|
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.common.utils.MessageUtils;
|
import com.ruoyi.common.utils.MessageUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
|
||||||
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
import com.ruoyi.common.utils.ip.IpUtils;
|
import com.ruoyi.common.utils.ip.IpUtils;
|
||||||
import com.ruoyi.framework.manager.AsyncManager;
|
import com.ruoyi.framework.manager.AsyncManager;
|
||||||
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
||||||
import com.ruoyi.system.service.ISysConfigService;
|
|
||||||
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.system.service.ISysUserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,14 +39,12 @@ public class SysLoginService
|
|||||||
@Resource
|
@Resource
|
||||||
private AuthenticationManager authenticationManager;
|
private AuthenticationManager authenticationManager;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RedisCache redisCache;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysUserService userService;
|
private ISysUserService userService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysConfigService configService;
|
@Lazy
|
||||||
|
private CaptchaService captchaService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录验证
|
* 登录验证
|
||||||
@ -54,16 +52,18 @@ public class SysLoginService
|
|||||||
* @param username 用户名
|
* @param username 用户名
|
||||||
* @param password 密码
|
* @param password 密码
|
||||||
* @param code 验证码
|
* @param code 验证码
|
||||||
* @param uuid 唯一标识
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public String login(String username, String password, String code, String uuid)
|
public String login(String username, String password, String code)
|
||||||
{
|
{
|
||||||
boolean captchaOnOff = configService.selectCaptchaOnOff();
|
CaptchaVO captchaVO = new CaptchaVO();
|
||||||
// 验证码开关
|
captchaVO.setCaptchaVerification(code);
|
||||||
if (captchaOnOff)
|
ResponseModel response = captchaService.verification(captchaVO);
|
||||||
|
if (!response.isSuccess())
|
||||||
{
|
{
|
||||||
validateCaptcha(username, code, uuid);
|
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,
|
||||||
|
MessageUtils.message("user.jcaptcha.error")));
|
||||||
|
throw new CaptchaException();
|
||||||
}
|
}
|
||||||
// 用户验证
|
// 用户验证
|
||||||
Authentication authentication = null;
|
Authentication authentication = null;
|
||||||
@ -88,36 +88,10 @@ public class SysLoginService
|
|||||||
}
|
}
|
||||||
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
||||||
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
||||||
recordLoginInfo(loginUser.getUserId());
|
|
||||||
// 生成token
|
// 生成token
|
||||||
return tokenService.createToken(loginUser);
|
return tokenService.createToken(loginUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验验证码
|
|
||||||
*
|
|
||||||
* @param username 用户名
|
|
||||||
* @param code 验证码
|
|
||||||
* @param uuid 唯一标识
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public void validateCaptcha(String username, String code, String uuid)
|
|
||||||
{
|
|
||||||
String verifyKey = Constants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
|
|
||||||
String captcha = redisCache.getCacheObject(verifyKey);
|
|
||||||
redisCache.deleteObject(verifyKey);
|
|
||||||
if (captcha == null)
|
|
||||||
{
|
|
||||||
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
|
|
||||||
throw new CaptchaExpireException();
|
|
||||||
}
|
|
||||||
if (!code.equalsIgnoreCase(captcha))
|
|
||||||
{
|
|
||||||
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
|
|
||||||
throw new CaptchaException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 记录登录信息
|
* 记录登录信息
|
||||||
*
|
*
|
||||||
|
@ -41,12 +41,12 @@ public class SysRegisterService
|
|||||||
{
|
{
|
||||||
String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
|
String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
|
||||||
|
|
||||||
boolean captchaOnOff = configService.selectCaptchaOnOff();
|
// boolean captchaOnOff = configService.selectCaptchaOnOff();
|
||||||
// 验证码开关
|
// // 验证码开关
|
||||||
if (captchaOnOff)
|
// if (captchaOnOff)
|
||||||
{
|
// {
|
||||||
validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
|
// validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (StringUtils.isEmpty(username))
|
if (StringUtils.isEmpty(username))
|
||||||
{
|
{
|
||||||
@ -56,16 +56,16 @@ public class SysRegisterService
|
|||||||
{
|
{
|
||||||
msg = "用户密码不能为空";
|
msg = "用户密码不能为空";
|
||||||
}
|
}
|
||||||
else if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|
// else if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|
||||||
|| username.length() > UserConstants.USERNAME_MAX_LENGTH)
|
// || username.length() > UserConstants.USERNAME_MAX_LENGTH)
|
||||||
{
|
// {
|
||||||
msg = "账户长度必须在2到20个字符之间";
|
// msg = "账户长度必须在2到20个字符之间";
|
||||||
}
|
// }
|
||||||
else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|
// else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|
||||||
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH)
|
// || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
|
||||||
{
|
// {
|
||||||
msg = "密码长度必须在5到20个字符之间";
|
// msg = "密码长度必须在5到20个字符之间";
|
||||||
}
|
// }
|
||||||
else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username)))
|
else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username)))
|
||||||
{
|
{
|
||||||
msg = "保存用户'" + username + "'失败,注册账号已存在";
|
msg = "保存用户'" + username + "'失败,注册账号已存在";
|
||||||
@ -89,7 +89,6 @@ public class SysRegisterService
|
|||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验验证码
|
* 校验验证码
|
||||||
*
|
*
|
||||||
|
@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="dictType != null and dictType != ''">#{dictType},</if>
|
<if test="dictType != null and dictType != ''">#{dictType},</if>
|
||||||
<if test="sort != null">#{sort},</if>
|
<if test="sort != null">#{sort},</if>
|
||||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||||
sysdate()
|
current_timestamp
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
dict_type = #{dictType},
|
dict_type = #{dictType},
|
||||||
sort = #{sort},
|
sort = #{sort},
|
||||||
update_by = #{updateBy},
|
update_by = #{updateBy},
|
||||||
update_time = sysdate()
|
update_time = current_timestamp
|
||||||
</set>
|
</set>
|
||||||
where column_id = #{columnId}
|
where column_id = #{columnId}
|
||||||
</update>
|
</update>
|
||||||
|
@ -164,7 +164,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="genPath != null and genPath != ''">#{genPath},</if>
|
<if test="genPath != null and genPath != ''">#{genPath},</if>
|
||||||
<if test="remark != null and remark != ''">#{remark},</if>
|
<if test="remark != null and remark != ''">#{remark},</if>
|
||||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||||
sysdate()
|
current_timestamp
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@ -187,7 +187,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="options != null and options != ''">options = #{options},</if>
|
<if test="options != null and options != ''">options = #{options},</if>
|
||||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
update_time = sysdate()
|
update_time = current_timestamp
|
||||||
</set>
|
</set>
|
||||||
where table_id = #{tableId}
|
where table_id = #{tableId}
|
||||||
</update>
|
</update>
|
||||||
|
@ -78,14 +78,24 @@
|
|||||||
v-hasPermi="['${moduleName}:${businessName}:add']"
|
v-hasPermi="['${moduleName}:${businessName}:add']"
|
||||||
>新增</el-button>
|
>新增</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="info"
|
||||||
|
plain
|
||||||
|
icon="el-icon-sort"
|
||||||
|
size="mini"
|
||||||
|
@click="toggleExpandAll"
|
||||||
|
>展开/折叠</el-button>
|
||||||
|
</el-col>
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
|
v-if="refreshTable"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
:data="${businessName}List"
|
:data="${businessName}List"
|
||||||
row-key="${treeCode}"
|
row-key="${treeCode}"
|
||||||
default-expand-all
|
:default-expand-all="isExpandAll"
|
||||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||||
>
|
>
|
||||||
#foreach($column in $columns)
|
#foreach($column in $columns)
|
||||||
@ -293,6 +303,10 @@ export default {
|
|||||||
title: "",
|
title: "",
|
||||||
// 是否显示弹出层
|
// 是否显示弹出层
|
||||||
open: false,
|
open: false,
|
||||||
|
// 是否展开,默认全部展开
|
||||||
|
isExpandAll: true,
|
||||||
|
// 重新渲染表格状态
|
||||||
|
refreshTable: true,
|
||||||
#foreach ($column in $columns)
|
#foreach ($column in $columns)
|
||||||
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
|
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
|
||||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||||
@ -423,6 +437,14 @@ export default {
|
|||||||
this.open = true;
|
this.open = true;
|
||||||
this.title = "添加${functionName}";
|
this.title = "添加${functionName}";
|
||||||
},
|
},
|
||||||
|
/** 展开/折叠操作 */
|
||||||
|
toggleExpandAll() {
|
||||||
|
this.refreshTable = false;
|
||||||
|
this.isExpandAll = !this.isExpandAll;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.refreshTable = true;
|
||||||
|
});
|
||||||
|
},
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
handleUpdate(row) {
|
handleUpdate(row) {
|
||||||
this.reset();
|
this.reset();
|
||||||
|
@ -76,14 +76,23 @@
|
|||||||
v-hasPermi="['${moduleName}:${businessName}:add']"
|
v-hasPermi="['${moduleName}:${businessName}:add']"
|
||||||
>新增</el-button>
|
>新增</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="info"
|
||||||
|
plain
|
||||||
|
icon="Sort"
|
||||||
|
@click="toggleExpandAll"
|
||||||
|
>展开/折叠</el-button>
|
||||||
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
|
v-if="refreshTable"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
:data="${businessName}List"
|
:data="${businessName}List"
|
||||||
row-key="${treeCode}"
|
row-key="${treeCode}"
|
||||||
default-expand-all
|
:default-expand-all="isExpandAll"
|
||||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||||
>
|
>
|
||||||
#foreach($column in $columns)
|
#foreach($column in $columns)
|
||||||
@ -165,11 +174,13 @@
|
|||||||
#set($dictType=$column.dictType)
|
#set($dictType=$column.dictType)
|
||||||
#if("" != $treeParentCode && $column.javaField == $treeParentCode)
|
#if("" != $treeParentCode && $column.javaField == $treeParentCode)
|
||||||
<el-form-item label="${comment}" prop="${treeParentCode}">
|
<el-form-item label="${comment}" prop="${treeParentCode}">
|
||||||
<tree-select
|
<el-tree-select
|
||||||
v-model:value="form.${treeParentCode}"
|
v-model="form.${treeParentCode}"
|
||||||
:options="${businessName}Options"
|
:data="${businessName}Options"
|
||||||
:objMap="{ value: '${treeCode}', label: '${treeName}', children: 'children' }"
|
:props="{ value: '${treeCode}', label: '${treeName}', children: 'children' }"
|
||||||
|
value-key="${treeCode}"
|
||||||
placeholder="请选择${comment}"
|
placeholder="请选择${comment}"
|
||||||
|
check-strictly
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
#elseif($column.htmlType == "input")
|
#elseif($column.htmlType == "input")
|
||||||
@ -283,6 +294,8 @@ const open = ref(false);
|
|||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
const title = ref("");
|
const title = ref("");
|
||||||
|
const isExpandAll = ref(true);
|
||||||
|
const refreshTable = ref(true);
|
||||||
#foreach ($column in $columns)
|
#foreach ($column in $columns)
|
||||||
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
|
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
|
||||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||||
@ -343,8 +356,8 @@ function getList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 查询${functionName}下拉树结构 */
|
/** 查询${functionName}下拉树结构 */
|
||||||
async function getTreeselect() {
|
function getTreeselect() {
|
||||||
await list${BusinessName}().then(response => {
|
list${BusinessName}().then(response => {
|
||||||
${businessName}Options.value = [];
|
${businessName}Options.value = [];
|
||||||
const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] };
|
const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] };
|
||||||
data.children = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}");
|
data.children = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}");
|
||||||
@ -393,9 +406,9 @@ function resetQuery() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
async function handleAdd(row) {
|
function handleAdd(row) {
|
||||||
reset();
|
reset();
|
||||||
await getTreeselect();
|
getTreeselect();
|
||||||
if (row != null && row.${treeCode}) {
|
if (row != null && row.${treeCode}) {
|
||||||
form.value.${treeParentCode} = row.${treeCode};
|
form.value.${treeParentCode} = row.${treeCode};
|
||||||
} else {
|
} else {
|
||||||
@ -405,6 +418,15 @@ async function handleAdd(row) {
|
|||||||
title.value = "添加${functionName}";
|
title.value = "添加${functionName}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 展开/折叠操作 */
|
||||||
|
function toggleExpandAll() {
|
||||||
|
refreshTable.value = false;
|
||||||
|
isExpandAll.value = !isExpandAll.value;
|
||||||
|
nextTick(() => {
|
||||||
|
refreshTable.value = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
async function handleUpdate(row) {
|
async function handleUpdate(row) {
|
||||||
reset();
|
reset();
|
||||||
|
@ -15,6 +15,7 @@ import com.ruoyi.common.constant.ScheduleConstants;
|
|||||||
import com.ruoyi.common.exception.job.TaskException;
|
import com.ruoyi.common.exception.job.TaskException;
|
||||||
import com.ruoyi.common.exception.job.TaskException.Code;
|
import com.ruoyi.common.exception.job.TaskException.Code;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
import com.ruoyi.quartz.domain.SysJob;
|
import com.ruoyi.quartz.domain.SysJob;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -127,6 +128,7 @@ public class ScheduleUtils
|
|||||||
{
|
{
|
||||||
return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR);
|
return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR);
|
||||||
}
|
}
|
||||||
return true;
|
Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]);
|
||||||
|
return StringUtils.containsAnyIgnoreCase(obj.getClass().getPackage().getName(), Constants.JOB_WHITELIST_STR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
|
<if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
|
||||||
<if test="status != null and status != ''">#{status},</if>
|
<if test="status != null and status != ''">#{status},</if>
|
||||||
<if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
|
<if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
|
||||||
sysdate()
|
current_timestamp
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="status !=null">status = #{status},</if>
|
<if test="status !=null">status = #{status},</if>
|
||||||
<if test="remark != null and remark != ''">remark = #{remark},</if>
|
<if test="remark != null and remark != ''">remark = #{remark},</if>
|
||||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||||
update_time = sysdate()
|
update_time = current_timestamp
|
||||||
</set>
|
</set>
|
||||||
where job_id = #{jobId}
|
where job_id = #{jobId}
|
||||||
</update>
|
</update>
|
||||||
@ -104,7 +104,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="status != null and status != ''">#{status},</if>
|
<if test="status != null and status != ''">#{status},</if>
|
||||||
<if test="remark != null and remark != ''">#{remark},</if>
|
<if test="remark != null and remark != ''">#{remark},</if>
|
||||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||||
sysdate()
|
current_timestamp
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
@ -0,0 +1,89 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 森林覆盖率
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/20 14:06
|
||||||
|
*/
|
||||||
|
public class AorestCoverageVO extends SysBaseEntity {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String particularYear;
|
||||||
|
|
||||||
|
private String region;
|
||||||
|
|
||||||
|
private String regionEn;
|
||||||
|
|
||||||
|
private Double protectedLands;
|
||||||
|
|
||||||
|
private Double nonProtectedLands;
|
||||||
|
|
||||||
|
private Double mountain;
|
||||||
|
|
||||||
|
private Double nonMountain;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParticularYear() {
|
||||||
|
return particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticularYear(String particularYear) {
|
||||||
|
this.particularYear = particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegion() {
|
||||||
|
return region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegion(String region) {
|
||||||
|
this.region = region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegionEn() {
|
||||||
|
return regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegionEn(String regionEn) {
|
||||||
|
this.regionEn = regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getProtectedLands() {
|
||||||
|
return protectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProtectedLands(Double protectedLands) {
|
||||||
|
this.protectedLands = protectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getNonProtectedLands() {
|
||||||
|
return nonProtectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNonProtectedLands(Double nonProtectedLands) {
|
||||||
|
this.nonProtectedLands = nonProtectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getMountain() {
|
||||||
|
return mountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMountain(Double mountain) {
|
||||||
|
this.mountain = mountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getNonMountain() {
|
||||||
|
return nonMountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNonMountain(Double nonMountain) {
|
||||||
|
this.nonMountain = nonMountain;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/19 14:50
|
||||||
|
*/
|
||||||
|
public class AustraliaMiddleEastVO extends SysBaseEntity
|
||||||
|
{
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String yearMonth;
|
||||||
|
|
||||||
|
private String month;
|
||||||
|
|
||||||
|
private Double sstAnomalyIndex;
|
||||||
|
|
||||||
|
private Double temperatureAnomolies;
|
||||||
|
|
||||||
|
private Double precipitationAnomolies;
|
||||||
|
|
||||||
|
private Double vaiAnomolies;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getYearMonth() {
|
||||||
|
return yearMonth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYearMonth(String yearMonth) {
|
||||||
|
this.yearMonth = yearMonth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getSstAnomalyIndex() {
|
||||||
|
return sstAnomalyIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSstAnomalyIndex(Double sstAnomalyIndex) {
|
||||||
|
this.sstAnomalyIndex = sstAnomalyIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getTemperatureAnomolies() {
|
||||||
|
return temperatureAnomolies;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemperatureAnomolies(Double temperatureAnomolies) {
|
||||||
|
this.temperatureAnomolies = temperatureAnomolies;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getPrecipitationAnomolies() {
|
||||||
|
return precipitationAnomolies;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrecipitationAnomolies(Double precipitationAnomolies) {
|
||||||
|
this.precipitationAnomolies = precipitationAnomolies;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getVaiAnomolies() {
|
||||||
|
return vaiAnomolies;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVaiAnomolies(Double vaiAnomolies) {
|
||||||
|
this.vaiAnomolies = vaiAnomolies;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMonth() {
|
||||||
|
return month;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMonth(String month) {
|
||||||
|
this.month = month;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/6/10 10:04
|
||||||
|
*/
|
||||||
|
public class CastsVo
|
||||||
|
{
|
||||||
|
private String date;
|
||||||
|
|
||||||
|
private String week;
|
||||||
|
|
||||||
|
private String dayweather;
|
||||||
|
|
||||||
|
private String nightweather;
|
||||||
|
|
||||||
|
private String daytemp;
|
||||||
|
|
||||||
|
private String nighttemp;
|
||||||
|
|
||||||
|
private String daywind;
|
||||||
|
|
||||||
|
private String nightwind;
|
||||||
|
|
||||||
|
private String daypower;
|
||||||
|
|
||||||
|
private String nightpower;
|
||||||
|
|
||||||
|
public String getDate() {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDate(String date) {
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWeek() {
|
||||||
|
return week;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWeek(String week) {
|
||||||
|
this.week = week;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDayweather() {
|
||||||
|
return dayweather;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDayweather(String dayweather) {
|
||||||
|
this.dayweather = dayweather;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNightweather() {
|
||||||
|
return nightweather;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNightweather(String nightweather) {
|
||||||
|
this.nightweather = nightweather;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDaytemp() {
|
||||||
|
return daytemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDaytemp(String daytemp) {
|
||||||
|
this.daytemp = daytemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNighttemp() {
|
||||||
|
return nighttemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNighttemp(String nighttemp) {
|
||||||
|
this.nighttemp = nighttemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDaywind() {
|
||||||
|
return daywind;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDaywind(String daywind) {
|
||||||
|
this.daywind = daywind;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNightwind() {
|
||||||
|
return nightwind;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNightwind(String nightwind) {
|
||||||
|
this.nightwind = nightwind;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDaypower() {
|
||||||
|
return daypower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDaypower(String daypower) {
|
||||||
|
this.daypower = daypower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNightpower() {
|
||||||
|
return nightpower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNightpower(String nightpower) {
|
||||||
|
this.nightpower = nightpower;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/30 8:50
|
||||||
|
*/
|
||||||
|
//字典表
|
||||||
|
public class Dictionary extends SysBaseEntity
|
||||||
|
{
|
||||||
|
private String codingType;
|
||||||
|
|
||||||
|
private String codingType1;
|
||||||
|
|
||||||
|
private String codingType2;
|
||||||
|
|
||||||
|
private String dictionary;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String nameEn;
|
||||||
|
|
||||||
|
public String getCodingType1() {
|
||||||
|
return codingType1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodingType1(String codingType1) {
|
||||||
|
this.codingType1 = codingType1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodingType2() {
|
||||||
|
return codingType2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodingType2(String codingType2) {
|
||||||
|
this.codingType2 = codingType2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodingType() {
|
||||||
|
return codingType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodingType(String codingType) {
|
||||||
|
this.codingType = codingType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDictionary() {
|
||||||
|
return dictionary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDictionary(String dictionary) {
|
||||||
|
this.dictionary = dictionary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNameEn() {
|
||||||
|
return nameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNameEn(String nameEn) {
|
||||||
|
this.nameEn = nameEn;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/6/10 10:02
|
||||||
|
*/
|
||||||
|
public class ForecastVo {
|
||||||
|
|
||||||
|
private String city;
|
||||||
|
|
||||||
|
private String adcode;
|
||||||
|
|
||||||
|
private String province;
|
||||||
|
|
||||||
|
private String reporttime;
|
||||||
|
|
||||||
|
private List<CastsVo> casts;
|
||||||
|
|
||||||
|
public String getCity() {
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdcode() {
|
||||||
|
return adcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdcode(String adcode) {
|
||||||
|
this.adcode = adcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProvince() {
|
||||||
|
return province;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProvince(String province) {
|
||||||
|
this.province = province;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReporttime() {
|
||||||
|
return reporttime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReporttime(String reporttime) {
|
||||||
|
this.reporttime = reporttime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<CastsVo> getCasts() {
|
||||||
|
return casts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCasts(List<CastsVo> casts) {
|
||||||
|
this.casts = casts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全球各类型占比
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/20 14:07
|
||||||
|
*/
|
||||||
|
public class GlobalTypeVO extends SysBaseEntity {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
private String typeNameEn;
|
||||||
|
|
||||||
|
private Double areaProportion;
|
||||||
|
|
||||||
|
private Double area;
|
||||||
|
|
||||||
|
private int particularYear;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeName() {
|
||||||
|
return typeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypeName(String typeName) {
|
||||||
|
this.typeName = typeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeNameEn() {
|
||||||
|
return typeNameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypeNameEn(String typeNameEn) {
|
||||||
|
this.typeNameEn = typeNameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getAreaProportion() {
|
||||||
|
return areaProportion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAreaProportion(Double areaProportion) {
|
||||||
|
this.areaProportion = areaProportion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getArea() {
|
||||||
|
return area;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArea(Double area) {
|
||||||
|
this.area = area;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getParticularYear() {
|
||||||
|
return particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticularYear(int particularYear) {
|
||||||
|
this.particularYear = particularYear;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/6/10 9:57
|
||||||
|
*/
|
||||||
|
public class LivesVo
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 省份名
|
||||||
|
*/
|
||||||
|
private String province;
|
||||||
|
/**
|
||||||
|
* 城市名
|
||||||
|
*/
|
||||||
|
private String city;
|
||||||
|
/**
|
||||||
|
* 区域编码
|
||||||
|
*/
|
||||||
|
private String adcode;
|
||||||
|
/**
|
||||||
|
*天气现象
|
||||||
|
*/
|
||||||
|
private String weather;
|
||||||
|
|
||||||
|
private String temperature;
|
||||||
|
|
||||||
|
private String winddirection;
|
||||||
|
|
||||||
|
private String windpower;
|
||||||
|
|
||||||
|
private String humidity;
|
||||||
|
|
||||||
|
private LocalDateTime reporttime;
|
||||||
|
|
||||||
|
public String getProvince() {
|
||||||
|
return province;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProvince(String province) {
|
||||||
|
this.province = province;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCity() {
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdcode() {
|
||||||
|
return adcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdcode(String adcode) {
|
||||||
|
this.adcode = adcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWeather() {
|
||||||
|
return weather;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWeather(String weather) {
|
||||||
|
this.weather = weather;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTemperature() {
|
||||||
|
return temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemperature(String temperature) {
|
||||||
|
this.temperature = temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWinddirection() {
|
||||||
|
return winddirection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWinddirection(String winddirection) {
|
||||||
|
this.winddirection = winddirection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWindpower() {
|
||||||
|
return windpower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWindpower(String windpower) {
|
||||||
|
this.windpower = windpower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHumidity() {
|
||||||
|
return humidity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHumidity(String humidity) {
|
||||||
|
this.humidity = humidity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getReporttime() {
|
||||||
|
return reporttime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReporttime(LocalDateTime reporttime) {
|
||||||
|
this.reporttime = reporttime;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**+
|
||||||
|
* 海面温度监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/20 14:08
|
||||||
|
*/
|
||||||
|
public class OceanTemperatureVO extends SysBaseEntity
|
||||||
|
{
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private Integer ninoPhenomenon;
|
||||||
|
|
||||||
|
private Integer laNina;
|
||||||
|
|
||||||
|
private LocalDate startDate;
|
||||||
|
|
||||||
|
private LocalDate endDate;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getNinoPhenomenon() {
|
||||||
|
return ninoPhenomenon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNinoPhenomenon(Integer ninoPhenomenon) {
|
||||||
|
this.ninoPhenomenon = ninoPhenomenon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getLaNina() {
|
||||||
|
return laNina;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLaNina(Integer laNina) {
|
||||||
|
this.laNina = laNina;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getStartDate() {
|
||||||
|
return startDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartDate(LocalDate startDate) {
|
||||||
|
this.startDate = startDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getEndDate() {
|
||||||
|
return endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEndDate(LocalDate endDate) {
|
||||||
|
this.endDate = endDate;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,127 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/19 16:53
|
||||||
|
*/
|
||||||
|
public class RegionVGIVO implements Serializable {
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String region;
|
||||||
|
|
||||||
|
private String regionEn;
|
||||||
|
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
private String typeNameEn;
|
||||||
|
|
||||||
|
private Double forest;
|
||||||
|
|
||||||
|
private Double grassland;
|
||||||
|
|
||||||
|
private String particularYear;
|
||||||
|
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
private LocalDateTime createdTime;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegion() {
|
||||||
|
return region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegion(String region) {
|
||||||
|
this.region = region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegionEn() {
|
||||||
|
return regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegionEn(String regionEn) {
|
||||||
|
this.regionEn = regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeName() {
|
||||||
|
return typeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypeName(String typeName) {
|
||||||
|
this.typeName = typeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeNameEn() {
|
||||||
|
return typeNameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypeNameEn(String typeNameEn) {
|
||||||
|
this.typeNameEn = typeNameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getForest() {
|
||||||
|
return forest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setForest(Double forest) {
|
||||||
|
this.forest = forest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getGrassland() {
|
||||||
|
return grassland;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGrassland(Double grassland) {
|
||||||
|
this.grassland = grassland;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParticularYear() {
|
||||||
|
return particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticularYear(String particularYear) {
|
||||||
|
this.particularYear = particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreatedBy() {
|
||||||
|
return createdBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedBy(String createdBy) {
|
||||||
|
this.createdBy = createdBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedTime() {
|
||||||
|
return createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedTime(LocalDateTime createdTime) {
|
||||||
|
this.createdTime = createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "RegionVGIVO{" +
|
||||||
|
"id='" + id + '\'' +
|
||||||
|
", region='" + region + '\'' +
|
||||||
|
", regionEn='" + regionEn + '\'' +
|
||||||
|
", typeName='" + typeName + '\'' +
|
||||||
|
", typeNameEn='" + typeNameEn + '\'' +
|
||||||
|
", forest=" + forest +
|
||||||
|
", grassland=" + grassland +
|
||||||
|
", particularYear=" + particularYear +
|
||||||
|
", createdBy='" + createdBy + '\'' +
|
||||||
|
", createdTime=" + createdTime +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区域生态系统
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/20 14:09
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class RegionalSystemVO extends SysBaseEntity{
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String region;
|
||||||
|
|
||||||
|
private String regionEn;
|
||||||
|
|
||||||
|
private String typeConversion;
|
||||||
|
|
||||||
|
private String typeconversionEn;
|
||||||
|
|
||||||
|
private Double proportionOfChangedAreas;
|
||||||
|
|
||||||
|
private String particularYear;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegion() {
|
||||||
|
return region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegion(String region) {
|
||||||
|
this.region = region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegionEn() {
|
||||||
|
return regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegionEn(String regionEn) {
|
||||||
|
this.regionEn = regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeConversion() {
|
||||||
|
return typeConversion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypeConversion(String typeConversion) {
|
||||||
|
this.typeConversion = typeConversion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeconversionEn() {
|
||||||
|
return typeconversionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypeconversionEn(String typeconversionEn) {
|
||||||
|
this.typeconversionEn = typeconversionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getProportionOfChangedAreas() {
|
||||||
|
return proportionOfChangedAreas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProportionOfChangedAreas(Double proportionOfChangedAreas) {
|
||||||
|
this.proportionOfChangedAreas = proportionOfChangedAreas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParticularYear() {
|
||||||
|
return particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticularYear(String particularYear) {
|
||||||
|
this.particularYear = particularYear;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entity基类
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
public class SysBaseEntity implements Serializable
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 创建者 */
|
||||||
|
private String createBy;
|
||||||
|
|
||||||
|
/** 创建时间 */
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/** 更新者 */
|
||||||
|
private String updateBy;
|
||||||
|
|
||||||
|
/** 更新时间 */
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/** 请求参数 */
|
||||||
|
private Map<String, Object> params;
|
||||||
|
|
||||||
|
public String getCreateBy()
|
||||||
|
{
|
||||||
|
return createBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreateBy(String createBy)
|
||||||
|
{
|
||||||
|
this.createBy = createBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreateTime() {
|
||||||
|
return createTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreateTime(LocalDateTime createTime) {
|
||||||
|
this.createTime = createTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUpdateBy()
|
||||||
|
{
|
||||||
|
return updateBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdateBy(String updateBy)
|
||||||
|
{
|
||||||
|
this.updateBy = updateBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getUpdateTime() {
|
||||||
|
return updateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdateTime(LocalDateTime updateTime) {
|
||||||
|
this.updateTime = updateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemark()
|
||||||
|
{
|
||||||
|
return remark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemark(String remark)
|
||||||
|
{
|
||||||
|
this.remark = remark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> getParams()
|
||||||
|
{
|
||||||
|
if (params == null)
|
||||||
|
{
|
||||||
|
params = new HashMap<>();
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParams(Map<String, Object> params)
|
||||||
|
{
|
||||||
|
this.params = params;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,158 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 专题图实体类
|
||||||
|
* @Author: taco chen
|
||||||
|
* @Date: 2022/5/20 14:09
|
||||||
|
*/
|
||||||
|
public class ThematicMapDomain extends SysBaseEntity {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String pictureCode;
|
||||||
|
|
||||||
|
private String pictureTypeOne;
|
||||||
|
|
||||||
|
private String pictureTypeTwo;
|
||||||
|
|
||||||
|
private String pictureZh;
|
||||||
|
|
||||||
|
private String pictureEn;
|
||||||
|
|
||||||
|
private String pictureName;
|
||||||
|
|
||||||
|
private String pictureType;
|
||||||
|
|
||||||
|
private LocalDateTime pictureTime;
|
||||||
|
|
||||||
|
private String picturePath;
|
||||||
|
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
private LocalDateTime createdTime;
|
||||||
|
|
||||||
|
public String getPictureCode() {
|
||||||
|
return pictureCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureCode(String pictureCode) {
|
||||||
|
this.pictureCode = pictureCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPictureTypeOne() {
|
||||||
|
return pictureTypeOne;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureTypeOne(String pictureTypeOne) {
|
||||||
|
this.pictureTypeOne = pictureTypeOne;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPictureTypeTwo() {
|
||||||
|
return pictureTypeTwo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureTypeTwo(String pictureTypeTwo) {
|
||||||
|
this.pictureTypeTwo = pictureTypeTwo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPictureZh() {
|
||||||
|
return pictureZh;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureZh(String pictureZh) {
|
||||||
|
this.pictureZh = pictureZh;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPictureEn() {
|
||||||
|
return pictureEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureEn(String pictureEn) {
|
||||||
|
this.pictureEn = pictureEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPictureName() {
|
||||||
|
return pictureName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureName(String pictureName) {
|
||||||
|
this.pictureName = pictureName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPictureType() {
|
||||||
|
return pictureType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureType(String pictureType) {
|
||||||
|
this.pictureType = pictureType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getPictureTime() {
|
||||||
|
return pictureTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPictureTime(LocalDateTime pictureTime) {
|
||||||
|
this.pictureTime = pictureTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPicturePath() {
|
||||||
|
return picturePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPicturePath(String picturePath) {
|
||||||
|
this.picturePath = picturePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemarks() {
|
||||||
|
return remarks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemarks(String remarks) {
|
||||||
|
this.remarks = remarks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreatedBy() {
|
||||||
|
return createdBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedBy(String createdBy) {
|
||||||
|
this.createdBy = createdBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedTime() {
|
||||||
|
return createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedTime(LocalDateTime createdTime) {
|
||||||
|
this.createdTime = createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ThematicMapDomain{" +
|
||||||
|
"id=" + id +
|
||||||
|
", pictureZh='" + pictureZh + '\'' +
|
||||||
|
", pictureEn='" + pictureEn + '\'' +
|
||||||
|
", pictureName='" + pictureName + '\'' +
|
||||||
|
", pictureType='" + pictureType + '\'' +
|
||||||
|
", pictureTime=" + pictureTime +
|
||||||
|
", picturePath='" + picturePath + '\'' +
|
||||||
|
", remarks='" + remarks + '\'' +
|
||||||
|
", createdBy='" + createdBy + '\'' +
|
||||||
|
", createdTime=" + createdTime +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/24 14:24
|
||||||
|
*/
|
||||||
|
public class UploadFile extends SysBaseEntity
|
||||||
|
{
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String fileId;
|
||||||
|
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
private String filePath;
|
||||||
|
|
||||||
|
private String fileSize;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileId() {
|
||||||
|
return fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileId(String fileId) {
|
||||||
|
this.fileId = fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName() {
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileName(String fileName) {
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFilePath() {
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFilePath(String filePath) {
|
||||||
|
this.filePath = filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileSize() {
|
||||||
|
return fileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileSize(String fileSize) {
|
||||||
|
this.fileSize = fileSize;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 城市监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/20 16:55
|
||||||
|
*/
|
||||||
|
public class UrbanVO extends SysBaseEntity{
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String particularYear;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String nameEn;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParticularYear() {
|
||||||
|
return particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticularYear(String particularYear) {
|
||||||
|
this.particularYear = particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNameEn() {
|
||||||
|
return nameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNameEn(String nameEn) {
|
||||||
|
this.nameEn = nameEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getUrbanArea() {
|
||||||
|
return urbanArea;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrbanArea(Double urbanArea) {
|
||||||
|
this.urbanArea = urbanArea;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Double urbanArea;
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平均植被覆盖度和净初级生产力
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/20 14:09
|
||||||
|
*/
|
||||||
|
public class VegetationCoverageVO extends SysBaseEntity
|
||||||
|
{
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String region;
|
||||||
|
|
||||||
|
private String regionEn;
|
||||||
|
|
||||||
|
private String particularYear;
|
||||||
|
|
||||||
|
private Double mountain;
|
||||||
|
|
||||||
|
private Double nonMountain;
|
||||||
|
|
||||||
|
private Double protectedLands;
|
||||||
|
|
||||||
|
private Double nonProtectedLands;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegion() {
|
||||||
|
return region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegion(String region) {
|
||||||
|
this.region = region;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegionEn() {
|
||||||
|
return regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegionEn(String regionEn) {
|
||||||
|
this.regionEn = regionEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParticularYear() {
|
||||||
|
return particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticularYear(String particularYear) {
|
||||||
|
this.particularYear = particularYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getMountain() {
|
||||||
|
return mountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMountain(Double mountain) {
|
||||||
|
this.mountain = mountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getNonMountain() {
|
||||||
|
return nonMountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNonMountain(Double nonMountain) {
|
||||||
|
this.nonMountain = nonMountain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getProtectedLands() {
|
||||||
|
return protectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProtectedLands(Double protectedLands) {
|
||||||
|
this.protectedLands = protectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getNonProtectedLands() {
|
||||||
|
return nonProtectedLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNonProtectedLands(Double nonProtectedLands) {
|
||||||
|
this.nonProtectedLands = nonProtectedLands;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,85 @@
|
|||||||
|
package com.ruoyi.system.domain_yada;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/6/10 9:53
|
||||||
|
*/
|
||||||
|
public class WeatherUtilsVO {
|
||||||
|
/**
|
||||||
|
* 接口返回状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 返回结果数量
|
||||||
|
*/
|
||||||
|
private String count;
|
||||||
|
|
||||||
|
private String info;
|
||||||
|
|
||||||
|
private String infocode;
|
||||||
|
/**
|
||||||
|
* 实时天气预报
|
||||||
|
*/
|
||||||
|
private List<LivesVo> lives;
|
||||||
|
/**
|
||||||
|
* 预报天气
|
||||||
|
*/
|
||||||
|
private List<ForecastVo> forecasts;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 预报天气
|
||||||
|
// */
|
||||||
|
// private String forecasts;
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCount() {
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCount(String count) {
|
||||||
|
this.count = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInfo(String info) {
|
||||||
|
this.info = info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfocode() {
|
||||||
|
return infocode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInfocode(String infocode) {
|
||||||
|
this.infocode = infocode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public List<ForecastVo> getForecasts() {
|
||||||
|
return forecasts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setForecasts(List<ForecastVo> forecasts) {
|
||||||
|
this.forecasts = forecasts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<LivesVo> getLives() {
|
||||||
|
return lives;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLives(List<LivesVo> lives) {
|
||||||
|
this.lives = lives;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AorestCoverageVO;
|
||||||
|
import com.ruoyi.system.domain_yada.Dictionary;
|
||||||
|
import com.ruoyi.system.domain_yada.UploadFile;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:17
|
||||||
|
*/
|
||||||
|
public interface AorestCoverageMapper {
|
||||||
|
|
||||||
|
List<AorestCoverageVO> selectAorestCoverage(/*@Param("region") String region,
|
||||||
|
@Param("particularYear") String particularYear*/);
|
||||||
|
|
||||||
|
Integer DelAorestCoverage(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoAorestCoverage(AorestCoverageVO eastVO);
|
||||||
|
|
||||||
|
Integer IntoUpload(UploadFile file);
|
||||||
|
|
||||||
|
List<UploadFile> selectUpload(@Param("fileId") String fileId,@Param("fileName") String fileName);
|
||||||
|
|
||||||
|
List<Dictionary> selectDic(@Param("codingType") String codingType,@Param("codingType1") String codingType1,
|
||||||
|
@Param("codingType2") String codingType2);
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 澳大利亚中东部地区
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:17
|
||||||
|
*/
|
||||||
|
public interface AustraliaMiddleEastMapper {
|
||||||
|
|
||||||
|
List<AustraliaMiddleEastVO> selectAustralia(@Param("yearMonth") String yearMonth,
|
||||||
|
@Param("month") String month);
|
||||||
|
|
||||||
|
Integer DelAustralia(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoAustralia(AustraliaMiddleEastVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.GlobalTypeVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:18
|
||||||
|
*/
|
||||||
|
public interface GlobalTypeMapper {
|
||||||
|
|
||||||
|
List<GlobalTypeVO> selectGlobalType(@Param("typeName") String typeName, @Param("particularYear") Integer particularYear);
|
||||||
|
|
||||||
|
Integer DelGlobalType(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoGlobalType(GlobalTypeVO typeVO);
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.OceanTemperatureVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:18
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public interface OceanTemperatureMapper {
|
||||||
|
|
||||||
|
List<OceanTemperatureVO> selectOcean(@Param("startDate") LocalDate startDate);
|
||||||
|
|
||||||
|
Integer DelOcean(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoOcean(OceanTemperatureVO eastVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.RegionVGIVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:17
|
||||||
|
*/
|
||||||
|
public interface RegionVGIMapper {
|
||||||
|
|
||||||
|
List<RegionVGIVO> selectRegion(/*@Param("typeName") String typeName,
|
||||||
|
@Param("particularYear") String particularYear*/);
|
||||||
|
|
||||||
|
Integer DelRegion(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoRegion(RegionVGIVO regionVGIVO);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.RegionalSystemVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:18
|
||||||
|
*/
|
||||||
|
public interface RegionalSystemMapper {
|
||||||
|
|
||||||
|
List<RegionalSystemVO> selectRegional(@Param("region") String region);
|
||||||
|
|
||||||
|
Integer DelRegional(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoRegional(RegionalSystemVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.ThematicMapDomain;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author taco chen
|
||||||
|
*/
|
||||||
|
public interface ThematicMapMapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有专题图
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ThematicMapDomain> selectAllThematicMap(@Param("pictureType") String pictureType,
|
||||||
|
@Param("pictureTypeOne") String pictureTypeOne,
|
||||||
|
@Param("pictureTypeTwo") String pictureTypeTwo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除专题图根据编号
|
||||||
|
* @param id 编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer deleteThematicMap(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存专题图
|
||||||
|
* @param thematicMapDomain
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer saveThematicMap(ThematicMapDomain thematicMapDomain);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.UrbanVO;
|
||||||
|
import com.ruoyi.system.domain_yada.VegetationCoverageVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:18
|
||||||
|
*/
|
||||||
|
public interface UrbanMapper {
|
||||||
|
|
||||||
|
List<UrbanVO> selectUrban(@Param("name") String name,
|
||||||
|
@Param("particularYear") String particularYear);
|
||||||
|
|
||||||
|
Integer DelUrban(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoUrban(UrbanVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.ruoyi.system.mapper_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.VegetationCoverageVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 15:17
|
||||||
|
*/
|
||||||
|
public interface VegetationCoverageMapper {
|
||||||
|
|
||||||
|
List<VegetationCoverageVO> selectVegetation(/*@Param("region") String region,
|
||||||
|
@Param("particularYear") String particularYear*/);
|
||||||
|
|
||||||
|
Integer DelVegetation(@Param("id") String id);
|
||||||
|
|
||||||
|
Integer IntoVegetation(VegetationCoverageVO eastVO);
|
||||||
|
}
|
@ -2,12 +2,15 @@ package com.ruoyi.system.service;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ruoyi.system.domain.SysConfig;
|
import com.ruoyi.system.domain.SysConfig;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 参数配置 服务层
|
* 参数配置 服务层
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
public interface ISysConfigService
|
public interface ISysConfigService
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -14,6 +14,7 @@ import com.ruoyi.system.service.ISysConfigService;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -25,10 +26,10 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class SysConfigServiceImpl implements ISysConfigService
|
public class SysConfigServiceImpl implements ISysConfigService
|
||||||
{
|
{
|
||||||
@Autowired
|
@Resource
|
||||||
private SysConfigMapper configMapper;
|
private SysConfigMapper configMapper;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private RedisCache redisCache;
|
private RedisCache redisCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.PageUtils;
|
||||||
|
import com.ruoyi.system.domain_yada.AorestCoverageVO;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.Dictionary;
|
||||||
|
import com.ruoyi.system.domain_yada.UploadFile;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 森林覆盖率
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:32
|
||||||
|
*/
|
||||||
|
public interface IAorestCoverageService {
|
||||||
|
|
||||||
|
public List<AorestCoverageVO> selectAorestCoverage(/*String region,String particularYear*/);
|
||||||
|
|
||||||
|
public Integer DelAorestCoverage(String id);
|
||||||
|
|
||||||
|
public Integer IntoAorestCoverage(AorestCoverageVO eastVO);
|
||||||
|
|
||||||
|
public Integer IntoUpload(UploadFile file);
|
||||||
|
|
||||||
|
public List<UploadFile> selectUpload(String fileId,String fileName);
|
||||||
|
|
||||||
|
List<Dictionary> selectDic(String codingType,String codingType1,
|
||||||
|
String codingType2);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 澳大利亚中东部地区
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:32
|
||||||
|
*/
|
||||||
|
public interface IAustraliaMiddleEastService
|
||||||
|
{
|
||||||
|
public List<AustraliaMiddleEastVO> selectAustralia(String yearMonth,String month);
|
||||||
|
|
||||||
|
public Integer DelAustralia(@Param("id") String id);
|
||||||
|
|
||||||
|
public Integer IntoAustralia(AustraliaMiddleEastVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.GlobalTypeVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全球各类型占比
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:37
|
||||||
|
*/
|
||||||
|
public interface IGlobalTypeService {
|
||||||
|
|
||||||
|
public List<GlobalTypeVO> selectGlobalType(String typeName, Integer particularYear);
|
||||||
|
|
||||||
|
public Integer DelGlobalType(String id);
|
||||||
|
|
||||||
|
public Integer IntoGlobalType(GlobalTypeVO typeVO);
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.OceanTemperatureVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 海面表面温度监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:38
|
||||||
|
*/
|
||||||
|
public interface IOceanTemperatureService {
|
||||||
|
|
||||||
|
public List<OceanTemperatureVO> selectOcean(LocalDate startDate);
|
||||||
|
|
||||||
|
public Integer DelOcean(@Param("id") String id);
|
||||||
|
|
||||||
|
public Integer IntoOcean(OceanTemperatureVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.RegionVGIVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:34
|
||||||
|
*/
|
||||||
|
public interface IRegionVGIService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<RegionVGIVO> selectRegion(/*String typeName,String particularYear*/);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Integer DelRegion(@Param("id") String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加
|
||||||
|
* @param eastVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Integer IntoRegion(RegionVGIVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.RegionalSystemVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区域生态系统
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:35
|
||||||
|
*/
|
||||||
|
public interface IRegionalSystemService {
|
||||||
|
|
||||||
|
public List<RegionalSystemVO> selectRegional(String region);
|
||||||
|
|
||||||
|
public Integer DelRegional(@Param("id") String id);
|
||||||
|
|
||||||
|
public Integer IntoRegional(RegionalSystemVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 专题报告
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:39
|
||||||
|
*/
|
||||||
|
public interface ISpecialReportService {
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.UrbanVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 城市监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:40
|
||||||
|
*/
|
||||||
|
public interface IUrbanService {
|
||||||
|
|
||||||
|
public List<UrbanVO> selectUrban(String name, String particularYear);
|
||||||
|
|
||||||
|
public Integer DelUrban(@Param("id") String id);
|
||||||
|
|
||||||
|
public Integer IntoUrban(UrbanVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.VegetationCoverageVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平均植被覆盖度和净初级生产力
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:34
|
||||||
|
*/
|
||||||
|
public interface IVegetationCoverageService {
|
||||||
|
|
||||||
|
public List<VegetationCoverageVO> selectVegetation(/*String region,String particularYear*/);
|
||||||
|
|
||||||
|
public Integer DelVegetation(String id);
|
||||||
|
|
||||||
|
public Integer IntoVegetation(VegetationCoverageVO eastVO);
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.ruoyi.system.service_yada;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.ThematicMapDomain;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 专题图服务
|
||||||
|
* @Author: taco chen
|
||||||
|
* @Date: 2022/5/11 11:40
|
||||||
|
*/
|
||||||
|
public interface ThematicMapService {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取全部专题图
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ThematicMapDomain> selectAll(String pictureType,String pictureTypeOne, String pictureTypeTwo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除专题图根据编号
|
||||||
|
* @param id 编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer deleteById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存专题图
|
||||||
|
* @param thematicMapDomain
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer save(ThematicMapDomain thematicMapDomain);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AorestCoverageVO;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.Dictionary;
|
||||||
|
import com.ruoyi.system.domain_yada.UploadFile;
|
||||||
|
import com.ruoyi.system.mapper_yada.AorestCoverageMapper;
|
||||||
|
import com.ruoyi.system.mapper_yada.AustraliaMiddleEastMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IAorestCoverageService;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 森林覆盖率
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:43
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AorestCoverageServiceimpl implements IAorestCoverageService {
|
||||||
|
@Resource
|
||||||
|
private AorestCoverageMapper coverageMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AorestCoverageVO> selectAorestCoverage(/*String region,String particularYear*/) {
|
||||||
|
return coverageMapper.selectAorestCoverage(/*region,particularYear*/);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelAorestCoverage(String id) {
|
||||||
|
return coverageMapper.DelAorestCoverage(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoAorestCoverage(AorestCoverageVO eastVO) {
|
||||||
|
return coverageMapper.IntoAorestCoverage(eastVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoUpload(UploadFile file) {
|
||||||
|
return coverageMapper.IntoUpload(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<UploadFile> selectUpload(String fileId, String fileName) {
|
||||||
|
return coverageMapper.selectUpload(fileId,fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Dictionary> selectDic(String codingType,String codingType1,
|
||||||
|
String codingType2) {
|
||||||
|
return coverageMapper.selectDic(codingType,codingType1,codingType2);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.mapper_yada.AustraliaMiddleEastMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IAustraliaMiddleEastService;
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 亚大综合监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:43
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AustraliaMiddleEastServiceimpl implements IAustraliaMiddleEastService
|
||||||
|
{
|
||||||
|
@Resource
|
||||||
|
private AustraliaMiddleEastMapper australiaMiddleEastMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AustraliaMiddleEastVO> selectAustralia(String yearMonth,String month)
|
||||||
|
{
|
||||||
|
return australiaMiddleEastMapper.selectAustralia(yearMonth,month);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelAustralia(String id) {
|
||||||
|
return australiaMiddleEastMapper.DelAustralia(id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoAustralia(AustraliaMiddleEastVO eastVO) {
|
||||||
|
return australiaMiddleEastMapper.IntoAustralia(eastVO);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.GlobalTypeVO;
|
||||||
|
import com.ruoyi.system.mapper_yada.AustraliaMiddleEastMapper;
|
||||||
|
import com.ruoyi.system.mapper_yada.GlobalTypeMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IGlobalTypeService;
|
||||||
|
import org.apache.commons.compress.archivers.dump.DumpArchiveEntry;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全球各类型占比
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:47
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class GlobalTypeServiceimpl implements IGlobalTypeService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private GlobalTypeMapper typeMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<GlobalTypeVO> selectGlobalType(String typeName, Integer particularYear) {
|
||||||
|
return typeMapper.selectGlobalType(typeName, particularYear);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelGlobalType(String id) {
|
||||||
|
return typeMapper.DelGlobalType(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoGlobalType(GlobalTypeVO typeVO) {
|
||||||
|
return typeMapper.IntoGlobalType(typeVO);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.OceanTemperatureVO;
|
||||||
|
import com.ruoyi.system.mapper_yada.AustraliaMiddleEastMapper;
|
||||||
|
import com.ruoyi.system.mapper_yada.OceanTemperatureMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IOceanTemperatureService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 森林监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:47
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class OceanTemperatureServiceimpl implements IOceanTemperatureService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private OceanTemperatureMapper oceanMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OceanTemperatureVO> selectOcean(LocalDate startDate) {
|
||||||
|
return oceanMapper.selectOcean(startDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelOcean(String id) {
|
||||||
|
return oceanMapper.DelOcean(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoOcean(OceanTemperatureVO eastVO) {
|
||||||
|
return oceanMapper.IntoOcean(eastVO);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.mapper_yada.RegionVGIMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IRegionVGIService;
|
||||||
|
import com.ruoyi.system.domain_yada.RegionVGIVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 大气质量监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:45
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class RegionVGIServiceimpl implements IRegionVGIService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RegionVGIMapper vgiMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<RegionVGIVO> selectRegion(/*String typeName,String particularYear*/) {
|
||||||
|
return vgiMapper.selectRegion(/*typeName,particularYear*/);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelRegion(String id) {
|
||||||
|
return vgiMapper.DelRegion(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoRegion(RegionVGIVO eastVO) {
|
||||||
|
return vgiMapper.IntoRegion(eastVO);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.RegionalSystemVO;
|
||||||
|
import com.ruoyi.system.mapper_yada.AustraliaMiddleEastMapper;
|
||||||
|
import com.ruoyi.system.mapper_yada.RegionalSystemMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IRegionalSystemService;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区域生态系统
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:46
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class RegionalSystemServiceimpl implements IRegionalSystemService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RegionalSystemMapper Regional;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<RegionalSystemVO> selectRegional(String region) {
|
||||||
|
return Regional.selectRegional(region);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelRegional(String id) {
|
||||||
|
return Regional.DelRegional(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoRegional(RegionalSystemVO eastVO) {
|
||||||
|
return Regional.IntoRegional(eastVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.service_yada.ISpecialReportService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 专题报告
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:48
|
||||||
|
*/
|
||||||
|
public class SpecialReportServiceimpl implements ISpecialReportService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.ThematicMapDomain;
|
||||||
|
import com.ruoyi.system.mapper_yada.ThematicMapMapper;
|
||||||
|
import com.ruoyi.system.service_yada.ThematicMapService;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 专题图服务
|
||||||
|
* @author : taco chen
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ThematicMapServiceImpl implements ThematicMapService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ThematicMapMapper thematicMapMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取全部专题图
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<ThematicMapDomain> selectAll(String pictureType,String pictureTypeOne, String pictureTypeTwo){
|
||||||
|
return thematicMapMapper.selectAllThematicMap(pictureType,pictureTypeOne,pictureTypeTwo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除专题图根据编号
|
||||||
|
* @param id 编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Integer deleteById(Long id){
|
||||||
|
return thematicMapMapper.deleteThematicMap(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存专题图
|
||||||
|
* @param thematicMapDomain
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Integer save(ThematicMapDomain thematicMapDomain){
|
||||||
|
return thematicMapMapper.saveThematicMap(thematicMapDomain);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.UrbanVO;
|
||||||
|
import com.ruoyi.system.mapper_yada.AorestCoverageMapper;
|
||||||
|
import com.ruoyi.system.mapper_yada.UrbanMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IUrbanService;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 城市监测
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:49
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class UrbanServiceimpl implements IUrbanService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UrbanMapper urbanMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
|
||||||
|
public List<UrbanVO> selectUrban(String name, String particularYear) {
|
||||||
|
return urbanMapper.selectUrban(name,particularYear);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelUrban(String id) {
|
||||||
|
return urbanMapper.DelUrban(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoUrban(UrbanVO eastVO) {
|
||||||
|
return urbanMapper.IntoUrban(eastVO);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.ruoyi.system.service_yada.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.system.domain_yada.AustraliaMiddleEastVO;
|
||||||
|
import com.ruoyi.system.domain_yada.VegetationCoverageVO;
|
||||||
|
import com.ruoyi.system.mapper_yada.AustraliaMiddleEastMapper;
|
||||||
|
import com.ruoyi.system.mapper_yada.VegetationCoverageMapper;
|
||||||
|
import com.ruoyi.system.service_yada.IVegetationCoverageService;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平均植被覆盖度和净初级生产力
|
||||||
|
* @Author: JinSheng Song
|
||||||
|
* @Date: 2022/5/11 11:45
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class VegetationCoverageServiceimpl implements IVegetationCoverageService {
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private VegetationCoverageMapper coverageMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<VegetationCoverageVO> selectVegetation(/*String region,String particularYear*/) {
|
||||||
|
return coverageMapper.selectVegetation(/*region,particularYear*/);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer DelVegetation(String id) {
|
||||||
|
return coverageMapper.DelVegetation(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer IntoVegetation(VegetationCoverageVO eastVO) {
|
||||||
|
return coverageMapper.IntoVegetation(eastVO);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,146 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ruoyi.system.mapper_yada.AorestCoverageMapper">
|
||||||
|
|
||||||
|
<resultMap id="RM_AorestCoverage" type="com.ruoyi.system.domain_yada.AorestCoverageVO">
|
||||||
|
<result property="id" column="id"/>
|
||||||
|
<result property="particularYear" column="particular_year"/>
|
||||||
|
<result property="region" column="region"/>
|
||||||
|
<result property="regionEn" column="region_en"/>
|
||||||
|
<result property="protectedLands" column="protected_lands"/>
|
||||||
|
<result property="nonProtectedLands" column="non_protected_lands"/>
|
||||||
|
<result property="mountain" column="mountain"/>
|
||||||
|
<result property="nonMountain" column="non_mountain"/>
|
||||||
|
<result property="createBy" column="created_by"/>
|
||||||
|
<result property="createTime" column="created_time"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="columns">
|
||||||
|
<![CDATA[
|
||||||
|
id,particular_year,region,region_en,protected_lands,non_protected_lands,mountain,non_mountain,created_by,created_time
|
||||||
|
]]>
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectAorestCoverage" resultMap="RM_AorestCoverage">
|
||||||
|
SELECT <include refid="columns"/> FROM forest_coverage
|
||||||
|
<!-- WHERE 1=1-->
|
||||||
|
<!-- <if test="particularYear!= null and particularYear !=''">-->
|
||||||
|
<!-- AND particular_year = #{particularYear}-->
|
||||||
|
<!-- </if>-->
|
||||||
|
<!-- <if test="region!= null and region !=''">-->
|
||||||
|
<!-- AND region = #{typeName}-->
|
||||||
|
<!-- </if>-->
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<delete id="DelAorestCoverage">
|
||||||
|
DELETE FROM forest_coverage
|
||||||
|
WHERE ID=#{id}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<insert id="IntoAorestCoverage">
|
||||||
|
<![CDATA[
|
||||||
|
INSERT INTO forest_coverage (
|
||||||
|
particular_year ,
|
||||||
|
region ,
|
||||||
|
region_en ,
|
||||||
|
protected_lands ,
|
||||||
|
non_protected_lands ,
|
||||||
|
mountain,
|
||||||
|
non_mountain,
|
||||||
|
created_by,
|
||||||
|
created_time
|
||||||
|
) VALUES (
|
||||||
|
#{particularYear,jdbcType=VARCHAR},
|
||||||
|
#{region,jdbcType=VARCHAR},
|
||||||
|
#{regionEn,jdbcType=VARCHAR},
|
||||||
|
#{protectedLands,jdbcType=DOUBLE},
|
||||||
|
#{nonProtectedLands,jdbcType=DOUBLE},
|
||||||
|
#{mountain,jdbcType=DOUBLE},
|
||||||
|
#{nonMountain,jdbcType=DOUBLE},
|
||||||
|
#{createBy,jdbcType=VARCHAR},
|
||||||
|
#{createTime,jdbcType=TIMESTAMP}
|
||||||
|
)
|
||||||
|
]]>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<resultMap id="RM_Upload" type="com.ruoyi.system.domain_yada.UploadFile">
|
||||||
|
<result property="id" column="id"/>
|
||||||
|
<result property="fileId" column="file_id"/>
|
||||||
|
<result property="fileName" column="file_name"/>
|
||||||
|
<result property="fileSize" column="file_size"/>
|
||||||
|
<result property="filePath" column="file_path"/>
|
||||||
|
<result property="createBy" column="created_by"/>
|
||||||
|
<result property="createTime" column="created_time"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<insert id="IntoUpload">
|
||||||
|
<![CDATA[
|
||||||
|
INSERT INTO sys_file_info (
|
||||||
|
id ,
|
||||||
|
file_id ,
|
||||||
|
file_name ,
|
||||||
|
file_size ,
|
||||||
|
file_path ,
|
||||||
|
created_by,
|
||||||
|
created_time
|
||||||
|
) VALUES (
|
||||||
|
#{id,jdbcType=VARCHAR},
|
||||||
|
#{fileId,jdbcType=VARCHAR},
|
||||||
|
#{fileName,jdbcType=VARCHAR},
|
||||||
|
#{fileSize,jdbcType=VARCHAR},
|
||||||
|
#{filePath,jdbcType=VARCHAR},
|
||||||
|
#{createBy,jdbcType=VARCHAR},
|
||||||
|
#{createTime,jdbcType=TIMESTAMP}
|
||||||
|
)
|
||||||
|
]]>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<select id="selectUpload" resultMap="RM_Upload">
|
||||||
|
SELECT file_id,file_name,file_size,file_path,created_by,created_time FROM sys_file_info
|
||||||
|
WHERE 1=1
|
||||||
|
<if test="fileId!= null and fileId !=''">
|
||||||
|
AND fileId = #{fileId}
|
||||||
|
</if>
|
||||||
|
<if test="fileName!= null and fileName !=''">
|
||||||
|
AND file_name = #{fileName}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<resultMap id="RM_Dictionary" type="com.ruoyi.system.domain_yada.Dictionary">
|
||||||
|
<result property="codingType" column="coding_type"/>
|
||||||
|
<result property="codingType1" column="codingType1"/>
|
||||||
|
<result property="codingType2" column="codingType2"/>
|
||||||
|
<result property="dictionary" column="dictionary"/>
|
||||||
|
<result property="name" column="name"/>
|
||||||
|
<result property="nameEn" column="name_en"/>
|
||||||
|
<result property="createBy" column="created_by"/>
|
||||||
|
<result property="createTime" column="created_time"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="columnsdic">
|
||||||
|
<![CDATA[
|
||||||
|
coding_type,dictionary,name,name_En,created_by,created_time
|
||||||
|
]]>
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectDic" resultMap="RM_Dictionary">
|
||||||
|
select <include refid="columnsdic"/> from dictionary
|
||||||
|
where dictionary in
|
||||||
|
(SELECT A.dictionary FROM dictionary a
|
||||||
|
join (select dictionary from dictionary
|
||||||
|
where 1=1
|
||||||
|
<if test="codingType!= null and codingType !=''">
|
||||||
|
AND coding_type = #{codingType}
|
||||||
|
</if>
|
||||||
|
<if test="codingType1!= null and codingType1 !=''">
|
||||||
|
AND dictionary = #{codingType1}
|
||||||
|
</if>
|
||||||
|
) b on a.coding_type=b.dictionary
|
||||||
|
<if test="codingType2!= null and codingType2 !=''">
|
||||||
|
AND a.dictionary = #{codingType2}
|
||||||
|
</if>
|
||||||
|
)
|
||||||
|
</select>
|
||||||
|
</mapper>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user