工业测量
This commit is contained in:
commit
92b683a7a4
33
.gitignore
vendored
Normal file
33
.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
.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
BIN
.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
Binary file not shown.
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
2
.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.3/apache-maven-3.8.3-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
mvnw
vendored
Normal file
316
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
mvnw.cmd
vendored
Normal file
188
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%
|
171
pom.xml
Normal file
171
pom.xml
Normal file
@ -0,0 +1,171 @@
|
||||
<?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.6.2</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.xkrs</groupId>
|
||||
<artifactId>WordAndExcel</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>WordAndExcel</name>
|
||||
<description>Demo project for Spring Boot</description>
|
||||
|
||||
<properties>
|
||||
<yauaa.version>5.19</yauaa.version>
|
||||
<hibernate-validator.version>6.1.5.Final</hibernate-validator.version>
|
||||
<hibernate-spatial.version>5.4.20.Final</hibernate-spatial.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>11</java.version>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<fastjson.version>1.2.76</fastjson.version>
|
||||
<springfox-swagger-ui.version>2.10.5</springfox-swagger-ui.version>
|
||||
<springfox-swagger2.version>2.10.5</springfox-swagger2.version>
|
||||
<httpclient.version>4.5.2</httpclient.version>
|
||||
<hutool-all.version>4.4.3</hutool-all.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-logging</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-log4j2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-pool2</artifactId>
|
||||
</dependency>
|
||||
<!--<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>-->
|
||||
<dependency>
|
||||
<groupId> mysql</groupId>
|
||||
<artifactId> mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>nl.basjes.parse.useragent</groupId>
|
||||
<artifactId>yauaa</artifactId>
|
||||
<version>${yauaa.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate.validator</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
<version>${hibernate-validator.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate</groupId>
|
||||
<artifactId>hibernate-spatial</artifactId>
|
||||
<version>${hibernate-spatial.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>${fastjson.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--swagger的依赖-->
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
<version>${springfox-swagger-ui.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger2</artifactId>
|
||||
<version>${springfox-swagger2.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.json-lib</groupId>
|
||||
<artifactId>json-lib</artifactId>
|
||||
<version>2.4</version>
|
||||
<classifier>jdk15</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>${httpclient.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>${hutool-all.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
<version>2.2.0-beta1</version>
|
||||
</dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.jxls</groupId>
|
||||
<artifactId>jxls-core</artifactId>
|
||||
<version>1.0.3</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/servlet-api -->
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat</groupId>
|
||||
<artifactId>servlet-api</artifactId>
|
||||
<version>6.0.35</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
13
src/main/java/com/xkrs/WordAndExcelApplication.java
Normal file
13
src/main/java/com/xkrs/WordAndExcelApplication.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.xkrs;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class WordAndExcelApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(WordAndExcelApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
23
src/main/java/com/xkrs/config/CorsConfig.java
Normal file
23
src/main/java/com/xkrs/config/CorsConfig.java
Normal file
@ -0,0 +1,23 @@
|
||||
package com.xkrs.config;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 系统跨域配置
|
||||
* @author tajochen
|
||||
*/
|
||||
@Configuration
|
||||
public class CorsConfig implements WebMvcConfigurer {
|
||||
|
||||
@Resource
|
||||
private CorsInterceptor corsInterceptor;
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(corsInterceptor);
|
||||
}
|
||||
}
|
29
src/main/java/com/xkrs/config/CorsInterceptor.java
Normal file
29
src/main/java/com/xkrs/config/CorsInterceptor.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.xkrs.config;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 跨域处理
|
||||
* @author tajochen
|
||||
*/
|
||||
@Component
|
||||
public class CorsInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
||||
|
||||
//添加跨域CORS
|
||||
response.setHeader("Access-Control-Allow-Origin", "*");
|
||||
response.setHeader("Access-Control-Allow-Credentials", "false");
|
||||
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
||||
response.setHeader("Access-Control-Allow-Headers", "Content-Type , Authorization," +
|
||||
"Accept,Origin,X-Requested-With");
|
||||
response.setHeader("Access-Control-Max-Age", "216000");
|
||||
response.setHeader("Content-Type","application/json;charset=UTF-8");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
37
src/main/java/com/xkrs/config/MvcConfig.java
Normal file
37
src/main/java/com/xkrs/config/MvcConfig.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.xkrs.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
* WebMVC配置
|
||||
* @author Tajochen
|
||||
*/
|
||||
@Configuration
|
||||
public class MvcConfig implements WebMvcConfigurer {
|
||||
|
||||
/**
|
||||
* 放行跨域请求
|
||||
*/
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
registry.addMapping("/**")
|
||||
.allowedOrigins("*")
|
||||
.allowedMethods("*")
|
||||
.allowedHeaders("*");
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时任务线程池更改,防止多个任务并行
|
||||
*/
|
||||
@Bean
|
||||
public TaskScheduler taskScheduler() {
|
||||
final ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
||||
scheduler.setPoolSize(5);
|
||||
return scheduler;
|
||||
}
|
||||
}
|
87
src/main/java/com/xkrs/controller/DataDictController.java
Normal file
87
src/main/java/com/xkrs/controller/DataDictController.java
Normal file
@ -0,0 +1,87 @@
|
||||
package com.xkrs.controller;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.qo.DataDictQo;
|
||||
import com.xkrs.model.qo.DataDictUpdateQo;
|
||||
import com.xkrs.service.DataDictService;
|
||||
import com.xkrs.util.Query;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:54
|
||||
*/
|
||||
@RestController
|
||||
public class DataDictController {
|
||||
|
||||
@Resource
|
||||
private DataDictService dataDictService;
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
@Resource
|
||||
private Query query;
|
||||
|
||||
/**
|
||||
* 添加字典变量数据
|
||||
* @param dataDictQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insertDataDict")
|
||||
public String insertDataDict(@RequestBody DataDictQo dataDictQo){
|
||||
return dataDictService.insertDataDict(dataDictQo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 动态多条件查询字典信息
|
||||
* @param dictChineseName
|
||||
* @param dictEnglishName
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectDataDict")
|
||||
public String selectDataDict(@RequestParam("dictChineseName") String dictChineseName,
|
||||
@RequestParam("dictEnglishName") String dictEnglishName){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
List<DataDict> dataDict = query.selectDataDict(dictChineseName, dictEnglishName);
|
||||
if(dataDict == null || dataDict.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时还没有该型号类型的字典信息!",locale);
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,dataDict,locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询字典信息,用于数据回显,方便进行修改操作
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectDataDictById")
|
||||
public String selectDataDictById(@RequestParam("id") Integer id){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
DataDict dataDict = dataDictDao.findById(id);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,dataDict,locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id修改字典信息
|
||||
* @param dataDictUpdateQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateDict")
|
||||
@Transactional(rollbackOn = Exception.class)
|
||||
public String updateDict(@RequestBody DataDictUpdateQo dataDictUpdateQo){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
dataDictDao.updateDict(dataDictUpdateQo.getId(),dataDictUpdateQo.getDictChineseName());
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功!",locale);
|
||||
}
|
||||
}
|
74
src/main/java/com/xkrs/controller/DataSourceController.java
Normal file
74
src/main/java/com/xkrs/controller/DataSourceController.java
Normal file
@ -0,0 +1,74 @@
|
||||
package com.xkrs.controller;
|
||||
|
||||
import com.xkrs.dao.DataSourceDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.qo.DataSourceQo;
|
||||
import com.xkrs.service.DataSourceService;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 17:05
|
||||
*/
|
||||
@RestController
|
||||
public class DataSourceController {
|
||||
|
||||
@Resource
|
||||
private DataSourceService dataSourceService;
|
||||
|
||||
@Resource
|
||||
private DataSourceDao dataSourceDao;
|
||||
|
||||
/**
|
||||
* 添加测量数据
|
||||
* @param dataSourceQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insertDataSource")
|
||||
public String insertDataSource(@RequestBody DataSourceQo dataSourceQo){
|
||||
return dataSourceService.insertDataSource(dataSourceQo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询某一产品的测量信息
|
||||
* @param dataModelNumber
|
||||
* @param dataBatchNumber
|
||||
* @param dataMachineCode
|
||||
* @param productNumber
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectDataSource")
|
||||
public String selectDataSource(@RequestParam("dataModelNumber") String dataModelNumber,
|
||||
@RequestParam("dataBatchNumber") String dataBatchNumber,
|
||||
@RequestParam("dataMachineCode") String dataMachineCode,
|
||||
@RequestParam("productNumber") String productNumber){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
List<Map<String, String>> maps = dataSourceDao.selectDataSource(dataModelNumber, dataBatchNumber, dataMachineCode, productNumber);
|
||||
if(maps == null || maps.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的测量信息!",locale);
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,maps,locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部的测量信息
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectAllSource")
|
||||
public String selectAllSource(){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
List<Map<String, String>> maps = dataSourceDao.selectAllSource();
|
||||
if(maps == null || maps.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的测量信息!",locale);
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,maps,locale);
|
||||
}
|
||||
}
|
73
src/main/java/com/xkrs/controller/FileController.java
Normal file
73
src/main/java/com/xkrs/controller/FileController.java
Normal file
@ -0,0 +1,73 @@
|
||||
package com.xkrs.controller;
|
||||
|
||||
import com.xkrs.dao.FileDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.qo.FileQo;
|
||||
import com.xkrs.model.qo.FileUpdateQo;
|
||||
import com.xkrs.service.FileService;
|
||||
import com.xkrs.util.ExcelUploadUtil;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.transaction.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 16:01
|
||||
*/
|
||||
@RestController
|
||||
public class FileController {
|
||||
|
||||
@Resource
|
||||
private FileService fileService;
|
||||
|
||||
@Resource
|
||||
private FileDao fileDao;
|
||||
|
||||
/**
|
||||
* 上传模板信息
|
||||
* @param fileQo
|
||||
* @param fileExcel
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@PostMapping("/insertFileExcel")
|
||||
public String insertFileExcel(FileQo fileQo, @RequestParam("fileExcel") MultipartFile fileExcel) throws IOException {
|
||||
return fileService.insertFileExcel(fileQo,fileExcel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改上传的模板信息
|
||||
* @param fileUpdateQo
|
||||
* @param fileExcel
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@PostMapping("/updateFileUploadPath")
|
||||
@Transactional(rollbackOn = Exception.class)
|
||||
public String updateFileUploadPath(FileUpdateQo fileUpdateQo,@RequestParam("fileExcel") MultipartFile fileExcel) throws IOException {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
String file = ExcelUploadUtil.memoryFile(fileExcel);
|
||||
fileDao.updateFileUploadPath(fileUpdateQo.getFileModelNumber(),fileUpdateQo.getFileBatchNumber(),fileUpdateQo.getFileMachineCode(),fileUpdateQo.getFileProductNumber(),file);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功!",locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/exportExcel")
|
||||
public String exportExcel(@RequestBody FileQo fileQo) throws IOException, InvalidFormatException {
|
||||
return fileService.exportExcel(fileQo);
|
||||
}
|
||||
}
|
48
src/main/java/com/xkrs/dao/DataDictDao.java
Normal file
48
src/main/java/com/xkrs/dao/DataDictDao.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.xkrs.dao;
|
||||
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:03
|
||||
*/
|
||||
@Component
|
||||
public interface DataDictDao extends JpaRepository<DataDict,Long>, JpaSpecificationExecutor<DataDict> {
|
||||
|
||||
/**
|
||||
* 通过中文名称查询字典表数据
|
||||
* @param chineseName
|
||||
* @return
|
||||
*/
|
||||
DataDict findByDictChineseName(String chineseName);
|
||||
|
||||
/**
|
||||
* 通过英文变量查询字典表的数据
|
||||
* @param englishName
|
||||
* @return
|
||||
*/
|
||||
DataDict findByDictEnglishName(String englishName);
|
||||
|
||||
/**
|
||||
* 根据id查询字典信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
DataDict findById(Integer id);
|
||||
|
||||
/**
|
||||
* 根据id修改字典的信息
|
||||
* @param id
|
||||
* @param chineseName
|
||||
*/
|
||||
@Modifying(clearAutomatically=true)
|
||||
@Query(value = "update data_dict set dict_chinese_name = ?2 where id = ?1",nativeQuery = true)
|
||||
void updateDict(Integer id, String chineseName);
|
||||
}
|
64
src/main/java/com/xkrs/dao/DataSourceDao.java
Normal file
64
src/main/java/com/xkrs/dao/DataSourceDao.java
Normal file
@ -0,0 +1,64 @@
|
||||
package com.xkrs.dao;
|
||||
|
||||
import com.xkrs.model.entity.DataSource;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:41
|
||||
*/
|
||||
@Component
|
||||
public interface DataSourceDao extends JpaRepository<DataSource,Long>, JpaSpecificationExecutor<DataSource> {
|
||||
|
||||
/**
|
||||
* 查询测量数据信息
|
||||
* @param dataModelNumber
|
||||
* @param dataBatchNumber
|
||||
* @param dataMachineCode
|
||||
* @param productNumber
|
||||
* @return
|
||||
*/
|
||||
@Query(value = "select ds.data_model_number datamodelnumber, ds.data_batch_number databatchnumber, " +
|
||||
"ds.data_machine_code datamachinecode, ds.product_number productnumber, dd.dict_chinese_name chinesename, " +
|
||||
"ds.data_name dataname,ds.numerical_value numericalvalue " +
|
||||
"from data_dict dd,data_source ds where ds.data_name = dd.dict_english_name and " +
|
||||
"ds.data_model_number = :dataModelNumber and ds.data_batch_number = :dataBatchNumber and " +
|
||||
"ds.data_machine_code = :dataMachineCode and ds.product_number = :productNumber",nativeQuery = true)
|
||||
List<Map<String,String>> selectDataSource(String dataModelNumber, String dataBatchNumber, String dataMachineCode, String productNumber);
|
||||
|
||||
/**
|
||||
* 查询测量信息变量和测量值,用于模板的导入
|
||||
* @param dataModelNumber
|
||||
* @param dataBatchNumber
|
||||
* @param dataMachineCode
|
||||
* @param productNumber
|
||||
* @return
|
||||
*/
|
||||
@Query(value = "select data_name dataname,numerical_value numericalvalue from data_source " +
|
||||
"where data_model_number = :dataModelNumber and data_batch_number = :dataBatchNumber " +
|
||||
"and data_machine_code = :dataMachineCode and product_number = :productNumber",nativeQuery = true)
|
||||
List<Map<String,String>> selectDataNameAndData(String dataModelNumber, String dataBatchNumber, String dataMachineCode, String productNumber);
|
||||
|
||||
/**
|
||||
* 通过英文变量查询信息
|
||||
* @param dataname
|
||||
* @return
|
||||
*/
|
||||
DataSource findByDataName(String dataname);
|
||||
|
||||
/**
|
||||
* 查询全部的测量信息
|
||||
* @return
|
||||
*/
|
||||
@Query(value = "select ds.data_model_number datamodelnumber, ds.data_batch_number databatchnumber, " +
|
||||
"ds.data_machine_code datamachinecode, ds.product_number productnumber, dd.dict_chinese_name chinesename," +
|
||||
"ds.data_name dataname,ds.numerical_value numericalvalue from data_dict dd,data_source ds " +
|
||||
"where ds.data_name = dd.dict_english_name",nativeQuery = true)
|
||||
List<Map<String,String>> selectAllSource();
|
||||
}
|
52
src/main/java/com/xkrs/dao/FileDao.java
Normal file
52
src/main/java/com/xkrs/dao/FileDao.java
Normal file
@ -0,0 +1,52 @@
|
||||
package com.xkrs.dao;
|
||||
|
||||
import com.xkrs.model.entity.FileEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:23
|
||||
*/
|
||||
@Component
|
||||
public interface FileDao extends JpaRepository<FileEntity,Long>, JpaSpecificationExecutor<FileEntity> {
|
||||
|
||||
/**
|
||||
* 根据机种号,批次号,机器号,产品号查询文件信息
|
||||
* @param fileModelNumber
|
||||
* @param fileBatchNumber
|
||||
* @param fileMachineCode
|
||||
* @param fileProductNumber
|
||||
* @return
|
||||
*/
|
||||
FileEntity findByFileModelNumberAndFileBatchNumberAndFileMachineCodeAndFileProductNumber(String fileModelNumber,String fileBatchNumber,String fileMachineCode,String fileProductNumber);
|
||||
|
||||
/**
|
||||
* 根据机种号,批次号,机器号,产品号修改模板上传信息
|
||||
* @param fileModelNumber
|
||||
* @param fileBatchNumber
|
||||
* @param fileMachineCode
|
||||
* @param fileProductNumber
|
||||
* @param fileUploadPath
|
||||
*/
|
||||
@Modifying(clearAutomatically=true)
|
||||
@Query(value = "update file set file_upload_path = ?5 where file_model_number = ?1 and file_batch_number = ?2 and file_machine_code = ?3 and file_product_number = ?4",nativeQuery = true)
|
||||
void updateFileUploadPath(String fileModelNumber,String fileBatchNumber,String fileMachineCode,String fileProductNumber,String fileUploadPath);
|
||||
|
||||
/**
|
||||
* 根据机种号,批次号,机器号,产品号修改模板下载信息
|
||||
* @param fileModelNumber
|
||||
* @param fileBatchNumber
|
||||
* @param fileMachineCode
|
||||
* @param fileProductNumber
|
||||
* @param fileDownloadPath
|
||||
*/
|
||||
@Modifying(clearAutomatically=true)
|
||||
@Query(value = "update file set file_download_path = ?5 where file_model_number = ?1 and file_batch_number = ?2 and file_machine_code = ?3 and file_product_number = ?4",nativeQuery = true)
|
||||
void updateFileDownloadPath(String fileModelNumber,String fileBatchNumber,String fileMachineCode,String fileProductNumber,String fileDownloadPath);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.xkrs.encapsulation;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 输出信息对象
|
||||
* @author tajochen
|
||||
* @param <T>
|
||||
*/
|
||||
public class EncapsulationObejct<T> implements Serializable {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*/
|
||||
int status;
|
||||
|
||||
/**
|
||||
* 提示信息
|
||||
*/
|
||||
String msg;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*/
|
||||
T data;
|
||||
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public T getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EncapsulationObejct{" +
|
||||
"status=" + status +
|
||||
", msg='" + msg + '\'' +
|
||||
", data=" + data +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package com.xkrs.encapsulation;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.support.ResourceBundleMessageSource;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.FieldError;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* 输出信息封装
|
||||
* @author tajochen
|
||||
*/
|
||||
@Component
|
||||
public class OutputEncapsulation {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(OutputEncapsulation.class);
|
||||
|
||||
/**
|
||||
* 读取多国语言文件
|
||||
* @return
|
||||
*/
|
||||
public static MessageSource messageSource() {
|
||||
Properties properties = new Properties();
|
||||
// 使用ClassLoader加载properties配置文件生成对应的输入流
|
||||
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
|
||||
// 使用properties对象加载输入流
|
||||
try {
|
||||
properties.load(in);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
|
||||
messageSource.setBasename("i18n/messages");
|
||||
messageSource.setDefaultEncoding("UTF-8");
|
||||
return messageSource;
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装输出数据
|
||||
* @param promptMessageEnum
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
public static String outputEncapsulationObject(PromptMessageEnum promptMessageEnum, Object obj, Locale locale) {
|
||||
|
||||
EncapsulationObejct encapsulationObejct = new EncapsulationObejct();
|
||||
encapsulationObejct.setStatus(promptMessageEnum.getCode());
|
||||
encapsulationObejct.setMsg(messageSource().getMessage(promptMessageEnum.getText(),null,locale));
|
||||
encapsulationObejct.setData(obj);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
// 忽略无法转换的对象
|
||||
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
|
||||
// 忽略json字符串中不识别的属性
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
objectMapper.registerModule(javaTimeModule);
|
||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
String strByEo = "";
|
||||
try {
|
||||
strByEo = objectMapper.writeValueAsString(encapsulationObejct);
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
logger.warn(e.toString());
|
||||
}
|
||||
return strByEo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出请求值检验错误信息
|
||||
* @param fieldErrors
|
||||
* @return
|
||||
*/
|
||||
public static String outputEncapsulationErrorList(List<FieldError> fieldErrors, Locale locale){
|
||||
List<String> errorMsg = new ArrayList<>();
|
||||
for (FieldError fieldError : fieldErrors) {
|
||||
String errMessage = fieldError.getDefaultMessage().subSequence(1,fieldError.getDefaultMessage().length()-1).toString();
|
||||
errorMsg.add(messageSource().getMessage(errMessage,null,locale));
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,errorMsg,locale);
|
||||
}
|
||||
}
|
65
src/main/java/com/xkrs/encapsulation/PromptMessageEnum.java
Normal file
65
src/main/java/com/xkrs/encapsulation/PromptMessageEnum.java
Normal file
@ -0,0 +1,65 @@
|
||||
package com.xkrs.encapsulation;
|
||||
|
||||
/**
|
||||
* 提示信息枚举
|
||||
* @author tajochen
|
||||
*/
|
||||
public enum PromptMessageEnum{
|
||||
|
||||
// 执行成功
|
||||
SUCCESS(0, "sys.message.success"),
|
||||
|
||||
|
||||
// 用户权限错误或非法操作: 1001-1999
|
||||
USER_NOT_LOGGED(1001, "sys.message.user.not_logged_in"),
|
||||
USER_LOGIN_ERROR(1002, "sys.message.user.login_error"),
|
||||
USER_ACCOUNT_FORBIDDEN(1003, "sys.message.user.account_forbidden"),
|
||||
USER_ACCOUNT_NOT_ACTIVATED(1004, "sys.message.user.account_not_activated"),
|
||||
USER_HAS_OVERTIME(1005, "sys.message.user.overtime"),
|
||||
USER_NO_PERMISSION(1006,"sys.message.user.no_permission"),
|
||||
USER_ALREADY_LOGGED(1007, "sys.message.user.already_logged"),
|
||||
|
||||
// 请求参数错误或非法:2001-2999
|
||||
PARAM_NULL(2001, "sys.message.param.null"),
|
||||
PARAM_ILLEGAL(2002, "sys.message.param.illegal"),
|
||||
|
||||
// 数据返回错误:3001-3999
|
||||
DATA_NONE(3001, "sys.message.data.none"),
|
||||
|
||||
DATA_WRONG(3002, "sys.message.data.wrong"),
|
||||
DATA_EXIT(3003,"sys.message.exit"),
|
||||
|
||||
// 操作失败:4001-4999
|
||||
PROCESS_FAIL(4001,"sys.message.process.fail"),
|
||||
PROCESS_OVERTIME(4002,"sys.message.process.overtime"),
|
||||
FILE_EXISTS(4003,"sys.message.file.exists"),
|
||||
FILE_WRITE_ERROR(4004,"sys.message.file.write.error"),
|
||||
FILE_READ_ERROR(4005,"sys.message.file.read.error"),
|
||||
|
||||
// 系统内部错误或异常:5001-5999
|
||||
SYSTEM_INNER_ERROR(5001,"sys.message.system.inner_error"),
|
||||
SYSTEM_ABNORMAL(5002,"sys.message.system.abnormal"),
|
||||
SYSTEM_BUSY(5003,"sys.message.system.busy"),
|
||||
SYSTEM_MAINTAIN(5004,"sys.message.system.maintain"),
|
||||
|
||||
// 数据库错误:6001-6999
|
||||
DATABASE_ERROR(6001,"sys.message.database.error");
|
||||
|
||||
private int code;
|
||||
|
||||
private String text;
|
||||
|
||||
private PromptMessageEnum(int code,String text) {
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return this.text;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
}
|
73
src/main/java/com/xkrs/model/entity/DataDict.java
Normal file
73
src/main/java/com/xkrs/model/entity/DataDict.java
Normal file
@ -0,0 +1,73 @@
|
||||
package com.xkrs.model.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 9:26
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "data_dict")
|
||||
public class DataDict {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "data_dict_seq_gen")
|
||||
@SequenceGenerator(name = "data_dict_seq_gen", sequenceName = "data_dict_id_seq",allocationSize = 1)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 中文名称
|
||||
*/
|
||||
@Column(length = 65, columnDefinition = "varchar(65)")
|
||||
private String dictChineseName;
|
||||
|
||||
/**
|
||||
* 英文变量值
|
||||
*/
|
||||
@Column(length = 85, columnDefinition = "varchar(85)")
|
||||
private String dictEnglishName;
|
||||
|
||||
public DataDict() {
|
||||
}
|
||||
|
||||
public DataDict(Integer id, String dictChineseName, String dictEnglishName) {
|
||||
this.id = id;
|
||||
this.dictChineseName = dictChineseName;
|
||||
this.dictEnglishName = dictEnglishName;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDictChineseName() {
|
||||
return dictChineseName;
|
||||
}
|
||||
|
||||
public void setDictChineseName(String dictChineseName) {
|
||||
this.dictChineseName = dictChineseName;
|
||||
}
|
||||
|
||||
public String getDictEnglishName() {
|
||||
return dictEnglishName;
|
||||
}
|
||||
|
||||
public void setDictEnglishName(String dictEnglishName) {
|
||||
this.dictEnglishName = dictEnglishName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DataDict{" +
|
||||
"id=" + id +
|
||||
", dictChineseName='" + dictChineseName + '\'' +
|
||||
", dictEnglishName='" + dictEnglishName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
137
src/main/java/com/xkrs/model/entity/DataSource.java
Normal file
137
src/main/java/com/xkrs/model/entity/DataSource.java
Normal file
@ -0,0 +1,137 @@
|
||||
package com.xkrs.model.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 14:08
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "data_source")
|
||||
public class DataSource {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "data_source_seq_gen")
|
||||
@SequenceGenerator(name = "data_source_seq_gen", sequenceName = "data_source_id_seq",allocationSize = 1)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String dataModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String dataBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String dataMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String productNumber;
|
||||
|
||||
/**
|
||||
* 变量值
|
||||
*/
|
||||
@Column(length = 85, columnDefinition = "varchar(85)")
|
||||
private String dataName;
|
||||
|
||||
/**
|
||||
* 监测的数值
|
||||
*/
|
||||
@Column(length = 85, columnDefinition = "varchar(85)")
|
||||
private String numericalValue;
|
||||
|
||||
public DataSource() {
|
||||
}
|
||||
|
||||
public DataSource(Integer id, String dataModelNumber, String dataBatchNumber, String dataMachineCode, String productNumber, String dataName, String numericalValue) {
|
||||
this.id = id;
|
||||
this.dataModelNumber = dataModelNumber;
|
||||
this.dataBatchNumber = dataBatchNumber;
|
||||
this.dataMachineCode = dataMachineCode;
|
||||
this.productNumber = productNumber;
|
||||
this.dataName = dataName;
|
||||
this.numericalValue = numericalValue;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDataModelNumber() {
|
||||
return dataModelNumber;
|
||||
}
|
||||
|
||||
public void setDataModelNumber(String dataModelNumber) {
|
||||
this.dataModelNumber = dataModelNumber;
|
||||
}
|
||||
|
||||
public String getDataBatchNumber() {
|
||||
return dataBatchNumber;
|
||||
}
|
||||
|
||||
public void setDataBatchNumber(String dataBatchNumber) {
|
||||
this.dataBatchNumber = dataBatchNumber;
|
||||
}
|
||||
|
||||
public String getDataMachineCode() {
|
||||
return dataMachineCode;
|
||||
}
|
||||
|
||||
public void setDataMachineCode(String dataMachineCode) {
|
||||
this.dataMachineCode = dataMachineCode;
|
||||
}
|
||||
|
||||
public String getProductNumber() {
|
||||
return productNumber;
|
||||
}
|
||||
|
||||
public void setProductNumber(String productNumber) {
|
||||
this.productNumber = productNumber;
|
||||
}
|
||||
|
||||
public String getDataName() {
|
||||
return dataName;
|
||||
}
|
||||
|
||||
public void setDataName(String dataName) {
|
||||
this.dataName = dataName;
|
||||
}
|
||||
|
||||
public String getNumericalValue() {
|
||||
return numericalValue;
|
||||
}
|
||||
|
||||
public void setNumericalValue(String numericalValue) {
|
||||
this.numericalValue = numericalValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DataSource{" +
|
||||
"id=" + id +
|
||||
", dataModelNumber='" + dataModelNumber + '\'' +
|
||||
", dataBatchNumber='" + dataBatchNumber + '\'' +
|
||||
", dataMachineCode='" + dataMachineCode + '\'' +
|
||||
", productNumber='" + productNumber + '\'' +
|
||||
", dataName='" + dataName + '\'' +
|
||||
", numericalValue='" + numericalValue + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
135
src/main/java/com/xkrs/model/entity/FileEntity.java
Normal file
135
src/main/java/com/xkrs/model/entity/FileEntity.java
Normal file
@ -0,0 +1,135 @@
|
||||
package com.xkrs.model.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:01
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "file")
|
||||
public class FileEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "file_seq_gen")
|
||||
@SequenceGenerator(name = "file_seq_gen", sequenceName = "file_id_seq",allocationSize = 1)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileProductNumber;
|
||||
|
||||
/**
|
||||
* 上传模板的路径
|
||||
*/
|
||||
private String fileUploadPath;
|
||||
|
||||
/**
|
||||
* 下载路径
|
||||
*/
|
||||
private String fileDownloadPath;
|
||||
|
||||
public FileEntity() {
|
||||
}
|
||||
|
||||
public FileEntity(Integer id, String fileModelNumber, String fileBatchNumber, String fileMachineCode, String fileProductNumber, String fileUploadPath, String fileDownloadPath) {
|
||||
this.id = id;
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
this.fileUploadPath = fileUploadPath;
|
||||
this.fileDownloadPath = fileDownloadPath;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFileModelNumber() {
|
||||
return fileModelNumber;
|
||||
}
|
||||
|
||||
public void setFileModelNumber(String fileModelNumber) {
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
}
|
||||
|
||||
public String getFileBatchNumber() {
|
||||
return fileBatchNumber;
|
||||
}
|
||||
|
||||
public void setFileBatchNumber(String fileBatchNumber) {
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
}
|
||||
|
||||
public String getFileMachineCode() {
|
||||
return fileMachineCode;
|
||||
}
|
||||
|
||||
public void setFileMachineCode(String fileMachineCode) {
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
}
|
||||
|
||||
public String getFileProductNumber() {
|
||||
return fileProductNumber;
|
||||
}
|
||||
|
||||
public void setFileProductNumber(String fileProductNumber) {
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
}
|
||||
|
||||
public String getFileUploadPath() {
|
||||
return fileUploadPath;
|
||||
}
|
||||
|
||||
public void setFileUploadPath(String fileUploadPath) {
|
||||
this.fileUploadPath = fileUploadPath;
|
||||
}
|
||||
|
||||
public String getFileDownloadPath() {
|
||||
return fileDownloadPath;
|
||||
}
|
||||
|
||||
public void setFileDownloadPath(String fileDownloadPath) {
|
||||
this.fileDownloadPath = fileDownloadPath;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "FileEntity{" +
|
||||
"id=" + id +
|
||||
", fileModelNumber='" + fileModelNumber + '\'' +
|
||||
", fileBatchNumber='" + fileBatchNumber + '\'' +
|
||||
", fileMachineCode='" + fileMachineCode + '\'' +
|
||||
", fileProductNumber='" + fileProductNumber + '\'' +
|
||||
", fileUploadPath='" + fileUploadPath + '\'' +
|
||||
", fileDownloadPath='" + fileDownloadPath + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
39
src/main/java/com/xkrs/model/qo/DataDictQo.java
Normal file
39
src/main/java/com/xkrs/model/qo/DataDictQo.java
Normal file
@ -0,0 +1,39 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.DataDictQoInsert;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:14
|
||||
*/
|
||||
public class DataDictQo {
|
||||
|
||||
/**
|
||||
* 中文名称
|
||||
*/
|
||||
@NotBlank(message = "{DataDict.dictChineseName.blank}",groups={DataDictQoInsert.class})
|
||||
private String dictChineseName;
|
||||
|
||||
/**
|
||||
* 英文变量值
|
||||
*/
|
||||
@NotBlank(message = "{DataDict.dictEnglishName.blank}",groups={DataDictQoInsert.class})
|
||||
private String dictEnglishName;
|
||||
|
||||
public String getDictChineseName() {
|
||||
return dictChineseName;
|
||||
}
|
||||
|
||||
public void setDictChineseName(String dictChineseName) {
|
||||
this.dictChineseName = dictChineseName;
|
||||
}
|
||||
|
||||
public String getDictEnglishName() {
|
||||
return dictEnglishName;
|
||||
}
|
||||
|
||||
public void setDictEnglishName(String dictEnglishName) {
|
||||
this.dictEnglishName = dictEnglishName;
|
||||
}
|
||||
}
|
37
src/main/java/com/xkrs/model/qo/DataDictUpdateQo.java
Normal file
37
src/main/java/com/xkrs/model/qo/DataDictUpdateQo.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.DataDictUpdateQoUpdate;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 11:23
|
||||
*/
|
||||
public class DataDictUpdateQo {
|
||||
|
||||
@NotBlank(message = "{DataDict.id.blank}",groups={DataDictUpdateQoUpdate.class})
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 中文名称
|
||||
*/
|
||||
@NotBlank(message = "{DataDict.dictChineseName.blank}",groups={DataDictUpdateQoUpdate.class})
|
||||
private String dictChineseName;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDictChineseName() {
|
||||
return dictChineseName;
|
||||
}
|
||||
|
||||
public void setDictChineseName(String dictChineseName) {
|
||||
this.dictChineseName = dictChineseName;
|
||||
}
|
||||
}
|
97
src/main/java/com/xkrs/model/qo/DataSourceQo.java
Normal file
97
src/main/java/com/xkrs/model/qo/DataSourceQo.java
Normal file
@ -0,0 +1,97 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.DataDictQoInsert;
|
||||
import com.xkrs.model.validation.DataSourceQoInsert;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:37
|
||||
*/
|
||||
public class DataSourceQo {
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataModelNumber.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataBatchNumber.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataMachineCode.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.productNumber.blank}",groups={DataSourceQoInsert.class})
|
||||
private String productNumber;
|
||||
|
||||
/**
|
||||
* 变量值
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataName.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataName;
|
||||
|
||||
/**
|
||||
* 监测的数值
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.numericalValue.blank}",groups={DataSourceQoInsert.class})
|
||||
private String numericalValue;
|
||||
|
||||
public String getDataModelNumber() {
|
||||
return dataModelNumber;
|
||||
}
|
||||
|
||||
public void setDataModelNumber(String dataModelNumber) {
|
||||
this.dataModelNumber = dataModelNumber;
|
||||
}
|
||||
|
||||
public String getDataBatchNumber() {
|
||||
return dataBatchNumber;
|
||||
}
|
||||
|
||||
public void setDataBatchNumber(String dataBatchNumber) {
|
||||
this.dataBatchNumber = dataBatchNumber;
|
||||
}
|
||||
|
||||
public String getDataMachineCode() {
|
||||
return dataMachineCode;
|
||||
}
|
||||
|
||||
public void setDataMachineCode(String dataMachineCode) {
|
||||
this.dataMachineCode = dataMachineCode;
|
||||
}
|
||||
|
||||
public String getProductNumber() {
|
||||
return productNumber;
|
||||
}
|
||||
|
||||
public void setProductNumber(String productNumber) {
|
||||
this.productNumber = productNumber;
|
||||
}
|
||||
|
||||
public String getDataName() {
|
||||
return dataName;
|
||||
}
|
||||
|
||||
public void setDataName(String dataName) {
|
||||
this.dataName = dataName;
|
||||
}
|
||||
|
||||
public String getNumericalValue() {
|
||||
return numericalValue;
|
||||
}
|
||||
|
||||
public void setNumericalValue(String numericalValue) {
|
||||
this.numericalValue = numericalValue;
|
||||
}
|
||||
}
|
81
src/main/java/com/xkrs/model/qo/FileQo.java
Normal file
81
src/main/java/com/xkrs/model/qo/FileQo.java
Normal file
@ -0,0 +1,81 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.FileQoInsert;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:26
|
||||
*/
|
||||
public class FileQo {
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileModelNumber.blank}",groups={FileQoInsert.class})
|
||||
private String fileModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileBatchNumber.blank}",groups={FileQoInsert.class})
|
||||
private String fileBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileMachineCode.blank}",groups={FileQoInsert.class})
|
||||
private String fileMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileProductNumber.blank}",groups={FileQoInsert.class})
|
||||
private String fileProductNumber;
|
||||
|
||||
/**
|
||||
* 上传模板的路径
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileUploadPath.blank}",groups={FileQoInsert.class})
|
||||
private String fileUploadPath;
|
||||
|
||||
public String getFileModelNumber() {
|
||||
return fileModelNumber;
|
||||
}
|
||||
|
||||
public void setFileModelNumber(String fileModelNumber) {
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
}
|
||||
|
||||
public String getFileBatchNumber() {
|
||||
return fileBatchNumber;
|
||||
}
|
||||
|
||||
public void setFileBatchNumber(String fileBatchNumber) {
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
}
|
||||
|
||||
public String getFileMachineCode() {
|
||||
return fileMachineCode;
|
||||
}
|
||||
|
||||
public void setFileMachineCode(String fileMachineCode) {
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
}
|
||||
|
||||
public String getFileProductNumber() {
|
||||
return fileProductNumber;
|
||||
}
|
||||
|
||||
public void setFileProductNumber(String fileProductNumber) {
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
}
|
||||
|
||||
public String getFileUploadPath() {
|
||||
return fileUploadPath;
|
||||
}
|
||||
|
||||
public void setFileUploadPath(String fileUploadPath) {
|
||||
this.fileUploadPath = fileUploadPath;
|
||||
}
|
||||
}
|
69
src/main/java/com/xkrs/model/qo/FileUpdateQo.java
Normal file
69
src/main/java/com/xkrs/model/qo/FileUpdateQo.java
Normal file
@ -0,0 +1,69 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
|
||||
import com.xkrs.model.validation.FileUpdateQoUpdate;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 16:20
|
||||
*/
|
||||
public class FileUpdateQo {
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileModelNumber.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileBatchNumber.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileMachineCode.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileProductNumber.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileProductNumber;
|
||||
|
||||
public String getFileModelNumber() {
|
||||
return fileModelNumber;
|
||||
}
|
||||
|
||||
public void setFileModelNumber(String fileModelNumber) {
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
}
|
||||
|
||||
public String getFileBatchNumber() {
|
||||
return fileBatchNumber;
|
||||
}
|
||||
|
||||
public void setFileBatchNumber(String fileBatchNumber) {
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
}
|
||||
|
||||
public String getFileMachineCode() {
|
||||
return fileMachineCode;
|
||||
}
|
||||
|
||||
public void setFileMachineCode(String fileMachineCode) {
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
}
|
||||
|
||||
public String getFileProductNumber() {
|
||||
return fileProductNumber;
|
||||
}
|
||||
|
||||
public void setFileProductNumber(String fileProductNumber) {
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:22
|
||||
*/
|
||||
public interface DataDictQoInsert {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 11:23
|
||||
*/
|
||||
public interface DataDictUpdateQoUpdate {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:39
|
||||
*/
|
||||
public interface DataSourceQoInsert {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:26
|
||||
*/
|
||||
public interface FileQoInsert {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 16:21
|
||||
*/
|
||||
public interface FileUpdateQoUpdate {
|
||||
}
|
18
src/main/java/com/xkrs/service/DataDictService.java
Normal file
18
src/main/java/com/xkrs/service/DataDictService.java
Normal file
@ -0,0 +1,18 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.qo.DataDictQo;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:10
|
||||
*/
|
||||
public interface DataDictService {
|
||||
|
||||
/**
|
||||
* 添加字典数据
|
||||
* @param dataDictQo
|
||||
* @return
|
||||
*/
|
||||
String insertDataDict(DataDictQo dataDictQo);
|
||||
}
|
17
src/main/java/com/xkrs/service/DataSourceService.java
Normal file
17
src/main/java/com/xkrs/service/DataSourceService.java
Normal file
@ -0,0 +1,17 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.qo.DataSourceQo;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:42
|
||||
*/
|
||||
public interface DataSourceService {
|
||||
|
||||
/**
|
||||
* 添加测量数据
|
||||
* @param dataSourceQo
|
||||
* @return
|
||||
*/
|
||||
String insertDataSource(DataSourceQo dataSourceQo);
|
||||
}
|
29
src/main/java/com/xkrs/service/FileService.java
Normal file
29
src/main/java/com/xkrs/service/FileService.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.qo.FileQo;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:24
|
||||
*/
|
||||
public interface FileService {
|
||||
|
||||
/**
|
||||
* 添加模板信息
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
String insertFileExcel(FileQo fileQo,MultipartFile fileExcel) throws IOException;
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
String exportExcel(FileQo fileQo) throws IOException, InvalidFormatException;
|
||||
}
|
50
src/main/java/com/xkrs/service/impl/DataDictServiceImpl.java
Normal file
50
src/main/java/com/xkrs/service/impl/DataDictServiceImpl.java
Normal file
@ -0,0 +1,50 @@
|
||||
package com.xkrs.service.impl;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.qo.DataDictQo;
|
||||
import com.xkrs.service.DataDictService;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:28
|
||||
*/
|
||||
@Service
|
||||
public class DataDictServiceImpl implements DataDictService {
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
/**
|
||||
* 添加字典数据
|
||||
* @param dataDictQo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String insertDataDict(DataDictQo dataDictQo) {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
//DataDict byDictChineseName = dataDictDao.findByDictChineseName(dataDictQo.getDictChineseName());
|
||||
/*DataDict chineseName = dataDictDao.findByModelNumberAndBatchNumberAndMachineCodeAndDictProductNumberAndDictChineseName(dataDictQo.getModelNumber(), dataDictQo.getBatchNumber(), dataDictQo.getMachineCode(), dataDictQo.getDictProductNumber(), dataDictQo.getDictChineseName());
|
||||
if(chineseName != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"该产品变量已存在,请勿重复添加!",locale);
|
||||
}*/
|
||||
//DataDict byDictEnglishName = dataDictDao.findByDictEnglishName(dataDictQo.getDictEnglishName());
|
||||
DataDict englishName = dataDictDao.findByDictEnglishName(dataDictQo.getDictEnglishName());
|
||||
if(englishName != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"该产品变量已存在,请勿重复添加!",locale);
|
||||
}
|
||||
DataDict dataDict = new DataDict();
|
||||
dataDict.setDictChineseName(dataDictQo.getDictChineseName());
|
||||
dataDict.setDictEnglishName(dataDictQo.getDictEnglishName());
|
||||
dataDictDao.save(dataDict);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"添加成功!",locale);
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.xkrs.service.impl;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.dao.DataSourceDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.entity.DataSource;
|
||||
import com.xkrs.model.qo.DataSourceQo;
|
||||
import com.xkrs.service.DataSourceService;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:43
|
||||
*/
|
||||
@Service
|
||||
public class DataSourceServiceImpl implements DataSourceService {
|
||||
|
||||
@Resource
|
||||
private DataSourceDao dataSourceDao;
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
/**
|
||||
* 添加测量数据
|
||||
* @param dataSourceQo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String insertDataSource(DataSourceQo dataSourceQo) {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
DataDict byDictEnglishName = dataDictDao.findByDictEnglishName(dataSourceQo.getDataName());
|
||||
if(byDictEnglishName == null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"不存在该字典类型!",locale);
|
||||
}
|
||||
/*DataSource byDataName = dataSourceDao.findByDataName(dataSourceQo.getDataName());
|
||||
if(byDataName != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"该字典类型数据已添加,请勿重复添加!",locale);
|
||||
}*/
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setDataModelNumber(dataSourceQo.getDataModelNumber());
|
||||
dataSource.setDataBatchNumber(dataSourceQo.getDataBatchNumber());
|
||||
dataSource.setDataMachineCode(dataSourceQo.getDataMachineCode());
|
||||
dataSource.setProductNumber(dataSourceQo.getProductNumber());
|
||||
dataSource.setDataName(dataSourceQo.getDataName());
|
||||
dataSource.setNumericalValue(dataSourceQo.getNumericalValue());
|
||||
dataSourceDao.save(dataSource);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"添加成功!",locale);
|
||||
}
|
||||
}
|
97
src/main/java/com/xkrs/service/impl/FileServiceImpl.java
Normal file
97
src/main/java/com/xkrs/service/impl/FileServiceImpl.java
Normal file
@ -0,0 +1,97 @@
|
||||
package com.xkrs.service.impl;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.dao.DataSourceDao;
|
||||
import com.xkrs.dao.FileDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.FileEntity;
|
||||
import com.xkrs.model.qo.FileQo;
|
||||
import com.xkrs.service.FileService;
|
||||
import com.xkrs.util.ExcelUploadUtil;
|
||||
import com.xkrs.util.ExportExcel;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.transaction.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:24
|
||||
*/
|
||||
@Service
|
||||
public class FileServiceImpl implements FileService {
|
||||
|
||||
@Resource
|
||||
private FileDao fileDao;
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
@Resource
|
||||
private DataSourceDao dataSourceDao;
|
||||
|
||||
/**
|
||||
* 添加模板信息
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String insertFileExcel(FileQo fileQo, MultipartFile fileExcel) throws IOException {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
FileEntity fileEntity = fileDao.findByFileModelNumberAndFileBatchNumberAndFileMachineCodeAndFileProductNumber(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber());
|
||||
if(fileEntity != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"已存在该产品的模板!",locale);
|
||||
}
|
||||
if(fileExcel == null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"模板不能为空!",locale);
|
||||
}
|
||||
String file = ExcelUploadUtil.memoryFile(fileExcel);
|
||||
FileEntity fileEntity1 = new FileEntity();
|
||||
fileEntity1.setFileModelNumber(fileQo.getFileModelNumber());
|
||||
fileEntity1.setFileBatchNumber(fileQo.getFileBatchNumber());
|
||||
fileEntity1.setFileMachineCode(fileQo.getFileMachineCode());
|
||||
fileEntity1.setFileProductNumber(fileQo.getFileProductNumber());
|
||||
fileEntity1.setFileUploadPath(file);
|
||||
|
||||
fileDao.save(fileEntity1);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"添加成功!",locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackOn = Exception.class)
|
||||
@Override
|
||||
public String exportExcel(FileQo fileQo) throws IOException, InvalidFormatException {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
FileEntity entity = fileDao.findByFileModelNumberAndFileBatchNumberAndFileMachineCodeAndFileProductNumber(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber());
|
||||
if(entity == null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的模板,请添加!",locale);
|
||||
}
|
||||
String fileUploadPath = entity.getFileUploadPath();
|
||||
List<Map<String, String>> maps = dataSourceDao.selectDataNameAndData(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber());
|
||||
if(maps == null || maps.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的信息!",locale);
|
||||
}
|
||||
Map<String,String> map = new HashMap<String,String>();
|
||||
for(Map<String,String> stringMap : maps){
|
||||
map.put(stringMap.get("dataname"),stringMap.get("numericalvalue"));
|
||||
}
|
||||
String fill = ExportExcel.exportToProveExcel(map,fileUploadPath);
|
||||
fileDao.updateFileDownloadPath(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber(),fill);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,fill,locale);
|
||||
}
|
||||
}
|
191
src/main/java/com/xkrs/util/ExcelUploadUtil.java
Normal file
191
src/main/java/com/xkrs/util/ExcelUploadUtil.java
Normal file
@ -0,0 +1,191 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author XinYi Song
|
||||
*/
|
||||
public class ExcelUploadUtil {
|
||||
|
||||
public static Logger log = LoggerFactory.getLogger(ExcelUploadUtil.class);
|
||||
|
||||
/**
|
||||
* 上传单张图片
|
||||
* @param fileExcel
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public static String memoryFile(MultipartFile fileExcel) throws IOException {
|
||||
//String uploadPath = "http://139.199.98.175:2088/wfTaskImage/";
|
||||
String uploadPath = "http://192.168.2.9:2088/";
|
||||
//获取原始文件名
|
||||
String originalFilename = fileExcel.getOriginalFilename();
|
||||
if (originalFilename != null && !"".equals(originalFilename)) {
|
||||
//找到 . 的位置
|
||||
int index = originalFilename.lastIndexOf(".");
|
||||
//根据 . 的位置进行分割,拿到文件后缀名
|
||||
String suffix = originalFilename.substring(index);
|
||||
//uuid生成新的文件名
|
||||
String newName = UUID.randomUUID().toString() + suffix;
|
||||
|
||||
//将图片保存到本地/usr/etc/images/Folder
|
||||
//File file = new File("E:/shoptest/");
|
||||
File file = new File("/home/sxy/server/industrial_measurement/excel/");
|
||||
if (!file.exists()) {
|
||||
file.mkdirs();
|
||||
}
|
||||
//String path = "E:/shoptest/" + newName;
|
||||
String path = "/home/sxy/server/industrial_measurement/excel/" + newName;
|
||||
String uploadsImage = uploadPath + newName;
|
||||
//实现上传
|
||||
fileExcel.transferTo(new File(path));
|
||||
|
||||
|
||||
return path;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以文件形式,批量上传图片
|
||||
* @param files
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
/*public static List<FireTaskPhoto> uploadImage(MultipartFile[] files, String fireCode) throws IOException {
|
||||
//String uploadPath = "http://139.199.98.175:2099/forestTaskImage/";
|
||||
String uploadPath = "http://118.24.27.47:2088/";
|
||||
String newName = "";
|
||||
String oldName = "";
|
||||
List<FireTaskPhoto> fireTaskPhotos = new ArrayList<>();
|
||||
for(MultipartFile file : files){
|
||||
//获取file图片名称
|
||||
oldName = file.getOriginalFilename();
|
||||
//找到 . 的位置
|
||||
int index = oldName.lastIndexOf(".");
|
||||
//根据 . 的位置进行分割,拿到文件后缀名
|
||||
String suffix = oldName.substring(index);
|
||||
//uuid生成新的文件名
|
||||
newName = UUID.randomUUID().toString() + suffix;
|
||||
//将图片保存到本地/usr/etc/images/Folder
|
||||
File file1 = new File("/home/sxy/server/fire_point/firePointImage/");
|
||||
//File file1 = new File("E:/file/work/image/");
|
||||
if (!file1.exists()) {
|
||||
file1.mkdirs();
|
||||
}
|
||||
String path = "/home/sxy/server/fire_point/firePointImage/" + newName;
|
||||
//String path = "E:/file/work/image/" + newName;
|
||||
String uploadPaths = "/firePointImage/" + newName;
|
||||
//实现上传
|
||||
file.transferTo(new File(path));
|
||||
FireTaskPhoto fireTaskPhoto = new FireTaskPhoto();
|
||||
fireTaskPhoto.setPhotoFireCode(fireCode);
|
||||
fireTaskPhoto.setTaskPhoto(uploadPaths);
|
||||
|
||||
fireTaskPhotos.add(fireTaskPhoto);
|
||||
}
|
||||
return fireTaskPhotos;
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 删除本地或服务器储存的图片
|
||||
* @param path
|
||||
* @return
|
||||
*/
|
||||
public static String delFile(String path){
|
||||
String resultInfo = null;
|
||||
int lastIndexOf = path.lastIndexOf("/");
|
||||
String imgPath = path.substring(lastIndexOf + 1,path.length());
|
||||
System.out.println(imgPath);
|
||||
imgPath = "/usr/local/etc/images/" + imgPath;
|
||||
// img_path = "/usr/etc/images/Folder/" + img_path;
|
||||
File file = new File(imgPath);
|
||||
if(file.exists()){
|
||||
if(file.delete()){
|
||||
resultInfo = "删除成功!";
|
||||
}else {
|
||||
resultInfo = "删除失败!";
|
||||
}
|
||||
}else {
|
||||
resultInfo = "文件不存在";
|
||||
}
|
||||
return resultInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过图片路径解析 ,上传保存
|
||||
* @param listImgSrc
|
||||
* @return
|
||||
*/
|
||||
public static List downloadImage(List<String> listImgSrc) {
|
||||
try {
|
||||
List list = new ArrayList();
|
||||
//开始时间
|
||||
Date beginDate = new Date();
|
||||
for (String url : listImgSrc) {
|
||||
//开始时间
|
||||
Date beginDate2 = new Date();
|
||||
String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
|
||||
URL uri = new URL(url);
|
||||
InputStream in = uri.openStream();
|
||||
//String pathUpload = "E:/img/" + imageName;
|
||||
String pathUpload = "/home/web/wf-fire-service/wfimage/" + imageName;
|
||||
FileOutputStream fo = new FileOutputStream(new File(pathUpload));
|
||||
byte[] buf = new byte[1024];
|
||||
int length = 0;
|
||||
log.info("-------开始下载:" + url);
|
||||
while ((length = in.read(buf, 0, buf.length)) != -1) {
|
||||
fo.write(buf, 0, length);
|
||||
}
|
||||
in.close();
|
||||
fo.close();
|
||||
list.add(imageName);
|
||||
log.info(imageName + "------下载完成");
|
||||
//结束时间
|
||||
Date overDate2 = new Date();
|
||||
double time = overDate2.getTime() - beginDate2.getTime();
|
||||
log.info("-----耗时:" + time / 1000 + "s");
|
||||
}
|
||||
Date overDate = new Date();
|
||||
double time = overDate.getTime() - beginDate.getTime();
|
||||
log.info("======总耗时:" + time / 1000 + "s");
|
||||
return list;
|
||||
} catch (Exception e) {
|
||||
log.info("++++++下载失败");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除本地文件夹图片
|
||||
* @param url
|
||||
*/
|
||||
public static void deleteImage(String url){
|
||||
File file=new File(url);
|
||||
//判断file是否是文件目录 若是返回TRUE
|
||||
if (file.isDirectory()){
|
||||
//name存储file文件夹中的文件名
|
||||
String[] name =file.list();
|
||||
for (int i=0; i<name.length; i++){
|
||||
//此时就可得到文件夹中的文件
|
||||
File f=new File(url, name[i]);
|
||||
//删除文件
|
||||
f.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
68
src/main/java/com/xkrs/util/ExportExcel.java
Normal file
68
src/main/java/com/xkrs/util/ExportExcel.java
Normal file
@ -0,0 +1,68 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import net.sf.jxls.transformer.XLSTransformer;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import java.io.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/17 8:56
|
||||
*/
|
||||
public class ExportExcel {
|
||||
|
||||
/**
|
||||
* 最简单的填充
|
||||
*
|
||||
* @since 2.1.1
|
||||
*/
|
||||
/*public static String simpleFill(Map<String, String> map,String templateFileName) {
|
||||
|
||||
|
||||
String s = System.currentTimeMillis() + ".xlsx";
|
||||
// 方案2 根据Map填充
|
||||
String fileName = "/usr/local/excel/" + s;
|
||||
//String fileName = "E:\\shoptest\\" + s;
|
||||
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
||||
|
||||
ExcelWriterBuilder write = EasyExcel.write(fileName);
|
||||
|
||||
ExcelWriterBuilder excelWriterBuilder = write.withTemplate(templateFileName);
|
||||
|
||||
ExcelWriter build = excelWriterBuilder.build();
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet().build();
|
||||
|
||||
build.fill(map,writeSheet);
|
||||
build.finish();
|
||||
|
||||
//EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(map);
|
||||
return "http://118.24.27.47:2088/excel/"+s;
|
||||
//return "http://192.168.2.139/"+s;
|
||||
}*/
|
||||
|
||||
|
||||
public static String exportToProveExcel(Map<String, String> dataMap, String srcFilePath) throws IOException, InvalidFormatException {
|
||||
String s = System.currentTimeMillis() + ".xlsx";
|
||||
//String path = "E:/shop/"+s;
|
||||
String path = "/home/sxy/server/industrial_measurement/excel/" + s;
|
||||
|
||||
// 开始转换。利用 transformer 转到Excel
|
||||
XLSTransformer transformer = new XLSTransformer();
|
||||
// 参数:srcFilePath:模板源文件 cMap:需要导出的数据 destFile.getAbsolutePath():下载的目标文件
|
||||
transformer.transformXLS(srcFilePath, dataMap, path);
|
||||
//return "http://192.168.2.139/"+s;
|
||||
return "http://118.24.27.47:2088/excel/"+s;
|
||||
}
|
||||
|
||||
/*public static void main(String[] args) throws IOException, InvalidFormatException {
|
||||
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
String templateFileName = TestFileUtil.getPath() + "templates" + File.separator + "test.xlsx";
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
map.put("name", "张三");
|
||||
map.put("sex", "男");
|
||||
//simpleFill(map,templateFileName);
|
||||
HttpServletResponse response = null;
|
||||
String s = exportToProveExcel(map);
|
||||
System.out.println(s);
|
||||
}*/
|
||||
}
|
48
src/main/java/com/xkrs/util/Query.java
Normal file
48
src/main/java/com/xkrs/util/Query.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 13:56
|
||||
*/
|
||||
@Component
|
||||
public class Query {
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
/**
|
||||
* 动态多条件查询字典信息
|
||||
* @return
|
||||
*/
|
||||
public List<DataDict> selectDataDict(String dictChineseName,String dictEnglishName) {
|
||||
Specification<DataDict> specification = new Specification<DataDict>() {
|
||||
@Override
|
||||
public Predicate toPredicate(Root<DataDict> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
|
||||
List<Predicate> list = new ArrayList<>();
|
||||
if(dictChineseName != null && !"".equals(dictChineseName)){
|
||||
list.add(criteriaBuilder.equal(root.get("dictChineseName").as(String.class), dictChineseName));
|
||||
}
|
||||
if(dictEnglishName != null && !"".equals(dictEnglishName)){
|
||||
list.add(criteriaBuilder.equal(root.get("dictEnglishName").as(String.class), dictEnglishName));
|
||||
}
|
||||
Predicate[] predicates = new Predicate[list.size()];
|
||||
return criteriaBuilder.and(list.toArray(predicates));
|
||||
}
|
||||
};
|
||||
return dataDictDao.findAll(specification);
|
||||
}
|
||||
}
|
38
src/main/java/com/xkrs/util/TestFileUtil.java
Normal file
38
src/main/java/com/xkrs/util/TestFileUtil.java
Normal file
@ -0,0 +1,38 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/17 9:29
|
||||
*/
|
||||
public class TestFileUtil {
|
||||
public static InputStream getResourcesFileInputStream(String fileName) {
|
||||
return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName);
|
||||
}
|
||||
|
||||
public static String getPath() {
|
||||
return TestFileUtil.class.getResource("/").getPath();
|
||||
}
|
||||
|
||||
public static File createNewFile(String pathName) {
|
||||
File file = new File(getPath() + pathName);
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
} else {
|
||||
if (!file.getParentFile().exists()) {
|
||||
file.getParentFile().mkdirs();
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
public static File readFile(String pathName) {
|
||||
return new File(getPath() + pathName);
|
||||
}
|
||||
|
||||
public static File readUserHomeFile(String pathName) {
|
||||
return new File(System.getProperty("user.home") + File.separator + pathName);
|
||||
}
|
||||
}
|
54
src/main/resources/application.properties
Normal file
54
src/main/resources/application.properties
Normal file
@ -0,0 +1,54 @@
|
||||
server.port = 6810
|
||||
|
||||
## 数据源配置
|
||||
#spring.datasource.url = jdbc:postgresql://localhost:5432/data_model
|
||||
#spring.datasource.userName = postgres
|
||||
#spring.datasource.password = 123456
|
||||
#spring.datasource.driverClassName = org.postgresql.Driver
|
||||
|
||||
spring.datasource.url = jdbc:mysql://118.24.27.47:3306/data_model?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||
spring.datasource.userName = sxy
|
||||
spring.datasource.password = sxy123
|
||||
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
|
||||
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
|
||||
# jackson 配置
|
||||
spring.jackson.serialization.write-date-keys-as-timestamps=false
|
||||
|
||||
## Hikari连接池设置
|
||||
spring.datasource.hikari.auto-commit = true
|
||||
spring.datasource.hikari.maximum-pool-size = 100
|
||||
spring.datasource.hikari.idle-timeout = 10000
|
||||
spring.datasource.hikari.minimum-idle = 5
|
||||
spring.datasource.hikari.validation-timeout = 3000
|
||||
|
||||
## Spring Data JPA 配置
|
||||
spring.jpa.database = mysql
|
||||
spring.jpa.database-platform = org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
spring.jpa.show-sql = false
|
||||
# 指定 ddl mode (none, validate, create, create-drop, update)
|
||||
spring.jpa.hibernate.ddl-auto = update
|
||||
# 命名策略
|
||||
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
|
||||
#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL95Dialect
|
||||
#spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.postgis.PostgisDialect
|
||||
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
|
||||
|
||||
## Devtools配置
|
||||
spring.devtools.livereload.enabled = true
|
||||
|
||||
## 多国语言配置
|
||||
spring.messages.basename = i18n/messages
|
||||
spring.messages.encoding = UTF-8
|
||||
|
||||
# 上传文件配置
|
||||
spring.servlet.multipart.enabled=true
|
||||
# 最大文件大小
|
||||
spring.servlet.multipart.max-file-size = 100MB
|
||||
# 最大请求大小
|
||||
spring.servlet.multipart.max-request-size = 100MB
|
||||
|
||||
spring.main.allow-bean-definition-overriding = true
|
||||
|
||||
|
162
src/main/resources/i18n/messages.properties
Normal file
162
src/main/resources/i18n/messages.properties
Normal file
@ -0,0 +1,162 @@
|
||||
sys.message.success = 成功
|
||||
sys.message.null = 暂时还没有数据
|
||||
sys.message.exit = 已存在相关内容,请勿重复操作
|
||||
sys.message.user.not_logged_in = 用户未登录
|
||||
sys.message.user.login_error = 用户登陆失败
|
||||
sys.message.user.account_forbidden = 用户已被禁止
|
||||
sys.message.user.account_not_activated = 用户未激活
|
||||
sys.message.user.overtime = 用户登录超时
|
||||
sys.message.user.no_permission = 用户权限不足
|
||||
sys.message.user.already_logged = 用户已经登录
|
||||
sys.message.param.null = 参数为空
|
||||
sys.message.param.illegal = 参数非法
|
||||
sys.message.data.none = 数据为空
|
||||
sys.message.data.wrong = 数据错误
|
||||
sys.message.process.fail = 处理失败
|
||||
sys.message.process.overtime = 处理超时
|
||||
sys.message.system.inner_error = 系统内部错误
|
||||
sys.message.system.abnormal = 系统异常
|
||||
sys.message.system.busy = 系统正忙,请稍后
|
||||
sys.message.system.maintain = 系统维护中
|
||||
sys.message.database.error = 数据库错误
|
||||
sys.message.file.exists = 文件已存在
|
||||
sys.message.file.write.error = 文件写入失败
|
||||
sys.message.file.read.error = 文件读取失败
|
||||
|
||||
SysUser.id.blank = 用户id不能为空
|
||||
SysUser.userName.blank = 用户名不能为空
|
||||
SysUser.userName.length.illegal = 用户名长度不合法
|
||||
SysUser.userName.format.illegal = 用户名格式不合法
|
||||
SysUser.nickName.length.illegal = 用户昵称长度不合法
|
||||
SysUser.userCode.length.illegal = 用户编码长度不合法
|
||||
SysUser.userCode.format.illegal = 用户编码含有非法字符
|
||||
SysUser.password.blank = 用户密码不能为空
|
||||
SysUser.password.length.illegal = 用户密码长度不合法
|
||||
SysUser.password.format.illegal = 用户密码格式不合法
|
||||
SysUser.sex.num.null = 用户性别数字不能为空
|
||||
SysUser.sex.num.illegal = 用户性别数字不合法
|
||||
SysUser.telephone.format.illegal = 用户手机号码不合法
|
||||
SysUser.email.length.illegal = 用户邮箱长度不合法
|
||||
SysUser.email.format.illegal = 用户邮箱格式不合法
|
||||
SysUser.admCode.illegal = 用户行政区划代码不合法
|
||||
SysUser.address.length.illegal = 用户详细地址长度不合法
|
||||
SysUser.birthday.format.illegal = 用户出生日期必须是 yyyy-MM-dd
|
||||
SysUser.personalSignature.length.illegal = 用户个性签名长度非法
|
||||
SysUser.portraitId.illegal = 用户头像id非法
|
||||
SysUser.statusCode.null = 用户当前状态编码为空
|
||||
SysUser.statusCode.illegal = 用户当前状态编码非法
|
||||
SysUser.deleteFlag.null = 用户删除标记不能是空
|
||||
|
||||
TrajectoryRecord.id.null = id 不能为空
|
||||
TrajectoryRecord.startTimeTs.null = startTimeTs 不能为空
|
||||
|
||||
SatelliteFirePoint.id.null = id 不能为空
|
||||
SatelliteFirePoint.fireCode.null = fireCode 不能为空
|
||||
SatelliteFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
SatelliteFirePoint.countyCode.null = countyCode 不能为空
|
||||
SatelliteFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
SatelliteFirePoint.countyName.null = countyName 不能为空
|
||||
SatelliteFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
SatelliteFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
SatelliteFirePoint.fireStatus.null = fireStatus 不能为空
|
||||
SatelliteFirePoint.verifyStatus.null = verifyStatus 不能为空
|
||||
SatelliteFirePoint.satelliteTimeTs.null = satelliteTimeTs 不能为空
|
||||
|
||||
PictureFirePoint.id.null = id 不能为空
|
||||
PictureFirePoint.fireCode.null = fireCode 不能为空
|
||||
PictureFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
PictureFirePoint.pictureName.length.illegal = pictureName 长度过长
|
||||
PictureFirePoint.picturePath.null = picturePath 不能为空
|
||||
PictureFirePoint.picturePath.length.illegal = picturePath 长度过长
|
||||
PictureFirePoint.memo.length.illegal = memo 长度过长
|
||||
PictureFirePoint.size.length.illegal = size 长度过长
|
||||
PictureFirePoint.md5.null = md5 不能为空
|
||||
PictureFirePoint.md5.length.illegal = md5 长度过长
|
||||
PictureFirePoint.shootTimeTs.null = shootTimeTs 不能为空
|
||||
|
||||
PersonInvestigator.id.null = id 不能为空
|
||||
PersonInvestigator.name.null = name 不能为空
|
||||
PersonInvestigator.name.length.illegal = name 长度过长
|
||||
PersonInvestigator.code.length.illegal = code 长度过长
|
||||
PersonInvestigator.telephone.null = telephone 不能为空
|
||||
PersonInvestigator.telephone.format.illegal = telephone 格式非法
|
||||
PersonInvestigator.sex.null = sex 不能为空
|
||||
PersonInvestigator.sex.format.illegal = sex 格式非法
|
||||
PersonInvestigator.idCard.length.illegal = idCard 长度过长
|
||||
PersonInvestigator.memo.length.illegal = memo 长度过长
|
||||
PersonInvestigator.linkUserName.null = linkUserName 不能为空
|
||||
PersonInvestigator.linkUserName.format.illegal = linkUserName 格式非法
|
||||
PersonInvestigator.password.null = password 不能为空
|
||||
PersonInvestigator.password.format.illegal = password 格式非法
|
||||
InvestigateFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
|
||||
InvestigateFirePoint.id.null = id 不能为空
|
||||
InvestigateFirePoint.fireCode.null = fireCode 不能为空
|
||||
InvestigateFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
InvestigateFirePoint.countyCode.null = countyCode 不能为空
|
||||
InvestigateFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
InvestigateFirePoint.countyName.null = countyName 不能为空
|
||||
InvestigateFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
InvestigateFirePoint.address.null = address 不能为空
|
||||
InvestigateFirePoint.fireArea.null = fireArea 不能为空
|
||||
InvestigateFirePoint.verifyType.null = verifyType 不能为空
|
||||
InvestigateFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
InvestigateFirePoint.satelliteType.length.illegal = satelliteType 长度过长
|
||||
|
||||
FileDocument.id.null = id 不能为空
|
||||
FileDocument.name.null = name 不能为空
|
||||
FileDocument.name.length.illegal = name 长度过长
|
||||
FileDocument.category.length.illegal = category 长度过长
|
||||
FileDocument.filePath.null = filePath 不能为空
|
||||
FileDocument.filePath.length.illegal = filePath 长度过长
|
||||
FileDocument.size.length.illegal = size 长度过长
|
||||
FileDocument.md5.null = md5 不能为空
|
||||
FileDocument.md5.length.illegal = md5 长度过长
|
||||
FileDocument.memo.length.illegal = memo 长度过长
|
||||
FileDocument.checkingToken.length.illegal = checkingToken 长度过长
|
||||
|
||||
AppFile.id.null = id 不能为空
|
||||
AppFile.name.null = name 不能为空
|
||||
AppFile.name.length.illegal = name 长度过长
|
||||
AppFile.appPath.null = appPath 不能为空
|
||||
AppFile.appPath.length.illegal = appPath 长度过长
|
||||
AppFile.versionNumber.null = versionNumber 不能为空
|
||||
AppFile.versionNumber.length.illegal = versionNumber 长度过长
|
||||
AppFile.versionNumber.format.illegal = versionNumber 格式不合法
|
||||
AppFile.size.null = size 不能为空
|
||||
AppFile.size.length.illegal = size 长度过长
|
||||
AppFile.md5.null = md5 不能为空
|
||||
AppFile.md5.length.illegal = md5 长度过长
|
||||
AppFile.memo.length.illegal = memo 长度过长
|
||||
|
||||
RealFirePoint.id.null = id 不能为空
|
||||
RealFirePoint.fireCode.null = fireCode 不能为空
|
||||
RealFirePoint.fireCode.length.illegal = fireCode 不合法
|
||||
RealFirePoint.countyCode.null = countyCode 不能为空
|
||||
RealFirePoint.countyCode.length.illegal = countyCode 不合法
|
||||
RealFirePoint.countyName.null = countyName 不能为空
|
||||
RealFirePoint.countyName.length.illegal = countyName 不合法
|
||||
RealFirePoint.address.null = address 不能为空
|
||||
RealFirePoint.address.length.illegal = address 不合法
|
||||
RealFirePoint.fireArea.null = fireArea 不能为空
|
||||
RealFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
RealFirePoint.verifyType.null = verifyType 不能为空
|
||||
|
||||
InvestigationTeam.id.null = id 不能为空
|
||||
InvestigationTeam.teamName.null = teamName 不能为空
|
||||
InvestigationTeam.teamName.length.illegal = teamName 长度过长
|
||||
InvestigationTeam.memo.length.illegal = memo 长度过长
|
||||
InvestigationTeam.userName.null = userName 不能为空
|
||||
InvestigationTeam.userName.length.illegal = userName 长度过长
|
||||
InvestigationTeam.userRealName.null = userRealName 不能为空
|
||||
InvestigationTeam.userRealName.length.illegal = userRealName 长度过长
|
||||
|
||||
RelTeamInvestigator.id.null = id 不能为空
|
||||
RelTeamInvestigator.teamCode.null = teamCode 不能为空
|
||||
RelTeamInvestigator.teamCode.length.illegal = teamCode 长度过长
|
||||
RelTeamInvestigator.userName.null = userName 不能为空
|
||||
RelTeamInvestigator.userName.length.illegal = userName 长度过长
|
||||
RelTeamInvestigator.teamDeputy.null = teamDeputy 不能为空
|
||||
RelTeamInvestigator.memo.length.illegal = memo 长度过长
|
||||
RelTeamInvestigator.userRealName.null = userRealName 不能为空
|
||||
RelTeamInvestigator.userRealName.length.illegal = userRealName 长度过长
|
162
src/main/resources/i18n/messages_en_US.properties
Normal file
162
src/main/resources/i18n/messages_en_US.properties
Normal file
@ -0,0 +1,162 @@
|
||||
sys.message.success = success
|
||||
sys.message.null = null
|
||||
sys.message.exit = data already exists
|
||||
sys.message.user.not_logged_in = user not logged in
|
||||
sys.message.user.login_error = user login failed
|
||||
sys.message.user.account_forbidden = this account is forbidden
|
||||
sys.message.user.account_not_activated = this account not activated
|
||||
sys.message.user.overtime = user login timeout
|
||||
sys.message.user.no_permission = user permission denied
|
||||
sys.message.user.already_logged = user already logged
|
||||
sys.message.param.null = parameter is null
|
||||
sys.message.param.illegal = parameter is illegal
|
||||
sys.message.data.none = data is none
|
||||
sys.message.data.wrong = data is wrong
|
||||
sys.message.process.fail = process fail
|
||||
sys.message.process.overtime = process overtime
|
||||
sys.message.system.inner_error = system inner error
|
||||
sys.message.system.abnormal = system abnormal
|
||||
sys.message.system.busy = system is busy
|
||||
sys.message.system.maintain = system maintenance
|
||||
sys.message.database.error = database error
|
||||
sys.message.file.exists = file exists
|
||||
sys.message.file.write.error = file write error
|
||||
sys.message.file.read.error = file read error
|
||||
|
||||
SysUser.id.blank = user id can't be blank
|
||||
SysUser.userName.blank = user name can't be blank
|
||||
SysUser.userName.length.illegal = user name length illegal
|
||||
SysUser.userName.format.illegal = user name format illegal
|
||||
SysUser.nickName.length.illegal = user nickname length illegal
|
||||
SysUser.userCode.length.illegal = user code length illegal
|
||||
SysUser.userCode.format.illegal = user code cantains illegal character
|
||||
SysUser.password.blank = user password can't be blank
|
||||
SysUser.password.length.illegal = user password length illegal
|
||||
SysUser.password.format.illegal = user password format illegal
|
||||
SysUser.sex.num.null = user sex num can't be blank
|
||||
SysUser.sex.num.illegal = user sex num illegal
|
||||
SysUser.telephone.format.illegal = user telephone format illegal
|
||||
SysUser.email.length.illegal = user email length illegal
|
||||
SysUser.email.format.illegal = user email format illegal
|
||||
SysUser.admCode.illegal = user administrative area code illegal
|
||||
SysUser.address.length.illegal = user address length illegal
|
||||
SysUser.birthday.format.illegal = user birthday must be yyyy-MM-dd
|
||||
SysUser.personalSignature.length.illegal = user personal signature length illegal
|
||||
SysUser.portraitId.illegal = user portrait id illegal
|
||||
SysUser.statusCode.null = user current status code can't be blank
|
||||
SysUser.statusCode.illegal = user current status code illegal
|
||||
SysUser.deleteFlag.null = user delete flag can't be null
|
||||
|
||||
TrajectoryRecord.id.null = id can't be null
|
||||
TrajectoryRecord.startTimeTs.null = startTimeTs can't be null
|
||||
|
||||
SatelliteFirePoint.id.null = id can't be blank
|
||||
SatelliteFirePoint.fireCode.null = fireCode can't be blank
|
||||
SatelliteFirePoint.fireCode.length.illegal = fireCode length illegal
|
||||
SatelliteFirePoint.countyCode.null = countyCode can't be blank
|
||||
SatelliteFirePoint.countyCode.length.illegal = countyCode length illegal
|
||||
SatelliteFirePoint.countyName.null = countyName can't be blank
|
||||
SatelliteFirePoint.countyName.length.illegal = countyName length illegal
|
||||
SatelliteFirePoint.satelliteType.null = satelliteType can't be blank
|
||||
SatelliteFirePoint.fireStatus.null = fireStatus can't be blank
|
||||
SatelliteFirePoint.verifyStatus.null = verifyStatus can't be blank
|
||||
SatelliteFirePoint.satelliteTimeTs.null = satelliteTimeTs can't be blank
|
||||
|
||||
PictureFirePoint.id.null = id can't be blank
|
||||
PictureFirePoint.fireCode.null = fireCode can't be blank
|
||||
PictureFirePoint.fireCode.length.illegal = fireCode length illegal
|
||||
PictureFirePoint.pictureName.length.illegal = pictureName length illegal
|
||||
PictureFirePoint.picturePath.null = picturePath can't be blank
|
||||
PictureFirePoint.picturePath.length.illegal = picturePath length illegal
|
||||
PictureFirePoint.memo.length.illegal = memo length illegal
|
||||
PictureFirePoint.size.length.illegal = size length illegal
|
||||
PictureFirePoint.md5.null = md5 can't be blank
|
||||
PictureFirePoint.md5.length.illegal = md5 length illegal
|
||||
PictureFirePoint.shootTimeTs.null = shootTimeTs can't be blank
|
||||
|
||||
PersonInvestigator.id.null = id can't be blank
|
||||
PersonInvestigator.name.null = name can't be blank
|
||||
PersonInvestigator.name.length.illegal = name length illegal
|
||||
PersonInvestigator.code.length.illegal = code length illegal
|
||||
PersonInvestigator.telephone.null = telephone can't be blank
|
||||
PersonInvestigator.telephone.format.illegal = telephone format illegal
|
||||
PersonInvestigator.sex.null = sex format can't be blank
|
||||
PersonInvestigator.sex.format.illegal = sex format illegal
|
||||
PersonInvestigator.idCard.length.illegal = idCard length illegal
|
||||
PersonInvestigator.memo.length.illegal = memo length illegal
|
||||
PersonInvestigator.linkUserName.null = linkUserName can't be blank
|
||||
PersonInvestigator.linkUserName.format.illegal = linkUserName format illegal
|
||||
PersonInvestigator.password.null = password can't be blank
|
||||
PersonInvestigator.password.format.illegal = password format
|
||||
InvestigateFirePoint.verifyTimeTs.null = verifyTimeTs can't be blank
|
||||
|
||||
InvestigateFirePoint.id.null = id can't be blank
|
||||
InvestigateFirePoint.fireCode.null = fireCode can't be blank
|
||||
InvestigateFirePoint.fireCode.length.illegal = fireCode length illegal
|
||||
InvestigateFirePoint.countyCode.null = countyCode can't be blank
|
||||
InvestigateFirePoint.countyCode.length.illegal = countyCode length illegal
|
||||
InvestigateFirePoint.countyName.null = countyName can't be blank
|
||||
InvestigateFirePoint.countyName.length.illegal = countyName length illegal
|
||||
InvestigateFirePoint.address.null = address can't be blank
|
||||
InvestigateFirePoint.fireArea.null = fireArea can't be blank
|
||||
InvestigateFirePoint.verifyType.null = verifyType can't be blank
|
||||
InvestigateFirePoint.satelliteType.null = satelliteType can't be blank
|
||||
InvestigateFirePoint.satelliteType.length.illegal = satelliteType length illegal
|
||||
|
||||
FileDocument.id.null = id can't be blank
|
||||
FileDocument.name.null = name can't be blank
|
||||
FileDocument.name.length.illegal = name length illegal
|
||||
FileDocument.category.length.illegal = category length illegal
|
||||
FileDocument.filePath.null = filePath can't be blank
|
||||
FileDocument.filePath.length.illegal = filePath length illegal
|
||||
FileDocument.size.length.illegal = size length illegal
|
||||
FileDocument.md5.null = md5 can't be blank
|
||||
FileDocument.md5.length.illegal = md5 length illegal
|
||||
FileDocument.memo.length.illegal = memo length illegal
|
||||
FileDocument.checkingToken.length.illegal = checkingToken length illegal
|
||||
|
||||
AppFile.id.null = id can't be blank
|
||||
AppFile.name.null = name can't be blank
|
||||
AppFile.name.length.illegal = name length illegal
|
||||
AppFile.appPath.null = appPath can't be blank
|
||||
AppFile.appPath.length.illegal = appPath length illegal
|
||||
AppFile.versionNumber.null = versionNumber can't be blank
|
||||
AppFile.versionNumber.length.illegal = versionNumber length illegal
|
||||
AppFile.versionNumber.format.illegal = versionNumber illegal
|
||||
AppFile.size.null = size can't be blank
|
||||
AppFile.size.length.illegal = size length illegal
|
||||
AppFile.md5.null = md5 can't be blank
|
||||
AppFile.md5.length.illegal = md5 length illegal
|
||||
AppFile.memo.length.illegal = memo length illegal
|
||||
|
||||
RealFirePoint.id.null = id can't be blank
|
||||
RealFirePoint.fireCode.null = fireCode can't be blank
|
||||
RealFirePoint.fireCode.length.illegal = fireCode illegal
|
||||
RealFirePoint.countyCode.null = countyCode can't be blank
|
||||
RealFirePoint.countyCode.length.illegal = countyCode
|
||||
RealFirePoint.countyName.null = countyName can't be blank
|
||||
RealFirePoint.countyName.length.illegal = countyName illegal
|
||||
RealFirePoint.address.null = address can't be blank
|
||||
RealFirePoint.address.length.illegal = address illegal
|
||||
RealFirePoint.fireArea.null = fireArea can't be blank
|
||||
RealFirePoint.verifyTimeTs.null = verifyTimeTs can't be blank
|
||||
RealFirePoint.verifyType.null = verifyType can't be blank
|
||||
|
||||
InvestigationTeam.id.null = id can't be blank
|
||||
InvestigationTeam.teamName.null = teamName can't be blank
|
||||
InvestigationTeam.teamName.length.illegal = teamName length illegal
|
||||
InvestigationTeam.memo.length.illegal = memo length illegal
|
||||
InvestigationTeam.userName.null = userName can't be blank
|
||||
InvestigationTeam.userName.length.illegal = userName length illegal
|
||||
InvestigationTeam.userRealName.null = userRealName can't be blank
|
||||
InvestigationTeam.userRealName.length.illegal = userRealName length illegal
|
||||
|
||||
RelTeamInvestigator.id.null = id can't be blank
|
||||
RelTeamInvestigator.teamCode.null = teamCode can't be blank
|
||||
RelTeamInvestigator.teamCode.length.illegal = teamCode length illegal
|
||||
RelTeamInvestigator.userName.null = userName can't be blank
|
||||
RelTeamInvestigator.userName.length.illegal = userName length illegal
|
||||
RelTeamInvestigator.teamDeputy.null = teamDeputy can't be blank
|
||||
RelTeamInvestigator.memo.length.illegal = memo length illegal
|
||||
RelTeamInvestigator.userRealName.null = userRealName can't be blank
|
||||
RelTeamInvestigator.userRealName.length.illegal = userRealName length illegal
|
162
src/main/resources/i18n/messages_zh_CN.properties
Normal file
162
src/main/resources/i18n/messages_zh_CN.properties
Normal file
@ -0,0 +1,162 @@
|
||||
sys.message.success = 成功
|
||||
sys.message.null = 暂时还没有数据
|
||||
sys.message.exit = 已存在相关内容,请勿重复操作
|
||||
sys.message.user.not_logged_in = 用户未登录
|
||||
sys.message.user.login_error = 用户登陆失败
|
||||
sys.message.user.account_forbidden = 用户已被禁止
|
||||
sys.message.user.account_not_activated = 用户未激活
|
||||
sys.message.user.overtime = 用户登录超时
|
||||
sys.message.user.no_permission = 用户权限不足
|
||||
sys.message.user.already_logged = 用户已经登录
|
||||
sys.message.param.null = 参数为空
|
||||
sys.message.param.illegal = 参数非法
|
||||
sys.message.data.none = 数据为空
|
||||
sys.message.data.wrong = 数据错误
|
||||
sys.message.process.fail = 处理失败
|
||||
sys.message.process.overtime = 处理超时
|
||||
sys.message.system.inner_error = 系统内部错误
|
||||
sys.message.system.abnormal = 系统异常
|
||||
sys.message.system.busy = 系统正忙,请稍后
|
||||
sys.message.system.maintain = 系统维护中
|
||||
sys.message.database.error = 数据库错误
|
||||
sys.message.file.exists = 文件已存在
|
||||
sys.message.file.write.error = 文件写入失败
|
||||
sys.message.file.read.error = 文件读取失败
|
||||
|
||||
SysUser.id.blank = 用户id不能为空
|
||||
SysUser.userName.blank = 用户名不能为空
|
||||
SysUser.userName.length.illegal = 用户名长度不合法
|
||||
SysUser.userName.format.illegal = 用户名格式不合法
|
||||
SysUser.nickName.length.illegal = 用户昵称长度不合法
|
||||
SysUser.userCode.length.illegal = 用户编码长度不合法
|
||||
SysUser.userCode.format.illegal = 用户编码含有非法字符
|
||||
SysUser.password.blank = 用户密码不能为空
|
||||
SysUser.password.length.illegal = 用户密码长度不合法
|
||||
SysUser.password.format.illegal = 用户密码格式不合法
|
||||
SysUser.sex.num.null = 用户性别数字不能为空
|
||||
SysUser.sex.num.illegal = 用户性别数字不合法
|
||||
SysUser.telephone.format.illegal = 用户手机号码不合法
|
||||
SysUser.email.length.illegal = 用户邮箱长度不合法
|
||||
SysUser.email.format.illegal = 用户邮箱格式不合法
|
||||
SysUser.admCode.illegal = 用户行政区划代码不合法
|
||||
SysUser.address.length.illegal = 用户详细地址长度不合法
|
||||
SysUser.birthday.format.illegal = 用户出生日期必须是 yyyy-MM-dd
|
||||
SysUser.personalSignature.length.illegal = 用户个性签名长度非法
|
||||
SysUser.portraitId.illegal = 用户头像id非法
|
||||
SysUser.statusCode.null = 用户当前状态编码为空
|
||||
SysUser.statusCode.illegal = 用户当前状态编码非法
|
||||
SysUser.deleteFlag.null = 用户删除标记不能是空
|
||||
|
||||
TrajectoryRecord.id.null = id 不能为空
|
||||
TrajectoryRecord.startTimeTs.null = startTimeTs 不能为空
|
||||
|
||||
SatelliteFirePoint.id.null = id 不能为空
|
||||
SatelliteFirePoint.fireCode.null = fireCode 不能为空
|
||||
SatelliteFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
SatelliteFirePoint.countyCode.null = countyCode 不能为空
|
||||
SatelliteFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
SatelliteFirePoint.countyName.null = countyName 不能为空
|
||||
SatelliteFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
SatelliteFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
SatelliteFirePoint.fireStatus.null = fireStatus 不能为空
|
||||
SatelliteFirePoint.verifyStatus.null = verifyStatus 不能为空
|
||||
SatelliteFirePoint.satelliteTimeTs.null = satelliteTimeTs 不能为空
|
||||
|
||||
PictureFirePoint.id.null = id 不能为空
|
||||
PictureFirePoint.fireCode.null = fireCode 不能为空
|
||||
PictureFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
PictureFirePoint.pictureName.length.illegal = pictureName 长度过长
|
||||
PictureFirePoint.picturePath.null = picturePath 不能为空
|
||||
PictureFirePoint.picturePath.length.illegal = picturePath 长度过长
|
||||
PictureFirePoint.memo.length.illegal = memo 长度过长
|
||||
PictureFirePoint.size.length.illegal = size 长度过长
|
||||
PictureFirePoint.md5.null = md5 不能为空
|
||||
PictureFirePoint.md5.length.illegal = md5 长度过长
|
||||
PictureFirePoint.shootTimeTs.null = shootTimeTs 不能为空
|
||||
|
||||
PersonInvestigator.id.null = id 不能为空
|
||||
PersonInvestigator.name.null = name 不能为空
|
||||
PersonInvestigator.name.length.illegal = name 长度过长
|
||||
PersonInvestigator.code.length.illegal = code 长度过长
|
||||
PersonInvestigator.telephone.null = telephone 不能为空
|
||||
PersonInvestigator.telephone.format.illegal = telephone 格式非法
|
||||
PersonInvestigator.sex.null = sex 不能为空
|
||||
PersonInvestigator.sex.format.illegal = sex 格式非法
|
||||
PersonInvestigator.idCard.length.illegal = idCard 长度过长
|
||||
PersonInvestigator.memo.length.illegal = memo 长度过长
|
||||
PersonInvestigator.linkUserName.null = linkUserName 不能为空
|
||||
PersonInvestigator.linkUserName.format.illegal = linkUserName 格式非法
|
||||
PersonInvestigator.password.null = password 不能为空
|
||||
PersonInvestigator.password.format.illegal = password 格式非法
|
||||
InvestigateFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
|
||||
InvestigateFirePoint.id.null = id 不能为空
|
||||
InvestigateFirePoint.fireCode.null = fireCode 不能为空
|
||||
InvestigateFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
InvestigateFirePoint.countyCode.null = countyCode 不能为空
|
||||
InvestigateFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
InvestigateFirePoint.countyName.null = countyName 不能为空
|
||||
InvestigateFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
InvestigateFirePoint.address.null = address 不能为空
|
||||
InvestigateFirePoint.fireArea.null = fireArea 不能为空
|
||||
InvestigateFirePoint.verifyType.null = verifyType 不能为空
|
||||
InvestigateFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
InvestigateFirePoint.satelliteType.length.illegal = satelliteType 长度过长
|
||||
|
||||
FileDocument.id.null = id 不能为空
|
||||
FileDocument.name.null = name 不能为空
|
||||
FileDocument.name.length.illegal = name 长度过长
|
||||
FileDocument.category.length.illegal = category 长度过长
|
||||
FileDocument.filePath.null = filePath 不能为空
|
||||
FileDocument.filePath.length.illegal = filePath 长度过长
|
||||
FileDocument.size.length.illegal = size 长度过长
|
||||
FileDocument.md5.null = md5 不能为空
|
||||
FileDocument.md5.length.illegal = md5 长度过长
|
||||
FileDocument.memo.length.illegal = memo 长度过长
|
||||
FileDocument.checkingToken.length.illegal = checkingToken 长度过长
|
||||
|
||||
AppFile.id.null = id 不能为空
|
||||
AppFile.name.null = name 不能为空
|
||||
AppFile.name.length.illegal = name 长度过长
|
||||
AppFile.appPath.null = appPath 不能为空
|
||||
AppFile.appPath.length.illegal = appPath 长度过长
|
||||
AppFile.versionNumber.null = versionNumber 不能为空
|
||||
AppFile.versionNumber.length.illegal = versionNumber 长度过长
|
||||
AppFile.versionNumber.format.illegal = versionNumber 格式不合法
|
||||
AppFile.size.null = size 不能为空
|
||||
AppFile.size.length.illegal = size 长度过长
|
||||
AppFile.md5.null = md5 不能为空
|
||||
AppFile.md5.length.illegal = md5 长度过长
|
||||
AppFile.memo.length.illegal = memo 长度过长
|
||||
|
||||
RealFirePoint.id.null = id 不能为空
|
||||
RealFirePoint.fireCode.null = fireCode 不能为空
|
||||
RealFirePoint.fireCode.length.illegal = fireCode 不合法
|
||||
RealFirePoint.countyCode.null = countyCode 不能为空
|
||||
RealFirePoint.countyCode.length.illegal = countyCode 不合法
|
||||
RealFirePoint.countyName.null = countyName 不能为空
|
||||
RealFirePoint.countyName.length.illegal = countyName 不合法
|
||||
RealFirePoint.address.null = address 不能为空
|
||||
RealFirePoint.address.length.illegal = address 不合法
|
||||
RealFirePoint.fireArea.null = fireArea 不能为空
|
||||
RealFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
RealFirePoint.verifyType.null = verifyType 不能为空
|
||||
|
||||
InvestigationTeam.id.null = id 不能为空
|
||||
InvestigationTeam.teamName.null = teamName 不能为空
|
||||
InvestigationTeam.teamName.length.illegal = teamName 长度过长
|
||||
InvestigationTeam.memo.length.illegal = memo 长度过长
|
||||
InvestigationTeam.userName.null = userName 不能为空
|
||||
InvestigationTeam.userName.length.illegal = userName 长度过长
|
||||
InvestigationTeam.userRealName.null = userRealName 不能为空
|
||||
InvestigationTeam.userRealName.length.illegal = userRealName 长度过长
|
||||
|
||||
RelTeamInvestigator.id.null = id 不能为空
|
||||
RelTeamInvestigator.teamCode.null = teamCode 不能为空
|
||||
RelTeamInvestigator.teamCode.length.illegal = teamCode 长度过长
|
||||
RelTeamInvestigator.userName.null = userName 不能为空
|
||||
RelTeamInvestigator.userName.length.illegal = userName 长度过长
|
||||
RelTeamInvestigator.teamDeputy.null = teamDeputy 不能为空
|
||||
RelTeamInvestigator.memo.length.illegal = memo 长度过长
|
||||
RelTeamInvestigator.userRealName.null = userRealName 不能为空
|
||||
RelTeamInvestigator.userRealName.length.illegal = userRealName 长度过长
|
BIN
src/main/resources/templates/a.xlsx
Normal file
BIN
src/main/resources/templates/a.xlsx
Normal file
Binary file not shown.
BIN
src/main/resources/templates/test.xlsx
Normal file
BIN
src/main/resources/templates/test.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user