Commit 82994579affdddc0321dec92b39c4dd7aa5ecd14
1 parent
23379372
2024.04.26
Showing
10 changed files
with
388 additions
and
150 deletions
Show diff stats
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | # "License"); you may not use this file except in compliance |
9 | 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 | 13 | # Unless required by applicable law or agreed to in writing, |
14 | 14 | # software distributed under the License is distributed on an |
... | ... | @@ -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 | 24 | # Required ENV vars: |
25 | 25 | # ------------------ |
... | ... | @@ -27,6 +27,7 @@ |
27 | 27 | # |
28 | 28 | # Optional ENV vars |
29 | 29 | # ----------------- |
30 | +# M2_HOME - location of maven2's installed home dir | |
30 | 31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven |
31 | 32 | # e.g. to debug Maven itself, use |
32 | 33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 |
... | ... | @@ -35,10 +36,6 @@ |
35 | 36 | |
36 | 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 | 39 | if [ -f /etc/mavenrc ] ; then |
43 | 40 | . /etc/mavenrc |
44 | 41 | fi |
... | ... | @@ -53,7 +50,7 @@ fi |
53 | 50 | cygwin=false; |
54 | 51 | darwin=false; |
55 | 52 | mingw=false |
56 | -case "$(uname)" in | |
53 | +case "`uname`" in | |
57 | 54 | CYGWIN*) cygwin=true ;; |
58 | 55 | MINGW*) mingw=true;; |
59 | 56 | Darwin*) darwin=true |
... | ... | @@ -61,9 +58,9 @@ case "$(uname)" in |
61 | 58 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html |
62 | 59 | if [ -z "$JAVA_HOME" ]; then |
63 | 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 | 62 | else |
66 | - JAVA_HOME="/Library/Java/Home"; export JAVA_HOME | |
63 | + export JAVA_HOME="/Library/Java/Home" | |
67 | 64 | fi |
68 | 65 | fi |
69 | 66 | ;; |
... | ... | @@ -71,38 +68,68 @@ esac |
71 | 68 | |
72 | 69 | if [ -z "$JAVA_HOME" ] ; then |
73 | 70 | if [ -r /etc/gentoo-release ] ; then |
74 | - JAVA_HOME=$(java-config --jre-home) | |
71 | + JAVA_HOME=`java-config --jre-home` | |
75 | 72 | fi |
76 | 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 | 101 | # For Cygwin, ensure paths are in UNIX format before anything is touched |
79 | 102 | if $cygwin ; then |
103 | + [ -n "$M2_HOME" ] && | |
104 | + M2_HOME=`cygpath --unix "$M2_HOME"` | |
80 | 105 | [ -n "$JAVA_HOME" ] && |
81 | - JAVA_HOME=$(cygpath --unix "$JAVA_HOME") | |
106 | + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | |
82 | 107 | [ -n "$CLASSPATH" ] && |
83 | - CLASSPATH=$(cygpath --path --unix "$CLASSPATH") | |
108 | + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` | |
84 | 109 | fi |
85 | 110 | |
86 | 111 | # For Mingw, ensure paths are in UNIX format before anything is touched |
87 | 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 | 117 | fi |
91 | 118 | |
92 | 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 | 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 | 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 | 128 | else |
102 | - javaExecutable="$(readlink -f "\"$javaExecutable\"")" | |
129 | + javaExecutable="`readlink -f \"$javaExecutable\"`" | |
103 | 130 | fi |
104 | - javaHome="$(dirname "\"$javaExecutable\"")" | |
105 | - javaHome=$(expr "$javaHome" : '\(.*\)/bin') | |
131 | + javaHome="`dirname \"$javaExecutable\"`" | |
132 | + javaHome=`expr "$javaHome" : '\(.*\)/bin'` | |
106 | 133 | JAVA_HOME="$javaHome" |
107 | 134 | export JAVA_HOME |
108 | 135 | fi |
... | ... | @@ -118,7 +145,7 @@ if [ -z "$JAVACMD" ] ; then |
118 | 145 | JAVACMD="$JAVA_HOME/bin/java" |
119 | 146 | fi |
120 | 147 | else |
121 | - JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" | |
148 | + JAVACMD="`which java`" | |
122 | 149 | fi |
123 | 150 | fi |
124 | 151 | |
... | ... | @@ -132,9 +159,12 @@ if [ -z "$JAVA_HOME" ] ; then |
132 | 159 | echo "Warning: JAVA_HOME environment variable is not set." |
133 | 160 | fi |
134 | 161 | |
162 | +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher | |
163 | + | |
135 | 164 | # traverses directory structure from process work directory to filesystem root |
136 | 165 | # first directory with .mvn subdirectory is considered project base directory |
137 | 166 | find_maven_basedir() { |
167 | + | |
138 | 168 | if [ -z "$1" ] |
139 | 169 | then |
140 | 170 | echo "Path not specified to find_maven_basedir" |
... | ... | @@ -150,99 +180,96 @@ find_maven_basedir() { |
150 | 180 | fi |
151 | 181 | # workaround for JBEAP-8937 (on Solaris 10/Sparc) |
152 | 182 | if [ -d "${wdir}" ]; then |
153 | - wdir=$(cd "$wdir/.." || exit 1; pwd) | |
183 | + wdir=`cd "$wdir/.."; pwd` | |
154 | 184 | fi |
155 | 185 | # end of workaround |
156 | 186 | done |
157 | - printf '%s' "$(cd "$basedir" || exit 1; pwd)" | |
187 | + echo "${basedir}" | |
158 | 188 | } |
159 | 189 | |
160 | 190 | # concatenates all lines of a file |
161 | 191 | concat_lines() { |
162 | 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 | 194 | fi |
176 | 195 | } |
177 | 196 | |
178 | -BASE_DIR=$(find_maven_basedir "$(dirname "$0")") | |
197 | +BASE_DIR=`find_maven_basedir "$(pwd)"` | |
179 | 198 | if [ -z "$BASE_DIR" ]; then |
180 | 199 | exit 1; |
181 | 200 | fi |
182 | 201 | |
183 | -MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR | |
184 | -log "$MAVEN_PROJECTBASEDIR" | |
185 | - | |
186 | 202 | ########################################################################################## |
187 | 203 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central |
188 | 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 | 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 | 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 | 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 | 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 | 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 | 227 | if $cygwin; then |
210 | - wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") | |
228 | + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` | |
211 | 229 | fi |
212 | 230 | |
213 | 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 | 235 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then |
217 | - wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" | |
236 | + wget "$jarUrl" -O "$wrapperJarPath" | |
218 | 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 | 239 | fi |
221 | 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 | 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 | 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 | 248 | fi |
249 | + | |
229 | 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 | 255 | # For Cygwin, switch paths to Windows format before running javac |
234 | 256 | if $cygwin; then |
235 | - javaSource=$(cygpath --path --windows "$javaSource") | |
236 | - javaClass=$(cygpath --path --windows "$javaClass") | |
257 | + javaClass=`cygpath --path --windows "$javaClass"` | |
237 | 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 | 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 | 273 | fi |
247 | 274 | fi |
248 | 275 | fi |
... | ... | @@ -251,58 +278,33 @@ fi |
251 | 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 | 284 | fi |
282 | - | |
283 | 285 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" |
284 | 286 | |
285 | 287 | # For Cygwin, switch paths to Windows format before running java |
286 | 288 | if $cygwin; then |
289 | + [ -n "$M2_HOME" ] && | |
290 | + M2_HOME=`cygpath --path --windows "$M2_HOME"` | |
287 | 291 | [ -n "$JAVA_HOME" ] && |
288 | - JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") | |
292 | + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` | |
289 | 293 | [ -n "$CLASSPATH" ] && |
290 | - CLASSPATH=$(cygpath --path --windows "$CLASSPATH") | |
294 | + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` | |
291 | 295 | [ -n "$MAVEN_PROJECTBASEDIR" ] && |
292 | - MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") | |
296 | + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` | |
293 | 297 | fi |
294 | 298 | |
295 | 299 | # Provide a "standardized" way to retrieve the CLI args that will |
296 | 300 | # work with both Windows and non-Windows executions. |
297 | -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" | |
301 | +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" | |
298 | 302 | export MAVEN_CMD_LINE_ARGS |
299 | 303 | |
300 | 304 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain |
301 | 305 | |
302 | -# shellcheck disable=SC2086 # safe args | |
303 | 306 | exec "$JAVACMD" \ |
304 | 307 | $MAVEN_OPTS \ |
305 | - $MAVEN_DEBUG_OPTS \ | |
306 | 308 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ |
307 | - "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ | |
309 | + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ | |
308 | 310 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" | ... | ... |
src/main/java/com/batch/config/MatchingExtraProcessorAuto.java
... | ... | @@ -42,12 +42,14 @@ public class MatchingExtraProcessorAuto { |
42 | 42 | String sAccnutYm = (String) paramRec.get("accnut_ym"); |
43 | 43 | String sCprCode = (String) paramRec.get("cpr_code"); |
44 | 44 | String sPartCpr = (String) paramRec.get("partn_cpr"); |
45 | + String sDelngCrncy = (String) paramRec.get("delng_crncy"); | |
45 | 46 | String sConds = (String) paramRec.get("conds"); |
46 | 47 | |
47 | 48 | //작업시작 |
48 | 49 | Map<String, Object> mParam = new HashMap<String, Object>(); |
49 | 50 | mParam.put("sysSe", sSysSe); |
50 | 51 | mParam.put("accnutYm", sAccnutYm); |
52 | + mParam.put("delngCurncy", sDelngCrncy); | |
51 | 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 | 8 | import java.util.UUID; |
9 | 9 | |
10 | 10 | import org.springframework.beans.factory.annotation.Autowired; |
11 | +import org.springframework.beans.factory.annotation.Value; | |
11 | 12 | import org.springframework.web.bind.annotation.GetMapping; |
12 | 13 | import org.springframework.web.bind.annotation.PathVariable; |
13 | 14 | import org.springframework.web.bind.annotation.PostMapping; |
... | ... | @@ -20,6 +21,7 @@ import com.batch.config.MatchingSetup.Matching; |
20 | 21 | import com.batch.mapper.primary.MatchingInnerDelingMapper; |
21 | 22 | import com.batch.service.JobService; |
22 | 23 | import com.batch.util.FileUtil; |
24 | +import com.batch.util.JsonUtil; | |
23 | 25 | import com.google.gson.JsonObject; |
24 | 26 | |
25 | 27 | import lombok.extern.slf4j.Slf4j; |
... | ... | @@ -33,6 +35,12 @@ public class JobController { |
33 | 35 | private JobService jobService; |
34 | 36 | @Autowired |
35 | 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 | 75 | UUID uuid = UUID.randomUUID(); |
68 | 76 | String sJobGroup = uuid.toString(); |
69 | 77 | |
70 | - log.debug("Start Create Job"); | |
78 | + log.info("Start Create Job"); | |
71 | 79 | jobService.createData(sJobGroup, params); |
72 | - log.debug("End Create Job"); | |
80 | + log.info("End Create Job"); | |
73 | 81 | |
74 | 82 | Map<String, String> rtnMap = new HashMap<String, String>(); |
75 | 83 | rtnMap.put("jobGroupId", sJobGroup); |
... | ... | @@ -94,9 +102,9 @@ public class JobController { |
94 | 102 | UUID uuid = UUID.randomUUID(); |
95 | 103 | String sJobGroup = uuid.toString(); |
96 | 104 | |
97 | - log.debug("Start Matching Job"); | |
105 | + log.info("Start Matching Job"); | |
98 | 106 | jobService.matchingJob(sJobGroup, params); |
99 | - log.debug("End Matching Job"); | |
107 | + log.info("End Matching Job"); | |
100 | 108 | |
101 | 109 | Map<String, String> rtnMap = new HashMap<String, String>(); |
102 | 110 | rtnMap.put("jobGroupId", sJobGroup); |
... | ... | @@ -122,7 +130,8 @@ public class JobController { |
122 | 130 | UUID uuid = UUID.randomUUID(); |
123 | 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 | 135 | List<Map> retData = matchingInnerDelingMapper.getCustomItemReadData(params); |
127 | 136 | |
128 | 137 | // 수익/비용 |
... | ... | @@ -140,7 +149,7 @@ public class JobController { |
140 | 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 | 154 | Map<String, String> rtnMap = new HashMap<String, String>(); |
146 | 155 | rtnMap.put("jobGroupId", sJobGroup); |
... | ... | @@ -166,7 +175,7 @@ public class JobController { |
166 | 175 | UUID uuid = UUID.randomUUID(); |
167 | 176 | String sJobGroup = uuid.toString(); |
168 | 177 | |
169 | - log.debug("Start AI Sub Matching Job"); | |
178 | + log.info("Start AI Sub Matching Job"); | |
170 | 179 | List<Map> retData = matchingInnerDelingMapper.getAiSubReadData(params); |
171 | 180 | |
172 | 181 | //AI의 경우 수익비용만 매칭하고 있음 |
... | ... | @@ -178,7 +187,7 @@ public class JobController { |
178 | 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 | 192 | Map<String, String> rtnMap = new HashMap<String, String>(); |
184 | 193 | rtnMap.put("jobGroupId", sJobGroup); |
... | ... | @@ -200,19 +209,49 @@ public class JobController { |
200 | 209 | * "error_range": "0" |
201 | 210 | * } |
202 | 211 | */ |
203 | - //Job Create Log | |
212 | + //Job Create LogmatchingInnerDelingMapper | |
204 | 213 | UUID uuid = UUID.randomUUID(); |
205 | 214 | String sJobGroup = uuid.toString(); |
206 | 215 | |
207 | - log.debug("Start AI Matching Job"); | |
216 | + log.info("Start AI Matching Job"); | |
208 | 217 | List<Map> retData = matchingInnerDelingMapper.getAiReadData(params); |
218 | + BigDecimal bdCurrentRowCount = BigDecimal.ZERO; | |
209 | 219 | for(Map curMap : retData) { |
210 | 220 | Map<String, Object> curMParams = new HashMap<String, Object>(); |
211 | 221 | curMParams.putAll(curMap); |
212 | 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 | 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 | 256 | Map<String, String> rtnMap = new HashMap<String, String>(); |
218 | 257 | rtnMap.put("jobGroupId", sJobGroup); |
... | ... | @@ -233,9 +272,9 @@ public class JobController { |
233 | 272 | UUID uuid = UUID.randomUUID(); |
234 | 273 | String sJobGroup = uuid.toString(); |
235 | 274 | |
236 | - log.debug("Start Return Job"); | |
275 | + log.info("Start Return Job"); | |
237 | 276 | jobService.returnRwsultData(sJobGroup, params); |
238 | - log.debug("End Return Job"); | |
277 | + log.info("End Return Job"); | |
239 | 278 | |
240 | 279 | Map<String, String> rtnMap = new HashMap<String, String>(); |
241 | 280 | rtnMap.put("jobGroupId", sJobGroup); |
... | ... | @@ -311,6 +350,34 @@ public class JobController { |
311 | 350 | |
312 | 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 | 36 | import com.batch.mapper.primary.MatchingInnerDelingMapper; |
37 | 37 | import com.batch.mapper.secondary.OracleMapper; |
38 | 38 | import com.batch.util.FileUtil; |
39 | - | |
39 | +import com.batch.util.StringUtil; | |
40 | 40 | import com.batch.service.JobService; |
41 | 41 | import lombok.extern.slf4j.Slf4j; |
42 | 42 | |
... | ... | @@ -49,6 +49,9 @@ public class JobService { |
49 | 49 | |
50 | 50 | @Value("${python.ai.target}") |
51 | 51 | String sPythonAiTarget; |
52 | + | |
53 | + @Value("${matching.auto.exceptListByComma}") | |
54 | + String sExceptMatchType; | |
52 | 55 | |
53 | 56 | @Autowired |
54 | 57 | private JobLauncher jobLauncher; |
... | ... | @@ -102,8 +105,18 @@ public class JobService { |
102 | 105 | } |
103 | 106 | } |
104 | 107 | |
105 | - | |
106 | 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 | 120 | log.info("[" + sThreadName + "]Current running job type: " + sJobType); |
108 | 121 | JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params); |
109 | 122 | if (!jobExe.getStatus().equals(BatchStatus.COMPLETED)) { |
... | ... | @@ -143,7 +156,7 @@ public class JobService { |
143 | 156 | String sThreadName = Thread.currentThread().getName(); |
144 | 157 | long startTime = System.currentTimeMillis(); |
145 | 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 | 161 | MatchingExtraProcessorAuto matchingExtraProcessorAuto = new MatchingExtraProcessorAuto(matchingInnerDelingMapper); |
149 | 162 | |
... | ... | @@ -468,5 +481,60 @@ public class JobService { |
468 | 481 | paramLog.put("exit_message", ""); |
469 | 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 | 18 | spring.datasource.hikari.primary.password=daeucna10! |
19 | 19 | |
20 | 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 | 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 | 52 | thread.comm.count=10 |
53 | 53 | thread.ext.count=50 |
54 | 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 | 59 | #Python 프로퍼티 설정 |
57 | 60 | pytyon.path=D:\\Programs\\devp\\python-3.12.2\\python.exe |
58 | -python.ai.target=D:\\Working\\Python\\Test1.py | |
59 | 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 | 66 | \ No newline at end of file | ... | ... |
src/main/resources/matchingSetup.json
... | ... | @@ -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 | 9 | , accnut_ym |
10 | 10 | , cpr_code |
11 | 11 | , partn_cpr |
12 | + <if test='asCurrency eq "Y".toString()'> | |
13 | + , delng_crncy | |
14 | + </if> | |
12 | 15 | FROM |
13 | 16 | ( |
14 | 17 | SELECT |
... | ... | @@ -16,6 +19,9 @@ |
16 | 19 | , accnut_ym |
17 | 20 | , cpr_code |
18 | 21 | , partn_cpr |
22 | + <if test='asCurrency eq "Y".toString()'> | |
23 | + , delng_crncy | |
24 | + </if> | |
19 | 25 | , case when count(*) > 0 then 1 else 0 end as cnt |
20 | 26 | FROM |
21 | 27 | public.batch_tbcr_inner_delng |
... | ... | @@ -35,12 +41,18 @@ |
35 | 41 | , accnut_ym |
36 | 42 | , cpr_code |
37 | 43 | , partn_cpr |
44 | + <if test='asCurrency eq "Y".toString()'> | |
45 | + , delng_crncy | |
46 | + </if> | |
38 | 47 | union all |
39 | 48 | SELECT |
40 | 49 | sys_se |
41 | 50 | , accnut_ym |
42 | 51 | , partn_cpr as cpr_code |
43 | 52 | , cpr_code as partn_cpr |
53 | + <if test='asCurrency eq "Y".toString()'> | |
54 | + , delng_crncy | |
55 | + </if> | |
44 | 56 | , case when count(*) > 0 then 1 else 0 end as cnt |
45 | 57 | FROM |
46 | 58 | public.batch_tbcr_inner_delng |
... | ... | @@ -60,12 +72,18 @@ |
60 | 72 | , accnut_ym |
61 | 73 | , cpr_code |
62 | 74 | , partn_cpr |
75 | + <if test='asCurrency eq "Y".toString()'> | |
76 | + , delng_crncy | |
77 | + </if> | |
63 | 78 | ) m |
64 | 79 | GROUP BY |
65 | 80 | sys_se |
66 | 81 | , accnut_ym |
67 | 82 | , cpr_code |
68 | 83 | , partn_cpr |
84 | + <if test='asCurrency eq "Y".toString()'> | |
85 | + , delng_crncy | |
86 | + </if> | |
69 | 87 | HAVING sum(cnt) > 1 |
70 | 88 | </select> |
71 | 89 | |
... | ... | @@ -457,6 +475,7 @@ |
457 | 475 | and accnut_ym = #{accnutYm} |
458 | 476 | and cpr_code = #{cprCode} |
459 | 477 | and partn_cpr = #{partnCpr} |
478 | + and delng_crncy = #{delngCurncy} | |
460 | 479 | and mtch_ky is null |
461 | 480 | <if test='conds eq "T".toString()'> |
462 | 481 | and dta_ty in ('11','21','41') |
... | ... | @@ -485,6 +504,7 @@ |
485 | 504 | and accnut_ym = #{accnutYm} |
486 | 505 | and cpr_code = #{cprCode} |
487 | 506 | and partn_cpr = #{partnCpr} |
507 | + and delng_crncy = #{delngCurncy} | |
488 | 508 | and mtch_ky is null |
489 | 509 | <if test='conds eq "T".toString()'> |
490 | 510 | and dta_ty in ('12','22','42') |
... | ... | @@ -548,6 +568,8 @@ |
548 | 568 | , partn_cpr |
549 | 569 | , tb_ty |
550 | 570 | , delng_crncy |
571 | + , sum(cnt) as cnt | |
572 | + , max(cnt_all) as cnt_all | |
551 | 573 | FROM |
552 | 574 | ( |
553 | 575 | SELECT |
... | ... | @@ -558,6 +580,7 @@ |
558 | 580 | , delng_crncy |
559 | 581 | , case when dta_ty in ('11','21','41') then 'T' else 'B' end tb_ty |
560 | 582 | , case when count(*) > 0 then 1 else 0 end as cnt |
583 | + , count(*) as cnt_all | |
561 | 584 | FROM |
562 | 585 | public.batch_tbcr_inner_delng |
563 | 586 | WHERE |
... | ... | @@ -587,6 +610,7 @@ |
587 | 610 | , delng_crncy |
588 | 611 | , case when dta_ty in ('12','22','42') then 'T' else 'B' end as tb_ty |
589 | 612 | , case when count(*) > 0 then 1 else 0 end as cnt |
613 | + , count(*) as cnt_all | |
590 | 614 | FROM |
591 | 615 | public.batch_tbcr_inner_delng |
592 | 616 | WHERE |
... | ... | @@ -616,6 +640,7 @@ |
616 | 640 | , delng_crncy |
617 | 641 | , tb_ty |
618 | 642 | HAVING sum(cnt) > 1 |
643 | + ORDER BY cnt_all | |
619 | 644 | </select> |
620 | 645 | |
621 | 646 | <!-- User Job Status --> | ... | ... |
src/main/resources/mybatis/secondaryMapper/OracleMapper.xml
... | ... | @@ -7,10 +7,19 @@ |
7 | 7 | WITH COMP_INFO AS ( |
8 | 8 | SELECT DISTINCT |
9 | 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 | 20 | , BOOK_CURRENCY AS COMP_CURRENCY |
12 | 21 | , COMP_COA AS COMP_COA |
13 | - FROM TBBC_COMPANY_CODE | |
22 | + FROM TBBC_COMPANY_CODE A | |
14 | 23 | WHERE |
15 | 24 | #{accnutYm} BETWEEN START_YYMM AND END_YYMM |
16 | 25 | ) |
... | ... | @@ -28,7 +37,7 @@ |
28 | 37 | A.COMP_ACCT_CODE, |
29 | 38 | ( |
30 | 39 | SELECT DISTINCT |
31 | - COMP_ACCT_NAME | |
40 | + COMP_ACCT_CODE | |
32 | 41 | FROM TBBC_COMP_ACCT_CODE |
33 | 42 | WHERE |
34 | 43 | FS_TYPE = '1' |
... | ... | @@ -36,7 +45,7 @@ |
36 | 45 | AND COMP_ACCT_CODE = A.COMP_ACCT_CODE |
37 | 46 | AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM |
38 | 47 | AND ROWNUM = 1 |
39 | - ) AS COMP_ACCT_NAME, | |
48 | + ) AS COMP_ACCT_NAME, | |
40 | 49 | A.COMP_PROD_CODE, |
41 | 50 | A.RECON_KEY, |
42 | 51 | A.TRAN_DATE, |
... | ... | @@ -50,13 +59,13 @@ |
50 | 59 | A.CONS_ACCT_CODE, |
51 | 60 | ( |
52 | 61 | SELECT |
53 | - CONS_ACCT_KR_NAME | |
54 | - FROM TBBC_ACCT_CODE | |
62 | + CONS_ACCT_NAME_0 | |
63 | + FROM TBBC_ACCT_CODE_NLS | |
55 | 64 | WHERE |
56 | 65 | CONS_ACCT_CODE = A.CONS_ACCT_CODE |
57 | - AND CONS_COA = 'GOV_I_COA' | |
66 | + AND CONS_COA = 'LS_COA' | |
58 | 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 | 69 | AND ROWNUM = 1 |
61 | 70 | ) AS CONS_ACCT_NAME, |
62 | 71 | A.PROD_CODE, |
... | ... | @@ -75,8 +84,8 @@ |
75 | 84 | A.OWN_BIZ_NO, |
76 | 85 | A.PARTNER_BIZ_NO, |
77 | 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 | 89 | FROM |
81 | 90 | TBCR_TRANSACTION_HISTORY A |
82 | 91 | INNER JOIN COMP_INFO B |
... | ... | @@ -98,7 +107,10 @@ |
98 | 107 | FROM TBCR_MATCHING A, |
99 | 108 | TBCR_MATCHING_DETAIL B |
100 | 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 | 114 | AND A.ACCOUNT_PERIOD = B.ACCOUNT_PERIOD |
103 | 115 | AND A.CONS_GROUP = #{sysSe} |
104 | 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 | 33 | sumry character varying(500), |
34 | 34 | org_mtch_ty character varying(10), |
35 | 35 | org_mtch_ky numeric(10,0), |
36 | - new_mtch_ty character varying(10), | |
36 | + new_mtch_ty character varying(50), | |
37 | 37 | new_mtch_ky numeric(10,0), |
38 | 38 | compare_ky character varying(100), |
39 | 39 | mtch_sys character varying(10), |
40 | - mtch_ty character varying(10), | |
40 | + mtch_ty character varying(50), | |
41 | 41 | mtch_ty_nm character varying(100), |
42 | 42 | mtch_ky bigint DEFAULT 0, |
43 | 43 | creation_div_code character varying(3), | ... | ... |