diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..387bfd9
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,760 @@
+
+
+ 4.0.0
+ fis
+ fis
+ war
+ 1.0.0
+ fis
+ http://www.egovframe.go.kr
+
+
+ 4.3.16.RELEASE
+ 3.8.0
+
+
+
+
+ mvn2
+ http://repo1.maven.org/maven2/
+
+ true
+
+
+ true
+
+
+
+ egovframe
+ http://www.egovframe.go.kr/maven/
+
+ true
+
+
+ false
+
+
+
+ egovframe2
+ http://maven.egovframe.kr:8080/maven/
+
+ true
+
+
+ false
+
+
+
+
+
+
+
+ egovframework.rte
+ egovframework.rte.ptl.mvc
+ ${egovframework.rte.version}
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ egovframework.rte
+ egovframework.rte.psl.dataaccess
+ ${egovframework.rte.version}
+
+
+ egovframework.rte
+ egovframework.rte.fdl.idgnr
+ ${egovframework.rte.version}
+
+
+ egovframework.rte
+ egovframework.rte.fdl.property
+ ${egovframework.rte.version}
+
+
+
+ javax.servlet
+ servlet-api
+ provided
+ 2.5
+
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+
+ taglibs
+ standard
+ 1.1.2
+
+
+
+ org.antlr
+ antlr
+ 3.5
+
+
+
+ org.hsqldb
+ hsqldb
+ 2.3.2
+
+
+
+
+ commons-dbcp
+ commons-dbcp
+ 1.4
+
+
+
+ commons-codec
+ commons-codec
+ 1.9
+
+
+
+ cglib
+ cglib
+ 3.1
+
+
+
+ org.apache.commons
+ commons-compress
+ 1.8.1
+
+
+
+ org.apache.commons
+ commons-collections4
+ 4.0
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.2
+
+
+
+
+ org.apache.httpcomponents
+ httpmime
+ 4.5.2
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
+ com.tmax.tibero
+ tibero-jdbc
+ 6.0
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/tibero6-jdbc-14.jar
+
+
+
+
+ com.zaxxer
+ HikariCP
+ 3.2.0
+
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.3.1
+
+
+
+ javax.servlet.jsp
+ jsp-api
+ 2.2
+ provided
+
+
+
+ com.ibm.icu
+ icu4j
+ 53.1
+
+
+
+ commons-io
+ commons-io
+ 2.4
+
+
+ commons-logging
+ commons-logging
+ 1.0.4
+
+
+ dom4j
+ dom4j
+ 1.6.1
+
+
+ com.googlecode.json-simple
+ json-simple
+ 1.1
+
+
+ net.sf.opencsv
+ opencsv
+ 1.8
+
+
+ org.apache.xmlgraphics
+ fop
+ 1.0
+
+
+ org.apache.poi
+ poi
+ 3.12
+
+
+
+ org.apache.poi
+ poi-ooxml
+ 3.12
+
+
+ org.apache.poi
+ poi-excelant
+ 3.12
+
+
+ org.apache.poi
+ poi-scratchpad
+ 3.12
+
+
+ org.apache.xmlgraphics
+ batik-all
+ 1.7
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/batik-all-1.7.1-20150510.jar
+
+
+ batik
+ pdf-transcoder
+ 1.0
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/pdf-transcoder-1.0beta2.jar
+
+
+ xalan
+ xalan
+ 2.7.0
+
+
+ xmlbeans
+ xbean_xpath
+ 2.4.0
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/xmlbeans_xpath-2.4.0.jar
+
+
+ xerces
+ xercesImpl
+ 2.7.1
+
+
+ xml-apis
+ xml-apis
+ 1.4.01
+
+
+ org.apache.xmlbeans
+ xmlbeans
+ 2.3.0
+
+
+ org.apache.xmlbeans
+ xmlbeans-qname
+ 2.3.0
+
+
+ org.apache.xmlbeans
+ xmlbeans-xmlpublic
+ 2.5.0
+
+
+
+
+ xbean
+ xbean
+ 2.5
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/xbean.jar
+
+
+
+
+ websquare
+ websquare
+ 5.0_3.3643B
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/websquare_5.0_3.3487B.20190213.175059_1.5.jar
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.5.1
+
+
+
+ org.springframework
+ spring-test
+ 4.3.18.RELEASE
+ test
+
+
+
+ org.hibernate
+ hibernate-validator-annotation-processor
+ 4.1.0.Final
+
+
+
+
+
+ eu.bitwalker
+ UserAgentUtils
+ 1.21
+
+
+
+
+ com.clipsoft
+ clipreport
+ 4.0-1.0.0.217
+ system
+ ${project.basedir}/src/main/webapp/WEB-INF/lib/ClipReport4.0-1.0.0.217.jar
+
+
+
+ com.clipsoft
+ clipreport-Common
+ 4.0
+ system
+ ${project.basedir}/src/main/webapp/WEB-INF/lib/ClipReport4.0-Common.jar
+
+
+
+
+ javax.media
+ jai_codec
+ 1.1.3
+ system
+ ${project.basedir}/src/main/webapp/WEB-INF/lib/jai_codec-1.1.3.jar
+
+
+
+
+ javax.media
+ jai_core
+ 1.1.3
+ system
+ ${project.basedir}/src/main/webapp/WEB-INF/lib/jai_core-1.1.3.jar
+
+
+
+
+
+
+ com.google.code.findbugs
+ annotations
+ 3.0.1
+
+
+
+
+
+
+
+ org.lazyluke
+ log4jdbc-remix
+ 0.2.7
+
+
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.12.1
+
+
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ 2.12.1
+
+
+ org.apache.logging.log4j
+ log4j-1.2-api
+ 2.12.1
+
+
+
+
+ org.quartz-scheduler
+ quartz
+ 2.3.0
+
+
+
+
+ io.netty
+ netty-all
+ 4.1.32.Final
+
+
+
+
+ org.springframework.batch
+ spring-batch-core
+ 4.0.1.RELEASE
+
+
+
+
+ VNOInterop
+ VNOInterop
+ 1.0.1
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/VNOInterop.jar
+
+
+
+
+ org.apache.axis
+ axis
+ 1.4
+
+
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.16.10
+ provided
+
+
+
+
+ org.springframework.batch
+ spring-batch-core
+ 4.0.1.RELEASE
+
+
+
+
+ org.springframework.batch
+ spring-batch-test
+ 4.1.1.RELEASE
+ test
+
+
+
+
+ com.jcraft
+ jsch
+ 0.1.54
+
+
+
+
+ me.saro
+ commons
+ 4.0.2
+
+
+
+
+
+ hancom_blockchain
+ hancom
+ 1.1.0
+ system
+ ${project.basedir}/src/main/webapp/WEB-INF/lib/hancom_blockchain.jar
+
+
+
+ egovframework.rte
+ egovframework.rte.bat.core
+ ${egovframework.rte.version}
+
+
+
+ gpki
+ gpki
+ 1.5
+ system
+ ${project.basedir}/src/main/webapp/WEB-INF/lib/libgpkiapi_jni_1.5.jar
+
+
+
+
+ com.google.code.gson
+ gson
+ 2.8.5
+
+
+
+
+ com.thoughtworks.xstream
+ xstream
+ 1.3
+
+
+
+
+ org.jasypt
+ jasypt
+ 1.9.2
+
+
+
+
+
+ install
+ ${basedir}/target
+ ${artifactId}-${version}
+
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ 80
+ /
+
+ -Xms256m -Xmx768m -XX:MaxPermSize=256m
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+ org.codehaus.mojo
+ hibernate3-maven-plugin
+ 2.1
+
+
+
+ hbm2ddl
+ annotationconfiguration
+
+
+
+
+
+ org.hsqldb
+ hsqldb
+ 2.3.2
+
+
+
+
+
+ org.codehaus.mojo
+ emma-maven-plugin
+ 1.0-alpha-3
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.1
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+ once
+ xml
+
+ **/Abstract*.java
+ **/*Suite.java
+
+
+ **/*Test.java
+
+
+
+
+ org.codehaus.mojo
+ emma-maven-plugin
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.9.1
+
+
+
+
+ ${basedir}/target/site
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 2.7
+
+
+ sunlink
+
+ javadoc
+
+ true
+
+
+ http://docs.oracle.com/javase/6/docs/api/
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ emma-maven-plugin
+ true
+
+
+ org.codehaus.mojo
+ surefire-report-maven-plugin
+ true
+
+
+
+ report-only
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+ 128m
+ 512m
+ ${encoding}
+ ${encoding}
+ ${encoding}
+
+
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+
+ ${encoding}
+ ${encoding}
+ true
+ apidocs
+
+
+
+
+
diff --git a/src/main/java/com/inswave/config/batchConfig.properties b/src/main/java/com/inswave/config/batchConfig.properties
new file mode 100644
index 0000000..888d711
--- /dev/null
+++ b/src/main/java/com/inswave/config/batchConfig.properties
@@ -0,0 +1,3 @@
+#\ud30c\uc77c\uacbd\ub85c
+Globals.Batch.FullFilePath=C:\\WRM\\batchData\\
+
diff --git a/src/main/java/com/inswave/config/db.properties b/src/main/java/com/inswave/config/db.properties
new file mode 100644
index 0000000..176b1e0
--- /dev/null
+++ b/src/main/java/com/inswave/config/db.properties
@@ -0,0 +1,14 @@
+#driver=org.mariadb.jdbc.Driver
+#url=jdbc:mariadb://127.0.0.1:3306/WRM
+#username=APP
+#password=APP
+db.driver=com.tmax.tibero.jdbc.TbDriver
+#db.url=jdbc:tibero:thin:@115.21.123.108:8629:gtpadb
+db.url=jdbc:tibero:thin:@115.21.123.118:8629:gtpadevdb
+db.userName=dbuser_fis
+db.passWord=dbuser_fis
+db.initialSize=2
+db.maxTotal=2
+db.maxIdle=2
+db.minIdle=1
+db.maxWaitMills=20000
\ No newline at end of file
diff --git a/src/main/java/com/inswave/config/fisConfig.properties b/src/main/java/com/inswave/config/fisConfig.properties
new file mode 100644
index 0000000..4cdd796
--- /dev/null
+++ b/src/main/java/com/inswave/config/fisConfig.properties
@@ -0,0 +1,180 @@
+#nice\uc0ac\uc774\ud2b8\ucf54\ub4dc, \ube44\ubc00\ubc88\ud638
+Globals.Nice.Sitecode=EQ00
+Globals.Nice.Sitepw=76646885
+Globals.Nice.ProxyUrl=http://175.193.201.55:10110/fis/rest/api/getNiceCiInfo
+#Globals.Nice.ProxyUrl=http://127.0.0.1:10030/fis/rest/api/getNiceCiInfo
+Globals.Nice.Token=sha5120e6d1bdf446185e836fd61aa4c645ab0ff4161a4a5919f5d31ea4c2c5ca800bbb5d31f7fbbff2350ebb350f29b5e3ae8cd4a451789823532b8455e7929e578ee
+Globals.Nice.ContentType=application/x-www-form-urlencoded;charset=utf-8
+#\uc790\ub3d9\ucc28\uad00\ub9ac \uc815\ubcf4\uc2dc\uc2a4\ud15c \uacf5\ud1b5\uc815\ubcf4 Start
+
+#WSDL\uc8fc\uc18c
+#\uac1c\ubc1c
+Globals.CarBasicInfo.Wsdl.URL.Dev=http://10.98.198.199:9700/lvis/services/WsFrontController
+#\uc6b4\uc601
+Globals.CarBasicInfo.Wsdl.URL.Real=http://auto.car.go.kr:39700/lvis/services/WsFrontController
+#\ub2f4\ub2f9\uc790\uc8fc\ubbfc\ubc88\ud638
+Globals.Car.Charger.Ihinum=7505851452285
+#\ub2f4\ub2f9\uc790ip\uc5b4\ub4dc\ub808\uc2a4
+Globals.Car.ChargercIp.Adres=111.222.333.444
+#\ub2f4\ub2f9\uc790\uba85
+Globals.Car.Charger.Nm=\ub179\uc0c9\ucc28
+#\ub2f4\ub2f9\uc790\uc5f0\ub77d\ucc98
+Globals.Car.Charger.Wrc.Telno=02-7458-958
+#\uc815\ubcf4\uc2dc\uc2a4\ud15cid
+Globals.Car.Info.Sys.Id=11-261
+#\uc815\ubcf4\uc2dc\uc2a4\ud15cip
+Globals.Car.Info.Sys.Ip=98.42.34.216
+#\uc2dc\uad70\uad6c\ucf54\ub4dc
+Globals.Car.Sigungu.Code=11000
+#\uc11c\ube44\uc2a4id
+Globals.Car.Svc.Id=A01
+#\uc815\ubcf4\uc2dc\uc2a4\ud15cmac\uc5b4\ub4dc\ub808\uc2a4
+Globals.Car.Info.Sys.Macaddress=40A8F03DC2FC
+#\uc790\ub3d9\ucc28\uad00\ub9ac \uc815\ubcf4\uc2dc\uc2a4\ud15c \uacf5\ud1b5\uc815\ubcf4 End
+
+
+#\uc2a4\ub9c8\ud2b8\ud50c\ub7ab\ud3fc AccessToken
+Globals.Smart.AccessToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI4Z0dydlVpOUFheDliYUlHVExoXy1hIiwiaWF0IjoxNTU4NDEyOTgzLCJLRVkiOiJiMTI4NWE3MDBjOGU4OGQ2OGQ5OSJ9.bghQ62dTKgo9pYdc-sxw6MXoalGTeiSbxOVKsydfQKk
+#\uc2a4\ub9c8\ud2b8\ud50c\ub7ab\ud3fc \uac1c\ubc1cURL
+#Globals.Smart.Host=http://192.168.0.41:8888
+#\uc2a4\ub9c8\ud2b8\ud50c\ub7ab\ud3fc \uc6b4\uc601URL
+Globals.Smart.Host=http://192.168.201.144:8888
+
+#url \ubcc0\uacbd \uc791\uc5c5 -O:\ubcc0\uacbd\uc801\uc6a9, X:\ubbf8\uc0ac\uc6a9, replace:\ub300\uccb4 \uc0ac\uc6a9, \uadf8 \uc678\ub294 url\ubcc0\uacbd \uc5c6\uc774 \uc0ac\uc6a9 \uc911
+#\uc7a5\uc560\uc778\ucc28\ub7c9\uc5ec\ubd80-O
+Globals.Public.ReductionDisabledCarYnService.Url=http://10.188.225.25:29001/cmc/ynservice/swsdn/ReductionDisabledCarYnService
+#\uc800\uacf5\ud574\ucc28\ub7c9\uc5ec\ubd80-O
+Globals.Public.LowPollutionCarYnService.Url=http://10.50.3.97/cmc/ynservice/keco/LowPollutionCarYnService
+#\uc800\uacf5\ud574\ucc28\ub7c9\uc5ec\ubd80(\ud589\uc548\ubd80\uc6d0\uc7a5)
+Globals.Public.PubLowPollutionCarYnService.Url=http://10.188.225.25:29001/rid/ynservice/keco/PubLowPollutionCarYnService
+#\uad6d\uac00\uc720\uacf5\uc790\ucc28\ub7c9\uc5ec\ubd80-O
+Globals.Public.MeritCarYnService.Url=http://10.188.225.25:29001/cmc/ynservice/mpva/MeritCarYnService
+#\uacbd\ucc28\uc5ec\ubd80-O
+Globals.Public.ReductionTsCarInfoService.Url=http://10.50.3.97/cmc/infoservice/ts/ReductionTsCarInfoService
+#\uc804\uccb4\uc790\ub140\uc218\ud655\uc778URL
+Globals.Public.AllChldrnCoCnfirmService.Url=http://10.50.3.97/jmn/infoservice/jumin/AllChldrnCoBirthInfoService
+#\uae30\ucd08\uc0dd\ud65c\uc218\uae09\uc790-X
+Globals.Public.ReductionBscLivYnService.Url=http://10.50.3.97/rid/infoservice/swsdn/ReductionBscLivYnService
+#\uc790\ub3d9\ucc28\uc81c\uc6d0-O
+Globals.Public.TsCarRegisterInfoService.Url=http://10.50.3.97/cmc/infoservice/ts/TsCarRegisterInfoService
+#\uc7a5\uc560\uc778\uc5ec\ubd80-ReductionDisabledCarYnService replace
+Globals.Public.ReductionDisabledYnService.Url=http://10.50.3.97/rid/infoservice/swsdn/ReductionDisabledYnService
+#\uad6d\uac00\uc720\uacf5\uc790\uc790\uaca9\uc5ec\ubd80-O
+Globals.Public.NaManMeritFamInfoService.Url=http://10.188.225.25:29001/cmc/infoservice/mpva/NaManMeritFamInfoService
+#\ucc28\uc0c1\uc704\uc0ac\uc2e4\uc5ec\ubd80-X
+Globals.Public.ReductionPoorYnService.Url=http://10.50.3.97/rid/infoservice/swsdn/ReductionPoorYnService
+#\uad00\ub0b4\uac70\uc8fc\uc790\uaca9\uc5ec\ubd80
+Globals.Public.ResideInsttCnfirmService.Url=http://10.188.225.25:29001/cmc/infoservice/jumin/ResideInsttCnfirmService
+
+
+#ANPRiMGURL
+Globals.Anpr.Img1.Url=http://175.193.201.55:91/anprImages/
+Globals.Anpr.Img2.Url=http://175.193.201.56:91/anprImages/
+#localServerIP
+Globals.local.IP.A=98.42.34.216
+Globals.local.IP.B=98.42.34.217
+
+
+#webIp
+Globals.local.WebIP.A=175.193.201.55
+Globals.local.WebIP.B=175.193.201.56
+Globals.local.WebPorxyIP.A=http://175.193.201.55:10110
+Globals.local.WebPorxyIP.B=http://175.193.201.56:10110
+Globals.local.WebFISIP.A=http://175.193.201.55:91
+
+#\uc138\uc678\uc218\uc785URL
+Globals.Nxrp.Wsdl.Url.Dev=http://98.33.4.167:8082/BugaWebService/BugaWebService?wsdl
+Globals.Nxrp.Wsdl.Url.Real=http://98.33.4.164/BugaWebService/BugaWebService?wsdl
+Globals.Nxrp.Seizure.Wsdl.Url.Dev=http://98.33.4.167:8082/SntrSeizureInfoWebService/SntrSeizureInfoWebService?wsdl
+Globals.Nxrp.Seizure.Wsdl.Url.Real=http://98.33.4.164/SntrSeizureInfoWebService/SntrSeizureInfoWebService?wsdl
+Globals.Nxrp.FtpIp=98.33.1.157
+Globals.Nxrp.FtpId=sn_green
+Globals.Nxrp.FtpPw=tpdhl2023!
+Globals.Nxrp.FtpPort=22
+Globals.Nxrp.FtpDir=sntr_green
+
+#EtaxUrl
+Globals.Etax.Url.Dev=https://tetax2.seoul.go.kr/service/taxpay/sunap_status/
+Globals.Etax.Url.Real=https://etax.seoul.go.kr/service/taxpay/sunap_status/
+Globals.Etax.AccessKey.Dev=BD63C31E317938B8093C8F9AE60E9556
+Globals.Etax.AccessKey.Real=0561E4D7B99F2A98432FD0DA0A2D8623
+
+#SeoulSms
+Globals.Seoul.SmsId=greencar
+Globals.Seoul.SmsPw=shrtor$9^6
+Globals.Seoul.SmsUrl=http://115.84.164.23/SMS/ext_sms_send.do
+
+#\uc774\uadf8\ub9b0URL
+Globals.Epost.FtpIp=98.33.1.174
+Globals.Epost.FtpId=traffic1
+Globals.Epost.FtpPw=ryxhd$%1
+Globals.Epost.FtpPort=21
+Globals.Epost.FtpDir=/photo/ESB_AGENT/FILE/SEND/CG144523401150/
+Globals.Epost.FtpDirDev=/photo/ESB_AGENT/FILE/SEND/imsi/
+
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 Start
+#\uc804\uc790\uc11c\uba85\uc694\uccad
+#Globals.Kakao.Request.Host=https://gw-cert.kakao.com/api/sign/request/S510
+#Globals.Kakao.Request.Host=http://175.193.201.55:10110/api/sign/request/S510
+#Globals.Kakao.Request.Host=http://192.168.0.41:20110/api/sign/request/S510
+#\uc804\uc790\uc11c\uba85\uc0c1\ud0dc\uc870\ud68c
+#Globals.Kakao.Status.Host=https://gw-cert.kakao.com/api/v1/sign/status
+#Globals.Kakao.Status.Host=http://175.193.201.55:10110/api/v1/sign/status
+#Globals.Kakao.Status.Host=http://192.168.0.41:20110/api/v1/sign/status
+#\uc804\uc790\uc11c\uba85\ud1a0\ud070\uc720\ud6a8\uc131\uac80\uc99d
+#Globals.Kakao.Token.Host=https://gw-cert.kakao.com/api/sign/token/status
+#Globals.Kakao.Token.Host=http://175.193.201.55:10110/api/sign/token/status
+#Globals.Kakao.Token.Host=http://192.168.0.41:20110/api/sign/token/status
+
+#Globals.Kakao.ContentType=application/x-www-form-urlencoded;charset=utf-8
+
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 AccessToken \uac1c\ubc1c
+#Globals.Kakao.AccessToken=FE6842EA0F6F3D67765AAE3602B7F3F6364CD590C99873961551E3B1EBC0E6E7
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 AccessToken \uc6b4\uc601
+#Globals.Kakao.AccessToken=D8F83B102D01925F59B0A2408E68AD8E89AC503E3A65BD9D495653C17C86D463
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 End
+
+
+
+
+#kt \uc778\uc99d \uc815\ubcf4 Start
+#\uc804\uc790\uc11c\uba85\uc694\uccad
+#Globals.Kt.Request.Host=http://192.168.0.41:20110/api/mns/req
+#Globals.Kt.Request.Host=http://175.193.201.55:10110/api/mns/req
+#\ubc1c\uc1a1\uacb0\uacfc\uc774\ub825
+#Globals.Kt.Status.Host=http://192.168.0.41:20110/api/mns/rsp
+#Globals.Kt.Status.Host=http://175.193.201.55:10110/api/mns/rsp
+#\uc804\uc790\uc11c\uba85\ud1a0\ud070\uc720\ud6a8\uc131\uac80\uc99d
+#Globals.Kt.Token.Host=http://192.168.0.41:20110/api/mns/token/status
+#Globals.Kt.Token.Host=http://175.193.201.55:10110/api/mns/token/status
+
+#Globals.Kt.ContentType=application/json
+#kt \uc778\uc99d \uc815\ubcf4 AccessToken \uc6b4\uc601
+#Globals.Kt.AccessToken=a128f39a-a273-4b24-8f53-e637361f27da
+#kt \uc778\uc99d \uc815\ubcf4 serviceCd \uc6b4\uc601
+#Globals.Kt.ServiceCd=11001
+#kt \uc778\uc99d \uc815\ubcf4 serviceKey \uc6b4\uc601
+#Globals.Kt.ServiceKey=bJCipt45x7
+#kt \uc778\uc99d \uc815\ubcf4 BizCd \uc6b4\uc601
+#Globals.Kt.BizCd=11001
+#kt \uc778\uc99d \uc815\ubcf4 MsgCd \uc6b4\uc601
+#Globals.Kt.MsgCd=11000
+
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 End
+
+##############\ud589\uc548\ubd80\uc5f0\uacc4###################
+#\uc774\uc6a9\uc2dc\uc2a4\ud15c\ucf54\ub4dc
+#Globals.Public.Common.UseSystemCode=ESBTEST
+#GPKI \uc778\uc99d\uc11c \uc544\uc774\ub514
+#Globals.Public.Common.CertServerId=SVR6113918001
+#\uc774\uc6a9\uc790 \ubd80\uc11c\ucf54\ub4dc
+#Globals.Public.Common.UserDeptCode=1380000
+#\uc774\uc6a9\uc790\uba85
+#Globals.Public.Common.UserName=\ud64d\uae38\ub3d9
+
+
+#10.1.7.118:389 \uc778\uc99d\uc11c\ubc84
+
+
+
+
diff --git a/src/main/java/com/inswave/config/fisConfig_test.properties b/src/main/java/com/inswave/config/fisConfig_test.properties
new file mode 100644
index 0000000..e1d2274
--- /dev/null
+++ b/src/main/java/com/inswave/config/fisConfig_test.properties
@@ -0,0 +1,66 @@
+#nice\uc0ac\uc774\ud2b8\ucf54\ub4dc, \ube44\ubc00\ubc88\ud638
+Globals.Nice.Sitecode=EQ00
+Globals.Nice.Sitepw=76646885
+Globals.Nice.ProxyUrl=http://175.193.201.56:10110/fis/rest/api/getNiceCiInfo
+#Globals.Nice.ProxyUrl=http://127.0.0.1:10030/fis/rest/api/getNiceCiInfo
+Globals.Nice.Token=sha5120e6d1bdf446185e836fd61aa4c645ab0ff4161a4a5919f5d31ea4c2c5ca800bbb5d31f7fbbff2350ebb350f29b5e3ae8cd4a451789823532b8455e7929e578ee
+Globals.Nice.ContentType=application/x-www-form-urlencoded;charset=utf-8
+#\uc790\ub3d9\ucc28\uad00\ub9ac \uc815\ubcf4\uc2dc\uc2a4\ud15c \uacf5\ud1b5\uc815\ubcf4 Start
+
+#WSDL\uc8fc\uc18c
+#\uac1c\ubc1c
+#Globals.CarBasicInfo.Wsdl.URL=http://10.98.197.103:39700/lvis/services/WsFrontController
+#\uc6b4\uc601
+Globals.CarBasicInfo.Wsdl.URL=http://auto.car.go.kr:39700/lvis/services/WsFrontController
+ #\ub2f4\ub2f9\uc790\uc8fc\ubbfc\ubc88\ud638
+Globals.Car.Charger.Ihinum=7505851452285
+#\ub2f4\ub2f9\uc790ip\uc5b4\ub4dc\ub808\uc2a4
+Globals.Car.ChargercIp.Adres=111.222.333.444
+#\ub2f4\ub2f9\uc790\uba85
+Globals.Car.Charger.Nm=\ub179\uc0c9\ucc28
+#\ub2f4\ub2f9\uc790\uc5f0\ub77d\ucc98
+Globals.Car.Charger.Wrc.Telno=02-7458-958
+#\uc815\ubcf4\uc2dc\uc2a4\ud15cid
+Globals.Car.Info.Sys.Id=11-232
+#\uc815\ubcf4\uc2dc\uc2a4\ud15cip
+Globals.Car.Info.Sys.Ip=98.1.24.61
+#\uc2dc\uad70\uad6c\ucf54\ub4dc
+Globals.Car.Sigungu.Code=11110
+#\uc11c\ube44\uc2a4id
+Globals.Car.Svc.Id=A01
+#\uc815\ubcf4\uc2dc\uc2a4\ud15cmac\uc5b4\ub4dc\ub808\uc2a4
+Globals.Car.Info.Sys.Macaddress = 40A8F03DC2FC
+
+#\uc790\ub3d9\ucc28\uad00\ub9ac \uc815\ubcf4\uc2dc\uc2a4\ud15c \uacf5\ud1b5\uc815\ubcf4 End
+
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 Start
+#\uc804\uc790\uc11c\uba85\uc694\uccad
+#Globals.Kakao.Request.Host=https://gw-cert.kakao.com/api/sign/request/S510
+Globals.Kakao.Request.Host=http://175.193.201.55:10110/api/sign/request/S510
+#Globals.Kakao.Request.Host=http://192.168.0.41:20110/api/sign/request/S510
+#\uc804\uc790\uc11c\uba85\uc0c1\ud0dc\uc870\ud68c
+#Globals.Kakao.Status.Host=https://gw-cert.kakao.com/api/v1/sign/status
+Globals.Kakao.Status.Host=http://175.193.201.55:10110/api/v1/sign/status
+#Globals.Kakao.Status.Host=http://192.168.0.41:20110/api/v1/sign/status
+#\uc804\uc790\uc11c\uba85\ud1a0\ud070\uc720\ud6a8\uc131\uac80\uc99d
+#Globals.Kakao.Token.Host=https://gw-cert.kakao.com/api/sign/token/status
+Globals.Kakao.Token.Host=http://175.193.201.55:10110/api/sign/token/status
+#Globals.Kakao.Token.Host=http://192.168.0.41:20110/api/sign/token/status
+
+Globals.Kakao.ContentType=application/x-www-form-urlencoded;charset=utf-8
+
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 AccessToken \uac1c\ubc1c
+#Globals.Kakao.AccessToken=FE6842EA0F6F3D67765AAE3602B7F3F6364CD590C99873961551E3B1EBC0E6E7
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 AccessToken \uc6b4\uc601
+Globals.Kakao.AccessToken=D8F83B102D01925F59B0A2408E68AD8E89AC503E3A65BD9D495653C17C86D463
+#\uce74\uce74\uc624\ud1a1 \uc778\uc99d \uc815\ubcf4 End
+
+#\uc2a4\ub9c8\ud2b8\ud50c\ub7ab\ud3fc AccessToken
+Globals.Smart.AccessToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI4Z0dydlVpOUFheDliYUlHVExoXy1hIiwiaWF0IjoxNTU4NDEyOTgzLCJLRVkiOiJiMTI4NWE3MDBjOGU4OGQ2OGQ5OSJ9.bghQ62dTKgo9pYdc-sxw6MXoalGTeiSbxOVKsydfQKk
+#35\ubc88\uac1c\ubc1c
+#Globals.Smart.AccessToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI4dHpwUktkQlF5WjhNTjVXdFdzcll2IiwiaWF0IjoxNTU5NjMwMjM5LCJLRVkiOiJjNmQ2MjQ2MTI3OTA3MjE2ZmU2MSJ9.XbVTs6hT5LXGd3by64Gy-qf8QsSEGQ8ODODDBJc8ZJA
+#\uc2a4\ub9c8\ud2b8\ud50c\ub7ab\ud3fc \uac1c\ubc1cURL
+#Globals.Smart.Host=http://192.168.0.41:8888
+#\uc2a4\ub9c8\ud2b8\ud50c\ub7ab\ud3fc \uc6b4\uc601URL
+Globals.Smart.Host=http://192.168.201.144:8888
+
diff --git a/src/main/java/com/inswave/config/log4j.xml b/src/main/java/com/inswave/config/log4j.xml
new file mode 100644
index 0000000..14c9b7e
--- /dev/null
+++ b/src/main/java/com/inswave/config/log4j.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/inswave/config/quartzConfig.properties b/src/main/java/com/inswave/config/quartzConfig.properties
new file mode 100644
index 0000000..7093bf3
--- /dev/null
+++ b/src/main/java/com/inswave/config/quartzConfig.properties
@@ -0,0 +1,38 @@
+#============================================================================
+#============================================================================
+# Configure Main Scheduler Properties
+#============================================================================
+org.quartz.scheduler.instanceName=RHECMClusteredScheduler
+org.quartz.scheduler.instanceId=AUTO
+#============================================================================
+# Configure ThreadPool
+#============================================================================
+org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
+org.quartz.threadPool.threadCount=25
+org.quartz.threadPool.threadPriority=5
+#============================================================================
+# Configure JobStore
+#============================================================================
+org.quartz.jobStore.misfireThreshold=60000
+org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
+org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+org.quartz.jobStore.useProperties=false
+org.quartz.jobStore.dataSource=quartzDS
+#org.quartz.jobStore.tablePrefix=QRTZ_
+org.quartz.jobStore.tablePrefix=QRTZ_
+org.quartz.jobStore.isClustered=true
+org.quartz.jobStore.clusterCheckinInterval=20000
+#============================================================================
+# Configure Datasources
+#============================================================================
+org.quartz.dataSource.quartzDS.jndiURL=java:/comp/env/fis
+
+#org.quartz.dataSource.quartzDS.driver=org.h2.Driver
+#org.quartz.dataSource.quartzDS.URL=jdbc:h2:file:~/h2/jumpstart;AUTO_SERVER=TRUE;INIT=RUNSCRIPT FROM 'classpath:/com/inswave/config/quartzSchema.sql'
+#org.quartz.dataSource.quartzDS.URL=jdbc:h2:tcp://192.168.0.164:10031/~/sampledb;AUTO_SERVER=TRUE;INIT=RUNSCRIPT FROM 'classpath:/com/inswave/config/quartzSchema.sql'
+#org.quartz.dataSource.quartzDS.user=sa
+#org.quartz.dataSource.quartzDS.password =
+#org.quartz.dataSource.quartzDS.maxConnections=10
+#org.quartz.dataSource.quartzDS.validationQuery=select 1
+
+
diff --git a/src/main/java/com/inswave/config/quartzSchema.sql b/src/main/java/com/inswave/config/quartzSchema.sql
new file mode 100644
index 0000000..82eb8bc
--- /dev/null
+++ b/src/main/java/com/inswave/config/quartzSchema.sql
@@ -0,0 +1,193 @@
+--
+-- A HINT SUBMITTED BY A USER: ORACLE DB MUST BE CREATED AS "SHARED" AND THE
+-- JOB_QUEUE_PROCESSES PARAMETER MUST BE GREATER THAN 2
+-- HOWEVER, THESE SETTINGS ARE PRETTY MUCH STANDARD AFTER ANY
+-- ORACLE INSTALL, SO MOST USERS NEED NOT WORRY ABOUT THIS.
+--
+-- MANY OTHER USERS (INCLUDING THE PRIMARY AUTHOR OF QUARTZ) HAVE HAD SUCCESS
+-- RUNING IN DEDICATED MODE, SO ONLY CONSIDER THE ABOVE AS A HINT ;-)
+--
+
+DELETE FROM QRTZ_FIRED_TRIGGERS;
+DELETE FROM QRTZ_SIMPLE_TRIGGERS;
+DELETE FROM QRTZ_SIMPROP_TRIGGERS;
+DELETE FROM QRTZ_CRON_TRIGGERS;
+DELETE FROM QRTZ_BLOB_TRIGGERS;
+DELETE FROM QRTZ_TRIGGERS;
+DELETE FROM QRTZ_JOB_DETAILS;
+DELETE FROM QRTZ_CALENDARS;
+DELETE FROM QRTZ_PAUSED_TRIGGER_GRPS;
+DELETE FROM QRTZ_LOCKS;
+DELETE FROM QRTZ_SCHEDULER_STATE;
+
+DROP TABLE QRTZ_CALENDARS;
+DROP TABLE QRTZ_FIRED_TRIGGERS;
+DROP TABLE QRTZ_BLOB_TRIGGERS;
+DROP TABLE QRTZ_CRON_TRIGGERS;
+DROP TABLE QRTZ_SIMPLE_TRIGGERS;
+DROP TABLE QRTZ_SIMPROP_TRIGGERS;
+DROP TABLE QRTZ_TRIGGERS;
+DROP TABLE QRTZ_JOB_DETAILS;
+DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS;
+DROP TABLE QRTZ_LOCKS;
+DROP TABLE QRTZ_SCHEDULER_STATE;
+
+
+CREATE TABLE QRTZ_JOB_DETAILS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ JOB_NAME VARCHAR2(200) NOT NULL,
+ JOB_GROUP VARCHAR2(200) NOT NULL,
+ DESCRIPTION VARCHAR2(250) NULL,
+ JOB_CLASS_NAME VARCHAR2(250) NOT NULL,
+ IS_DURABLE VARCHAR2(1) NOT NULL,
+ IS_NONCONCURRENT VARCHAR2(1) NOT NULL,
+ IS_UPDATE_DATA VARCHAR2(1) NOT NULL,
+ REQUESTS_RECOVERY VARCHAR2(1) NOT NULL,
+ JOB_DATA BLOB NULL,
+ CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+CREATE TABLE QRTZ_TRIGGERS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ JOB_NAME VARCHAR2(200) NOT NULL,
+ JOB_GROUP VARCHAR2(200) NOT NULL,
+ DESCRIPTION VARCHAR2(250) NULL,
+ NEXT_FIRE_TIME NUMBER(13) NULL,
+ PREV_FIRE_TIME NUMBER(13) NULL,
+ PRIORITY NUMBER(13) NULL,
+ TRIGGER_STATE VARCHAR2(16) NOT NULL,
+ TRIGGER_TYPE VARCHAR2(8) NOT NULL,
+ START_TIME NUMBER(13) NOT NULL,
+ END_TIME NUMBER(13) NULL,
+ CALENDAR_NAME VARCHAR2(200) NULL,
+ MISFIRE_INSTR NUMBER(2) NULL,
+ JOB_DATA BLOB NULL,
+ CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+ REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+CREATE TABLE QRTZ_SIMPLE_TRIGGERS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ REPEAT_COUNT NUMBER(7) NOT NULL,
+ REPEAT_INTERVAL NUMBER(12) NOT NULL,
+ TIMES_TRIGGERED NUMBER(10) NOT NULL,
+ CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE QRTZ_CRON_TRIGGERS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ CRON_EXPRESSION VARCHAR2(120) NOT NULL,
+ TIME_ZONE_ID VARCHAR2(80),
+ CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE QRTZ_SIMPROP_TRIGGERS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ STR_PROP_1 VARCHAR2(512) NULL,
+ STR_PROP_2 VARCHAR2(512) NULL,
+ STR_PROP_3 VARCHAR2(512) NULL,
+ INT_PROP_1 NUMBER(10) NULL,
+ INT_PROP_2 NUMBER(10) NULL,
+ LONG_PROP_1 NUMBER(13) NULL,
+ LONG_PROP_2 NUMBER(13) NULL,
+ DEC_PROP_1 NUMERIC(13,4) NULL,
+ DEC_PROP_2 NUMERIC(13,4) NULL,
+ BOOL_PROP_1 VARCHAR2(1) NULL,
+ BOOL_PROP_2 VARCHAR2(1) NULL,
+ CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE QRTZ_BLOB_TRIGGERS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ BLOB_DATA BLOB NULL,
+ CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE QRTZ_CALENDARS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ CALENDAR_NAME VARCHAR2(200) NOT NULL,
+ CALENDAR BLOB NOT NULL,
+ CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
+);
+CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE QRTZ_FIRED_TRIGGERS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ ENTRY_ID VARCHAR2(95) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ INSTANCE_NAME VARCHAR2(200) NOT NULL,
+ FIRED_TIME NUMBER(13) NOT NULL,
+ SCHED_TIME NUMBER(13) NOT NULL,
+ PRIORITY NUMBER(13) NOT NULL,
+ STATE VARCHAR2(16) NOT NULL,
+ JOB_NAME VARCHAR2(200) NULL,
+ JOB_GROUP VARCHAR2(200) NULL,
+ IS_NONCONCURRENT VARCHAR2(1) NULL,
+ REQUESTS_RECOVERY VARCHAR2(1) NULL,
+ CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID)
+);
+CREATE TABLE QRTZ_SCHEDULER_STATE
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ INSTANCE_NAME VARCHAR2(200) NOT NULL,
+ LAST_CHECKIN_TIME NUMBER(13) NOT NULL,
+ CHECKIN_INTERVAL NUMBER(13) NOT NULL,
+ CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
+);
+CREATE TABLE QRTZ_LOCKS
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ LOCK_NAME VARCHAR2(40) NOT NULL,
+ CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME)
+);
+
+CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY);
+CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP);
+
+CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME);
+CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
+CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME);
+CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
+CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
+CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
+
+CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME);
+CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
+CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
+CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
+
+
diff --git a/src/main/java/com/inswave/config/websquareConfig.properties b/src/main/java/com/inswave/config/websquareConfig.properties
new file mode 100644
index 0000000..b5f8c94
--- /dev/null
+++ b/src/main/java/com/inswave/config/websquareConfig.properties
@@ -0,0 +1,10 @@
+w5xml.login=/cm/main/login.xml
+w5xml.defIndex=/cm/main/index_tabControl.xml
+w5xml.main.tab=/cm/main/index_tabControl.xml
+w5xml.main.win=/cm/main/index_windowContainer.xml
+w5xml.auth.check=/cm/main/auth_check.xml
+main.setting.default.layout=W
+main.setting.default.isUseShortCut=Y
+main.setting.code.DB=D
+main.setting.code.LS=L
+system.admin.id=fisadmin,sysmanager
\ No newline at end of file
diff --git a/src/main/java/com/inswave/interceptor/SessionCheckInterceptor.java b/src/main/java/com/inswave/interceptor/SessionCheckInterceptor.java
new file mode 100644
index 0000000..e559681
--- /dev/null
+++ b/src/main/java/com/inswave/interceptor/SessionCheckInterceptor.java
@@ -0,0 +1,97 @@
+package com.inswave.interceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.inswave.util.UserInfo;
+
+public class SessionCheckInterceptor extends HandlerInterceptorAdapter {
+
+ @Autowired
+ private UserInfo userInfo;
+
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+ String loginInfo = null;
+ HttpSession session = request.getSession();
+ String reqUrl = request.getRequestURI();
+ String w2xPath = request.getParameter("w2xPath");
+ boolean result = true;
+ //System.out.println("reqUrl111111 : " + reqUrl);
+ try {
+ /* 공통 추가로 인한 사용자 코드 변경(기존 사용자ID = EMP_CD, 변경된 공통 사용자ID = USER_ID) 2019.10.30 */
+ //loginInfo = (String) session.getAttribute("EMP_CD");
+ loginInfo = (String) session.getAttribute("USER_ID");
+
+ if (loginInfo != null) {
+ userInfo.setUserInfo(session);
+ } else {
+ if (!isSkipURI(request)) {
+ if ((w2xPath != null) || (reqUrl.indexOf(".xml") > -1)) {
+ // 웹스퀘어 화면 호출 시 세션이 종료된 경우, 로그인 페이지로 Redirect 처리한다.
+ result = false;
+ response.setContentType("text/xml");
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().write("");
+ response.getWriter().write("");
+ response.getWriter().write("
");
+ response.getWriter().write("");
+ response.getWriter().write("");
+ response.getWriter().write("");
+ response.getWriter().write("");
+ response.getWriter().write("");
+ response.getWriter().write("");
+ } else {
+ // 서비스 호출 시 세션이 종료된 경우, Session 종료 Alert 후, 로그인 페이지로 Redirect 처리 한다.
+ result = false;
+ response.setContentType("application/json");
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().write("{\"rsMsg\":{\"statusCode\":\"E\", \"errorCode\" : \"E0001\", \"message\":\"Session이 종료 되었습니다.\",\"status\":\"Error\"}}");
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ /**
+ * Session 체크 대상에서 예외 URI 구성
+ *
+ * @date 2016. 8. 29.
+ * @param argument
+ * 파라미터 정보
+ * @returns 반환 변수 및 객체
+ * @author InswaveSystems
+ * @example 샘플 코드
+ */
+ private boolean isSkipURI(HttpServletRequest request) {
+
+ String[] skipUrl = { "/", "/I18N" };
+ boolean result = false;
+ String uri = (request.getRequestURI()).replace(request.getContextPath(), "");
+ //스마트플랫폼에서 호출을 하면 SessionInterceptor에서 로그인 예외처리가 안됨..html폼에서 전송하면 되는데...ㅠ 여기에서 예외처리함API만
+ if (uri.indexOf("/fis/rest/api/") > -1)
+ {
+ result = true;
+ }
+ else{
+ for (int i = 0; i < skipUrl.length; i++) {
+ if (uri.equals(skipUrl[i])) {
+ result = true;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/AuthorityController.java b/src/main/java/com/inswave/template/controller/AuthorityController.java
new file mode 100644
index 0000000..3bc3df9
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/AuthorityController.java
@@ -0,0 +1,184 @@
+package com.inswave.template.controller;
+
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.AuthorityService;
+import com.inswave.util.Result;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class AuthorityController {
+
+ @Autowired
+ private AuthorityService authorityService;
+
+ /**
+ * selectAuthoritySearchItem - 권한 아이템 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} 없음
+ * @returns mv dlt_authroitySearchItem ( 권한 아이템 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/authority/selectAuthoritySearchItem")
+ public @ResponseBody Map selectAuthoritySearchItem() {
+ Result result = new Result();
+ try {
+ result.setData("dlt_authoritySearchItem", authorityService.selectAuthoritySearchItem());
+ result.setMsg(result.STATUS_SUCESS, "권한 아이템 리스트가 조회 되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "권한 아이템 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ result.setMsg(result.STATUS_ERROR, "권한 아이템 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * selectAuthorityList - 조건에 따라 권한 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_search { TYPE :"권한명 또는 권한 코드", CONTENTS :"검색어", IS_USE :"사용여부" }
+ * @returns mv dlt_authroity ( 권한 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/authority/selectAuthorityList")
+ public @ResponseBody Map selectAuthorityList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_authority", authorityService.selectAuthorityList((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "권한 리스트가 조회 되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "권한 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * selectAuthorityMemberList - 조건에 따라 권한이 부여된 사용자 리스트를 불러온다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_authority { AUTHORITY_CD :"권한 코드" }
+ * @returns mv dlt_authroityMember ( 권한이 부여된 사용자 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/authority/selectAuthorityMemberList")
+ public @ResponseBody Map selectAuthorityMemberList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_authorityMember", authorityService.selectAuthorityMemberList((Map) param.get("dma_authority")));
+ result.setMsg(result.STATUS_SUCESS, "권한(" + (String) ((Map) param.get("dma_authority")).get("AUTHORITY_CD") + ")이 부여된 사용자 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ result.setMsg(result.STATUS_ERROR, "권한이 부여된 사용자 정보를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * excludeSelectAuthorityMemberList - 권한이 부여되지 않은 직원리스트를 검색조건에 따라 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_search { TYPE :"사원코드 또는 사원명", CONTENTS :"검색어", AUTHORITY_CD :"권한코드" }
+ * @returns mv dlt_member ( 권한이 부여되지 않은 직원 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/authority/excludeSelectAuthorityMemberList")
+ public @ResponseBody Map excludeSelectAuthorityMemberList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_member", authorityService.excludeSelectAuthorityMemberList((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "권한이 부여되지 않은 직원 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ result.setMsg(result.STATUS_ERROR, "권한이 부여되지 않은 직원 리스트 조회중 오류가 발생하였습니다.,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * saveAuthority - 권한리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_authority ( 권한관리 상태인( C,U,D ) 리스트 ), dma_search ( 조회조건 )
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_authority( 변경된 권한리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/authority/saveAuthority")
+ public @ResponseBody Map saveAuthority(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = authorityService.saveAuthority((List) param.get("dlt_authority"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_authority", authorityService.selectAuthorityList((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS,
+ "권한이 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : " + (String) hash.get("DCNT") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "권한 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * saveAuthorityMember 권한별 등록사원 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_authorityMember ( 권한관리 상태인( C,U,D ) 리스트 ), dma_search ( 조회조건 )
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_authorityMember( 변경된 권한 사용자 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/authority/saveAuthorityMember")
+ public @ResponseBody Map saveAuthorityMember(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = authorityService.saveAuthorityMember((List) param.get("dlt_authorityMember"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_authorityMember", authorityService.selectAuthorityMemberList((Map) param.get("dma_authority")));
+ result.setMsg(result.STATUS_SUCESS, "권한 사용자가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "권한 사용자 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * saveAuthorityAll - 권한 및 권한별 사원정보를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_authority ( 상태인( C,U,D ) 권한 리스트 ), dlt_authorityMember ( 상태인( C,U,D ) 권한별 등록사원 리스트 )
+ * @returns mv dlt_result (입력,수정,삭제된 건수 및 상태)
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping("/authority/saveAuthorityAll")
+ public @ResponseBody Map saveAuthorityAll(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = authorityService.saveAuthorityAll((List) param.get("dlt_authority"), (List) param.get("dlt_authorityMember"));
+
+ result.setData("dma_result_All", hash);
+ result.setMsg(result.STATUS_SUCESS,
+ "권한 및 권한별 사원정보 정보가 저장 되었습니다. 입력 권한 건수: " + (String) hash.get("ICNT_AUTH") + "건 :: 입력 권한별사원 건수: " + (String) hash.get("ICNT_MEM")
+ + "건 :: 수정 권한 건수: " + (String) hash.get("UCNT_AUTH") + "건 :: 수정 권한별사원 건수: " + (String) hash.get("UCNT_MEM") + "건 :: 삭제 권한 건수: "
+ + (String) hash.get("DCNT_AUTH") + "건 :: 삭제 권한별사원 건수: " + (String) hash.get("DCNT_MEM") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "권한 및 권한별 사원정보 삭제도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/CommonController.java b/src/main/java/com/inswave/template/controller/CommonController.java
new file mode 100644
index 0000000..e058e07
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/CommonController.java
@@ -0,0 +1,257 @@
+package com.inswave.template.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.CommonService;
+import com.inswave.util.Result;
+import com.inswave.util.UserInfo;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class CommonController {
+
+ @Autowired
+ private CommonService commonService;
+
+ @Autowired
+ private UserInfo user;
+
+ /**
+ * selectCommonSearchItem - 공통코드 아이템 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} 없음
+ * @returns mv dlt_commonSearchItem ( 공통코드 아이템 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/selectCommonSearchItem")
+ public @ResponseBody Map selectCommonSearchItem() {
+ Result result = new Result();
+
+ try {
+ result.setData("dlt_commonSearchItem", commonService.selectCommonSearchItem());
+ result.setMsg(result.STATUS_SUCESS, "공통코드 아이템 리스트가 조회 되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통코드 아이템 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * CommonCode - 모든 공통코드를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} 없음
+ * @returns mv List : 공통코드 전체 리스트
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/selectCommonCode")
+ public @ResponseBody Map selectCommonCode() {
+ Result result = new Result();
+ try {
+ result.setData("dlt_commonCode", commonService.selectCommonCodeAll());
+ result.setMsg(result.STATUS_SUCESS, "공통코드 전체가 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통코드 정보를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * selectMenuList - 조회조건에 따른 메뉴 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_userInfo { EMP_CD :"사용자 ID" }
+ * @returns mv List ( 사용자의 메뉴 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/selectMenuList")
+ public @ResponseBody Map selectMenuList() {
+ Result result = new Result();
+ try {
+ result.setData("dlt_menu", commonService.selectMenuList(user.getUserInfo()));
+ result.setMsg(result.STATUS_SUCESS, "메뉴정보가 정상 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "메뉴정보 조회도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * CommonCodeList - 조회조건에 따른 공통코드 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_commonGrp { GRP_CD : "공통그룹 코드" }
+ * @returns mv dlt_commonCode ( 공통코드 리스트 );
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/selectCommonCodeList")
+ public @ResponseBody Map selectCommonCodeList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_commonCode", commonService.selectCommonCodeList((Map) param.get("dma_commonGrp")));
+ result.setMsg(result.STATUS_SUCESS, "공통코드(" + ((Map) param.get("dma_commonGrp")).get("GRP_CD") + ") 리스트가 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통코드 정보(" + ((Map) param.get("dma_commonGrp")).get("GRP_CD") + ")를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ @RequestMapping("/common/selectCommonGroup")
+ public @ResponseBody Map selectCommonGroup(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_commonGrp", commonService.selectCommonGroup((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "공통코드 그룹 리스트가 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통코드 그룹 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateCommonGrpAll - 공통그룹 리스트 및 하위 코드정보를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_commonGrp ( 공통코드그룹 상태인( C,U,D ) 리스트 ), dlt_commonCode ( 공통코드 상태인( C,U,D ) 리스트 )
+ * @returns mv dlt_result (입력,수정,삭제된 건수 및 상태)
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/updateCommonGrpAll")
+ public @ResponseBody Map updateCommonGrpAll(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = commonService.saveCodeGrpListAll((List) param.get("dlt_commonGrp"), (List) param.get("dlt_commonCode"));
+
+ result.setData("dma_result_All", hash);
+ result.setMsg(result.STATUS_SUCESS,
+ "공통그룹 리스트 및 하위 코드 정보가 저장 되었습니다. 입력 그룹코드 건수: " + (String) hash.get("ICNT_GRP") + "건 :: 입력 세부코드 건수: " + (String) hash.get("ICNT_CODE")
+ + "건 :: 수정 그룹코드 건수: " + (String) hash.get("UCNT_GRP") + "건 :: 수정 세부코드 건수: " + (String) hash.get("UCNT_CODE")
+ + "건 :: 삭제 그룹코드 건수: " + (String) hash.get("DCNT_GRP") + "건 :: 삭제 세부코드 건수: " + (String) hash.get("DCNT_CODE") + "건");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통그룹 리스트 및 하위 코드 정보 저장 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateCommonGrp - 공통그룹 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_commonGrp ( 공통코드그룹 상태인( C,U,D ) 리스트 ), dma_search ( 조회조건 )
+ * @returns mv dlt_result (입력,수정,삭제된 건수 및 상태), dlt_commonGrp ( 공통코드 그룹 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/updateCommonGrp")
+ public @ResponseBody Map updateCommonGrp(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = commonService.saveCodeGrpList((List) param.get("dlt_commonGrp"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_commonGrp", commonService.selectCommonGroup((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "공통 코드 그룹이 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통 코드 그룹 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * CommonCodeUpdate - 공통그룹코드 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_commonCode ( 공통코드 상태인( C,U,D ) 리스트 ), dma_commonGrp ( 조회조건 )
+ * @returns mv dma_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_commonCode ( 공통코드 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/selectCommonCodeUpdate")
+ public @ResponseBody Map selectCommonCodeUpdate(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = commonService.saveCodeList((List) param.get("dlt_commonCode"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_commonCode", commonService.selectCommonCodeList((Map) param.get("dma_commonGrp")));
+ result.setMsg(result.STATUS_SUCESS, "공통 코드가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통 코드 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * GetCodeList - 공통코드 조회 dma_commonCode : {GRP_CD:"02,01", DATA_PREFIX:"dlt_code"} GRP_CD : 코드값,코드값 DATA_PREFIX :
+ * "Data객체의 ID prefix 없을 경우 dlt_commonCode_"
+ *
+ * @date 2017.12.22
+ * @param param {dma_commonCode : {GRP_CD:"02,01", DATA_PREFIX:"dlt_code"}}
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/common/selectCodeList")
+ public @ResponseBody Map selectCodeList(@RequestBody Map param) {
+ Result result = new Result();
+ Map commonCode;
+ String GRP_CD;
+ String dataIdPrefix;
+ String[] selectCodeList;
+ try {
+ commonCode = (Map) param.get("dma_commonCode");
+ GRP_CD = (String) commonCode.get("GRP_CD");
+ dataIdPrefix = (String) commonCode.get("DATA_PREFIX");
+
+ if (dataIdPrefix == null) {
+ dataIdPrefix = "dlt_commonCode_";
+ }
+ selectCodeList = GRP_CD.split(",");
+ commonCode.put("CODE", selectCodeList);
+
+ List codeList = commonService.selectCodeList(commonCode);
+
+ int size = codeList.size();
+ String preCode = "";
+ List codeGrpList = null;
+ for (int i = 0; i < size; i++) {
+ Map codeMap = (Map) codeList.remove(0);
+ String grp_cd = (String) codeMap.get("GRP_CD");
+ if (!preCode.equals(grp_cd)) {
+ if (codeGrpList != null) {
+ result.setData(dataIdPrefix + preCode, codeGrpList);
+ }
+ preCode = grp_cd;
+ codeGrpList = new ArrayList();
+ codeGrpList.add(codeMap);
+ } else {
+ codeGrpList.add(codeMap);
+ }
+
+ if (i == size - 1) {
+ result.setData(dataIdPrefix + preCode, codeGrpList);
+ }
+ }
+
+ result.setMsg(result.STATUS_SUCESS, "공통코드 조회가 완료되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "공통코드 조회중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/inswave/template/controller/FileController.java b/src/main/java/com/inswave/template/controller/FileController.java
new file mode 100644
index 0000000..5d3465d
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/FileController.java
@@ -0,0 +1,108 @@
+package com.inswave.template.controller;
+
+import java.util.HashMap;
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.FileService;
+import com.inswave.template.service.MenuService;
+import com.inswave.util.Result;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+@SuppressFBWarnings
+@Controller
+public class FileController {
+
+ @Autowired
+ private FileService fileService;
+
+ // 파일그룹 조회
+ @RequestMapping("/file/selectFileGrp")
+ public @ResponseBody Map selectFileGrp(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_fileGroup", fileService.selectFileGrp((Map) param.get("dma_fileGrp")));
+ result.setMsg(result.STATUS_SUCESS, "조회가 완료되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "조회 중에 오류가 발생했습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ // 파일그룹 insert
+ @RequestMapping("/file/insertFileGrp")
+ public @ResponseBody Map insertFileGrp(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ fileService.insertFileGrp((Map) param.get("dma_fileGrp"));
+ result.setMsg(result.STATUS_SUCESS, "저장이 완료되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "저장 중에 오류가 발생했습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ // 파일목록 insert
+ @RequestMapping("/file/insertFileList")
+ public @ResponseBody Map insertFileList(@RequestBody Map param) {
+ Result result = new Result();
+ //Map hash = new HashMap();
+ try {
+ // dlt_insertList (request)
+ fileService.insertFileList((List) param.get("dlt_insertList"));
+
+ //fileService.insertFileList((Map) param.get("dma_fileGrp"));
+ //hash.put("family", service.saveMemberFamily((List) param.get("family")));
+ //result.setData("data", hash);
+ //fileService.insertFileList((Map) param.get("dma_fileInfo")); // dlt_insertList
+
+ System.out.println("\n\n\n\n\n ##### param : "+param);
+
+// fileService.insertFileList((List) param.get("aa")); // dlt_insertList
+//
+//
+// result.setMsg(result.STATUS_SUCESS, "저장이 완료되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "저장 중에 오류가 발생했습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ // 파일 목록 조회
+ @RequestMapping("/file/searchFileList")
+ public @ResponseBody Map searchFileList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ fileService.searchFileList((Map) param.get("dma_searchFile"));
+ result.setMsg(result.STATUS_SUCESS, "조회가 완료되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "조회 중에 오류가 발생했습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ // 파일 다운로드
+ // TODO
+ @RequestMapping("/file/downloadFile")
+ public @ResponseBody Map downloadFile(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ // 실제 파일명 조회 후
+ // 실제 파일명이 1건인 경우 파일 다운로드, 2건 이상일 경우 zip 파일 다운로드
+ //result.setData("dlt_menu", menuService.selectMenu((Map) param.get("dma_search")));
+ //result.setMsg(result.STATUS_SUCESS, "메뉴 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ //result.setMsg(result.STATUS_ERROR, "메뉴 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+
+}
diff --git a/src/main/java/com/inswave/template/controller/InitController.java b/src/main/java/com/inswave/template/controller/InitController.java
new file mode 100644
index 0000000..98dee43
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/InitController.java
@@ -0,0 +1,131 @@
+package com.inswave.template.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Properties;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+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.servlet.ModelAndView;
+
+import com.inswave.template.service.MemberService;
+import com.inswave.util.PageURIUtil;
+import com.inswave.util.UserInfo;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class InitController {
+
+ @Autowired
+ private MemberService service;
+
+ @Autowired
+ private UserInfo userInfo;
+
+ public InitController() {
+ }
+
+ /**
+ * 다국어 처리 Root Url 처리
+ *
+ * @date 2017.12.22
+ * @author Inswave
+ * @example websquare 진입 후 세션과 설정 값에 따른 화면 xml 분기를 위한 controller. 고려 대상은 websquare.jsp와 I18N.jsp. 화면 페이지의 정보는 properties파일에서 일괄 관리.
+ * @todo 차후 interceptor에서 일괄 처리 가능한지 체크 해야 함.
+ */
+ @RequestMapping("/I18N")
+ public String indexMultiLang(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
+ model.addAttribute("movePage", getLoginPage(request.getParameter("w2xPath")));
+ return "websquare/I18N";
+ }
+
+ /**
+ *
+ * 기본 Root Url 처리
+ *
+ * @date 2017.12.22
+ * @author Inswave
+ * @todo url의 경로가 /(root)인 경우 웹스퀘어 엔진에서 하위 컨텐츠 로딩 부분의 특이사항이 발견되어 redirect로 처리.수정 및 개선 필요.
+ */
+ @RequestMapping(value = "/", method = RequestMethod.GET)
+ public String IndexBase(HttpServletRequest request, Model model) throws Exception {
+ model.addAttribute("movePage", getLoginPage(request.getParameter("w2xPath")));
+ return "websquare/websquare";
+ }
+
+ /**
+ *
+ * WebSquare Url 처리한다.
+ *
+ * @date 2017.12.22
+ * @author Inswave
+ * @todo url의 경로가 /(root)인 경우 웹스퀘어 엔진에서 하위 컨텐츠 로딩 부분의 특이사항이 발견되어 redirect로 처리.수정 및 개선 필요.
+ */
+ @RequestMapping(value = "/ws", method = RequestMethod.GET)
+ public String IndexWebSquare(HttpServletRequest request, Model model) throws Exception {
+ return "websquare/websquare";
+ }
+
+ /**
+ * SPA IFrame에서 호출하는 Blank 페이지를 반환하다.
+ * @param request
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "/blank.xml", method = RequestMethod.GET)
+ public String callBlankPage(HttpServletRequest request, Model model) throws Exception {
+ return "websquare/blank";
+ }
+
+ /**
+ * 로그인 페이지 Url을 반환한다.
+ *
+ * @param w2xPath w2xPath 파라미터
+ * @return 로그인 페이지 Url
+ */
+ private String getLoginPage(String w2xPath) {
+ String movePage = w2xPath;
+
+ // session이 없을 경우 login 화면으로 이동.
+ if (!userInfo.isLogined()) {
+ // session이 있고 w2xPath가 없을 경우 index화면으로 이동.
+ movePage = PageURIUtil.getLoginPage();
+ } else {
+ if (movePage == null) {
+ // DB 설정조회 초기 page 구성
+ movePage = PageURIUtil.getIndexPageURI(userInfo.getMainLayoutCode());
+
+ // DB에 값이 저장되어 있지 않은 경우 기본 index화면으로 이동
+ if (movePage == null) {
+ movePage = PageURIUtil.getIndexPageURI();
+ }
+ }
+ }
+ return movePage;
+ }
+
+ /**
+ * refresh
+ * @param request
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "/refresh", method = RequestMethod.GET)
+ public String callRefreshPage(HttpServletRequest request, Model model) {
+ return "websquare/refresh";
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/LoginController.java b/src/main/java/com/inswave/template/controller/LoginController.java
new file mode 100644
index 0000000..e2dc6ff
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/LoginController.java
@@ -0,0 +1,305 @@
+package com.inswave.template.controller;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+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.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.inswave.template.service.CommonService;
+import com.inswave.template.service.LoginService;
+import com.inswave.util.Result;
+import com.inswave.util.UserInfo;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import gtpa.fis.comm.CommonUtil;
+
+@SuppressFBWarnings
+@Controller
+public class LoginController {
+
+ static Logger logger = Logger.getLogger(LoginController.class.getName());
+
+ @Autowired
+ private LoginService loginService;
+
+ @Autowired
+ private CommonService commonService;
+
+ @Autowired
+ private UserInfo user;
+
+ /**
+ * logout session 삭제 성공 : redirect로 기본 페이지 이동. session 삭제 오류 : 기존 화면으로 오류 메세지 전송
+ *
+ * @date 2017.12.22
+ * @returns modelAndView
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping(value = "/main/logout")
+ public @ResponseBody Map logout(HttpServletRequest request, HttpServletResponse response) {
+ Result result = new Result();
+ try {
+ result.setMsg(Result.STATUS_SUCESS, "정상적으로 로그아웃 되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(Result.STATUS_ERROR, "로그아웃 도중 오류가 발생하였습니다.", ex);
+ } finally {
+ request.getSession().invalidate();
+ user.init();
+ }
+ return result.getResult();
+ }
+
+ /**
+ * login - 요청받은 아이디, 비밀번호를 회원DB와 비교한다.
+ *
+ * @date 2017.12.22
+ * @param dma_loginCheck { EMP_CD:"사원코드", PASSWORD:"비밀번호" }
+ * @returns mv dma_resLoginCheck { EMP_CD:"사원코드", EMP_NM:"사원명", LOGIN:"상태" }
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping(value = "/main/login")
+ public @ResponseBody Map login(@RequestBody Map param, HttpServletRequest request, HttpServletResponse response) {
+ HttpSession session = request.getSession();
+ Map memberMap = null;
+ String status = null;
+ Map loginParam = null;
+
+ Result result = new Result();
+ try {
+ // loginParam은 param(EMP_CD/PW)의 값을 꺼내는 용도
+ loginParam = (Map) param.get("dma_loginCheck");
+
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.16 */
+ //memberMap = loginService.selectMemberInfoForLogin(loginParam);
+ memberMap = loginService.selectComMemberInfoForLogin(loginParam);
+
+ status = (String) memberMap.get("LOGIN");
+
+ // 로그인 성공
+ if (status.equals("success")) {
+ String mainLayout = (String) memberMap.get("MAIN_LAYOUT_PAGE_CODE");
+ String isUseShortCut = (String) memberMap.get("IS_USE_SHORTCUT");
+
+ // main setting에 값이 저장되어 있지 않는 경우 insert.
+ if (mainLayout == null) {
+ mainLayout = user.getDefaultMainLayoutCode();
+ }
+
+ session.setAttribute("USER_ID", (String) memberMap.get("USER_ID"));
+ session.setAttribute("EMP_CD", (String) memberMap.get("EMP_CD"));
+ session.setAttribute("EMP_NM", (String) memberMap.get("EMP_NM"));
+ session.setAttribute("MAIN_LAYOUT_PAGE_CODE", mainLayout);
+ session.setAttribute("IS_USE_SHORTCUT", isUseShortCut);
+
+ // 로그인한 아이디가 시스템 관리자인지 여부를 체크한다.
+ // 시스템 관리자 아이디는 websquareConfig.properties 파일의 system.admin.id 속성에 정의하면 된다.
+ // 시스템 관자자 아이디가 여러 개일 경우 콤마(",") 구분해서 작성할 수 있다.
+
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.16 */
+ //boolean isAdmin = loginService.isAdmin((String) memberMap.get("EMP_CD"));
+ boolean isAdmin = loginService.isAdmin((String) memberMap.get("USER_ID"));
+ session.setAttribute("IS_ADMIN", isAdmin);
+
+ // 클라이언트(UI)에 전달하는 IS_ADMIN 정보는 관리자인지의 여부에 따라 화면 제어가 필요한 로직 처리를 위해서만 사용한다.
+ // 서버 서비스에서의 로직 처리는 보안을 위해서 클라이언트에서 전달하는 IS_ADMIN 정보가 아닌
+ // 서버 서비스에서 관리하는 UserInfo.getIsAdmin()에서 관리자 여부를 받아와서 판단해야 한다.
+
+ // 메뉴 정보 가져오기
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.16 */
+ //List sessionMList = commonService.selectMenuList(memberMap);
+ List sessionMList = commonService.selectComMenuList(memberMap);
+ session.setAttribute("MENU_LIST", (List) sessionMList);
+
+ user.setUserInfo(session);
+
+ result.setMsg(Result.STATUS_SUCESS, "로그인 성공");
+ } else if (status.equals("error")) {
+ result.setMsg(Result.STATUS_ERROR, "로그인 실패(패스워드 불일치)");
+ } else {
+ result.setMsg(Result.STATUS_ERROR, "사용자 정보가 존재하지 않습니다.");
+ }
+ } catch (RuntimeException ex) {// DB커넥션 없음
+ result.setMsg(Result.STATUS_ERROR, "처리도중 시스템 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * 로그인한 사용자의 비밀번호를 변경한다.
+ *
+ * @date 2018.11.29
+ * @param dma_password { PASSWORD: "현재 비밀번호", NEW_PASSWORD: "새로운 비밀번호", RETRY_PASSWORD: "새로운 비밀번호(재입력)" }
+ * @returns mv dlt_result { FOCUS:"포커스를 이동할 컬럼 아이디" }
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/main/updatePassword")
+ public @ResponseBody Map updatePassword(@RequestBody Map param) {
+ Result result = new Result();
+
+ try {
+ Map passwordMap = (Map) param.get("dma_password");
+ boolean checkCurrPassword = false;
+
+ // 시스템 관리자인 경우에는 현재 비밀번호 체크를 하지 않고 비밀번호를 변경한다.
+ if (user.getIsAdmin()) {
+ checkCurrPassword = true;
+
+ // 일반 사용자인 경우에는 현재 비밀번호를 체크하고 비밀번호를 변경한다.
+ } else {
+ Map memberMap = loginService.selectMemberInfoForLogin(passwordMap);
+ String status = (String) memberMap.get("LOGIN");
+
+ // 현재 비밀번호 정상 입력 여부 확인
+ if (status.equals("success")) {
+ checkCurrPassword = true;
+ } else {
+ Map resultMap = new HashMap();
+ // TODO : FOCUS 정보가 정상적으로 Response에 담기지 않음
+ resultMap.put("FOCUS", "PASSWORD");
+ result.setData("dma_result", resultMap);
+ result.setMsg(result.STATUS_ERROR, "현재 비밀번호를 잘못 입력하셨습니다.");
+ return result.getResult();
+ }
+ }
+
+ String newPassword = (String) passwordMap.get("NEW_PASSWORD");
+ String retryPassword = (String) passwordMap.get("RETRY_PASSWORD");
+
+ if (newPassword.equals(retryPassword)) {
+ loginService.updatePassword(passwordMap);
+ result.setMsg(result.STATUS_SUCESS, "비밀번호 변경에 성공했습니다.");
+ } else {
+ Map resultMap = new HashMap();
+ resultMap.put("FOCUS", "NEW_PASSWORD");
+ result.setData("dma_result", resultMap);
+ result.setMsg(result.STATUS_ERROR, "신규 비밀번호와 신규 비밀번호(재입력) 항목의 비밀번호가 다르게 입력 되었습니다.");
+ }
+
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "비밀번호 변경 중 오류가 발생했습니다.", ex);
+ }
+
+ return result.getResult();
+ }
+
+ /**
+ * 공통 SSO 로그인 구현.
+ *
+ * @date 2019.10.17
+ * @param access_token 공통에서 전달받은 토큰값
+ * @returns redirect:/
+ * @author 배영훈
+ * @example
+ */
+ @RequestMapping(value = "/com/ssologin/{access_token}", method = RequestMethod.GET)
+ public String ssologin(@PathVariable String access_token, HttpServletRequest request) {
+ logger.info("ssologin");
+ HttpSession session = request.getSession();
+
+ Result result = new Result();
+ // 로그인시 토큰 생성
+ try {
+ String ssoUrl = "http://192.168.0.41:20020"; //개발주소
+ //String ssoUrl = "http://175.193.201.56"; //운영주소
+
+ String strUrl = ssoUrl+"/api/users?access_token="+access_token;
+ URL url = new URL(strUrl);
+ HttpURLConnection con = (HttpURLConnection) url.openConnection();
+ con.setConnectTimeout(5000); //서버에 연결되는 Timeout 시간 설정
+ con.setReadTimeout(5000); // InputStream 읽어 오는 Timeout 시간 설정
+
+ con.setRequestMethod("POST");
+
+ //json으로 message를 전달하고자 할 때
+ con.setRequestProperty("Content-Type", "application/json");
+ con.setDoInput(true);
+ con.setDoOutput(true); //POST 데이터를 OutputStream으로 넘겨 주겠다는 설정
+ con.setUseCaches(false);
+ con.setDefaultUseCaches(false);
+
+ OutputStream wr = null;
+ try {
+ wr = con.getOutputStream();
+ } catch (RuntimeException re) {
+ logger.info(re);
+ } finally {
+ wr.flush();
+ }
+
+ StringBuilder sb = new StringBuilder();
+ if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
+ //Stream을 처리해줘야 하는 귀찮음이 있음.
+ BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
+ String line;
+ try {
+ while ((line = br.readLine()) != null) {
+ sb.append(line).append("\n");
+ }
+ } catch (RuntimeException re) {
+ logger.info(re);
+ } finally {
+ br.close();
+ }
+
+ logger.info("" + sb.toString());
+ JsonParser jsonParser = new JsonParser();
+ JsonObject jsonObject = (JsonObject) jsonParser.parse(sb.toString());
+ JsonObject member = (JsonObject) jsonObject.get("member");
+ logger.info(member.get("USER_ID"));
+ logger.info(access_token);
+
+ // 로그인한 ID의 화면 레이아웃정보 가지고 오기
+ Map memberMap = new HashMap();
+ memberMap.put("USER_ID", member.get("USER_ID").toString().replace("\"", ""));
+ memberMap = loginService.selectComMemberInfoForLogin(memberMap);
+ String mainLayout = (String) memberMap.get("MAIN_LAYOUT_PAGE_CODE");
+
+ // main setting에 값이 저장되어 있지 않는 경우 insert.
+ if (CommonUtil.isEmpty(mainLayout)) {
+ mainLayout = user.getDefaultMainLayoutCode();
+ }
+
+ // 로그인 정보를 세션에 저장
+ boolean isAdmin = loginService.isAdmin(member.get("USER_ID").toString().replace("\"", ""));
+ session.setAttribute("USER_ID", member.get("USER_ID").toString().replace("\"", ""));
+ session.setAttribute("EMP_NM", memberMap.get("EMP_NM").toString());
+ session.setAttribute("IS_ADMIN", isAdmin);
+ session.setAttribute("SSO_TOKEN", access_token);
+ session.setAttribute("MAIN_LAYOUT_PAGE_CODE", mainLayout);
+
+ result.setMsg(Result.STATUS_SUCESS, "로그인 성공");
+
+ } else {
+ result.setMsg(Result.STATUS_ERROR, "로그인 실패("+con.getResponseMessage()+")");
+ }
+ } catch (IOException e){
+ result.setMsg(Result.STATUS_ERROR, "로그인 실패("+e+")");
+ }
+
+ return "redirect:/";
+ }
+
+}
diff --git a/src/main/java/com/inswave/template/controller/MainController.java b/src/main/java/com/inswave/template/controller/MainController.java
new file mode 100644
index 0000000..8f6670c
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/MainController.java
@@ -0,0 +1,338 @@
+package com.inswave.template.controller;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+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.inswave.template.service.CommonService;
+import com.inswave.template.service.MainService;
+import com.inswave.util.Result;
+import com.inswave.util.UserInfo;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class MainController {
+
+ @Autowired
+ private UserInfo user;
+
+ @Autowired
+ private CommonService commonService;
+
+ @Autowired
+ private MainService mainService;
+
+ @Value("${main.setting.code.DB}")
+ private String dbCode;
+
+ @Value("${main.setting.code.LS}")
+ private String lsCode;
+
+ @RequestMapping("/main/init")
+ public @ResponseBody Map getInitMainInfo() {
+ SimpleDateFormat format = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss");
+ Date time = new Date();
+ InetAddress local;
+ Result result = new Result();
+ Map memberParam = null;
+ Map defInfo = null;
+
+ try {
+ // 현재 접속IP, 시간 가지고 오기
+ local = InetAddress.getLocalHost();
+ String remoteAddr = local.getHostAddress();
+ String lastLoginDt = format.format(time);
+
+ memberParam = user.getUserInfoByBase();
+ defInfo = new HashMap();
+ defInfo.put("USER_ID", user.getUserId());
+ defInfo.put("SSO_TOKEN", user.getSsoToken());
+ defInfo.put("EMP_NM", user.getUserName());
+ defInfo.put("REMOTE_ADDR", remoteAddr);
+ defInfo.put("LAST_LOGIN_DT", lastLoginDt);
+ defInfo.put("IS_USE_SHORTCUT", user.getIsUseShortCut());
+
+ if (user.getIsAdmin()) {
+ defInfo.put("IS_ADMIN", "Y");
+ } else {
+ defInfo.put("IS_ADMIN", "N");
+ }
+
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.16 */
+ //result.setData("dlt_menu", commonService.selectMenuList(memberParam));
+ //result.setData("dlt_fav", commonService.selectFavListByEmpCd(user.getUserId()));
+
+ result.setData("dlt_menu", commonService.selectComMenuList(memberParam));
+ result.setData("dlt_fav", commonService.selectComFavListByEmpCd(user.getUserId()));
+ result.setData("dma_defInfo", defInfo);
+
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.16 */
+ //result.setData("dlt_programAuthority", commonService.selectProgramAuthorityList(memberParam));
+ result.setData("dlt_programAuthority", commonService.selectComProgramList(memberParam));
+
+ result.setMsg(result.STATUS_SUCESS, "메뉴정보가 조회 되었습니다.");
+ } catch (IOException ex) {
+ result.setMsg(result.STATUS_ERROR, null, ex);
+ }
+
+ return result.getResult();
+ }
+
+ /**
+ * 로그인된 사용자의 메인 설정 정보를 가져온다.
+ *
+ * @date 2017.12.22
+ * @author InswaveSystems
+ * @example 샘플 코드
+ * @todo 추가해야 할 작업
+ */
+ @RequestMapping("/main/selectBmMainSetting")
+ public @ResponseBody Map selectBmMainSetting() {
+ Result result = new Result();
+
+ try {
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.21 */
+ //result.setData("dma_setting", commonService.selectBmMainSetting(user.getUserInfo()));
+ result.setData("dma_setting", commonService.selectComMainSetting(user.getUserInfo()));
+ result.setMsg(result.STATUS_SUCESS, "정상적으로 조회가 완료되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, null, ex);
+ }
+
+ return result.getResult();
+ }
+
+ /**
+ * MAIN 화면에 관련된 설정 정보 업데이트
+ *
+ * @date 2017.12.22
+ * @param {Object} argument 파라미터 정보
+ * @returns {Object} 반환 변수 및 객체
+ * @author InswaveSystems
+ */
+ @RequestMapping("/main/updateBmMainSetting")
+ public @ResponseBody Map updateBmMainSetting(@RequestBody Map param, HttpServletRequest request,
+ HttpServletResponse response) {
+
+ int rsNum = 0;
+ Result result = new Result();
+ Map paramMap = (Map) param.get("dma_setting");
+
+ try {
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.21 */
+ //paramMap.put("EMP_CD", user.getUserId());
+ //rsNum = commonService.updateBmMainSetting(paramMap);
+ paramMap.put("USER_ID", user.getUserId());
+ rsNum = commonService.updateComMainSetting(paramMap);
+ if (rsNum == 1) {
+ user.updateMainLayoutCode(request.getSession(), (String) paramMap.get("MAIN_LAYOUT_PAGE_CODE"));
+ user.updateIsUseShortCut(request.getSession(), (String) paramMap.get("IS_USE_SHORTCUT"));
+ result.setData("dma_setting", (Map) param.get("dma_setting"));
+ result.setMsg(result.STATUS_SUCESS);
+ } else {
+ result.setMsg(result.STATUS_ERROR, "업데이트 정보가 저장도중 오류가 발생하였습니다.");
+ }
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "저장 도중 오류가 발생하였습니다.", ex);
+ }
+
+ return result.getResult();
+ }
+
+ /**
+ * get favorites list
+ *
+ * @date 2017.12.22
+ * @param argument 파라미터 정보
+ * @returns 반환 변수 및 객체
+ * @author InswaveSystems
+ * @example 샘플 코드
+ * @todo 추가해야 할 작업
+ */
+ @RequestMapping("/main/selectFavList")
+ public @ResponseBody Map selectFavList() {
+ Result result = new Result();
+
+ try {
+ /* 공통 추가로 인한 기존 서비스 주석 및 공통으로 변경 2019.10.23 */
+ //result.setData("dlt_fav", commonService.selectFavListByEmpCd(user.getUserId()));
+ result.setData("dlt_fav", commonService.selectComFavListByEmpCd(user.getUserId()));
+ result.setMsg(result.STATUS_SUCESS, "메뉴정보가 정상 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "메뉴정보 조회도중 오류가 발생하였습니다.", ex);
+ }
+
+ return result.getResult();
+ }
+
+ /**
+ * 즐겨찾기 메뉴정보를 입력, 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @returns mv
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping("/main/updateFav")
+ public @ResponseBody Map updateFav(@RequestBody Map param) {
+ int rsInt = 0;
+ Map dbParam = null;
+ String updateStatus = null;
+ Result result = new Result();
+
+ try {
+ dbParam = (Map) param.get("dma_fav");
+ updateStatus = (String) dbParam.get("STATUS");
+ if (updateStatus == null) {
+ throw new NullPointerException("상태값이 누락되었습니다.");
+ }
+ dbParam.put("EMP_CD", user.getUserId());
+
+ rsInt = commonService.updateBmFavorite(dbParam);
+ if (rsInt > 0) {
+ result.setData("updateResult", updateStatus + ":" + rsInt);
+ } else {
+ result.setMsg(result.STATUS_ERROR, "업데이트 도중 오류가 발생하였습니다. 잠시 후 다시 시도해주시기 바랍니다.");
+ }
+
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "업데이트 도중 오류가 발생하였습니다.", ex);
+ }
+
+ return result.getResult();
+ }
+
+ /**
+ * 메인 화면의 업데이트 내용을 가져온다.
+ *
+ * @date 2017.12.22
+ * @param {} Map : { EMP_CD :"사용자 ID" }
+ * @returns mv List (사용자의 메뉴 리스트 )
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping("/main/selectReleaseForMain")
+ public @ResponseBody Map selectReleaseForMain(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map dbParam = (Map) param.get("dma_search");
+ String totalSearch_Yn = (String) dbParam.get("TOTAL_YN"); // 총건수 조회 여부
+ Map totalCnt = null;
+
+ if ((String) dbParam.get("START_NUM") == null) {
+ dbParam.put("START_NUM", 0);
+ }
+
+ if ((String) dbParam.get("END_NUM") == null) {
+ dbParam.put("END_NUM", 5);
+ }
+
+ if ((String) dbParam.get("IS_USE") == null) {
+ dbParam.put("IS_USE", 'Y');
+ }
+
+ if ((String) dbParam.get("SEQ_ORDER") == null) {
+ dbParam.put("SEQ_ORDER", "DESC");
+ }
+
+ if ((String) dbParam.get("selectType") == null) {
+ dbParam.put("selectType", "S");// 요약
+ }
+
+ if (totalSearch_Yn == null) {
+ Map initMap = null;
+ result.setData("TOTAL_CNT", initMap);
+ } else {
+ if (totalSearch_Yn.equals("Y")) {
+ totalCnt = mainService.selectReleaseCnt();
+ result.setData("TOTAL_CNT", totalCnt);
+ } else {
+ Map initMap = null;
+ result.setData("TOTAL_CNT", initMap);
+ }
+ }
+ result.setData("dlt_release", mainService.selectRelease(dbParam));
+
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, null, ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * ReleaseUpdate - 메인화면의 release 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_release ( Release 관리 상태인( C,U,D ) 리스트 )
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_release ( 메뉴관리 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/main/saveReleaseForMain")
+ public @ResponseBody Map saveReleaseForMain(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map release = mainService.saveRelease((List) param.get("dlt_release"));
+ result.setData("dma_result", release);
+ result.setMsg(result.STATUS_SUCESS, "Release관리 정보가 저장 되었습니다. 입력 : " + (String) release.get("ICNT") + "건, 수정 : " + (String) release.get("UCNT")
+ + "건, 삭제 : " + (String) release.get("DCNT") + "건");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "Release관리 정보 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * ReleaseUpdate - 메인화면의 단축키 리스트를 조회 한다.
+ *
+ * @date 2018.03.21
+ * @param {}
+ * @returns
+ */
+ @RequestMapping("/main/selectShortcutList")
+ public @ResponseBody Map selectShortcutList(@RequestBody Map param) {
+ Result result = new Result();
+ Map dbParam = null;
+ String programCode = null;
+ try {
+ dbParam = (Map) param.get("dma_shortcut");
+ programCode = (String) dbParam.get("PROGRAM_CD");
+ if (programCode == null) {
+ throw new NullPointerException("프로그램 코드가 누락되었습니다.");
+ }
+ result.setData("dlt_shortcutList", commonService.selectShortcutList(programCode));
+ } catch(RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "단축키 조회 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ @RequestMapping("/main/updateShortcutList")
+ public @ResponseBody Map updateShortcutList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = commonService.updateShortcutList((List) param.get("dlt_updataShortcutList"));
+ result.setData("dma_shortcutMap", hash);
+ result.setMsg(result.STATUS_SUCESS, "단축키 정보가 업데이트 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch(RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "단축키 업데이트 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/MemberController.java b/src/main/java/com/inswave/template/controller/MemberController.java
new file mode 100644
index 0000000..bfe859a
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/MemberController.java
@@ -0,0 +1,227 @@
+package com.inswave.template.controller;
+
+import java.util.HashMap;
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.MemberService;
+import com.inswave.util.Result;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class MemberController {
+
+ @Autowired
+ private MemberService service;
+
+ /**
+ * searchMemberBasicOrganization - 조회조건에 따른 인사기본관리 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @returns mv dlt_memberOrganization ( 인사관리 소속 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/member/searchMemberBasicOrganization")
+ public @ResponseBody Map searchMemberBasicOrganization() {
+ Result result = new Result();
+ try {
+ result.setData("dlt_memberOrganization", service.selectMemberBasicOrganization());
+ result.setMsg(result.STATUS_SUCESS, "인사기본 소속 리스트가 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "인사기본 소속 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * selectMemberSearchItem - 인사기본관리 아이템 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} 없음
+ * @returns mv dlt_memberSearchItem ( 인사기본관리 아이템 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/member/selectMemberSearchItem")
+ public @ResponseBody Map selectMemberSearchItem() {
+ Result result = new Result();
+ try {
+ result.setData("dlt_memberSearchItem", service.selectMemberSearchItem());
+ result.setMsg(result.STATUS_SUCESS, "인사기본관리 아이템 리스트가 조회 되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "인사기본관리 아이템 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * searchMemberBasic - 조회조건에 따른 인사기본관리 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_search { TYPE:"사원명 또는 사원코드 또는 직위 또는 소속", CONTENTS:"검색어", IS_USE:"사용여부" }
+ * @returns mv dlt_memberBasic ( 인사기본관리 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/member/searchMemberBasic")
+ public @ResponseBody Map searchMemberBasic(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_memberBasic", service.selectMemberBasic((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "인사기본관리 리스트가 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "인사기본관리 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateMemberBasic - 인사관리 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_memberBasic ( 인사기본관리 상태인( C,U,D ) 리스트 )
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_memberBasic ( 인사기본관리 리스트 )
+ * @author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/member/updateMemberBasic")
+ public @ResponseBody Map updateMemberBasic(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = service.saveMemberBasicList((List) param.get("dlt_memberBasic"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_memberBasic", service.selectMemberBasic((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "인사기본관리 정보가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "인사기본관리 정보 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * 개인 기본 데이터를 조회한다.
+ *
+ * @param param 클라이언트에서 전달한 데이터 맵 객체
+ * @return
+ */
+ @RequestMapping(value = "/member/selectMemberOragn")
+ public @ResponseBody Map selectMemberOragn(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("data", service.selectMemberOragn((Map) param.get("dma_memberBasic")));
+ result.setMsg(result.STATUS_SUCESS, "개인 기본 데이터가 조회 되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "개인 기본 데이터 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * 가족정보 데이터를 조회한다.
+ *
+ * @param param 클라이언트에서 전달한 데이터 맵 객체
+ * @return
+ */
+ @RequestMapping(value = "/member/selectMemberFamily")
+ public @ResponseBody Map selectMemberFamily(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("data", service.selectMemberFamilyList((Map) param.get("dma_memberBasic")));
+ result.setMsg(result.STATUS_SUCESS, "개인 기본 데이터가 조회 되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "개인 기본 데이터 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * 프로젝트 데이터를 조회한다.
+ *
+ * @param param 클라이언트에서 전달한 데이터 맵 객체
+ * @return
+ */
+ @RequestMapping(value = "/member/selectMemberProject")
+ public @ResponseBody Map selectMemberProject(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("data", service.selectMemberProjectList((Map) param.get("dma_memberBasic")));
+ result.setMsg(result.STATUS_SUCESS, "개인 기본 데이터가 조회 되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "개인 기본 데이터 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ @RequestMapping(value = "/member/saveMemberInfo")
+ public @ResponseBody Map saveMemberInfo(@RequestBody Map param) {
+ Result result = new Result();
+ Map hash = new HashMap();
+ try {
+ hash.put("basic", service.saveMemberBasic((Map) param.get("basic")));
+
+ result.setData("data", hash);
+ result.setMsg(result.STATUS_SUCESS, "개인 기본 데이터가 수정되었습니다..");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "개인 기본 데이터 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ @RequestMapping(value = "/member/saveMemberProject")
+ public @ResponseBody Map saveMemberProject(@RequestBody Map param) {
+ Result result = new Result();
+ Map hash = new HashMap();
+ try {
+ hash.put("project", service.saveMemberProject((List) param.get("project")));
+
+ result.setData("data", hash);
+ result.setMsg(result.STATUS_SUCESS, "프로젝트 정보 데이터가 수정되었습니다..");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "프로젝트 정보 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ @RequestMapping(value = "/member/saveMemberFamily")
+ public @ResponseBody Map saveMemberFamily(@RequestBody Map param) {
+ Result result = new Result();
+ Map hash = new HashMap();
+ try {
+ hash.put("family", service.saveMemberFamily((List) param.get("family")));
+
+ result.setData("data", hash);
+ result.setMsg(result.STATUS_SUCESS, "가족 정보 데이터가 수정되었습니다..");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "가족 데이터 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * 우편번호 데이터를 조회한다.
+ *
+ * @param param 클라이언트에서 전달한 데이터 맵 객체
+ * @return
+ */
+ @RequestMapping(value = "/member/selectZipCodeList")
+ public @ResponseBody Map selectZipCodeList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("data", service.selectZipCodeList((Map) param.get("param")));
+ result.setMsg(result.STATUS_SUCESS, "우편번호 데이터를 조회하였습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "우편번호 데이터 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/MenuController.java b/src/main/java/com/inswave/template/controller/MenuController.java
new file mode 100644
index 0000000..4362517
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/MenuController.java
@@ -0,0 +1,66 @@
+package com.inswave.template.controller;
+
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.MenuService;
+import com.inswave.util.Result;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class MenuController {
+
+ @Autowired
+ private MenuService menuService;
+
+ /**
+ * searchMenu - 조회조건에 따른 메뉴관리 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_search { TYPE:"메뉴명 또는 메뉴코드 또는 부모메뉴명 또는 메뉴레벨", CONTENTS:"검색어", IS_USE:"사용여부" }
+ * @returns mv dlt_menu ( 메뉴관리 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/menu/searchMenu")
+ public @ResponseBody Map searchMenu(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_menu", menuService.selectMenu((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "메뉴 리스트가 조회되었습니다.");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "메뉴 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateMenu - 메뉴관리 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_menu ( 메뉴관리 상태인( C,U,D ) 리스트 ), dma_search { TYPE:"메뉴명 또는 메뉴코드 또는 부모메뉴명 또는 메뉴레벨", CONTENTS:"검색어" }
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_menu ( 메뉴관리 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/menu/updateMenu")
+ public @ResponseBody Map updateMenu(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = menuService.saveMenu((List) param.get("dlt_menu"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_menu", menuService.selectMenu((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "메뉴관리 정보가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (RuntimeException ex) {
+ result.setMsg(result.STATUS_ERROR, "메뉴관리 정보 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/OrganizationController.java b/src/main/java/com/inswave/template/controller/OrganizationController.java
new file mode 100644
index 0000000..e6c495a
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/OrganizationController.java
@@ -0,0 +1,107 @@
+package com.inswave.template.controller;
+
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.OrganizationService;
+import com.inswave.util.Result;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class OrganizationController {
+
+ @Autowired
+ private OrganizationService service;
+
+ /**
+ * selectOrganizaionSearchItem - 조직관리 아이템 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @returns mv dlt_organizaionSearchItem ( 조직관리 아이템 리스트 )
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping("/organization/selectOrganizaionSearchItem")
+ public @ResponseBody Map selectOrganizaionSearchItem() {
+ Result result = new Result();
+ try {
+ result.setData("dlt_organizationSearchItem", service.selectOrganizaionSearchItem());
+ result.setData("dlt_organizationBoss", service.selectOrganizationBoss());
+ result.setMsg(result.STATUS_SUCESS, "조직관리 아이템 리스트가 조회 되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "조직관리 아이템 리스트를 가져오는 도중 오류가 발생하였습니다,", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * searchOrganization - 조회조건에 따른 조직기본관리 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_search { TYPE:"소속명칭 또는 소속코드 또는 상위소속명 또는 직책자", CONTENTS:"검색어", IS_USE:"사용여부" }
+ * @returns mv dlt_organizationBasic ( 조직관리 리스트 )
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping("/organization/searchOrganization")
+ public @ResponseBody Map searchOrganization(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_organizationBasic", service.selectOrganization((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "조직기본관리 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "조직기본관리 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateOrganizationBasic
+ *
+ * @date 2017.12.22
+ * @param {} dlt_organizationBasic ( 조직기본관리 상태인( C,U,D ) 리스트 )
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_organizationBasic ( 조직기본관리 리스트 )
+ * @author Inswave
+ * @example
+ */
+ @RequestMapping("/organization/updateOrganizationBasic")
+ public @ResponseBody Map updateOrganizationBasic(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = service.saveOrganizaionBasicList((List) param.get("dlt_organizationBasic"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_organizationBasic", service.selectOrganization((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "인사기본관리 정보가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "인사기본관리 정보 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * 조직 데이터를 조회한다.
+ *
+ * @param param 클라이언트에서 전달한 데이터 맵 객체
+ * @return
+ */
+ @RequestMapping(value = "/organization/selectOrganBasicList")
+ public @ResponseBody Map getOrganBasicList(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("data", service.selectOrganizaionBasicList((Map) param.get("dlt_organizationBasic")));
+ result.setMsg(result.STATUS_SUCESS, "조직 정보를 조회하였습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "조직 정보를 조회하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+}
diff --git a/src/main/java/com/inswave/template/controller/ProgramController.java b/src/main/java/com/inswave/template/controller/ProgramController.java
new file mode 100644
index 0000000..a5e327d
--- /dev/null
+++ b/src/main/java/com/inswave/template/controller/ProgramController.java
@@ -0,0 +1,154 @@
+package com.inswave.template.controller;
+
+import java.util.List;
+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.ResponseBody;
+
+import com.inswave.template.service.ProgramService;
+import com.inswave.util.Result;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+@SuppressFBWarnings
+@Controller
+public class ProgramController {
+
+ @Autowired
+ private ProgramService programService;
+
+ /**
+ * searchProgram - 조회조건에 따른 프로그램관리 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_search { TYPE:"프로그램명 또는 프로그램코드 또는 부모프로그램명 또는 프로그램레벨", CONTENTS:"검색어", IS_USE:"사용여부" }
+ * @returns mv dlt_program ( 프로그램관리 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/program/searchProgram")
+ public @ResponseBody Map searchProgram(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_program", programService.selectProgram((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "프로그램 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "프로그램 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateProgram - 프로그램관리 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_program ( 프로그램관리 상태인( C,U,D ) 리스트 ), dma_search { TYPE:"프로그램명 또는 프로그램코드 또는 부모프로그램명 또는 프로그램레벨", CONTENTS:"검색어" }
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_program ( 프로그램관리 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/program/updateProgram")
+ public @ResponseBody Map updateProgram(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = programService.saveProgram((List) param.get("dlt_program"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_program", programService.selectProgram((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "프로그램관리 정보가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT") + "건, 삭제 : "
+ + (String) hash.get("DCNT") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "프로그램관리 정보 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateProgram - 프로그램관리 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_program ( 상태인( C,U,D ) 프로그램 리스트 ), dlt_programAuthority ( 상태인( C,U,D ) 프로그램별 권한 리스트 )
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_program ( 프로그램관리 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/program/saveProgramAll")
+ public @ResponseBody Map saveProgramAll(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = programService.saveProgramAll((List) param.get("dlt_program"), (List) param.get("dlt_programAuthority"));
+
+ result.setData("dma_result_All", hash);
+ result.setMsg(result.STATUS_SUCESS,
+ "프로그램 별 권한 정보가 저장 되었습니다. 입력 프로그램 건수: " + (String) hash.get("ICNT_MENU") + "건 :: 입력 프로그램 권한 건수: " + (String) hash.get("ICNT_ACCESS")
+ + "건 :: 수정 프로그램 건수: " + (String) hash.get("UCNT_MENU") + "건 :: 수정 프로그램 권한 건수: " + (String) hash.get("UCNT_ACCESS")
+ + "건 :: 삭제 프로그램 건수: " + (String) hash.get("DCNT_MENU") + "건 :: 삭제 프로그램 권한 건수: " + (String) hash.get("DCNT_ACCESS") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "권한 및 권한별 사원정보 삭제도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * searchProgramAuthority - 조회조건에 따른 프로그램별 접근 프로그램 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_program ( 프로그램관리 리스트 )
+ * @returns mv dlt_programAuthority ( 프로그램별 권한 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/program/searchProgramAuthority")
+ public @ResponseBody Map searchProgramAuthority(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_programAuthority", programService.selectProgramAuthority((Map) param.get("dma_program")));
+ result.setMsg(result.STATUS_SUCESS, "프로그램별 권한 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "프로그램별 권한 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * updateProgramAuthority - 프로그램별 접근 프로그램 리스트를 등록 수정 삭제 한다.
+ *
+ * @date 2017.12.22
+ * @param {} dlt_programAuthority ( 프로그램관리 상태인( C,U,D ) 리스트 ), dma_program { MENU_CD:"프로그램코드" }
+ * @returns mv dlt_result ( 입력,수정,삭제된 건수 및 상태 ), dlt_programAuthority ( 프로그램별 접근 프로그램 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/program/updateProgramAuthority")
+ public @ResponseBody Map updateProgramAuthority(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ Map hash = programService.saveProgramAuthority((List) param.get("dlt_programAuthority"));
+ result.setData("dma_result", hash);
+ result.setData("dlt_programAuthority", programService.selectProgramAuthority((Map) param.get("dma_program")));
+ result.setMsg(result.STATUS_SUCESS, "프로그램별 권한 리스트가 저장 되었습니다. 입력 : " + (String) hash.get("ICNT") + "건, 수정 : " + (String) hash.get("UCNT")
+ + "건, 삭제 : " + (String) hash.get("DCNT") + "건");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "프로그램별 권한 리스트 저장도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+
+ /**
+ * excludeSelectProgramAuthority - 조회조건에 따른 프로그램별 접근 프로그램 등록 리스트를 조회한다.
+ *
+ * @date 2017.12.22
+ * @param {} dma_program { TYPE:"권한명 또는 권한코드", CONTENTS:"검색어", MENU_CD:"프로그램코드" }
+ * @returns mv dlt_programAuthority ( 프로그램별 접근 프로그램 리스트 ) author InswaveSystems
+ * @example
+ */
+ @RequestMapping("/program/excludeSelectProgramAuthority")
+ public @ResponseBody Map excludeSelectProgramAuthority(@RequestBody Map param) {
+ Result result = new Result();
+ try {
+ result.setData("dlt_programAuthority", programService.excludeSelectProgramAuthority((Map) param.get("dma_search")));
+ result.setMsg(result.STATUS_SUCESS, "프로그램별 권한 리스트가 조회되었습니다.");
+ } catch (Exception ex) {
+ result.setMsg(result.STATUS_ERROR, "프로그램별 권한 리스트를 가져오는 도중 오류가 발생하였습니다.", ex);
+ }
+ return result.getResult();
+ }
+}
diff --git a/src/main/java/com/inswave/template/dao/AuthorityDao.java b/src/main/java/com/inswave/template/dao/AuthorityDao.java
new file mode 100644
index 0000000..f651e29
--- /dev/null
+++ b/src/main/java/com/inswave/template/dao/AuthorityDao.java
@@ -0,0 +1,46 @@
+package com.inswave.template.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.stereotype.Repository;
+
+@Repository("authorityDao")
+public interface AuthorityDao {
+
+ // 권한이 부여되지 않은 직원 리스트
+ public List