Commit 5f504cdcbfdd59049387c6e7f17bfe7fa640fd4a

Authored by 游瑞烽
0 parents

初始化

.gitignore 0 → 100644
  1 +++ a/.gitignore
  1 +HELP.md
  2 +target/
  3 +!.mvn/wrapper/maven-wrapper.jar
  4 +!**/src/main/**
  5 +!**/src/test/**
  6 +
  7 +### STS ###
  8 +.apt_generated
  9 +.classpath
  10 +.factorypath
  11 +.project
  12 +.settings
  13 +.springBeans
  14 +.sts4-cache
  15 +
  16 +### IntelliJ IDEA ###
  17 +.idea
  18 +*.iws
  19 +*.iml
  20 +*.ipr
  21 +
  22 +### NetBeans ###
  23 +/nbproject/private/
  24 +/nbbuild/
  25 +/dist/
  26 +/nbdist/
  27 +/.nb-gradle/
  28 +build/
  29 +
  30 +### VS Code ###
  31 +.vscode/
... ...
README.md 0 → 100644
  1 +++ a/README.md
  1 +嘉定统计分析系统,时刻表分析报表计算程序
0 2 \ No newline at end of file
... ...
average_speed.sql 0 → 100644
  1 +++ a/average_speed.sql
  1 +
  2 +SET FOREIGN_KEY_CHECKS=0;
  3 +
  4 +-- ----------------------------
  5 +-- Table structure for calc_average_speed
  6 +-- ----------------------------
  7 +DROP TABLE IF EXISTS `calc_average_speed`;
  8 +CREATE TABLE `calc_average_speed` (
  9 + `id` bigint(20) NOT NULL AUTO_INCREMENT, -- 主键Id
  10 + `company_id` int(11) DEFAULT NULL, -- 公司编码
  11 + `branche_company_id` int(11) DEFAULT NULL, -- 分公司编码
  12 + `company_name` varchar(255) DEFAULT NULL, -- 公司名称
  13 + `branche_company_name` varchar(255) DEFAULT NULL, -- 分公司名称
  14 + `line_code` varchar(255) DEFAULT NULL, -- 线路编码
  15 + `line_name` varchar(255) DEFAULT NULL, -- 线路名称
  16 + `plan_speed` float DEFAULT NULL,
  17 + `real_speed` float DEFAULT NULL,
  18 + `rq` datetime DEFAULT NULL, -- 日期字符串
  19 + `rq_str` varchar(255) DEFAULT NULL, -- 日期
  20 + `create_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  21 + PRIMARY KEY (`id`)
  22 +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
  23 +
  24 +
  25 +
... ...
mvnw 0 → 100644
  1 +++ a/mvnw
  1 +#!/bin/sh
  2 +# ----------------------------------------------------------------------------
  3 +# Licensed to the Apache Software Foundation (ASF) under one
  4 +# or more contributor license agreements. See the NOTICE file
  5 +# distributed with this work for additional information
  6 +# regarding copyright ownership. The ASF licenses this file
  7 +# to you under the Apache License, Version 2.0 (the
  8 +# "License"); you may not use this file except in compliance
  9 +# with the License. You may obtain a copy of the License at
  10 +#
  11 +# https://www.apache.org/licenses/LICENSE-2.0
  12 +#
  13 +# Unless required by applicable law or agreed to in writing,
  14 +# software distributed under the License is distributed on an
  15 +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  16 +# KIND, either express or implied. See the License for the
  17 +# specific language governing permissions and limitations
  18 +# under the License.
  19 +# ----------------------------------------------------------------------------
  20 +
  21 +# ----------------------------------------------------------------------------
  22 +# Maven2 Start Up Batch script
  23 +#
  24 +# Required ENV vars:
  25 +# ------------------
  26 +# JAVA_HOME - location of a JDK home dir
  27 +#
  28 +# Optional ENV vars
  29 +# -----------------
  30 +# M2_HOME - location of maven2's installed home dir
  31 +# MAVEN_OPTS - parameters passed to the Java VM when running Maven
  32 +# e.g. to debug Maven itself, use
  33 +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
  34 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
  35 +# ----------------------------------------------------------------------------
  36 +
  37 +if [ -z "$MAVEN_SKIP_RC" ] ; then
  38 +
  39 + if [ -f /etc/mavenrc ] ; then
  40 + . /etc/mavenrc
  41 + fi
  42 +
  43 + if [ -f "$HOME/.mavenrc" ] ; then
  44 + . "$HOME/.mavenrc"
  45 + fi
  46 +
  47 +fi
  48 +
  49 +# OS specific support. $var _must_ be set to either true or false.
  50 +cygwin=false;
  51 +darwin=false;
  52 +mingw=false
  53 +case "`uname`" in
  54 + CYGWIN*) cygwin=true ;;
  55 + MINGW*) mingw=true;;
  56 + Darwin*) darwin=true
  57 + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
  58 + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
  59 + if [ -z "$JAVA_HOME" ]; then
  60 + if [ -x "/usr/libexec/java_home" ]; then
  61 + export JAVA_HOME="`/usr/libexec/java_home`"
  62 + else
  63 + export JAVA_HOME="/Library/Java/Home"
  64 + fi
  65 + fi
  66 + ;;
  67 +esac
  68 +
  69 +if [ -z "$JAVA_HOME" ] ; then
  70 + if [ -r /etc/gentoo-release ] ; then
  71 + JAVA_HOME=`java-config --jre-home`
  72 + fi
  73 +fi
  74 +
  75 +if [ -z "$M2_HOME" ] ; then
  76 + ## resolve links - $0 may be a link to maven's home
  77 + PRG="$0"
  78 +
  79 + # need this for relative symlinks
  80 + while [ -h "$PRG" ] ; do
  81 + ls=`ls -ld "$PRG"`
  82 + link=`expr "$ls" : '.*-> \(.*\)$'`
  83 + if expr "$link" : '/.*' > /dev/null; then
  84 + PRG="$link"
  85 + else
  86 + PRG="`dirname "$PRG"`/$link"
  87 + fi
  88 + done
  89 +
  90 + saveddir=`pwd`
  91 +
  92 + M2_HOME=`dirname "$PRG"`/..
  93 +
  94 + # make it fully qualified
  95 + M2_HOME=`cd "$M2_HOME" && pwd`
  96 +
  97 + cd "$saveddir"
  98 + # echo Using m2 at $M2_HOME
  99 +fi
  100 +
  101 +# For Cygwin, ensure paths are in UNIX format before anything is touched
  102 +if $cygwin ; then
  103 + [ -n "$M2_HOME" ] &&
  104 + M2_HOME=`cygpath --unix "$M2_HOME"`
  105 + [ -n "$JAVA_HOME" ] &&
  106 + JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  107 + [ -n "$CLASSPATH" ] &&
  108 + CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
  109 +fi
  110 +
  111 +# For Mingw, ensure paths are in UNIX format before anything is touched
  112 +if $mingw ; then
  113 + [ -n "$M2_HOME" ] &&
  114 + M2_HOME="`(cd "$M2_HOME"; pwd)`"
  115 + [ -n "$JAVA_HOME" ] &&
  116 + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  117 +fi
  118 +
  119 +if [ -z "$JAVA_HOME" ]; then
  120 + javaExecutable="`which javac`"
  121 + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
  122 + # readlink(1) is not available as standard on Solaris 10.
  123 + readLink=`which readlink`
  124 + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
  125 + if $darwin ; then
  126 + javaHome="`dirname \"$javaExecutable\"`"
  127 + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
  128 + else
  129 + javaExecutable="`readlink -f \"$javaExecutable\"`"
  130 + fi
  131 + javaHome="`dirname \"$javaExecutable\"`"
  132 + javaHome=`expr "$javaHome" : '\(.*\)/bin'`
  133 + JAVA_HOME="$javaHome"
  134 + export JAVA_HOME
  135 + fi
  136 + fi
  137 +fi
  138 +
  139 +if [ -z "$JAVACMD" ] ; then
  140 + if [ -n "$JAVA_HOME" ] ; then
  141 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
  142 + # IBM's JDK on AIX uses strange locations for the executables
  143 + JAVACMD="$JAVA_HOME/jre/sh/java"
  144 + else
  145 + JAVACMD="$JAVA_HOME/bin/java"
  146 + fi
  147 + else
  148 + JAVACMD="`which java`"
  149 + fi
  150 +fi
  151 +
  152 +if [ ! -x "$JAVACMD" ] ; then
  153 + echo "Error: JAVA_HOME is not defined correctly." >&2
  154 + echo " We cannot execute $JAVACMD" >&2
  155 + exit 1
  156 +fi
  157 +
  158 +if [ -z "$JAVA_HOME" ] ; then
  159 + echo "Warning: JAVA_HOME environment variable is not set."
  160 +fi
  161 +
  162 +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
  163 +
  164 +# traverses directory structure from process work directory to filesystem root
  165 +# first directory with .mvn subdirectory is considered project base directory
  166 +find_maven_basedir() {
  167 +
  168 + if [ -z "$1" ]
  169 + then
  170 + echo "Path not specified to find_maven_basedir"
  171 + return 1
  172 + fi
  173 +
  174 + basedir="$1"
  175 + wdir="$1"
  176 + while [ "$wdir" != '/' ] ; do
  177 + if [ -d "$wdir"/.mvn ] ; then
  178 + basedir=$wdir
  179 + break
  180 + fi
  181 + # workaround for JBEAP-8937 (on Solaris 10/Sparc)
  182 + if [ -d "${wdir}" ]; then
  183 + wdir=`cd "$wdir/.."; pwd`
  184 + fi
  185 + # end of workaround
  186 + done
  187 + echo "${basedir}"
  188 +}
  189 +
  190 +# concatenates all lines of a file
  191 +concat_lines() {
  192 + if [ -f "$1" ]; then
  193 + echo "$(tr -s '\n' ' ' < "$1")"
  194 + fi
  195 +}
  196 +
  197 +BASE_DIR=`find_maven_basedir "$(pwd)"`
  198 +if [ -z "$BASE_DIR" ]; then
  199 + exit 1;
  200 +fi
  201 +
  202 +##########################################################################################
  203 +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
  204 +# This allows using the maven wrapper in projects that prohibit checking in binary data.
  205 +##########################################################################################
  206 +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
  207 + if [ "$MVNW_VERBOSE" = true ]; then
  208 + echo "Found .mvn/wrapper/maven-wrapper.jar"
  209 + fi
  210 +else
  211 + if [ "$MVNW_VERBOSE" = true ]; then
  212 + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
  213 + fi
  214 + if [ -n "$MVNW_REPOURL" ]; then
  215 + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
  216 + else
  217 + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
  218 + fi
  219 + while IFS="=" read key value; do
  220 + case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
  221 + esac
  222 + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
  223 + if [ "$MVNW_VERBOSE" = true ]; then
  224 + echo "Downloading from: $jarUrl"
  225 + fi
  226 + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
  227 + if $cygwin; then
  228 + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
  229 + fi
  230 +
  231 + if command -v wget > /dev/null; then
  232 + if [ "$MVNW_VERBOSE" = true ]; then
  233 + echo "Found wget ... using wget"
  234 + fi
  235 + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
  236 + wget "$jarUrl" -O "$wrapperJarPath"
  237 + else
  238 + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
  239 + fi
  240 + elif command -v curl > /dev/null; then
  241 + if [ "$MVNW_VERBOSE" = true ]; then
  242 + echo "Found curl ... using curl"
  243 + fi
  244 + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
  245 + curl -o "$wrapperJarPath" "$jarUrl" -f
  246 + else
  247 + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
  248 + fi
  249 +
  250 + else
  251 + if [ "$MVNW_VERBOSE" = true ]; then
  252 + echo "Falling back to using Java to download"
  253 + fi
  254 + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
  255 + # For Cygwin, switch paths to Windows format before running javac
  256 + if $cygwin; then
  257 + javaClass=`cygpath --path --windows "$javaClass"`
  258 + fi
  259 + if [ -e "$javaClass" ]; then
  260 + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
  261 + if [ "$MVNW_VERBOSE" = true ]; then
  262 + echo " - Compiling MavenWrapperDownloader.java ..."
  263 + fi
  264 + # Compiling the Java class
  265 + ("$JAVA_HOME/bin/javac" "$javaClass")
  266 + fi
  267 + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
  268 + # Running the downloader
  269 + if [ "$MVNW_VERBOSE" = true ]; then
  270 + echo " - Running MavenWrapperDownloader.java ..."
  271 + fi
  272 + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
  273 + fi
  274 + fi
  275 + fi
  276 +fi
  277 +##########################################################################################
  278 +# End of extension
  279 +##########################################################################################
  280 +
  281 +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
  282 +if [ "$MVNW_VERBOSE" = true ]; then
  283 + echo $MAVEN_PROJECTBASEDIR
  284 +fi
  285 +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
  286 +
  287 +# For Cygwin, switch paths to Windows format before running java
  288 +if $cygwin; then
  289 + [ -n "$M2_HOME" ] &&
  290 + M2_HOME=`cygpath --path --windows "$M2_HOME"`
  291 + [ -n "$JAVA_HOME" ] &&
  292 + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  293 + [ -n "$CLASSPATH" ] &&
  294 + CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  295 + [ -n "$MAVEN_PROJECTBASEDIR" ] &&
  296 + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
  297 +fi
  298 +
  299 +# Provide a "standardized" way to retrieve the CLI args that will
  300 +# work with both Windows and non-Windows executions.
  301 +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
  302 +export MAVEN_CMD_LINE_ARGS
  303 +
  304 +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
  305 +
  306 +exec "$JAVACMD" \
  307 + $MAVEN_OPTS \
  308 + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  309 + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  310 + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
... ...
mvnw.cmd 0 → 100644
  1 +++ a/mvnw.cmd
  1 +@REM ----------------------------------------------------------------------------
  2 +@REM Licensed to the Apache Software Foundation (ASF) under one
  3 +@REM or more contributor license agreements. See the NOTICE file
  4 +@REM distributed with this work for additional information
  5 +@REM regarding copyright ownership. The ASF licenses this file
  6 +@REM to you under the Apache License, Version 2.0 (the
  7 +@REM "License"); you may not use this file except in compliance
  8 +@REM with the License. You may obtain a copy of the License at
  9 +@REM
  10 +@REM https://www.apache.org/licenses/LICENSE-2.0
  11 +@REM
  12 +@REM Unless required by applicable law or agreed to in writing,
  13 +@REM software distributed under the License is distributed on an
  14 +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15 +@REM KIND, either express or implied. See the License for the
  16 +@REM specific language governing permissions and limitations
  17 +@REM under the License.
  18 +@REM ----------------------------------------------------------------------------
  19 +
  20 +@REM ----------------------------------------------------------------------------
  21 +@REM Maven2 Start Up Batch script
  22 +@REM
  23 +@REM Required ENV vars:
  24 +@REM JAVA_HOME - location of a JDK home dir
  25 +@REM
  26 +@REM Optional ENV vars
  27 +@REM M2_HOME - location of maven2's installed home dir
  28 +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
  29 +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
  30 +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
  31 +@REM e.g. to debug Maven itself, use
  32 +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
  33 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
  34 +@REM ----------------------------------------------------------------------------
  35 +
  36 +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
  37 +@echo off
  38 +@REM set title of command window
  39 +title %0
  40 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
  41 +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
  42 +
  43 +@REM set %HOME% to equivalent of $HOME
  44 +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
  45 +
  46 +@REM Execute a user defined script before this one
  47 +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
  48 +@REM check for pre script, once with legacy .bat ending and once with .cmd ending
  49 +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
  50 +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
  51 +:skipRcPre
  52 +
  53 +@setlocal
  54 +
  55 +set ERROR_CODE=0
  56 +
  57 +@REM To isolate internal variables from possible post scripts, we use another setlocal
  58 +@setlocal
  59 +
  60 +@REM ==== START VALIDATION ====
  61 +if not "%JAVA_HOME%" == "" goto OkJHome
  62 +
  63 +echo.
  64 +echo Error: JAVA_HOME not found in your environment. >&2
  65 +echo Please set the JAVA_HOME variable in your environment to match the >&2
  66 +echo location of your Java installation. >&2
  67 +echo.
  68 +goto error
  69 +
  70 +:OkJHome
  71 +if exist "%JAVA_HOME%\bin\java.exe" goto init
  72 +
  73 +echo.
  74 +echo Error: JAVA_HOME is set to an invalid directory. >&2
  75 +echo JAVA_HOME = "%JAVA_HOME%" >&2
  76 +echo Please set the JAVA_HOME variable in your environment to match the >&2
  77 +echo location of your Java installation. >&2
  78 +echo.
  79 +goto error
  80 +
  81 +@REM ==== END VALIDATION ====
  82 +
  83 +:init
  84 +
  85 +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
  86 +@REM Fallback to current working directory if not found.
  87 +
  88 +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
  89 +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
  90 +
  91 +set EXEC_DIR=%CD%
  92 +set WDIR=%EXEC_DIR%
  93 +:findBaseDir
  94 +IF EXIST "%WDIR%"\.mvn goto baseDirFound
  95 +cd ..
  96 +IF "%WDIR%"=="%CD%" goto baseDirNotFound
  97 +set WDIR=%CD%
  98 +goto findBaseDir
  99 +
  100 +:baseDirFound
  101 +set MAVEN_PROJECTBASEDIR=%WDIR%
  102 +cd "%EXEC_DIR%"
  103 +goto endDetectBaseDir
  104 +
  105 +:baseDirNotFound
  106 +set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
  107 +cd "%EXEC_DIR%"
  108 +
  109 +:endDetectBaseDir
  110 +
  111 +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
  112 +
  113 +@setlocal EnableExtensions EnableDelayedExpansion
  114 +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
  115 +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
  116 +
  117 +:endReadAdditionalConfig
  118 +
  119 +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
  120 +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
  121 +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
  122 +
  123 +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
  124 +
  125 +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
  126 + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
  127 +)
  128 +
  129 +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
  130 +@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
  131 +if exist %WRAPPER_JAR% (
  132 + if "%MVNW_VERBOSE%" == "true" (
  133 + echo Found %WRAPPER_JAR%
  134 + )
  135 +) else (
  136 + if not "%MVNW_REPOURL%" == "" (
  137 + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
  138 + )
  139 + if "%MVNW_VERBOSE%" == "true" (
  140 + echo Couldn't find %WRAPPER_JAR%, downloading it ...
  141 + echo Downloading from: %DOWNLOAD_URL%
  142 + )
  143 +
  144 + powershell -Command "&{"^
  145 + "$webclient = new-object System.Net.WebClient;"^
  146 + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
  147 + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
  148 + "}"^
  149 + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
  150 + "}"
  151 + if "%MVNW_VERBOSE%" == "true" (
  152 + echo Finished downloading %WRAPPER_JAR%
  153 + )
  154 +)
  155 +@REM End of extension
  156 +
  157 +@REM Provide a "standardized" way to retrieve the CLI args that will
  158 +@REM work with both Windows and non-Windows executions.
  159 +set MAVEN_CMD_LINE_ARGS=%*
  160 +
  161 +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
  162 +if ERRORLEVEL 1 goto error
  163 +goto end
  164 +
  165 +:error
  166 +set ERROR_CODE=1
  167 +
  168 +:end
  169 +@endlocal & set ERROR_CODE=%ERROR_CODE%
  170 +
  171 +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
  172 +@REM check for post script, once with legacy .bat ending and once with .cmd ending
  173 +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
  174 +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
  175 +:skipRcPost
  176 +
  177 +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
  178 +if "%MAVEN_BATCH_PAUSE%" == "on" pause
  179 +
  180 +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
  181 +
  182 +exit /B %ERROR_CODE%
... ...
pom.xml 0 → 100644
  1 +++ a/pom.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <parent>
  6 + <groupId>org.springframework.boot</groupId>
  7 + <artifactId>spring-boot-starter-parent</artifactId>
  8 + <version>1.5.2.RELEASE</version>
  9 + <relativePath/> <!-- lookup parent from repository -->
  10 + </parent>
  11 + <groupId>com</groupId>
  12 + <artifactId>average_speed</artifactId>
  13 + <version>0.0.1-SNAPSHOT</version>
  14 + <name>average_speed</name>
  15 + <description>Demo project for Spring Boot</description>
  16 +
  17 + <properties>
  18 + <java.version>1.7</java.version>
  19 + </properties>
  20 +
  21 + <dependencies>
  22 + <dependency>
  23 + <groupId>org.springframework.boot</groupId>
  24 + <artifactId>spring-boot-starter</artifactId>
  25 + </dependency>
  26 +
  27 + <dependency>
  28 + <groupId>org.springframework.boot</groupId>
  29 + <artifactId>spring-boot-starter-web</artifactId>
  30 + </dependency>
  31 +
  32 + <dependency>
  33 + <groupId>org.springframework.boot</groupId>
  34 + <artifactId>spring-boot-starter-data-jpa</artifactId>
  35 + </dependency>
  36 + <dependency>
  37 + <groupId>mysql</groupId>
  38 + <artifactId>mysql-connector-java</artifactId>
  39 + </dependency>
  40 +
  41 + <dependency>
  42 + <groupId>com.alibaba</groupId>
  43 + <artifactId>fastjson</artifactId>
  44 + <version>1.2.4</version>
  45 + </dependency>
  46 +
  47 + <dependency>
  48 + <groupId>org.apache.httpcomponents</groupId>
  49 + <artifactId>httpclient</artifactId>
  50 + </dependency>
  51 +
  52 + <dependency>
  53 + <groupId>joda-time</groupId>
  54 + <artifactId>joda-time</artifactId>
  55 + </dependency>
  56 + <dependency>
  57 + <groupId>c3p0</groupId>
  58 + <artifactId>c3p0</artifactId>
  59 + <version>0.9.1.2</version>
  60 + </dependency>
  61 + <dependency>
  62 + <groupId>commons-dbcp</groupId>
  63 + <artifactId>commons-dbcp</artifactId>
  64 + </dependency>
  65 + <dependency>
  66 + <groupId>commons-lang</groupId>
  67 + <artifactId>commons-lang</artifactId>
  68 + <version>2.6</version>
  69 + </dependency>
  70 + <dependency>
  71 + <groupId>org.apache.commons</groupId>
  72 + <artifactId>commons-lang3</artifactId>
  73 + <version>3.4</version>
  74 + </dependency>
  75 + <dependency>
  76 + <groupId>commons-fileupload</groupId>
  77 + <artifactId>commons-fileupload</artifactId>
  78 + <version>1.2.2</version>
  79 + </dependency>
  80 + <dependency>
  81 + <groupId>commons-io</groupId>
  82 + <artifactId>commons-io</artifactId>
  83 + <version>2.4</version>
  84 + </dependency>
  85 + <dependency>
  86 + <groupId>com.fasterxml.jackson.jaxrs</groupId>
  87 + <artifactId>jackson-jaxrs-json-provider</artifactId>
  88 + <version>2.8.7</version>
  89 + </dependency>
  90 + <dependency>
  91 + <groupId>log4j</groupId>
  92 + <artifactId>log4j</artifactId>
  93 + <version>1.2.17</version>
  94 + </dependency>
  95 +
  96 + <dependency>
  97 + <groupId>javax.servlet</groupId>
  98 + <artifactId>javax.servlet-api</artifactId>
  99 + <version>3.1.0</version>
  100 + <scope>provided</scope>
  101 + </dependency>
  102 + </dependencies>
  103 +
  104 + <build>
  105 + <plugins>
  106 + <plugin>
  107 + <groupId>org.springframework.boot</groupId>
  108 + <artifactId>spring-boot-maven-plugin</artifactId>
  109 + </plugin>
  110 + </plugins>
  111 + </build>
  112 +
  113 +</project>
... ...
src/main/java/com/bsth/BsthApplication.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/BsthApplication.java
  1 +package com.bsth;
  2 +
  3 +import org.springframework.boot.SpringApplication;
  4 +import org.springframework.boot.autoconfigure.SpringBootApplication;
  5 +import org.springframework.boot.builder.SpringApplicationBuilder;
  6 +import org.springframework.boot.web.support.SpringBootServletInitializer;
  7 +//import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
  8 +
  9 +@SpringBootApplication
  10 +public class BsthApplication extends SpringBootServletInitializer {
  11 +
  12 + @Override
  13 + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  14 + return application.sources(BsthApplication.class);
  15 + }
  16 +
  17 + public static void main(String[] args) {
  18 + SpringApplication.run(BsthApplication.class, args);
  19 + }
  20 +
  21 +}
... ...
src/main/java/com/bsth/StartCommand.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/StartCommand.java
  1 +package com.bsth;
  2 +
  3 +
  4 +import com.bsth.thread.AverageSpeedThrad;
  5 +import com.bsth.util.DateUtils;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.boot.CommandLineRunner;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import java.util.Calendar;
  13 +import java.util.Date;
  14 +import java.util.concurrent.Executors;
  15 +import java.util.concurrent.ScheduledExecutorService;
  16 +import java.util.concurrent.TimeUnit;
  17 +
  18 +
  19 +/**
  20 + * 随应用启动运行
  21 + *
  22 + */
  23 +@Component
  24 +public class StartCommand implements CommandLineRunner {
  25 +
  26 + public static ScheduledExecutorService mainServices = Executors.newScheduledThreadPool(2);
  27 +
  28 + Logger log = LoggerFactory.getLogger(this.getClass());
  29 +
  30 + public static String RQ ="";
  31 +
  32 + private static long timeDiff;
  33 +
  34 + @Autowired
  35 + AverageSpeedThrad averageSpeedThrad;
  36 +
  37 + static {
  38 + Date date = new Date();
  39 + Calendar cal = Calendar.getInstance();
  40 + cal.setTime(date);
  41 + int year = cal.get(Calendar.YEAR);
  42 + int month = cal.get(Calendar.MONTH) + 1;
  43 + RQ = year+"-"+(month<10?"0"+month:month);
  44 + // 早上02:30
  45 + timeDiff = (DateUtils.getTimestamp() + 1000 * 60 * 150) - System.currentTimeMillis();
  46 + if (timeDiff < 0)
  47 + timeDiff += (1000 * 60 * 60 * 24);
  48 + }
  49 +
  50 + @Override
  51 + public void run(String... arg0){
  52 +
  53 + try {
  54 + log.info(":"+timeDiff / 1000 / 60 + "分钟后统计修正班次和公里报表");
  55 + mainServices.scheduleAtFixedRate(averageSpeedThrad, timeDiff / 1000, 60*60*24, TimeUnit.MINUTES);//timeDiff / 1000
  56 +// mainServices.scheduleAtFixedRate(averageSpeedThrad, 1, 60*60*24, TimeUnit.SECONDS);//timeDiff / 1000
  57 + } catch (Exception e) {
  58 + e.printStackTrace();
  59 + }
  60 + }
  61 +}
... ...
src/main/java/com/bsth/common/ResponseCode.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/common/ResponseCode.java
  1 +package com.bsth.common;
  2 +
  3 +/**
  4 + *
  5 + * @ClassName: ResponseCode
  6 + * @Description: TODO(响应状态码)
  7 + * @author PanZhao
  8 + * @date 2016年3月18日 下午11:12:08
  9 + *
  10 + */
  11 +public enum ResponseCode {
  12 +
  13 + SUCCESS("操作成功", 200),
  14 + NO_PERMISSION("无资源访问权限", 403),
  15 + NO_AUTHENTICATION("客户端未授权", 407),
  16 + ERROR("服务器异常", 500);
  17 +
  18 + private String text;
  19 + private int code;
  20 +
  21 + ResponseCode(String text, int code) {
  22 + this.text = text;
  23 + this.code = code;
  24 + }
  25 +
  26 + @Override
  27 + public String toString() {
  28 + return this.code + "";
  29 + }
  30 +
  31 + public String getText() {
  32 + return this.text;
  33 + }
  34 +}
... ...
src/main/java/com/bsth/entity/ChildTaskPlan.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/entity/ChildTaskPlan.java
  1 +package com.bsth.entity;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonIgnore;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.Date;
  7 +
  8 +
  9 +/**
  10 + *
  11 + * @ClassName: ChildTaskPlan
  12 + * @Description: TODO(子任务)
  13 + * @author PanZhao
  14 + * @date 2016年6月20日 上午11:22:22
  15 + *
  16 + */
  17 +@Entity
  18 +@Table(name = "bsth_c_s_child_task")
  19 +@NamedEntityGraphs({
  20 + @NamedEntityGraph(name = "childTaskPlan_schedule", attributeNodes = {
  21 + @NamedAttributeNode("schedule")
  22 + })
  23 +})
  24 +public class ChildTaskPlan {
  25 +
  26 + @Id
  27 + @GeneratedValue
  28 + private Long id;
  29 +
  30 + /**
  31 + * 任务类型1
  32 + * 正常,临加
  33 + */
  34 + private String type1;
  35 +
  36 + /**
  37 + * 任务类型2
  38 + */
  39 + private String type2;
  40 +
  41 + /**
  42 + * 起点
  43 + */
  44 + private String startStation;
  45 +
  46 + /**
  47 + * 起点站名称
  48 + */
  49 + private String startStationName;
  50 +
  51 + /**
  52 + * 终点
  53 + */
  54 + private String endStation;
  55 +
  56 + /**
  57 + * 终点站名称
  58 + */
  59 + private String endStationName;
  60 +
  61 + /**
  62 + * 里程类型
  63 + */
  64 + private String mileageType;
  65 +
  66 + /**
  67 + * 里程
  68 + */
  69 + private Float mileage;
  70 +
  71 + /**
  72 + * 开始时间 HH:mm
  73 + */
  74 + private String startDate;
  75 +
  76 + /**
  77 + * 结束时间 HH:mm
  78 + */
  79 + private String endDate;
  80 +
  81 + /**
  82 + * 是否烂班
  83 + */
  84 + private boolean destroy;
  85 +
  86 + /**
  87 + * 烂班原因 -烂班时,该字段仍有值并 =reason
  88 + */
  89 + private String destroyReason;
  90 +
  91 + /**
  92 + * 包括 烂班原因、进出场原因、换车原因 等
  93 + */
  94 + private String reason;
  95 +
  96 + /**
  97 + * 车辆 如果为空,继承主任务
  98 + */
  99 + private String nbbm;
  100 +
  101 + /**
  102 + * 为true 则无售票员, 否则继承主任务
  103 + */
  104 + private boolean noClerk;
  105 +
  106 + /** 创建日期 */
  107 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  108 + private Date createDate;
  109 +
  110 + /**
  111 + * 主排班计划
  112 + */
  113 + @JsonIgnore
  114 + @ManyToOne(fetch = FetchType.LAZY)
  115 + @JoinColumn(name = "schedule")
  116 + private ScheduleRealInfo schedule;
  117 +
  118 + private String remarks;
  119 +
  120 + public Long getId() {
  121 + return id;
  122 + }
  123 +
  124 + public void setId(Long id) {
  125 + this.id = id;
  126 + }
  127 +
  128 + public String getType1() {
  129 + return type1;
  130 + }
  131 +
  132 + public void setType1(String type1) {
  133 + this.type1 = type1;
  134 + }
  135 +
  136 + public String getType2() {
  137 + return type2;
  138 + }
  139 +
  140 + public void setType2(String type2) {
  141 + this.type2 = type2;
  142 + }
  143 +
  144 + public String getStartStation() {
  145 + return startStation;
  146 + }
  147 +
  148 + public void setStartStation(String startStation) {
  149 + this.startStation = startStation;
  150 + }
  151 +
  152 + public String getEndStation() {
  153 + return endStation;
  154 + }
  155 +
  156 + public void setEndStation(String endStation) {
  157 + this.endStation = endStation;
  158 + }
  159 +
  160 + public String getMileageType() {
  161 + return mileageType;
  162 + }
  163 +
  164 + public void setMileageType(String mileageType) {
  165 + this.mileageType = mileageType;
  166 + }
  167 +
  168 + public Float getMileage() {
  169 + return mileage;
  170 + }
  171 +
  172 + public void setMileage(Float mileage) {
  173 + this.mileage = mileage;
  174 + }
  175 +
  176 + public String getStartDate() {
  177 + return startDate;
  178 + }
  179 +
  180 + public void setStartDate(String startDate) {
  181 + this.startDate = startDate;
  182 + }
  183 +
  184 + public String getEndDate() {
  185 + return endDate;
  186 + }
  187 +
  188 + public void setEndDate(String endDate) {
  189 + this.endDate = endDate;
  190 + }
  191 +
  192 + public boolean isDestroy() {
  193 + return destroy;
  194 + }
  195 +
  196 + public void setDestroy(boolean destroy) {
  197 + this.destroy = destroy;
  198 + }
  199 +
  200 + public String getDestroyReason() {
  201 + return destroyReason;
  202 + }
  203 +
  204 + public void setDestroyReason(String destroyReason) {
  205 + this.destroyReason = destroyReason;
  206 + }
  207 +
  208 + public ScheduleRealInfo getSchedule() {
  209 + return schedule;
  210 + }
  211 +
  212 + public void setSchedule(ScheduleRealInfo schedule) {
  213 + this.schedule = schedule;
  214 + }
  215 +
  216 + public String getRemarks() {
  217 + return remarks;
  218 + }
  219 +
  220 + public void setRemarks(String remarks) {
  221 + this.remarks = remarks;
  222 + }
  223 +
  224 + public String getStartStationName() {
  225 + return startStationName;
  226 + }
  227 +
  228 + public void setStartStationName(String startStationName) {
  229 + this.startStationName = startStationName;
  230 + }
  231 +
  232 + public String getEndStationName() {
  233 + return endStationName;
  234 + }
  235 +
  236 + public void setEndStationName(String endStationName) {
  237 + this.endStationName = endStationName;
  238 + }
  239 +
  240 + @Override
  241 + public int hashCode() {
  242 + return ("cTask" + this.getId() + this.getSchedule().getId()).hashCode();
  243 + }
  244 +
  245 + @Override
  246 + public boolean equals(Object obj) {
  247 + return this.id.equals(((ChildTaskPlan)obj).getId());
  248 + }
  249 +
  250 + public Date getCreateDate() {
  251 + return createDate;
  252 + }
  253 +
  254 + public void setCreateDate(Date createDate) {
  255 + this.createDate = createDate;
  256 + }
  257 +
  258 + public String getReason() {
  259 + return reason;
  260 + }
  261 +
  262 + public void setReason(String reason) {
  263 + this.reason = reason;
  264 + }
  265 +
  266 + public String getNbbm() {
  267 + return nbbm;
  268 + }
  269 +
  270 + public void setNbbm(String nbbm) {
  271 + this.nbbm = nbbm;
  272 + }
  273 +
  274 + public boolean isNoClerk() {
  275 + return noClerk;
  276 + }
  277 +
  278 + public void setNoClerk(boolean noClerk) {
  279 + this.noClerk = noClerk;
  280 + }
  281 +}
... ...
src/main/java/com/bsth/entity/Equipment.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/entity/Equipment.java
  1 +package com.bsth.entity;
  2 +/**
  3 + * @ClassName: Equipment.java
  4 + * @Description: TODO(车辆自编号to设备号)
  5 + * @author: YouRuiFeng
  6 + * @date: 2017-8-30 下午7:36:07
  7 + *
  8 + */
  9 +public class Equipment {
  10 +
  11 + private String inside_code;
  12 +
  13 + private String equipment_code;
  14 +
  15 + public String getInside_code() {
  16 + return inside_code;
  17 + }
  18 +
  19 + public void setInside_code(String inside_code) {
  20 + this.inside_code = inside_code;
  21 + }
  22 +
  23 + public String getEquipment_code() {
  24 + return equipment_code;
  25 + }
  26 +
  27 + public void setEquipment_code(String equipment_code) {
  28 + this.equipment_code = equipment_code;
  29 + }
  30 +
  31 +}
... ...
src/main/java/com/bsth/entity/SchedulePlanInfo.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/entity/SchedulePlanInfo.java
  1 +package com.bsth.entity;
  2 +
  3 +import javax.persistence.Column;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.GeneratedValue;
  6 +import javax.persistence.Id;
  7 +import javax.persistence.Table;
  8 +import java.sql.PreparedStatement;
  9 +import java.sql.SQLException;
  10 +import java.sql.Types;
  11 +import java.util.Date;
  12 +
  13 +/**
  14 + * 排班计划明细。
  15 + * 内部字段全冗余,无关联对象(外键关联关系),
  16 + * 可以单独存在,其余表要关联此对象/表,必须使用中间对象/表。
  17 + */
  18 +//@Entity
  19 +//@Table(name = "bsth_c_s_sp_info")
  20 +public class SchedulePlanInfo {
  21 +
  22 + /** 主键Id */
  23 + @Id
  24 + @GeneratedValue
  25 + private Long id;
  26 +
  27 + /** 排班计划日期 */
  28 + @Column(nullable = false)
  29 + private Date scheduleDate;
  30 +
  31 + /** 关联的公司名称 */
  32 + private String gsName;
  33 + /** 关联的公司编码 */
  34 + private String gsBm;
  35 + /** 关联的分公司名称 */
  36 + private String fgsName;
  37 + /** 关联的分公司编码 */
  38 + private String fgsBm;
  39 + /** 出场顺序号 */
  40 + private Integer ccno;
  41 +
  42 + /** 关联 bsth_c_line 主键,不做mapping */
  43 + @Column(nullable = false)
  44 + private Integer xl;
  45 + /** 线路名称 */
  46 + @Column(nullable = false)
  47 + private String xlName;
  48 + /** 线路编码 */
  49 + @Column(nullable = false)
  50 + private String xlBm;
  51 +
  52 + /** 关联 bsth_c_s_gbi 主键,不做mapping */
  53 + @Column(nullable = false)
  54 + private Long lp;
  55 + /** 路牌名称 */
  56 + @Column(nullable = false)
  57 + private String lpName;
  58 +
  59 + /** 关联 bsth_c_cars 主键,不做mapping */
  60 + @Column(nullable = false)
  61 + private Integer cl;
  62 + /** 车辆自编号 */
  63 + @Column(nullable = false)
  64 + private String clZbh;
  65 +
  66 + /** 当分班的时候,驾驶员会不一样,具体根据规则,还有时刻表决定 */
  67 + /** 报道时间(格式 HH:mm) */
  68 + private String bdTime;
  69 + /** 出场时间(格式 HH:mm) */
  70 + private String ccTime;
  71 + /** 关联的驾驶员 bsth_c_personnel 主键,不做mapping */
  72 + @Column(nullable = false)
  73 + private Integer j;
  74 + /** 驾驶员工号 */
  75 + @Column(nullable = false)
  76 + private String jGh;
  77 + /** 驾驶员名字 */
  78 + @Column(nullable = false)
  79 + private String jName;
  80 + /** 关联的售票员 bsth_c_personnel 主键,不做mapping */
  81 + private Integer s;
  82 + /** 售票员工号 */
  83 + private String sGh;
  84 + /** 售票员名字 */
  85 + private String sName;
  86 +
  87 + // 冗余的时刻明细信息,不做mapping
  88 + /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */
  89 + @Column(nullable = false)
  90 + private String xlDir;
  91 + /** 起点站id,根据班次类型,会关联 bsth_c_station,或 bsth_c_car_park,不做mapping */
  92 + // 这个字段以后不用了
  93 +// @Column(nullable = false)
  94 +// private Integer qdz;
  95 + /** 起点站code */
  96 + private String qdzCode;
  97 + /** 起点站名字 */
  98 + @Column(nullable = false)
  99 + private String qdzName;
  100 + /** 终点站id,根据班次类型,会关联 bsth_c_station,或 bsth_c_car_park,不做mapping */
  101 + // 这个字段以后不用了
  102 +// @Column(nullable = false)
  103 +// private Integer zdz;
  104 + /** 终点站code */
  105 + private String zdzCode;
  106 + /** 终点站名字 */
  107 + @Column(nullable = false)
  108 + private String zdzName;
  109 +
  110 + /** 发车时间(格式 HH:mm) */
  111 + @Column(nullable = false)
  112 + private String fcsj;
  113 + /** 发车顺序号 */
  114 + @Column(nullable = false)
  115 + private Integer fcno;
  116 + /** 对应班次数 */
  117 + @Column(nullable = false)
  118 + private Integer bcs;
  119 + /** 计划里程 */
  120 + private Double jhlc;
  121 + /** 班次历时 */
  122 + private Integer bcsj;
  123 +
  124 + /** 班次类型 字典type=ScheduleType */
  125 + @Column(nullable = false)
  126 + private String bcType;
  127 +
  128 + // 重要的新增字段
  129 + /** 关联的时刻表id */
  130 + private Long ttInfo;
  131 + /** 关联的时刻表名字 */
  132 + private String ttInfoName;
  133 +
  134 + /** 时刻表的明细备注 */
  135 + private String remark;
  136 +
  137 + //---------------- 修改时使用的字段 -----------------//
  138 + /** 调整原因(在调度执勤日报页面中修改,选择营运状态) */
  139 + private Integer modifyReason;
  140 + /** 调整的备注(在调度执勤日报页面中修改,与时刻表的班次备注区分开) */
  141 + private String modifyRemark;
  142 + /** 调整的次数(在调度执勤日报页面,排班计划明细里,改的话都会增加) */
  143 + private Integer modifyCount;
  144 +
  145 + public void preparedStatementSet(PreparedStatement ps) throws SQLException {
  146 + if (this.scheduleDate != null) ps.setDate(1, new java.sql.Date(this.scheduleDate.getTime())); else ps.setNull(1, Types.DATE);
  147 + if (this.gsName != null) ps.setString(2, this.gsName); else ps.setNull(2, Types.VARCHAR);
  148 + if (this.gsBm != null) ps.setString(3, this.gsBm); else ps.setNull(3, Types.VARCHAR);
  149 + if (this.fgsName != null) ps.setString(4, this.fgsName); else ps.setNull(4, Types.VARCHAR);
  150 + if (this.fgsBm != null) ps.setString(5, this.fgsBm); else ps.setNull(5, Types.VARCHAR);
  151 + if (this.ccno != null) ps.setInt(6, this.ccno); else ps.setNull(6, Types.INTEGER);
  152 + if (this.xl != null) ps.setInt(7, this.xl); else ps.setNull(7, Types.INTEGER);
  153 + if (this.xlName != null) ps.setString(8, this.xlName); else ps.setNull(8, Types.VARCHAR);
  154 + if (this.xlBm != null) ps.setString(9, this.xlBm); else ps.setNull(9, Types.VARCHAR);
  155 + if (this.lp != null) ps.setLong(10, this.lp); else ps.setNull(10, Types.BIGINT);
  156 + if (this.lpName != null) ps.setString(11, this.lpName); else ps.setNull(11, Types.VARCHAR);
  157 + if (this.cl != null) ps.setInt(12, this.cl); else ps.setNull(12, Types.INTEGER);
  158 + if (this.clZbh != null) ps.setString(13, this.clZbh); else ps.setNull(13, Types.VARCHAR);
  159 + if (this.bdTime != null) ps.setString(14, this.bdTime); else ps.setNull(14, Types.VARCHAR);
  160 + if (this.ccTime != null) ps.setString(15, this.ccTime); else ps.setNull(15, Types.VARCHAR);
  161 + if (this.j != null) ps.setInt(16, this.j); else ps.setNull(16, Types.INTEGER);
  162 + if (this.jGh != null) ps.setString(17, this.jGh); else ps.setNull(17, Types.VARCHAR);
  163 + if (this.jName != null) ps.setString(18, this.jName); else ps.setNull(18, Types.VARCHAR);
  164 + if (this.s != null) ps.setInt(19, this.s); else ps.setNull(19, Types.INTEGER);
  165 + if (this.sGh != null) ps.setString(20, this.sGh); else ps.setNull(20, Types.VARCHAR);
  166 + if (this.sName != null) ps.setString(21, this.sName); else ps.setNull(21, Types.VARCHAR);
  167 + if (this.xlDir != null) ps.setString(22, this.xlDir); else ps.setNull(22, Types.VARCHAR);
  168 + if (this.qdzCode != null) ps.setString(23, this.qdzCode); else ps.setNull(23, Types.VARCHAR);
  169 + if (this.qdzName != null) ps.setString(24, this.qdzName); else ps.setNull(24, Types.VARCHAR);
  170 + if (this.zdzCode != null) ps.setString(25, this.zdzCode); else ps.setNull(25, Types.VARCHAR);
  171 + if (this.zdzName != null) ps.setString(26, this.zdzName); else ps.setNull(26, Types.VARCHAR);
  172 + if (this.fcsj != null) ps.setString(27, this.fcsj); else ps.setNull(27, Types.VARCHAR);
  173 + if (this.fcno != null) ps.setInt(28, this.fcno); else ps.setNull(28, Types.INTEGER);
  174 + if (this.bcs != null) ps.setInt(29, this.bcs); else ps.setNull(29, Types.INTEGER);
  175 + if (this.jhlc != null) ps.setDouble(30, this.jhlc); else ps.setNull(30, Types.DOUBLE);
  176 + if (this.bcsj != null) ps.setInt(31, this.bcsj); else ps.setNull(31, Types.INTEGER);
  177 + if (this.bcType != null) ps.setString(32, this.bcType); else ps.setNull(32, Types.VARCHAR);
  178 + if (this.ttInfo != null) ps.setLong(33, this.ttInfo); else ps.setNull(33, Types.BIGINT);
  179 + if (this.ttInfoName != null) ps.setString(34, this.ttInfoName); else ps.setNull(34, Types.VARCHAR);
  180 + if (this.remark != null) ps.setString(35, this.remark); else ps.setNull(35, Types.VARCHAR);
  181 + }
  182 +
  183 + public Long getId() {
  184 + return id;
  185 + }
  186 +
  187 + public void setId(Long id) {
  188 + this.id = id;
  189 + }
  190 +
  191 + public Date getScheduleDate() {
  192 + return scheduleDate;
  193 + }
  194 +
  195 + public void setScheduleDate(Date scheduleDate) {
  196 + this.scheduleDate = scheduleDate;
  197 + }
  198 +
  199 + public String getGsName() {
  200 + return gsName;
  201 + }
  202 +
  203 + public void setGsName(String gsName) {
  204 + this.gsName = gsName;
  205 + }
  206 +
  207 + public String getGsBm() {
  208 + return gsBm;
  209 + }
  210 +
  211 + public void setGsBm(String gsBm) {
  212 + this.gsBm = gsBm;
  213 + }
  214 +
  215 + public String getFgsName() {
  216 + return fgsName;
  217 + }
  218 +
  219 + public void setFgsName(String fgsName) {
  220 + this.fgsName = fgsName;
  221 + }
  222 +
  223 + public String getFgsBm() {
  224 + return fgsBm;
  225 + }
  226 +
  227 + public void setFgsBm(String fgsBm) {
  228 + this.fgsBm = fgsBm;
  229 + }
  230 +
  231 + public Integer getCcno() {
  232 + return ccno;
  233 + }
  234 +
  235 + public void setCcno(Integer ccno) {
  236 + this.ccno = ccno;
  237 + }
  238 +
  239 + public Integer getXl() {
  240 + return xl;
  241 + }
  242 +
  243 + public void setXl(Integer xl) {
  244 + this.xl = xl;
  245 + }
  246 +
  247 + public String getXlName() {
  248 + return xlName;
  249 + }
  250 +
  251 + public void setXlName(String xlName) {
  252 + this.xlName = xlName;
  253 + }
  254 +
  255 + public String getXlBm() {
  256 + return xlBm;
  257 + }
  258 +
  259 + public void setXlBm(String xlBm) {
  260 + this.xlBm = xlBm;
  261 + }
  262 +
  263 + public Long getLp() {
  264 + return lp;
  265 + }
  266 +
  267 + public void setLp(Long lp) {
  268 + this.lp = lp;
  269 + }
  270 +
  271 + public String getLpName() {
  272 + return lpName;
  273 + }
  274 +
  275 + public void setLpName(String lpName) {
  276 + this.lpName = lpName;
  277 + }
  278 +
  279 + public Integer getCl() {
  280 + return cl;
  281 + }
  282 +
  283 + public void setCl(Integer cl) {
  284 + this.cl = cl;
  285 + }
  286 +
  287 + public String getClZbh() {
  288 + return clZbh;
  289 + }
  290 +
  291 + public void setClZbh(String clZbh) {
  292 + this.clZbh = clZbh;
  293 + }
  294 +
  295 + public String getBdTime() {
  296 + return bdTime;
  297 + }
  298 +
  299 + public void setBdTime(String bdTime) {
  300 + this.bdTime = bdTime;
  301 + }
  302 +
  303 + public String getCcTime() {
  304 + return ccTime;
  305 + }
  306 +
  307 + public void setCcTime(String ccTime) {
  308 + this.ccTime = ccTime;
  309 + }
  310 +
  311 + public Integer getJ() {
  312 + return j;
  313 + }
  314 +
  315 + public void setJ(Integer j) {
  316 + this.j = j;
  317 + }
  318 +
  319 + public String getjGh() {
  320 + return jGh;
  321 + }
  322 +
  323 + public void setjGh(String jGh) {
  324 + this.jGh = jGh;
  325 + }
  326 +
  327 + public String getjName() {
  328 + return jName;
  329 + }
  330 +
  331 + public void setjName(String jName) {
  332 + this.jName = jName;
  333 + }
  334 +
  335 + public Integer getS() {
  336 + return s;
  337 + }
  338 +
  339 + public void setS(Integer s) {
  340 + this.s = s;
  341 + }
  342 +
  343 + public String getsGh() {
  344 + return sGh;
  345 + }
  346 +
  347 + public void setsGh(String sGh) {
  348 + this.sGh = sGh;
  349 + }
  350 +
  351 + public String getsName() {
  352 + return sName;
  353 + }
  354 +
  355 + public void setsName(String sName) {
  356 + this.sName = sName;
  357 + }
  358 +
  359 + public String getXlDir() {
  360 + return xlDir;
  361 + }
  362 +
  363 + public void setXlDir(String xlDir) {
  364 + this.xlDir = xlDir;
  365 + }
  366 +
  367 + public String getQdzCode() {
  368 + return qdzCode;
  369 + }
  370 +
  371 + public void setQdzCode(String qdzCode) {
  372 + this.qdzCode = qdzCode;
  373 + }
  374 +
  375 + public String getQdzName() {
  376 + return qdzName;
  377 + }
  378 +
  379 + public void setQdzName(String qdzName) {
  380 + this.qdzName = qdzName;
  381 + }
  382 +
  383 + public String getZdzCode() {
  384 + return zdzCode;
  385 + }
  386 +
  387 + public void setZdzCode(String zdzCode) {
  388 + this.zdzCode = zdzCode;
  389 + }
  390 +
  391 + public String getZdzName() {
  392 + return zdzName;
  393 + }
  394 +
  395 + public void setZdzName(String zdzName) {
  396 + this.zdzName = zdzName;
  397 + }
  398 +
  399 + public String getFcsj() {
  400 + return fcsj;
  401 + }
  402 +
  403 + public void setFcsj(String fcsj) {
  404 + this.fcsj = fcsj;
  405 + }
  406 +
  407 + public Integer getFcno() {
  408 + return fcno;
  409 + }
  410 +
  411 + public void setFcno(Integer fcno) {
  412 + this.fcno = fcno;
  413 + }
  414 +
  415 + public Integer getBcs() {
  416 + return bcs;
  417 + }
  418 +
  419 + public void setBcs(Integer bcs) {
  420 + this.bcs = bcs;
  421 + }
  422 +
  423 + public Double getJhlc() {
  424 + return jhlc;
  425 + }
  426 +
  427 + public void setJhlc(Double jhlc) {
  428 + this.jhlc = jhlc;
  429 + }
  430 +
  431 + public Integer getBcsj() {
  432 + return bcsj;
  433 + }
  434 +
  435 + public void setBcsj(Integer bcsj) {
  436 + this.bcsj = bcsj;
  437 + }
  438 +
  439 + public String getBcType() {
  440 + return bcType;
  441 + }
  442 +
  443 + public void setBcType(String bcType) {
  444 + this.bcType = bcType;
  445 + }
  446 +
  447 + public Long getTtInfo() {
  448 + return ttInfo;
  449 + }
  450 +
  451 + public void setTtInfo(Long ttInfo) {
  452 + this.ttInfo = ttInfo;
  453 + }
  454 +
  455 + public String getTtInfoName() {
  456 + return ttInfoName;
  457 + }
  458 +
  459 + public void setTtInfoName(String ttInfoName) {
  460 + this.ttInfoName = ttInfoName;
  461 + }
  462 +
  463 + public String getRemark() {
  464 + return remark;
  465 + }
  466 +
  467 + public void setRemark(String remark) {
  468 + this.remark = remark;
  469 + }
  470 +
  471 + public Integer getModifyReason() {
  472 + return modifyReason;
  473 + }
  474 +
  475 + public void setModifyReason(Integer modifyReason) {
  476 + this.modifyReason = modifyReason;
  477 + }
  478 +
  479 + public String getModifyRemark() {
  480 + return modifyRemark;
  481 + }
  482 +
  483 + public void setModifyRemark(String modifyRemark) {
  484 + this.modifyRemark = modifyRemark;
  485 + }
  486 +
  487 + public Integer getModifyCount() {
  488 + return modifyCount;
  489 + }
  490 +
  491 + public void setModifyCount(Integer modifyCount) {
  492 + this.modifyCount = modifyCount;
  493 + }
  494 +}
... ...
src/main/java/com/bsth/entity/ScheduleRealInfo.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/entity/ScheduleRealInfo.java
  1 +package com.bsth.entity;
  2 +
  3 +import org.joda.time.format.DateTimeFormat;
  4 +import org.joda.time.format.DateTimeFormatter;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.FetchType;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.OneToMany;
  10 +import javax.persistence.Table;
  11 +import javax.persistence.Transient;
  12 +import java.io.Serializable;
  13 +import java.util.Date;
  14 +import java.util.HashSet;
  15 +import java.util.Set;
  16 +
  17 +/**
  18 + * 实际排班计划明细。
  19 + */
  20 +@Entity
  21 +@Table(name = "bsth_c_s_sp_info_real")
  22 +//@NamedEntityGraphs({
  23 +// @NamedEntityGraph(name = "scheduleRealInfo_cTasks", attributeNodes = {
  24 +// @NamedAttributeNode("cTasks")
  25 +// })
  26 +//})
  27 +public class ScheduleRealInfo implements Serializable{
  28 +
  29 +
  30 + /** 主键Id */
  31 + @Id
  32 + private Long id;
  33 +
  34 + /** 计划ID */
  35 + private Long spId;
  36 +
  37 + /** 排班计划日期 */
  38 + private Date scheduleDate;
  39 + private String scheduleDateStr;
  40 +
  41 + /** 真实执行时间 yyyy-MM-dd */
  42 + private String realExecDate;
  43 +
  44 + /** 线路名称 */
  45 + private String xlName;
  46 + /** 线路编码 */
  47 + private String xlBm;
  48 +
  49 + /** 路牌名称 */
  50 + private String lpName;
  51 +
  52 + /** 立牌发车顺序 */
  53 + private String fcno;
  54 +
  55 + /** 停站时间 */
  56 + @Transient
  57 + private Integer tzsjActual;
  58 + /** 计划停站时间 */
  59 + @Transient
  60 + private Integer tzsj;
  61 + /** 相对停站时间 */
  62 + @Transient
  63 + private Integer xdtzsj;
  64 +
  65 + /** 车辆自编号 */
  66 + private String clZbh;
  67 +
  68 + /** 设备终端号*/
  69 + @Transient
  70 + private String equipment_code;
  71 +
  72 + /** 驾驶员工号 */
  73 + private String jGh;
  74 + /** 驾驶员名字 */
  75 + private String jName;
  76 + /** 售票员工号 */
  77 + private String sGh;
  78 + /** 售票员名字 */
  79 + private String sName;
  80 +
  81 + /** 线路方向 */
  82 + private String xlDir;
  83 + /** 起点站code*/
  84 + private String qdzCode;
  85 + /** 起点站名字 */
  86 + private String qdzName;
  87 +
  88 + /** 终点站code*/
  89 + private String zdzCode;
  90 + /** 终点站名字 */
  91 + private String zdzName;
  92 +
  93 + /** 计划发车时间(格式 HH:mm) */
  94 + private String fcsj;
  95 + /** 计划发车时间戳*/
  96 + @Transient
  97 + private Long fcsjT;
  98 +
  99 + /** 计划终点时间(格式 HH:mm) */
  100 + private String zdsj;
  101 + /** 计划终点时间戳*/
  102 + @Transient
  103 + private Long zdsjT;
  104 +
  105 + /** 计划里程 */
  106 + private Double jhlc;
  107 +
  108 + /** 原始计划里程 (原计调的数据) */
  109 + private Double jhlcOrig;
  110 +
  111 + /** 班次历时 */
  112 + private Integer bcsj;
  113 +
  114 + /**
  115 + * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
  116 + */
  117 + private String bcType;
  118 +
  119 + /** 实际发车时间*/
  120 + private String fcsjActual;
  121 + /** 实际发车时间戳*/
  122 + @Transient
  123 + private Long fcsjActualTime;
  124 + /**实际终点时间 */
  125 + private String zdsjActual;
  126 + /** 实际终点时间戳*/
  127 + @Transient
  128 + private Long zdsjActualTime;
  129 +
  130 + /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
  131 + private int status;
  132 +
  133 + private String adjustExps;
  134 +
  135 + /** 是否是临加班次 */
  136 + private boolean sflj;
  137 +
  138 + /** 备注*/
  139 + private String remarks;
  140 +
  141 + /**待发时间(格式 HH:mm) */
  142 + private String dfsj;
  143 +
  144 + //待发调试(是否自动调整)
  145 + private boolean dfAuto;
  146 +
  147 + /**计划用时 */
  148 + @Transient
  149 + private int jhTime;
  150 + /**实际用时 */
  151 + @Transient
  152 + private int sjTime;
  153 +
  154 + /**待发时间戳 */
  155 + @Transient
  156 + private Long dfsjT;
  157 +
  158 + /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */
  159 + private Integer directiveState = -1;
  160 +//
  161 +// /** 子任务 */
  162 +// @OneToMany(fetch = FetchType.LAZY, mappedBy = "schedule")
  163 +// private Set<ChildTaskPlan> cTasks = new HashSet<>();
  164 +
  165 + /** 关联的公司名称 */
  166 + private String gsName;
  167 + /** 关联的公司编码 */
  168 + private String gsBm;
  169 + /** 关联的分公司名称 */
  170 + private String fgsName;
  171 + /** 关联的分公司编码 */
  172 + private String fgsBm;
  173 +
  174 + /**
  175 + * 漂移状态
  176 + * 1: 发车漂移
  177 + * 2:到站漂移
  178 + * 3:中途漂移
  179 + */
  180 + private int driftStatus = 0;
  181 +
  182 +
  183 + //车牌设备号
  184 + @Transient
  185 + private String equipmentCode;
  186 +
  187 +
  188 + //班次类型
  189 + //平日假日
  190 + @Transient
  191 + private String ttInfoName;
  192 +
  193 +
  194 + public String getTtInfoName() {
  195 + return ttInfoName;
  196 + }
  197 + public void setTtInfoName(String ttInfoName) {
  198 + this.ttInfoName = ttInfoName;
  199 + }
  200 +
  201 + public boolean isDfAuto() {
  202 + return dfAuto;
  203 + }
  204 +
  205 + public void setDfAuto(boolean dfAuto) {
  206 + this.dfAuto = dfAuto;
  207 + }
  208 +
  209 + public boolean isDestroy(){
  210 + return this.status == -1;
  211 + }
  212 +
  213 + @Override
  214 + public int hashCode() {
  215 + return (this.id + this.scheduleDateStr + this.xlBm + this.fcsj).hashCode();
  216 + }
  217 +
  218 + @Override
  219 + public boolean equals(Object obj) {
  220 + return this.id.equals(((ScheduleRealInfo)obj).getId());
  221 + }
  222 +
  223 + public Long getId() {
  224 + return id;
  225 + }
  226 +
  227 + public void setId(Long id) {
  228 + this.id = id;
  229 + }
  230 +
  231 + public Long getSpId() {
  232 + return spId;
  233 + }
  234 +
  235 + public void setSpId(Long spId) {
  236 + this.spId = spId;
  237 + }
  238 +
  239 + public Date getScheduleDate() {
  240 + return scheduleDate;
  241 + }
  242 +
  243 + public void setScheduleDate(Date scheduleDate) {
  244 + this.scheduleDate = scheduleDate;
  245 + }
  246 +
  247 + public String getScheduleDateStr() {
  248 + return scheduleDateStr;
  249 + }
  250 +
  251 + public void setScheduleDateStr(String scheduleDateStr) {
  252 + this.scheduleDateStr = scheduleDateStr;
  253 + }
  254 +
  255 + public String getRealExecDate() {
  256 + return realExecDate;
  257 + }
  258 +
  259 + public void setRealExecDate(String realExecDate) {
  260 + this.realExecDate = realExecDate;
  261 + }
  262 +
  263 + public String getXlName() {
  264 + return xlName;
  265 + }
  266 +
  267 + public void setXlName(String xlName) {
  268 + this.xlName = xlName;
  269 + }
  270 +
  271 + public String getXlBm() {
  272 + return xlBm;
  273 + }
  274 +
  275 + public void setXlBm(String xlBm) {
  276 + this.xlBm = xlBm;
  277 + }
  278 +
  279 + public String getLpName() {
  280 + return lpName;
  281 + }
  282 +
  283 + public void setLpName(String lpName) {
  284 + this.lpName = lpName;
  285 + }
  286 +
  287 + public String getFcno() {
  288 + return fcno;
  289 + }
  290 +
  291 + public void setFcno(String fcno) {
  292 + this.fcno = fcno;
  293 + }
  294 +
  295 + public Integer getTzsjActual() {
  296 + return tzsjActual;
  297 + }
  298 +
  299 + public void setTzsjActual(Integer tzsjActual) {
  300 + this.tzsjActual = tzsjActual;
  301 + }
  302 +
  303 + public Integer getTzsj() {
  304 + return tzsj;
  305 + }
  306 +
  307 + public void setTzsj(Integer tzsj) {
  308 + this.tzsj = tzsj;
  309 + }
  310 +
  311 + public Integer getXdtzsj() {
  312 + return xdtzsj;
  313 + }
  314 +
  315 + public void setXdtzsj(Integer xdtzsj) {
  316 + this.xdtzsj = xdtzsj;
  317 + }
  318 +
  319 + public String getClZbh() {
  320 + return clZbh;
  321 + }
  322 +
  323 + public void setClZbh(String clZbh) {
  324 + this.clZbh = clZbh;
  325 + }
  326 +
  327 + public String getEquipment_code() {
  328 + return equipment_code;
  329 + }
  330 +
  331 + public void setEquipment_code(String equipment_code) {
  332 + this.equipment_code = equipment_code;
  333 + }
  334 +
  335 + public String getjGh() {
  336 + return jGh;
  337 + }
  338 +
  339 + public void setjGh(String jGh) {
  340 + this.jGh = jGh;
  341 + }
  342 +
  343 + public String getjName() {
  344 + return jName;
  345 + }
  346 +
  347 + public void setjName(String jName) {
  348 + this.jName = jName;
  349 + }
  350 +
  351 + public String getsGh() {
  352 + return sGh;
  353 + }
  354 +
  355 + public void setsGh(String sGh) {
  356 + this.sGh = sGh;
  357 + }
  358 +
  359 + public String getsName() {
  360 + return sName;
  361 + }
  362 +
  363 + public void setsName(String sName) {
  364 + this.sName = sName;
  365 + }
  366 +
  367 + public String getXlDir() {
  368 + return xlDir;
  369 + }
  370 +
  371 + public void setXlDir(String xlDir) {
  372 + this.xlDir = xlDir;
  373 + }
  374 +
  375 + public String getQdzCode() {
  376 + return qdzCode;
  377 + }
  378 +
  379 + public void setQdzCode(String qdzCode) {
  380 + this.qdzCode = qdzCode;
  381 + }
  382 +
  383 + public String getQdzName() {
  384 + return qdzName;
  385 + }
  386 +
  387 + public void setQdzName(String qdzName) {
  388 + this.qdzName = qdzName;
  389 + }
  390 +
  391 + public String getZdzCode() {
  392 + return zdzCode;
  393 + }
  394 +
  395 + public void setZdzCode(String zdzCode) {
  396 + this.zdzCode = zdzCode;
  397 + }
  398 +
  399 + public String getZdzName() {
  400 + return zdzName;
  401 + }
  402 +
  403 + public void setZdzName(String zdzName) {
  404 + this.zdzName = zdzName;
  405 + }
  406 +
  407 + public String getFcsj() {
  408 + return fcsj;
  409 + }
  410 +
  411 + public void setFcsj(String fcsj) {
  412 + this.fcsj = fcsj;
  413 + }
  414 +
  415 + public Long getFcsjT() {
  416 + return fcsjT;
  417 + }
  418 +
  419 + public void setFcsjT(Long fcsjT) {
  420 + this.fcsjT = fcsjT;
  421 + }
  422 +
  423 + public String getZdsj() {
  424 + return zdsj;
  425 + }
  426 +
  427 + public void setZdsj(String zdsj) {
  428 + this.zdsj = zdsj;
  429 + }
  430 +
  431 + public Long getZdsjT() {
  432 + return zdsjT;
  433 + }
  434 +
  435 + public void setZdsjT(Long zdsjT) {
  436 + this.zdsjT = zdsjT;
  437 + }
  438 +
  439 + public Double getJhlc() {
  440 + return jhlc;
  441 + }
  442 +
  443 + public void setJhlc(Double jhlc) {
  444 + this.jhlc = jhlc;
  445 + }
  446 +
  447 + public Integer getBcsj() {
  448 + return bcsj;
  449 + }
  450 +
  451 + public void setBcsj(Integer bcsj) {
  452 + this.bcsj = bcsj;
  453 + }
  454 +
  455 + public String getBcType() {
  456 + return bcType;
  457 + }
  458 +
  459 + public void setBcType(String bcType) {
  460 + this.bcType = bcType;
  461 + }
  462 +
  463 + public String getFcsjActual() {
  464 + return fcsjActual;
  465 + }
  466 +
  467 + public void setFcsjActual(String fcsjActual) {
  468 + this.fcsjActual = fcsjActual;
  469 + }
  470 +
  471 + public Long getFcsjActualTime() {
  472 + return fcsjActualTime;
  473 + }
  474 +
  475 + public void setFcsjActualTime(Long fcsjActualTime) {
  476 + this.fcsjActualTime = fcsjActualTime;
  477 + }
  478 +
  479 + public String getZdsjActual() {
  480 + return zdsjActual;
  481 + }
  482 +
  483 + public void setZdsjActual(String zdsjActual) {
  484 + this.zdsjActual = zdsjActual;
  485 + }
  486 +
  487 + public Long getZdsjActualTime() {
  488 + return zdsjActualTime;
  489 + }
  490 +
  491 + public void setZdsjActualTime(Long zdsjActualTime) {
  492 + this.zdsjActualTime = zdsjActualTime;
  493 + }
  494 +
  495 + public int getStatus() {
  496 + return status;
  497 + }
  498 +
  499 + public void setStatus(int status) {
  500 + this.status = status;
  501 + }
  502 +
  503 + public String getAdjustExps() {
  504 + return adjustExps;
  505 + }
  506 +
  507 + public void setAdjustExps(String adjustExps) {
  508 + this.adjustExps = adjustExps;
  509 + }
  510 +
  511 + public boolean isSflj() {
  512 + return sflj;
  513 + }
  514 +
  515 + public void setSflj(boolean sflj) {
  516 + this.sflj = sflj;
  517 + }
  518 +
  519 + public String getRemarks() {
  520 + return remarks;
  521 + }
  522 +
  523 + public void setRemarks(String remarks) {
  524 + this.remarks = remarks;
  525 + }
  526 +
  527 + public String getDfsj() {
  528 + return dfsj;
  529 + }
  530 +
  531 + public void setDfsj(String dfsj) {
  532 + this.dfsj = dfsj;
  533 + }
  534 +
  535 + public Long getDfsjT() {
  536 + return dfsjT;
  537 + }
  538 +
  539 + public void setDfsjT(Long dfsjT) {
  540 + this.dfsjT = dfsjT;
  541 + }
  542 +
  543 + public Integer getDirectiveState() {
  544 + return directiveState;
  545 + }
  546 +
  547 + public void setDirectiveState(Integer directiveState) {
  548 + this.directiveState = directiveState;
  549 + }
  550 +//
  551 +// public Set<ChildTaskPlan> getcTasks() {
  552 +// return cTasks;
  553 +// }
  554 +//
  555 +// public void setcTasks(Set<ChildTaskPlan> cTasks) {
  556 +// this.cTasks = cTasks;
  557 +// }
  558 +
  559 + public String getGsName() {
  560 + return gsName;
  561 + }
  562 +
  563 + public void setGsName(String gsName) {
  564 + this.gsName = gsName;
  565 + }
  566 +
  567 + public String getGsBm() {
  568 + return gsBm;
  569 + }
  570 +
  571 + public void setGsBm(String gsBm) {
  572 + this.gsBm = gsBm;
  573 + }
  574 +
  575 + public String getFgsName() {
  576 + return fgsName;
  577 + }
  578 +
  579 + public void setFgsName(String fgsName) {
  580 + this.fgsName = fgsName;
  581 + }
  582 +
  583 + public String getFgsBm() {
  584 + return fgsBm;
  585 + }
  586 +
  587 + public void setFgsBm(String fgsBm) {
  588 + this.fgsBm = fgsBm;
  589 + }
  590 +
  591 + public Double getJhlcOrig() {
  592 + return jhlcOrig;
  593 + }
  594 +
  595 + public void setJhlcOrig(Double jhlcOrig) {
  596 + this.jhlcOrig = jhlcOrig;
  597 + }
  598 + /**
  599 + * 换车营运标记 true 表示该主任务由 【中途换车子任务】 级联生成
  600 + */
  601 + private boolean ccService;
  602 +
  603 + @Transient
  604 + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
  605 + @Transient
  606 + private static DateTimeFormatter fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm");
  607 +
  608 + /**
  609 + *
  610 + * @Title: setFcsjAll
  611 + * @Description: TODO(设置计划发车时间)
  612 + * @throws
  613 + */
  614 + public void setFcsjAll(Long fcsjT){
  615 + this.fcsjT = fcsjT;
  616 + this.fcsj = fmtHHmm.print(fcsjT);
  617 + }
  618 +
  619 + public void setDfsjAll(Long dfsjT) {
  620 + this.dfsjT = dfsjT;
  621 + this.dfsj = fmtHHmm.print(this.dfsjT);
  622 + }
  623 +
  624 + /**
  625 + *
  626 + * @Title: setFcsjActualAll
  627 + * @Description: TODO(设置实际发车时间 时间戳)
  628 + * @throws
  629 + */
  630 + public void setFcsjActualAll(Long t){
  631 + this.fcsjActualTime = t;
  632 + this.fcsjActual = fmtHHmm.print(t);
  633 + }
  634 +
  635 + /**
  636 + *
  637 + * @Title: setFcsjActualAll
  638 + * @Description: TODO(设置实际终点时间)
  639 + * @throws
  640 + */
  641 + public void setZdsjActualAll(Long t){
  642 + this.zdsjActualTime = t;
  643 + this.zdsjActual = fmtHHmm.print(t);
  644 + }
  645 +
  646 + public void setDfsjAll(String dfsj) {
  647 + this.dfsjT = fmtyyyyMMddHHmm.parseMillis(this.realExecDate + dfsj);
  648 + this.dfsj = dfsj;
  649 + }
  650 +
  651 + /**
  652 + *
  653 + * @Title: setFcsjActualAll
  654 + * @Description: TODO(设置实际发车时间 字符串)
  655 + * @throws
  656 + */
  657 + public void setFcsjActualAll(String fcsjActual){
  658 + this.fcsjActualTime = fmtyyyyMMddHHmm.parseMillis(this.realExecDate + fcsjActual);
  659 + this.fcsjActual = fcsjActual;
  660 + }
  661 +
  662 + /**
  663 + *
  664 + * @Title: setFcsjActualAll
  665 + * @Description: TODO(设置实际终点时间)
  666 + * @throws
  667 + */
  668 + public void setZdsjActualAll(String zdsjActual){
  669 + this.zdsjActualTime = fmtyyyyMMddHHmm.parseMillis(this.realExecDate + zdsjActual);
  670 + this.zdsjActual = zdsjActual;
  671 + }
  672 +
  673 + public int getDriftStatus() {
  674 + return driftStatus;
  675 + }
  676 +
  677 + public void setDriftStatus(int driftStatus) {
  678 + this.driftStatus = driftStatus;
  679 + }
  680 +
  681 + public int getJhTime() {
  682 + return jhTime;
  683 + }
  684 +
  685 + public void setJhTime(int jhTime) {
  686 + this.jhTime = jhTime;
  687 + }
  688 +
  689 + public int getSjTime() {
  690 + return sjTime;
  691 + }
  692 +
  693 + public void setSjTime(int sjTime) {
  694 + this.sjTime = sjTime;
  695 + }
  696 +
  697 +
  698 + public String getEquipmentCode() {
  699 + return equipmentCode;
  700 + }
  701 +
  702 + public void setEquipmentCode(String equipmentCode) {
  703 + this.equipmentCode = equipmentCode;
  704 + }
  705 +
  706 + public boolean isCcService() {
  707 + return ccService;
  708 + }
  709 +
  710 + public void setCcService(boolean ccService) {
  711 + this.ccService = ccService;
  712 + }
  713 +
  714 +}
... ...
src/main/java/com/bsth/entity/result/AverageSpeed.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/entity/result/AverageSpeed.java
  1 +package com.bsth.entity.result;
  2 +
  3 +import javax.persistence.Id;
  4 +import java.util.Date;
  5 +
  6 +/**
  7 + * @author YouRuiFeng
  8 + * @Description: TODO()
  9 + * @date 2021/3/5/005 16:47
  10 + */
  11 +//@Entity
  12 +//@Table(name = "calc_average_speed")
  13 +public class AverageSpeed {
  14 +
  15 + /** 主键Id */
  16 + @Id
  17 + private Long id;
  18 + /** 公司编码 */
  19 + private String companyId;
  20 + /** 分公司编码 */
  21 + private String brancheCompanyId;
  22 + /** 公司名称 */
  23 + private String companyName;
  24 + /** 分公司名称 */
  25 + private String brancheCompanyName;
  26 + /** 线路编码 */
  27 + private String lineCode;
  28 + /** 线路名称 */
  29 + private String lineName;
  30 + /** 计划车速 */
  31 + private Float planSpeed;
  32 + /** 实际车速 */
  33 + private Float realSpeed;
  34 + /** 日期 (班次日期) */
  35 + private Date rq;
  36 +
  37 + /** 日期字符串 (班次日期) */
  38 + private String rqStr;
  39 +
  40 + public Long getId() {
  41 + return id;
  42 + }
  43 +
  44 + public void setId(Long id) {
  45 + this.id = id;
  46 + }
  47 +
  48 + public String getCompanyId() {
  49 + return companyId;
  50 + }
  51 +
  52 + public void setCompanyId(String companyId) {
  53 + this.companyId = companyId;
  54 + }
  55 +
  56 + public String getBrancheCompanyId() {
  57 + return brancheCompanyId;
  58 + }
  59 +
  60 + public void setBrancheCompanyId(String brancheCompanyId) {
  61 + this.brancheCompanyId = brancheCompanyId;
  62 + }
  63 +
  64 + public String getCompanyName() {
  65 + return companyName;
  66 + }
  67 +
  68 + public void setCompanyName(String companyName) {
  69 + this.companyName = companyName;
  70 + }
  71 +
  72 + public String getBrancheCompanyName() {
  73 + return brancheCompanyName;
  74 + }
  75 +
  76 + public void setBrancheCompanyName(String brancheCompanyName) {
  77 + this.brancheCompanyName = brancheCompanyName;
  78 + }
  79 +
  80 + public String getLineCode() {
  81 + return lineCode;
  82 + }
  83 +
  84 + public void setLineCode(String lineCode) {
  85 + this.lineCode = lineCode;
  86 + }
  87 +
  88 + public String getLineName() {
  89 + return lineName;
  90 + }
  91 +
  92 + public void setLineName(String lineName) {
  93 + this.lineName = lineName;
  94 + }
  95 +
  96 + public Float getPlanSpeed() {
  97 + return planSpeed;
  98 + }
  99 +
  100 + public void setPlanSpeed(Float planSpeed) {
  101 + this.planSpeed = planSpeed;
  102 + }
  103 +
  104 + public Float getRealSpeed() {
  105 + return realSpeed;
  106 + }
  107 +
  108 + public void setRealSpeed(Float realSpeed) {
  109 + this.realSpeed = realSpeed;
  110 + }
  111 +
  112 + public Date getRq() {
  113 + return rq;
  114 + }
  115 +
  116 + public void setRq(Date rq) {
  117 + this.rq = rq;
  118 + }
  119 +
  120 + public String getRqStr() {
  121 + return rqStr;
  122 + }
  123 +
  124 + public void setRqStr(String rqStr) {
  125 + this.rqStr = rqStr;
  126 + }
  127 +}
... ...
src/main/java/com/bsth/handler/AverageSpeedHandler.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/handler/AverageSpeedHandler.java
  1 +package com.bsth.handler;
  2 +
  3 +import com.bsth.StartCommand;
  4 +import com.bsth.entity.result.AverageSpeed;
  5 +import com.bsth.service.ScheduleRealInfoService;
  6 +import com.bsth.util.DBUtils_jdsas;
  7 +import com.bsth.util.DateUtils;
  8 +import org.joda.time.DateTime;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.stereotype.Component;
  14 +
  15 +import java.sql.Connection;
  16 +import java.sql.PreparedStatement;
  17 +import java.sql.SQLException;
  18 +import java.util.List;
  19 +
  20 +
  21 +/**
  22 + * @ClassName: MileageCalculationHandler.java
  23 + * @Description: TODO(营运公里处理程序)
  24 + * @author: YouRuiFeng
  25 + * @date: 2017-8-14 下午2:06:22
  26 + *
  27 + */
  28 +@Component
  29 +public class AverageSpeedHandler {
  30 +
  31 + @Autowired
  32 + ScheduleRealInfoService scheduleRealInfoService;
  33 +
  34 + @Autowired
  35 + JdbcTemplate jdbcTemplate;
  36 +
  37 + Logger logger = LoggerFactory.getLogger(this.getClass());
  38 +
  39 + public void calc() {
  40 + try {
  41 + DateTime dt = DateTime.now();
  42 + dt = dt.plusDays(-1);//凌晨两点计算前一天的
  43 + String rq = dt.toString("yyyy-MM");
  44 +// String rqs = "2021-";
  45 +// for(int i=1;i<3;i++){
  46 +// String rq = rqs+(i<10? "0"+i:i);
  47 +// logger.info("开始计算报表: " + rq);
  48 +// List<AverageSpeed> oMList = scheduleRealInfoService.averageSpeed(rq);
  49 +// logger.info("报表计算完成: " + rq);
  50 +// save(oMList);
  51 +// logger.info("数据保存完成: " + rq);
  52 +// }
  53 +
  54 +// String rq = "2017-04";
  55 + if(!rq.equals(StartCommand.RQ)){
  56 +
  57 + logger.info("开始计算报表: " + rq);
  58 + List<AverageSpeed> oMList = scheduleRealInfoService.averageSpeed(rq);
  59 + logger.info("报表计算完成: " + rq);
  60 + save(oMList);
  61 + StartCommand.RQ = rq;
  62 + logger.info("数据保存完成: " + rq);
  63 + }
  64 +
  65 + } catch (Exception e) {
  66 + logger.error("", e);
  67 + }
  68 + }
  69 +
  70 + private void save(final List<AverageSpeed> list) {
  71 +
  72 + Connection conn = null;
  73 + PreparedStatement ps = null;
  74 +// ResultSet rs = null;
  75 + try {
  76 + conn = DBUtils_jdsas.getConnection();
  77 + conn.setAutoCommit(false);
  78 +
  79 + String sql = "insert into calc_average_speed(company_id, branche_company_id, company_name, branche_company_name, line_code, line_name, " +
  80 + "plan_speed,real_speed,rq,rq_str,create_date) " +
  81 + " VALUES(?,?,?,?,?,?,?,?,?,?,?)";
  82 +
  83 + ps = conn.prepareStatement(sql);
  84 +
  85 + for (int i=0; i<list.size(); i++) {
  86 + AverageSpeed averageSpeed = list.get(i);
  87 + ps.setString(1, averageSpeed.getCompanyId());
  88 + ps.setString(2, averageSpeed.getBrancheCompanyId());
  89 + ps.setString(3, averageSpeed.getCompanyName());
  90 + ps.setString(4, averageSpeed.getBrancheCompanyName());
  91 + ps.setString(5, averageSpeed.getLineCode());
  92 + ps.setString(6, averageSpeed.getLineName());
  93 + ps.setFloat(7, averageSpeed.getPlanSpeed());
  94 + ps.setFloat(8, averageSpeed.getRealSpeed());
  95 + ps.setDate(9, new java.sql.Date(averageSpeed.getRq().getTime()));
  96 + ps.setString(10, averageSpeed.getRqStr());
  97 + ps.setDate(11, new java.sql.Date(DateUtils.getTimestamp()));
  98 + ps.addBatch();
  99 + // 1w条记录插入一次
  100 + if (i % 10000 == 0){
  101 + ps.executeBatch();
  102 + conn.commit();
  103 + }
  104 + }
  105 + // 最后插入不足1w条的数据
  106 + ps.executeBatch();
  107 + conn.commit();
  108 + } catch (Exception e) {
  109 + e.printStackTrace();
  110 +// throw new RuntimeException(e);
  111 + logger.error("", e);
  112 + }finally{
  113 + if(ps!=null){
  114 + try {
  115 + ps.close();
  116 + } catch (SQLException e) {
  117 + e.printStackTrace();
  118 + logger.error("", e);
  119 + }
  120 + }
  121 + if(conn!=null){
  122 + try {
  123 + conn.close();
  124 + } catch (SQLException e) {
  125 + e.printStackTrace();
  126 + logger.error("", e);
  127 + }
  128 + }
  129 + }
  130 + }
  131 +}
... ...
src/main/java/com/bsth/repository/ScheduleRealInfoRepository.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/repository/ScheduleRealInfoRepository.java
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.ScheduleRealInfo;
  4 +import org.springframework.data.jpa.repository.EntityGraph;
  5 +import org.springframework.data.jpa.repository.Query;
  6 +import org.springframework.data.repository.PagingAndSortingRepository;
  7 +import org.springframework.stereotype.Repository;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Repository
  12 +public interface ScheduleRealInfoRepository extends PagingAndSortingRepository<ScheduleRealInfo, Long> {
  13 +
  14 + //按照时间段统计
  15 +// @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  16 + @Query("select DISTINCT s from ScheduleRealInfo s where s.scheduleDateStr=?1 order by s.xlBm, s.lpName, s.fcno")
  17 + List<ScheduleRealInfo> scheduleByDateAndLineTj(String scheduleDateStr);
  18 +
  19 +}
... ...
src/main/java/com/bsth/service/ScheduleRealInfoService.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/service/ScheduleRealInfoService.java
  1 +package com.bsth.service;
  2 +
  3 +import com.bsth.entity.result.AverageSpeed;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 +* @ClassName: ScheduleRealInfoService.java
  9 +* @Description: TODO()
  10 +* @author: YouRuiFeng
  11 +* @date: 2017-8-15 下午1:36:58
  12 +*
  13 +*/
  14 +public interface ScheduleRealInfoService {
  15 +
  16 + List<AverageSpeed> averageSpeed(String DateStr);
  17 +
  18 +}
... ...
src/main/java/com/bsth/service/impl/ScheduleRealInfoServiceImpl.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/service/impl/ScheduleRealInfoServiceImpl.java
  1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.entity.ScheduleRealInfo;
  4 +import com.bsth.entity.result.AverageSpeed;
  5 +import com.bsth.repository.ScheduleRealInfoRepository;
  6 +import com.bsth.service.ScheduleRealInfoService;
  7 +import com.bsth.util.DateUtils;
  8 +import org.apache.commons.lang3.StringUtils;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.BeanUtils;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.jdbc.core.JdbcTemplate;
  14 +import org.springframework.jdbc.core.RowMapper;
  15 +import org.springframework.stereotype.Service;
  16 +
  17 +import java.sql.ResultSet;
  18 +import java.sql.SQLException;
  19 +import java.text.DecimalFormat;
  20 +import java.text.ParseException;
  21 +import java.text.SimpleDateFormat;
  22 +import java.util.ArrayList;
  23 +import java.util.Date;
  24 +import java.util.Iterator;
  25 +import java.util.List;
  26 +import java.util.Map;
  27 +import java.util.TreeMap;
  28 +
  29 +@Service
  30 +public class ScheduleRealInfoServiceImpl implements ScheduleRealInfoService {
  31 +
  32 + @Autowired
  33 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  34 +
  35 + // 用于计算的数字,只要是一个年月日就行那天不重要
  36 + private static final String DATEStr = "2000-01-01";
  37 +
  38 + @Autowired
  39 + JdbcTemplate jdbcTemplate;
  40 + Logger logger = LoggerFactory.getLogger(this.getClass());
  41 +
  42 + @Override
  43 + public List<AverageSpeed> averageSpeed(String time){
  44 +
  45 + String sql;
  46 + sql = "SELECT * FROM bsth_c_s_sp_info_real WHERE bc_type in('normal','region') AND schedule_date BETWEEN '"+time+"-01' AND '"+time+"-31' ORDER BY fgs_bm, xl_bm, schedule_date";
  47 + List<ScheduleRealInfo> list = jdbcTemplate.query(sql,
  48 + new RowMapper<ScheduleRealInfo>() {
  49 + @Override
  50 + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
  51 + ScheduleRealInfo scheduleRealInfo = new ScheduleRealInfo();
  52 + scheduleRealInfo.setId(rs.getLong("id"));
  53 + scheduleRealInfo.setScheduleDateStr(rs.getString("schedule_date_str"));
  54 + scheduleRealInfo.setXlBm(rs.getString("xl_bm"));
  55 + scheduleRealInfo.setXlDir(rs.getString("xl_dir"));
  56 + scheduleRealInfo.setXlName(rs.getString("xl_name"));
  57 + scheduleRealInfo.setGsBm(rs.getString("gs_bm"));
  58 + scheduleRealInfo.setGsName(rs.getString("gs_name"));
  59 + scheduleRealInfo.setFgsBm(rs.getString("fgs_bm"));
  60 + scheduleRealInfo.setFgsName(rs.getString("fgs_name"));
  61 + scheduleRealInfo.setFcsj(rs.getString("fcsj"));
  62 + scheduleRealInfo.setFcsjActual(rs.getString("fcsj_actual"));
  63 + scheduleRealInfo.setZdsj(rs.getString("zdsj"));
  64 + scheduleRealInfo.setZdsjActual(rs.getString("zdsj_actual"));
  65 + scheduleRealInfo.setJhlc(Double.valueOf(rs.getString("jhlc")));
  66 + scheduleRealInfo.setBcType(rs.getString("bc_type"));
  67 + return scheduleRealInfo;
  68 + }
  69 + });
  70 +
  71 + if (list.size()<1){
  72 + return null;
  73 + }
  74 +
  75 + // 左边固定列
  76 + TreeMap<String, ScheduleRealInfo> keyMap = new TreeMap<String, ScheduleRealInfo>();
  77 +
  78 +
  79 + // 报表纵向列数据生成
  80 + for (int i = 0; list.size() > i; i++) {
  81 + ScheduleRealInfo sr = list.get(i);
  82 +
  83 + String key = sr.getFgsBm()+"/"+sr.getXlBm();
  84 +
  85 + ScheduleRealInfo realInfo = this.initScheduleRealInfo();
  86 +
  87 + if(keyMap.containsKey(key)){
  88 + realInfo = keyMap.get(key);
  89 +
  90 + this.summation(realInfo, sr);
  91 + } else {
  92 + // 深度拷贝对象
  93 + BeanUtils.copyProperties(sr,realInfo);
  94 + realInfo.setJhTime(0);
  95 + realInfo.setSjTime(0);
  96 + realInfo.setJhlc(0d);
  97 + this.summation(realInfo, sr);
  98 + keyMap.put(key, realInfo);
  99 + }
  100 + }
  101 + List<AverageSpeed> listAS = new ArrayList<>();
  102 + // 表头和数据
  103 + Iterator iter = keyMap.entrySet().iterator();
  104 + while (iter.hasNext()) {
  105 + Map.Entry entry = (Map.Entry) iter.next();
  106 + // 获取value
  107 + ScheduleRealInfo c = (ScheduleRealInfo) entry.getValue();
  108 +
  109 + AverageSpeed as = new AverageSpeed();
  110 +
  111 + as.setBrancheCompanyId(c.getFgsBm());
  112 + as.setBrancheCompanyName(c.getFgsName());
  113 + as.setCompanyId(c.getGsBm());
  114 + as.setCompanyName(c.getGsName());
  115 + as.setLineCode(c.getXlBm());
  116 + as.setLineName(c.getXlName());
  117 + as.setPlanSpeed(c.getJhTime()==0 ? 0f : (float)(c.getJhlc()*60/ c.getJhTime()));
  118 + as.setRealSpeed(c.getSjTime()==0 ? 0f : (float)(c.getJhlc()*60/ c.getSjTime()));
  119 + as.setRq(DateUtils.getDate(time+"-01"));
  120 + as.setRqStr(time);
  121 + listAS.add(as);
  122 + }
  123 + return listAS;
  124 + }
  125 +
  126 +
  127 +
  128 + /*
  129 + * 将时间戳转换为时间
  130 + */
  131 + public static String stampToDate(String s){
  132 + String res;
  133 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  134 + long lt = new Long(s);
  135 + Date date = new Date(lt);
  136 + res = simpleDateFormat.format(date);
  137 + return res;
  138 + }
  139 + public ScheduleRealInfo summation(ScheduleRealInfo sr1, ScheduleRealInfo sr2){
  140 +
  141 + try {
  142 +
  143 + if(!StringUtils.isEmpty(sr2.getFcsjActual()) && !StringUtils.isEmpty(sr2.getZdsjActual())){
  144 +
  145 + Long sjfcsj = Long.valueOf(DateUtils.dateToStamp(DATEStr + " " + sr2.getFcsjActual() + ":00"));
  146 + Long sjzdsj = Long.valueOf(DateUtils.dateToStamp(DATEStr + " " + sr2.getZdsjActual() + ":00"));
  147 + if(sjzdsj<=sjfcsj){
  148 + sjzdsj += 24*3600*1000;
  149 + }
  150 + int sjTime = (int)(sjzdsj-sjfcsj) / (60*1000);
  151 + Long jhfcsj = Long.valueOf(DateUtils.dateToStamp(DATEStr + " " + sr2.getFcsj() + ":00"));
  152 + Long jhzdsj = Long.valueOf(DateUtils.dateToStamp(DATEStr + " " + sr2.getZdsj() + ":00"));
  153 + if(jhzdsj<=jhfcsj){
  154 + jhzdsj += 24*3600*1000;
  155 + }
  156 + int jhTime = (int)(jhzdsj-jhfcsj) / (60*1000);
  157 + sr1.setJhlc(sr1.getJhlc()+sr2.getJhlc());
  158 + sr1.setJhTime(sr1.getJhTime()+jhTime);
  159 + sr1.setSjTime(sr1.getSjTime()+sjTime);
  160 + }
  161 + }catch (ParseException e) {
  162 + // TODO Auto-generated catch block
  163 + e.printStackTrace();
  164 + logger.error(e.toString());
  165 + }
  166 + return sr1;
  167 + }
  168 + public ScheduleRealInfo initScheduleRealInfo(){
  169 + ScheduleRealInfo realInfo = new ScheduleRealInfo();
  170 + realInfo.setJhlc(0d);
  171 + realInfo.setSjTime(0);
  172 + realInfo.setJhTime(0);
  173 + return realInfo;
  174 + }
  175 +}
... ...
src/main/java/com/bsth/thread/AverageSpeedThrad.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/thread/AverageSpeedThrad.java
  1 +package com.bsth.thread;
  2 +
  3 +import com.bsth.handler.AverageSpeedHandler;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Component;
  8 +
  9 +/**
  10 + * @ClassName: MileageCalculationThrad.java
  11 + * @Description: TODO(平均车速计算线程)
  12 + * @author: YouRuiFeng
  13 + *
  14 + */
  15 +@Component
  16 +public class AverageSpeedThrad extends Thread {
  17 + @Autowired
  18 + AverageSpeedHandler averageSpeedHandler;
  19 +
  20 + Logger logger = LoggerFactory.getLogger(this.getClass());
  21 +
  22 + @Override
  23 + public void run() {
  24 + try {
  25 + averageSpeedHandler.calc();
  26 + } catch (Exception e) {
  27 + logger.error("", e);
  28 + }
  29 + }
  30 +}
... ...
src/main/java/com/bsth/util/Arith.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/util/Arith.java
  1 +package com.bsth.util;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +/**
  6 + * 进行BigDecimal对象的加减乘除,四舍五入等运算的工具类
  7 + * @author ameyume
  8 + *
  9 + */
  10 +public class Arith {
  11 +
  12 + /**
  13 + * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
  14 + * 确的浮点数运算,包括加减乘除和四舍五入。
  15 + */
  16 + //默认除法运算精度
  17 + private static final int DEF_DIV_SCALE = 10;
  18 +
  19 + //这个类不能实例化
  20 + private Arith(){
  21 + }
  22 +
  23 + /**
  24 + * 提供精确的加法运算。
  25 + * @param v1 被加数
  26 + * @param v2 加数
  27 + * @return 两个参数的和
  28 + */
  29 + public static double add(Object v1,Object v2){
  30 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  31 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  32 + return b1.add(b2).doubleValue();
  33 + }
  34 +
  35 + /**
  36 + * 提供精确的减法运算。
  37 + * @param v1 被减数
  38 + * @param v2 减数
  39 + * @return 两个参数的差
  40 + */
  41 + public static double sub(Object v1,Object v2){
  42 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  43 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  44 + return b1.subtract(b2).doubleValue();
  45 + }
  46 +
  47 + /**
  48 + * 提供精确的乘法运算。
  49 + * @param v1 被乘数
  50 + * @param v2 乘数
  51 + * @return 两个参数的积
  52 + */
  53 + public static double mul(Object v1,Object v2){
  54 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  55 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  56 + return b1.multiply(b2).doubleValue();
  57 + }
  58 +
  59 + /**
  60 + * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
  61 + * 小数点以后10位,以后的数字四舍五入。
  62 + * @param v1 被除数
  63 + * @param v2 除数
  64 + * @return 两个参数的商
  65 + */
  66 + public static double div(Object v1,Object v2){
  67 + return div(v1,v2,DEF_DIV_SCALE);
  68 + }
  69 +
  70 + /**
  71 + * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
  72 + * 定精度,以后的数字四舍五入。
  73 + * @param v1 被除数
  74 + * @param v2 除数
  75 + * @param scale 表示表示需要精确到小数点以后几位。
  76 + * @return 两个参数的商
  77 + */
  78 + public static double div(Object v1,Object v2,int scale){
  79 + if(scale<0){
  80 + throw new IllegalArgumentException(
  81 + "The scale must be a positive integer or zero");
  82 + }
  83 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  84 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  85 + return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
  86 + }
  87 +
  88 + /**
  89 + * 提供精确的小数位四舍五入处理。
  90 + * @param v 需要四舍五入的数字
  91 + * @param scale 小数点后保留几位
  92 + * @return 四舍五入后的结果
  93 + */
  94 + public static double round(Object v,int scale){
  95 + if(scale<0){
  96 + throw new IllegalArgumentException(
  97 + "The scale must be a positive integer or zero");
  98 + }
  99 + BigDecimal b = new BigDecimal(String.valueOf(v));
  100 + BigDecimal one = new BigDecimal("1");
  101 + return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
  102 + }
  103 +
  104 + /**
  105 + * 提供精确的类型转换(Float)
  106 + * @param v 需要被转换的数字
  107 + * @return 返回转换结果
  108 + */
  109 + public static float convertsToFloat(double v){
  110 + BigDecimal b = new BigDecimal(v);
  111 + return b.floatValue();
  112 + }
  113 +
  114 + /**
  115 + * 提供精确的类型转换(Int)不进行四舍五入
  116 + * @param v 需要被转换的数字
  117 + * @return 返回转换结果
  118 + */
  119 + public static int convertsToInt(double v){
  120 + BigDecimal b = new BigDecimal(v);
  121 + return b.intValue();
  122 + }
  123 +
  124 + /**
  125 + * 提供精确的类型转换(Long)
  126 + * @param v 需要被转换的数字
  127 + * @return 返回转换结果
  128 + */
  129 + public static long convertsToLong(double v){
  130 + BigDecimal b = new BigDecimal(v);
  131 + return b.longValue();
  132 + }
  133 +
  134 + /**
  135 + * 返回两个数中大的一个值
  136 + * @param v1 需要被对比的第一个数
  137 + * @param v2 需要被对比的第二个数
  138 + * @return 返回两个数中大的一个值
  139 + */
  140 + public static double returnMax(double v1,double v2){
  141 + BigDecimal b1 = new BigDecimal(v1);
  142 + BigDecimal b2 = new BigDecimal(v2);
  143 + return b1.max(b2).doubleValue();
  144 + }
  145 +
  146 + /**
  147 + * 返回两个数中小的一个值
  148 + * @param v1 需要被对比的第一个数
  149 + * @param v2 需要被对比的第二个数
  150 + * @return 返回两个数中小的一个值
  151 + */
  152 + public static double returnMin(double v1,double v2){
  153 + BigDecimal b1 = new BigDecimal(v1);
  154 + BigDecimal b2 = new BigDecimal(v2);
  155 + return b1.min(b2).doubleValue();
  156 + }
  157 +
  158 + /**
  159 + * 精确对比两个数字
  160 + * @param v1 需要被对比的第一个数
  161 + * @param v2 需要被对比的第二个数
  162 + * @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
  163 + */
  164 + public static int compareTo(double v1,double v2){
  165 + BigDecimal b1 = new BigDecimal(v1);
  166 + BigDecimal b2 = new BigDecimal(v2);
  167 + return b1.compareTo(b2);
  168 + }
  169 +
  170 +}
0 171 \ No newline at end of file
... ...
src/main/java/com/bsth/util/ConfigUtil.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/util/ConfigUtil.java
  1 +package com.bsth.util;
  2 +
  3 +public class ConfigUtil {
  4 +
  5 + static Tools tools;
  6 +
  7 + static{
  8 + tools = new Tools("application.properties");
  9 + String active = tools.getValue("spring.profiles.active");
  10 + tools = new Tools("application-"+active+".properties");
  11 + }
  12 +
  13 + public static String get(String key){
  14 + return tools.getValue(key);
  15 + }
  16 +}
... ...
src/main/java/com/bsth/util/DBUtils_jdsas.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/util/DBUtils_jdsas.java
  1 +package com.bsth.util;
  2 +
  3 +import com.mchange.v2.c3p0.DataSources;
  4 +import org.apache.log4j.Logger;
  5 +import org.springframework.stereotype.Component;
  6 +
  7 +import javax.sql.DataSource;
  8 +import java.io.FileNotFoundException;
  9 +import java.io.IOException;
  10 +import java.sql.Connection;
  11 +import java.sql.ResultSet;
  12 +import java.sql.SQLException;
  13 +import java.sql.Statement;
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +import java.util.Properties;
  17 +
  18 +/**
  19 + * jdsas库连接池
  20 + * @author yrf
  21 + *
  22 + */
  23 +//@Component
  24 +public class DBUtils_jdsas {
  25 +
  26 + private static String url = null;
  27 +
  28 + private static String username = null;
  29 +
  30 + private static String pwd = null;
  31 +
  32 + private static DataSource ds_pooled;
  33 +
  34 + static Logger logger = Logger.getLogger(DBUtils_jdsas.class);
  35 +
  36 + static {
  37 + Properties env = new Properties();
  38 +
  39 + try {
  40 + env.load(DBUtils_jdsas.class.getClassLoader().getResourceAsStream("jdsas-jdbc.properties"));
  41 + // 1. 加载驱动类
  42 + Class.forName(env.getProperty("jdsas.mysql.driver"));
  43 +
  44 + url = env.getProperty("jdsas.mysql.url");
  45 + username = env.getProperty("jdsas.mysql.username");
  46 + pwd = env.getProperty("jdsas.mysql.password");
  47 +
  48 + // 设置连接数据库的配置信息
  49 + DataSource ds_unpooled = DataSources.unpooledDataSource(url,
  50 + username, pwd);
  51 +
  52 + Map<String, Object> pool_conf = new HashMap<String, Object>();
  53 + // 设置最大连接数
  54 + pool_conf.put("maxPoolSize", 10);
  55 +
  56 + pool_conf.put("testConnectionOnCheckout", false);
  57 + //异步检测连接的有效性
  58 + pool_conf.put("testConnectionOnCheckin", true);
  59 + //30秒检测一次
  60 + pool_conf.put("idleConnectionTestPeriod", 30);
  61 + ds_pooled = DataSources.pooledDataSource(ds_unpooled, pool_conf);
  62 + } catch (FileNotFoundException e) {
  63 + logger.error(e.toString());
  64 + e.printStackTrace();
  65 + } catch (IOException e) {
  66 + logger.error(e.toString());
  67 + e.printStackTrace();
  68 + } catch (ClassNotFoundException e) {
  69 + logger.error(e.toString());
  70 + e.printStackTrace();
  71 + } catch (SQLException e) {
  72 + logger.error(e.toString());
  73 + e.printStackTrace();
  74 + }
  75 + }
  76 +
  77 + /**
  78 + * 获取连接对象
  79 + */
  80 + public static Connection getConnection() throws SQLException {
  81 + return ds_pooled.getConnection();
  82 + }
  83 +
  84 + /**
  85 + * 释放连接池资源
  86 + */
  87 + public static void clearup() {
  88 + if (ds_pooled != null) {
  89 + try {
  90 + DataSources.destroy(ds_pooled);
  91 + } catch (SQLException e) {
  92 + logger.error(e.toString());
  93 + e.printStackTrace();
  94 + }
  95 + }
  96 + }
  97 +
  98 + /**
  99 + * 资源关闭
  100 + *
  101 + * @param rs
  102 + * @param stmt
  103 + * @param conn
  104 + */
  105 + public static void close(ResultSet rs, Statement stmt, Connection conn) {
  106 + if (rs != null) {
  107 + try {
  108 + rs.close();
  109 + } catch (SQLException e) {
  110 + logger.error(e.toString());
  111 + e.printStackTrace();
  112 + }
  113 + }
  114 +
  115 + if (stmt != null) {
  116 + try {
  117 + stmt.close();
  118 + } catch (SQLException e) {
  119 + logger.error(e.toString());
  120 + e.printStackTrace();
  121 + }
  122 + }
  123 +
  124 + if (conn != null) {
  125 + try {
  126 + conn.close();
  127 + } catch (SQLException e) {
  128 + logger.error(e.toString());
  129 + e.printStackTrace();
  130 + }
  131 + }
  132 + }
  133 +
  134 + public static DataSource getDataSource(){
  135 + return ds_pooled;
  136 + }
  137 +}
... ...
src/main/java/com/bsth/util/DateUtils.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/util/DateUtils.java
  1 +package com.bsth.util;
  2 +
  3 +import java.text.ParseException;
  4 +import java.text.SimpleDateFormat;
  5 +import java.util.Calendar;
  6 +import java.util.Date;
  7 +
  8 +public class DateUtils {
  9 +
  10 + // 获得当天0点时间
  11 + public static int getTimesmorning() {
  12 + Calendar cal = Calendar.getInstance();
  13 + cal.set(Calendar.HOUR_OF_DAY, 0);
  14 + cal.set(Calendar.SECOND, 0);
  15 + cal.set(Calendar.MINUTE, 0);
  16 + cal.set(Calendar.MILLISECOND, 0);
  17 + return (int) (cal.getTimeInMillis() / 1000);
  18 + }
  19 +
  20 + // 获得当天0点毫秒时间戳
  21 + public static long getTimestamp() {
  22 + Calendar cal = Calendar.getInstance();
  23 + cal.set(Calendar.HOUR_OF_DAY, 0);
  24 + cal.set(Calendar.SECOND, 0);
  25 + cal.set(Calendar.MINUTE, 0);
  26 + cal.set(Calendar.MILLISECOND, 0);
  27 + return cal.getTimeInMillis();
  28 + }
  29 +
  30 + public static Long getTimesmorning(Calendar cal) {
  31 + cal.set(Calendar.HOUR_OF_DAY, 0);
  32 + cal.set(Calendar.SECOND, 0);
  33 + cal.set(Calendar.MINUTE, 0);
  34 + cal.set(Calendar.MILLISECOND, 0);
  35 + return cal.getTimeInMillis() / 1000;
  36 + }
  37 +
  38 + // 获得当天24点时间
  39 + public static int getTimesnight() {
  40 + Calendar cal = Calendar.getInstance();
  41 + cal.set(Calendar.HOUR_OF_DAY, 24);
  42 + cal.set(Calendar.SECOND, 0);
  43 + cal.set(Calendar.MINUTE, 0);
  44 + cal.set(Calendar.MILLISECOND, 0);
  45 + return (int) (cal.getTimeInMillis() / 1000);
  46 + }
  47 +
  48 + // 获得当天24点时间 毫秒
  49 + public static Long getTimesnight2() {
  50 + Calendar cal = Calendar.getInstance();
  51 + cal.set(Calendar.HOUR_OF_DAY, 24);
  52 + cal.set(Calendar.SECOND, 0);
  53 + cal.set(Calendar.MINUTE, 0);
  54 + cal.set(Calendar.MILLISECOND, 0);
  55 + return cal.getTimeInMillis();
  56 + }
  57 +
  58 + public static Long getTimesnight(Calendar cal) {
  59 + cal.set(Calendar.HOUR_OF_DAY, 24);
  60 + cal.set(Calendar.SECOND, 0);
  61 + cal.set(Calendar.MINUTE, 0);
  62 + cal.set(Calendar.MILLISECOND, 0);
  63 + return cal.getTimeInMillis();
  64 + }
  65 +
  66 + // 获得本周一0点时间
  67 + public static int getTimesWeekmorning() {
  68 + Calendar cal = Calendar.getInstance();
  69 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  70 + cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  71 + return (int) (cal.getTimeInMillis() / 1000);
  72 + }
  73 +
  74 + // 获得本周日24点时间
  75 + public static int getTimesWeeknight() {
  76 + Calendar cal = Calendar.getInstance();
  77 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  78 + cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  79 + return (int) ((cal.getTime().getTime() + (7 * 24 * 60 * 60 * 1000)) / 1000);
  80 + }
  81 +
  82 + // 获得本月第一天0点时间
  83 + public static int getTimesMonthmorning() {
  84 + Calendar cal = Calendar.getInstance();
  85 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  86 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
  87 + return (int) (cal.getTimeInMillis() / 1000);
  88 + }
  89 +
  90 + // 获得本月最后一天24点时间
  91 + public static int getTimesMonthnight() {
  92 + Calendar cal = Calendar.getInstance();
  93 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  94 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
  95 + cal.set(Calendar.HOUR_OF_DAY, 24);
  96 + return (int) (cal.getTimeInMillis() / 1000);
  97 + }
  98 +
  99 + private static SimpleDateFormat sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm")
  100 + ,sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd")
  101 + ,sdfHHmm = new SimpleDateFormat("HH:mm");
  102 + public static long getTimesByHHmm(String str) throws ParseException{
  103 + Date d = sdfyyyyMMddHHmm.parse(sdfyyyyMMdd.format(new Date()) + str);
  104 + return d.getTime();
  105 + }
  106 +
  107 + public static Date getDate(String date){
  108 + Date date1 = null;
  109 + try {
  110 + date1 = sdfyyyyMMdd.parse(date);
  111 + } catch (ParseException e) {
  112 + e.printStackTrace();
  113 + }
  114 + return date1;
  115 + }
  116 +
  117 + public static String plusDay(String old, int day){
  118 + Calendar cal = null;
  119 + try {
  120 + Date date = sdfyyyyMMdd.parse(old);
  121 + cal = Calendar.getInstance();
  122 + cal.setTime(date);
  123 + cal.add(Calendar.DATE, day);
  124 + } catch (ParseException e) {
  125 + e.printStackTrace();
  126 + }
  127 + return sdfyyyyMMdd.format(cal.getTime());
  128 + }
  129 +
  130 + public static String subtractDay(String old, int day){
  131 + Calendar cal = null;
  132 + try {
  133 + Date date = sdfyyyyMMdd.parse(old);
  134 + cal = Calendar.getInstance();
  135 + cal.setTime(date);
  136 + cal.set(Calendar.DATE, cal.get(Calendar.DATE) - day);
  137 + } catch (ParseException e) {
  138 + e.printStackTrace();
  139 + }
  140 + return sdfyyyyMMdd.format(cal.getTime());
  141 + }
  142 +
  143 + public static int calcHHmmDiff(String fcsj, String zdsj) throws ParseException {
  144 + return (int) (sdfHHmm.parse(zdsj).getTime() - sdfHHmm.parse(fcsj).getTime());
  145 + }
  146 + /*
  147 + * 将时间转换为时间戳
  148 + */
  149 + public static String dateToStamp(String s) throws ParseException{
  150 + String res;
  151 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  152 + Date date = simpleDateFormat.parse(s);
  153 + long ts = date.getTime();
  154 + res = String.valueOf(ts);
  155 + return res;
  156 + }
  157 +}
... ...
src/main/java/com/bsth/util/Tools.java 0 → 100644
  1 +++ a/src/main/java/com/bsth/util/Tools.java
  1 +package com.bsth.util;
  2 +
  3 +import java.io.IOException;
  4 +import java.util.Properties;
  5 +
  6 +public class Tools {
  7 + private static Properties p = new Properties();
  8 + private static String f;
  9 + public Tools(String file){
  10 + f = file;
  11 + try {
  12 + p.load(Tools.class.getClassLoader().getResourceAsStream(f));
  13 + } catch (IOException e) {
  14 + e.printStackTrace();
  15 + }
  16 + }
  17 +
  18 + /**
  19 + * 根据key得到value的值
  20 + */
  21 + public String getValue(String key)
  22 + {
  23 + return p.getProperty(key);
  24 + }
  25 +}
... ...
src/main/resources/application-dev.properties 0 → 100644
  1 +++ a/src/main/resources/application-dev.properties
  1 +server.port=9999
  2 +management.port= 9009
  3 +management.address= 127.0.0.1
  4 +
  5 +spring.jpa.hibernate.ddl-auto= none
  6 +spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
  7 +#DATABASE
  8 +spring.jpa.database= MYSQL
  9 +spring.jpa.show-sql= false
  10 +#spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
  11 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  12 +spring.datasource.url= jdbc:mysql://localhost:3306/jdsas?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
  13 +spring.datasource.username= root
  14 +spring.datasource.password= root
  15 +#DATASOURCE
  16 +spring.datasource.max-active=100
  17 +spring.datasource.max-idle=8
  18 +spring.datasource.min-idle=8
  19 +spring.datasource.initial-size=5
  20 +
  21 +spring.datasource.test-on-borrow=true
  22 +spring.datasource.test-on-connect=true
  23 +spring.datasource.test-on-return=true
  24 +spring.datasource.test-while-idle=true
  25 +spring.datasource.validation-query=select 1
  26 +
... ...
src/main/resources/application-prod.properties 0 → 100644
  1 +++ a/src/main/resources/application-prod.properties
  1 +server.port=9770
  2 +management.port= 9771
  3 +management.address= 127.0.0.1
  4 +
  5 +spring.jpa.hibernate.ddl-auto= none
  6 +spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
  7 +#DATABASE
  8 +spring.jpa.database= MYSQL
  9 +spring.jpa.show-sql= true
  10 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  11 +spring.datasource.url= jdbc:mysql://192.168.160.222:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false
  12 +spring.datasource.username= root
  13 +spring.datasource.password= root2jsp
  14 +#DATASOURCE
  15 +spring.datasource.max-active=100
  16 +spring.datasource.max-idle=8
  17 +spring.datasource.min-idle=8
  18 +spring.datasource.initial-size=5
  19 +
  20 +spring.datasource.test-on-borrow=true
  21 +spring.datasource.test-on-connect=true
  22 +spring.datasource.test-on-return=true
  23 +spring.datasource.test-while-idle=true
  24 +spring.datasource.validation-query=select 1
  25 +
  26 +
... ...
src/main/resources/application.properties 0 → 100644
  1 +++ a/src/main/resources/application.properties
  1 +#spring.profiles: dev,prod
  2 +#spring.profiles.active: dev
  3 +
  4 +spring.profiles.active=prod
0 5 \ No newline at end of file
... ...
src/main/resources/banner.txt 0 → 100644
  1 +++ a/src/main/resources/banner.txt
  1 + ____ _____ _______ _ _
  2 + | _ \ / ____| |__ __| | | | |
  3 + | |_) | | (___ | | | |__| |
  4 + | _ < \___ \ | | | __ |
  5 + | |_) | ____) | | | | | | |
  6 + |____/ |_____/ |_| |_| |_|
  7 +
  8 +Running Spring Boot ${spring-boot.version}
0 9 \ No newline at end of file
... ...
src/main/resources/jdsas-jdbc.properties 0 → 100644
  1 +++ a/src/main/resources/jdsas-jdbc.properties
  1 +#jdsas.mysql.driver= com.mysql.jdbc.Driver
  2 +#jdsas.mysql.url= jdbc:mysql://localhost:3306/jdsas?useUnicode=true&characterEncoding=utf-8&useSSL=false
  3 +#jdsas.mysql.username= root
  4 +#jdsas.mysql.password= root
  5 +
  6 +jdsas.mysql.driver= com.mysql.jdbc.Driver
  7 +jdsas.mysql.url= jdbc:mysql://192.168.160.179:3306/jdsas?useUnicode=true&characterEncoding=utf-8
  8 +jdsas.mysql.username= root
  9 +jdsas.mysql.password= root2jsp
... ...
src/main/resources/logback.xml 0 → 100644
  1 +++ a/src/main/resources/logback.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd"> -->
  3 +<configuration>
  4 +
  5 + <!-- <property resource="application.properties" /> -->
  6 + <property name="LOG_BASE" value="E:/calc_log" />
  7 + <!-- 控制台输出 -->
  8 + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  9 +
  10 + <layout class="ch.qos.logback.classic.PatternLayout">
  11 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  12 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
  13 + </pattern>
  14 + </layout>
  15 + </appender>
  16 +
  17 + <!-- 主日志文件 -->
  18 + <appender name="FILE"
  19 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  20 + <file>${LOG_BASE}/calc_log.log</file>
  21 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  22 + <fileNamePattern>${LOG_BASE}/calc_log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  23 + <timeBasedFileNamingAndTriggeringPolicy
  24 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  25 + <maxFileSize>100MB</maxFileSize>
  26 + </timeBasedFileNamingAndTriggeringPolicy>
  27 + </rollingPolicy>
  28 + <encoder>
  29 + <pattern>%msg%n</pattern>
  30 + </encoder>
  31 +
  32 + <layout class="ch.qos.logback.classic.PatternLayout">
  33 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  34 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
  35 + </pattern>
  36 + </layout>
  37 + </appender>
  38 +
  39 +
  40 + <!-- 日志输出级别 -->
  41 + <root level="info">
  42 + <appender-ref ref="STDOUT" />
  43 + <appender-ref ref="FILE" />
  44 + </root>
  45 +</configuration>
0 46 \ No newline at end of file
... ...