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 | 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 | 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 | 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 | 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 | 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 | +} | ... | ... |