Commit ec0b8de94a6029b8e4c4f6a5002020908847a4d5

Authored by 王通
0 parents

初始化

.gitignore 0 → 100644
  1 +++ a/.gitignore
  1 +HELP.md
  2 +target/
  3 +!.mvn/wrapper/maven-wrapper.jar
  4 +!**/src/main/**/target/
  5 +!**/src/test/**/target/
  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 +!**/src/main/**/build/
  30 +!**/src/test/**/build/
  31 +
  32 +### VS Code ###
  33 +.vscode/
.mvn/wrapper/MavenWrapperDownloader.java 0 → 100644
  1 +++ a/.mvn/wrapper/MavenWrapperDownloader.java
  1 +/*
  2 + * Copyright 2007-present the original author or authors.
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * https://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + */
  16 +
  17 +import java.net.*;
  18 +import java.io.*;
  19 +import java.nio.channels.*;
  20 +import java.util.Properties;
  21 +
  22 +public class MavenWrapperDownloader {
  23 +
  24 + private static final String WRAPPER_VERSION = "0.5.6";
  25 + /**
  26 + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
  27 + */
  28 + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
  29 + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
  30 +
  31 + /**
  32 + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
  33 + * use instead of the default one.
  34 + */
  35 + private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
  36 + ".mvn/wrapper/maven-wrapper.properties";
  37 +
  38 + /**
  39 + * Path where the maven-wrapper.jar will be saved to.
  40 + */
  41 + private static final String MAVEN_WRAPPER_JAR_PATH =
  42 + ".mvn/wrapper/maven-wrapper.jar";
  43 +
  44 + /**
  45 + * Name of the property which should be used to override the default download url for the wrapper.
  46 + */
  47 + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
  48 +
  49 + public static void main(String args[]) {
  50 + System.out.println("- Downloader started");
  51 + File baseDirectory = new File(args[0]);
  52 + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
  53 +
  54 + // If the maven-wrapper.properties exists, read it and check if it contains a custom
  55 + // wrapperUrl parameter.
  56 + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
  57 + String url = DEFAULT_DOWNLOAD_URL;
  58 + if (mavenWrapperPropertyFile.exists()) {
  59 + FileInputStream mavenWrapperPropertyFileInputStream = null;
  60 + try {
  61 + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
  62 + Properties mavenWrapperProperties = new Properties();
  63 + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
  64 + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
  65 + } catch (IOException e) {
  66 + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
  67 + } finally {
  68 + try {
  69 + if (mavenWrapperPropertyFileInputStream != null) {
  70 + mavenWrapperPropertyFileInputStream.close();
  71 + }
  72 + } catch (IOException e) {
  73 + // Ignore ...
  74 + }
  75 + }
  76 + }
  77 + System.out.println("- Downloading from: " + url);
  78 +
  79 + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
  80 + if (!outputFile.getParentFile().exists()) {
  81 + if (!outputFile.getParentFile().mkdirs()) {
  82 + System.out.println(
  83 + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
  84 + }
  85 + }
  86 + System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
  87 + try {
  88 + downloadFileFromURL(url, outputFile);
  89 + System.out.println("Done");
  90 + System.exit(0);
  91 + } catch (Throwable e) {
  92 + System.out.println("- Error downloading");
  93 + e.printStackTrace();
  94 + System.exit(1);
  95 + }
  96 + }
  97 +
  98 + private static void downloadFileFromURL(String urlString, File destination) throws Exception {
  99 + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
  100 + String username = System.getenv("MVNW_USERNAME");
  101 + char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
  102 + Authenticator.setDefault(new Authenticator() {
  103 + @Override
  104 + protected PasswordAuthentication getPasswordAuthentication() {
  105 + return new PasswordAuthentication(username, password);
  106 + }
  107 + });
  108 + }
  109 + URL website = new URL(urlString);
  110 + ReadableByteChannel rbc;
  111 + rbc = Channels.newChannel(website.openStream());
  112 + FileOutputStream fos = new FileOutputStream(destination);
  113 + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
  114 + fos.close();
  115 + rbc.close();
  116 + }
  117 +
  118 +}
.mvn/wrapper/maven-wrapper.jar 0 → 100644
No preview for this file type
.mvn/wrapper/maven-wrapper.properties 0 → 100644
  1 +++ a/.mvn/wrapper/maven-wrapper.properties
  1 +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip
  2 +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
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 +# Maven 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.6/maven-wrapper-0.5.6.jar"
  216 + else
  217 + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.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 Maven 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 keystroke 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.6/maven-wrapper-0.5.6.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.6/maven-wrapper-0.5.6.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>2.1.1.RELEASE</version>
  9 + <relativePath />
  10 + </parent>
  11 +
  12 +
  13 + <groupId>com.bsth</groupId>
  14 + <artifactId>demo</artifactId>
  15 + <version>0.0.1-SNAPSHOT</version>
  16 + <packaging>jar</packaging>
  17 + <name>TicketAnalysis</name>
  18 + <description>Demo project for Spring Boot</description>
  19 + <properties>
  20 + <java.version>1.8</java.version>
  21 + </properties>
  22 + <dependencies>
  23 + <dependency>
  24 + <groupId>org.springframework.boot</groupId>
  25 + <artifactId>spring-boot-starter-data-jdbc</artifactId>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>org.mybatis.spring.boot</groupId>
  29 + <artifactId>mybatis-spring-boot-starter</artifactId>
  30 + <version>2.2.0</version>
  31 + </dependency>
  32 +
  33 + <!-- SpringBoot Web容器 -->
  34 + <dependency>
  35 + <groupId>org.springframework.boot</groupId>
  36 + <artifactId>spring-boot-starter-web</artifactId>
  37 + </dependency>
  38 +
  39 + <!--<dependency>
  40 + <groupId>org.springframework.boot</groupId>
  41 + <artifactId>spring-boot-starter-tomcat</artifactId>
  42 + <scope>provided</scope>
  43 + </dependency>
  44 + <dependency>
  45 + <groupId>javax.servlet</groupId>
  46 + <artifactId>javax.servlet-api</artifactId>
  47 + <version>3.1.0</version>
  48 + <scope>provided</scope>
  49 + </dependency>-->
  50 +
  51 + <dependency>
  52 + <groupId>mysql</groupId>
  53 + <artifactId>mysql-connector-java</artifactId>
  54 + <scope>runtime</scope>
  55 + </dependency>
  56 + <dependency>
  57 + <groupId>org.springframework.boot</groupId>
  58 + <artifactId>spring-boot-starter-test</artifactId>
  59 + <scope>test</scope>
  60 + </dependency>
  61 +
  62 + <!-- 阿里JSON解析器 -->
  63 + <dependency>
  64 + <groupId>com.alibaba</groupId>
  65 + <artifactId>fastjson</artifactId>
  66 + <version>1.2.47</version>
  67 + </dependency>
  68 + <dependency>
  69 + <groupId>junit</groupId>
  70 + <artifactId>junit</artifactId>
  71 + <version>RELEASE</version>
  72 + <scope>compile</scope>
  73 + </dependency>
  74 +
  75 + <dependency>
  76 + <groupId>org.apache.maven.plugins</groupId>
  77 + <artifactId>maven-compiler-plugin</artifactId>
  78 + <version>2.3.2</version>
  79 + </dependency>
  80 +
  81 + </dependencies>
  82 +
  83 + <build>
  84 + <finalName>${project.artifactId}</finalName>
  85 + <plugins>
  86 + <plugin>
  87 + <groupId>org.springframework.boot</groupId>
  88 + <artifactId>spring-boot-maven-plugin</artifactId>
  89 + </plugin>
  90 +
  91 + <plugin>
  92 + <groupId>org.apache.maven.plugins</groupId>
  93 + <artifactId>maven-war-plugin</artifactId>
  94 + <version>3.0.0</version>
  95 + <configuration>
  96 + <failOnMissingWebXml>false</failOnMissingWebXml>
  97 + </configuration>
  98 + </plugin>
  99 + </plugins>
  100 + </build>
  101 +
  102 +
  103 +
  104 +
  105 +</project>
src/main/java/com/example/demo/DemoApplication.java 0 → 100644
  1 +++ a/src/main/java/com/example/demo/DemoApplication.java
  1 +package com.example.demo;
  2 +
  3 +import org.slf4j.Logger;
  4 +import org.slf4j.LoggerFactory;
  5 +import org.springframework.boot.SpringApplication;
  6 +import org.springframework.boot.autoconfigure.SpringBootApplication;
  7 +import org.springframework.boot.builder.SpringApplicationBuilder;
  8 +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
  9 +
  10 +import java.io.IOException;
  11 +import java.nio.file.*;
  12 +import java.util.concurrent.TimeUnit;
  13 +
  14 +@SpringBootApplication
  15 +public class DemoApplication extends SpringBootServletInitializer {
  16 +
  17 + static Logger logger = LoggerFactory.getLogger(DemoApplication.class);
  18 +
  19 + @Override
  20 + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  21 + return application.sources(DemoApplication.class);
  22 + }
  23 +
  24 + public static void main(String[] args) {
  25 + SpringApplication.run(DemoApplication.class, args);
  26 + logger.info("========启动成功========");
  27 + }
  28 +
  29 +}
src/main/java/com/example/demo/SaticScheduleTask.java 0 → 100644
  1 +++ a/src/main/java/com/example/demo/SaticScheduleTask.java
  1 +package com.example.demo;
  2 +
  3 +
  4 +import com.example.demo.service.Analysis;
  5 +import com.example.demo.service.Contrast;
  6 +import org.junit.Test;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.InitializingBean;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.beans.factory.annotation.Value;
  12 +import org.springframework.context.annotation.Configuration;
  13 +import org.springframework.scheduling.annotation.EnableScheduling;
  14 +import org.springframework.scheduling.annotation.Scheduled;
  15 +import org.springframework.stereotype.Component;
  16 +
  17 +import java.io.File;
  18 +import java.io.IOException;
  19 +import java.nio.file.*;
  20 +import java.text.SimpleDateFormat;
  21 +import java.time.LocalDateTime;
  22 +import java.util.ArrayList;
  23 +import java.util.Date;
  24 +import java.util.List;
  25 +import java.util.Map;
  26 +import java.util.concurrent.LinkedBlockingQueue;
  27 +import java.util.concurrent.ThreadPoolExecutor;
  28 +import java.util.concurrent.TimeUnit;
  29 +
  30 +/**
  31 + * @author Hill
  32 + */
  33 +@Configuration
  34 +@EnableScheduling
  35 +public class SaticScheduleTask implements InitializingBean {
  36 +
  37 + private final static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
  38 +
  39 + @Value("${ftp.root}")
  40 + private String rootPath;
  41 +
  42 + private WatchService watchService;
  43 +
  44 + @Autowired
  45 + private Contrast contrast;
  46 +
  47 + /**
  48 + * 定时任务
  49 + */
  50 + @Scheduled(cron = "0/5 * * * * ?")
  51 + private void configureTasks() {
  52 + logger.info("执行静态定时任务时间: " + LocalDateTime.now());
  53 + WatchKey watchKey = null;
  54 + List<File> files = new ArrayList<>();
  55 + while ((watchKey = watchService.poll()) != null) {
  56 + for (WatchEvent watchEvent : watchKey.pollEvents()) {
  57 + Path path = (Path)watchEvent.context();
  58 + files.add(new File(rootPath + File.separator + path.toString()));
  59 + }
  60 + watchKey.reset();
  61 + }
  62 +
  63 + List<Map> allFile = Analysis.getAllFile(files);
  64 + contrast.filterCardList(allFile);
  65 + }
  66 +
  67 + @Override
  68 + public void afterPropertiesSet() throws Exception {
  69 + watchService = FileSystems.getDefault().newWatchService();
  70 + Path path = Paths.get(rootPath);
  71 + path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
  72 + }
  73 +}
0 \ No newline at end of file 74 \ No newline at end of file
src/main/java/com/example/demo/mapper/SiteMapper.java 0 → 100644
  1 +++ a/src/main/java/com/example/demo/mapper/SiteMapper.java
  1 +package com.example.demo.mapper;
  2 +
  3 +
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +
  9 +/**
  10 + * @author sine
  11 + */
  12 +@Mapper
  13 +public interface SiteMapper {
  14 +
  15 + /**
  16 + * 查询排班
  17 + */
  18 + List<Map> queryScheduling(Map<String, Object> map);
  19 +
  20 + /**
  21 + * 到离站
  22 + *
  23 + */
  24 + List<Map> querydlSite(Map<String, Object> map);
  25 +
  26 + /**
  27 + * 匹配路由
  28 + */
  29 + List<Map> querylyStie(Map<String, Object> map);
  30 +
  31 + void insertResult(List<Map> list);
  32 +
  33 +}
0 \ No newline at end of file 34 \ No newline at end of file
src/main/java/com/example/demo/service/Analysis.java 0 → 100644
  1 +++ a/src/main/java/com/example/demo/service/Analysis.java
  1 +package com.example.demo.service;
  2 +
  3 +import org.slf4j.Logger;
  4 +import org.slf4j.LoggerFactory;
  5 +
  6 +import java.io.BufferedReader;
  7 +import java.io.File;
  8 +import java.io.FileReader;
  9 +import java.text.ParseException;
  10 +import java.text.SimpleDateFormat;
  11 +import java.util.*;
  12 +
  13 +public class Analysis {
  14 + protected final Logger logger = LoggerFactory.getLogger(this.getClass());
  15 +
  16 + private static Date startDate = subtractTime(new Date(), -300000);
  17 +
  18 + /**
  19 + * 获取路径下的所有文件/文件夹 /读取文件 返回时间和carid
  20 + *
  21 + * @param directoryPath 需要遍历的文件夹路径
  22 + * @return
  23 + */
  24 + public static List<Map> getAllFile(List<File> files) {
  25 + List<Map> listMap = new ArrayList<>();
  26 + List<String> list = new ArrayList<String>();
  27 +
  28 + for (File file : files) {
  29 + if (!file.isDirectory()) {
  30 + String absolutePath = file.getAbsolutePath();
  31 + String time = (absolutePath.substring(absolutePath.indexOf("GJ"), absolutePath.indexOf("GJ") + 16)).replace("GJ", "");
  32 + Date nowTime = null;
  33 + try {
  34 + nowTime = new SimpleDateFormat("yyyyMMddHHmmss").parse(time);
  35 + } catch (ParseException e) {
  36 + e.printStackTrace();
  37 + }
  38 + //if (belongCalendar(nowTime)) { //判断是否在对应时间内
  39 + list.add(file.getAbsolutePath());
  40 + List<String> strings = txt2String(new File(file.getAbsolutePath()));//读取文件
  41 + for (int i = 0; i < strings.size(); i++) {
  42 + String text = strings.get(i);
  43 + Map<String, Object> map = new HashMap<>();
  44 + Long val = Long.parseLong(text.substring(30, 40));
  45 + String cardId = Long.toHexString(val).toUpperCase();
  46 + map.put("TJRLCARDNO", cardId); //交通卡号
  47 + map.put("TJRLCDKIND", text.substring(40, 42)); //卡类型
  48 + map.put("TJRLPOSID", text.substring(62, 68)); //POS机号
  49 + try {
  50 + map.put("TJRLRDATE", new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyyMMdd").parse(text.substring(100, 108)))); //交易日期
  51 + } catch (ParseException e) {
  52 + e.printStackTrace();
  53 + }
  54 +
  55 + try {
  56 + map.put("TJRLRTIME", new SimpleDateFormat("HH:mm:ss").format(new SimpleDateFormat("HHmmss").parse(text.substring(108, 114)))); //交易时间
  57 + } catch (ParseException e) {
  58 + e.printStackTrace();
  59 + }
  60 + map.put("TJRLCDBAL", text.substring(84, 92)); //交易前余额
  61 + map.put("TJRLAMT", text.substring(92, 100)); //交易金额
  62 + map.put("TJRLORGAMT", text.substring(120, 124)); //交易原始金额
  63 + map.put("TJRLTXFG", text.substring(60, 62)); //交易类型
  64 + listMap.add(map);
  65 + }
  66 + //}
  67 + }
  68 + }
  69 + return listMap;
  70 + }
  71 +
  72 +
  73 + /**
  74 + * 读取文件内容
  75 + */
  76 + public static List<String> txt2String(File file) {
  77 + List<String> list = new ArrayList<>();
  78 + StringBuilder result = new StringBuilder();
  79 + try {
  80 + BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
  81 + String s = null;
  82 + while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
  83 + list.add(s);
  84 + }
  85 + br.close();
  86 + } catch (Exception e) {
  87 + e.printStackTrace();
  88 + }
  89 + return list;
  90 + }
  91 +
  92 +
  93 + /**
  94 + * 加减对应时间后的日期
  95 + *
  96 + * @param date 需要加减时间的日期
  97 + * @param amount 加减的时间(毫秒)
  98 + * @return 加减对应时间后的日期
  99 + */
  100 +
  101 + private static Date subtractTime(Date date, int amount) {
  102 + try {
  103 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  104 + String strTime = sdf.format(date.getTime() + amount);
  105 + Date time = sdf.parse(strTime);
  106 + return time;
  107 + } catch (Exception e) {
  108 + e.printStackTrace();
  109 + }
  110 + return null;
  111 + }
  112 +
  113 + /**
  114 + * 判断时间是否在时间段内
  115 + *
  116 + * @param nowTime
  117 + * @return
  118 + */
  119 + public static boolean belongCalendar(Date nowTime) {
  120 + Calendar date = Calendar.getInstance();
  121 + date.setTime(nowTime);
  122 +
  123 + Calendar begin = Calendar.getInstance();
  124 + begin.setTime(startDate);
  125 +
  126 + Calendar end = Calendar.getInstance();
  127 + end.setTime(new Date());
  128 +
  129 + if (date.after(begin) && date.before(end)) {
  130 + return true;
  131 + } else {
  132 + return false;
  133 + }
  134 + }
  135 +
  136 +
  137 +}
  138 +
src/main/java/com/example/demo/service/Contrast.java 0 → 100644
  1 +++ a/src/main/java/com/example/demo/service/Contrast.java
  1 +package com.example.demo.service;
  2 +
  3 +import com.alibaba.fastjson.JSONArray;
  4 +import com.alibaba.fastjson.JSONObject;
  5 +import com.bsth.util.HttpUtils;
  6 +import com.example.demo.DemoApplication;
  7 +import com.example.demo.mapper.SiteMapper;
  8 +import org.junit.Test;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.stereotype.Component;
  13 +import org.springframework.stereotype.Service;
  14 +
  15 +import javax.annotation.PostConstruct;
  16 +import javax.annotation.Resource;
  17 +import java.text.ParseException;
  18 +import java.text.SimpleDateFormat;
  19 +import java.util.*;
  20 +import java.util.concurrent.TimeUnit;
  21 +import java.util.stream.Collectors;
  22 +
  23 +
  24 +@Service
  25 +public class Contrast {
  26 +
  27 + Logger logger = LoggerFactory.getLogger(Contrast.class);
  28 +
  29 + @Autowired
  30 + private SiteMapper siteMapper;
  31 +
  32 +
  33 + public List<Map> getDriverCardList() {
  34 + List<Map> list = new ArrayList<>();
  35 + String drivercard = HttpUtils.sendPost("http://112.64.187.3:1080/gjService/gjService/drivercard", null);
  36 + JSONObject obj = JSONObject.parseObject(drivercard);
  37 + String errorCode = obj.get("errorCode").toString();
  38 + if (errorCode.equals("1")) {
  39 + JSONArray dateBeans = obj.getJSONArray("dateBean");
  40 + for (int i = 0; i < dateBeans.size(); i++) {
  41 + Map dataList = new HashMap();
  42 + JSONObject o = (JSONObject) dateBeans.get(i);
  43 + dataList.put("outcardno", o.get("outcardno"));
  44 + dataList.put("cardno", o.get("cardno"));
  45 + dataList.put("jobCode", o.get("jobCode"));
  46 + dataList.put("companyNo", o.get("companyNo"));
  47 + dataList.put("brancheCompanyNo", o.get("brancheCompanyNo"));
  48 + dataList.put("personalName", o.get("personalName"));
  49 + list.add(dataList);
  50 + }
  51 + }
  52 + return list;
  53 + }
  54 +
  55 + /**
  56 + * 根据当前文件的carid 获取票务数据
  57 + *
  58 + * @param allData
  59 + */
  60 + public void filterCardList(List<Map> allData) {
  61 + long start = System.currentTimeMillis();
  62 + for (int i = 0; i < allData.size(); i++) {
  63 + Map data = allData.get(i);
  64 + List<Map> driverCardList = getDriverCardList();
  65 + String carId = data.get("TJRLCARDNO").toString();
  66 + List<Map> collect = driverCardList.stream().filter(map -> map.get("cardno").equals(carId)).collect(Collectors.toList());
  67 + if (!collect.isEmpty()) {
  68 + if (null != collect.get(0).get("jobCode") && null != collect.get(0).get("personalName")) {
  69 + String personalName = collect.get(0).get("personalName").toString();
  70 + String jobCodes = collect.get(0).get("jobCode").toString();//.split("-")[1];
  71 + Map map = new HashMap();
  72 + map.put("personalName", personalName);
  73 + map.put("jobCode", jobCodes);
  74 + map.put("date", data.get("TJRLRDATE"));
  75 + map.put("time", data.get("TJRLRTIME"));
  76 + List<Map> scheduling = siteMapper.queryScheduling(map);
  77 + if (!scheduling.isEmpty()) {
  78 + Map schedu = scheduling.get(0);
  79 + data.put("STATION_FLAG", 1);
  80 + data.put("TJRLUNITID", schedu.get("gs_name"));
  81 + data.put("TJRLSTATID", schedu.get("xl_name"));
  82 + data.put("ROAD_FORM_TYPE", schedu.get("bc_type"));
  83 + data.put("UPDOWN", schedu.get("xl_dir"));
  84 + data.put("BUS_CODE", schedu.get("cl_zbh"));
  85 + data.put("BUS_PLATE", schedu.get("car_plate"));
  86 + data.put("ROAD_CODE", schedu.get("lp_name"));
  87 + data.put("DEPART_NAME", schedu.get("qdz_name"));
  88 + data.put("DEPART_CODE", schedu.get("qdz_code"));
  89 + data.put("DEPART_ACTUAL_TIME", schedu.get("fcsj_actual"));
  90 + data.put("REACH_NAME", schedu.get("zdz_name"));
  91 + data.put("REACH_CODE", schedu.get("zdz_code"));
  92 + data.put("REACH_ACTUAL_TIME", schedu.get("zdsj_actual"));
  93 +
  94 + Map map1=new HashMap();
  95 + map1.put("year", data.get("TJRLRDATE").toString().substring(0,4));
  96 + map1.put("device_id", schedu.get("equipment_code"));
  97 + map1.put("line_id", schedu.get("xl_bm"));
  98 + map1.put("up_down", schedu.get("xl_dir"));
  99 + map1.put("weeks_year",getWeek(data.get("TJRLRDATE").toString()));
  100 + map1.put("dateTime", data.get("TJRLRDATE")+" "+ data.get("TJRLRTIME"));
  101 + List<Map> list = siteMapper.querydlSite(map1);
  102 + if(!list.isEmpty()){
  103 + Map ydmap= list.get(0);
  104 + Map dlSiteMap=new HashMap();
  105 + dlSiteMap.put("station",ydmap.get("stop_no"));
  106 + dlSiteMap.put("directions",ydmap.get("up_down"));
  107 + dlSiteMap.put("line",ydmap.get("line_id"));
  108 + List<Map> lysiteList = siteMapper.querylyStie(dlSiteMap);
  109 + if(!lysiteList.isEmpty()){
  110 + if(null !=lysiteList.get(0) && !"null".equals(lysiteList.get(0))){
  111 + Map lysiteMap= lysiteList.get(0);
  112 + data.put("LEVELS_FLAG",1);
  113 + data.put("LEVELS1",lysiteMap.get("station_route_code"));
  114 + data.put("LEVELS_NAME1",lysiteMap.get("station_name"));
  115 + data.put("LEVELS1_CODE",lysiteMap.get("station_code"));
  116 + }else {
  117 + data.put("LEVELS_FLAG",0);
  118 + }
  119 +
  120 + }else {
  121 + data.put("LEVELS_FLAG",0);
  122 + }
  123 +
  124 + }
  125 + } else {
  126 + data.put("STATION_FLAG", 0);
  127 + }
  128 +
  129 + }
  130 + }else {
  131 + data.put("STATION_FLAG", 0);
  132 + }
  133 + }
  134 + if (!allData.isEmpty()) {
  135 + siteMapper.insertResult(allData);
  136 + }
  137 + logger.warn("======匹配"+allData.size()+"条=====耗时=="+(System.currentTimeMillis() - start)/1000 + "秒");
  138 + }
  139 +
  140 +
  141 +
  142 + public static int getWeek(String today){
  143 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  144 + Date date = null;
  145 + try {
  146 + date = format.parse(today);
  147 + } catch (ParseException e) {
  148 + // TODO Auto-generated catch block
  149 + e.printStackTrace();
  150 + }
  151 +
  152 + Calendar calendar = Calendar.getInstance();
  153 + calendar.setFirstDayOfWeek(Calendar.MONDAY);
  154 + calendar.setTime(date);
  155 + return calendar.get(Calendar.WEEK_OF_YEAR);
  156 + }
  157 +}
src/main/java/com/example/demo/util/HttpUtils.java 0 → 100644
  1 +++ a/src/main/java/com/example/demo/util/HttpUtils.java
  1 +package com.bsth.util;
  2 +
  3 +import javax.net.ssl.*;
  4 +import java.io.*;
  5 +import java.net.ConnectException;
  6 +import java.net.SocketTimeoutException;
  7 +import java.net.URL;
  8 +import java.net.URLConnection;
  9 +import java.security.cert.X509Certificate;
  10 +
  11 +/**
  12 + * 通用http发送方法
  13 + *
  14 + * @author bsth
  15 + */
  16 +public class HttpUtils
  17 +{
  18 +
  19 +
  20 + /**
  21 + * 向指定 URL 发送GET方法的请求
  22 + *
  23 + * @param url 发送请求的 URL
  24 + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  25 + * @return 所代表远程资源的响应结果
  26 + */
  27 + public static String sendGet(String url, String param)
  28 + {
  29 + StringBuilder result = new StringBuilder();
  30 + BufferedReader in = null;
  31 + try
  32 + {
  33 + String urlNameString = url + "?" + param;
  34 +
  35 + URL realUrl = new URL(urlNameString);
  36 + URLConnection connection = realUrl.openConnection();
  37 + connection.setRequestProperty("accept", "*/*");
  38 + connection.setRequestProperty("connection", "Keep-Alive");
  39 + connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  40 + connection.connect();
  41 + in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  42 + String line;
  43 + while ((line = in.readLine()) != null)
  44 + {
  45 + result.append(line);
  46 + }
  47 +
  48 + }
  49 + catch (ConnectException e)
  50 + {
  51 + }
  52 + catch (SocketTimeoutException e)
  53 + {
  54 + }
  55 + catch (IOException e)
  56 + {
  57 + }
  58 + catch (Exception e)
  59 + {
  60 + }
  61 + finally
  62 + {
  63 + try
  64 + {
  65 + if (in != null)
  66 + {
  67 + in.close();
  68 + }
  69 + }
  70 + catch (Exception ex)
  71 + {
  72 + }
  73 + }
  74 + return result.toString();
  75 + }
  76 +
  77 + /**
  78 + * 向指定 URL 发送POST方法的请求
  79 + *
  80 + * @param url 发送请求的 URL
  81 + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  82 + * @return 所代表远程资源的响应结果
  83 + */
  84 + public static String sendPost(String url, String param)
  85 + {
  86 + PrintWriter out = null;
  87 + BufferedReader in = null;
  88 + StringBuilder result = new StringBuilder();
  89 + try
  90 + {
  91 + String urlNameString = url + "?" + param;
  92 + URL realUrl = new URL(urlNameString);
  93 + URLConnection conn = realUrl.openConnection();
  94 + conn.setRequestProperty("accept", "*/*");
  95 + conn.setRequestProperty("connection", "Keep-Alive");
  96 + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  97 + conn.setRequestProperty("Accept-Charset", "utf-8");
  98 + conn.setRequestProperty("contentType", "utf-8");
  99 + conn.setDoOutput(true);
  100 + conn.setDoInput(true);
  101 + out = new PrintWriter(conn.getOutputStream());
  102 + out.print(param);
  103 + out.flush();
  104 + in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
  105 + String line;
  106 + while ((line = in.readLine()) != null)
  107 + {
  108 + result.append(line);
  109 + }
  110 + }
  111 + catch (ConnectException e)
  112 + {
  113 + }
  114 + catch (SocketTimeoutException e)
  115 + {
  116 + }
  117 + catch (IOException e)
  118 + {
  119 + }
  120 + catch (Exception e)
  121 + {
  122 + }
  123 + finally
  124 + {
  125 + try
  126 + {
  127 + if (out != null)
  128 + {
  129 + out.close();
  130 + }
  131 + if (in != null)
  132 + {
  133 + in.close();
  134 + }
  135 + }
  136 + catch (IOException ex)
  137 + {
  138 + }
  139 + }
  140 + return result.toString();
  141 + }
  142 +
  143 + public static String sendSSLPost(String url, String param)
  144 + {
  145 + StringBuilder result = new StringBuilder();
  146 + String urlNameString = url + "?" + param;
  147 + try
  148 + {
  149 + SSLContext sc = SSLContext.getInstance("SSL");
  150 + sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
  151 + URL console = new URL(urlNameString);
  152 + HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
  153 + conn.setRequestProperty("accept", "*/*");
  154 + conn.setRequestProperty("connection", "Keep-Alive");
  155 + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  156 + conn.setRequestProperty("Accept-Charset", "utf-8");
  157 + conn.setRequestProperty("contentType", "utf-8");
  158 + conn.setDoOutput(true);
  159 + conn.setDoInput(true);
  160 +
  161 + conn.setSSLSocketFactory(sc.getSocketFactory());
  162 + conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
  163 + conn.connect();
  164 + InputStream is = conn.getInputStream();
  165 + BufferedReader br = new BufferedReader(new InputStreamReader(is));
  166 + String ret = "";
  167 + while ((ret = br.readLine()) != null)
  168 + {
  169 + if (ret != null && !ret.trim().equals(""))
  170 + {
  171 + result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
  172 + }
  173 + }
  174 + conn.disconnect();
  175 + br.close();
  176 + }
  177 + catch (ConnectException e)
  178 + {
  179 + }
  180 + catch (SocketTimeoutException e)
  181 + {
  182 + }
  183 + catch (IOException e)
  184 + {
  185 + }
  186 + catch (Exception e)
  187 + {
  188 + }
  189 + return result.toString();
  190 + }
  191 +
  192 + private static class TrustAnyTrustManager implements X509TrustManager
  193 + {
  194 + @Override
  195 + public void checkClientTrusted(X509Certificate[] chain, String authType)
  196 + {
  197 + }
  198 +
  199 + @Override
  200 + public void checkServerTrusted(X509Certificate[] chain, String authType)
  201 + {
  202 + }
  203 +
  204 + @Override
  205 + public X509Certificate[] getAcceptedIssuers()
  206 + {
  207 + return new X509Certificate[] {};
  208 + }
  209 + }
  210 +
  211 + private static class TrustAnyHostnameVerifier implements HostnameVerifier
  212 + {
  213 + @Override
  214 + public boolean verify(String hostname, SSLSession session)
  215 + {
  216 + return true;
  217 + }
  218 + }
  219 +}
0 \ No newline at end of file 220 \ No newline at end of file
src/main/resources/application.properties 0 → 100644
  1 +++ a/src/main/resources/application.properties
  1 +server.port=8088
  2 +
  3 +spring.datasource.url=jdbc:mysql://192.168.168.240:3306/pd_control?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
  4 +spring.datasource.username=root
  5 +spring.datasource.password=root2jsp
  6 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  7 +spring.datasource.druid.test-on-borrow=true
  8 +spring.datasource.druid.test-while-idle=true
  9 +
  10 +mybatis.mapperLocations=classpath:mapping/*-mapper.xml
  11 +mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  12 +#logging.level.com.bsth.mapper=DEBUG
  13 +logging.level.org.mybatis = INFO
  14 +
  15 +#ftp
  16 +ftp.root= E:\\data_test
0 \ No newline at end of file 17 \ No newline at end of file
src/main/resources/mapping/Site-mapper.xml 0 → 100644
  1 +++ a/src/main/resources/mapping/Site-mapper.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3 + "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4 +
  5 +<mapper namespace="com.example.demo.mapper.SiteMapper">
  6 +
  7 + <select id="queryScheduling" resultType="map">
  8 + SELECT CONCAT(gs_name, fgs_name) gs_name,
  9 + xl_name,
  10 + xl_bm,
  11 + xl_dir,
  12 + bc_type,
  13 + cl_zbh,
  14 + lp_name,
  15 + qdz_name,
  16 + qdz_code,
  17 + fcsj_actual,
  18 + zdz_name,
  19 + zdz_code,
  20 + zdsj_actual,
  21 + cars.equipment_code,
  22 + cars.car_plate
  23 + FROM pd_control.bsth_c_s_sp_info_real
  24 + LEFT JOIN pd_control.bsth_c_cars cars ON cars.inside_code = cl_zbh
  25 + WHERE schedule_date_str = '${date}'
  26 + AND '${jobCode}' LIKE CONCAT('%', j_gh, '%')
  27 + AND j_name = '${personalName}'
  28 + AND '${time}' BETWEEN fcsj_actual
  29 + AND zdsj_actual
  30 + </select>
  31 +
  32 + <select id="querydlSite" resultType="map">
  33 + SELECT a.device_id,
  34 + a.line_id,
  35 + a.stop_no,
  36 + a.up_down,
  37 + b.ts - a.ts ts
  38 + FROM (SELECT *
  39 + FROM ms.bsth_c_arrival_info_${year}
  40 + WHERE device_id = '${device_id}'
  41 + AND line_id = '${line_id}'
  42 + AND up_down = '${up_down}'
  43 + AND in_out = 0
  44 + AND weeks_year = '${weeks_year}') a
  45 + JOIN (SELECT *
  46 + FROM ms.bsth_c_arrival_info_${year}
  47 + WHERE device_id = '${device_id}'
  48 + AND line_id = '${line_id}'
  49 + AND up_down = '${up_down}'
  50 + AND in_out = 1
  51 + AND weeks_year = '${weeks_year}') b ON a.device_id = b.device_id
  52 + AND a.line_id = b.line_id
  53 + AND a.stop_no = b.stop_no
  54 + AND a.device_id = b.device_id
  55 + WHERE UNIX_TIMESTAMP('${dateTime}') * 1000 BETWEEN a.ts
  56 + AND b.ts
  57 +
  58 + GROUP BY a.stop_no
  59 + ORDER BY ts
  60 + </select>
  61 +
  62 + <select id="querylyStie" resultType="map">
  63 + SELECT station_name,
  64 + MAX(station_route_code) station_route_code,
  65 + station_code
  66 + FROM (
  67 + SELECT l.line_code line_code,
  68 + max(versions) versions
  69 + FROM bsth_c_line l
  70 + LEFT JOIN bsth_c_line_versions v ON l.line_code = v.line_code
  71 + WHERE l.destroy = 0
  72 + GROUP BY l.line_code
  73 + ) b
  74 + LEFT JOIN bsth_c_ls_stationroute a ON a.line_code = b.line_code
  75 + AND a.versions = b.versions
  76 + WHERE a.destroy = 0
  77 + AND a.station = '${station}'
  78 + AND directions = '${directions}'
  79 + AND line = '${line}'
  80 + ORDER BY a.line_code,
  81 + a.directions,
  82 + a.station_route_code
  83 + </select>
  84 +
  85 +
  86 + <insert id="insertResult" parameterType="List">
  87 + INSERT INTO `pd_control`.`t_jc_result` (
  88 + `TJRLCARDNO`, `TJRLINSID`, `TJRLCDKIND`, `TJRLPOSID`,`TJRLRDATE`,
  89 + `TJRLRTIME`,`TJRLCDBAL`,`TJRLAMT`,`TJRLORGAMT`,
  90 + `TJRLTXFG`,`STATION_FLAG`,`TJRLUNITID`,`TJRLSTATID`,`ROAD_FORM_TYPE`, `UPDOWN`, `BUS_CODE`,
  91 + `BUS_PLATE`, `ROAD_CODE`, `DEPART_NAME`,`DEPART_CODE`, `DEPART_ACTUAL_TIME`,
  92 + `REACH_NAME`,`REACH_CODE`,`REACH_ACTUAL_TIME`,
  93 + `LEVELS_FLAG`,`LEVELS1`, `LEVELS_NAME1`, `LEVELS1_CODE`,`LEVELS2`, `LEVELS_NAME2`
  94 + )
  95 + VALUES
  96 + <foreach collection="list" item="em" index="index" separator=",">
  97 + ( #{em.TJRLCARDNO}, #{em.TJRLINSID}, #{em.TJRLCDKIND}, #{em.TJRLPOSID},#{em.TJRLRDATE},
  98 + #{em.TJRLRTIME},#{em.TJRLCDBAL},#{em.TJRLAMT},#{em.TJRLORGAMT},
  99 + #{em.TJRLTXFG},#{em.STATION_FLAG},#{em.TJRLUNITID},#{em.TJRLSTATID},#{em.ROAD_FORM_TYPE}, #{em.UPDOWN},
  100 + #{em.BUS_CODE},
  101 + #{em.BUS_PLATE}, #{em.ROAD_CODE}, #{em.DEPART_NAME},#{em.DEPART_CODE}, #{em.DEPART_ACTUAL_TIME},
  102 + #{em.REACH_NAME},#{em.REACH_CODE},#{em.REACH_ACTUAL_TIME},
  103 + #{em.LEVELS_FLAG},#{em.LEVELS1}, #{em.LEVELS_NAME1}, #{em.LEVELS1_CODE},#{em.LEVELS2}, #{em.LEVELS_NAME2} )
  104 + </foreach>
  105 + </insert>
  106 +
  107 +</mapper>
0 \ No newline at end of file 108 \ No newline at end of file
src/test/java/com/example/demo/DemoApplicationTests.java 0 → 100644
  1 +++ a/src/test/java/com/example/demo/DemoApplicationTests.java
  1 +package com.example.demo;
  2 +
  3 +import com.example.demo.service.Analysis;
  4 +import com.example.demo.service.Contrast;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.boot.test.context.SpringBootTest;
  7 +
  8 +import java.text.SimpleDateFormat;
  9 +import java.util.Date;
  10 +import java.util.List;
  11 +import java.util.Map;
  12 +
  13 +@SpringBootTest
  14 +class DemoApplicationTests {
  15 +
  16 + @Autowired
  17 + Contrast contrast;
  18 +
  19 +// @Test
  20 +// void contextLoads() {
  21 +// Analysis analysis = new Analysis();
  22 +// String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
  23 +// List<Map> allFile = analysis.getAllFile("E:/home/sftp/" + date);
  24 +// contrast.filterCardList(allFile);
  25 +// }
  26 +
  27 +}