sk_fems_comm commit

This commit is contained in:
unknown
2025-07-12 15:08:44 +09:00
commit f0b740436a
95 changed files with 10238 additions and 0 deletions

44
.gitignore vendored Normal file
View File

@ -0,0 +1,44 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
/target/
/bin/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### submodule ###
.gitmodules
/fems_framworks_core/
### Mac File ###
./DS_Store
*.log

39
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,39 @@
services:
- docker:19.03.7-dind
stages:
- build_jar
- build_docker_image
build:
image: maven:3.6.3-jdk-11-slim
stage: build_jar
only:
- master
script:
# maven build
- echo "=====maven build start====="
- mvn clean install
- echo "=====maven build end====="
tags:
- test
docker-build:
variables:
# do not clone again
GIT_STRATEGY: none
stage: build_docker_image
only:
- master
script:
# make docker image and push to local docker
- echo "=====make docker image and push to local docker start====="
- sudo docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- sudo docker build -t $CI_REGISTRY/root/registry/skfems/comm .
- echo "=====make docker image and push to local docker end====="
# push local image to local registry
- echo "=====push local image to local registry start====="
- sudo docker push $CI_REGISTRY/root/registry/skfems/comm
- sudo docker rmi $CI_REGISTRY/root/registry/skfems/comm
- echo "=====push local image to local registry end====="
tags:
- test

117
.mvn/wrapper/MavenWrapperDownloader.java vendored Normal file
View File

@ -0,0 +1,117 @@
/*
* Copyright 2007-present the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader {
private static final String WRAPPER_VERSION = "0.5.6";
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
* use instead of the default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH =
".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main(String args[]) {
System.out.println("- Downloader started");
File baseDirectory = new File(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL;
if(mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null;
try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
} catch (IOException e) {
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
} finally {
try {
if(mavenWrapperPropertyFileInputStream != null) {
mavenWrapperPropertyFileInputStream.close();
}
} catch (IOException e) {
// Ignore ...
}
}
}
System.out.println("- Downloading from: " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if(!outputFile.getParentFile().exists()) {
if(!outputFile.getParentFile().mkdirs()) {
System.out.println(
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
}
}
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
try {
downloadFileFromURL(url, outputFile);
System.out.println("Done");
System.exit(0);
} catch (Throwable e) {
System.out.println("- Error downloading");
e.printStackTrace();
System.exit(1);
}
}
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
String username = System.getenv("MVNW_USERNAME");
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}
URL website = new URL(urlString);
ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}

BIN
.mvn/wrapper/maven-wrapper.jar vendored Normal file

Binary file not shown.

2
.mvn/wrapper/maven-wrapper.properties vendored Normal file
View File

@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

20
Dockerfile Normal file
View File

@ -0,0 +1,20 @@
# Package stage
FROM openjdk:13-alpine
ADD target/*.jar comm.jar
# 데이터베이스 정보 (이 부분을 수정)
ENV HOST="58.232.11.31" \
PORT="1569" \
DBN="PDBFOPSK"
ENV SYS_SETTING ""
EXPOSE 8080
# 커맨드 명령어
ENTRYPOINT ["java", "-jar", "comm.jar" \
, "--spring.profiles.active=cloud" \
, "--spring.datasource.serverIp=${HOST}" \
, "--spring.datasource.port=${PORT}" \
, "--spring.datasource.databaseName=${DBN}" \
, "${SYS_SETTING}"]

20
Dockerfile.auth Normal file
View File

@ -0,0 +1,20 @@
# Package stage
FROM openjdk:13-alpine
ADD target/commAuth-*.jar commAuth.jar
# 데이터베이스 정보 (이 부분을 수정)
ENV HOST="192.168.0.151" \
PORT="3306" \
DBN="fems"
EXPOSE 8080
ENV SYS_SETTING ""
# 커맨드 명령어
ENTRYPOINT ["java", "-jar", "commAuth.jar" \
, "--spring.profiles.active=docker" \
, "--spring.datasource.serverIp=${HOST}" \
, "--spring.datasource.port=${PORT}" \
, "--spring.datasource.databaseName=${DBN}" \
, "${SYS_SETTING}"]

20
Dockerfile.base Normal file
View File

@ -0,0 +1,20 @@
# Package stage
FROM openjdk:13-alpine
ADD target/commBase-*.jar commBase.jar
# 데이터베이스 정보 (이 부분을 수정)
ENV HOST="192.168.0.151" \
PORT="3306" \
DBN="fems"
ENV SYS_SETTING ""
EXPOSE 8080
# 커맨드 명령어
ENTRYPOINT ["java", "-jar", "commBase.jar" \
, "--spring.profiles.active=docker" \
, "--spring.datasource.serverIp=${HOST}" \
, "--spring.datasource.port=${PORT}" \
, "--spring.datasource.databaseName=${DBN}" \
, "${SYS_SETTING}"]

310
mvnw vendored Normal file
View File

@ -0,0 +1,310 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if [ -n "$MVNW_REPOURL" ]; then
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
else
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
fi
while IFS="=" read key value; do
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if $cygwin; then
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
fi
if command -v wget > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
wget "$jarUrl" -O "$wrapperJarPath"
else
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
fi
elif command -v curl > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
curl -o "$wrapperJarPath" "$jarUrl" -f
else
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
javaClass=`cygpath --path --windows "$javaClass"`
fi
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

182
mvnw.cmd vendored Normal file
View File

@ -0,0 +1,182 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

256
pom.xml Normal file
View File

@ -0,0 +1,256 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.lsitc.fems</groupId>
<artifactId>comm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>comm</name>
<description>comm</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/nz.net.ultraq.thymeleaf/thymeleaf-layout-dialect -->
<!-- <dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>2.5.2</version>
</dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.thymeleaf.extras</groupId> -->
<!-- <artifactId>thymeleaf-extras-springsecurity5</artifactId> -->
<!-- </dependency> -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<!-- <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-jackson -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<!-- DB Logback -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
<!-- <dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.25</version>
</dependency> -->
<!-- ############ -->
<!-- ############ -->
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<!-- <dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<!-- <dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency> -->
<!-- ############ -->
<!-- ############ -->
<!-- <dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
</dependency> -->
<!-- core라이브러리 -->
<dependency>
<groupId>com.lsitc</groupId>
<artifactId>core_dp</artifactId>
<version>0.0.1.4-SNAPSHOT</version>
</dependency>
<!-- 메트릭을 Endpoint로 노출 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micrometer core dependecy -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
</dependency>
<!-- Micrometer Prometheus registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.2</version>
</dependency>
<!-- Redis -->
<!--Config 암호화용.. -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- Oracle -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>gitlab-maven</id>
<url>http://gitlab.kfems.kr:8088/api/v4/projects/14/packages/maven</url>
</repository>
</repositories>
</project>

271
pom_auth.xml Normal file
View File

@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.lsitc.fems</groupId>
<artifactId>commAuth</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>commAuth</name>
<description>commAuth</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/nz.net.ultraq.thymeleaf/thymeleaf-layout-dialect -->
<!-- <dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>2.5.2</version>
</dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.thymeleaf.extras</groupId> -->
<!-- <artifactId>thymeleaf-extras-springsecurity5</artifactId> -->
<!-- </dependency> -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<!-- <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-jackson -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<!-- DB Logback -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
<!-- <dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.25</version>
</dependency> -->
<!-- ############ -->
<!-- ############ -->
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<!-- <dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<!-- <dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency> -->
<!-- ############ -->
<!-- ############ -->
<!-- <dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
</dependency> -->
<!-- core라이브러리 -->
<dependency>
<groupId>com.lsitc</groupId>
<artifactId>core_dp</artifactId>
<version>0.0.1.4-SNAPSHOT</version>
</dependency>
<!-- 메트릭을 Endpoint로 노출 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micrometer core dependecy -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
</dependency>
<!-- Micrometer Prometheus registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.2</version>
</dependency>
<!-- Redis -->
<!--Config 암호화용.. -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>.</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- <excludes>
<exclude>sqlmap/comm/maria/**/*.xml</exclude>
</excludes> -->
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>src/main/java/com/lsitc/fems/comm/CommApplication.java</include>
<include>src/main/java/com/lsitc/fems/comm/auth/**/*.java</include>
<include>src/main/java/com/lsitc/fems/comm/**/service/*.java</include>
<include>src/main/java/com/lsitc/fems/comm/**/vo/*.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>gitlab-maven</id>
<url>http://gitlab.kfems.kr:8088/api/v4/projects/14/packages/maven</url>
</repository>
</repositories>
</project>

271
pom_base.xml Normal file
View File

@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.lsitc.fems</groupId>
<artifactId>commBase</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>commBase</name>
<description>commBase</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/nz.net.ultraq.thymeleaf/thymeleaf-layout-dialect -->
<!-- <dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>2.5.2</version>
</dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.thymeleaf.extras</groupId> -->
<!-- <artifactId>thymeleaf-extras-springsecurity5</artifactId> -->
<!-- </dependency> -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<!-- <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-jackson -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<!-- DB Logback -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
<!-- <dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.25</version>
</dependency> -->
<!-- ############ -->
<!-- ############ -->
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<!-- <dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<!-- <dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency> -->
<!-- ############ -->
<!-- ############ -->
<!-- <dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
</dependency> -->
<!-- core라이브러리 -->
<dependency>
<groupId>com.lsitc</groupId>
<artifactId>core_dp</artifactId>
<version>0.0.1.4-SNAPSHOT</version>
</dependency>
<!-- 메트릭을 Endpoint로 노출 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micrometer core dependecy -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
</dependency>
<!-- Micrometer Prometheus registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.2</version>
</dependency>
<!-- Redis -->
<!--Config 암호화용.. -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>.</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- <excludes>
<exclude>sqlmap/comm/maria/**/*.xml</exclude>
</excludes> -->
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>src/main/java/com/lsitc/fems/comm/CommApplication.java</include>
<include>src/main/java/com/lsitc/fems/comm/base/**/*.java</include>
<include>src/main/java/com/lsitc/fems/comm/**/service/*.java</include>
<include>src/main/java/com/lsitc/fems/comm/**/vo/*.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>gitlab-maven</id>
<url>http://gitlab.kfems.kr:8088/api/v4/projects/14/packages/maven</url>
</repository>
</repositories>
</project>

View File

@ -0,0 +1,28 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = { "com.lsitc.core", "com.lsitc.fems.comm", "system.session"})
@EnableScheduling
public class CommApplication {
public static void main(String[] args) {
SpringApplication.run(CommApplication.class, args);
}
}

View File

@ -0,0 +1,406 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.controller;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.jwt.JwtTokenUtils;
import com.lsitc.core.utils.CryptoUtils;
import com.lsitc.fems.comm.auth.service.LoginInfoSvc;
import com.lsitc.fems.comm.base.service.MenuMngSvc;
import com.lsitc.fems.comm.base.service.SystemLogReadSvc;
import io.jsonwebtoken.security.InvalidKeyException;
@Controller
public class LoginInfoCtr{
@Autowired
private MenuMngSvc commMenuSvc;
@Autowired
private Environment env;
private static String COOKIE_ID = "";
private static String REDIRECT_URL = "";
@Value("${jwt.cookieId:FEMS_SESSION}")
private void setCookieId(String cookieId) {
COOKIE_ID = cookieId;
System.out.println("setCookieId" + cookieId);
};
@Value("${spring.gatewayUrl}")
private void setGatewayUrl(String gatewayUrl) {
StringBuilder sb = new StringBuilder();
sb.append("redirect:");
sb.append(gatewayUrl);
REDIRECT_URL = sb.toString();
};
@Autowired
private LoginInfoSvc loginInfoSvc;
@Autowired
private SystemLogReadSvc systemLogReadSvc;
@GetMapping("/login")
public Object login(ModelAndView mav) {
// profile 정보
ArrayList<String> activeProfileArr = new ArrayList<>(Arrays.asList(env.getActiveProfiles()));
if( activeProfileArr.indexOf("prod") >= 0 ) {
//운영일때 profile 넣어준다.
mav.addObject("profile", "prod");
}
mav.setViewName("login");
return mav;
// return "login";
}
@GetMapping("/sso")
public String sso(HttpServletRequest request, RedirectAttributes redirect) {
String userId = request.getHeader("SM_USER");
//System.out.println("SSO로 들어오고" );
//System.out.println(userId);
if(StringUtils.isNotBlank(userId)) {
HttpSession session = request.getSession();
session.setAttribute("comId", "COM01");
session.setAttribute("userId", userId);//userId
session.setAttribute("flag", "AD");
return REDIRECT_URL + "/login";
} else {
return REDIRECT_URL + "/login";
}
}
@PostMapping("/login")
//public Object loginCheck(@RequestBody Map<String, String> inputUserInfo, Response response) {
public Object loginCheck(@RequestParam(defaultValue = "ko") String locale,
@RequestParam String comId, @RequestParam String userId,
@RequestParam(required = false) String userPswd,
HttpServletResponse response,
ModelAndView mav,
RedirectAttributes ra,
HttpSession session) throws InvalidKeyException, UnsupportedEncodingException {
Map<String, String> inputUserInfo = new HashMap<String, String>();
comId = session.getAttribute("comId") != null ? (String) session.getAttribute("comId") : comId;
userId = session.getAttribute("userId") != null ? (String) session.getAttribute("userId") : userId;
String flag = session.getAttribute("flag") != null ? (String) session.getAttribute("flag") : "";
inputUserInfo.put("locale", locale);
inputUserInfo.put("comId", comId);
inputUserInfo.put("userId", userId);
inputUserInfo.put("userPswd", userPswd);
//clear
session.setAttribute("comId", null);
session.setAttribute("userId", null);
session.setAttribute("flag", null);
//사용자 조회
Map<String, Object> loginInfo = loginInfoSvc.loginCheck(inputUserInfo);
// profile 정보
ArrayList<String> activeProfileArr = new ArrayList<>(Arrays.asList(env.getActiveProfiles()));
//운영이 아닐때 SSO 미적용
if ( loginInfo == null ) {
//로그인 실패
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
mav.addObject("resultCode", "N");
mav.addObject("resultDesc", "로그인에 실패하였습니다.");
mav.setViewName("login");
return mav;
}
String userPswdChk= loginInfo.get("userPswd").toString();
String userPswdCrypted= CryptoUtils.getSHA512(inputUserInfo.get("userPswd").toString());
if ( loginInfo.get("userPswd").equals(userPswdCrypted) ){
//비밀번호 삭제!
loginInfo.remove("userPswd");
//로그인 성공
String token = JwtTokenUtils.createToken(loginInfo);
//토큰을 쿠키에 셋팅
JwtTokenUtils.setTokenOnResponse(token, response);
//로그인 이력 저장
systemLogReadSvc.saveLoginLog(loginInfo);
return REDIRECT_URL;
} else {
//로그인 실패
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
mav.addObject("resultDesc", "로그인에 실패하였습니다.");
mav.setViewName("login");
return mav;
}
}
@PostMapping("/loginProc")
//public Object loginCheck(@RequestBody Map<String, String> inputUserInfo, Response response) {
public Object loginProc(@RequestParam(defaultValue = "ko") String locale,
@RequestParam String comId, @RequestParam String userId,
@RequestParam(required = false) String userPswd,
HttpServletResponse response,
ModelAndView mav,
RedirectAttributes ra,
HttpSession session) throws InvalidKeyException, UnsupportedEncodingException {
Map<String, String> inputUserInfo = new HashMap<String, String>();
comId = session.getAttribute("comId") != null ? (String) session.getAttribute("comId") : comId;
userId = session.getAttribute("userId") != null ? (String) session.getAttribute("userId") : userId;
String flag = session.getAttribute("flag") != null ? (String) session.getAttribute("flag") : "";
inputUserInfo.put("locale", locale);
inputUserInfo.put("comId", comId);
inputUserInfo.put("userId", userId);
inputUserInfo.put("userPswd", userPswd);
//clear
session.setAttribute("comId", null);
session.setAttribute("userId", null);
session.setAttribute("flag", null);
//사용자 조회
Map<String, Object> loginInfo = loginInfoSvc.loginCheck(inputUserInfo);
// profile 정보
ArrayList<String> activeProfileArr = new ArrayList<>(Arrays.asList(env.getActiveProfiles()));
//운영이 아닐때 SSO 미적용
if ( loginInfo == null ) {
//로그인 실패
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
mav.addObject("resultCode", "N");
mav.addObject("resultDesc", "로그인에 실패하였습니다.");
mav.setViewName("login");
// return mav;
return REDIRECT_URL + "/login";
}
String userPswdChk= loginInfo.get("userPswd").toString();
String userPswdCrypted= CryptoUtils.getSHA512(inputUserInfo.get("userPswd").toString());
if ( loginInfo.get("userPswd").equals(userPswdCrypted) ){
//비밀번호 삭제!
loginInfo.remove("userPswd");
//로그인 성공
String token = JwtTokenUtils.createToken(loginInfo);
//토큰을 쿠키에 셋팅
JwtTokenUtils.setTokenOnResponse(token, response);
//로그인 이력 저장
systemLogReadSvc.saveLoginLog(loginInfo);
return REDIRECT_URL;
} else {
//로그인 실패
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
mav.addObject("resultDesc", "로그인에 실패하였습니다.");
mav.setViewName("login");
return REDIRECT_URL + "/login";
}
}
@RequestMapping("/loginChk")
@ResponseBody
public Object loginChk (HttpServletRequest request, HttpServletResponse response, @RequestBody BaseParam paramMap, HttpSession session) throws InvalidKeyException, UnsupportedEncodingException {
BaseResponse result = new BaseResponse();
HashMap<String, Object> loingInfo = paramMap.getParams();
Map<String, String> inputUserInfo = new HashMap<String, String>();
inputUserInfo.put("locale", loingInfo.get("local") == null ? "ko" : loingInfo.get("local").toString());
inputUserInfo.put("comId", loingInfo.get("comId").toString());
inputUserInfo.put("userId", loingInfo.get("userId").toString());
inputUserInfo.put("userPswd", loingInfo.get("userPswd").toString());
//clear
session.setAttribute("comId", null);
session.setAttribute("userId", null);
session.setAttribute("flag", null);
//사용자 조회
Map<String, Object> loginInfo = loginInfoSvc.loginCheck(inputUserInfo);
if ( loginInfo == null ) {
//로그인 실패
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
result.setRetnCd(-9001);
result.setRetnMsg("로그인에 실패하였습니다.");
return result;
}
String userPswdCrypted= CryptoUtils.getSHA512(inputUserInfo.get("userPswd").toString());
if ( loginInfo.get("userPswd").equals(userPswdCrypted) ){
//비밀번호 삭제!
loginInfo.remove("userPswd");
//로그인 성공
String token = JwtTokenUtils.createToken(loginInfo);
//토큰을 쿠키에 셋팅
JwtTokenUtils.setTokenOnResponse(token, response);
//로그인 이력 저장
systemLogReadSvc.saveLoginLog(loginInfo);
result.add(COOKIE_ID, token);
result.add("userInfo", loginInfo);
return result;
} else {
//로그인 실패
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
result.setRetnCd(-9001);
result.setRetnMsg("로그인에 실패하였습니다.");
return result;
}
}
@RequestMapping("/isValidToken")
@ResponseBody
public Object isValidToken (HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, String> param) throws InvalidKeyException, UnsupportedEncodingException {
BaseResponse ret = new BaseResponse();
//Cookies에서 JWT token을 받아온다.
String token = JwtTokenUtils.resolveToken(request);
if( "".equals(token) ) {
//로그인 안되었고
//FIXME 다국어 처리
// throw new BisiExcp("로그인하지 않았습니다.");
// return response.setStatus(HttpStatus.UNAUTHORIZED.value());
return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
} else {
// 토큰이 유효하면 토큰으로부터 유저 정보를 받아옵니다.(유효하지 않은 경우 Excetion발생..)
String newToken;
try {
newToken = JwtTokenUtils.createToken(JwtTokenUtils.getClaims(token));
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
}
if("/".equals(param.get("requestURI")) || loginInfoSvc.selectMenuAuth(param)) {
//최초 페이지거나 유효한 권한이면..
// 토큰이 유효하면 새로운 토큰을 발급합니다.
JwtTokenUtils.setTokenOnResponse(newToken, response);
} else {
//유효하지 않으면..
return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
}
return ret;
}
}
@RequestMapping("/logout")
public Object logout (HttpServletRequest request, HttpServletResponse response) throws IOException {
//쿠키 삭제..
Cookie cookie = new Cookie(COOKIE_ID, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
return REDIRECT_URL + "/login";
}
@PostMapping("/saveChangePasswordBGR")
@ResponseBody
public Object loginCheck(@RequestBody Map<String, Object> paramMap) {
BaseResponse ret = new BaseResponse();
Map<String ,Object> resultMap = new HashMap<String, Object>();
try {
ret.add("resultCode", resultMap.get("resultCode"));
ret.add("resultDesc", resultMap.get("resultDesc"));
} catch (NoClassDefFoundError e) {
e.printStackTrace();
ret.add("resultCode", "N");
ret.add("resultDesc", "처리도중 에러가 발생했습니다");
System.out.println("NoClassDefFoundError ERROR CATCHED");
}
return ret;
}
@RequestMapping("/menuLogCont")
@ResponseBody
public Object menuLogCont(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, String> param) throws InvalidKeyException, UnsupportedEncodingException {
BaseResponse ret = new BaseResponse();
//Cookies에서 JWT token을 받아온다.
String token = JwtTokenUtils.resolveToken(request);
if( "".equals(token) ) {
//로그인 안되었고
//FIXME 다국어 처리
// throw new BisiExcp("로그인하지 않았습니다.");
// return response.setStatus(HttpStatus.UNAUTHORIZED.value());
return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
} else {
// 토큰이 유효하면 토큰으로부터 유저 정보를 받아옵니다.(유효하지 않은 경우 Excetion발생..)
String newToken;
try {
newToken = JwtTokenUtils.createToken(JwtTokenUtils.getClaims(token));
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
}
if("/".equals(param.get("requestURI")) || loginInfoSvc.selectMenuAuth(param)) {
//최초 페이지거나 유효한 권한이면..
// 토큰이 유효하면 새로운 토큰을 발급합니다.
JwtTokenUtils.setTokenOnResponse(newToken, response);
systemLogReadSvc.saveMenuCnctLog(param.get("menuId").toString());
} else {
//유효하지 않으면..
return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
}
return ret;
}
}
}

View File

@ -0,0 +1,70 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.lsitc.core.jwt.JwtTokenUtils;
import com.lsitc.core.utils.CommonUtils;
import com.lsitc.fems.comm.base.service.MenuMngSvc;
import com.lsitc.fems.comm.auth.vo.CommMenuVo;
import com.lsitc.fems.comm.base.service.SystemLogReadSvc;
@Controller
public class MainCtr {
@Autowired
private MenuMngSvc commMenuSvc;
@Autowired
private SystemLogReadSvc systemLogReadSvc;
@RequestMapping("/")
public ModelAndView index(ModelAndView mav) {
List<CommMenuVo> menuList = commMenuSvc.selectAuthMenu();
List<CommMenuVo> treeMenuList = new ArrayList<CommMenuVo>();
treeMenuList = CommonUtils.getTree(menuList, "menuId", "upMenuId");
menuList.remove(0);
mav.addObject("userNm", JwtTokenUtils.getSessionValue("userNm"));
mav.addObject("userInfo", JwtTokenUtils.getSessionMap());
mav.addObject("jwt", JwtTokenUtils.getSessionMap());
mav.addObject("menuList", menuList);
mav.addObject("treeMenuList", treeMenuList.get(0).getChildeVo());
mav.setViewName("index");
return mav;
}
@GetMapping("/{busiDiv}/{PageNm:.+[Page]$}")
public ModelAndView getPage(@PathVariable String busiDiv,
@PathVariable String PageNm,
@RequestParam(name="$menuId", defaultValue = "NONE") String menuId,
ModelAndView mav) {
mav.setViewName(busiDiv + "/" + PageNm.substring(0, PageNm.length() - 4));
systemLogReadSvc.saveMenuCnctLog(menuId); //메뉴접근로그 저장
mav.addObject("userInfo", JwtTokenUtils.getSessionMap());
mav.addObject("$menuId", menuId);
return mav;
}
}

View File

@ -0,0 +1,78 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.auth.service.MenuRoleMngSvc;
@RequestMapping("/comm/auth/MenuRoleMngCtr")
@Controller
public class MenuRoleMngCtr {
@Autowired
private MenuRoleMngSvc menuRoleMngSvc;
/**
* @methodName : selectMenuRole
* @date : 2021.04.26
* @desc : 역할별메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectMenuRole", method=RequestMethod.POST)
@ResponseBody
public Object selectMenuRole(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("menuRoleData", menuRoleMngSvc.selectMenuRole(paramMap.getParams()));
return result;
}
/**
* @methodName : selectunAsgnMenu
* @date : 2021.04.26
* @desc : 미배정별메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectUnAsgnMenu", method=RequestMethod.POST)
@ResponseBody
public Object selectUnAsgnMenu(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("menuRoleData", menuRoleMngSvc.selectUnAsgnMenu(paramMap.getParams()));
return result;
}
/**
* @methodName : saveMenuRole
* @date : 2021.04.26
* @desc : 역할별메뉴 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveMenuRole", method=RequestMethod.POST)
@ResponseBody
public Object saveMenuRole(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
menuRoleMngSvc.saveMenuRole(paramMap.getDs("dsMenuRole"));
return result;
}
}

View File

@ -0,0 +1,66 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.auth.service.RoleMngSvc;
import com.lsitc.fems.comm.auth.vo.RoleVo;
@RequestMapping("/comm/auth/RoleMngCtr")
@Controller
public class RoleMngCtr{
@Autowired
private RoleMngSvc roleMngSvc;
/**
* @methodName : selectRole
* @date : 2021.04.26
* @desc : 역할조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectRole", method=RequestMethod.POST)
@ResponseBody
public Object selectRole(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("roleData", roleMngSvc.selectRole(paramMap.getParams()));
return result;
}
/**
* @methodName : saveRole
* @date : 2021.04.26
* @desc : 역할저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveRole", method=RequestMethod.POST)
@ResponseBody
public Object saveRole(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
roleMngSvc.saveRole(paramMap.getDs("dsRole", RoleVo.class));
return result;
}
}

View File

@ -0,0 +1,179 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.auth.service.UserRoleMngSvc;
import com.lsitc.fems.comm.auth.vo.RoleUserVo;
import com.lsitc.fems.comm.auth.vo.UserInfoVo;
@RequestMapping("/comm/auth/UserRoleMngCtr")
@Controller
public class UserRoleMngCtr {
@Autowired
private UserRoleMngSvc userRoleMngSvc;
/**
* @methodName : selectRoleUser
* @date : 2021.04.26
* @desc : 역할별 사용자 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectRoleUser", method=RequestMethod.POST)
@ResponseBody
public Object selectRoleUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("roleUserData", userRoleMngSvc.selectRoleUser(paramMap.getParams()));
return result;
}
/**
* @methodName : selectUnAsgnRoleByUser
* @date : 2021.04.26
* @desc : 사용자의 미배정 역할 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectUnAsgnRoleByUser", method=RequestMethod.POST)
@ResponseBody
public Object selectUnAsgnRoleByUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("roleUserData", userRoleMngSvc.selectUnAsgnRoleByUser(paramMap.getParams()));
return result;
}
/**
* @methodName : selectAsgnRoleByUser
* @date : 2021.04.26
* @desc : 사용자의 역할 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectAsgnRoleByUser", method=RequestMethod.POST)
@ResponseBody
public Object selectAsgnRoleByUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("roleUserData", userRoleMngSvc.selectAsgnRoleByUser(paramMap.getParams()));
return result;
}
/**
*
* @methodName : selectAsgnMenuByUser
* @date : 2021.04.26
* @desc : 사용자의 메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectAsgnMenuByUser", method=RequestMethod.POST)
@ResponseBody
public Object selectAsgnMenuByUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("roleUserData", userRoleMngSvc.selectAsgnMenuByUser(paramMap.getParams()));
return result;
}
/**
* @methodName : selectUser
* @date : 2021.04.23
* @desc : 사용자를 조회한다.
* @param paramMap
* @return
*/
@RequestMapping(value="/selectUser", method=RequestMethod.POST)
@ResponseBody
public Object selectUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("userData", userRoleMngSvc.selectUser(paramMap.getParams()));
return result;
}
/**
* @methodName : saveRoleUser
* @date : 2021.04.26
* @desc : 역할별 사용자 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveRoleUser", method=RequestMethod.POST)
@ResponseBody
public Object saveRoleUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
userRoleMngSvc.saveRoleUser(paramMap.getDs("dsRoleUser", RoleUserVo.class));
return result;
}
/**
* @methodName : selectUserPop
* @date : 2021.06.09
* @desc : [팝업]사용자 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectUserPop", method=RequestMethod.POST)
@ResponseBody
public Object selectUserPop(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("userData", userRoleMngSvc.selectUserPop(paramMap.getParams()));
return result;
}
/**
* @methodName : saveUser
* @date : 2021.04.23
* @desc : 사용자를 저장한다.
* @param paramMap
* @return
*/
@RequestMapping(value="/saveUser", method=RequestMethod.POST)
@ResponseBody
public Object saveUser(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
Map<String, String> inputUserInfo = new HashMap<String, String>();
userRoleMngSvc.saveUser(paramMap.getDs("dsUser", UserInfoVo.class));
return result;
}
@RequestMapping(value="/selectComparePswd", method=RequestMethod.POST)
@ResponseBody
public Object selectComparePswd(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("roleUserData", userRoleMngSvc.selectComparePswd(paramMap.getParams()));
return result;
}
@RequestMapping(value="/updatePswd", method=RequestMethod.POST)
@ResponseBody
public Object updatePswd(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
Map<String, String> inputUserInfo = new HashMap<String, String>();
userRoleMngSvc.updatePswd(paramMap.getDs("dsUser", UserInfoVo.class));
return result;
}
}

View File

@ -0,0 +1,74 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.service;
import java.util.Map;
import java.util.regex.Pattern;
import org.springframework.stereotype.Service;
import com.lsitc.core.base.BaseSvc;
@Service
public class LoginInfoSvc extends BaseSvc {
public Map<String, Object> loginCheck(Map<String, String> inputUserInfo) {
return dao.selectOne("comm.auth.loginInfo.selectLoginInfoForLogin", inputUserInfo);
}
public boolean selectMenuAuth(Map<String, String> paramMap) {
Map<String, Object> menuAuth = dao.selectOne("comm.auth.loginInfo.selectMenuAuth", paramMap);
Pattern FIND_PATTERN = Pattern.compile("(.*)/select");
Pattern INSER_PATTERN = Pattern.compile("(.*)/insert");
Pattern UPDATE_PATTERN = Pattern.compile("(.*)/update");
Pattern DELETE_PATTERN = Pattern.compile("(.*)/delete");
Pattern SAVE_PATTERN = Pattern.compile("(.*)/save");
Pattern GET_UI_PATTERN = Pattern.compile("(.*)/.+Page$");
Pattern DOWNLOAD_PATTERN = Pattern.compile("(.*)/download");
//요청하는 URI
String requestUri = paramMap.get("requestURI");
//사용자가 가진 권한
String authCd = menuAuth != null && menuAuth.get("authCd") != null ? menuAuth.get("authCd").toString() : "";
if ( FIND_PATTERN.matcher(requestUri).find() ) {
logger.debug("select패턴");
return authCd.indexOf("R") >= 0;
} else if ( SAVE_PATTERN.matcher(requestUri).find() ) {
logger.debug("save패턴");
return authCd.indexOf("S") >= 0;
} else if ( INSER_PATTERN.matcher(requestUri).find() ){
logger.debug("inser패턴");
return authCd.indexOf("C") >= 0;
} else if ( UPDATE_PATTERN.matcher(requestUri).find() ){
logger.debug("update패턴");
return authCd.indexOf("U") >= 0;
} else if ( DELETE_PATTERN.matcher(requestUri).find() ){
logger.debug("delete패턴");
return authCd.indexOf("D") >= 0;
} else if ( GET_UI_PATTERN.matcher(requestUri).find() ){
logger.debug("UI패턴");
return authCd.indexOf("R") >= 0;
} else if ( DOWNLOAD_PATTERN.matcher(requestUri).find() ) {
logger.debug("다운로드패턴");
return authCd.indexOf("R") >= 0;
} else {
return false;
}
}
}

View File

@ -0,0 +1,88 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
@Service
public class MenuRoleMngSvc extends BaseSvc {
/**
* @methodName : selectMenuRole
* @date : 2021.04.26
* @desc : 역할별메뉴 조회
* @param param
* @return
*/
public List<?> selectMenuRole(HashMap<String, Object> param){
return dao.selectList("comm.auth.menuRoleMng.selectMenuRole", param);
}
/**
* @methodName : selectunAsgnMenu
* @date : 2021.04.26
* @desc : 미배정메뉴 조회
* @param param
* @return
*/
public List<?> selectUnAsgnMenu(HashMap<String, Object> param){
return dao.selectList("comm.auth.menuRoleMng.selectUnAsgnMenu", param);
}
/**
* @methodName : saveMenuRole
* @date : 2021.04.26
* @desc : 역할별메뉴 저장
* @param list
*/
@Transactional
public void saveMenuRole(List<Map<String, Object>> list) {
String[] authCdArr = { "R", "C", "U", "D", "S", "E" };
for(Map<String, Object> eachRow : list ) {
if(RowType.DELETE.equals(eachRow.get("rowStat"))) {
//역할별메뉴권한 먼저 삭제
dao.delete("comm.auth.menuRoleMng.deleteMenuRoleAuth", eachRow);
dao.delete("comm.auth.menuRoleMng.deleteMenuRole", eachRow);
} else if(RowType.UPDATE.equals(eachRow.get("rowStat"))) {
//Merge문 실행
dao.update("comm.auth.menuRoleMng.updateMenuRole", eachRow);
dao.update("comm.auth.menuRoleMng.updateCommMenu",eachRow);
//권한 추가
for(int i=1,len=6; i<=len; i++) {
//각 컬럼별 권한을 셋팅
String authCd = eachRow.get("authCd"+i).toString();
if("0".equals(authCd)) {
//'N'일 경우 삭제
eachRow.put("authCd", authCdArr[i-1]);
dao.delete("comm.auth.menuRoleMng.deleteMenuRoleAuth", eachRow);
} else {
//'Y'일 경우 추가
eachRow.put("authCd", authCdArr[i-1]);
dao.update("comm.auth.menuRoleMng.insertMenuRoleAuth", eachRow);
}
}
}
}
}
}

View File

@ -0,0 +1,64 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.auth.vo.RoleVo;
@Service
public class RoleMngSvc extends BaseSvc {
/**
* @methodName : selectRole
* @date : 2021.04.26
* @desc : 역할조회
* @param param
* @return
*/
public List<RoleVo> selectRole(HashMap<String, Object> param){
return dao.selectList("comm.auth.roleMng.selectRole", param);
}
/**
* @methodName : saveRole
* @date : 2021.04.26
* @desc : 역할저장
* @param roleList
*/
@Transactional
public void saveRole(List<RoleVo> roleList) {
for(RoleVo eachRow : roleList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT :
dao.insert("comm.auth.roleMng.insertRole", eachRow);
break;
case RowType.UPDATE :
dao.update("comm.auth.roleMng.updateRole", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.auth.roleMng.deleteRole", eachRow);
break;
default :
break;
}
}
}
}

View File

@ -0,0 +1,197 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.auth.vo.RoleUserVo;
import com.lsitc.fems.comm.auth.vo.UserInfoVo;
import com.lsitc.fems.comm.auth.vo.UserVo;
@Service
public class UserRoleMngSvc extends BaseSvc {
/**
* @methodName : selectRoleUser
* @date : 2021.04.26
* @desc : 역할별 사용자 조회
* @param param
* @return
*/
public List<RoleUserVo> selectRoleUser(HashMap<String, Object> param){
return dao.selectList("comm.auth.userRoleMng.selectRoleUser", param);
}
/**
* @methodName : selectUnAsgnRoleByUser
* @date : 2021.04.26
* @desc : 사용자의 미배정 역할 조회
* @param params
* @return
*/
public Object selectUnAsgnRoleByUser(HashMap<String, Object> param) {
return dao.selectList("comm.auth.userRoleMng.selectUnAsgnRoleByUser", param);
}
/**
* @methodName : selectAsgnRoleByUser
* @date : 2021.04.26
* @desc : 사용자의 역할 조회
* @param params
* @return
*/
public Object selectAsgnRoleByUser(HashMap<String, Object> param) {
return dao.selectList("comm.auth.userRoleMng.selectAsgnRoleByUser", param);
}
/**
* @methodName : selectAsgnMenuByUser
* @date : 2021.04.26
* @desc : 사용자의 메뉴 조회
* @param params
* @return
*/
public Object selectAsgnMenuByUser(HashMap<String, Object> param) {
return dao.selectList("comm.auth.userRoleMng.selectAsgnMenuByUser", param);
}
/**
* @methodName : selectUser
* @date : 2021.04.23
* @desc : 사용자를 조회한다.
* @param param
* @return
*/
public List<UserVo> selectUser(HashMap<String, Object> param){
return dao.selectList("comm.auth.userRoleMng.selectUser", param);
}
/**
* @methodName : saveRoleUser
* @date : 2021.04.26
* @desc : 역할별 사용자 저장
* @param roleUserList
*/
@Transactional
public void saveRoleUser(List<RoleUserVo> roleUserList) {
for(RoleUserVo eachRow : roleUserList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT :
dao.insert("comm.auth.userRoleMng.insertRoleUser", eachRow);
break;
case RowType.UPDATE :
dao.update("comm.auth.userRoleMng.updateRoleUser", eachRow);
break;
case RowType.DELETE :
dao.delete("comm.auth.userRoleMng.deleteRoleUser", eachRow);
break;
default :
break;
}
}
}
//향후 user로 분리가능성 있음.----------------------------------------------
public Object selectUserPop(HashMap<String, Object> params) {
return dao.selectList("comm.auth.userRoleMng.selectUserPop", params);
}
/**
* @methodName : saveUser
* @date : 2021.04.23
* @desc : 사용자를 저장한다.
* @param userList
*/
@Transactional
public void saveUser(List<UserInfoVo> userList) {
for(UserInfoVo eachRow : userList ) {
//암호화(최초로 비밀번호 입력 or 비밀번호를 변경했을 경우)
// if(eachRow.getUserPswd() != null) {
// String userPswdCrypted= CryptoUtils.getSHA512(eachRow.getUserPswd().toString());
// eachRow.setUserPswd(userPswdCrypted);
// }
switch (eachRow.getRowStat()) {
case RowType.INSERT:
//사용자 추가
dao.insert("comm.auth.userRoleMng.insertUser", eachRow);
//FIXME 로그인 정보 추가(이 기능은 풀어야할지.. 한다면 어떻게 값을 받을지?
insertLoginInfo(eachRow);
break;
case RowType.UPDATE:
//사용자 update
dao.update("comm.auth.userRoleMng.updateUser", eachRow);
//로그인 정보 업데이트
updateLoginInfo(eachRow);
break;
case RowType.DELETE:
//사용자 정보 업데이트
dao.update("comm.auth.userRoleMng.deleteUser", eachRow);
//로그인정보 삭제
deleteLoginInfo(eachRow);
break;
default :
break;
}
}
}
/**
* @methodName : insertLoginInfo
* @date : 2021.04.23
* @desc : 로그인정보 추가
* @param loginInfo
*/
public void insertLoginInfo(UserInfoVo loginInfo) {
//비밀번호 암호화(단방향)
// loginInfo.setUserPswd(CryptoUtils.getSHA512(loginInfo.getUserPswd()));
dao.insert("comm.auth.loginInfo.insertLoginInfo", loginInfo);
}
/**
* @methodName : updateLoginInfo
* @date : 2021.04.23
* @desc : 로그인정보 수정
* @param loginInfo
*/
public void updateLoginInfo(UserInfoVo loginInfo) {
dao.update("comm.auth.loginInfo.updateLoginInfo", loginInfo);
}
/**
*
* @methodName : deleteLoginInfo
* @date : 2021.04.23
* @desc : 로그인정보 삭제
* @param loginInfo
*/
public void deleteLoginInfo(UserInfoVo loginInfo) {
dao.delete("comm.auth.loginInfo.deleteLoginInfo", loginInfo);
}
public Object selectComparePswd(HashMap<String, Object> params) {
return dao.selectList("comm.auth.userRoleMng.selectComparePswd", params);
}
public void updatePswd(List<UserInfoVo> userList) {
for(UserInfoVo eachRow : userList ) {
dao.update("comm.auth.userRoleMng.updatePswd", eachRow);
}
}
}

View File

@ -0,0 +1,23 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
public class CommLoginVo {
// FIXME 향후..수정?
}

View File

@ -0,0 +1,33 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import com.lsitc.core.base.BaseVo;
import java.math.BigDecimal;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CommMenuVo extends BaseVo<CommMenuVo>{
private String upMenuId;
private String menuId;
private String menuNm;
private String url;
private String authCd;
private BigDecimal lvl;
private String prgmId;
}

View File

@ -0,0 +1,35 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LoginInfoVo extends BaseVo<LoginInfoVo> {
private String userNo; // USER_NO (사용자ID(YYYY + MM + 000001))
private String userStatCd; // USER_STAT_CD (유저상태코드??)
private String userLoginId; // USER_LOGIN_ID (사용자로그인ID)
private String userPswd; // USER_PSWD (비밀번호)
private BigDecimal pswdErrCnt; // PSWD_ERR_CNT (비밀번호 오류횟수)
private Date pswdModDttm; // PSWD_MOD_DTTM (비밀번호 변경일시)
}

View File

@ -0,0 +1,36 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class MenuRoleAuthVo extends BaseVo<MenuRoleAuthVo> {
private String comId; // COM_ID (회사코드)
private String roleId; // ROLE_ID (역할코드)
private String menuId; // MENU_ID (메뉴ID)
private String authCd; // AUTH_CD (권한코드)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,34 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class MenuRoleVo extends BaseVo<MenuRoleVo> {
private String roleId; // ROLE_ID (역할코드)
private String comId; // COM_ID (회사코드)
private String menuId; // MENU_ID (메뉴ID)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,37 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import java.util.Date;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RoleUserVo extends BaseVo<RoleUserVo> {
private String comId; // COM_ID (회사코드)
private String roleId; // ROLE_ID (역할코드)
private String roleNm; // ROLE_ID (역할코드)
private String userNo; // USER_NO (사용자NO)
private Date aplyStartDt; // APLY_START_DT (적용시작일)
private Date aplyEndDt; // APLY_END_DT (적용종료일)
private String rmrk; // RMRK (비고)
private String userNm;
private String procUserNm;
}

View File

@ -0,0 +1,36 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RoleVo extends BaseVo<RoleVo> {
private String comId; // COM_ID (회사코드)
private String roleId; // ROLE_ID (역할코드)
private String roleNm; // ROLE_NM (역할명)
private String useFg; // USE_FG (사용여부)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,45 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class UserInfoVo extends BaseVo<UserInfoVo> {
private String comId; // COM_ID (회사코드)
private String deptId; // DEPT_ID (부서코드)
private String userNo; // USER_NO (사용자NO)
private String userStatCd; // USER_STAT_CD (유저상태코드??)
private String userLoginId; // USER_LOGIN_ID (사용자로그인ID)
private String userPswd; // USER_PSWD (비밀번호)
private BigDecimal pswdErrCnt; // PSWD_ERR_CNT (비밀번호 오류횟수)
private Date pswdModDttm; // PSWD_MOD_DTTM (비밀번호 변경일시)
private String userNm; // USER_NM (사용자명)
private String email; // EMAIL (이메일)
private String moblphon; // MOBLPHON (휴대전화번호)
private String officeTelno; // OFFICE_TELNO (사무실 전화번호)
private String faxTelno; // FAX_TELNO (FAX번호)
private String postNo; // POST_NO (우편번호)
private String postAdres; // POST_ADRES (우편번호주소)
private String adresDetail; // ADRES_DETAIL (주소상세)
private String blocId;
}

View File

@ -0,0 +1,40 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.auth.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class UserVo extends BaseVo<UserVo> {
private String comId; // COM_ID (회사코드)
private String deptId; // DEPT_ID (부서코드)
private String userNo; // USER_NO (사용자NO)
private String userNm; // USER_NM (사용자명)
private String email; // EMAIL (이메일)
private String moblphon; // MOBLPHON (휴대전화번호)
private String officeTelno; // OFFICE_TELNO (사무실 전화번호)
private String faxTelno; // FAX_TELNO (FAX번호)
private String postNo; // POST_NO (우편번호)
private String postAdres; // POST_ADRES (우편번호주소)
private String adresDetail; // ADRES_DETAIL (주소상세)
private String userLoginId;
private String userPswd;
private String blocId;
}

View File

@ -0,0 +1,141 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.base.CamelHashMap;
import com.lsitc.core.utils.FileUtils;
import com.lsitc.fems.comm.base.service.ApndFileSvc;
@RequestMapping("/comm/base/ApndFileCtr")
@Controller
public class ApndFileCtr{
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private ApndFileSvc apndFileSvc;
/**
*
* @methodName : uploadFile
* @date : 2021.07.14
* @desc : 파일 업로드
* @param paramMap
* @return
*/
@RequestMapping(value="/saveFile", method=RequestMethod.POST)
@ResponseBody
public Object uploadFile(MultipartHttpServletRequest mtfRequest){
BaseResponse result = new BaseResponse();
HashMap<String, Object> params = new HashMap<String, Object>();
List<MultipartFile> fileList = mtfRequest.getFiles("file");
params.put("bordNo", mtfRequest.getParameter("bordNo"));
params.put("postNo", mtfRequest.getParameter("postNo"));
// String apndFileUuid = apndFileSvc.uploadFile(fileList, params);
HashMap<String, Object> resultMap = apndFileSvc.uploadFile(fileList, params);
if(fileList.size() > 0) {
result.add("apndFileUuid", String.valueOf(resultMap.get("apndFileUuid")) );
}
result.add("uploadStatus", String.valueOf(resultMap.get("uploadStatus")) );
return result;
}
/**
*
* @methodName : selectApndFile
* @date : 2021.07.12
* @desc : 파일 목록 반환
* @param paramMap
* @return
*/
@RequestMapping(value="/selectApndFile", method=RequestMethod.POST)
@ResponseBody
public Object selectApndFile(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("apndFile", apndFileSvc.selectApndFile(paramMap.getParams()));
return result;
}
/**
*
* @methodName : deleteApndFile
* @date : 2021.07.12
* @desc : 파일 삭제
* @param paramMap
* @return
*/
@RequestMapping(value="/deleteApndFile", method=RequestMethod.POST)
@ResponseBody
public Object deleteApndFile(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
apndFileSvc.deleteApndFile(paramMap.getParams());
return result;
}
/**
*
* @methodName : selectDownloadApndFile
* @date : 2021.07.12
* @desc : 파일 다운로드
* @param paramMap
* @return
*/
@RequestMapping(value="/selectDownloadApndFile", method=RequestMethod.GET)
public void selectDownloadApndFile(@RequestParam String apndFileId, HttpServletRequest request, HttpServletResponse response){
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("apndFileId", apndFileId);
logger.debug("apndFileId : {}", apndFileId);
List<CamelHashMap> list = apndFileSvc.selectApndFile(params);
// String apndFileId = (String) list.get(0).get("apndFileId");
String fileName = (String) list.get(0).get("apndFileNm");
String fileExt = (String) list.get(0).get("apndFileExt");
// String filePath = (String) list.get(0).get("apndFilePath") + "\\" + fileName + "." + fileExt ;
// String filePath = (String) list.get(0).get("apndFilePath") + "\\" + apndFileId + "." + fileExt;
String filePath = (String) list.get(0).get("apndFilePath") + File.separator + apndFileId + "." + fileExt;
FileUtils fileUtils = new FileUtils();
fileUtils.sendFileStream(request, response, fileName+"."+fileExt, filePath);
}
}

View File

@ -0,0 +1,58 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.base.CamelHashMap;
import com.lsitc.fems.comm.base.service.BatchLogSvc;
@RequestMapping("/comm/base/BatchLogCtr")
@Controller
public class BatchLogCtr{
@Autowired
private BatchLogSvc batchLogSvc;
/**
* @methodName : selectBatchLog
* @date : 2021.09.09
* @desc : 배치 로그 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectBatchLog", method=RequestMethod.POST)
@ResponseBody
public Object selectPrgm(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
List<CamelHashMap> batchLog = (List<CamelHashMap>) batchLogSvc.selectBatchLog(paramMap.getParams());
for(int i = 0; i < batchLog.size(); i++) {
batchLog.get(i).put("EXEC_LOG_CONT", batchLog.get(i).getOrDefault("execLogCont1", "").toString() + batchLog.get(i).getOrDefault("execLogCont2", "").toString() );
}
result.add("batchLogData", batchLog);
return result;
}
}

View File

@ -0,0 +1,84 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 K-FEMS 사업단에 있으며,
* K-FEMS 사업단가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* K-FEMS 사업단의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2020 K-FEMS 사업단. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* K-FEMS Business unit. K-FEMS Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2020 K-FEMS Business unit. All Rights Reserved| Confidential)
* Author : djnine9
* E-mail :
* Created : 2021-02-16 12:26:57
*/
package com.lsitc.fems.comm.base.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.service.BatchMngSvc;
import com.lsitc.fems.comm.base.vo.BatchMngVo;
@RequestMapping("/comm/base/BatchMngCtr")
@Controller
public class BatchMngCtr extends BaseSvc {
@Autowired
private BatchMngSvc batchMngSvc;
/**
* @methodName : selectBatchMng
* @date : 2021.09.09
* @desc : 배치 리스트 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectBatchMng", method=RequestMethod.POST)
@ResponseBody
public Object selectBatchMng(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("batchMngData", batchMngSvc.selectBatchMng(paramMap.getParams()));
return result;
}
/**
* @methodName : saveBatchMng
* @date : 2021.09.09
* @desc : 배치 상세 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveBatchMng", method=RequestMethod.POST)
@ResponseBody
public Object saveBatchMgn(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
batchMngSvc.saveBatchMng(paramMap.getDs("dsBatchMng", BatchMngVo.class));
return result;
}
/**
* @methodName : selectFllwBatchList
* @date : 2021.09.09
* @desc : 후속 배치 리스트 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectFllwBatchList", method=RequestMethod.POST)
@ResponseBody
public Object selectFllwBatchList(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("fllwBatchListData", batchMngSvc.selectFllwBatchList(paramMap.getParams()));
return result;
}
}

View File

@ -0,0 +1,345 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.CalendarMngSvc;
import com.lsitc.fems.comm.base.vo.WorkCaldVo;
@RequestMapping("/comm/base/CalendarMngCtr")
@Controller
public class CalendarMngCtr{
@Autowired
private CalendarMngSvc calendarMngSvc;
/**
* @methodName : selectWorkcald
* @date : 2021.06.07
* @desc : 근무달력 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectWorkCald", method=RequestMethod.POST)
@ResponseBody
public Object selectWorkcald(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("workcaldData", calendarMngSvc.selectWorkCald(paramMap.getParams()));
return result;
}
/**
* @methodName : saveWorkcald
* @date : 2021.06.07
* @desc : 근무달력 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveWorkCald", method=RequestMethod.POST)
@ResponseBody
public Object saveWorkcald(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
calendarMngSvc.saveWorkCald(paramMap.getDs("dsWorkcald", WorkCaldVo.class));
return result;
}
/**
* @methodName : selectMonthWeekendList
* @date : 2021.06.07
* @desc : 특정 기간 및 월에 대한 휴일 목록 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectMonthWeekendList", method=RequestMethod.POST)
@ResponseBody
public Object selectMonthWeekendList(@RequestBody(required = false) HashMap<String, Object> paramMap){
BaseResponse result = new BaseResponse();
HashMap<String, Object> param = new HashMap<String, Object>();
String dt = (String) paramMap.get("sh_date");
String startDt = (String) paramMap.get("sh_startDt");
String endDt = (String) paramMap.get("sh_endDt");
String sh_date = "";
String sh_startDt = "";
String sh_endDt = "";
List<String> hldyNmNotInList = new ArrayList<String>();
hldyNmNotInList.add("토요일");
hldyNmNotInList.add("일요일");
if(dt != null) {
sh_date = dt.replaceAll("/", "-");
dt = dt.replaceAll("-", "");
dt = dt.replaceAll("/", "");
}
if(startDt != null) {
sh_startDt = startDt.replaceAll("/", "-");
startDt = startDt.replaceAll("-", "");
startDt = startDt.replaceAll("/", "");
}
if(endDt != null) {
sh_endDt = endDt.replaceAll("/", "-");
endDt = endDt.replaceAll("-", "");
endDt = endDt.replaceAll("/", "");
}
param.put("dtLike", sh_date);
param.put("startDt", sh_startDt);
param.put("endDt", sh_endDt);
param.put("comId", paramMap.get("sh_comId"));
param.put("blocId", paramMap.get("sh_blocId"));
param.put("hldyFg", "1");
param.put("hldyNmNotInList", hldyNmNotInList);
result.add("workcaldData", calendarMngSvc.selectWorkCaldAll(param));
if(dt != null && !"".equals(dt) && dt.length() >= 6) {
String strYear = dt.substring(0, 4);
String strMonth = dt.substring(4, 6);
HashMap<String, Object> weekList = getMonthStdSunDayList(Integer.parseInt(strYear), Integer.parseInt(strMonth));
result.add("dayOfMonth", weekList.get("dayOfMonth"));
result.add("staList", weekList.get("staList"));
result.add("sunList", weekList.get("sunList"));
}
if((dt == null || "".equals(dt)) && startDt != null && !"".equals(startDt) && startDt.length() >= 8 &&
endDt != null && !"".equals(endDt) && endDt.length() >= 8) {
String strStartYear = startDt.substring(0, 4);
String strStartMonth = startDt.substring(4, 6);
String strStartDay = startDt.substring(6, 8);
String strEndYear = endDt.substring(0, 4);
String strEndMonth = endDt.substring(4, 6);
String strEndDay = endDt.substring(6, 8);
HashMap<String, Object> weekList = getMonthStdSunDayList(Integer.parseInt(strStartYear), Integer.parseInt(strStartMonth), Integer.parseInt(strStartDay)
,Integer.parseInt(strEndYear), Integer.parseInt(strEndMonth), Integer.parseInt(strEndDay));
result.add("dayOfMonth", weekList.get("dayOfMonth"));
result.add("staList", weekList.get("staList"));
result.add("sunList", weekList.get("sunList"));
}
result.add("sh_date", paramMap.get("sh_date"));
result.add("sh_searchType", paramMap.get("sh_searchType"));
return result;
}
private HashMap<String, Object> getMonthStdSunDayList(int year, int month){
HashMap<String, Object> result = new HashMap<String, Object>();
int dayOfMonth = 0;
List<String> staList = new ArrayList<String>();
List<String> sunList = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar ca = new GregorianCalendar();
ca.set(Calendar.YEAR, year);
ca.set(Calendar.MONTH, month - 1);
ca.set(Calendar.DATE, 1);
dayOfMonth = ca.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i = 1; i <= dayOfMonth; i++) {
if( ca.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ) {
sunList.add(sdf.format(ca.getTime()));
}else if(ca.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
staList.add(sdf.format(ca.getTime()));
}
ca.add(Calendar.DATE, 1);
}
result.put("dayOfMonth", dayOfMonth);
result.put("staList", staList);
result.put("sunList", sunList);
return result;
}
/**
* @methodName : getMonthStdSunDayList
* @date : 2021.06.07
* @desc : 토,일의 목록을 구한다.
* @param startYear
* @param startMonth
* @param startDay
* @param endYear
* @param endMonth
* @param endDay
* @return
*/
private HashMap<String, Object> getMonthStdSunDayList(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay){
HashMap<String, Object> result = new HashMap<String, Object>();
int dayOfMonth = 0;
List<String> staList = new ArrayList<String>();
List<String> sunList = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar ca = new GregorianCalendar();
ca.set(Calendar.YEAR, startYear);
ca.set(Calendar.MONTH, startMonth - 1);
ca.set(Calendar.DATE, startDay);
Calendar endCa = new GregorianCalendar();
endCa.set(Calendar.YEAR, endYear);
endCa.set(Calendar.MONTH, endMonth - 1);
endCa.set(Calendar.DATE, endDay);
Long diffSec = (endCa.getTimeInMillis() - ca.getTimeInMillis()) / 1000;
Long diffDays = diffSec / (24*60*60); //일자수 차이
dayOfMonth = diffDays.intValue();
for(int i = 1; i <= dayOfMonth; i++) {
if( ca.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ) {
sunList.add(sdf.format(ca.getTime()));
}else if(ca.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
staList.add(sdf.format(ca.getTime()));
}
ca.add(Calendar.DATE, 1);
}
result.put("dayOfMonth", dayOfMonth);
result.put("staList", staList);
result.put("sunList", sunList);
return result;
}
/**
* @methodName : selectWorkCaldDetl
* @date : 2022.05.11
* @desc : 근무달력 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectWorkCaldDetl", method=RequestMethod.POST)
@ResponseBody
public Object selectWorkCaldDetl(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("workcaldDetlData", calendarMngSvc.selectWorkCaldDetl(paramMap.getParams()));
return result;
}
/**
* @methodName : selectWorkCaldDetlOne
* @date : 2022.05.11
* @desc : 근무달력 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectWorkCaldDetlOne", method=RequestMethod.POST)
@ResponseBody
public Object selectWorkCaldDetlOne(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("workcaldDetlOneData", calendarMngSvc.selectWorkCaldDetlOne(paramMap.getParams()));
return result;
}
/**
* @methodName : savePlanDetl
* @date : 2021.06.07
* @desc : 근무달력 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/savePlanDetl", method=RequestMethod.POST)
@ResponseBody
public Object savePlanDetl(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
calendarMngSvc.savePlanDetl(paramMap.getDs("savePlanDetl", WorkCaldVo.class));
return result;
}
/**
* @methodName : updatePlanDetl
* @date : 2021.06.07
* @desc : 근무달력 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/updatePlanDetl", method=RequestMethod.POST)
@ResponseBody
public Object updatePlanDetl(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
calendarMngSvc.updatePlanDetl(paramMap.getDs("updatePlanDetl", WorkCaldVo.class));
return result;
}
/**
* @methodName : deletePlanDetl
* @date : 2021.06.07
* @desc : 근무달력 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/deletePlanDetl", method=RequestMethod.POST)
@ResponseBody
public Object deletePlanDetl(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
calendarMngSvc.deletePlanDetl(paramMap.getDs("deletePlanDetl", WorkCaldVo.class));
return result;
}
/**
* @methodName : selectWorkcald
* @date : 2021.06.07
* @desc : 근무달력 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectWeekWorkCald", method=RequestMethod.POST)
@ResponseBody
public Object selectWeekWorkCald(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("workcaldData", calendarMngSvc.selectWeekWorkCald(paramMap.getParams()));
return result;
}
/**
* @methodName : selectWorkcald
* @date : 2021.06.07
* @desc : 근무달력 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectWeekWorkCaldDetl", method=RequestMethod.POST)
@ResponseBody
public Object selectWeekWorkCaldDetl(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("workcaldData", calendarMngSvc.selectWeekWorkCaldDetl(paramMap.getParams()));
return result;
}
}

View File

@ -0,0 +1,70 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.ComIdSvc;
import com.lsitc.fems.comm.base.vo.ComIdVo;
@RequestMapping("/comm/base/ComIdCtr/")
@Controller
public class ComIdCtr{
@Autowired
private ComIdSvc comIdSvc;
/**
*
* @methodName : selectComId
* @date : 2021.04.23
* @desc : 회사코드 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectComId", method=RequestMethod.POST)
@ResponseBody
public Object selectComId(@RequestBody HashMap<String, Object> paramMap){
BaseResponse result = new BaseResponse();
result.add("comIdData", comIdSvc.selectComId(paramMap));
return result;
}
/**
*
* @methodName : saveComId
* @date : 2021.04.23
* @desc : 회사코드 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveComId", method=RequestMethod.POST)
@ResponseBody
public Object saveComId(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
comIdSvc.saveComId(paramMap.getDs("comIdData", ComIdVo.class));
return result;
}
}

View File

@ -0,0 +1,114 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.CommCdMngSvc;
import com.lsitc.fems.comm.base.vo.CommCdVo;
import com.lsitc.fems.comm.base.vo.CommGrpCdVo;
@RequestMapping("/comm/base/CommCdMngCtr")
@Controller
public class CommCdMngCtr {
@Autowired
private CommCdMngSvc commCdMngSvc;
/**
* @methodName : selectCommGrpCd
* @date : 2021.06.07
* @desc : 공통그룹코드 조회
* @param paramMap
* @return
*/
@RequestMapping("/selectCommGrpCd")
@ResponseBody
public Object selectCommGrpCd(@RequestBody BaseParam paramMap) {
BaseResponse result = new BaseResponse();
result.add("commGrpCdData", commCdMngSvc.selectCommGrpCd(paramMap.getParams()));
return result;
}
/**
* @methodName : saveCommGrpCd
* @date : 2021.06.07
* @desc : 공통그룹코드 저장
* @param paramMap
* @return
*/
@RequestMapping("/saveCommGrpCd")
@ResponseBody
public Object saveCommGrpCd(@RequestBody BaseParam paramMap) {
BaseResponse result = new BaseResponse();
commCdMngSvc.saveCommGrpCd(paramMap.getDs("dsGrpCd", CommGrpCdVo.class));
return result;
}
/**
* @methodName : selectCommCd
* @date : 2021.06.07
* @desc : 공통코드 조회
* @param paramMap
* @return
*/
@RequestMapping("/selectCommCd")
@ResponseBody
public Object selectCommCd(@RequestBody(required = false) BaseParam paramMap ) {
BaseResponse result = new BaseResponse();
result.add("commCdData", commCdMngSvc.selectCommCd(paramMap));
return result;
}
/**
* @methodName : saveCommCd
* @date : 2021.06.07
* @desc : 공통코드 저장
* @param paramMap
* @return
*/
@RequestMapping("/saveCommCd")
@ResponseBody
public Object saveCommCd(@RequestBody BaseParam paramMap) {
BaseResponse result = new BaseResponse();
commCdMngSvc.saveCommCd(paramMap.getDs("dsCommCd", CommCdVo.class));
return result;
}
/**
* @methodName : selectCodeList
* @date : 2021.06.08
* @desc : 화면용 공통코드 조회
* @param paramMap
* @return
* @throws JsonProcessingException
*/
@RequestMapping("/selectCodeList")
@ResponseBody
public Object selectCodeList(@RequestBody(required = false) BaseParam paramMap) throws JsonProcessingException {
BaseResponse result = new BaseResponse();
List<CommCdVo> codeResult = commCdMngSvc.selectCommCd(paramMap);
result.add("codeLists", codeResult);
return result;
}
}

View File

@ -0,0 +1,55 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.CommSvc;
import com.lsitc.fems.comm.base.vo.BlocMstrVo;
@RequestMapping("/comm/base/CommCtr")
@Controller
public class CommCtr {
@Autowired
private CommSvc commSvc;
/**
* @methodName : selectBlocMstrCodeList
* @date : 2021.06.08
* @desc : 사업장 코드 정보 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectBlocMstrCodeList", method=RequestMethod.POST)
@ResponseBody
public Object selectBlocMstrCodeList(@RequestBody BaseParam paramMap) {
BaseResponse result = new BaseResponse();
List<BlocMstrVo> codeResult = commSvc.selectBlocMstr(paramMap.getParams());
result.add("blocCodeLists", codeResult);
return result;
}
}

View File

@ -0,0 +1,102 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.share.service.FileSvc;
@Controller
public class FileCtr {
@Autowired
FileSvc fileSvc;
//업로드 파일 조회
@RequestMapping("/comm/base/selectUploadFile")
@ResponseBody
public Object selectUploadFile() {//@RequestBody(required = false) Map<String, String> paramMap
BaseResponse result = new BaseResponse();
Map<String, String> paramMap = new HashMap<String, String>();
result.add("uploadFileList", fileSvc.selectUploadFile(paramMap));
return result;
}
//파일업로드(임시)
@RequestMapping("/comm/base/saveUploadFileToTemp")
@ResponseBody
public Object saveUploadFileToTemp(@RequestParam("upload_file") MultipartFile uploadfile,
@RequestParam(name = "apndFileUuid", required = false, defaultValue = "new")String apndFileUuid,
//FIXME menuID는 어떻게 할지..
@RequestParam(name = "menuId", required = false, defaultValue = "test")String menuId,
@RequestParam(name = "sortSeq", required = false, defaultValue = "1")String sortSeq) throws Exception {
BaseResponse result = new BaseResponse();
result.add("fileVo", fileSvc.saveUploadFileToTemp(apndFileUuid, menuId, sortSeq, uploadfile));
return result;
}
//파일업로드(기존에 존재하는것)
@RequestMapping("/comm/base/saveUploadFile")
@ResponseBody
public Object saveUploadFile(@RequestParam("upload_file") MultipartFile uploadfile,
@RequestParam(name = "apndFileUuid")String apndFileUuid,
//FIXME menuID는 어떻게 할지..
@RequestParam(name = "menuId", required = false, defaultValue = "test")String menuId,
@RequestParam(name = "sortSeq", required = false, defaultValue = "1")String sortSeq) throws Exception {
BaseResponse result = new BaseResponse();
result.add("fileVo", fileSvc.saveUploadFile(apndFileUuid, menuId, sortSeq, uploadfile));
return result;
}
//파일삭제
@RequestMapping("/comm/base/deleteUploadFile")
@ResponseBody
public Object deleteUploadFile(@RequestParam(name = "apndFileUuid")String apndFileUuid,
@RequestParam(name = "apndFileId", required = false)String apndFileId) throws Exception {
BaseResponse result = new BaseResponse();
fileSvc.deleteUploadFile(apndFileUuid, apndFileId);
return result;
}
//파일다운로드
@RequestMapping("/comm/base/downloadFile")
public void downloadFile(HttpServletRequest request, HttpServletResponse response,@RequestParam(name = "apndFileUuid", required = false) String apndFileUuid,
@RequestParam(name = "apndFileId", required = false) String apndFileId) throws Exception {
fileSvc.downloadFile(request, response, apndFileUuid, apndFileId);
}
//파일다운로드(zip)
@RequestMapping("/comm/base/downloadFiles")
public void downloadFiles(HttpServletRequest request, HttpServletResponse response,@RequestParam(name = "apndFileUuid", required = false) String apndFileUuid,
@RequestParam(name = "fileNm", required = false) String fileNm) throws Exception {
fileSvc.downloadFiles(request, response, apndFileUuid, fileNm);
}
}

View File

@ -0,0 +1,154 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.utils.CommonUtils;
import com.lsitc.fems.comm.auth.vo.CommMenuVo;
import com.lsitc.fems.comm.base.service.MenuMngSvc;
import com.lsitc.fems.comm.base.vo.MenuVo;
@RequestMapping("/comm/base/MenuMngCtr")
@Controller
public class MenuMngCtr{
@Autowired
private MenuMngSvc menuMngSvc;
/**
* @methodName : selectMenu
* @date : 2021.06.07
* @desc : 메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectMenu", method=RequestMethod.POST)
@ResponseBody
public Object selectMenu(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("menuData", menuMngSvc.selectMenu(paramMap.getParams()));
return result;
}
/**
* @methodName : saveMenu
* @date : 2021.06.07
* @desc : 메뉴 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveMenu", method=RequestMethod.POST)
@ResponseBody
public Object saveMenu(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
menuMngSvc.saveMenu(paramMap.getDs("dsMenu", MenuVo.class));
return result;
}
/**
* @methodName : selectMenuPop
* @date : 2021.06.07
* @desc : (팝업)메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectMenuPop", method=RequestMethod.POST)
@ResponseBody
public Object selectMenuPop(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("menuData", menuMngSvc.selectMenuPop(paramMap.getParams()));
return result;
}
/**
* @methodName : selectAuthMenu
* @date : 2021.06.07
* @desc : (팝업)메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectAuthMenu", method=RequestMethod.POST)
@ResponseBody
public Object selectAuthMenu(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
List<CommMenuVo> menuList = menuMngSvc.selectAuthMenu();
List<CommMenuVo> treeMenuList = new ArrayList<CommMenuVo>();
treeMenuList = CommonUtils.getTree(menuList, "menuId", "upMenuId");
menuList.remove(0);
result.add("menuList", menuList);
result.add("treeMenuList", treeMenuList.get(0).getChildeVo());
return result;
}
/**
* @methodName : saveBookmark
* @date : 2021.06.07
* @desc : 메뉴 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveBookmark", method=RequestMethod.POST)
@ResponseBody
public Object saveBookmark(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
menuMngSvc.saveBookmark(paramMap.getDs("bookmarkDt", MenuVo.class));
return result;
}
/**
* @methodName : deleteBookmark
* @date : 2021.06.07
* @desc : 메뉴 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/deleteBookmark", method=RequestMethod.POST)
@ResponseBody
public Object deleteBookmark(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
menuMngSvc.deleteBookmark(paramMap.getDs("bookmarkDt", MenuVo.class));
return result;
}
/**
* @methodName : selectAuthMenu
* @date : 2021.06.07
* @desc : (팝업)메뉴 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectMyMenu", method=RequestMethod.POST)
@ResponseBody
public Object selectMyMenu(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("menuData", menuMngSvc.selectMyMenu(paramMap.getParams()));
return result;
}
}

View File

@ -0,0 +1,196 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.core.base.CamelHashMap;
import com.lsitc.fems.comm.base.service.NoticeMngSvc;
@RequestMapping("/comm/base/NoticeMngCtr")
@Controller
public class NoticeMngCtr{
@Autowired
private NoticeMngSvc noticeMngSvc;
/**
* @methodName : selectPostList
* @date : 2021.07.28
* @desc : 게시물 목록 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectPostList", method=RequestMethod.POST)
@ResponseBody
public Object selectPostList(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
List<HashMap<String, Object>> finalValue = new ArrayList<HashMap<String, Object>>();
List<CamelHashMap> postList = noticeMngSvc.selectPostList(paramMap.getParams());
//제목앞에 RE달기
// for(int i=0; i<postList.size(); i++){
// HashMap<String, Object> tempAvg = new HashMap<String, Object>();
// String str = "";
// String bef = "";
// for(String key : postList.get(i).keySet()) {
// if(key.equals("title")) {
// if(Integer.parseInt(postList.get(i).get("postGrpOrd").toString()) > 0 && Integer.parseInt(postList.get(i).get("postGrpLayer").toString()) > 0) {
// for(int j=0; j<Integer.parseInt(postList.get(i).get("postGrpLayer").toString()); j++) {
// bef += " ";
// str += "RE:";
// }
//
// str +=postList.get(i).get("postTitl").toString();
// tempAvg.put("title", bef+str);
// }else {
// tempAvg.put(key, postList.get(i).get(key));
// }
// }else {
// tempAvg.put(key, postList.get(i).get(key));
// }
// }
// finalValue.add(tempAvg);
// }
// result.add("postData", finalValue);
result.add("postData", postList);
return result;
}
/**
* @methodName : selectPost
* @date : 2021.07.28
* @desc : 게시물 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectPost", method=RequestMethod.POST)
@ResponseBody
public Object selectPost(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
List<HashMap<String, Object>> finalValue = new ArrayList<HashMap<String, Object>>();
List<CamelHashMap> postList = noticeMngSvc.selectPost(paramMap.getParams());
//제목앞에 RE달기
// for(int i=0; i<postList.size(); i++){
// HashMap<String, Object> tempAvg = new HashMap<String, Object>();
// String str = "";
// for(String key : postList.get(i).keySet()) {
// if(key.equals("title")) {
// if(Integer.parseInt(postList.get(i).get("postGrpOrd").toString()) > 0 && Integer.parseInt(postList.get(i).get("postGrpLayer").toString()) > 0) {
// for(int j=0; j<Integer.parseInt(postList.get(i).get("postGrpLayer").toString()); j++) {
// str += "RE:";
// }
// str +=postList.get(i).get("postTitl").toString();
// tempAvg.put("title", str);
// }else {
// tempAvg.put(key, postList.get(i).get(key));
// }
// }else {
// tempAvg.put(key, postList.get(i).get(key));
// }
// }
// finalValue.add(tempAvg);
// }
// result.add("postData", finalValue);
result.add("postData", postList);
//게시글 조회수
noticeMngSvc.updateViewCnt(paramMap.getParams());
return result;
}
/**
*
* @methodName : insertPost
* @date : 2021.07.28
* @desc : 게시물 등록
* @param paramMap
* @return
*/
@RequestMapping(value="/insertPost", method=RequestMethod.POST)
@ResponseBody
public Object insertPost(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
noticeMngSvc.insertPost(paramMap.getParams());
return result;
}
/**
*
* @methodName : insertRplPost
* @date : 2021.07.28
* @desc : 게시물 답글 등록
* @param paramMap
* @return
*/
@RequestMapping(value="/insertRplPost", method=RequestMethod.POST)
@ResponseBody
public Object insertRplPost(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
noticeMngSvc.updateRplPostGrpOrd(paramMap.getParams());
noticeMngSvc.insertRplPost(paramMap.getParams());
return result;
}
/**
*
* @methodName : updatePost
* @date : 2021.07.28
* @desc : 게시물 수정
* @param paramMap
* @return
*/
@RequestMapping(value="/updatePost", method=RequestMethod.POST)
@ResponseBody
public Object updatePost(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
noticeMngSvc.updatePost(paramMap.getParams());
return result;
}
/**
*
* @methodName : deletePostList
* @date : 2021.07.28
* @desc : 게시물 삭제
* @param paramMap
* @return
*/
@RequestMapping(value="/deletePost", method=RequestMethod.POST)
@ResponseBody
public Object deletePost(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
noticeMngSvc.deletePost(paramMap.getParams());
return result;
}
}

View File

@ -0,0 +1,65 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.OrgMngSvc;
import com.lsitc.fems.comm.base.vo.DeptCdVo;
@RequestMapping("/comm/base/OrgMngCtr")
@Controller
public class OrgMngCtr{
@Autowired
private OrgMngSvc orgMngSvc;
/**
* @methodName : selectDeptCd
* @date : 2021.06.07
* @desc : 부서코드 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectDeptCd", method=RequestMethod.POST)
@ResponseBody
public Object selectDeptCd(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("deptCdData", orgMngSvc.selectDeptCd(paramMap.getParams()));
return result;
}
/**
* @methodName : saveDeptCd
* @date : 2021.06.07
* @desc : 부서코드 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/saveDeptCd", method=RequestMethod.POST)
@ResponseBody
public Object saveDeptCd(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
orgMngSvc.saveDeptCd(paramMap.getDs("dsDeptCd", DeptCdVo.class));
return result;
}
}

View File

@ -0,0 +1,97 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.PrgmMngSvc;
import com.lsitc.fems.comm.base.vo.PrgmVo;
@RequestMapping("/comm/base/PrgmMngCtr")
@Controller
public class PrgmMngCtr {
@Autowired
private PrgmMngSvc prgmMngSvc;
/**
* @methodName : selectPrgm
* @date : 2021.04.26
* @desc : 프로그램 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectPrgm", method=RequestMethod.POST)
@ResponseBody
public Object selectPrgm(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("prgmData", prgmMngSvc.selectPrgm(paramMap.getParams()));
return result;
}
/**
* @methodName : savePrgm
* @date : 2021.04.26
* @desc : 프로그램 저장
* @param paramMap
* @return
*/
@RequestMapping(value="/savePrgm", method=RequestMethod.POST)
@ResponseBody
public Object savePrgm(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
prgmMngSvc.savePrgm(paramMap.getDs("dsPrgm", PrgmVo.class));
return result;
}
/**
* @methodName : selectPrgmPage
* @date : 2022.10.15
* @desc : 프로그램 페이지 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectPrgmPage", method=RequestMethod.POST)
@ResponseBody
public Object selectPrgmPage(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("prgmData", prgmMngSvc.selectPrgmPage(paramMap.getParams()));
return result;
}
/**
* @methodName : selectPrgmTotal
* @date : 2022.10.15
* @desc : 프로그램 토탈 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectPrgmTotal", method=RequestMethod.POST)
@ResponseBody
public Object selectPrgmTotal(@RequestBody BaseParam paramMap){
BaseResponse result = new BaseResponse();
result.add("prgmDataTotal", prgmMngSvc.selectPrgmTotal(paramMap.getParams()));
return result;
}
}

View File

@ -0,0 +1,80 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.controller;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseResponse;
import com.lsitc.fems.comm.base.service.SystemLogReadSvc;
@RequestMapping("/comm/base/SystemLogReadCtr")
@Controller
public class SystemLogReadCtr {
@Autowired
private SystemLogReadSvc systemLogReadSvc;
/**
* @methodName : selectLoginLog
* @date : 2021.05.04
* @desc : 로그인로그 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectLoginLog", method=RequestMethod.POST)
@ResponseBody
public Object selectLoginLog(@RequestBody BaseParam paramMap) {
BaseResponse result = new BaseResponse();
result.add("loginLogData", systemLogReadSvc.selectLoginLog(paramMap.getParams()));
return result;
}
/**
* @methodName : selectMenuCnctLog
* @date : 2021.05.04
* @desc : 메뉴접근로그 조회
* @param paramMap
* @return
*/
@RequestMapping(value="/selectMenuCnctLog", method=RequestMethod.POST)
@ResponseBody
public Object selectMenuCnctLog(@RequestBody BaseParam paramMap) {
BaseResponse result = new BaseResponse();
result.add("menuCnctLogData", systemLogReadSvc.selectMenuCnctLog(paramMap.getParams()));
return result;
}
/**
* @methodName : saveMenuCnctLog
* @date : 2021.05.04
* @desc : 메뉴접근로그 저장
* @param param
* @return
*/
@RequestMapping("/saveMenuCnctLog")
@ResponseBody
public Object saveMenuCnctLog(@RequestBody Map<String, Object> param) {
BaseResponse ret = new BaseResponse();
systemLogReadSvc.saveMenuCnctLog(param.get("menuId").toString());
return ret;
}
}

View File

@ -0,0 +1,293 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.compress.utils.FileNameUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.core.base.CamelHashMap;
import com.lsitc.core.utils.FileUtils;
import com.lsitc.core.advice.BaseControllerAdvice;
@Service
public class ApndFileSvc extends BaseSvc {
/**
*
* @methodName : selectApndFile
* @date : 2021.07.12
* @desc : 파일 정보 조회
* @param params
* @return
*/
public List<CamelHashMap> selectApndFile(HashMap<String, Object> params){
return dao.selectList("comm.base.apndFile.selectApndFile", params);
}
/**
*
* @methodName : deleteApndFile
* @date : 2021.07.12
* @desc : 파일 삭제
* @param params
* @return
*/
@Transactional
public void deleteApndFile(HashMap<String, Object> params){
List<HashMap<String, String>> apndFile_List = (List<HashMap<String, String>>)params.get("apndFile");
for(HashMap<String, String> eachRow : apndFile_List) {
dao.update("comm.base.apndFile.deleteApndFile", eachRow);
}
}
// /**
// *
// * @methodName : uploadFile
// * @date : 2021.07.12
// * @desc : 파일 업로드
// * @param params
// * @return
// */
// @Transactional
// public String uploadFile_bak(List<MultipartFile> fileList, HashMap<String, Object> param){
// FileUtils fileUtils = new FileUtils();
// HashMap<String, Object> params = new HashMap<String, Object>();
//
// String apndFileUuid = "";
// String bordNo = param.get("bordNo").toString();
// String postNo = param.get("postNo").toString();
//
// //Apnd_File_Grp 처리
// if(postNo != null && !postNo.equals("")) {
// HashMap<String, Object> paramsForUuid = new HashMap<String, Object>();
// paramsForUuid.put("bordNo", bordNo);
// paramsForUuid.put("postNo", postNo);
// List<CamelHashMap> tempList = dao.selectList("comm.base.noticeMng.selectPost", paramsForUuid);
// if(tempList.get(0).get("apndFileUuid") != null) {
// apndFileUuid = (String) tempList.get(0).get("apndFileUuid");
// }
// }
//
// if(apndFileUuid.isEmpty() || apndFileUuid == null || postNo == null || postNo.equals("")) {
// apndFileUuid = fileUtils.getUUID();
// params.put("apndFileUuid", apndFileUuid);
// dao.insert("comm.base.apndFile.insertApndFileGrp", params);
// }
//
// String apndFileId = "";
// String apndFileNm = "";
// String apndFileExt = "";
// Long apndFileSize = (long) 0;
// String apndFilePath = "";
//
// for(MultipartFile eachFile : fileList) {
// HashMap<String, Object> fileParams = new HashMap<String, Object>();
//
// apndFileId = fileUtils.getUUID();
// apndFileNm = FileNameUtils.getBaseName(eachFile.getOriginalFilename());
// apndFileExt = FileNameUtils.getExtension(eachFile.getOriginalFilename());
// apndFileSize = eachFile.getSize();
//// apndFilePath = FileUtils.FILE_PATH + "/" + new SimpleDateFormat("yyyyMMdd").format(new Date());;
// apndFilePath = FileUtils.FILE_PATH + File.separator + new SimpleDateFormat("yyyyMMdd").format(new Date());;
//
// fileParams.put("apndFileUuid", apndFileUuid);
// fileParams.put("apndFileId", apndFileId);
// fileParams.put("apndFileNm", apndFileNm);
// fileParams.put("apndFileExt", apndFileExt);
// fileParams.put("apndFileSize", apndFileSize);
// fileParams.put("apndFilePath", apndFilePath);
//
// makeDirectory(apndFilePath);
// uploadFile(eachFile, apndFilePath, apndFileId, apndFileExt);
////====================================================================================================================================
//// core - uploadFile
////====================================================================================================================================
//// try {
//// fileUtils.uplaodFile(eachFile, apndFilePath);
////
//// } catch (IOException e) {
//// logger.debug("error in uploadFileConstructionWorkLog ...");
//// e.printStackTrace();
//// }
////====================================================================================================================================
// dao.insert("comm.base.apndFile.insertApndFile", fileParams);
// }
// return apndFileUuid;
// }
/**
*
* @methodName : uploadFile
* @date : 2021.07.12
* @desc : 파일 업로드
* @param params
* @return
*/
@Transactional
public HashMap<String, Object> uploadFile(List<MultipartFile> fileList, HashMap<String, Object> param){
HashMap<String, Object> resultMap = new HashMap<String, Object>();
FileUtils fileUtils = new FileUtils();
HashMap<String, Object> params = new HashMap<String, Object>();
String apndFileUuid = "";
String bordNo = param.get("bordNo").toString();
String postNo = param.get("postNo").toString();
//Apnd_File_Grp 처리
if(postNo != null && !postNo.equals("")) {
HashMap<String, Object> paramsForUuid = new HashMap<String, Object>();
paramsForUuid.put("bordNo", bordNo);
paramsForUuid.put("postNo", postNo);
List<CamelHashMap> tempList = dao.selectList("comm.base.noticeMng.selectPost", paramsForUuid);
if(tempList.get(0).get("apndFileUuid") != null) {
apndFileUuid = (String) tempList.get(0).get("apndFileUuid");
}
}
if(apndFileUuid.isEmpty() || apndFileUuid == null || postNo == null || postNo.equals("")) {
apndFileUuid = fileUtils.getUUID();
params.put("apndFileUuid", apndFileUuid);
dao.insert("comm.base.apndFile.insertApndFileGrp", params);
}
String apndFileId = "";
String apndFileNm = "";
String apndFileExt = "";
Long apndFileSize = (long) 0;
String apndFilePath = "";
int uploadStatus = 0;
for(MultipartFile eachFile : fileList) {
HashMap<String, Object> fileParams = new HashMap<String, Object>();
apndFileId = fileUtils.getUUID();
apndFileNm = FileNameUtils.getBaseName(eachFile.getOriginalFilename());
apndFileExt = FileNameUtils.getExtension(eachFile.getOriginalFilename());
apndFileSize = eachFile.getSize();
// apndFilePath = FileUtils.FILE_PATH + "/" + new SimpleDateFormat("yyyyMMdd").format(new Date());;
apndFilePath = FileUtils.FILE_PATH + File.separator + new SimpleDateFormat("yyyyMMdd").format(new Date());;
fileParams.put("apndFileUuid", apndFileUuid);
fileParams.put("apndFileId", apndFileId);
fileParams.put("apndFileNm", apndFileNm);
fileParams.put("apndFileExt", apndFileExt);
fileParams.put("apndFileSize", apndFileSize);
fileParams.put("apndFilePath", apndFilePath);
makeDirectory(apndFilePath);
uploadStatus = uploadFile(eachFile, apndFilePath, apndFileId, apndFileExt);
if(uploadStatus != 0) {
break;
}
dao.insert("comm.base.apndFile.insertApndFile", fileParams);
}
resultMap.put("apndFileUuid", apndFileUuid);
resultMap.put("uploadStatus", uploadStatus);
return resultMap;
// return apndFileUuid;
}
/*
*
* returnCode
* 0 -> 정상
* -1 -> 유효성 실패(MimeType, 확장자)
* -2 -> 사이즈 초과
*
*
*/
public int uploadFile(MultipartFile file, String path, String uuId, String fileExt) {
FileUtils fileUtils = new FileUtils();
String filePath = path + File.separator + uuId + "." + fileExt;
String configurationSize = BaseControllerAdvice.getMaxFileSize();
int configurationIntSize = Integer.parseInt(configurationSize.replaceAll("[^0-9]", ""));
String configurationUnit = configurationSize.replaceAll("[0-9]", "").toLowerCase();
if(configurationUnit.equals("kb")) {
configurationIntSize = configurationIntSize * 1024;
}else if(configurationUnit.equals("mb")) {
configurationIntSize = configurationIntSize * 1024 * 1024;
}
if(file.getSize() > configurationIntSize) {
return -2;
}
if(fileUtils.isVaildFile(file)) {
try {
file.transferTo(new File(filePath));
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}else {
return -1;
}
// System.out.println("fileExt : " + fileExt);
// System.out.println("upload_check");
// if(!fileUtils.isVaildFile(file)) {
// System.out.println("upload_check2");
// return;
// }
// System.out.println("upload_check3");
//
// try {
// System.out.println("upload_check4");
// file.transferTo(new File(filePath));
// } catch (Exception e) {
// e.printStackTrace();
// }
// System.out.println("upload_check5");
}
public void makeDirectory(String path) {
Path directoryPath = Paths.get(path);
System.out.println("path : " + path);
// 해당 디렉토리가 없을경우 디렉토리를 생성합니다.
try {
// 디렉토리 생성
Files.createDirectories(directoryPath);
} catch (IOException e){
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,41 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.core.base.CamelHashMap;
import com.lsitc.fems.comm.base.vo.BatchMngVo;
@Service
public class BatchLogSvc extends BaseSvc {
/**
* @methodName : selectBatchLog
* @date : 2021.09.09
* @desc : 배치로그 조회
* @return
*/
public List<CamelHashMap> selectBatchLog(HashMap<String, Object> param) {
return dao.selectList("comm.base.batchLog.selectBatchLog", param);
}
}

View File

@ -0,0 +1,77 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.BatchMngVo;
@Service
public class BatchMngSvc extends BaseSvc {
/**
* @methodName : selectBatchMng
* @date : 2021.09.09
* @desc : 배치리스트 조회
* @return
*/
public List<BatchMngVo> selectBatchMng(HashMap<String, Object> param) {
return dao.selectList("comm.base.batchMng.selectBatchMng", param);
}
/**
* @methodName : saveBatchMng
* @date : 2021.09.09
* @desc : 배치리스트 저장
* @param
* @param prgmList
*/
@Transactional
public void saveBatchMng(List<BatchMngVo> batchList) {
for (BatchMngVo eachRow : batchList) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.batchMng.insertBatchMng", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.batchMng.updateBatchMng", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.batchMng.deleteBatchMng", eachRow);
break;
default:
break;
}
}
}
/**
* @methodName : selectFllwBatchList
* @date : 2021.09.09
* @desc : 후속 배치리스트 조회
* @return
*/
public List<BatchMngVo> selectFllwBatchList(HashMap<String, Object> param) {
return dao.selectList("comm.base.batchMng.selectFllwBatchList", param);
}
}

View File

@ -0,0 +1,106 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.auth.vo.CommMenuVo;
import com.lsitc.fems.comm.base.vo.WorkCaldVo;
@Service
public class CalendarMngSvc extends BaseSvc {
/**
* @methodName : selectWorkcald
* @date : 2021.06.07
* @desc : 근무달력 조회
* @param paramMap
* @return
*/
public List<CommMenuVo> selectWorkCald(HashMap<String, Object> params) {
return dao.selectList("comm.base.calendarMng.selectWorkCald", params);
}
/**
* @methodName : saveWorkcald
* @date : 2021.06.07
* @desc : 근무달력 저장
* @param paramMap
* @return
*/
@Transactional
public void saveWorkCald(List<WorkCaldVo> workCaldList) {
for(WorkCaldVo eachRow : workCaldList ) {
dao.update("comm.base.calendarMng.updateComId", eachRow);
}
}
/**
* @methodName : selectMonthWeekendList
* @date : 2021.06.07
* @desc : 특정 기간 및 월에 대한 휴일 목록 조회
* @param paramMap
* @return
*/
public List<CommMenuVo> selectWorkCaldAll(HashMap<String, Object> params) {
return dao.selectList("comm.base.calendarMng.selectWorkcaldAll", params);
}
/**
* @methodName : selectWorkCaldDetl
* @date : 2022.05.11
* @desc : 상세 일정 조회
* @param paramMap
* @return
*/
public List<CommMenuVo> selectWorkCaldDetl(HashMap<String, Object> params) {
return dao.selectList("comm.base.calendarMng.selectWorkCaldDetl", params);
}
public List<CommMenuVo> selectWorkCaldDetlOne(HashMap<String, Object> params) {
return dao.selectList("comm.base.calendarMng.selectWorkCaldDetlOne", params);
}
public void savePlanDetl(List<WorkCaldVo> ds) {
for(WorkCaldVo eachRow : ds ) {
dao.update("comm.base.calendarMng.savePlanDetl", eachRow);
}
}
public void updatePlanDetl(List<WorkCaldVo> ds) {
for(WorkCaldVo eachRow : ds ) {
dao.update("comm.base.calendarMng.updatePlanDetl", eachRow);
}
}
public void deletePlanDetl(List<WorkCaldVo> ds) {
for(WorkCaldVo eachRow : ds ) {
dao.update("comm.base.calendarMng.deletePlanDetl", eachRow);
}
}
public Object selectWeekWorkCald(HashMap<String, Object> params) {
return dao.selectList("comm.base.calendarMng.selectWeekWorkCald", params);
}
public Object selectWeekWorkCaldDetl(HashMap<String, Object> params) {
return dao.selectList("comm.base.calendarMng.selectWeekWorkCaldDetl", params);
}
}

View File

@ -0,0 +1,66 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.ComIdVo;
@Service
public class ComIdSvc extends BaseSvc {
/**
* @methodName : selectComId
* @date : 2021.04.23
* @desc : 회사코드 조회
* @param paramMap
* @return
*/
public List<ComIdVo> selectComId(Map<String, Object> map){
return dao.selectList("comm.base.comId.selectComId", map);
}
/**
*
* @methodName : saveComId
* @date : 2021.04.23
* @desc : 회사코드 저장
* @param paramMap
* @return
*/
@Transactional
public void saveComId(List<ComIdVo> comIdList) {
for(ComIdVo eachRow : comIdList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.comId.insertComId", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.comId.updateComId", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.comId.deleteComId", eachRow);
break;
}
}
}
}

View File

@ -0,0 +1,114 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.lsitc.core.base.BaseParam;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.CommCdVo;
import com.lsitc.fems.comm.base.vo.CommGrpCdVo;
@Service
public class CommCdMngSvc extends BaseSvc {
/**
* @methodName : selectCommGrpCd
* @date : 2021.06.07
* @desc : 공통그룹코드 조회
* @param paramMap
* @return
*/
public Object selectCommGrpCd(HashMap<String, Object> paramMap) {
return dao.selectList("comm.base.commCdMng.selectCommGrpCd", paramMap);
}
/**
* @methodName : saveCommGrpCd
* @date : 2021.06.07
* @desc : 공통그룹코드 저장
* @param paramMap
* @return
*/
public void saveCommGrpCd(List<CommGrpCdVo> grpCdList){
for(CommGrpCdVo eachRow : grpCdList) {
switch (eachRow.getRowStat()) {
case RowType.INSERT :
dao.insert("comm.base.commCdMng.insertCommGrpCd", eachRow);
break;
case RowType.UPDATE :
dao.update("comm.base.commCdMng.updateCommGrpCd", eachRow);
break;
case RowType.DELETE :
dao.delete("comm.base.commCdMng.deleteCommGrpCd", eachRow);
break;
default :
break;
}
}
}
/**
* @methodName : selectCommCd
* @date : 2021.06.07
* @desc : 공통코드 조회
* @param paramMap
* @return
*/
public List<CommCdVo> selectCommCd(BaseParam paramMap) {
return dao.selectList("comm.base.commCdMng.selectCommCd", paramMap.getParams());
}
/**
* @methodName : saveCommCd
* @date : 2021.06.07
* @desc : 공통코드 저장
* @param paramMap
* @return
*/
public void saveCommCd(List<CommCdVo> commCdList){
for(CommCdVo eachRow : commCdList) {
switch (eachRow.getRowStat()) {
case RowType.INSERT :
dao.insert("comm.base.commCdMng.insertCommCd", eachRow);
break;
case RowType.UPDATE :
dao.update("comm.base.commCdMng.updateCommCd", eachRow);
break;
case RowType.DELETE :
dao.delete("comm.base.commCdMng.deleteCommCd", eachRow);
break;
default :
break;
}
}
}
/**
* @methodName : selectGvno
* @date : 2021.03.15
* @desc : 채번API
* @param paramMap
* @return
*/
public String selectGvno(Map<String, Object> paramMap) {
return dao.selectOne("comm.base.commCdMng.selectGvno", paramMap);
}
}

View File

@ -0,0 +1,39 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.BlocMstrVo;
@Service
public class CommSvc extends BaseSvc {
/**
* @methodName : selectBlocMstr
* @date : 2021.06.01
* @desc : 사업장 코드 조회
* @param param
* @return
*/
public List<BlocMstrVo> selectBlocMstr(HashMap<String, Object> param){
return dao.selectList("comm.base.comm.selectBlocMstr", param);
}
}

View File

@ -0,0 +1,107 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.auth.vo.CommMenuVo;
import com.lsitc.fems.comm.base.vo.MenuVo;
import com.lsitc.fems.comm.base.vo.WorkCaldVo;
@Service
public class MenuMngSvc extends BaseSvc {
/**
* @methodName : selectMenu
* @date : 2021.06.07
* @desc : 메뉴 조회
* @param paramMap
* @return
*/
public List<MenuVo> selectMenu(HashMap<String, Object> param){
return dao.selectList("comm.base.menuMng.selectCommMenuTree", param);
}
/**
* @methodName : saveMenu
* @date : 2021.06.07
* @desc : 메뉴 저장
* @param paramMap
* @return
*/
@Transactional
public void saveMenu(List<MenuVo> menuList) {
for(MenuVo eachRow : menuList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.menuMng.insertMenu", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.menuMng.updateMenu", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.menuMng.deleteMenu", eachRow);
break;
default :
break;
}
}
}
/**
* @methodName : selectMenuPop
* @date : 2021.06.07
* @desc : (팝업)메뉴 조회
* @param paramMap
* @return
*/
public Object selectMenuPop(HashMap<String, Object> params) {
return dao.selectList("comm.base.menuMng.selectMenuPop", params);
}
//FIXME 이거 수정할 것!
public List<CommMenuVo> selectAuthMenu() {
return dao.selectList("comm.base.menuMng.selectAuthMenu", new HashMap<String, Object>());
}
//FIXME 이거 수정할 것!
public List<CommMenuVo> selectAuthMenu(String userId) {
//FIXME ???
//최초 로그인 시에는 session이 없어 userID를 넣는다..
return dao.selectList("comm.base.menuMng.selectAuthMenu", userId);
}
public void saveBookmark(List<MenuVo> ds) {
for(MenuVo eachRow : ds ) {
dao.update("comm.base.menuMng.saveBookmark", eachRow);
}
}
public void deleteBookmark(List<MenuVo> ds) {
for(MenuVo eachRow : ds ) {
dao.update("comm.base.menuMng.deleteBookmark", eachRow);
}
}
public List<CommMenuVo> selectMyMenu(HashMap<String, Object> params) {
return dao.selectList("comm.base.menuMng.selectMyMenu", params);
}
}

View File

@ -0,0 +1,132 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.core.base.CamelHashMap;
@Service
public class NoticeMngSvc extends BaseSvc {
/**
* @methodName : selectPost
* @date : 2021.07.28
* @desc : 게시물 목록 조회
* @param paramMap
* @return
*/
public List<CamelHashMap> selectPostList(HashMap<String, Object> param){
return dao.selectList("comm.base.noticeMng.selectPostList", param);
}
/**
* @methodName : selectPost
* @date : 2021.07.28
* @desc : 게시물 조회
* @param paramMap
* @return
*/
public List<CamelHashMap> selectPost(HashMap<String, Object> param){
return dao.selectList("comm.base.noticeMng.selectPost", param);
}
/**
* @methodName : insertPost
* @date : 2021.07.28
* @desc : 게시물 입력
* @param paramMap
* @return
*/
public void insertPost(HashMap<String, Object> param) {
// logger.debug("parameter...");
// Iterator it = param.entrySet().iterator();
// while (it.hasNext()) {
// Map.Entry pair = (Map.Entry)it.next();
// logger.info(pair.getKey() + " = " + pair.getValue());
// }
dao.insert("comm.base.noticeMng.insertPost", param);
}
/**
* @methodName : insertRplPost
* @date : 2021.07.28
* @desc : 게시물 답글 입력
* @param paramMap
* @return
*/
public void insertRplPost(HashMap<String, Object> param) {
dao.insert("comm.base.noticeMng.insertRplPost", param);
}
/**
* @methodName : updatePost
* @date : 2021.07.28
* @desc : 게시물 수정
* @param paramMap
* @return
*/
public void updatePost(HashMap<String, Object> param) {
dao.update("comm.base.noticeMng.updatePost", param);
}
/**
* @methodName : updateRplPostGrpOrd
* @date : 2021.07.28
* @desc : 게시물 답글 추가될때 POST_GRP_ORD UPDATE
* @param paramMap
* @return
*/
public void updateRplPostGrpOrd(HashMap<String, Object> param) {
dao.update("comm.base.noticeMng.updateRplPostGrpOrd", param);
}
/**
* @methodName : updateViewCnt
* @date : 2021.07.28
* @desc : 게시물 조회수 업데이트
* @param paramMap
* @return
*/
public void updateViewCnt(HashMap<String, Object> param) {
dao.update("comm.base.noticeMng.updateViewCnt", param);
}
/**
*
* @methodName : deletePostList
* @date : 2021.07.13
* @desc : 게시물 삭제
* @param paramMap
* @return
*/
@Transactional
public void deletePost(HashMap<String, Object> param){
//logger.debug("###########param : {}", param);
dao.delete("comm.base.noticeMng.deletePost", param);
//if(param.get("apndFileUuid").toString() != null || param.get("apndFileUuid").toString() != ""){
if(param.get("apndFileUuid") != null || param.get("apndFileUuid") != ""){
dao.delete("comm.base.apndFile.deleteCommApndFileGrp", param);
dao.delete("comm.base.apndFile.deleteCommApndFile", param);
}
}
}

View File

@ -0,0 +1,63 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.DeptCdVo;
@Service
public class OrgMngSvc extends BaseSvc {
/**
* @methodName : selectDeptCd
* @date : 2021.06.07
* @desc : 부서코드 조회
* @param paramMap
* @return
*/
public List<DeptCdVo> selectDeptCd(HashMap<String, Object> param){
return dao.selectList("comm.base.orgMng.selectDeptCd", param);
}
/**
* @methodName : saveDeptCd
* @date : 2021.06.07
* @desc : 부서코드 저장
* @param paramMap
* @return
*/
@Transactional
public void saveDeptCd(List<DeptCdVo> deptCdList) {
for(DeptCdVo eachRow : deptCdList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.orgMng.insertDeptCd", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.orgMng.updateDeptCd", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.orgMng.deleteDeptCd", eachRow);
break;
}
}
}
}

View File

@ -0,0 +1,88 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.PrgmVo;
@Service
public class PrgmMngSvc extends BaseSvc {
/**
* @methodName : selectPrgm
* @date : 2021.04.26
* @desc : 프로그램 조회
* @param param
* @return
*/
public List<PrgmVo> selectPrgm(HashMap<String, Object> param){
return dao.selectList("comm.base.prgmMng.selectPrgm", param);
}
/**
* @methodName : savePrgm
* @date : 2021.04.26
* @desc : 프로그램 저장
* @param prgmList
*/
@Transactional
public void savePrgm(List<PrgmVo> prgmList) {
for(PrgmVo eachRow : prgmList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.prgmMng.insertPrgm", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.prgmMng.updatePrgm", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.prgmMng.deletePrgm", eachRow);
break;
default :
break;
}
}
}
/**
* @methodName : selectPrgmPage
* @date : 2022.10.15
* @desc : 프로그램 페이지 조회
* @param param
* @return
*/
public List<PrgmVo> selectPrgmPage(HashMap<String, Object> param){
return dao.selectList("comm.base.prgmMng.selectPrgmPage", param);
}
/**
* @methodName : selectPrgmTotal
* @date : 2022.10.15
* @desc : 프로그램 토탈 조회
* @param param
* @return
*/
public List<PrgmVo> selectPrgmTotal(HashMap<String, Object> param){
return dao.selectList("comm.base.prgmMng.selectPrgmTotal", param);
}
}

View File

@ -0,0 +1,107 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
@Service
public class SystemLogReadSvc extends BaseSvc {
private static Boolean LOGIN_LOG_ENABLE = false;
private static Boolean MENU_CNCT_LOG_ENABLE = false;
@Value("${logging.loginLogEnable:false}")
private void setLoginLogEnable(Boolean loginLogEnable) {
LOGIN_LOG_ENABLE = loginLogEnable;
}
@Value("${logging.menuCnctLogEnable:FEMS_SESSION}")
private void setMenuCnctLogEnable(Boolean menuCnctLogEnable) {
MENU_CNCT_LOG_ENABLE = menuCnctLogEnable;
}
/**
* @methodName : selectMenuCnctLog
* @date : 2021.05.04
* @desc : 로그인로그 조회
* @param params
* @return
*/
public Object selectLoginLog(HashMap<String, Object> paramMap) {
return dao.selectList("comm.base.SystemLogRead.selectLoginLog", paramMap);
}
/**
* @methodName : selectMenuCnctLog
* @date : 2021.05.04
* @desc : 메뉴접근로그 조회
* @param params
* @return
*/
public Object selectMenuCnctLog(HashMap<String, Object> paramMap) {
return dao.selectList("comm.base.SystemLogRead.selectMenuCnctLog", paramMap);
}
/**
* @param loginInfo
* @methodName : saveLoginLog
* @date : 2021.05.04
* @desc : 로그인로그 저장
*/
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveLoginLog(Map<String, Object> loginInfo) {
if( LOGIN_LOG_ENABLE ) {
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.putAll(loginInfo); //loginInfo에 put이 안되는 문제로 인해 새로운 map에 옮김.
paramMap.put("logId", getUUID());
dao.insert("comm.base.SystemLogRead.insertLoginLog", paramMap);
}
}
/**
* @methodName : saveMenuCnctLog
* @date : 2021.05.04
* @desc : 메뉴접근로그 저장
* @param menuId
*/
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveMenuCnctLog(String menuId) {
if( MENU_CNCT_LOG_ENABLE ) {
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("logId", getUUID());
paramMap.put("menuId", menuId);
dao.insert("comm.base.SystemLogRead.insertMenuCnctLog", paramMap);
}
}
/**
* @methodName : getUUID
* @date : 2021.05.04
* @desc : UUID반환
* @return
*/
private String getUUID() {
String uuid = UUID.randomUUID().toString();
return uuid.replaceAll("-", "");
}
}

View File

@ -0,0 +1,117 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lsitc.core.base.BaseSvc;
import com.lsitc.fems.comm.base.vo.WidgetVo;
@Service
public class WidgetMngSvc extends BaseSvc {
/**
* @methodName : selectWidget
* @date : 2022.05.31
* @desc : 프로그램 조회
* @param param
* @return
*/
public List<WidgetVo> selectWidget(HashMap<String, Object> param){
return dao.selectList("comm.base.widgetMng.selectWidget", param);
}
/**
* @methodName : saveWidget
* @date : 2022.05.31
* @desc : 프로그램 저장
* @param prgmList
*/
@Transactional
public void saveWidget(List<WidgetVo> prgmList) {
for(WidgetVo eachRow : prgmList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.widgetMng.insertWidget", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.widgetMng.updateWidget", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.widgetMng.deleteWidget", eachRow);
break;
default :
break;
}
}
}
/**
* @methodName : selectNotMyWidget
* @date : 2022.05.31
* @desc : 프로그램 조회
* @param param
* @return
*/
public Object selectNotMyWidget(HashMap<String, Object> params) {
return dao.selectList("comm.base.widgetMng.selectNotMyWidget", params);
}
/**
* @methodName : selectMyWidget
* @date : 2022.05.31
* @desc : 프로그램 조회
* @param param
* @return
*/
public Object selectMyWidget(HashMap<String, Object> params) {
return dao.selectList("comm.base.widgetMng.selectMyWidget", params);
}
/**
* @methodName : saveMyWidget
* @date : 2022.05.31
* @desc : 프로그램 저장
* @param prgmList
*/
@Transactional
public void saveMyWidget(List<WidgetVo> prgmList) {
for(WidgetVo eachRow : prgmList ) {
switch (eachRow.getRowStat()) {
case RowType.INSERT:
dao.insert("comm.base.widgetMng.insertMyWidget", eachRow);
break;
case RowType.UPDATE:
dao.update("comm.base.widgetMng.updateMyWidget", eachRow);
break;
case RowType.DELETE:
dao.delete("comm.base.widgetMng.deleteMyWidget", eachRow);
break;
default :
break;
}
}
}
public Object selectWidgetPrgmUrl(HashMap<String, Object> params) {
return dao.selectList("comm.base.widgetMng.selectWidgetPrgmUrl", params);
}
}

View File

@ -0,0 +1,36 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ApndFileGrpVo extends BaseVo<ApndFileGrpVo> {
private String apndFileUuid; // APND_FILE_UUID (첨부파일UUID)
private String menuId; // MENU_ID (메뉴ID)
private String useTableNm; // USE_TABLE_NM (사용테이블명)
private String useFg; // USE_FG (사용여부)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,46 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ApndFileVo extends BaseVo<ApndFileVo> {
private String apndFileUuid; // APND_FILE_UUID (첨부파일UUID)
private String apndFileId; // APND_FILE_ID (첨부파일ID(UUID))
private String apndFileNm; // APND_FILE_NM (첨부파일명)
private String apndFileExt; // APND_FILE_EXT (첨부파일확장자)
private BigDecimal apndFileSize; // APND_FILE_SIZE (첨부파일사이즈)
private String apndFilePath; // APND_FILE_PATH (첨부파일경로)
private String useFg; // USE_FG (사용여부)
private BigDecimal sortSeq; // SORT_SEQ (정렬순서)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,46 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.util.Date;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BatchLogVo extends BaseVo<BatchLogVo> {
private Integer batchLogSeq; // BATCH_LOG_SEQ (배치 로그 순번)
private String batchId; // BATCH_ID (배치 ID)
private String batchNm; // BATCH_NM (배치명)
private String execDt; // EXEC_DT (실행 일자)
private String execRsltCd; // EXEC_RSLT_CD (실행 결과 코드)
private String execLogCont1; // EXEC_LOG_CONT_1 (실행 로그 1)
private String execLogCont2; // EXEC_LOG_CONT_2 (실행 로그 2)
private Date batchStrtDttm; // BATCH_STRT_DTTM (배치 시작 일시)
private Date batchEndDttm; // BATCH_END_DTTM (배치 종료 일시)
}

View File

@ -0,0 +1,62 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BatchMngVo extends BaseVo<BatchMngVo> {
private String batchId; // BATCH_ID (배치 ID)
private String batchNm; // BATCH_NM (배치명)
private String batchExecTp; // BATCH_EXEC_TP (배치 실행 구분)
private String batchDupExecFg; // BATCH_DUP_EXEC_FG (배치 중복 실행 여부)
private String execCyclSecVal; // EXEC_CYCL_SEC_VAL (실행주가(초))
private String execCyclMinVal; // EXEC_CYCL_MIN_VAL (실행주기(분))
private String execCyclHhVal; // EXEC_CYCL_HH_VAL (실행주기(시간))
private String execCyclDdVal; // EXEC_CYCL_DD_VAL (실행주기(일))
private String execCyclMmVal; // EXEC_CYCL_MM_VAL (실행주기(월))
private String execCyclWdayVal; // EXEC_CYCL_WDAY_VAL (실행주기(요일))
private String execCyclYyyyVal; // EXEC_CYCL_YYYY_VAL (실행주기(년))
private String execCmnd; // EXEC_CMND (실행 명령)
private String execCmndPath; // EXEC_CMND_PATH (실행 명령 경로)
private String fllwBatchId; // FLLW_BATCH_ID (후속배치ID)
private String refVal1; // REF_VAL_1 (참조값 1)
private String refVal2; // REF_VAL_2 (참조값 2)
private String refVal3; // REF_VAL_3 (참조값 3)
private String useFg; // USE_FG (사용여부)
}

View File

@ -0,0 +1,33 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BlocMstrVo extends BaseVo<BlocMstrVo> {
private String comId; // COM_ID (회사코드)
private String blocId; // BLOC_ID (사업장코드)
private String blocNm; //BLOC_NM (사업장명)
private String plcId; // PLC_ID (위치ID)
private String sortSeq; //SORT_SEQ (순서)
private String useFg; //USE_FG (사용여부)
}

View File

@ -0,0 +1,36 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ComIdVo extends BaseVo<ComIdVo> {
private String comId; // COM_ID (회사코드)
private String comNm; // COM_NM (회사명)
private String comAbbrnm; // COM_ABBRNM (회사약칭)
private String useFg; // USE_FG (사용여부)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,39 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CommCdVo extends BaseVo<CommCdVo> {
private String commGrpCd;
private String commCd;
private String commCdNm;
private String commCdAbbrnm;
private String userDefVal1;
private String userDefVal2;
private String userDefVal3;
private String useFg;
private BigDecimal sortSeq;
private String rmrk;
private Integer seq;
private String cdKind;
}

View File

@ -0,0 +1,30 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CommGrpCdVo extends BaseVo<CommGrpCdVo> {
private String commGrpCd;
private String commGrpNm;
private String useFg;
private String rmrk;
private String sysDiv;
}

View File

@ -0,0 +1,44 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class DeptCdVo extends BaseVo<DeptCdVo> {
private String comId; // COM_ID (회사코드)
private String deptId; // DEPT_ID (부서코드)
private String upDeptId; // UP_DEPT_ID (상위부서코드)
private String deptNm; // DEPT_NM (부서명)
private String deptAbrvNm; // DEPT_ABRV_NM (부서약칭)
private String useFg; // USE_FG (사용여부)
private BigDecimal sortSeq; // SORT_SEQ (정렬순서)
private String blocId;
}

View File

@ -0,0 +1,34 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class GrpCdVo extends BaseVo<GrpCdVo> {
private String commGrpCd; // COMM_GRP_CD (공통그룹코드(업무명 앞 세자리+0001))
private String commGrpNm; // COMM_GRP_NM (공통그룹명)
private String useFg; // USE_FG (사용여부)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,45 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class MenuVo extends BaseVo<MenuVo> {
private String comId; //회사코드
private String sysDivCd; //시스템구분
private String menuId; // MENU_ID (메뉴ID)
private String prgmId; // PRGM_ID (프로그램ID)
private String upMenuId; // UP_MENU_ID (상위메뉴ID)
private String menuNm; // MENU_NM (메뉴명)
private BigDecimal sortSeq; // SORT_SEQ (정렬순서)
private String useFg; // USE_FG (사용여부)
private String rmrk; // RMRK (비고)
}

View File

@ -0,0 +1,47 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import java.sql.Date;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class NoticeMngVo extends BaseVo<NoticeMngVo> {
private String comId; //회사코드
private String bordNo;
private String bordNm;
private String useFg;
private int postNo;
private int postOrgNo;
private int postGrpOrd;
private int postGrpLayer;
private String postTitle;
private String title;
private String postCntn;
private String notiYn;
private String rplyPossYn;
private Date strtDttm;
private Date endDttm;
private String apndFileUuid;
private int viewCount;
}

View File

@ -0,0 +1,39 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class PrgmVo extends BaseVo<PrgmVo> {
private String prgmId; // PRGM_ID (프로그램ID)
private String prgmNm; // PRGM_NM (프로그램 명)
private String prgmTpCd; // PRGM_TP_CD (프로그램유형코드)
private String url; // URL (URL)
private String useFg; // USE_FG (사용여부)
private Integer totalCount; // TOTALCOUNT (토탈카운트)
}

View File

@ -0,0 +1,48 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class WidgetVo extends BaseVo<PrgmVo> {
private String widgetId;
private String widgetNm;
private String widgetDesc;
private String prgmId;
private String prgmUrl;
private BigDecimal widgetOrdrSeq;
private BigDecimal widgetReflashMm;
private String useFg;
private String widgetThumbnailFile;
private String widgetThumbnail;
}

View File

@ -0,0 +1,50 @@
/*
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 LS ITC에 있으며,
* LS ITC가 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, 배포는 엄격히 금지되며,
* LS ITC의 지적재산권 침해에 해당됩니다.
* (Copyright ⓒ 2021 LS ITC. All Rights Reserved| Confidential)
*
* You are strictly prohibited to copy, disclose, distribute, modify, or use
* this program in part or as a whole without the prior written consent of
* LS ITC Business unit. LS ITC Business unit., owns the intellectual property rights in
* and to this program.
* (Copyright ⓒ 2021 LS ITC Business unit. All Rights Reserved| Confidential)
* Author : LS ITC
* Created : 2021-04-23 17:58:11
*/
package com.lsitc.fems.comm.base.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.lsitc.core.base.BaseVo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class WorkCaldVo extends BaseVo<WorkCaldVo>{
private String comId;
private String blocId;
private String scheFg;
private Date dt;
private String hldyFg;
private String dow;
private BigDecimal weekCt;
private String hldyNm;
private String rmrk;
private String planSeq;
private Date strtDt;
private String strtHh;
private String strtMm;
private Date endDt;
private String endHh;
private String endMm;
private String planTitle;
private String planCntn;
private String planColor;
private String day;
}

View File

@ -0,0 +1,36 @@
package com.lsitc.fems.comm;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class jasyptCodeGen {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
private static void jasypt( ) {
String url = "jdbc:log4jdbc:sqlserver://ap.kfems.net:51433;databaseName=sempio;sendStringParametersAsUnicode=false";
String username = "fems_test";
String password = "fems2021";
System.out.println("url : ENC(" + jasyptEncoding(url) + ")");
System.out.println("username : ENC(" + jasyptEncoding(username) + ")");
System.out.println("password : ENC(" + jasyptEncoding(password) + ")");
System.out.println("secretKey : ENC(" + jasyptEncoding("secretKeysecretKeysecretKeysecretKeysecretKeysecretKey") + ")");
}
private static String jasyptEncoding(String value) {
String key = "857b2405e94125f026da8aecb65ad1616bcf336ae827b549146a83cfc17bcbeb79253b61f016fac169e5cf033d470c319afa591224c1cbb84450aa08bf7cf372";
StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
pbeEnc.setAlgorithm("PBEWithMD5AndDES");
pbeEnc.setPassword(key);
return pbeEnc.encrypt(value);
}
public static void main(String[] args) {
jasypt();
}
}

View File

@ -0,0 +1,186 @@
#공통적용 내용으로 반드시 채워주셔야 합니다.
spring:
application:
#업무명
name: comm
config:
#core.yaml(do not modify!)
import: application-core.yaml
datasource:
#db type으로 반드시 지정하여야 한다.(mapper-scan용)
#SK DB
# db-type: oracle
# serverIp: 58.232.11.31
# port: 1569
# databaseName: PDBFOPSK
# username: LSITC
# password: "!Q2w3e4r"
#local db
db-type: oracle
serverIp: localhost
port: 1521
databaseName: free
username: LSITC
password: "ziin2117!"
#판교 개발 DB
# db-type: oracle
# serverIp: ap.kfems.net
# port: 41521
# databaseName: ORCL1
# username: femsadmin
# password: fems2021
profiles:
#프로파일(local:개발자 환경, dev:개발서버, prod:운영 택1, 향후 runtime argument로 넘어갈 예정)
active: local
#이하 해당 프로젝트에서 profile별로 필요한 정보를 세팅한다.(default와 중복될 경우 override)
#DB외 SPRING과 관련된 직접적인 셋팅은 자제하고, 이 외 필요한 것들만 선언해서 사용한다. (t)
---
##############
####local#####
##############
spring:
config:
activate:
on-profile: local
# datasource:
# db-type: maria #db type으로 반드시 지정하여야 한다.(essential!)
# driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mariadb://ap.kfems.net:13306/fems_test
# username: fems_test
# password: fems2021
gatewayUrl: http://localhost:9999
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:oracle:thin:@${spring.datasource.serverIp}:${spring.datasource.port}/${spring.datasource.databaseName}
# username: LSITC
# password: "!Q2w3e4r"
username: LSITC
password: "ziin2117!"
# user-name: femsadmin
# password: fems2021
mybatis:
configuration:
jdbc-type-for-null: varchar
#로깅관련
logging:
loginLogEnable: true
menuCnctLogEnable: true
level:
root: DEBUG
#logging
config: classpath:logback_spring.xml
file:
path: logs
max-history: 30
max-size: 100MB
server:
#port설정
port: 8080
---
##############
####Docker#####
##############
spring:
config:
activate:
on-profile: docker
gatewayUrl: http://apigw:9999
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:oracle:thin:@${spring.datasource.serverIp}:${spring.datasource.port}/${spring.datasource.databaseName}
# username: LSITC
# password: "!Q2w3e4r"
username: LSITC
password: "ziin2117!"
# username: femsadmin
# password: fems2021
mybatis:
configuration:
jdbc-type-for-null: varchar
#로깅관련
logging:
loginLogEnable: true
menuCnctLogEnable: true
level:
root: DEBUG
#logging
config: classpath:logback_spring.xml
file:
path: logs
max-history: 30
max-size: 100MB
management:
endpoints:
web:
exposure:
include: health, info, prometheus
metrics:
tags:
application: ${spring.application.name}
server:
#port설정
port: 8080
---
##############
####Cloud#####
##############
spring:
config:
activate:
on-profile: cloud
gatewayUrl: /
#datasource-mssql
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:oracle:thin:@${spring.datasource.serverIp}:${spring.datasource.port}/${spring.datasource.databaseName}
# username: LSITC
# password: "!Q2w3e4r"
username: LSITC
password: "ziin2117!"
# username: femsadmin
# password: fems2021
mybatis:
configuration:
jdbc-type-for-null: varchar
#로깅관련
logging:
loginLogEnable: true
menuCnctLogEnable: true
level:
root: DEBUG
#logging
config: classpath:logback_spring.xml
file:
path: logs
max-history: 30
max-size: 100MB
management:
endpoints:
web:
exposure:
include: health, info, prometheus
metrics:
tags:
application: ${spring.application.name}
server:
#port설정
port: 8080

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 60초마다 설정 파일의 변경을 확인 하여 변경시 갱신 -->
<configuration scan="true" scanPeriod="60 seconds">
<!--springProfile 태그를 사용하면 logback 설정파일에서 복수개의 프로파일을 설정할 수 있다. -->
<springProperty scope="context" name="LOG_LEVEL" source="logging.level.root" />
<!-- log file path -->
<springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
<!-- log file name -->
<springProperty scope="context" name="LOG_FILE_NAME" source="spring.application.name"/>
<!-- log file size -->
<springProperty scope="context" name="LOG_MAX-SIZE" source="logging.file.max-size"/>
<!-- log history -->
<springProperty scope="context" name="LOG_MAX_HISTORY" source="logging.file.max-history"/>
<!-- pattern -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%-6level] [%logger{0}:%line] - %msg%n" />
<!-- Console Appender -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- File Appender -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일경로 설정 -->
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<!-- 출력패턴 설정 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!-- Rolling 정책 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 -->
<fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 파일당 최고 용량 kb, mb, gb -->
<maxFileSize>${LOG_MAX-SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거 -->
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<!--<MinIndex>1</MinIndex> <MaxIndex>10</MaxIndex> -->
</rollingPolicy>
</appender>
<root level="${LOG_LEVEL}">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!-- log4jdbc 옵션 설정 -->
<logger name="jdbc" level="OFF" />
<!-- 커넥션 open close 이벤트를 로그로 남긴다. -->
<logger name="jdbc.connection" level="OFF" />
<!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
<logger name="jdbc.sqlonly" level="OFF" />
<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
<logger name="jdbc.sqltiming" level="DEBUG" />
<!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. -->
<logger name="jdbc.audit" level="OFF" />
<!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. -->
<logger name="jdbc.resultset" level="OFF" />
<!-- SQL 결과 조회된 데이터의 table을 로그로 남긴다. -->
<logger name="jdbc.resultsettable" level="OFF" />
</configuration>

View File

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.auth.loginInfo">
<insert id="insertLoginInfo">
/* comm.loginInfo.insertLoginInfo : 로그인정보 등록 */
INSERT INTO COMM_LOGIN_INFO
(
USER_NO
,USER_STAT_CD
,USER_LOGIN_ID
,USER_PSWD
,PSWD_ERR_CNT
,PSWD_MOD_DTTM
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{userNo}
<choose>
<when test="userStatCd != null and userStatCd != ''.toString()">
,#{userStatCd}
</when>
<otherwise>
,'0'
</otherwise>
</choose>
,#{userLoginId}
,#{userPswd}
<choose>
<when test="pswdErrCnt != null and pswdErrCnt != ''.toString()">
,#{pswdErrCnt}
</when>
<otherwise>
,0
</otherwise>
</choose>
<choose>
<when test="pswdErrCnt != null and pswdErrCnt != ''.toString()">
,#{pswdModDttm}
</when>
<otherwise>
,SYSDATE
</otherwise>
</choose>
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateLoginInfo">
/* comm.loginInfo.updateLoginInfo : 로그인정보 수정 */
UPDATE COMM_LOGIN_INFO
<trim prefix="SET" prefixOverrides=",">
<if test="userStatCd != null and userStatCd != ''">
,USER_STAT_CD = #{userStatCd}
</if>
<if test="userLoginId != null and userLoginId != ''">
,USER_LOGIN_ID = #{userLoginId}
</if>
<if test="userPswd != null and userPswd != ''">
,USER_PSWD = #{userPswd}
</if>
<if test="pswdErrCnt != null and pswdErrCnt != ''">
,PSWD_ERR_CNT = #{pswdErrCnt}
</if>
<if test="pswdModDttm != null">
,PSWD_MOD_DTTM = #{pswdModDttm}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND USER_NO = #{userNo}
</update>
<delete id="deleteLoginInfo">
/* comm.loginInfo.deleteLoginInfo : 로그인정보 삭제 */
DELETE
FROM COMM_LOGIN_INFO
WHERE 1=1
AND USER_NO = #{userNo}
</delete>
<select id="selectLoginInfoForLogin" resultType="com.lsitc.core.base.CamelHashMap">
SELECT A.USER_NO
,A.USER_PSWD
,B.USER_NM
,B.COM_ID
,B.BLOC_ID
, NVL(C.BLOC_NM, '') as BLOC_NM
, (
SELECT /* 사용자가 가지는 ROLE */
LISTAGG(X.ROLE_ID, ',')
FROM COMM_ROLE_USER X
WHERE 1=1
AND B.COM_ID = X.COM_ID
AND B.USER_NO = X.USER_NO
) AS ROLE_LIST
FROM COMM_LOGIN_INFO A
INNER JOIN COMM_USER B ON A.USER_NO = B.USER_NO
LEFT JOIN COMM_BLOC_INFO C ON B.COM_ID = C.COM_ID AND B.BLOC_ID = C.BLOC_ID
WHERE 1=1
AND B.COM_ID = #{comId}
AND USER_LOGIN_ID = #{userId}
</select>
<select id="selectLoginInfo"
resultType="com.lsitc.fems.comm.auth.vo.LoginInfoVo">
/* comm.loginInfo.selectLoginInfo : 로그인 정보 조회 */
SELECT
USER_NO
,USER_STAT_CD
,USER_LOGIN_ID
,USER_PSWD
,PSWD_ERR_CNT
,PSWD_MOD_DTTM
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_LOGIN_INFO
WHERE
1=1
<if test="userNo != null and userNo != ''">
AND USER_NO = #{userNo}
</if>
<if test="userStatCd != null and userStatCd != ''">
AND USER_STAT_CD = #{userStatCd}
</if>
<if test="userLoginId != null and userLoginId != ''">
AND USER_LOGIN_ID = #{userLoginId}
</if>
<if test="userPswd != null and userPswd != ''">
AND USER_PSWD = #{userPswd}
</if>
<if test="pswdErrCnt != null and pswdErrCnt != ''">
AND PSWD_ERR_CNT = #{pswdErrCnt}
</if>
<if test="pswdModDttm != null and pswdModDttm != ''">
AND PSWD_MOD_DTTM = #{pswdModDttm}
</if>
</select>
<select id="selectMenuAuth" resultType="com.lsitc.core.base.CamelHashMap">
/* comm.loginInfo.selectLoginInfo : 로그인 정보 조회 */
WITH TMP AS (
SELECT /* comm.loginInfo.selectMenuAuth 권한이 있는 메뉴 목록 */
D.MENU_ID /* 메뉴ID */
, D.MENU_NM /* 메뉴명 */
, D.UP_MENU_ID /* 상위메뉴ID */
, E.URL /* URL */
, C.AUTH_CD /* 권한 */
FROM COMM_ROLE_USER A /* 역할별사용자 */
INNER JOIN COMM_MENU_ROLE B ON ( A.COM_ID=B.COM_ID AND A.ROLE_ID = B.ROLE_ID ) /* 역할별메뉴 */
LEFT OUTER JOIN COMM_MENU_ROLE_AUTH C ON ( A.COM_ID=C.COM_ID AND B.ROLE_ID = C.ROLE_ID AND B.MENU_ID = C.MENU_ID ) /* 역할별 권한 */
INNER JOIN COMM_MENU D ON ( A.COM_ID=D.COM_ID AND B.MENU_ID = D.MENU_ID ) /* 메뉴 */
LEFT OUTER JOIN COMM_PRGM E ON ( D.PRGM_ID = E.PRGM_ID ) /* 프로그램 */
WHERE A.COM_ID = #{session.comId}
/* essential */
AND A.USER_NO = #{session.userNo} /* USER_NO */
AND D.MENU_ID = #{menuId}
AND SYSDATE BETWEEN A.APLY_START_DT AND A.APLY_END_DT /* 현재 유효한것만 */
)
SELECT A.MENU_ID
,A.MENU_NM
,A.UP_MENU_ID
,A.URL
,( SELECT /* 사용자가 가지는 ROLE */
LISTAGG(C.AUTH_CD, ',')
FROM TMP C
WHERE 1=1
AND C.MENU_ID = A.MENU_ID
) AS AUTH_CD
FROM TMP A
GROUP
BY A.MENU_ID
,A.MENU_NM
,A.UP_MENU_ID
,A.URL
</select>
</mapper>

View File

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.auth.menuRoleMng">
<select id="selectMenuRole" resultType="camelHashMap">
/* comm.menuRoleMng.selectMenuRole : 역할별메뉴 조회 */
WITH CTE (COM_ID, MENU_ID, UP_MENU_ID, MENU_NM, SORT_SEQ, USE_FG, LVL, T) AS (
SELECT COM_ID
,MENU_ID
,UP_MENU_ID
,MENU_NM
,SORT_SEQ
,USE_FG
,0 AS LVL
,LPAD(SORT_SEQ, 5, '0') AS T
FROM COMM_MENU
WHERE COM_ID=#{session.comId}
AND MENU_ID = '0'
UNION ALL
SELECT A.COM_ID
,A.MENU_ID
,A.UP_MENU_ID
,A.MENU_NM
,A.SORT_SEQ
,A.USE_FG
,LVL + 1 AS LVL
,CONCAT(CONCAT(T, '-'), LPAD(A.SORT_SEQ, 5, '0')) AS T
FROM COMM_MENU A
INNER JOIN CTE B ON A.COM_ID=B.COM_ID AND A.UP_MENU_ID = B.MENU_ID
WHERE A.COM_ID= #{session.comId}
)
SELECT A.MENU_ID
,A.UP_MENU_ID
,A.MENU_NM
,A.SORT_SEQ
,A.USE_FG
,A.LVL
,A.UP_MENU_ID AS PARENT_ID
,B.ROLE_ID
,B.COM_ID
,MAX(CASE WHEN C.AUTH_CD = 'R' THEN '1' ELSE '0' END) AS AUTH_CD1
,MAX(CASE WHEN C.AUTH_CD = 'C' THEN '1' ELSE '0' END) AS AUTH_CD2
,MAX(CASE WHEN C.AUTH_CD = 'D' THEN '1' ELSE '0' END) AS AUTH_CD3
,MAX(CASE WHEN C.AUTH_CD = 'U' THEN '1' ELSE '0' END) AS AUTH_CD4
,MAX(CASE WHEN C.AUTH_CD = 'S' THEN '1' ELSE '0' END) AS AUTH_CD5
,MAX(CASE WHEN C.AUTH_CD = 'E' THEN '1' ELSE '0' END) AS AUTH_CD6
FROM CTE A /* 메뉴Tree */
LEFT OUTER JOIN COMM_MENU_ROLE B /* 역할별메뉴 */ ON (A.COM_ID=B.COM_ID AND B.ROLE_ID = #{roleId} AND A.MENU_ID = B.MENU_ID)
LEFT OUTER JOIN COMM_MENU_ROLE_AUTH C /* 역할별메뉴권한 */ ON (B.COM_ID = C.COM_ID AND B.ROLE_ID = C.ROLE_ID AND B.MENU_ID = C.MENU_ID)
WHERE A.COM_ID= #{session.comId}
AND B.ROLE_ID IS NOT NULL
GROUP
BY A.MENU_ID, A.UP_MENU_ID, A.MENU_NM, A.SORT_SEQ, A.USE_FG
,A.LVL,A.UP_MENU_ID, B.ROLE_ID, B.COM_ID, A.T
ORDER
BY A.T
</select>
<select id="selectUnAsgnMenu" resultType="camelHashMap">
/* comm.menuRoleMng.selectUnAsgnMenu : 역할별메뉴 조회 */
WITH CTE (MENU_ID, UP_MENU_ID, COM_ID, MENU_NM, SORT_SEQ, USE_FG, LVL, T) AS (
SELECT MENU_ID
,UP_MENU_ID
,COM_ID
,MENU_NM
,SORT_SEQ
,USE_FG
,0 AS LVL
,LPAD(SORT_SEQ, 5, '0') AS T
FROM COMM_MENU
WHERE COM_ID= #{session.comId}
AND MENU_ID = '0'
UNION ALL
SELECT A.MENU_ID
,A.UP_MENU_ID
,A.COM_ID
,A.MENU_NM
,A.SORT_SEQ
,A.USE_FG
,LVL + 1 AS LVL
,CONCAT(CONCAT(T, '-'), LPAD(A.SORT_SEQ, 5, '0')) AS T
FROM COMM_MENU A
INNER JOIN CTE B ON A.UP_MENU_ID = B.MENU_ID
WHERE A.COM_ID=#{session.comId}
)
SELECT A.MENU_ID
,A.UP_MENU_ID
,A.MENU_NM
,A.SORT_SEQ
,A.USE_FG
,A.LVL
,A.UP_MENU_ID AS PARENT_ID
,A.COM_ID
,CASE WHEN B.MENU_ID IS NULL THEN '0'
ELSE '1'
END AS IS_EXISTS
FROM CTE A /* 메뉴Tree */
LEFT OUTER JOIN COMM_MENU_ROLE B ON B.ROLE_ID = #{roleId} AND A.COM_ID = B.COM_ID AND A.MENU_ID = B.MENU_ID
WHERE A.COM_ID=#{session.comId}
ORDER
BY A.T
</select>
<update id="updateMenuRole">
/* comm.menuRoleMng.updateMenuRole : 역할별메뉴 수정 */
MERGE INTO COMM_MENU_ROLE
USING DUAL
ON
(
ROLE_ID = #{roleId}
AND COM_ID = #{session.comId}
AND MENU_ID = #{menuId}
)
WHEN MATCHED THEN
UPDATE SET PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
WHEN NOT MATCHED THEN
INSERT
(
ROLE_ID
,COM_ID
,MENU_ID
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES
(
#{roleId}
,#{session.comId}
,#{menuId}
,#{rmrk}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</update>
<update id="updateCommMenu">
/* comm.menuRoleMng.updateCommMenu : 역할별 메뉴 사용여부 수정 */
UPDATE COMM_MENU
<trim prefix="SET" prefixOverrides=",">
PROC_DTTM = sysdate
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="procUserNo != null and procUserNo != ''">
,PROC_USER_NO = #{procUserNo}
</if>
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND MENU_ID = #{menuId}
</update>
<delete id="deleteMenuRole">
/* comm.menuRoleMng.deleteMenuRole : 역할별메뉴 삭제 */
DELETE
FROM COMM_MENU_ROLE
WHERE 1=1
AND ROLE_ID = #{roleId}
AND COM_ID = #{comId}
AND MENU_ID = #{menuId}
</delete>
<insert id="insertMenuRoleAuth">
/* comm.menuRoleMng.insertMenuRoleAuth : 역할별 메뉴 권한 등록 */
MERGE INTO COMM_MENU_ROLE_AUTH
USING DUAL
ON
(
COM_ID = #{session.comId}
AND ROLE_ID = #{roleId}
AND MENU_ID = #{menuId}
AND AUTH_CD = #{authCd}
)
WHEN MATCHED THEN
UPDATE SET PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
WHEN NOT MATCHED THEN
INSERT
(
COM_ID
,ROLE_ID
,MENU_ID
,AUTH_CD
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES
(
#{session.comId}
,#{roleId}
,#{menuId}
,#{authCd}
,#{rmrk}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<delete id="deleteMenuRoleAuth">
/* comm.menuRoleMng.deleteMenuRoleAuth : 역할별 메뉴 권한 삭제 */
DELETE
FROM COMM_MENU_ROLE_AUTH
WHERE 1=1
AND COM_ID = #{session.comId}
AND ROLE_ID = #{roleId}
AND MENU_ID = #{menuId}
<if test="authCd != null and authCd != ''">
AND AUTH_CD = #{authCd}
</if>
</delete>
</mapper>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.auth.roleMng">
<insert id="insertRole">
/* comm.roleMng.insertRole : 역할 등록 */
<selectKey keyProperty="roleId" resultType="java.lang.String" order="BEFORE">
SELECT /* 프로그램ID 채번 */
CONCAT('ROL', LPAD(SEQ_COMM_ROLE.nextval, 4,'0')) FROM DUAL
</selectKey>
INSERT INTO COMM_ROLE
(
COM_ID
,ROLE_ID
,ROLE_NM
,USE_FG
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{session.comId}
,#{roleId}
,#{roleNm}
,#{useFg}
,#{rmrk}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateRole">
/* comm.roleMng.updateRole : 역할 수정 */
UPDATE COMM_ROLE
<trim prefix="SET" prefixOverrides=",">
<if test="roleNm != null and roleNm != ''">
,ROLE_NM = #{roleNm}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="rmrk != null">
,RMRK = #{rmrk}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND ROLE_ID = #{roleId}
</update>
<delete id="deleteRole">
/* comm.roleMng.deleteRole : 역할 삭제 */
DELETE
FROM COMM_ROLE
WHERE 1=1
AND COM_ID = #{session.comId}
AND ROLE_ID = #{roleId}
</delete>
<select id="selectRole" resultType="com.lsitc.fems.comm.auth.vo.RoleVo">
/* comm.roleMng.selectRole : 역할 조회 */
SELECT
COM_ID
,ROLE_ID
,ROLE_NM
,USE_FG
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_ROLE
WHERE 1=1
AND COM_ID = #{session.comId}
<if test="roleId != null and roleId != ''">
AND ROLE_ID LIKE CONCAT(CONCAT('%', #{roleId}), '%')
</if>
<if test="roleNm != null and roleNm != ''">
AND ROLE_NM LIKE CONCAT(CONCAT('%', #{roleNm}), '%')
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
ORDER BY ROLE_ID, ROLE_NM, USE_FG
</select>
</mapper>

View File

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.auth.userRoleMng">
<select id="selectRoleUser" resultType="camelHashMap">
/* comm.userRoleMng.selectRoleUser : 역할별사용자 조회 */
SELECT
A.COM_ID
,A.ROLE_ID
,D.ROLE_NM AS ROLE_NM
,A.USER_NO
,B.USER_NM
,A.APLY_START_DT
,A.APLY_END_DT
,A.RMRK
,A.PROC_USER_NO
,C.USER_NM AS PROC_USER_NM
,A.PROC_DTTM
FROM COMM_ROLE_USER A /* 역할별사용자 */
INNER JOIN COMM_USER B /* 사용자 */ ON A.COM_ID = B.COM_ID AND A.USER_NO = B.USER_NO
INNER JOIN COMM_USER C /* 사용자 */ ON A.COM_ID = C.COM_ID AND A.PROC_USER_NO = C.USER_NO
INNER JOIN COMM_ROLE D /* 역할 */ ON A.COM_ID = D.COM_ID AND A.ROLE_ID = D.ROLE_ID
WHERE 1=1
AND A.COM_ID = #{session.comId}
<if test="roleId != null and roleId != ''">
AND A.ROLE_ID = #{roleId}
</if>
<if test="userNo != null and userNo != ''">
AND A.USER_NO = #{userNo}
</if>
<if test="aplyStartDt != null and aplyStartDt != ''">
AND A.APLY_START_DT = #{aplyStartDt}
</if>
<if test="aplyEndDt != null and aplyEndDt != ''">
AND A.APLY_END_DT = #{aplyEndDt}
</if>
</select>
<select id="selectUnAsgnRoleByUser" resultType="com.lsitc.fems.comm.auth.vo.RoleUserVo">
/* comm.userRoleMng.selectUnAsgnRoleByUser : 사용자의 미배정 역할 조회 */
SELECT A.ROLE_ID
, A.ROLE_NM
, #{userNo} AS USER_NO
, A.COM_ID
FROM COMM_ROLE A /* 역할 */
WHERE 1=1
AND A.COM_ID = #{session.comId}
AND NOT EXISTS(
SELECT 1
FROM COMM_ROLE_USER X /* 역할별사용자 */
WHERE 1=1
AND X.COM_ID = #{session.comId}
AND X.USER_NO = #{userNo}
AND X.ROLE_ID = A.ROLE_ID
)
</select>
<select id="selectAsgnRoleByUser" resultType="com.lsitc.fems.comm.auth.vo.RoleUserVo">
/* comm.userRoleMng.selectAsgnRoleByUser : 사용자의 역할 조회 */
SELECT B.ROLE_ID
,B.ROLE_NM
,A.USER_NO
,A.APLY_START_DT
,A.APLY_END_DT
,A.COM_ID
FROM COMM_ROLE_USER A /* 역할별사용자 */
INNER JOIN COMM_ROLE B /* 역할 */ ON A.ROLE_ID = B.ROLE_ID AND A.COM_ID = B.COM_ID
WHERE 1=1
AND A.COM_ID = #{session.comId}
AND A.USER_NO = #{userNo}
</select>
<select id="selectAsgnMenuByUser" resultType="com.lsitc.fems.comm.base.vo.MenuVo">
/* comm.userRoleMng.selectAsgnMenuByUser : 사용자의 메뉴 조회 */
WITH MENU_LIST AS (
SELECT /* comm.menu.selectAuthMenu 권한이 있는 메뉴 목록 */
D.MENU_ID /* 메뉴ID */
, D.MENU_NM /* 메뉴명 */
, D.UP_MENU_ID /* 상위메뉴ID */
, E.URL /* URL */
, D.SORT_SEQ
FROM COMM_ROLE_USER A /* 역할별사용자 */
INNER JOIN COMM_MENU_ROLE B ON ( A.ROLE_ID = B.ROLE_ID ) /* 역할별메뉴 */
INNER JOIN COMM_MENU D ON ( B.MENU_ID = D.MENU_ID ) /* 메뉴 */
LEFT OUTER JOIN COMM_PRGM E ON ( D.PRGM_ID = E.PRGM_ID ) /* 프로그램 */
WHERE 1=1
/* essential */
AND A.USER_NO = #{userNo} /* USER_NO */
AND D.COM_ID = #{session.comId} /* */
AND SYSDATE BETWEEN A.APLY_START_DT AND A.APLY_END_DT /* 현재 유효한것만 */
AND D.USE_FG = '1' /* 메뉴-사용여부 Y인것만 */
GROUP
BY D.MENU_ID
,D.MENU_NM
,D.UP_MENU_ID
,E.URL
,D.SORT_SEQ
), MENU_TREE (MENU_ID, MENU_NM, UP_MENU_ID, URL, LVL, SORT_SEQ) AS (
SELECT
'0' AS MENU_ID ,
'ROOT' AS MENU_NM ,
'' AS UP_MENU_ID ,
'' AS URL ,
0 AS LVL ,
'00000' AS SORT_SEQ
FROM DUAL
UNION ALL
SELECT A.MENU_ID
,A.MENU_NM
,A.UP_MENU_ID
,A.URL
,B.LVL + 1 AS LVL
,CONCAT(CONCAT(B.SORT_SEQ, '-'), LPAD(A.SORT_SEQ, 5, '0')) AS SORT_SEQ
FROM MENU_LIST A
INNER
JOIN MENU_TREE B ON A.UP_MENU_ID = B.MENU_ID
)
SELECT
MENU_ID
,MENU_NM
,UP_MENU_ID
,URL
,lvl
FROM MENU_TREE
ORDER
BY SORT_SEQ
</select>
<insert id="insertRoleUser">
/* comm.userRoleMng.insertRoleUser : 역할별사용자 등록 */
INSERT INTO COMM_ROLE_USER
(
COM_ID
,ROLE_ID
,USER_NO
,APLY_START_DT
,APLY_END_DT
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{session.comId}
,#{roleId}
,#{userNo}
,#{aplyStartDt}
,#{aplyEndDt}
,#{rmrk}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateRoleUser">
/* comm.userRoleMng.updateRoleUser : 역할별사용자 수정 */
UPDATE COMM_ROLE_USER
<trim prefix="SET" prefixOverrides=",">
<if test="aplyStartDt != null">
,APLY_START_DT = #{aplyStartDt}
</if>
<if test="aplyEndDt != null">
,APLY_END_DT = #{aplyEndDt}
</if>
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND ROLE_ID = #{roleId}
AND USER_NO = #{userNo}
</update>
<delete id="deleteRoleUser">
/* comm.userRoleMng.deleteRoleUser : 역할별사용자 삭제 */
DELETE
FROM COMM_ROLE_USER
WHERE 1=1
AND COM_ID = #{session.comId}
AND ROLE_ID = #{roleId}
AND USER_NO = #{userNo}
</delete>
<select id="selectUser" resultType="com.lsitc.fems.comm.auth.vo.UserVo">
/* comm.user.selectUser : 사용자 조회 */
SELECT A.COM_ID
,A.DEPT_ID
,A.USER_NO
,A.USER_NM
,A.EMAIL
,A.MOBLPHON
,A.OFFICE_TELNO
,A.FAX_TELNO
,A.POST_NO
,A.POST_ADRES
,A.ADRES_DETAIL
,A.REG_USER_NO
,A.REG_DTTM
,A.PROC_USER_NO
,A.PROC_DTTM
,B.USER_LOGIN_ID
,'' AS USER_PSWD
,A.BLOC_ID
FROM COMM_USER A
LEFT OUTER JOIN COMM_LOGIN_INFO B ON A.USER_NO = B.USER_NO
WHERE 1=1
<if test="comId != null and comId != ''">
AND A.COM_ID = #{session.comId}
</if>
<if test="blocId != null and blocId != ''">
AND A.BLOC_ID = #{blocId}
</if>
<if test="deptCd != null and deptCd != ''">
AND A.DEPT_ID = #{deptId}
</if>
<if test="userNo != null and userNo != ''">
AND A.USER_NO LIKE ('%' || #{userNo} || '%')
</if>
<if test="userNm != null and userNm != ''">
AND A.USER_NM LIKE ('%' || #{userNm} || '%')
</if>
<if test="userLoginId != null and userLoginId != ''">
AND B.USER_LOGIN_ID LIKE ('%' || #{userLoginId} || '%')
</if>
order by A.USER_NO * 1
</select>
<insert id="insertUser">
/* comm.user.insertUser : 사용자 등록 */
<selectKey resultType="string" keyProperty="userNo" order="BEFORE">
SELECT NVL(MAX(USER_NO * 1), 0) + 1 FROM COMM_USER
</selectKey>
INSERT INTO COMM_USER
(
COM_ID
,DEPT_ID
,BLOC_ID
,USER_NO
,USER_NM
,EMAIL
,MOBLPHON
,OFFICE_TELNO
,FAX_TELNO
,POST_NO
,POST_ADRES
,ADRES_DETAIL
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{session.comId}
,#{deptId}
,#{blocId}
,#{userNo}
,#{userNm}
,#{email}
,#{moblphon}
,#{officeTelno}
,#{faxTelno}
,#{postNo}
,#{postAdres}
,#{adresDetail}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateUser">
/* comm.userRoleMng.updateUser : 사용자 수정 */
UPDATE COMM_USER
<trim prefix="SET" prefixOverrides=",">
<if test="blocId != null and blocId != ''">
,BLOC_ID = #{blocId}
</if>
<if test="userNm != null">
,USER_NM = #{userNm}
</if>
<if test="email != null">
,EMAIL = #{email}
</if>
<if test="moblphon != null">
,MOBLPHON = #{moblphon}
</if>
<if test="officeTelno != null">
,OFFICE_TELNO = #{officeTelno}
</if>
<if test="faxTelno != null">
,FAX_TELNO = #{faxTelno}
</if>
<if test="postNo != null">
,POST_NO = #{postNo}
</if>
<if test="postAdres != null">
,POST_ADRES = #{postAdres}
</if>
<if test="adresDetail != null">
,ADRES_DETAIL = #{adresDetail}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND USER_NO = #{userNo}
<if test="deptId != null">
AND DEPT_ID = #{deptId}
</if>
</update>
<delete id="deleteUser">
/* comm.userRoleMng.deleteUser : 사용자 삭제 */
DELETE
FROM COMM_USER
WHERE 1=1
AND COM_ID = #{session.comId}
AND USER_NO = #{userNo}
<if test="deptId != null">
AND DEPT_ID = #{deptId}
</if>
</delete>
<select id="selectUserPop" resultType="camelHashMap">
/* comm.userRoleMng.selectUserPop : [팝업]사용자 조회 */
SELECT A.COM_ID
/* ,A.DEPT_ID
,C.DEPT_NM */
,A.USER_NO
,A.USER_NM
,A.EMAIL
,A.MOBLPHON
,A.OFFICE_TELNO
,B.USER_LOGIN_ID
FROM COMM_USER A
INNER JOIN COMM_LOGIN_INFO B ON A.USER_NO = B.USER_NO
/* INNER JOIN COMM_DEPT_CD C ON A.DEPT_ID = C.DEPT_ID */
WHERE 1=1
AND A.COM_ID = #{session.comId}
<if test="deptCd != null and deptCd != ''">
AND A.DEPT_ID = #{deptId}
</if>
<if test="userNo != null and userNo != ''">
AND A.USER_NO LIKE ('%' || #{userNo} || '%')
</if>
<if test="userNm != null and userNm != ''">
AND A.USER_NM LIKE ('%' || #{userNm} || '%')
</if>
<if test="userLoginId != null and userLoginId != ''">
AND B.USER_LOGIN_ID LIKE ('%' || #{userLoginId} || '%')
</if>
</select>
<select id="selectComparePswd" resultType="camelHashMap">
SELECT
CASE WHEN A.USER_PSWD = #{userPswd} THEN 'TRUE' ELSE 'FALSE' END AS USER_COMPARE
FROM COMM_LOGIN_INFO A
JOIN COMM_USER B
WHERE B.COM_ID = #{session.comId}
AND B.USER_NO = #{session.userNo}
AND A.USER_NO = B.USER_NO
</select>
<update id="updatePswd">
UPDATE COMM_LOGIN_INFO SET
USER_PSWD = #{userPswd}
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
WHERE USER_NO = #{session.userNo}
</update>
</mapper>

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.apndFile">
<select id="selectApndFile" resultType="camelHashMap">
/* comm.apndFile.selectApndFile : 파일 정보 조회 */
SELECT
AA.APND_FILE_UUID,
AA.APND_FILE_ID,
AA.APND_FILE_NM,
AA.APND_FILE_EXT,
AA.APND_FILE_SIZE,
AA.APND_FILE_PATH,
AA.USE_FG,
AA.SORT_SEQ,
AA.RMRK,
AA.REG_USER_NO,
AA.REG_DTTM,
AA.PROC_USER_NO,
AA.PROC_DTTM
FROM comm_apnd_file AA
INNER JOIN comm_apnd_file_grp BB
ON AA.APND_FILE_UUID = BB.APND_FILE_UUID
WHERE
1=1
<if test=" apndFileId == null ">
AND BB.APND_FILE_UUID = #{apndFileUuid}
</if>
<if test=" apndFileId != null ">
AND AA.APND_FILE_ID = #{apndFileId}
</if>
AND AA.USE_FG = '1'
</select>
<update id="deleteApndFile">
UPDATE
comm_apnd_file
SET
USE_FG = '0'
WHERE
APND_FILE_ID = #{apndFileId}
</update>
<insert id="insertApndFileGrp">
/* comm.apndFile.insertApndFileGrp : apndFileGrp 삽입 */
INSERT INTO comm_apnd_file_grp (
APND_FILE_UUID
<!-- , MENU_ID -->
<!-- , USE_TABLE_NM -->
, USE_FG
<!-- , RMRK -->
, REG_USER_NO
, REG_DTTM
, PROC_USER_NO
, PROC_DTTM
)
VALUES(
#{apndFileUuid},
<!-- #{menuId}, -->
<!-- #{useTableNm}, -->
'1',
<!-- #{useFg}, -->
<!-- #{rmrk}, -->
#{session.userNo},
SYSDATE,
#{session.userNo},
SYSDATE
)
</insert>
<insert id="insertApndFile">
/* comm.apndFile.insertApndFile : apndFile 삽입 */
INSERT INTO comm_apnd_file (
APND_FILE_UUID
, APND_FILE_ID
, APND_FILE_NM
<!-- /* 파일 확장자는 FILE_NM에 한꺼번에 저장 */ -->
, APND_FILE_EXT
, APND_FILE_SIZE
, APND_FILE_PATH
, USE_FG
<!-- , SORT_SEQ -->
<!-- , RMRK -->
, REG_USER_NO
, REG_DTTM
, PROC_USER_NO
, PROC_DTTM
)
VALUES(
#{apndFileUuid},
#{apndFileId},
#{apndFileNm},
#{apndFileExt},
#{apndFileSize},
#{apndFilePath},
'1',
<!-- #{useFg}, -->
<!-- #{sortSeq}, -->
<!-- #{rmrk}, -->
#{session.userNo},
SYSDATE,
#{session.userNo},
SYSDATE
)
</insert>
<delete id="deleteCommApndFileGrp">
/* comm.ConstructionWorkList.deleteCommApndFileGrp : 게시물 마다의 첨부파일 삭제 */
DELETE
FROM comm_apnd_file_grp
WHERE
APND_FILE_UUID = #{apndFileUuid}
</delete>
<delete id="deleteCommApndFile">
/* comm.ConstructionWorkList.deleteCommApndFile : 게시물의 각각의 첨부파일 삭제 */
DELETE
FROM comm_apnd_file
WHERE
APND_FILE_UUID = #{apndFileUuid}
<if test="apndFileId != null and apndFileId != '' ">
AND APND_FILE_ID = #{apndFileId}
</if>
</delete>
</mapper>

View File

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.batchLog">
<insert id="insertBatchLog">
/* comm.batchLog.insertBatchLog : 배치 수행 로그 등록 */
INSERT INTO COMM_BATCH_LOG
(
BATCH_LOG_SEQ
,BATCH_ID
,EXEC_DT
,EXEC_RSLT_CD
,EXEC_LOG_CONT_1
,EXEC_LOG_CONT_2
,BATCH_STRT_DTTM
,BATCH_END_DTTM
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{batchLogSeq}
,#{batchId}
,#{execDt}
,#{execRsltCd}
,#{execLogCont1}
,#{execLogCont2}
,#{batchStrtDttm}
,#{batchEndDttm}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateBatchLog">
/* comm.batchLog.updateBatchLog : 배치 수행 로그 수정 */
UPDATE COMM_BATCH_LOG
<trim prefix="SET" prefixOverrides=",">
<if test="batchId != null and batchId != ''">
,BATCH_ID = #{batchId}
</if>
<if test="execDt != null and execDt != ''">
,EXEC_DT = #{execDt}
</if>
<if test="execRsltCd != null and execRsltCd != ''">
,EXEC_RSLT_CD = #{execRsltCd}
</if>
<if test="execLogCont1 != null and execLogCont1 != ''">
,EXEC_LOG_CONT_1 = #{execLogCont1}
</if>
<if test="execLogCont2 != null and execLogCont2 != ''">
,EXEC_LOG_CONT_2 = #{execLogCont2}
</if>
<if test="batchStrtDttm != null and batchStrtDttm != ''">
,BATCH_STRT_DTTM = #{batchStrtDttm}
</if>
<if test="batchEndDttm != null and batchEndDttm != ''">
,BATCH_END_DTTM = #{batchEndDttm}
</if>
,PROC_USER_No = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND BATCH_LOG_SEQ = #{batchLogSeq}
</update>
<delete id="deleteBatchLog">
/* comm.batchLog.deleteBatchLog : 배치 수행 로그 삭제 */
DELETE
FROM COMM_BATCH_LOG
WHERE 1=1
AND BATCH_LOG_SEQ = #{batchLogSeq}
</delete>
<select id="selectBatchLog" resultType="camelHashMap">
/* comm.batchLog.selectBatchLog : 배치 수행 로그 조회 */
SELECT * FROM
(
SELECT
BATCH_LOG_SEQ
,BATCH_ID
,(
SELECT MAX(CBM.BATCH_NM)
FROM COMM_BATCH_MGNT CBM
WHERE
CBM.BATCH_ID = CBL.BATCH_ID
) AS BATCH_NM
,EXEC_DT
,EXEC_RSLT_CD
,EXEC_LOG_CONT_1
,EXEC_LOG_CONT_2
-- ,CONCAT(NVL(EXEC_LOG_CONT_1, ''), NVL(EXEC_LOG_CONT_2, '')) as EXEC_LOG_CONT
,BATCH_STRT_DTTM
,BATCH_END_DTTM
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_BATCH_LOG CBL
) T
WHERE 1=1
<if test="batchLogSeq != null and batchLogSeq != ''">
AND BATCH_LOG_SEQ = #{batchLogSeq}
</if>
<if test="batchId != null and batchId != ''">
AND BATCH_ID = #{batchId}
</if>
<if test="batchNm != null and batchNm != ''">
AND BATCH_NM like ('%' || #{batchNm} || '%')
</if>
<if test="execDt != null and execDt != ''">
AND EXEC_DT = #{execDt}
</if>
<if test="execRsltCd != null and execRsltCd != ''">
AND EXEC_RSLT_CD = #{execRsltCd}
</if>
<if test="execLogCont1 != null and execLogCont1 != ''">
AND EXEC_LOG_CONT_1 = #{execLogCont1}
</if>
<if test="execLogCont2 != null and execLogCont2 != ''">
AND EXEC_LOG_CONT_2 = #{execLogCont2}
</if>
<if test="batchStrtDttm != null and batchStrtDttm != ''">
AND BATCH_STRT_DTTM = #{batchStrtDttm}
</if>
<if test="batchEndDttm != null and batchEndDttm != ''">
AND BATCH_END_DTTM = #{batchEndDttm}
</if>
AND EXEC_DT
BETWEEN #{fromDt} AND #{fromDt}
ORDER BY EXEC_DT DESC, BATCH_STRT_DTTM DESC
</select>
<select id="getBatchLogSeq" resultType="int">
SELECT
NEXTVAL(SEQ_COMM_BATCH_LOG_01)
FROM DUAL
</select>
</mapper>

View File

@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.batchMng">
<insert id="insertBatchMng">
/* comm.batchMng.insertBatchMng : 배치 관리 등록 */
INSERT INTO COMM_BATCH_MGNT
(
BATCH_ID
,BATCH_NM
,BATCH_EXEC_TP
,BATCH_DUP_EXEC_FG
,EXEC_CYCL_SEC_VAL
,EXEC_CYCL_MIN_VAL
,EXEC_CYCL_HH_VAL
,EXEC_CYCL_DD_VAL
,EXEC_CYCL_MM_VAL
,EXEC_CYCL_WDAY_VAL
,EXEC_CYCL_YYYY_VAL
,EXEC_CMND
,EXEC_CMND_PATH
,FLLW_BATCH_ID
,REF_VAL_1
,REF_VAL_2
,REF_VAL_3
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
(SEQ_COMM_BATCH_ID.NEXTVAL)
,#{batchNm}
,#{batchExecTp}
,#{batchDupExecFg}
,#{execCyclSecVal}
,#{execCyclMinVal}
,#{execCyclHhVal}
,#{execCyclDdVal}
,#{execCyclMmVal}
,#{execCyclWdayVal}
,#{execCyclYyyyVal}
,#{execCmnd}
,#{execCmndPath}
,#{fllwBatchId}
,#{refVal1}
,#{refVal2}
,#{refVal3}
,#{useFg}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateBatchMng">
/* comm.batchMng.updateBatchMng : 배치 관리 수정 */
UPDATE COMM_BATCH_MGNT
<trim prefix="SET" prefixOverrides=",">
<if test="batchNm != null and batchNm != ''">
,BATCH_NM = #{batchNm}
</if>
<if test="batchExecTp != null and batchExecTp != ''">
,BATCH_EXEC_TP = #{batchExecTp}
</if>
<if test="batchDupExecFg != null and batchDupExecFg != ''">
,BATCH_DUP_EXEC_FG = #{batchDupExecFg}
</if>
<if test="execCyclSecVal != null and execCyclSecVal != ''">
,EXEC_CYCL_SEC_VAL = #{execCyclSecVal}
</if>
<if test="execCyclMinVal != null and execCyclMinVal != ''">
,EXEC_CYCL_MIN_VAL = #{execCyclMinVal}
</if>
<if test="execCyclHhVal != null and execCyclHhVal != ''">
,EXEC_CYCL_HH_VAL = #{execCyclHhVal}
</if>
<if test="execCyclDdVal != null and execCyclDdVal != ''">
,EXEC_CYCL_DD_VAL = #{execCyclDdVal}
</if>
<if test="execCyclMmVal != null and execCyclMmVal != ''">
,EXEC_CYCL_MM_VAL = #{execCyclMmVal}
</if>
<if test="execCyclWdayVal != null and execCyclWdayVal != ''">
,EXEC_CYCL_WDAY_VAL = #{execCyclWdayVal}
</if>
<if test="execCyclYyyyVal != null and execCyclYyyyVal != ''">
,EXEC_CYCL_YYYY_VAL = #{execCyclYyyyVal}
</if>
<if test="execCmnd != null and execCmnd != ''">
,EXEC_CMND = #{execCmnd}
</if>
<if test="execCmndPath != null and execCmndPath != ''">
,EXEC_CMND_PATH = #{execCmndPath}
</if>
,FLLW_BATCH_ID = #{fllwBatchId}
,REF_VAL_1 = #{refVal1}
,REF_VAL_2 = #{refVal2}
,REF_VAL_3 = #{refVal3}
,USE_FG = #{useFg}
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND BATCH_ID = #{batchId}
</update>
<delete id="deleteBatchMng">
/* comm.batchMng.deleteBatchMng : 배치 관리 삭제 */
DELETE
FROM COMM_BATCH_MGNT
WHERE 1=1
AND BATCH_ID = #{batchId}
</delete>
<select id="selectBatchMng" resultType="camelHashMap">
/* comm.batchMng.selectBatchMng : 배치 관리 조회 */
SELECT
BATCH_ID
,BATCH_NM
,BATCH_EXEC_TP
,BATCH_DUP_EXEC_FG
,EXEC_CYCL_SEC_VAL
,EXEC_CYCL_MIN_VAL
,EXEC_CYCL_HH_VAL
,EXEC_CYCL_DD_VAL
,EXEC_CYCL_MM_VAL
,EXEC_CYCL_WDAY_VAL
,EXEC_CYCL_YYYY_VAL
,EXEC_CMND
,EXEC_CMND_PATH
,FLLW_BATCH_ID
,REF_VAL_1
,REF_VAL_2
,REF_VAL_3
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_BATCH_MGNT
WHERE 1=1
<if test="batchId != null and batchId != ''">
AND BATCH_ID = #{batchId}
</if>
<if test="batchNm != null and batchNm != ''">
AND BATCH_NM like ('%' || #{batchNm} || '%')
</if>
<if test="batchExecTp != null and batchExecTp != ''">
AND BATCH_EXEC_TP = #{batchExecTp}
</if>
<if test="batchDupExecFg != null and batchDupExecFg != ''">
AND BATCH_DUP_EXEC_FG = #{batchDupExecFg}
</if>
<if test="execCyclSecVal != null and execCyclSecVal != ''">
AND EXEC_CYCL_SEC_VAL = #{execCyclSecVal}
</if>
<if test="execCyclMinVal != null and execCyclMinVal != ''">
AND EXEC_CYCL_MIN_VAL = #{execCyclMinVal}
</if>
<if test="execCyclHhVal != null and execCyclHhVal != ''">
AND EXEC_CYCL_HH_VAL = #{execCyclHhVal}
</if>
<if test="execCyclDdVal != null and execCyclDdVal != ''">
AND EXEC_CYCL_DD_VAL = #{execCyclDdVal}
</if>
<if test="execCyclMmVal != null and execCyclMmVal != ''">
AND EXEC_CYCL_MM_VAL = #{execCyclMmVal}
</if>
<if test="execCyclWdayVal != null and execCyclWdayVal != ''">
AND EXEC_CYCL_WDAY_VAL = #{execCyclWdayVal}
</if>
<if test="execCyclYyyyVal != null and execCyclYyyyVal != ''">
AND EXEC_CYCL_YYYY_VAL = #{execCyclYyyyVal}
</if>
<if test="execCmnd != null and execCmnd != ''">
AND EXEC_CMND = #{execCmnd}
</if>
<if test="execCmndPath != null and execCmndPath != ''">
AND EXEC_CMND_PATH = #{execCmndPath}
</if>
<if test="refVal1 != null and refVal1 != ''">
AND REF_VAL_1 = #{refVal1}
</if>
<if test="refVal2 != null and refVal2 != ''">
AND REF_VAL_2 = #{refVal2}
</if>
<if test="refVal3 != null and refVal3 != ''">
AND REF_VAL_3 = #{refVal3}
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
ORDER BY CAST(BATCH_ID AS NUMBER)
</select>
<select id="selectFllwBatchList" resultType="camelHashMap">
/* comm.batchMng.selectFllwBatchList : 후속 배치리스트 */
SELECT *
FROM (
SELECT
'' AS BATCH_ID,
'' AS BATCH_NM,
'없음' AS BATCH_ID_NM
FROM DUAL
UNION ALL
SELECT
BATCH_ID, BATCH_NM,
CONCAT(CONCAT('[', BATCH_ID), CONCAT('] ', BATCH_NM)) AS BATCH_ID_NM
FROM COMM_BATCH_MGNT
WHERE 1=1
<if test="batchId != null and batchId != ''">
AND BATCH_ID != #{batchId}
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
)
ORDER BY TO_NUMBER(NVL(BATCH_ID, 0))
</select>
</mapper>

View File

@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.calendarMng">
<update id="updateComId">
/* comm.calendarMng.updateWorkcald : 근무달력 수정 */
UPDATE COMM_WORKCALD
<trim prefix="SET" prefixOverrides=",">
<if test="scheFg != null and scheFg != ''">
,SCHE_FG = #{scheFg} -- 제거고려..
</if>
,HLDY_FG = #{hldyFg}
<if test="dow != null and dow != ''">
,DOW = #{dow}
</if>
<if test="weekCt != null and weekCt != ''">
,WEEK_CT = #{weekCt}
</if>
,HLDY_NM = #{hldyNm}
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{blocId}
AND DT = #{dt}
</update>
<select id="selectWorkCald" resultType="com.lsitc.fems.comm.base.vo.WorkCaldVo">
/* comm.calendarMng.selectWorkCald : 근무달력 조회 */
SELECT COM_ID
,BLOC_ID
,SCHE_FG
,DT
,HLDY_FG
,DOW
,WEEK_CT
,HLDY_NM
,RMRK
FROM COMM_WORKCALD
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{blocId}
AND DT BETWEEN TO_DATE((substr(#{yymm}, 1,4) || '-' || substr(#{yymm}, 5,2) || '-01'),'YYYY-MM-DD')
AND LAST_DAY(TO_DATE(substr(#{yymm}, 1,4) || '-' || substr(#{yymm}, 5,2) || '-01','YYYY-MM-DD'))
</select>
<select id="selectWorkcaldAll" resultType="com.lsitc.fems.comm.base.vo.WorkCaldVo">
/* comm.calendarMng.selectWorkcald : 특정 기간 및 월에 대한 휴일 목록 조회 */
SELECT
COM_ID
,BLOC_ID
,DT
,SCHE_FG
,HLDY_FG
,DOW
,WEEK_CT
,HLDY_NM
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_WORKCALD
WHERE 1=1
AND COM_ID = #{session.comId}
<if test="blocId != null and blocId != ''">
AND BLOC_ID = #{blocId}
</if>
<if test="dt != null and dt != ''">
AND DT = #{dt}
</if>
<if test="dtLike != null and dtLike != ''">
AND DT LIKE #{dtLike} + '%'
</if>
<if test="startDt != null and startDt != '' and endDt != null and endDt != ''">
AND DT BETWEEN #{startDt} AND #{endDt}
</if>
<if test="scheFg != null and scheFg != ''">
AND SCHE_FG = #{scheFg}
</if>
<if test="hldyFg != null and hldyFg != ''">
AND HLDY_FG = #{hldyFg}
</if>
<if test="dow != null and dow != ''">
AND DOW = #{dow}
</if>
<if test="weekCt != null and weekCt != ''">
AND WEEK_CT = #{weekCt}
</if>
<if test="hldyNm != null and hldyNm != ''">
AND HLDY_NM = #{hldyNm}
</if>
<if test="hldyNmNotInList !=null and hldyNmNotInList.size != 0">
AND HLDY_NM NOT IN
<foreach collection="hldyNmNotInList" item="code" index="index" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="rmrk != null and rmrk != ''">
AND RMRK = #{rmrk}
</if>
<if test="regUserNo != null and regUserNo != ''">
AND REG_USER_NO = #{regUserNo}
</if>
<if test="regDttm != null and regDttm != ''">
AND REG_DTTM = #{regDttm}
</if>
<if test="procUserNo != null and procUserNo != ''">
AND PROC_USER_NO = #{procUserNo}
</if>
<if test="procDttm != null and procDttm != ''">
AND PROC_DTTM = #{procDttm}
</if>
</select>
<select id="selectWorkCaldDetl" resultType="com.lsitc.fems.comm.base.vo.WorkCaldVo">
/* comm.calendarMng.selectWorkCaldDetl : 근무달력 일정 조회 */
SELECT C.COM_ID
,C.BLOC_ID
,C.SCHE_FG
,C.DT
,C.HLDY_FG
,C.DOW
,C.WEEK_CT
,C.HLDY_NM
,C.RMRK
,B.STRT_DT
,B.END_DT
,PLAN_SEQ
,B.PLAN_TITLE
,B.PLAN_COLOR
FROM COMM_WORKCALD C
LEFT JOIN COMM_WORKCALD_DETL B ON C.COM_ID = B.COM_ID AND C.BLOC_ID = B.BLOC_ID AND C.DT BETWEEN B.STRT_DT AND B.END_DT
WHERE 1=1
AND C.COM_ID = #{session.comId}
AND C.BLOC_ID = #{blocId}
AND C.DT BETWEEN TO_DATE((substr(#{yymm}, 1,4) || '-' || substr(#{yymm}, 5,2) || '-01'),'YYYY-MM-DD')
AND LAST_DAY(TO_DATE(substr(#{yymm}, 1,4) || '-' || substr(#{yymm}, 5,2) || '-01','YYYY-MM-DD'))
ORDER BY C.DT, B.PLAN_SEQ
</select>
<select id="selectWorkCaldDetlOne" resultType="com.lsitc.fems.comm.base.vo.WorkCaldVo">
SELECT
C.COM_ID
,C.BLOC_ID
,C.PLAN_SEQ
,C.STRT_DT
,C.STRT_HH
,C.STRT_MM
,C.END_DT
,C.END_HH
,C.END_MM
,C.PLAN_TITLE
,C.PLAN_CNTN
,C.PLAN_COLOR
,C.REG_USER_NO
,C.REG_DTTM
,C.PROC_USER_NO
,C.PROC_DTTM
FROM COMM_WORKCALD_DETL C
WHERE 1=1
AND C.COM_ID = #{session.comId}
AND C.BLOC_ID = #{blocId}
AND C.PLAN_SEQ = #{planSeq}
</select>
<insert id="savePlanDetl">
/* comm.calendarMng.savePlanDetl : 일정 등록 */
INSERT INTO COMM_WORKCALD_DETL(
COM_ID,
BLOC_ID,
PLAN_SEQ,
STRT_DT,
STRT_HH,
STRT_MM,
END_DT,
END_HH,
END_MM,
PLAN_TITLE,
PLAN_CNTN,
PLAN_COLOR,
REG_USER_NO,
REG_DTTM,
PROC_USER_NO,
PROC_DTTM
)VALUES(
#{session.comId},
#{blocId},
(SELECT NVL(MAX(CAST(PLAN_SEQ AS INTEGER))+1,1) AS PLAN_SEQ FROM COMM_WORKCALD_DETL A WHERE A.COM_ID = #{session.comId} AND A.BLOC_ID = #{blocId}),
#{strtDt},
#{strtHh},
#{strtMm},
#{endDt},
#{endHh},
#{endMm},
#{planTitle},
#{planCntn},
#{planColor},
#{session.userNo},
SYSDATE,
#{session.userNo},
SYSDATE
)
</insert>
<update id="updatePlanDetl">
/* comm.calendarMng.updatePlanDetl : 일정 수정 */
UPDATE COMM_WORKCALD_DETL SET
STRT_DT = #{strtDt}
,STRT_HH = #{strtHh}
,STRT_MM = #{strtMm}
,END_DT = #{endDt}
,END_HH = #{endHh}
,END_MM = #{endMm}
,PLAN_TITLE = #{planTitle}
,PLAN_CNTN = #{planCntn}
,PLAN_COLOR = #{planColor}
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{blocId}
AND PLAN_SEQ = #{planSeq}
</update>
<update id="updatePlanDetl_bak">
/* comm.calendarMng.updatePlanDetl : 일정 수정 */
UPDATE COMM_WORKCALD_DETL SET
STRT_DT = STR_TO_DATE(#{strtDt}, '%Y-%m-%d 00:00:00')
,STRT_HH = #{strtHh}
,STRT_MM = #{strtMm}
,END_DT = STR_TO_DATE(#{endDt}, '%Y-%m-%d 00:00:00')
,END_HH = #{endHh}
,END_MM = #{endMm}
,PLAN_TITLE = #{planTitle}
,PLAN_CNTN = #{planCntn}
,PLAN_COLOR = #{planColor}
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{blocId}
AND PLAN_SEQ = #{planSeq}
</update>
<delete id="deletePlanDetl">
/* comm.calendarMng.deletePlanDetl : 일정 삭제 */
DELETE FROM COMM_WORKCALD_DETL
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{blocId}
AND PLAN_SEQ = #{planSeq}
</delete>
<select id="selectWeekWorkCald" resultType="com.lsitc.fems.comm.base.vo.WorkCaldVo">
/* comm.calendarMng.selectWeekWorkCald : 2주 일정조 */
SELECT COM_ID
,BLOC_ID
,SCHE_FG
,DT
,SUBSTR(DT, 9,2) AS DAY
,HLDY_FG
,DOW
,WEEK_CT
,HLDY_NM
,RMRK
FROM COMM_WORKCALD
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{session.blocId}
AND DT BETWEEN ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + -1 ) AND ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 12 )
</select>
<select id="selectWeekWorkCaldDetl" resultType="com.lsitc.fems.comm.base.vo.WorkCaldVo">
/* comm.calendarMng.selectWorkCaldDetl : 근무달력 일정 조회 */
SELECT C.COM_ID
,C.BLOC_ID
,C.SCHE_FG
,C.DT
,SUBSTR(C.DT, 9,2) AS DAY
,C.HLDY_FG
,C.DOW
,C.WEEK_CT
,C.HLDY_NM
,C.RMRK
,B.STRT_DT
,B.END_DT
,PLAN_SEQ
,B.PLAN_TITLE
,B.PLAN_COLOR
FROM COMM_WORKCALD C
LEFT JOIN COMM_WORKCALD_DETL B ON C.COM_ID = B.COM_ID AND C.BLOC_ID = B.BLOC_ID AND C.DT BETWEEN B.STRT_DT AND B.END_DT
WHERE 1=1
AND C.COM_ID = #{session.comId}
AND C.BLOC_ID = #{session.blocId}
AND C.DT BETWEEN ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + -1 ) AND ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 12 )
ORDER BY C.DT, B.PLAN_SEQ
</select>
</mapper>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.comId">
<insert id="insertComId">
/* comm.comId.insertComId : 등록 */
INSERT INTO COMM_COM_CD
(
COM_ID
,COM_NM
,COM_ABBRNM
,USE_FG
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{comId}
,#{comNm}
,#{comAbbrnm}
,#{useFg}
,#{rmrk}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateComId">
/* comm.comId.updateComId : 수정 */
UPDATE COMM_COM_CD
<trim prefix="SET" prefixOverrides=",">
<if test="comNm != null and comNm != ''">
,COM_NM = #{comNm}
</if>
<if test="comAbbrnm != null and comAbbrnm != ''">
,COM_ABBRNM = #{comAbbrnm}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
<if test="regUserNo != null and regUserNo != ''">
,REG_USER_NO = #{session.userNo}
</if>
<if test="regDttm != null and regDttm != ''">
,REG_DTTM = SYSDATE
</if>
<if test="procUserNo != null and procUserNo != ''">
,PROC_USER_NO = #{session.userNo}
</if>
<if test="procDttm != null and procDttm != ''">
,PROC_DTTM = SYSDATE
</if>
</trim>
WHERE 1=1
AND COM_ID = #{comId}
</update>
<delete id="deleteComId">
/* comm.comId.deleteComId : 삭제 */
DELETE
FROM COMM_COM_CD
WHERE 1=1
AND COM_ID = #{comId}
</delete>
<select id="selectComId" resultType="com.lsitc.fems.comm.base.vo.ComIdVo">
/* comm.comId.selectComId : 조회 */
SELECT
COM_ID
,COM_NM
,COM_ABBRNM
,USE_FG
,RMRK
FROM COMM_COM_CD
WHERE 1=1
<if test="comId != null and comId != ''">
AND COM_ID = #{comId}
</if>
<if test="comNm != null and comNm != ''">
AND COM_NM = #{comNm}
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
</select>
</mapper>

View File

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.commCdMng">
<!-- 조회 - 공통 코드 그룹 목록 -->
<select id="selectCommGrpCd" resultType="com.lsitc.core.base.CamelHashMap">
/* comm.commCdMng.selectCommGrpCd : 조회 - 공통 코드 그룹 목록 */
SELECT A.COMM_GRP_CD
,A.COMM_GRP_NM
,A.USE_FG
,A.RMRK
,A.SYS_DIV
FROM COMM_GRP_CD A
WHERE 1=1
<if test='commGrpCd != null and commGrpCd != ""'>
AND COMM_GRP_CD LIKE ('%' || #{commGrpCd} || '%')
</if>
<if test='commGrpNm != null and commGrpNm != ""'>
AND COMM_GRP_NM LIKE ('%' || #{commGrpNm} || '%')
</if>
<if test='useFg != null and useFg != ""'>
AND USE_FG = #{useFg}
</if>
<if test='sysDivCd != null and sysDivCd != ""'>
AND A.SYS_DIV = #{sysDivCd}
</if>
ORDER BY SYS_DIV, COMM_GRP_CD , COMM_GRP_NM, USE_FG
</select>
<!-- 등록 - 공통 코드 그룹 -->
<insert id="insertCommGrpCd">
/* comm.commCdMng.insertCommGrpCd : 등록 - 공통 코드 그룹 */
INSERT INTO COMM_GRP_CD (
COMM_GRP_CD
, COMM_GRP_NM
, USE_FG
, RMRK
, SYS_DIV
, REG_USER_NO
, REG_DTTM
, PROC_USER_NO
, PROC_DTTM
) VALUES (
#{commGrpCd}
, #{commGrpNm}
, #{useFg}
, #{rmrk}
, #{sysDiv}
, #{session.userNo}
, SYSDATE
, #{session.userNo}
, SYSDATE
)
</insert>
<!-- 수정 - 공통 코드 그룹 -->
<update id="updateCommGrpCd">
/* comm.commCdMng.updateCommGrpCd : 수정 - 공통 코드 그룹 */
UPDATE COMM_GRP_CD
SET
COMM_GRP_NM = #{commGrpNm}
, SYS_DIV = #{sysDiv}
, USE_FG = #{useFg}
, RMRK = #{rmrk}
, PROC_USER_NO = #{session.userNo}
, PROC_DTTM = SYSDATE
WHERE 1=1
AND COMM_GRP_CD = #{commGrpCd}
</update>
<!-- 삭제 - 공통 코드 그룹 -->
<delete id="deleteCommGrpCd">
/* comm.commCdMng.deleteCommGrpCd : 삭제 - 공통 코드 그룹 */
DELETE
FROM COMM_GRP_CD
WHERE 1=1
AND COMM_GRP_CD = #{commGrpCd}
</delete>
<select id="selectCommCd" resultType="com.lsitc.fems.comm.base.vo.CommCdVo">
/* comm.commCdMng.selectCommCd 화면용 공통코드 조회 */
SELECT
<!-- CD AS CODE, -->
<!-- CD_NM AS VALUE, -->
COMM_CD,
COMM_CD_NM,
COMM_GRP_CD,
COMM_CD_ABBRNM,
USER_DEF_VAL1,
USER_DEF_VAL2,
USER_DEF_VAL3,
USE_FG,
SORT_SEQ,
RMRK,
#{session.comId} AS COM_ID
FROM
COMM_CD
WHERE
COMM_GRP_CD = #{commGrpCd}
<if test="useFg!='' and useFg != null">
AND USE_FG = #{useFg}
</if>
<if test="userDefVal1 != '' and userDefVal1 != null">
AND USER_DEF_VAL1 = #{userDefVal1}
</if>
<if test="userDefVal2 != '' and userDefVal2 != null">
AND USER_DEF_VAL2 = #{userDefVal2}
</if>
<if test="userDefVal3 != '' and userDefVal3 != null">
AND USER_DEF_VAL3 = #{userDefVal3}
</if>
<if test="modeFg == 'T'.toString()">
UNION ALL
SELECT
'' AS COMM_CD,
'전체' AS COMM_CD_NM,
'' AS COMM_GRP_CD ,
-1 AS SORT_SEQ ,
#{session.comId} AS COM_ID
</if>
<if test = "modeFg == 'S'.toString()">
UNION ALL
SELECT
'' AS COMM_CD,
'선택' AS COMM_CD_NM,
'' AS COMM_GRP_CD ,
-1 AS SORT_SEQ ,
#{session.comId} AS COM_ID
</if>
<if test = "modeFg == 'N'.toString()">
UNION ALL
SELECT
'' AS COMM_CD,
'전체' AS COMM_CD_NM,
'' AS COMM_GRP_CD,
-1 AS SORT_SEQ,
#{session.comId} AS COM_ID
</if>
<if test = "orderBy == null or orderBy == ''" >
ORDER BY SORT_SEQ, COMM_CD, COMM_CD_NM
</if>
</select>
<!-- 등록 - 공통 코드 -->
<insert id="insertCommCd">
/* comm.commCdMng.insertCommCd : 등록 - 공통 코드 */
INSERT INTO COMM_CD (
COMM_GRP_CD
, COMM_CD
, COMM_CD_NM
, COMM_CD_ABBRNM
, USER_DEF_VAL1
, USER_DEF_VAL2
, USER_DEF_VAL3
, USE_FG
, SORT_SEQ
, RMRK
, REG_USER_NO
, REG_DTTM
, PROC_USER_NO
, PROC_DTTM
) VALUES (
#{commGrpCd}
, #{commCd}
, #{commCdNm}
, #{commCdAbbrnm}
, #{userDefVal1}
, #{userDefVal2}
, #{userDefVal3}
, #{useFg}
, #{sortSeq}
, #{rmrk}
, #{session.userNo}
, SYSDATE
, #{session.userNo}
, SYSDATE
)
</insert>
<!-- 수정 - 공통 코드 -->
<update id="updateCommCd">
/* comm.commCdMng.updateCommCd : 수정 - 공통 코드 */
UPDATE COMM_CD
SET
COMM_GRP_CD = #{commGrpCd}
, COMM_CD = #{commCd}
, COMM_CD_NM = #{commCdNm}
, COMM_CD_ABBRNM = #{commCdAbbrnm}
, USER_DEF_VAL1 = #{userDefVal1}
, USER_DEF_VAL2 = #{userDefVal2}
, USER_DEF_VAL3 = #{userDefVal3}
, USE_FG = #{useFg}
, SORT_SEQ = #{sortSeq}
, RMRK = #{rmrk}
, PROC_USER_NO = #{session.userNo}
, PROC_DTTM = SYSDATE
WHERE 1=1
AND COMM_GRP_CD = #{commGrpCd}
AND COMM_CD = #{commCd}
</update>
<!-- 삭제 - 공통 코드 -->
<delete id="deleteCommCd">
/* comm.commCdMng.deleteCommCd : 삭제 - 공통 코드 */
DELETE FROM COMM_CD
WHERE 1=1
AND COMM_GRP_CD = #{commGrpCd}
AND COMM_CD = #{commCd}
</delete>
</mapper>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.comm">
<select id="selectBlocMstr" resultType="com.lsitc.fems.comm.base.vo.BlocMstrVo">
/* comm.comm.selectBlocMstr : 사업장 코드 조회 */
SELECT COM_ID
,BLOC_ID
,BLOC_NM
,PLC_ID
,SORT_SEQ
,USE_FG
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_BLOC_INFO
WHERE 1=1
AND COM_ID = #{session.comId}
<if test="blocId != null and blocId != ''">
AND BLOC_ID = #{blocId}
</if>
<if test="plcId != null and plcId != ''">
AND PLC_ID = #{plcId}
</if>
</select>
</mapper>

View File

@ -0,0 +1,286 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.menuMng">
<select id="selectCommMenuTree" resultType="com.lsitc.core.base.CamelHashMap" >
/* comm.menuMng.selectCommMenuTree : 메뉴 트리 조회 */
WITH CTE (MENU_ID, PRGM_ID, UP_MENU_ID, MENU_NM, SORT_SEQ, USE_FG, RMRK, REG_USER_NO, REG_DTTM, PROC_USER_NO, PROC_DTTM, COM_ID, SYS_DIV_CD, LVL, T)
AS (
SELECT MENU_ID, PRGM_ID, UP_MENU_ID, MENU_NM, SORT_SEQ, USE_FG, RMRK, REG_USER_NO, REG_DTTM, PROC_USER_NO, PROC_DTTM, COM_ID, SYS_DIV_CD
, 0 AS LVL
, LPAD(SORT_SEQ, 5, '0') AS T
FROM COMM_MENU
WHERE
COM_ID = #{session.comId}
AND MENU_ID = '0'
UNION ALL
SELECT A.MENU_ID, A.PRGM_ID, A.UP_MENU_ID, A.MENU_NM, A.SORT_SEQ, A.USE_FG, A.RMRK, A.REG_USER_NO, A.REG_DTTM, A.PROC_USER_NO, A.PROC_DTTM, A.COM_ID, A.SYS_DIV_CD
, LVL + 1 AS LVL
, CONCAT(CONCAT(T, '-'), LPAD(A.SORT_SEQ, 5, '0')) AS T
FROM COMM_MENU A
INNER JOIN CTE B ON A.COM_ID=B.COM_ID and A.UP_MENU_ID = B.MENU_ID WHERE A.COM_ID=#{session.comId}
)
SELECT A.MENU_ID, A.PRGM_ID, A.UP_MENU_ID, A.MENU_NM, A.SORT_SEQ, A.USE_FG, A.RMRK, A.REG_USER_NO, A.REG_DTTM, A.PROC_USER_NO, A.PROC_DTTM, A.COM_ID, NVL(A.SYS_DIV_CD, '') AS SYS_DIV_CD
, A.LVL
, A.UP_MENU_ID AS PARENT_ID
FROM CTE A
LEFT OUTER JOIN COMM_PRGM B ON A.PRGM_ID = B.PRGM_ID
WHERE 1=1
-- AND UP_MENU_ID <![CDATA[<>]]> ''
AND A.COM_ID = #{session.comId}
<if test="menuNm != null and menuNm != ''">
AND (MENU_NM LIKE CONCAT('%', #{menuNm}, '%') OR MENU_ID = '0')
</if>
<if test="menuId != null and menuId != ''">
AND (MENU_ID LIKE CONCAT('%', UPPER(#{menuId}), '%') OR MENU_ID = '0')
</if>
<if test="useFg != null and useFg != ''">
AND A.USE_FG = #{useFg}
</if>
<if test="sysDivCd != null and sysDivCd != ''">
AND (A.SYS_DIV_CD = #{sysDivCd} OR MENU_ID = '0') -- root는 포함되도록..
</if>
ORDER
BY T
</select>
<select id="selectMenuPop" resultType="camelHashMap">
/* comm.menuMng.selectMenuPop : 메뉴(팝업) 조회 */
WITH RECURSIVE CTE AS (
SELECT MENU_ID, PRGM_ID, UP_MENU_ID, MENU_NM, SORT_SEQ, USE_FG, RMRK, REG_USER_NO, REG_DTTM, PROC_USER_NO, PROC_DTTM, COM_ID
, 0 AS LVL
, CONVERT(CONCAT(REPEAT('0', 5-LENGTH(SORT_SEQ)), SORT_SEQ), VARCHAR(100)) AS T
FROM COMM_MENU
WHERE COM_ID = #{session.comId}
AND MENU_ID = '0'
UNION ALL
SELECT A.MENU_ID, A.PRGM_ID, A.UP_MENU_ID, A.MENU_NM, A.SORT_SEQ, A.USE_FG, A.RMRK, A.REG_USER_NO, A.REG_DTTM, A.PROC_USER_NO, A.PROC_DTTM, A.COM_ID
, LVL + 1 AS LVL
, CONVERT(CONCAT(T, '-', REPEAT('0', 5-LENGTH(A.SORT_SEQ)), A.SORT_SEQ), VARCHAR(100)) AS T
FROM COMM_MENU A
INNER JOIN CTE B ON A.COM_ID=B.COM_ID AND A.UP_MENU_ID = B.MENU_ID
WHERE A.COM_ID = #{session.comId}
)
SELECT A.MENU_ID, A.PRGM_ID, A.UP_MENU_ID, A.MENU_NM, A.SORT_SEQ, A.USE_FG, A.RMRK, A.REG_USER_NO, A.REG_DTTM, A.PROC_USER_NO, A.PROC_DTTM, A.COM_ID
, A.LVL
, A.UP_MENU_ID AS PARENT_ID
FROM CTE A
LEFT OUTER JOIN COMM_PRGM B ON A.PRGM_ID = B.PRGM_ID
WHERE 1=1
-- AND UP_MENU_ID <![CDATA[<>]]> ''
AND A.COM_ID = #{session.comId}
<if test="useFg != null and useFg != ''">
AND A.USE_FG = #{useFg}
</if>
<if test="sysDivCd != null and sysDivCd !=''">
AND A.SYS_DIV_CD = #{sysDivCd}
</if>
ORDER
BY T
</select>
<insert id="insertMenu">
/* comm.menuMng.insertMenu : 메뉴 추가 */
<selectKey keyProperty="menuId" resultType="java.lang.String" order="BEFORE">
SELECT /* 메뉴ID 채번 */
CONCAT('MNU', LPAD(SEQ_COMM_MENU.NEXTVAL, 4, '0')) FROM DUAL
</selectKey>
INSERT
INTO COMM_MENU
(
MENU_ID
,COM_ID
,SYS_DIV_CD
,PRGM_ID
,UP_MENU_ID
,MENU_NM
,SORT_SEQ
,USE_FG
,RMRK
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES
(
#{menuId}
,#{comId}
,#{sysDivCd}
,#{prgmId}
,#{upMenuId}
,#{menuNm}
,#{sortSeq}
,#{useFg}
,#{rmrk}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateMenu">
/* comm.menuMng.updateMenu : 수정 */
UPDATE COMM_MENU
<trim prefix="SET" prefixOverrides=",">
<if test="sysDivCd != null and sysDivCd != ''">
,SYS_DIV_CD = #{sysDivCd}
</if>
<if test="prgmId != null and prgmId != ''">
,PRGM_ID = #{prgmId}
</if>
<if test="upMenuId != null and upMenuId != ''">
,UP_MENU_ID = #{upMenuId}
</if>
<if test="menuNm != null and menuNm != ''">
,MENU_NM = #{menuNm}
</if>
<if test="sortSeq != null and sortSeq != ''">
,SORT_SEQ = #{sortSeq}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND MENU_ID = #{menuId}
AND COM_ID = #{comId}
</update>
<delete id="deleteMenu">
/* comm.menuMng.deleteMenu : 메뉴 삭제 */
DELETE
FROM COMM_MENU
WHERE 1=1
AND MENU_ID = #{menuId}
AND COM_ID = #{comId}
</delete>
<select id="selectAuthMenu" resultType="com.lsitc.fems.comm.auth.vo.CommMenuVo">
/* comm.menuMng.selectAuthMenu 권한이 있는 메뉴 목록 */
WITH MENU_LIST AS (
SELECT /* 권한있는 메뉴 목록 조회 */
D.MENU_ID /* 메뉴ID */
, D.MENU_NM /* 메뉴명 */
, D.UP_MENU_ID /* 상위메뉴ID */
, E.URL /* URL */
, C.AUTH_CD
, D.SORT_SEQ
, E.PRGM_ID
FROM COMM_ROLE_USER A /* 역할별사용자 */
INNER JOIN COMM_MENU_ROLE B ON ( A.COM_ID=B.COM_ID and A.ROLE_ID = B.ROLE_ID ) /* 역할별메뉴 */
LEFT OUTER JOIN COMM_MENU_ROLE_AUTH C ON ( B.COM_ID=C.COM_ID and B.ROLE_ID = C.ROLE_ID AND B.MENU_ID = C.MENU_ID ) /* 역할별 권한 */
INNER JOIN COMM_MENU D ON ( A.COM_ID=D.COM_ID and B.MENU_ID = D.MENU_ID ) /* 메뉴 */
LEFT OUTER JOIN COMM_PRGM E ON ( D.PRGM_ID = E.PRGM_ID ) /* 프로그램 */
WHERE A.COM_ID=#{session.comId}
/* essential */
AND A.USER_NO = #{session.userNo} /* USER_NO */
AND SYSDATE BETWEEN A.APLY_START_DT AND A.APLY_END_DT /* 현재 유효한것만 */
AND D.USE_FG = '1' /* 메뉴-사용여부 Y인것만 */
)
, MENU_LIST_GRP AS (
SELECT /* LIST_AGG이 안되 GRP하기 위함. */
A.MENU_ID
,A.MENU_NM
,A.UP_MENU_ID
,A.URL
,A.SORT_SEQ
,(SELECT /* 사용자가 가지는 ROLE */
LISTAGG(C.AUTH_CD, ',')
FROM MENU_LIST C
WHERE 1=1
AND C.MENU_ID = A.MENU_ID
) AS AUTH_CD
,A.PRGM_ID
FROM MENU_LIST A
GROUP
BY A.MENU_ID
,A.MENU_NM
,A.UP_MENU_ID
,A.URL
,A.SORT_SEQ
,A.PRGM_ID
), MENU_TREE (MENU_ID, MENU_NM, UP_MENU_ID, URL, AUTH_CD, LVL, SORT_SEQ, PRGM_ID) AS (
SELECT /* Tree로 변경. */
'0' AS MENU_ID
,'ROOT' AS MENU_NM
,' ' AS UP_MENU_ID
,'' AS URL
,'' AS AUTH_CD
,0 AS LVL
,'00000' AS SORT_SEQ
,'' AS PRGM_ID
FROM DUAL
UNION ALL
SELECT A.MENU_ID
,A.MENU_NM
,A.UP_MENU_ID
,A.URL
,A.AUTH_CD AS AUTH_CD
,B.LVL + 1 AS LVL
,CONCAT(CONCAT(B.SORT_SEQ, '-'), LPAD(A.SORT_SEQ, 5, '0')) AS SORT_SEQ
,A.PRGM_ID
FROM MENU_LIST_GRP A
INNER
JOIN MENU_TREE B ON A.UP_MENU_ID = B.MENU_ID
)
SELECT
MENU_ID
,MENU_NM
,UP_MENU_ID
,URL
,AUTH_CD
,lvl
,PRGM_ID
FROM MENU_TREE
ORDER
BY SORT_SEQ, MENU_NM
</select>
<insert id="saveBookmark">
INSERT INTO COMM_USER_BKMK_MENU(
COM_ID
,USER_NO
,MENU_ID
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)VALUES(
#{session.comId}
,#{session.userNo}
,#{menuId}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<delete id="deleteBookmark">
DELETE FROM COMM_USER_BKMK_MENU WHERE COM_ID = #{session.comId} AND USER_NO = #{session.userNo} AND MENU_ID = #{menuId}
</delete>
<select id="selectMyMenu" resultType="com.lsitc.fems.comm.auth.vo.CommMenuVo">
SELECT
A.COM_ID
,A.USER_NO
,A.MENU_ID
,B.PRGM_ID
,B.MENU_NM
,C.URL
FROM COMM_USER_BKMK_MENU A
LEFT JOIN COMM_MENU B ON (A.COM_ID = B.COM_ID AND A.MENU_ID = B.MENU_ID)
LEFT JOIN COMM_PRGM C ON (B.PRGM_ID = C.PRGM_ID)
WHERE A.COM_ID = #{session.comId}
AND A.USER_NO = #{session.userNo}
ORDER BY B.MENU_NM
</select>
</mapper>

View File

@ -0,0 +1,218 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.noticeMng">
<select id="selectPostList" resultType="com.lsitc.core.base.CamelHashMap" >
/* comm.noticeMng.selectPostList : 게시판 리스트 조회 */
SELECT B.COM_ID, B.BORD_NO, P.POST_NO, P.POST_ORG_NO, P.POST_GRP_ORD, P.POST_GRP_LAYER,
P.POST_TITL, P.POST_TITL AS TITLE,
P.NOTI_YN, P.RPLY_POSS_YN, P.STRT_DTTM, P.END_DTTM, P.VIEW_CNT, P.APND_FILE_UUID,
P.REG_USER_NO, P.REG_DTTM
FROM comm_bord B
INNER JOIN comm_post P
ON B.COM_ID = P.COM_ID
AND B.BORD_NO = P.BORD_NO
WHERE B.COM_ID = #{session.comId}
AND B.USE_FG = '1'
AND B.BORD_NO = #{bordNo}
<if test="postOrgNo != null and postOrgNo != ''">
AND P.POST_ORG_NO = #{postOrgNo}
</if>
ORDER BY P.POST_ORG_NO DESC, P.POST_GRP_ORD ASC
</select>
<!-- resultMap 지정 -->
<resultMap id="selectPostResult" type="com.lsitc.core.base.CamelHashMap" >
<result property="POST_CNTN" column="POST_CNTN" jdbcType="CLOB" javaType="java.lang.String" />
</resultMap>
<select id ="selectPost" resultType="com.lsitc.core.base.CamelHashMap" resultMap="selectPostResult">
/* comm.noticeMng.selectPost : 게시물 조회 */
SELECT B.COM_ID, B.BORD_NO, P.POST_NO, P.POST_ORG_NO, P.POST_GRP_ORD, P.POST_GRP_LAYER,
P.POST_TITL, P.POST_TITL AS TITLE, P.POST_CNTN,
P.NOTI_YN, P.RPLY_POSS_YN, P.STRT_DTTM, P.END_DTTM, P.APND_FILE_UUID, P.VIEW_CNT,
P.REG_USER_NO, P.REG_DTTM
FROM comm_bord B
INNER JOIN
comm_post P
ON B.COM_ID = P.COM_ID
AND B.BORD_NO = P.BORD_NO
WHERE B.COM_ID = #{session.comId}
AND B.USE_FG = '1'
AND B.BORD_NO = #{bordNo}
AND P.POST_NO = #{postNo}
</select>
<insert id="insertPost">
/* comm.noticeMng.insertPost : 게시물 등록 */
<selectKey keyProperty="postNo" resultType="java.math.BigDecimal" order="BEFORE">
SELECT NVL(MAX(POST_NO),0)+1
FROM comm_post
WHERE COM_ID = #{session.comId}
AND BORD_NO =#{bordNo}
</selectKey>
INSERT
INTO comm_post
(
COM_ID,
BORD_NO,
POST_NO,
POST_ORG_NO,
POST_GRP_ORD,
POST_GRP_LAYER,
POST_TITL,
POST_CNTN,
RPLY_POSS_YN,
APND_FILE_UUID,
VIEW_CNT,
REG_USER_NO,
REG_DTTM,
PROC_USER_NO,
PROC_DTTM
)
VALUES (
#{session.comId}
,#{bordNo}
,#{postNo}
,#{postNo}
,0
,0
,#{postTitl, jdbcType=VARCHAR}
,#{postCntn}
,#{rplyPossYn}
,#{apndFileUuid}
,0
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<insert id="insertRplPost">
/* comm.noticeMng.insertRplPost : 게시물 답글 등록 */
INSERT
INTO comm_post
(
COM_ID,
BORD_NO,
POST_NO,
POST_ORG_NO,
POST_GRP_ORD,
POST_GRP_LAYER,
POST_TITL,
POST_CNTN,
RPLY_POSS_YN,
APND_FILE_UUID,
VIEW_CNT,
REG_USER_NO,
REG_DTTM,
PROC_USER_NO,
PROC_DTTM
)
VALUES (
#{session.comId}
,#{bordNo}
,(SELECT NVL(MAX(POST_NO),0)+1
FROM comm_post cp
WHERE cp.COM_ID = #{session.comId}
AND cp.BORD_NO =#{bordNo})
,#{postOrgNo}
,#{postGrpOrd} + 1
,#{postGrpLayer} + 1
,#{postTitl}
,#{postCntn}
,#{rplyPossYn}
,#{apndFileUuid}
,0
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateRplPostGrpOrd">
UPDATE comm_post
SET POST_GRP_ORD = POST_GRP_ORD + 1
WHERE POST_ORG_NO = #{postOrgNo} and POST_GRP_ORD > #{postGrpOrd}
</update>
<update id="updateViewCnt">
UPDATE comm_post
SET VIEW_CNT = VIEW_CNT + 1
WHERE BORD_NO = #{bordNo}
AND POST_NO = #{postNo}
</update>
<update id="updatePost">
/* comm.noticeMng.updatePost : 게시물 수정 */
UPDATE comm_post
<trim prefix="SET" prefixOverrides=",">
<if test="postTitl != null and postTitl != ''">
,POST_TITL = #{postTitl}
</if>
<if test="postCntn != null and postCntn != ''">
,POST_CNTN = #{postCntn}
</if>
<if test="notiYn != null and notiYn != ''">
,NOTI_YN = #{notiYn}
</if>
<if test="apndFileUuid != null and apndFileUuid != ''">
,APND_FILE_UUID = #{apndFileUuid}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND BORD_NO = #{bordNo}
AND POST_NO = #{postNo}
</update>
<delete id="deletePost">
/* comm.noticeMng.deletePostList : 삭제 */
<!-- BEGIN TRAN -->
DELETE
FROM comm_post
WHERE 1=1
AND COM_ID = #{session.comId}
AND BORD_NO = #{bordNo}
AND POST_NO = #{postNo}
<!-- COMMIT TRAN -->
</delete>
<update id="updateMenu">
/* comm.menuMng.updateMenu : 수정 */
UPDATE COMM_MENU
<trim prefix="SET" prefixOverrides=",">
<if test="sysDivCd != null and sysDivCd != ''">
,SYS_DIV_CD = #{sysDivCd}
</if>
<if test="prgmId != null and prgmId != ''">
,PRGM_ID = #{prgmId}
</if>
<if test="upMenuId != null and upMenuId != ''">
,UP_MENU_ID = #{upMenuId}
</if>
<if test="menuNm != null and menuNm != ''">
,MENU_NM = #{menuNm}
</if>
<if test="sortSeq != null and sortSeq != ''">
,SORT_SEQ = #{sortSeq}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="rmrk != null and rmrk != ''">
,RMRK = #{rmrk}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND MENU_ID = #{menuId}
AND COM_ID = #{session.comId}
</update>
</mapper>

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.orgMng">
<insert id="insertDeptCd">
/* comm.orgMng.insertDeptCd : 부서 채번 */
<selectKey keyProperty="deptCd" resultType="java.lang.String" order="BEFORE">
SELECT /* 메뉴ID 채번 */
CONCAT('DPT', LPAD(NEXT VALUE FOR SEQ_COMM_DEPT_CD, 4,'0'))
</selectKey>
/* comm.orgMng.insertDeptCd : 부서코드 등록 */
INSERT INTO COMM_DEPT_CD
(
COM_ID
,DEPT_ID
,UP_DEPT_ID
,DEPT_NM
,DEPT_ABRV_NM
,USE_FG
,SORT_SEQ
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{session.comId}
,#{deptId}
,#{upDeptId}
,#{deptNm}
,#{deptAbrvNm}
,#{useFg}
,#{sortSeq}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateDeptCd">
/* comm.orgMng.updateDeptCd : 부서코드 수정 */
UPDATE COMM_DEPT_CD
<trim prefix="SET" prefixOverrides=",">
<if test="upDeptId != null and upDeptId != ''">
,UP_DEPT_CD = #{upDeptId}
</if>
<if test="deptNm != null and deptNm != ''">
,DEPT_NM = #{deptNm}
</if>
<if test="deptAbrvNm != null">
,DEPT_ABRV_NM = #{deptAbrvNm}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="sortSeq != null">
,SORT_SEQ = #{sortSeq}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND DEPT_ID = #{deptId}
</update>
<delete id="deleteDeptCd">
/* comm.orgMng.deleteDeptCd : 부서코드 삭제 */
DELETE
FROM COMM_DEPT_CD
WHERE 1=1
AND COM_ID = #{session.comId}
AND DEPT_ID = #{deptId}
</delete>
<select id="selectDeptCd" resultType="com.lsitc.fems.comm.base.vo.DeptCdVo">
/* comm.orgMng.selectDeptCd : 부서를 트리형태로 조회 */
WITH CTE AS (
/* 부서를 트리형태로 조회 */
SELECT
COM_ID
,DEPT_ID
,UP_DEPT_ID
,DEPT_NM
,DEPT_ABRV_NM
,USE_FG
,CONVERT(SORT_SEQ, VARCHAR(10)) as SORT_SEQ
,CONVERT('.' + CAST(SORT_SEQ as varchar(10)), varchar(10)) AS SORT_REF
,ROW_NUMBER() OVER(order by COM_ID)-1 as LVL
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_DEPT_CD
WHERE 1=1
AND COM_ID = #{session.comId}
AND UP_DEPT_ID = 'ROOT'
UNION ALL
SELECT
B.COM_ID
,B.DEPT_ID
,B.UP_DEPT_ID
,B.DEPT_NM
,B.DEPT_ABRV_NM
,B.USE_FG
,CONVERT(B.SORT_SEQ, VARCHAR(10)) as SORT_SEQ
,CONVERT(A.SORT_REF + '.' + CAST(B.SORT_SEQ as varchar(10)), varchar(10)) AS SORT_REF
,A.LVL + 1 as LVL
,A.REG_USER_NO
,A.REG_DTTM
,A.PROC_USER_NO
,A.PROC_DTTM
FROM CTE A INNER JOIN COMM_DEPT_CD B ON A.DEPT_ID = B.UP_DEPT_ID
WHERE 1=1
<if test="comId != null and comId != ''">
AND B.COM_ID = #{session.comId}
</if>
<if test="deptId != null and deptId != ''">
AND B.DEPT_ID = #{deptId}
</if>
<if test="upDeptId != null and upDeptId != ''">
AND B.UP_DEPT_ID = #{upDeptId}
</if>
<if test="deptNm != null and deptNm != ''">
AND B.DEPT_NM = #{deptNm}
</if>
<if test="deptAbrvNm != null and deptAbrvNm != ''">
AND B.DEPT_ABRV_NM = #{deptAbrvNm}
</if>
<if test="useFg != null and useFg != ''">
AND B.USE_FG = #{useFg}
</if>
)
SELECT *
FROM CTE
ORDER
BY SORT_REF
</select>
</mapper>

View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.prgmMng">
<insert id="insertPrgm">
/* comm.prgmMng.insertPrgm : 프로그램 등록 */
<selectKey keyProperty="prgmId" resultType="java.lang.String" order="BEFORE">
SELECT /* 프로그램ID 채번 */
CONCAT('PRG', LPAD(SEQ_COMM_ROLE.nextval, 4,'0')) FROM DUAL
</selectKey>
INSERT INTO COMM_PRGM
(
PRGM_ID
,PRGM_NM
,PRGM_TP_CD
,URL
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{prgmId}
,#{prgmNm}
,#{prgmTpCd}
,#{url}
,#{useFg}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updatePrgm">
/* comm.prgmMng.updatePrgm : 프로그램 수정 */
UPDATE COMM_PRGM
<trim prefix="SET" prefixOverrides=",">
<if test="prgmNm != null and prgmNm != ''">
,PRGM_NM = #{prgmNm}
</if>
<if test="prgmTpCd != null and prgmTpCd != ''">
,PRGM_TP_CD = #{prgmTpCd}
</if>
<if test="url != null and url != ''">
,URL = #{url}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND PRGM_ID = #{prgmId}
</update>
<delete id="deletePrgm">
/* comm.prgmMng.deletePrgm : 프로그램 삭제 */
DELETE
FROM COMM_PRGM
WHERE 1=1
AND PRGM_ID = #{prgmId}
</delete>
<select id="selectPrgm" resultType="com.lsitc.fems.comm.base.vo.PrgmVo">
/* comm.prgmMng.selectPrgm : 프로그램 조회 */
SELECT
PRGM_ID
,PRGM_NM
,PRGM_TP_CD
,URL
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_PRGM
WHERE 1=1
<if test="prgmId != null and prgmId != ''">
AND PRGM_ID LIKE CONCAT('%', #{prgmId}, '%')
</if>
<if test="prgmNm != null and prgmNm != ''">
AND PRGM_NM LIKE CONCAT('%', #{prgmNm}, '%')
</if>
<if test="prgmTpCd != null and prgmTpCd != ''">
AND PRGM_TP_CD = #{prgmTpCd}
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
ORDER
BY PRGM_ID
</select>
<select id="selectPrgmPage" resultType="com.lsitc.fems.comm.base.vo.PrgmVo">
/* comm.prgmMng.selectPrgmPage : 프로그램 페이지 조회 */
SELECT
PRGM_ID
,PRGM_NM
,PRGM_TP_CD
,URL
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_PRGM
WHERE 1=1
<if test="prgmId != null and prgmId != ''">
AND PRGM_ID LIKE CONCAT('%', #{prgmId}, '%')
</if>
<if test="prgmNm != null and prgmNm != ''">
AND PRGM_NM LIKE CONCAT('%', #{prgmNm}, '%')
</if>
<if test="prgmTpCd != null and prgmTpCd != ''">
AND PRGM_TP_CD = #{prgmTpCd}
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
ORDER
BY PRGM_ID
LIMIT #{limit}
OFFSET #{offset}
</select>
<select id="selectPrgmTotal" resultType="com.lsitc.fems.comm.base.vo.PrgmVo">
/* comm.prgmMng.selectPrgmTotal : 프로그램 토탈 조회 */
SELECT count(*) totalCount
FROM COMM_PRGM
WHERE 1=1
<if test="prgmId != null and prgmId != ''">
AND PRGM_ID LIKE CONCAT('%', #{prgmId}, '%')
</if>
<if test="prgmNm != null and prgmNm != ''">
AND PRGM_NM LIKE CONCAT('%', #{prgmNm}, '%')
</if>
<if test="prgmTpCd != null and prgmTpCd != ''">
AND PRGM_TP_CD = #{prgmTpCd}
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
</select>
</mapper>

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.SystemLogRead">
<select id="selectLoginLog" resultType="CamelHashMap">
/* comm.SystemLogRead.selectLoginLog : 로그인로그 조회 */
SELECT A.REG_USER_NO AS USER_NO
, B.USER_NM
, TO_CHAR(A.REG_DTTM, 'YYYY-MM-DD HH24:MI:SS') AS LOGIN_DTTM
, C.USER_LOGIN_ID
FROM COMM_LOGIN_LOG A
INNER JOIN COMM_USER B ON A.COM_ID=B.COM_ID AND A.REG_USER_NO = B.USER_NO
INNER JOIN COMM_LOGIN_INFO C ON A.REG_USER_NO = C.USER_NO
WHERE 1=1
AND A.COM_ID = #{session.comId}
<if test="userList != null and userList != ''">
AND A.REG_USER_NO IN
<foreach item="eachRow" open="(" separator="," close=")" collection="userList">
#{eachRow}
</foreach>
</if>
<if test="frDttm != null">
AND A.REG_DTTM <![CDATA[>=]]> TO_DATE(#{frDttm}, 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="endDttm != null">
AND A.REG_DTTM <![CDATA[<=]]> TO_DATE(#{endDttm}, 'YYYY-MM-DD HH24:MI:SS')
</if>
ORDER
BY A.REG_DTTM DESC
</select>
<select id="selectMenuCnctLog" resultType="CamelHashMap">
/* comm.SystemLogRead.selectMenuCnctLog : 메뉴접근로그 조회 */
SELECT A.REG_USER_NO AS USER_NO
, B.USER_NM
, C.MENU_NM
, TO_CHAR(A.REG_DTTM, 'YYYY-MM-DD HH24:MI:SS') AS MENU_CNCT_DTTM
, D.USER_LOGIN_ID
FROM COMM_MENU_CNCT_LOG A
INNER JOIN COMM_USER B ON A.COM_ID =B.COM_ID and A.REG_USER_NO = B.USER_NO
INNER JOIN COMM_MENU C ON A.COM_ID =C.COM_ID and A.MENU_ID = C.MENU_ID
INNER JOIN COMM_LOGIN_INFO D ON A.REG_USER_NO = D.USER_NO
WHERE 1=1
AND A.COM_ID = #{session.comId}
<if test="userList != null and userList != ''">
AND A.REG_USER_NO IN
<foreach item="eachRow" open="(" separator="," close=")" collection="userList">
#{eachRow}
</foreach>
</if>
<if test="menuId != null and menuId != ''">
AND C.MENU_ID = #{menuId}
</if>
<if test="frDttm != null">
AND A.REG_DTTM <![CDATA[>=]]> TO_DATE(#{frDttm}, 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="endDttm != null">
AND A.REG_DTTM <![CDATA[<=]]> TO_DATE(#{endDttm}, 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="menuList != null and menuList != ''">
AND A.MENU_ID IN
<foreach open="(" item="eachRow" separator="," close=")" collection="menuList">
#{eachRow}
</foreach>
</if>
ORDER
BY A.REG_DTTM DESC
</select>
<insert id="insertLoginLog">
/* comm.SystemLogRead.insertLoginLog : 로그인로그 등록 */
INSERT INTO COMM_LOGIN_LOG
(
LOG_ID
,COM_ID
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{logId}
,#{comId}
,#{userNo}
,SYSDATE
,#{userNo}
,SYSDATE
)
</insert>
<insert id="insertMenuCnctLog">
/* comm.SystemLogRead.insertMenuCnctLog : 메뉴접근로그 등록 */
INSERT INTO COMM_MENU_CNCT_LOG
(
LOG_ID
,MENU_ID
,COM_ID
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{logId}
,#{menuId}
,#{session.comId}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
</mapper>

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.user">
<insert id="insertUser">
/* comm.user.insertUser : 사용자 등록 */
INSERT INTO COMM_USER
(
COM_ID
,DEPT_ID
,BLOC_ID
,USER_NO
,USER_NM
,EMAIL
,MOBLPHON
,OFFICE_TELNO
,FAX_TELNO
,POST_NO
,POST_ADRES
,ADRES_DETAIL
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{session.comId}
,#{deptId}
,#{blocId}
,#{userNo}
,#{userNm}
,#{email}
,#{moblphon}
,#{officeTelno}
,#{faxTelno}
,#{postNo}
,#{postAdres}
,#{adresDetail}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateUser">
/* comm.user.updateUser : 사용자 수정 */
UPDATE COMM_USER
<trim prefix="SET" prefixOverrides=",">
<if test="blocId != null and blocId != ''">
,BLOC_ID = #{blocId}
</if>
<if test="userNm != null and userNm != ''">
,USER_NM = #{userNm}
</if>
<if test="email != null and email != ''">
,EMAIL = #{email}
</if>
<if test="moblphon != null and moblphon != ''">
,MOBLPHON = #{moblphon}
</if>
<if test="officeTelno != null and officeTelno != ''">
,OFFICE_TELNO = #{officeTelno}
</if>
<if test="faxTelno != null and faxTelno != ''">
,FAX_TELNO = #{faxTelno}
</if>
<if test="postNo != null and postNo != ''">
,POST_NO = #{postNo}
</if>
<if test="postAdres != null and postAdres != ''">
,POST_ADRES = #{postAdres}
</if>
<if test="adresDetail != null and adresDetail != ''">
,ADRES_DETAIL = #{adresDetail}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND COM_ID = #{session.comId}
AND DEPT_ID = #{deptId}
AND USER_NO = #{userNo}
</update>
<delete id="deleteUser">
/* comm.user.deleteUser : 사용자 삭제 */
DELETE
FROM COMM_USER
WHERE 1=1
AND COM_ID = #{session.comId}
AND DEPT_ID = #{deptId}
AND USER_NO = #{userNo}
</delete>
<select id="selectUserPop" resultType="camelHashMap">
/* comm.user.selectUserPop : [팝업]사용자 조회 */
SELECT A.COM_ID
,A.DEPT_ID
,C.DEPT_NM
,A.USER_NO
,A.USER_NM
,A.EMAIL
,A.MOBLPHON
,A.OFFICE_TELNO
,B.USER_LOGIN_ID
FROM COMM_USER A
INNER JOIN COMM_LOGIN_INFO B ON A.USER_NO = B.USER_NO
INNER JOIN COMM_DEPT_CD C ON A.DEPT_ID = C.DEPT_ID
WHERE 1=1
AND A.COM_ID = #{session.comId}
<if test="deptCd != null and deptCd != ''">
AND A.DEPT_ID = #{deptId}
</if>
<if test="userNo != null and userNo != ''">
AND A.USER_NO LIKE CONCAT('%', #{userNo}, '%')
</if>
<if test="userNm != null and userNm != ''">
AND A.USER_NM LIKE CONCAT('%', #{userNm}, '%')
</if>
<if test="userLoginId != null and userLoginId != ''">
AND B.USER_LOGIN_ID LIKE CONCAT('%', #{userLoginId}, '%')
</if>
</select>
</mapper>

View File

@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comm.base.widgetMng">
<select id="selectWidget" resultType="com.lsitc.fems.comm.base.vo.WidgetVo">
/* comm.widgetMng.selectWidget : 위젯 조회 */
SELECT
WIDGET_ID
,WIDGET_NM
,WIDGET_DESC
,PRGM_ID
,WIDGET_THUMBNAIL_FILE
,WIDGET_THUMBNAIL
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_WIDGET
WHERE 1=1
<if test="widgetNm != null and widgetNm != ''">
AND WIDGET_NM LIKE CONCAT('%', #{widgetNm}, '%')
</if>
<if test="useFg != null and useFg != ''">
AND USE_FG = #{useFg}
</if>
ORDER
BY WIDGET_ID
</select>
<insert id="insertWidget">
/* comm.widgetMng.insertWidget : 위젯 등록 */
INSERT INTO COMM_WIDGET
(
WIDGET_ID
,WIDGET_NM
,WIDGET_DESC
,PRGM_ID
,WIDGET_THUMBNAIL_FILE
,WIDGET_THUMBNAIL
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{widgetId}
,#{widgetNm}
,#{widgetDesc}
,#{prgmId}
,#{widgetThumbnailFile}
,#{widgetThumbnail}
,#{useFg}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateWidget">
/* comm.widgetMng.updateWidget : 위젯 수정 */
UPDATE COMM_WIDGET
<trim prefix="SET" prefixOverrides=",">
<if test="widgetNm != null and widgetNm != ''">
,WIDGET_NM = #{widgetNm}
</if>
<if test="widgetId != null and widgetId != ''">
,WIDGET_ID = #{widgetId}
</if>
<if test="widgetDesc != null and widgetDesc != ''">
,WIDGET_DESC = #{widgetDesc}
</if>
<if test="prgmId != null and prgmId != ''">
,PRGM_ID = #{prgmId}
</if>
<if test="useFg != null and useFg != ''">
,USE_FG = #{useFg}
</if>
<if test="widgetThumbnailFile != null and widgetThumbnailFile != ''">
,WIDGET_THUMBNAIL_FILE = #{widgetThumbnailFile}
</if>
<if test="widgetThumbnail != null and widgetThumbnail != ''">
,WIDGET_THUMBNAIL = #{widgetThumbnail}
</if>
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
</trim>
WHERE 1=1
AND WIDGET_ID = #{widgetId}
</update>
<delete id="deleteWidget">
/* comm.widgetMng.deleteWidget : 위젯 삭제 */
DELETE
FROM COMM_WIDGET
WHERE 1=1
AND WIDGET_ID = #{widgetId}
</delete>
<select id="selectNotMyWidget" resultType="com.lsitc.fems.comm.base.vo.WidgetVo">
/* comm.widgetMng.selectMyWidget : 위젯 수정 */
SELECT
WIDGET_ID
,WIDGET_NM
,WIDGET_DESC
,WIDGET_THUMBNAIL_FILE
,WIDGET_THUMBNAIL
,USE_FG
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
FROM COMM_WIDGET
WHERE WIDGET_ID NOT IN (
SELECT WIDGET_ID
FROM COMM_INDV_WIDGET
WHERE COM_ID = #{session.comId}
AND BLOC_ID = #{session.blocId}
AND USER_NO = #{session.userNo}
)
</select>
<select id="selectMyWidget" resultType="com.lsitc.fems.comm.base.vo.WidgetVo">
/* comm.widgetMng.selectMyWidget : 위젯 수정 */
SELECT
A.COM_ID
,A.BLOC_ID
,A.USER_NO
,A.WIDGET_ID
,(SELECT B.WIDGET_NM FROM COMM_WIDGET B WHERE A.WIDGET_ID = B.WIDGET_ID) AS WIDGET_NM
,A.WIDGET_ORDR_SEQ
,A.WIDGET_REFLASH_MM
,A.REG_USER_NO
,A.REG_DTTM
,A.PROC_USER_NO
,A.PROC_DTTM
FROM COMM_INDV_WIDGET A
WHERE A.COM_ID = #{session.comId}
AND A.BLOC_ID = #{session.blocId}
AND A.USER_NO = #{session.userNo}
ORDER BY A.WIDGET_ORDR_SEQ
</select>
<insert id="insertMyWidget">
/* comm.widgetMng.insertMyWidget : 위젯 등록 */
INSERT INTO COMM_INDV_WIDGET
(
COM_ID
,BLOC_ID
,USER_NO
,WIDGET_ID
,WIDGET_ORDR_SEQ
,WIDGET_REFLASH_MM
,REG_USER_NO
,REG_DTTM
,PROC_USER_NO
,PROC_DTTM
)
VALUES (
#{session.comId}
,#{session.blocId}
,#{session.userNo}
,#{widgetId}
,#{widgetOrdrSeq}
,#{widgetReflashMm}
,#{session.userNo}
,SYSDATE
,#{session.userNo}
,SYSDATE
)
</insert>
<update id="updateMyWidget">
/* comm.widgetMng.updateMyWidget : 위젯 수정 */
UPDATE COMM_INDV_WIDGET SET
WIDGET_ORDR_SEQ = #{widgetOrdrSeq}
,WIDGET_REFLASH_MM = #{widgetReflashMm}
,PROC_USER_NO = #{session.userNo}
,PROC_DTTM = SYSDATE
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{session.blocId}
AND USER_NO = #{session.userNo}
AND WIDGET_ID = #{widgetId}
</update>
<delete id="deleteMyWidget">
/* comm.widgetMng.deleteMyWidget : 위젯 삭제 */
DELETE
FROM COMM_INDV_WIDGET
WHERE 1=1
AND COM_ID = #{session.comId}
AND BLOC_ID = #{session.blocId}
AND USER_NO = #{session.userNo}
AND WIDGET_ID = #{widgetId}
</delete>
<select id="selectWidgetPrgmUrl" resultType="com.lsitc.fems.comm.base.vo.WidgetVo">
SELECT
A.WIDGET_ID
,A.PRGM_ID
,CONCAT(B.URL,'?prgmId=',B.PRGM_ID) AS PRGM_URL
FROM COMM_WIDGET A
JOIN COMM_PRGM B
JOIN COMM_INDV_WIDGET C
WHERE C.COM_ID = #{session.comId}
AND C.BLOC_ID = #{session.blocId}
AND C.USER_NO = #{session.userNo}
AND A.PRGM_ID = B.PRGM_ID
AND A.WIDGET_ID = C.WIDGET_ID
</select>
</mapper>

View File

@ -0,0 +1,13 @@
package com.lsitc.fems.comm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class CommApplicationTests {
@Test
void contextLoads() {
}
}