Commit ec0b8de94a6029b8e4c4f6a5002020908847a4d5
0 parents
初始化
Showing
16 changed files
with
1564 additions
and
0 deletions
.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
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 | +} |