Commit 82994579affdddc0321dec92b39c4dd7aa5ecd14

Authored by 함상기
1 parent 23379372

2024.04.26

@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 # "License"); you may not use this file except in compliance 8 # "License"); you may not use this file except in compliance
9 # with the License. You may obtain a copy of the License at 9 # with the License. You may obtain a copy of the License at
10 # 10 #
11 -# https://www.apache.org/licenses/LICENSE-2.0 11 +# http://www.apache.org/licenses/LICENSE-2.0
12 # 12 #
13 # Unless required by applicable law or agreed to in writing, 13 # Unless required by applicable law or agreed to in writing,
14 # software distributed under the License is distributed on an 14 # software distributed under the License is distributed on an
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 # ---------------------------------------------------------------------------- 19 # ----------------------------------------------------------------------------
20 20
21 # ---------------------------------------------------------------------------- 21 # ----------------------------------------------------------------------------
22 -# Apache Maven Wrapper startup batch script, version 3.2.0 22 +# Maven Start Up Batch script
23 # 23 #
24 # Required ENV vars: 24 # Required ENV vars:
25 # ------------------ 25 # ------------------
@@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
27 # 27 #
28 # Optional ENV vars 28 # Optional ENV vars
29 # ----------------- 29 # -----------------
  30 +# M2_HOME - location of maven2's installed home dir
30 # MAVEN_OPTS - parameters passed to the Java VM when running Maven 31 # MAVEN_OPTS - parameters passed to the Java VM when running Maven
31 # e.g. to debug Maven itself, use 32 # e.g. to debug Maven itself, use
32 # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 33 # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@@ -35,10 +36,6 @@ @@ -35,10 +36,6 @@
35 36
36 if [ -z "$MAVEN_SKIP_RC" ] ; then 37 if [ -z "$MAVEN_SKIP_RC" ] ; then
37 38
38 - if [ -f /usr/local/etc/mavenrc ] ; then  
39 - . /usr/local/etc/mavenrc  
40 - fi  
41 -  
42 if [ -f /etc/mavenrc ] ; then 39 if [ -f /etc/mavenrc ] ; then
43 . /etc/mavenrc 40 . /etc/mavenrc
44 fi 41 fi
@@ -53,7 +50,7 @@ fi @@ -53,7 +50,7 @@ fi
53 cygwin=false; 50 cygwin=false;
54 darwin=false; 51 darwin=false;
55 mingw=false 52 mingw=false
56 -case "$(uname)" in 53 +case "`uname`" in
57 CYGWIN*) cygwin=true ;; 54 CYGWIN*) cygwin=true ;;
58 MINGW*) mingw=true;; 55 MINGW*) mingw=true;;
59 Darwin*) darwin=true 56 Darwin*) darwin=true
@@ -61,9 +58,9 @@ case "$(uname)" in @@ -61,9 +58,9 @@ case "$(uname)" in
61 # See https://developer.apple.com/library/mac/qa/qa1170/_index.html 58 # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
62 if [ -z "$JAVA_HOME" ]; then 59 if [ -z "$JAVA_HOME" ]; then
63 if [ -x "/usr/libexec/java_home" ]; then 60 if [ -x "/usr/libexec/java_home" ]; then
64 - JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME 61 + export JAVA_HOME="`/usr/libexec/java_home`"
65 else 62 else
66 - JAVA_HOME="/Library/Java/Home"; export JAVA_HOME 63 + export JAVA_HOME="/Library/Java/Home"
67 fi 64 fi
68 fi 65 fi
69 ;; 66 ;;
@@ -71,38 +68,68 @@ esac @@ -71,38 +68,68 @@ esac
71 68
72 if [ -z "$JAVA_HOME" ] ; then 69 if [ -z "$JAVA_HOME" ] ; then
73 if [ -r /etc/gentoo-release ] ; then 70 if [ -r /etc/gentoo-release ] ; then
74 - JAVA_HOME=$(java-config --jre-home) 71 + JAVA_HOME=`java-config --jre-home`
75 fi 72 fi
76 fi 73 fi
77 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 +
78 # For Cygwin, ensure paths are in UNIX format before anything is touched 101 # For Cygwin, ensure paths are in UNIX format before anything is touched
79 if $cygwin ; then 102 if $cygwin ; then
  103 + [ -n "$M2_HOME" ] &&
  104 + M2_HOME=`cygpath --unix "$M2_HOME"`
80 [ -n "$JAVA_HOME" ] && 105 [ -n "$JAVA_HOME" ] &&
81 - JAVA_HOME=$(cygpath --unix "$JAVA_HOME") 106 + JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
82 [ -n "$CLASSPATH" ] && 107 [ -n "$CLASSPATH" ] &&
83 - CLASSPATH=$(cygpath --path --unix "$CLASSPATH") 108 + CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
84 fi 109 fi
85 110
86 # For Mingw, ensure paths are in UNIX format before anything is touched 111 # For Mingw, ensure paths are in UNIX format before anything is touched
87 if $mingw ; then 112 if $mingw ; then
88 - [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&  
89 - JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" 113 + [ -n "$M2_HOME" ] &&
  114 + M2_HOME="`(cd "$M2_HOME"; pwd)`"
  115 + [ -n "$JAVA_HOME" ] &&
  116 + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
90 fi 117 fi
91 118
92 if [ -z "$JAVA_HOME" ]; then 119 if [ -z "$JAVA_HOME" ]; then
93 - javaExecutable="$(which javac)"  
94 - if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then 120 + javaExecutable="`which javac`"
  121 + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
95 # readlink(1) is not available as standard on Solaris 10. 122 # readlink(1) is not available as standard on Solaris 10.
96 - readLink=$(which readlink)  
97 - if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then 123 + readLink=`which readlink`
  124 + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
98 if $darwin ; then 125 if $darwin ; then
99 - javaHome="$(dirname "\"$javaExecutable\"")"  
100 - javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" 126 + javaHome="`dirname \"$javaExecutable\"`"
  127 + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
101 else 128 else
102 - javaExecutable="$(readlink -f "\"$javaExecutable\"")" 129 + javaExecutable="`readlink -f \"$javaExecutable\"`"
103 fi 130 fi
104 - javaHome="$(dirname "\"$javaExecutable\"")"  
105 - javaHome=$(expr "$javaHome" : '\(.*\)/bin') 131 + javaHome="`dirname \"$javaExecutable\"`"
  132 + javaHome=`expr "$javaHome" : '\(.*\)/bin'`
106 JAVA_HOME="$javaHome" 133 JAVA_HOME="$javaHome"
107 export JAVA_HOME 134 export JAVA_HOME
108 fi 135 fi
@@ -118,7 +145,7 @@ if [ -z "$JAVACMD" ] ; then @@ -118,7 +145,7 @@ if [ -z "$JAVACMD" ] ; then
118 JAVACMD="$JAVA_HOME/bin/java" 145 JAVACMD="$JAVA_HOME/bin/java"
119 fi 146 fi
120 else 147 else
121 - JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" 148 + JAVACMD="`which java`"
122 fi 149 fi
123 fi 150 fi
124 151
@@ -132,9 +159,12 @@ if [ -z "$JAVA_HOME" ] ; then @@ -132,9 +159,12 @@ if [ -z "$JAVA_HOME" ] ; then
132 echo "Warning: JAVA_HOME environment variable is not set." 159 echo "Warning: JAVA_HOME environment variable is not set."
133 fi 160 fi
134 161
  162 +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
  163 +
135 # traverses directory structure from process work directory to filesystem root 164 # traverses directory structure from process work directory to filesystem root
136 # first directory with .mvn subdirectory is considered project base directory 165 # first directory with .mvn subdirectory is considered project base directory
137 find_maven_basedir() { 166 find_maven_basedir() {
  167 +
138 if [ -z "$1" ] 168 if [ -z "$1" ]
139 then 169 then
140 echo "Path not specified to find_maven_basedir" 170 echo "Path not specified to find_maven_basedir"
@@ -150,99 +180,96 @@ find_maven_basedir() { @@ -150,99 +180,96 @@ find_maven_basedir() {
150 fi 180 fi
151 # workaround for JBEAP-8937 (on Solaris 10/Sparc) 181 # workaround for JBEAP-8937 (on Solaris 10/Sparc)
152 if [ -d "${wdir}" ]; then 182 if [ -d "${wdir}" ]; then
153 - wdir=$(cd "$wdir/.." || exit 1; pwd) 183 + wdir=`cd "$wdir/.."; pwd`
154 fi 184 fi
155 # end of workaround 185 # end of workaround
156 done 186 done
157 - printf '%s' "$(cd "$basedir" || exit 1; pwd)" 187 + echo "${basedir}"
158 } 188 }
159 189
160 # concatenates all lines of a file 190 # concatenates all lines of a file
161 concat_lines() { 191 concat_lines() {
162 if [ -f "$1" ]; then 192 if [ -f "$1" ]; then
163 - # Remove \r in case we run on Windows within Git Bash  
164 - # and check out the repository with auto CRLF management  
165 - # enabled. Otherwise, we may read lines that are delimited with  
166 - # \r\n and produce $'-Xarg\r' rather than -Xarg due to word  
167 - # splitting rules.  
168 - tr -s '\r\n' ' ' < "$1"  
169 - fi  
170 -}  
171 -  
172 -log() {  
173 - if [ "$MVNW_VERBOSE" = true ]; then  
174 - printf '%s\n' "$1" 193 + echo "$(tr -s '\n' ' ' < "$1")"
175 fi 194 fi
176 } 195 }
177 196
178 -BASE_DIR=$(find_maven_basedir "$(dirname "$0")") 197 +BASE_DIR=`find_maven_basedir "$(pwd)"`
179 if [ -z "$BASE_DIR" ]; then 198 if [ -z "$BASE_DIR" ]; then
180 exit 1; 199 exit 1;
181 fi 200 fi
182 201
183 -MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR  
184 -log "$MAVEN_PROJECTBASEDIR"  
185 -  
186 ########################################################################################## 202 ##########################################################################################
187 # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central 203 # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
188 # This allows using the maven wrapper in projects that prohibit checking in binary data. 204 # This allows using the maven wrapper in projects that prohibit checking in binary data.
189 ########################################################################################## 205 ##########################################################################################
190 -wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"  
191 -if [ -r "$wrapperJarPath" ]; then  
192 - log "Found $wrapperJarPath" 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
193 else 210 else
194 - log "Couldn't find $wrapperJarPath, downloading it ..."  
195 - 211 + if [ "$MVNW_VERBOSE" = true ]; then
  212 + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
  213 + fi
196 if [ -n "$MVNW_REPOURL" ]; then 214 if [ -n "$MVNW_REPOURL" ]; then
197 - wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" 215 + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
198 else 216 else
199 - wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" 217 + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
200 fi 218 fi
201 - while IFS="=" read -r key value; do  
202 - # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )  
203 - safeValue=$(echo "$value" | tr -d '\r')  
204 - case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; 219 + while IFS="=" read key value; do
  220 + case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
205 esac 221 esac
206 - done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"  
207 - log "Downloading from: $wrapperUrl"  
208 - 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"
209 if $cygwin; then 227 if $cygwin; then
210 - wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") 228 + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
211 fi 229 fi
212 230
213 if command -v wget > /dev/null; then 231 if command -v wget > /dev/null; then
214 - log "Found wget ... using wget"  
215 - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" 232 + if [ "$MVNW_VERBOSE" = true ]; then
  233 + echo "Found wget ... using wget"
  234 + fi
216 if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then 235 if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
217 - wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" 236 + wget "$jarUrl" -O "$wrapperJarPath"
218 else 237 else
219 - wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" 238 + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
220 fi 239 fi
221 elif command -v curl > /dev/null; then 240 elif command -v curl > /dev/null; then
222 - log "Found curl ... using curl"  
223 - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" 241 + if [ "$MVNW_VERBOSE" = true ]; then
  242 + echo "Found curl ... using curl"
  243 + fi
224 if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then 244 if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
225 - curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" 245 + curl -o "$wrapperJarPath" "$jarUrl" -f
226 else 246 else
227 - curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" 247 + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
228 fi 248 fi
  249 +
229 else 250 else
230 - log "Falling back to using Java to download"  
231 - javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"  
232 - javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" 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"
233 # For Cygwin, switch paths to Windows format before running javac 255 # For Cygwin, switch paths to Windows format before running javac
234 if $cygwin; then 256 if $cygwin; then
235 - javaSource=$(cygpath --path --windows "$javaSource")  
236 - javaClass=$(cygpath --path --windows "$javaClass") 257 + javaClass=`cygpath --path --windows "$javaClass"`
237 fi 258 fi
238 - if [ -e "$javaSource" ]; then  
239 - if [ ! -e "$javaClass" ]; then  
240 - log " - Compiling MavenWrapperDownloader.java ..."  
241 - ("$JAVA_HOME/bin/javac" "$javaSource") 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")
242 fi 266 fi
243 - if [ -e "$javaClass" ]; then  
244 - log " - Running MavenWrapperDownloader.java ..."  
245 - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" 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")
246 fi 273 fi
247 fi 274 fi
248 fi 275 fi
@@ -251,58 +278,33 @@ fi @@ -251,58 +278,33 @@ fi
251 # End of extension 278 # End of extension
252 ########################################################################################## 279 ##########################################################################################
253 280
254 -# If specified, validate the SHA-256 sum of the Maven wrapper jar file  
255 -wrapperSha256Sum=""  
256 -while IFS="=" read -r key value; do  
257 - case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;  
258 - esac  
259 -done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"  
260 -if [ -n "$wrapperSha256Sum" ]; then  
261 - wrapperSha256Result=false  
262 - if command -v sha256sum > /dev/null; then  
263 - if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then  
264 - wrapperSha256Result=true  
265 - fi  
266 - elif command -v shasum > /dev/null; then  
267 - if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then  
268 - wrapperSha256Result=true  
269 - fi  
270 - else  
271 - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."  
272 - echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."  
273 - exit 1  
274 - fi  
275 - if [ $wrapperSha256Result = false ]; then  
276 - echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2  
277 - echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2  
278 - echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2  
279 - exit 1  
280 - fi 281 +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
  282 +if [ "$MVNW_VERBOSE" = true ]; then
  283 + echo $MAVEN_PROJECTBASEDIR
281 fi 284 fi
282 -  
283 MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" 285 MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
284 286
285 # For Cygwin, switch paths to Windows format before running java 287 # For Cygwin, switch paths to Windows format before running java
286 if $cygwin; then 288 if $cygwin; then
  289 + [ -n "$M2_HOME" ] &&
  290 + M2_HOME=`cygpath --path --windows "$M2_HOME"`
287 [ -n "$JAVA_HOME" ] && 291 [ -n "$JAVA_HOME" ] &&
288 - JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") 292 + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
289 [ -n "$CLASSPATH" ] && 293 [ -n "$CLASSPATH" ] &&
290 - CLASSPATH=$(cygpath --path --windows "$CLASSPATH") 294 + CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
291 [ -n "$MAVEN_PROJECTBASEDIR" ] && 295 [ -n "$MAVEN_PROJECTBASEDIR" ] &&
292 - MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") 296 + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
293 fi 297 fi
294 298
295 # Provide a "standardized" way to retrieve the CLI args that will 299 # Provide a "standardized" way to retrieve the CLI args that will
296 # work with both Windows and non-Windows executions. 300 # work with both Windows and non-Windows executions.
297 -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" 301 +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
298 export MAVEN_CMD_LINE_ARGS 302 export MAVEN_CMD_LINE_ARGS
299 303
300 WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 304 WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
301 305
302 -# shellcheck disable=SC2086 # safe args  
303 exec "$JAVACMD" \ 306 exec "$JAVACMD" \
304 $MAVEN_OPTS \ 307 $MAVEN_OPTS \
305 - $MAVEN_DEBUG_OPTS \  
306 -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ 308 -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
307 - "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ 309 + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
308 ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" 310 ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
src/main/java/com/batch/config/MatchingExtraProcessorAuto.java
@@ -42,12 +42,14 @@ public class MatchingExtraProcessorAuto { @@ -42,12 +42,14 @@ public class MatchingExtraProcessorAuto {
42 String sAccnutYm = (String) paramRec.get("accnut_ym"); 42 String sAccnutYm = (String) paramRec.get("accnut_ym");
43 String sCprCode = (String) paramRec.get("cpr_code"); 43 String sCprCode = (String) paramRec.get("cpr_code");
44 String sPartCpr = (String) paramRec.get("partn_cpr"); 44 String sPartCpr = (String) paramRec.get("partn_cpr");
  45 + String sDelngCrncy = (String) paramRec.get("delng_crncy");
45 String sConds = (String) paramRec.get("conds"); 46 String sConds = (String) paramRec.get("conds");
46 47
47 //작업시작 48 //작업시작
48 Map<String, Object> mParam = new HashMap<String, Object>(); 49 Map<String, Object> mParam = new HashMap<String, Object>();
49 mParam.put("sysSe", sSysSe); 50 mParam.put("sysSe", sSysSe);
50 mParam.put("accnutYm", sAccnutYm); 51 mParam.put("accnutYm", sAccnutYm);
  52 + mParam.put("delngCurncy", sDelngCrncy);
51 mParam.put("conds", sConds); 53 mParam.put("conds", sConds);
52 54
53 //---------------------------------------------------------------------------- 55 //----------------------------------------------------------------------------
src/main/java/com/batch/controller/JobController.java
@@ -8,6 +8,7 @@ import java.util.Map; @@ -8,6 +8,7 @@ import java.util.Map;
8 import java.util.UUID; 8 import java.util.UUID;
9 9
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.beans.factory.annotation.Value;
11 import org.springframework.web.bind.annotation.GetMapping; 12 import org.springframework.web.bind.annotation.GetMapping;
12 import org.springframework.web.bind.annotation.PathVariable; 13 import org.springframework.web.bind.annotation.PathVariable;
13 import org.springframework.web.bind.annotation.PostMapping; 14 import org.springframework.web.bind.annotation.PostMapping;
@@ -20,6 +21,7 @@ import com.batch.config.MatchingSetup.Matching; @@ -20,6 +21,7 @@ import com.batch.config.MatchingSetup.Matching;
20 import com.batch.mapper.primary.MatchingInnerDelingMapper; 21 import com.batch.mapper.primary.MatchingInnerDelingMapper;
21 import com.batch.service.JobService; 22 import com.batch.service.JobService;
22 import com.batch.util.FileUtil; 23 import com.batch.util.FileUtil;
  24 +import com.batch.util.JsonUtil;
23 import com.google.gson.JsonObject; 25 import com.google.gson.JsonObject;
24 26
25 import lombok.extern.slf4j.Slf4j; 27 import lombok.extern.slf4j.Slf4j;
@@ -33,6 +35,12 @@ public class JobController { @@ -33,6 +35,12 @@ public class JobController {
33 private JobService jobService; 35 private JobService jobService;
34 @Autowired 36 @Autowired
35 private MatchingInnerDelingMapper matchingInnerDelingMapper; 37 private MatchingInnerDelingMapper matchingInnerDelingMapper;
  38 + @Value("${thread.ai.count.rowmax}")
  39 + BigDecimal bdAiAsyncMaxRowCount;
  40 + @Value("${thread.ai.processing.wait}")
  41 + BigDecimal bdAiAsyncWaitTime;
  42 + @Value("${thread.ai.processing.wait.total}")
  43 + BigDecimal bdAiAsyncTotalWaitTime;
36 44
37 45
38 46
@@ -67,9 +75,9 @@ public class JobController { @@ -67,9 +75,9 @@ public class JobController {
67 UUID uuid = UUID.randomUUID(); 75 UUID uuid = UUID.randomUUID();
68 String sJobGroup = uuid.toString(); 76 String sJobGroup = uuid.toString();
69 77
70 - log.debug("Start Create Job"); 78 + log.info("Start Create Job");
71 jobService.createData(sJobGroup, params); 79 jobService.createData(sJobGroup, params);
72 - log.debug("End Create Job"); 80 + log.info("End Create Job");
73 81
74 Map<String, String> rtnMap = new HashMap<String, String>(); 82 Map<String, String> rtnMap = new HashMap<String, String>();
75 rtnMap.put("jobGroupId", sJobGroup); 83 rtnMap.put("jobGroupId", sJobGroup);
@@ -94,9 +102,9 @@ public class JobController { @@ -94,9 +102,9 @@ public class JobController {
94 UUID uuid = UUID.randomUUID(); 102 UUID uuid = UUID.randomUUID();
95 String sJobGroup = uuid.toString(); 103 String sJobGroup = uuid.toString();
96 104
97 - log.debug("Start Matching Job"); 105 + log.info("Start Matching Job");
98 jobService.matchingJob(sJobGroup, params); 106 jobService.matchingJob(sJobGroup, params);
99 - log.debug("End Matching Job"); 107 + log.info("End Matching Job");
100 108
101 Map<String, String> rtnMap = new HashMap<String, String>(); 109 Map<String, String> rtnMap = new HashMap<String, String>();
102 rtnMap.put("jobGroupId", sJobGroup); 110 rtnMap.put("jobGroupId", sJobGroup);
@@ -122,7 +130,8 @@ public class JobController { @@ -122,7 +130,8 @@ public class JobController {
122 UUID uuid = UUID.randomUUID(); 130 UUID uuid = UUID.randomUUID();
123 String sJobGroup = uuid.toString(); 131 String sJobGroup = uuid.toString();
124 132
125 - log.debug("Start Extra Matching Job"); 133 + log.info("Start Extra Matching Job");
  134 + params.put("asCurrency", "Y");
126 List<Map> retData = matchingInnerDelingMapper.getCustomItemReadData(params); 135 List<Map> retData = matchingInnerDelingMapper.getCustomItemReadData(params);
127 136
128 // 수익/비용 137 // 수익/비용
@@ -140,7 +149,7 @@ public class JobController { @@ -140,7 +149,7 @@ public class JobController {
140 jobService.extraJobSub(sJobGroup, cParams); 149 jobService.extraJobSub(sJobGroup, cParams);
141 } 150 }
142 151
143 - log.debug("End Extra Matching Job"); 152 + log.info("End Extra Matching Job");
144 153
145 Map<String, String> rtnMap = new HashMap<String, String>(); 154 Map<String, String> rtnMap = new HashMap<String, String>();
146 rtnMap.put("jobGroupId", sJobGroup); 155 rtnMap.put("jobGroupId", sJobGroup);
@@ -166,7 +175,7 @@ public class JobController { @@ -166,7 +175,7 @@ public class JobController {
166 UUID uuid = UUID.randomUUID(); 175 UUID uuid = UUID.randomUUID();
167 String sJobGroup = uuid.toString(); 176 String sJobGroup = uuid.toString();
168 177
169 - log.debug("Start AI Sub Matching Job"); 178 + log.info("Start AI Sub Matching Job");
170 List<Map> retData = matchingInnerDelingMapper.getAiSubReadData(params); 179 List<Map> retData = matchingInnerDelingMapper.getAiSubReadData(params);
171 180
172 //AI의 경우 수익비용만 매칭하고 있음 181 //AI의 경우 수익비용만 매칭하고 있음
@@ -178,7 +187,7 @@ public class JobController { @@ -178,7 +187,7 @@ public class JobController {
178 jobService.aiSubJobSub(sJobGroup, cParams); 187 jobService.aiSubJobSub(sJobGroup, cParams);
179 } 188 }
180 189
181 - log.debug("End Extra Matching Job"); 190 + log.info("End Extra Matching Job");
182 191
183 Map<String, String> rtnMap = new HashMap<String, String>(); 192 Map<String, String> rtnMap = new HashMap<String, String>();
184 rtnMap.put("jobGroupId", sJobGroup); 193 rtnMap.put("jobGroupId", sJobGroup);
@@ -200,19 +209,49 @@ public class JobController { @@ -200,19 +209,49 @@ public class JobController {
200 * "error_range": "0" 209 * "error_range": "0"
201 * } 210 * }
202 */ 211 */
203 - //Job Create Log 212 + //Job Create LogmatchingInnerDelingMapper
204 UUID uuid = UUID.randomUUID(); 213 UUID uuid = UUID.randomUUID();
205 String sJobGroup = uuid.toString(); 214 String sJobGroup = uuid.toString();
206 215
207 - log.debug("Start AI Matching Job"); 216 + log.info("Start AI Matching Job");
208 List<Map> retData = matchingInnerDelingMapper.getAiReadData(params); 217 List<Map> retData = matchingInnerDelingMapper.getAiReadData(params);
  218 + BigDecimal bdCurrentRowCount = BigDecimal.ZERO;
209 for(Map curMap : retData) { 219 for(Map curMap : retData) {
210 Map<String, Object> curMParams = new HashMap<String, Object>(); 220 Map<String, Object> curMParams = new HashMap<String, Object>();
211 curMParams.putAll(curMap); 221 curMParams.putAll(curMap);
212 curMParams.put("error_range", params.get("error_range")); 222 curMParams.put("error_range", params.get("error_range"));
  223 +
  224 + BigDecimal bdCntAll = new BigDecimal(String.valueOf(curMap.get("cnt_all")));
  225 + bdCurrentRowCount = bdCurrentRowCount.add(bdCntAll);
  226 + log.info("Call Matching Job (" + JsonUtil.objectToString(curMap) + ")");
213 jobService.aiJobSub(sJobGroup, curMParams); 227 jobService.aiJobSub(sJobGroup, curMParams);
  228 +
  229 + //전체카운트가 처리가능카운트를 넘어설때
  230 + if (bdCurrentRowCount.compareTo(bdAiAsyncMaxRowCount) > -1) {
  231 + bdCurrentRowCount = BigDecimal.ZERO;
  232 +
  233 + //현재 작업그룹이 종료가 되었는지 체크해서 종료시 카운트 초기화 하고 다음작업을 한다.
  234 + boolean blnStatus = true;
  235 + Integer iTotalWait = 0;
  236 + Integer iWaitTime = bdAiAsyncWaitTime.intValue() * 1000; //밀리초
  237 + do {
  238 + Map<String, Object> mParam = new HashMap<String, Object>();
  239 + mParam.put("userJobGroup", sJobGroup);
  240 + List<Map> lmJob = matchingInnerDelingMapper.getUserJobStatus(mParam);
  241 + for (Map curJob : lmJob) {
  242 + String ScurStatus = (String) curJob.get("status");
  243 + if (!"Finished".equalsIgnoreCase(ScurStatus)) {
  244 + blnStatus = false;
  245 + Thread.sleep(iWaitTime);
  246 + iTotalWait = iTotalWait + iWaitTime;
  247 + break;
  248 + }
  249 + }
  250 + } while (!blnStatus && iTotalWait < bdAiAsyncTotalWaitTime.intValue()); //전체 기다리는 시간까지 체크
  251 + log.info("Next Thread Group Processing");
  252 + }
214 } 253 }
215 - log.debug("End AI Matching Job"); 254 + log.info("End AI Matching Job");
216 255
217 Map<String, String> rtnMap = new HashMap<String, String>(); 256 Map<String, String> rtnMap = new HashMap<String, String>();
218 rtnMap.put("jobGroupId", sJobGroup); 257 rtnMap.put("jobGroupId", sJobGroup);
@@ -233,9 +272,9 @@ public class JobController { @@ -233,9 +272,9 @@ public class JobController {
233 UUID uuid = UUID.randomUUID(); 272 UUID uuid = UUID.randomUUID();
234 String sJobGroup = uuid.toString(); 273 String sJobGroup = uuid.toString();
235 274
236 - log.debug("Start Return Job"); 275 + log.info("Start Return Job");
237 jobService.returnRwsultData(sJobGroup, params); 276 jobService.returnRwsultData(sJobGroup, params);
238 - log.debug("End Return Job"); 277 + log.info("End Return Job");
239 278
240 Map<String, String> rtnMap = new HashMap<String, String>(); 279 Map<String, String> rtnMap = new HashMap<String, String>();
241 rtnMap.put("jobGroupId", sJobGroup); 280 rtnMap.put("jobGroupId", sJobGroup);
@@ -311,6 +350,34 @@ public class JobController { @@ -311,6 +350,34 @@ public class JobController {
311 350
312 return rtnVal; 351 return rtnVal;
313 } 352 }
  353 +
  354 +
  355 + @PostMapping("/callAsyncJob")
  356 + public Map<String, String> callAsyncJob( @RequestBody Map<String, String> params) throws Exception {
  357 +
  358 + /*
  359 + * {
  360 + * "PrgName": "cmd",
  361 + * "PrgParams": "/C dir /w",
  362 + * }
  363 + */
  364 + //Job Create Log
  365 + UUID uuid = UUID.randomUUID();
  366 + String sJobGroup = uuid.toString();
  367 +
  368 + log.info("Start AI Sub Matching Job");
  369 +
  370 + //OS Command Line 수행
  371 + jobService.callAsyncJobSub(sJobGroup, params);
  372 +
  373 + log.info("End Extra Matching Job");
  374 +
  375 + Map<String, String> rtnMap = new HashMap<String, String>();
  376 + rtnMap.put("jobGroupId", sJobGroup);
  377 + rtnMap.put("jobMessage", "OS Command 작업을 시작합니다. 작업이 끝난후 작업결과는 별도로 확인 바랍니다.");
  378 +
  379 + return rtnMap;
  380 + }
314 381
315 382
316 } 383 }
src/main/java/com/batch/service/JobService.java
@@ -36,7 +36,7 @@ import com.batch.config.MatchingSetup.Matching; @@ -36,7 +36,7 @@ import com.batch.config.MatchingSetup.Matching;
36 import com.batch.mapper.primary.MatchingInnerDelingMapper; 36 import com.batch.mapper.primary.MatchingInnerDelingMapper;
37 import com.batch.mapper.secondary.OracleMapper; 37 import com.batch.mapper.secondary.OracleMapper;
38 import com.batch.util.FileUtil; 38 import com.batch.util.FileUtil;
39 - 39 +import com.batch.util.StringUtil;
40 import com.batch.service.JobService; 40 import com.batch.service.JobService;
41 import lombok.extern.slf4j.Slf4j; 41 import lombok.extern.slf4j.Slf4j;
42 42
@@ -49,6 +49,9 @@ public class JobService { @@ -49,6 +49,9 @@ public class JobService {
49 49
50 @Value("${python.ai.target}") 50 @Value("${python.ai.target}")
51 String sPythonAiTarget; 51 String sPythonAiTarget;
  52 +
  53 + @Value("${matching.auto.exceptListByComma}")
  54 + String sExceptMatchType;
52 55
53 @Autowired 56 @Autowired
54 private JobLauncher jobLauncher; 57 private JobLauncher jobLauncher;
@@ -102,8 +105,18 @@ public class JobService { @@ -102,8 +105,18 @@ public class JobService {
102 } 105 }
103 } 106 }
104 107
105 -  
106 for (String sJobType : lJobType) { 108 for (String sJobType : lJobType) {
  109 + if (!matchingSetup.getMatching(sJobType).getActive()) {
  110 + log.info("[" + sThreadName + "]JobType(" + sJobType + " is Disabled");
  111 + continue;
  112 + };
  113 +
  114 + List<String> lExceptMatchType = StringUtil.StringToArrayList(sExceptMatchType);
  115 + if (lExceptMatchType.indexOf(sJobType) > -1) {
  116 + log.info("[" + sThreadName + "]JobType(" + sJobType + " is Excepted");
  117 + continue;
  118 + };
  119 +
107 log.info("[" + sThreadName + "]Current running job type: " + sJobType); 120 log.info("[" + sThreadName + "]Current running job type: " + sJobType);
108 JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params); 121 JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params);
109 if (!jobExe.getStatus().equals(BatchStatus.COMPLETED)) { 122 if (!jobExe.getStatus().equals(BatchStatus.COMPLETED)) {
@@ -143,7 +156,7 @@ public class JobService { @@ -143,7 +156,7 @@ public class JobService {
143 String sThreadName = Thread.currentThread().getName(); 156 String sThreadName = Thread.currentThread().getName();
144 long startTime = System.currentTimeMillis(); 157 long startTime = System.currentTimeMillis();
145 log.info("extra [" + sThreadName + "]Job Started : " + startTime); 158 log.info("extra [" + sThreadName + "]Job Started : " + startTime);
146 - log.debug("extra [" + sThreadName + "]params=" + paramRec.toString()); 159 + log.info("extra [" + sThreadName + "]params=" + paramRec.toString());
147 160
148 MatchingExtraProcessorAuto matchingExtraProcessorAuto = new MatchingExtraProcessorAuto(matchingInnerDelingMapper); 161 MatchingExtraProcessorAuto matchingExtraProcessorAuto = new MatchingExtraProcessorAuto(matchingInnerDelingMapper);
149 162
@@ -468,5 +481,60 @@ public class JobService { @@ -468,5 +481,60 @@ public class JobService {
468 paramLog.put("exit_message", ""); 481 paramLog.put("exit_message", "");
469 matchingInnerDelingMapper.finishUserJob(paramLog); 482 matchingInnerDelingMapper.finishUserJob(paramLog);
470 483
471 - } 484 + }
  485 +
  486 +
  487 + @SuppressWarnings("rawtypes")
  488 + @Async("commAsync")
  489 + public void callAsyncJobSub(String jobGroupId, Map paramRec) throws Exception {
  490 +
  491 +
  492 + //Job Create Log
  493 + UUID uuid = UUID.randomUUID();
  494 + HashMap<String, String> mt = new HashMap<String, String>();
  495 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
  496 + String sDate = dateFormat.format(new Date()) + ":" + uuid.toString();
  497 +
  498 + Map<String, Object> paramLog = new HashMap<String, Object>();
  499 + paramLog.put("user_job_group", jobGroupId);
  500 + paramLog.put("user_job_id", sDate);
  501 + paramLog.put("user_job_name", "OS Command Run(" + paramRec.toString() + ")");
  502 + matchingInnerDelingMapper.createUserJob(paramLog);
  503 +
  504 +
  505 + long startTime = System.currentTimeMillis();
  506 + log.info("OS Command Run Started : " + startTime);
  507 + log.info("OS Command Run params=" + paramRec.toString());
  508 +
  509 + String sPrgName = (String) paramRec.get("PrgName");
  510 + String sPrgParam = (String) paramRec.get("PrgParams");
  511 + List<String> lParams = StringUtil.StringToArrayList(sPrgParam, " ");
  512 +
  513 + ArrayList<String> lcmd = new ArrayList<String>();
  514 + lcmd.add(sPrgName);
  515 + lcmd.addAll(lParams);
  516 + lcmd.add(jobGroupId);
  517 +
  518 + new ProcessExecutor()
  519 + .command(lcmd)
  520 + .redirectOutput(new LogOutputStream() {
  521 + @Override
  522 + protected void processLine(String line) {
  523 + log.info(line);
  524 + }
  525 + })
  526 + .execute();
  527 +
  528 + long endTime = System.currentTimeMillis();
  529 + log.info("OS Command Run Ended: " + endTime);
  530 + log.info("OS Command Running Time : " + (endTime - startTime) + "ms");
  531 +
  532 +
  533 +// //작업종료에 대한 로그 업데이트
  534 +// paramLog.put("exit_code", "0");
  535 +// paramLog.put("exit_message", "");
  536 +// matchingInnerDelingMapper.finishUserJob(paramLog);
  537 +
  538 + }
  539 +
472 } 540 }
src/main/resources/application.properties
@@ -18,14 +18,14 @@ spring.datasource.hikari.primary.username=account @@ -18,14 +18,14 @@ spring.datasource.hikari.primary.username=account
18 spring.datasource.hikari.primary.password=daeucna10! 18 spring.datasource.hikari.primary.password=daeucna10!
19 19
20 # secondary 20 # secondary
21 -#spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver  
22 -#spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@vanguardlab.kr:63522/CONFINAS19C  
23 -#spring.datasource.hikari.secondary.username=ai  
24 -#spring.datasource.hikari.secondary.password=ai  
25 spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver 21 spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver
26 -spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@daeuserver2.iptime.org:1521/orcl  
27 -spring.datasource.hikari.secondary.username=CONFINAS3  
28 -spring.datasource.hikari.secondary.password=CONFINAS3 22 +spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@vanguardlab.kr:63522/CONFINAS19C
  23 +spring.datasource.hikari.secondary.username=ai
  24 +spring.datasource.hikari.secondary.password=ai
  25 +#spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver
  26 +#spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@daeuserver2.iptime.org:1521/orcl
  27 +#spring.datasource.hikari.secondary.username=CONFINAS3
  28 +#spring.datasource.hikari.secondary.password=CONFINAS3
29 29
30 30
31 31
@@ -52,7 +52,13 @@ logging.level.p6spy=off @@ -52,7 +52,13 @@ logging.level.p6spy=off
52 thread.comm.count=10 52 thread.comm.count=10
53 thread.ext.count=50 53 thread.ext.count=50
54 thread.ai.count=50 54 thread.ai.count=50
  55 +thread.ai.count.rowmax=500
  56 +thread.ai.processing.wait=15
  57 +thread.ai.processing.wait.total=3600
55 58
56 #Python 프로퍼티 설정 59 #Python 프로퍼티 설정
57 pytyon.path=D:\\Programs\\devp\\python-3.12.2\\python.exe 60 pytyon.path=D:\\Programs\\devp\\python-3.12.2\\python.exe
58 -python.ai.target=D:\\Working\\Python\\Test1.py  
59 \ No newline at end of file 61 \ No newline at end of file
  62 +python.ai.target=D:\\Working\\Python\\Test1.py
  63 +
  64 +#Auto Matching 제외
  65 +matching.auto.exceptListByComma=C-A-ROUND(-2)
60 \ No newline at end of file 66 \ No newline at end of file
src/main/resources/matchingSetup.json
@@ -289,6 +289,54 @@ @@ -289,6 +289,54 @@
289 }, 289 },
290 290
291 291
  292 +
  293 + {
  294 + "active": true,
  295 + "type": "C-A-ROUND(-2)",
  296 + "typeName": "자기수익(전표번호,거래통화),상대비용(전표번호,거래통화),비교(년월,거래통화,거래금액)",
  297 +
  298 + "condOne": {
  299 + "cond": [
  300 + "dta_ty in ('11','21','41')",
  301 + "mtch_ty is null",
  302 + "chit_no is not null",
  303 + "chit_no != ''"
  304 + ],
  305 + "makeCompareKey": [
  306 + "chit_no",
  307 + "delng_crncy"
  308 + ]
  309 + },
  310 + "condTwo": {
  311 + "cond": [
  312 + "dta_ty in ('12','22','42')",
  313 + "mtch_ty is null",
  314 + "chit_no is not null",
  315 + "chit_no != ''"
  316 + ],
  317 + "makeCompareKey": [
  318 + "chit_no",
  319 + "delng_crncy"
  320 + ]
  321 + },
  322 + "uniqueKey": [
  323 + "sys_se",
  324 + "accnut_ym",
  325 + "sn"
  326 + ],
  327 + "compareKey": "compare_ky",
  328 + "currencyField": "delng_crncy",
  329 + "amtField": "round(sum(delng_amt), -2) as delng_amt",
  330 + "compareField": [
  331 + "accnut_ym",
  332 + "delng_crncy",
  333 + "delng_amt"
  334 + ],
  335 + "matchingType": "mtch_ty",
  336 + "matchingTypeName": "mtch_ty_nm",
  337 + "matchingNumber": "mtch_ky"
  338 + },
  339 +
292 340
293 341
294 342
src/main/resources/mybatis/primaryMapper/MatchingInnerDelingMapper.xml
@@ -9,6 +9,9 @@ @@ -9,6 +9,9 @@
9 , accnut_ym 9 , accnut_ym
10 , cpr_code 10 , cpr_code
11 , partn_cpr 11 , partn_cpr
  12 + <if test='asCurrency eq "Y".toString()'>
  13 + , delng_crncy
  14 + </if>
12 FROM 15 FROM
13 ( 16 (
14 SELECT 17 SELECT
@@ -16,6 +19,9 @@ @@ -16,6 +19,9 @@
16 , accnut_ym 19 , accnut_ym
17 , cpr_code 20 , cpr_code
18 , partn_cpr 21 , partn_cpr
  22 + <if test='asCurrency eq "Y".toString()'>
  23 + , delng_crncy
  24 + </if>
19 , case when count(*) > 0 then 1 else 0 end as cnt 25 , case when count(*) > 0 then 1 else 0 end as cnt
20 FROM 26 FROM
21 public.batch_tbcr_inner_delng 27 public.batch_tbcr_inner_delng
@@ -35,12 +41,18 @@ @@ -35,12 +41,18 @@
35 , accnut_ym 41 , accnut_ym
36 , cpr_code 42 , cpr_code
37 , partn_cpr 43 , partn_cpr
  44 + <if test='asCurrency eq "Y".toString()'>
  45 + , delng_crncy
  46 + </if>
38 union all 47 union all
39 SELECT 48 SELECT
40 sys_se 49 sys_se
41 , accnut_ym 50 , accnut_ym
42 , partn_cpr as cpr_code 51 , partn_cpr as cpr_code
43 , cpr_code as partn_cpr 52 , cpr_code as partn_cpr
  53 + <if test='asCurrency eq "Y".toString()'>
  54 + , delng_crncy
  55 + </if>
44 , case when count(*) > 0 then 1 else 0 end as cnt 56 , case when count(*) > 0 then 1 else 0 end as cnt
45 FROM 57 FROM
46 public.batch_tbcr_inner_delng 58 public.batch_tbcr_inner_delng
@@ -60,12 +72,18 @@ @@ -60,12 +72,18 @@
60 , accnut_ym 72 , accnut_ym
61 , cpr_code 73 , cpr_code
62 , partn_cpr 74 , partn_cpr
  75 + <if test='asCurrency eq "Y".toString()'>
  76 + , delng_crncy
  77 + </if>
63 ) m 78 ) m
64 GROUP BY 79 GROUP BY
65 sys_se 80 sys_se
66 , accnut_ym 81 , accnut_ym
67 , cpr_code 82 , cpr_code
68 , partn_cpr 83 , partn_cpr
  84 + <if test='asCurrency eq "Y".toString()'>
  85 + , delng_crncy
  86 + </if>
69 HAVING sum(cnt) > 1 87 HAVING sum(cnt) > 1
70 </select> 88 </select>
71 89
@@ -457,6 +475,7 @@ @@ -457,6 +475,7 @@
457 and accnut_ym = #{accnutYm} 475 and accnut_ym = #{accnutYm}
458 and cpr_code = #{cprCode} 476 and cpr_code = #{cprCode}
459 and partn_cpr = #{partnCpr} 477 and partn_cpr = #{partnCpr}
  478 + and delng_crncy = #{delngCurncy}
460 and mtch_ky is null 479 and mtch_ky is null
461 <if test='conds eq "T".toString()'> 480 <if test='conds eq "T".toString()'>
462 and dta_ty in ('11','21','41') 481 and dta_ty in ('11','21','41')
@@ -485,6 +504,7 @@ @@ -485,6 +504,7 @@
485 and accnut_ym = #{accnutYm} 504 and accnut_ym = #{accnutYm}
486 and cpr_code = #{cprCode} 505 and cpr_code = #{cprCode}
487 and partn_cpr = #{partnCpr} 506 and partn_cpr = #{partnCpr}
  507 + and delng_crncy = #{delngCurncy}
488 and mtch_ky is null 508 and mtch_ky is null
489 <if test='conds eq "T".toString()'> 509 <if test='conds eq "T".toString()'>
490 and dta_ty in ('12','22','42') 510 and dta_ty in ('12','22','42')
@@ -548,6 +568,8 @@ @@ -548,6 +568,8 @@
548 , partn_cpr 568 , partn_cpr
549 , tb_ty 569 , tb_ty
550 , delng_crncy 570 , delng_crncy
  571 + , sum(cnt) as cnt
  572 + , max(cnt_all) as cnt_all
551 FROM 573 FROM
552 ( 574 (
553 SELECT 575 SELECT
@@ -558,6 +580,7 @@ @@ -558,6 +580,7 @@
558 , delng_crncy 580 , delng_crncy
559 , case when dta_ty in ('11','21','41') then 'T' else 'B' end tb_ty 581 , case when dta_ty in ('11','21','41') then 'T' else 'B' end tb_ty
560 , case when count(*) > 0 then 1 else 0 end as cnt 582 , case when count(*) > 0 then 1 else 0 end as cnt
  583 + , count(*) as cnt_all
561 FROM 584 FROM
562 public.batch_tbcr_inner_delng 585 public.batch_tbcr_inner_delng
563 WHERE 586 WHERE
@@ -587,6 +610,7 @@ @@ -587,6 +610,7 @@
587 , delng_crncy 610 , delng_crncy
588 , case when dta_ty in ('12','22','42') then 'T' else 'B' end as tb_ty 611 , case when dta_ty in ('12','22','42') then 'T' else 'B' end as tb_ty
589 , case when count(*) > 0 then 1 else 0 end as cnt 612 , case when count(*) > 0 then 1 else 0 end as cnt
  613 + , count(*) as cnt_all
590 FROM 614 FROM
591 public.batch_tbcr_inner_delng 615 public.batch_tbcr_inner_delng
592 WHERE 616 WHERE
@@ -616,6 +640,7 @@ @@ -616,6 +640,7 @@
616 , delng_crncy 640 , delng_crncy
617 , tb_ty 641 , tb_ty
618 HAVING sum(cnt) > 1 642 HAVING sum(cnt) > 1
  643 + ORDER BY cnt_all
619 </select> 644 </select>
620 645
621 <!-- User Job Status --> 646 <!-- User Job Status -->
src/main/resources/mybatis/secondaryMapper/OracleMapper.xml
@@ -7,10 +7,19 @@ @@ -7,10 +7,19 @@
7 WITH COMP_INFO AS ( 7 WITH COMP_INFO AS (
8 SELECT DISTINCT 8 SELECT DISTINCT
9 COMP_CODE AS COMP_CODE 9 COMP_CODE AS COMP_CODE
10 - , COMP_KR_NAME AS COMP_NAME 10 + , (
  11 + SELECT
  12 + COMP_NAME_0
  13 + FROM TBBC_COMPANY_CODE_NLS
  14 + WHERE
  15 + SESSION_ID = A.SESSION_ID
  16 + AND COMP_CODE = A.COMP_CODE
  17 + AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM
  18 + AND ROWNUM = 1
  19 + ) AS COMP_NAME
11 , BOOK_CURRENCY AS COMP_CURRENCY 20 , BOOK_CURRENCY AS COMP_CURRENCY
12 , COMP_COA AS COMP_COA 21 , COMP_COA AS COMP_COA
13 - FROM TBBC_COMPANY_CODE 22 + FROM TBBC_COMPANY_CODE A
14 WHERE 23 WHERE
15 #{accnutYm} BETWEEN START_YYMM AND END_YYMM 24 #{accnutYm} BETWEEN START_YYMM AND END_YYMM
16 ) 25 )
@@ -28,7 +37,7 @@ @@ -28,7 +37,7 @@
28 A.COMP_ACCT_CODE, 37 A.COMP_ACCT_CODE,
29 ( 38 (
30 SELECT DISTINCT 39 SELECT DISTINCT
31 - COMP_ACCT_NAME 40 + COMP_ACCT_CODE
32 FROM TBBC_COMP_ACCT_CODE 41 FROM TBBC_COMP_ACCT_CODE
33 WHERE 42 WHERE
34 FS_TYPE = '1' 43 FS_TYPE = '1'
@@ -36,7 +45,7 @@ @@ -36,7 +45,7 @@
36 AND COMP_ACCT_CODE = A.COMP_ACCT_CODE 45 AND COMP_ACCT_CODE = A.COMP_ACCT_CODE
37 AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM 46 AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM
38 AND ROWNUM = 1 47 AND ROWNUM = 1
39 - ) AS COMP_ACCT_NAME, 48 + ) AS COMP_ACCT_NAME,
40 A.COMP_PROD_CODE, 49 A.COMP_PROD_CODE,
41 A.RECON_KEY, 50 A.RECON_KEY,
42 A.TRAN_DATE, 51 A.TRAN_DATE,
@@ -50,13 +59,13 @@ @@ -50,13 +59,13 @@
50 A.CONS_ACCT_CODE, 59 A.CONS_ACCT_CODE,
51 ( 60 (
52 SELECT 61 SELECT
53 - CONS_ACCT_KR_NAME  
54 - FROM TBBC_ACCT_CODE 62 + CONS_ACCT_NAME_0
  63 + FROM TBBC_ACCT_CODE_NLS
55 WHERE 64 WHERE
56 CONS_ACCT_CODE = A.CONS_ACCT_CODE 65 CONS_ACCT_CODE = A.CONS_ACCT_CODE
57 - AND CONS_COA = 'GOV_I_COA' 66 + AND CONS_COA = 'LS_COA'
58 AND FS_TYPE = '1' 67 AND FS_TYPE = '1'
59 - AND TO_CHAR(SYSDATE, 'YYYYMM') BETWEEN START_YYMM AND END_YYMM 68 + AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM
60 AND ROWNUM = 1 69 AND ROWNUM = 1
61 ) AS CONS_ACCT_NAME, 70 ) AS CONS_ACCT_NAME,
62 A.PROD_CODE, 71 A.PROD_CODE,
@@ -75,8 +84,8 @@ @@ -75,8 +84,8 @@
75 A.OWN_BIZ_NO, 84 A.OWN_BIZ_NO,
76 A.PARTNER_BIZ_NO, 85 A.PARTNER_BIZ_NO,
77 A.ACCT_DATE, 86 A.ACCT_DATE,
78 - NULL AS CREATION_DIV_CODE,  
79 - NULL AS COST_MAT_KEY 87 + A.CREATION_DIV_CODE,
  88 + A.COST_MAT_KEY
80 FROM 89 FROM
81 TBCR_TRANSACTION_HISTORY A 90 TBCR_TRANSACTION_HISTORY A
82 INNER JOIN COMP_INFO B 91 INNER JOIN COMP_INFO B
@@ -98,7 +107,10 @@ @@ -98,7 +107,10 @@
98 FROM TBCR_MATCHING A, 107 FROM TBCR_MATCHING A,
99 TBCR_MATCHING_DETAIL B 108 TBCR_MATCHING_DETAIL B
100 WHERE 109 WHERE
101 - A.MATCH_KEY = B.MATCH_KEY 110 + A.SESSION_ID = B.SESSION_ID
  111 + AND A.CONS_GROUP = B.CONS_GROUP
  112 + AND A.LEDGER = B.LEDGER
  113 + AND A.MATCH_KEY = B.MATCH_KEY
102 AND A.ACCOUNT_PERIOD = B.ACCOUNT_PERIOD 114 AND A.ACCOUNT_PERIOD = B.ACCOUNT_PERIOD
103 AND A.CONS_GROUP = #{sysSe} 115 AND A.CONS_GROUP = #{sysSe}
104 AND A.ACCOUNT_PERIOD = #{accnutYm} 116 AND A.ACCOUNT_PERIOD = #{accnutYm}
src/main/resources/schema.sql
@@ -33,11 +33,11 @@ CREATE TABLE IF NOT EXISTS batch_tbcr_inner_delng @@ -33,11 +33,11 @@ CREATE TABLE IF NOT EXISTS batch_tbcr_inner_delng
33 sumry character varying(500), 33 sumry character varying(500),
34 org_mtch_ty character varying(10), 34 org_mtch_ty character varying(10),
35 org_mtch_ky numeric(10,0), 35 org_mtch_ky numeric(10,0),
36 - new_mtch_ty character varying(10), 36 + new_mtch_ty character varying(50),
37 new_mtch_ky numeric(10,0), 37 new_mtch_ky numeric(10,0),
38 compare_ky character varying(100), 38 compare_ky character varying(100),
39 mtch_sys character varying(10), 39 mtch_sys character varying(10),
40 - mtch_ty character varying(10), 40 + mtch_ty character varying(50),
41 mtch_ty_nm character varying(100), 41 mtch_ty_nm character varying(100),
42 mtch_ky bigint DEFAULT 0, 42 mtch_ky bigint DEFAULT 0,
43 creation_div_code character varying(3), 43 creation_div_code character varying(3),
@@ -90,3 +90,11 @@ http://localhost:8080/api/job/return @@ -90,3 +90,11 @@ http://localhost:8080/api/job/return
90 90
91 #작업진행결과 91 #작업진행결과
92 http://localhost:8080/api/job/userJobInfo/JOB그룹id 92 http://localhost:8080/api/job/userJobInfo/JOB그룹id
  93 +
  94 +#Async Job 호출
  95 +http://localhost:8080/api/job/callAsyncJob
  96 +{
  97 + "PrgName": "cmd",
  98 + "PrgParams": "/C dir /w"
  99 +}
  100 +