From 7ed64a36d847eb7f9a9f1082e0bc2fac36e23d4a Mon Sep 17 00:00:00 2001 From: nhj Date: Mon, 11 Aug 2025 18:08:32 +0900 Subject: [PATCH 01/14] =?UTF-8?q?=EC=B5=9C=EC=B4=88=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 23 + .gitattributes | 6 + .gitignore | 5 + .project | 41 + .settings/org.eclipse.buildship.core.prefs | 13 + .settings/org.eclipse.jdt.core.prefs | 4 + .settings/org.eclipse.wst.common.component | 9 + ....eclipse.wst.common.project.facet.core.xml | 7 + .../org.springframework.ide.eclipse.prefs | 2 + bin/main/application-infra_server.yml | 62 + bin/main/application-kic_dev.yml | 85 + bin/main/application-kic_rel.yml | 81 + bin/main/application-local.yml | 81 + bin/main/application-vmware.yml | 62 + .../com/urpsys/basebatch/Aes256Test.class | Bin 0 -> 3391 bytes .../common/crypto/Aes256Cipher.class | Bin 0 -> 3059 bytes .../common/exception/CustomException.class | Bin 0 -> 1934 bytes .../basebatch/common/util/CommonUtil.class | Bin 0 -> 8897 bytes .../basebatch/common/util/ConvertUtils.class | Bin 0 -> 10170 bytes .../common/util/DataSourceUtil.class | Bin 0 -> 4248 bytes .../common/util/EgovIdGnrBuilder.class | Bin 0 -> 2601 bytes .../basebatch/common/util/HtmlEmailUtil.class | Bin 0 -> 4137 bytes .../common/util/RestApiCallUtil.class | Bin 0 -> 9007 bytes .../basebatch/config/EgovConfigAppIdGen.class | Bin 0 -> 28560 bytes .../basebatch/config/EgovMessageSource.class | Bin 0 -> 1278 bytes .../basebatch/config/EncryptConfig.class | Bin 0 -> 821 bytes .../basebatch/config/KicInsaDbConfig.class | Bin 0 -> 4024 bytes .../urpsys/basebatch/config/MailConfig.class | Bin 0 -> 2614 bytes .../basebatch/config/MessageConfig.class | Bin 0 -> 2841 bytes .../basebatch/config/PrimaryDbConfig.class | Bin 0 -> 3749 bytes .../AutoWiringSpringBeanJobFactory.class | Bin 0 -> 1479 bytes .../config/quartz/QuartzConfig.class | Bin 0 -> 4538 bytes .../config/quartz/QuartzConfigService.class | Bin 0 -> 6122 bytes .../basebatch/config/quartz/QuartzJob.class | Bin 0 -> 2180 bytes .../config/quartz/QuartzJobListner.class | Bin 0 -> 1577 bytes .../config/quartz/QuartzTriggerListener.class | Bin 0 -> 1885 bytes .../com/urpsys/basebatch/dao/QuartzDao.class | Bin 0 -> 596 bytes .../com/urpsys/basebatch/domain/JWTKey.class | Bin 0 -> 2583 bytes .../urpsys/basebatch/domain/TokenInfo.class | Bin 0 -> 17882 bytes .../basebatch/service/QuartzService.class | Bin 0 -> 1172 bytes .../basebatch/urpBaseBatchApplication.class | Bin 0 -> 1919 bytes .../itmsbatch/bbs/dao/BbsInfoHistDao.class | Bin 0 -> 561 bytes .../bbs/service/BbsInfoHistService.class | Bin 0 -> 1280 bytes .../urpsys/itmsbatch/cmm/dao/CmmUseDao.class | Bin 0 -> 887 bytes .../urpsys/itmsbatch/cmm/dao/KicItsmDao.class | Bin 0 -> 887 bytes .../itmsbatch/cmm/dao/MailKaTalkDao.class | Bin 0 -> 566 bytes .../cmm/excute/KicInsaInterJob.class | Bin 0 -> 2662 bytes .../cmm/excute/MailKaTalkSendJob.class | Bin 0 -> 4848 bytes .../cmm/excute/MailKaTalkSendKiccJob.class | Bin 0 -> 6898 bytes .../MailKaTalkSendKiccJob.java.20250703 | 259 +++ .../itmsbatch/cmm/service/CmmUseService.class | Bin 0 -> 1809 bytes .../cmm/service/KicInsaInterService.class | Bin 0 -> 3718 bytes .../cmm/service/MailKaTalkService.class | Bin 0 -> 1281 bytes .../itmsbatch/srm/dao/IncidentHistDao.class | Bin 0 -> 565 bytes .../itmsbatch/srm/dao/ReportHistDao.class | Bin 0 -> 557 bytes .../srm/excute/SendSearchSysJob.class | Bin 0 -> 8808 bytes .../srm/service/IncidentHistService.class | Bin 0 -> 1283 bytes .../srm/service/ReportHistService.class | Bin 0 -> 1268 bytes .../urpsys/kicinsa/dao/KicGroupwareDao.class | Bin 0 -> 417 bytes bin/main/log4jdbc.log4j2.properties | 2 + bin/main/logback-spring.xml | 102 + .../mapper/kicinsadb/config/MybatisConfig.xml | 18 + .../sqlmap/insa/KicGroupwareMapper.xml | 52 + .../insa/KicGroupwareMapper.xml.20250701 | 97 + .../mapper/primarydb/config/MybatisConfig.xml | 32 + .../mapper/primarydb/sqlmap/QuartzMapper.xml | 43 + .../sqlmap/bbs/BbsInfoHistMapper.xml | 67 + .../primarydb/sqlmap/cmm/CmmUseMapper.xml | 70 + .../primarydb/sqlmap/cmm/KicItsmMapper.xml | 182 ++ .../sqlmap/cmm/KicItsmMapper.xml,20250701 | 167 ++ .../primarydb/sqlmap/cmm/MailKaTalkMapper.xml | 42 + .../primarydb/sqlmap/ind/NcrdMapper.xml | 79 + .../sqlmap/srm/IncidentHistMapper.xml | 120 + .../primarydb/sqlmap/srm/ReportHistMapper.xml | 101 + bin/main/messages/message-common.properties | 467 ++++ .../messages/message-common_en.properties | 468 ++++ .../messages/message-common_ko.properties | 467 ++++ bin/main/quartz-kic_dev.properties | 23 + bin/main/quartz-kic_rel.properties | 23 + bin/main/quartz-local.properties | 23 + bin/main/quartz.properties | 23 + bin/main/secrets/UrpSystem.keystore | 1 + bin/test/UrpKeyMng/LibraryTest.class | Bin 0 -> 634 bytes build.gradle | 94 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59821 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 234 ++ gradlew.bat | 89 + settings.gradle | 11 + src/etc/tables_mysql.sql | 168 ++ .../java/com/urpsys/basebatch/Aes256Test.java | 122 ++ .../basebatch/common/crypto/Aes256Cipher.java | 152 ++ .../common/exception/CustomException.java | 124 ++ .../basebatch/common/util/CommonUtil.java | 524 +++++ .../basebatch/common/util/ConvertUtils.java | 431 ++++ .../basebatch/common/util/DataSourceUtil.java | 113 + .../common/util/EgovIdGnrBuilder.java | 97 + .../basebatch/common/util/HtmlEmailUtil.java | 148 ++ .../common/util/RestApiCallUtil.java | 375 ++++ .../basebatch/config/EgovConfigAppIdGen.java | 1946 +++++++++++++++++ .../basebatch/config/EgovMessageSource.java | 67 + .../basebatch/config/EncryptConfig.java | 39 + .../basebatch/config/KicInsaDbConfig.java | 126 ++ .../urpsys/basebatch/config/MailConfig.java | 85 + .../basebatch/config/MessageConfig.java | 112 + .../basebatch/config/PrimaryDbConfig.java | 113 + .../AutoWiringSpringBeanJobFactory.java | 47 + .../basebatch/config/quartz/QuartzConfig.java | 123 ++ .../config/quartz/QuartzConfigService.java | 162 ++ .../basebatch/config/quartz/QuartzJob.java | 63 + .../config/quartz/QuartzJobListner.java | 60 + .../config/quartz/QuartzTriggerListener.java | 105 + .../com/urpsys/basebatch/dao/QuartzDao.java | 38 + .../com/urpsys/basebatch/domain/JWTKey.java | 24 + .../urpsys/basebatch/domain/TokenInfo.java | 46 + .../basebatch/service/QuartzService.java | 54 + .../basebatch/urpBaseBatchApplication.java | 69 + .../itmsbatch/bbs/dao/BbsInfoHistDao.java | 36 + .../bbs/service/BbsInfoHistService.java | 52 + .../urpsys/itmsbatch/cmm/dao/CmmUseDao.java | 41 + .../urpsys/itmsbatch/cmm/dao/KicItsmDao.java | 45 + .../itmsbatch/cmm/dao/MailKaTalkDao.java | 41 + .../itmsbatch/cmm/excute/KicInsaInterJob.java | 77 + .../cmm/excute/MailKaTalkSendJob.java | 133 ++ .../cmm/excute/MailKaTalkSendKiccJob.java | 206 ++ .../MailKaTalkSendKiccJob.java.20250703 | 259 +++ .../itmsbatch/cmm/service/CmmUseService.java | 64 + .../cmm/service/KicInsaInterService.java | 126 ++ .../cmm/service/MailKaTalkService.java | 52 + .../itmsbatch/srm/dao/IncidentHistDao.java | 36 + .../itmsbatch/srm/dao/ReportHistDao.java | 36 + .../srm/excute/SendSearchSysJob.java | 330 +++ .../srm/service/IncidentHistService.java | 52 + .../srm/service/ReportHistService.java | 58 + .../urpsys/kicinsa/dao/KicGroupwareDao.java | 36 + .../resources/application-infra_server.yml | 62 + src/main/resources/application-kic_dev.yml | 85 + src/main/resources/application-kic_rel.yml | 81 + src/main/resources/application-local.yml | 81 + src/main/resources/application-vmware.yml | 62 + src/main/resources/log4jdbc.log4j2.properties | 2 + src/main/resources/logback-spring.xml | 102 + .../mapper/kicinsadb/config/MybatisConfig.xml | 18 + .../sqlmap/insa/KicGroupwareMapper.xml | 52 + .../insa/KicGroupwareMapper.xml.20250701 | 97 + .../mapper/primarydb/config/MybatisConfig.xml | 32 + .../mapper/primarydb/sqlmap/QuartzMapper.xml | 43 + .../sqlmap/bbs/BbsInfoHistMapper.xml | 67 + .../primarydb/sqlmap/cmm/CmmUseMapper.xml | 70 + .../primarydb/sqlmap/cmm/KicItsmMapper.xml | 182 ++ .../sqlmap/cmm/KicItsmMapper.xml,20250701 | 167 ++ .../primarydb/sqlmap/cmm/MailKaTalkMapper.xml | 42 + .../primarydb/sqlmap/ind/NcrdMapper.xml | 79 + .../sqlmap/srm/IncidentHistMapper.xml | 120 + .../primarydb/sqlmap/srm/ReportHistMapper.xml | 101 + .../messages/message-common.properties | 467 ++++ .../messages/message-common_en.properties | 468 ++++ .../messages/message-common_ko.properties | 467 ++++ src/main/resources/quartz-kic_dev.properties | 23 + src/main/resources/quartz-kic_rel.properties | 23 + src/main/resources/quartz-local.properties | 23 + src/main/resources/quartz.properties | 23 + src/main/resources/secrets/UrpSystem.keystore | 1 + 163 files changed, 14095 insertions(+) create mode 100644 .classpath create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.buildship.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.wst.common.component create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 .settings/org.springframework.ide.eclipse.prefs create mode 100644 bin/main/application-infra_server.yml create mode 100644 bin/main/application-kic_dev.yml create mode 100644 bin/main/application-kic_rel.yml create mode 100644 bin/main/application-local.yml create mode 100644 bin/main/application-vmware.yml create mode 100644 bin/main/com/urpsys/basebatch/Aes256Test.class create mode 100644 bin/main/com/urpsys/basebatch/common/crypto/Aes256Cipher.class create mode 100644 bin/main/com/urpsys/basebatch/common/exception/CustomException.class create mode 100644 bin/main/com/urpsys/basebatch/common/util/CommonUtil.class create mode 100644 bin/main/com/urpsys/basebatch/common/util/ConvertUtils.class create mode 100644 bin/main/com/urpsys/basebatch/common/util/DataSourceUtil.class create mode 100644 bin/main/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.class create mode 100644 bin/main/com/urpsys/basebatch/common/util/HtmlEmailUtil.class create mode 100644 bin/main/com/urpsys/basebatch/common/util/RestApiCallUtil.class create mode 100644 bin/main/com/urpsys/basebatch/config/EgovConfigAppIdGen.class create mode 100644 bin/main/com/urpsys/basebatch/config/EgovMessageSource.class create mode 100644 bin/main/com/urpsys/basebatch/config/EncryptConfig.class create mode 100644 bin/main/com/urpsys/basebatch/config/KicInsaDbConfig.class create mode 100644 bin/main/com/urpsys/basebatch/config/MailConfig.class create mode 100644 bin/main/com/urpsys/basebatch/config/MessageConfig.class create mode 100644 bin/main/com/urpsys/basebatch/config/PrimaryDbConfig.class create mode 100644 bin/main/com/urpsys/basebatch/config/quartz/AutoWiringSpringBeanJobFactory.class create mode 100644 bin/main/com/urpsys/basebatch/config/quartz/QuartzConfig.class create mode 100644 bin/main/com/urpsys/basebatch/config/quartz/QuartzConfigService.class create mode 100644 bin/main/com/urpsys/basebatch/config/quartz/QuartzJob.class create mode 100644 bin/main/com/urpsys/basebatch/config/quartz/QuartzJobListner.class create mode 100644 bin/main/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.class create mode 100644 bin/main/com/urpsys/basebatch/dao/QuartzDao.class create mode 100644 bin/main/com/urpsys/basebatch/domain/JWTKey.class create mode 100644 bin/main/com/urpsys/basebatch/domain/TokenInfo.class create mode 100644 bin/main/com/urpsys/basebatch/service/QuartzService.class create mode 100644 bin/main/com/urpsys/basebatch/urpBaseBatchApplication.class create mode 100644 bin/main/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.class create mode 100644 bin/main/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/dao/MailKaTalkDao.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/excute/KicInsaInterJob.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/service/CmmUseService.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.class create mode 100644 bin/main/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.class create mode 100644 bin/main/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.class create mode 100644 bin/main/com/urpsys/itmsbatch/srm/dao/ReportHistDao.class create mode 100644 bin/main/com/urpsys/itmsbatch/srm/excute/SendSearchSysJob.class create mode 100644 bin/main/com/urpsys/itmsbatch/srm/service/IncidentHistService.class create mode 100644 bin/main/com/urpsys/itmsbatch/srm/service/ReportHistService.class create mode 100644 bin/main/com/urpsys/kicinsa/dao/KicGroupwareDao.class create mode 100644 bin/main/log4jdbc.log4j2.properties create mode 100644 bin/main/logback-spring.xml create mode 100644 bin/main/mapper/kicinsadb/config/MybatisConfig.xml create mode 100644 bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml create mode 100644 bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 create mode 100644 bin/main/mapper/primarydb/config/MybatisConfig.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/QuartzMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 create mode 100644 bin/main/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/ind/NcrdMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml create mode 100644 bin/main/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml create mode 100644 bin/main/messages/message-common.properties create mode 100644 bin/main/messages/message-common_en.properties create mode 100644 bin/main/messages/message-common_ko.properties create mode 100644 bin/main/quartz-kic_dev.properties create mode 100644 bin/main/quartz-kic_rel.properties create mode 100644 bin/main/quartz-local.properties create mode 100644 bin/main/quartz.properties create mode 100644 bin/main/secrets/UrpSystem.keystore create mode 100644 bin/test/UrpKeyMng/LibraryTest.class create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/etc/tables_mysql.sql create mode 100644 src/main/java/com/urpsys/basebatch/Aes256Test.java create mode 100644 src/main/java/com/urpsys/basebatch/common/crypto/Aes256Cipher.java create mode 100644 src/main/java/com/urpsys/basebatch/common/exception/CustomException.java create mode 100644 src/main/java/com/urpsys/basebatch/common/util/CommonUtil.java create mode 100644 src/main/java/com/urpsys/basebatch/common/util/ConvertUtils.java create mode 100644 src/main/java/com/urpsys/basebatch/common/util/DataSourceUtil.java create mode 100644 src/main/java/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.java create mode 100644 src/main/java/com/urpsys/basebatch/common/util/HtmlEmailUtil.java create mode 100644 src/main/java/com/urpsys/basebatch/common/util/RestApiCallUtil.java create mode 100644 src/main/java/com/urpsys/basebatch/config/EgovConfigAppIdGen.java create mode 100644 src/main/java/com/urpsys/basebatch/config/EgovMessageSource.java create mode 100644 src/main/java/com/urpsys/basebatch/config/EncryptConfig.java create mode 100644 src/main/java/com/urpsys/basebatch/config/KicInsaDbConfig.java create mode 100644 src/main/java/com/urpsys/basebatch/config/MailConfig.java create mode 100644 src/main/java/com/urpsys/basebatch/config/MessageConfig.java create mode 100644 src/main/java/com/urpsys/basebatch/config/PrimaryDbConfig.java create mode 100644 src/main/java/com/urpsys/basebatch/config/quartz/AutoWiringSpringBeanJobFactory.java create mode 100644 src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java create mode 100644 src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfigService.java create mode 100644 src/main/java/com/urpsys/basebatch/config/quartz/QuartzJob.java create mode 100644 src/main/java/com/urpsys/basebatch/config/quartz/QuartzJobListner.java create mode 100644 src/main/java/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.java create mode 100644 src/main/java/com/urpsys/basebatch/dao/QuartzDao.java create mode 100644 src/main/java/com/urpsys/basebatch/domain/JWTKey.java create mode 100644 src/main/java/com/urpsys/basebatch/domain/TokenInfo.java create mode 100644 src/main/java/com/urpsys/basebatch/service/QuartzService.java create mode 100644 src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java create mode 100644 src/main/java/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.java create mode 100644 src/main/java/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/dao/MailKaTalkDao.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/excute/KicInsaInterJob.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/service/CmmUseService.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.java create mode 100644 src/main/java/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.java create mode 100644 src/main/java/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.java create mode 100644 src/main/java/com/urpsys/itmsbatch/srm/dao/ReportHistDao.java create mode 100644 src/main/java/com/urpsys/itmsbatch/srm/excute/SendSearchSysJob.java create mode 100644 src/main/java/com/urpsys/itmsbatch/srm/service/IncidentHistService.java create mode 100644 src/main/java/com/urpsys/itmsbatch/srm/service/ReportHistService.java create mode 100644 src/main/java/com/urpsys/kicinsa/dao/KicGroupwareDao.java create mode 100644 src/main/resources/application-infra_server.yml create mode 100644 src/main/resources/application-kic_dev.yml create mode 100644 src/main/resources/application-kic_rel.yml create mode 100644 src/main/resources/application-local.yml create mode 100644 src/main/resources/application-vmware.yml create mode 100644 src/main/resources/log4jdbc.log4j2.properties create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/main/resources/mapper/kicinsadb/config/MybatisConfig.xml create mode 100644 src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml create mode 100644 src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 create mode 100644 src/main/resources/mapper/primarydb/config/MybatisConfig.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/QuartzMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 create mode 100644 src/main/resources/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/ind/NcrdMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml create mode 100644 src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml create mode 100644 src/main/resources/messages/message-common.properties create mode 100644 src/main/resources/messages/message-common_en.properties create mode 100644 src/main/resources/messages/message-common_ko.properties create mode 100644 src/main/resources/quartz-kic_dev.properties create mode 100644 src/main/resources/quartz-kic_rel.properties create mode 100644 src/main/resources/quartz-local.properties create mode 100644 src/main/resources/quartz.properties create mode 100644 src/main/resources/secrets/UrpSystem.keystore diff --git a/.classpath b/.classpath new file mode 100644 index 00000000..36064bc1 --- /dev/null +++ b/.classpath @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..61793db4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# These are explicitly windows files and should use crlf +*.bat text eol=crlf + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c75f3c2c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/.project b/.project new file mode 100644 index 00000000..cbcce560 --- /dev/null +++ b/.project @@ -0,0 +1,41 @@ + + + urpItms_30_Batch + Project lib created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + org.springframework.ide.eclipse.boot.validation.springbootbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..7b8f9727 --- /dev/null +++ b/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=false +show.console.view=false +show.executions.view=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..7938522f --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=16 +org.eclipse.jdt.core.compiler.compliance=16 +org.eclipse.jdt.core.compiler.source=16 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 00000000..88d71dfd --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..3d08c3f6 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.springframework.ide.eclipse.prefs b/.settings/org.springframework.ide.eclipse.prefs new file mode 100644 index 00000000..e587c651 --- /dev/null +++ b/.settings/org.springframework.ide.eclipse.prefs @@ -0,0 +1,2 @@ +boot.validation.initialized=true +eclipse.preferences.version=1 diff --git a/bin/main/application-infra_server.yml b/bin/main/application-infra_server.yml new file mode 100644 index 00000000..980e643f --- /dev/null +++ b/bin/main/application-infra_server.yml @@ -0,0 +1,62 @@ +# Service port +# server: +# port: 9002 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://109.26.11.21:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://109.26.11.21:48381 +# api_search_server: http://192.168.8.138:48381 + \ No newline at end of file diff --git a/bin/main/application-kic_dev.yml b/bin/main/application-kic_dev.yml new file mode 100644 index 00000000..a3f2b797 --- /dev/null +++ b/bin/main/application-kic_dev.yml @@ -0,0 +1,85 @@ +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.10.10.19:1521:gwdev + username: mLq9nSgZHzZBmuOmyvjahQ== + password: C7+TsdsHhTcGiH6JSupSeA== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + # 검색서버 + api_search_server: http://192.10.10.203:48381 + # kicc 메일서버 + api_kic_mail_server : https://devkicmail.kic.go.kr + # api_kic_mail_server : https://kicmail.kic.go.kr + # kicc 메신저 서버 + api_kic_msg_server : http://devtalk.kic.go.kr + api_kic_msg_key : 73f26d49-b014-41a9-a184-24c34c893701 + # api_kic_msg_server : http://talk.kic.go.kr + # api_kic_msg_key : eebe896f-1608-456f-80ff-282d1024c25c + client : kic + + \ No newline at end of file diff --git a/bin/main/application-kic_rel.yml b/bin/main/application-kic_rel.yml new file mode 100644 index 00000000..1e98c878 --- /dev/null +++ b/bin/main/application-kic_rel.yml @@ -0,0 +1,81 @@ +# Service port + server: + port: 12030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_rel_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: YvRZ5jyhmB6gwVSUGBOqNMQB00k6OZZSfUH5ZU4GEFs= + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.10.10.242:1521:gwprd2 + username: mLq9nSgZHzZBmuOmyvjahQ== + password: F4KWP/A4aPptqZO9gZUdqg== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://192.10.10.203:49381 + # kicc 메일서버 + api_kic_mail_server : https://kicmail.kic.go.kr + # kicc 메신저 서버 + api_kic_msg_server : http://talk.kic.go.kr + api_kic_msg_key : eebe896f-1608-456f-80ff-282d1024c25c + client : kic + \ No newline at end of file diff --git a/bin/main/application-local.yml b/bin/main/application-local.yml new file mode 100644 index 00000000..9de735bf --- /dev/null +++ b/bin/main/application-local.yml @@ -0,0 +1,81 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm +# api_search_server: http://192.168.8.138:48381 # 개발 + api_search_server: http://192.168.8.138:49381 # 운영 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/bin/main/application-vmware.yml b/bin/main/application-vmware.yml new file mode 100644 index 00000000..380716ab --- /dev/null +++ b/bin/main/application-vmware.yml @@ -0,0 +1,62 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm +# api_search_server: http://109.26.11.21:48381 + api_search_server: http://192.168.8.138:48381 + \ No newline at end of file diff --git a/bin/main/com/urpsys/basebatch/Aes256Test.class b/bin/main/com/urpsys/basebatch/Aes256Test.class new file mode 100644 index 0000000000000000000000000000000000000000..8fcf6ff60f7445768850f1ee8cfca8f534bc79be GIT binary patch literal 3391 zcmai0*>@Ay8UJ0hj4TH1Dv(4;19EX3%fZN!cN<771=q$44l*XjNt@BkwLMsx5i=v# zYSK1M+mt}Ircj_ITbq_{FM-td2?=jqPG0&a^qfA{_G4e#wDh|p*_OdgbaZC9_uIeU z_q+4ye?Phf;2?e{VH?9<)y%~TR^Be!v5aE#jN+&>v0iQ`+SHBs200R%DNdFB~6F)xsvM%;6VntpJ%gX-R+1hrJy zys(j_sCGAO6;uHG7#?p+Otp3@N?h$|ZE4G>@pxvctGP?-(mJ%b*4EWR+ZjdGI^&(K zTy0b1oNMh`a|`G3jwv2bv`ct+b5?H70X#xEaYGFt$`G8@RSIP)o~RArQHHt!V@}EH zT12s??a2PpEz6B*XC{(}=tjQaL?S_|S(A(dh*5R{1W;IwRhXTV^D%Pf_`CifWb#b1x^_T zWk?7FQHNm}BREFW#LpCzEDgdY9F=p4o(kYeLcq$!3#*rxmfyP?S-$bYKdyfgK$;p| zdS1QwZe;oQODk``v2y9dmA5{OtXz6&<=h{Z&!1gB|NemhPB84EBx9*$DmFTpO1F(F znnsfo#7Rs@c&ZHZb!JHE`5A7>IE6`u?bF;DFlt-k)Uz{J&$H!vge|CWqzyE&C6b|a_W z5P`Emy%MBB`dbh!nV%Aby+NY`f=kLYN~20mEFCF=@LlF~3sc4k!_IX9w^w?)HB z-aVEiTwLoa(SAjO63$9^k=QnE7A%$b>Ec|g-Z+2{h=gfUlcwp|j-}*>xie#G1j(y- zTf$p3t{WxMjX86c$4Zqc;h;}Z9n&fbfV{(Sxe^9t>5{>I#n7_ct{XDV*+RZNK9zN@ zsQf0yv0|QYAzs<&HPX4;L`unK)4IcZs{Qy`06%AVWRg7-DbdpEl?xjviyW%_9cBT% zUl!g1l6MMIs|E~%TdAyK+uW9Ljp5aY9&*zI0q)JsoErH!b^SBK`!RYi9 z6twKF5U%Krn2+9KbZ2z;H7-K_z}?~jnOY~NS5bmKBQud6HX)?(s z*$^APj$NS#7VzcJSB8C`pl-0y6RJ-)dP5EA##_F3P%ZWwY2UMi{ri{DJkoTlCQ@E+ zFR$0sd>rWZHhIEcPfg7dI&b3OL{sSSA|Ahi)J+_j2zwXt)f+h4=t+d?7cg`My0AM+ z`iXh-~sCNgYeRKos7NIwp#4M zK7@(O_n@Ax4cLz;n(1?>jjjigz!PXeKicVt?!;5{DZG*ub`n3pOO#_9 zdk8wWJq~XDjDGD9i|AS@;7bMhuCceUd@)-u`dYdXqUrLusJG9{b>%b)B z{r^HJavL50U*I87x*QuiLw0^wc@u3{|}6@ Bj*$QW literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/crypto/Aes256Cipher.class b/bin/main/com/urpsys/basebatch/common/crypto/Aes256Cipher.class new file mode 100644 index 0000000000000000000000000000000000000000..1582ecab9bbe02e70c25539da9411a933c7fbbc9 GIT binary patch literal 3059 zcmai0`*R!B75=Uzc@?pC9FYf3DHuW%%Ryd96JzWUVkt2(e#AtMK{0)-S8HoyX;;}@ zJ5fs?yeV(WGi`w%^DE4N?ZF-Ru`~TgI{hCyrQf}~R&3X$qnX{i_nv#s{l4>^bM^Os zfAcMX)A&q7n}A_?bz|9Y1kJ#hHv@a#46Ul1tb49u`OQY?86$RZ;?zLVX;f`rLsFpY zs<~nsHPc-*F3w-Itx!N)vYVxbZ3)~pAy;o~ZZ6rDZ-?V{b6B9=S&3|pY_|!x(HL8q zHhr^hhqf<`r1@#bb;2_OiQe3-K<4}n%Wi~@=LQ-&1nyL)a6Dt|VrxaiUV;16LSS3V zz7sZ$F?YqRITapZi`hPboaZkZX2Z0qb__V+yTYTKv*p`wnF}O~oX8-7{W|s_lg2@T zgF(Z0+{ONe?=3hrJLos9&{?6?T{x_vdmBxqW)RwS9Y4a|0(UIh;k55HY(H!Y9PL$P zM0A!y>2f&t-%}afgB}g{3LO8Tlr4u&%_yq$UFJ~7eKKOgU8!j}B9NDuqjN7vvafso z5<&a6K^}`WGYF>5uzJZ3yk+0A)A)(NVG_v<2F7K-5y9wZu7i-9GPobdBq6;52X=!o zD=qqT9LIwKorFE+HkLzzw9UG}q23s$%;D{YVGaEP`&AMZoR}-e4l>ANzkEEb;{<-n zywp6iLe0g&cR0$;rg4hGF_nPjvE|;w84O}b!=sxLQbKMeTgNam0()h0c~sL{n(9l;XIK2~5(z>HB8W@*0#} z-&X%o1rLvHk=*9gSZ-FsMS**_RkW(sR$0qhP2(wQY~*|?gDI4xAZBEC=L%bVZYq0r z4+Lg)q|mP6nYdV6-D0;+kipZqBAw2WU^>ky7eCXXA33{H9Z_9Vg|f`0e7Pd zjoTzY#eUJC?ZL=)hr$`JO-dm4v|XB9>}+`|G(($i+U5%EzRpVg*`X9WX*LvY4UO$> zNVOLY{-%nR|Cy@qU6)*GsL_}0Djw2UVHGl|MzK&drpJq=Q`2Up!uFKG4g5+2v8YmL zB`>-mbo?66MNMwZ4MNkk$XRZy;x?tA2-vZESUUf$j^E+;tZv!=1q!{fIEg)K=_GPE zqOUcjlrvIW^w{&O_3c-Q>;o^5`O7n-`N0f4yrko0S#)W(Bt@Kz`l^oC@COo5@kUvl zq@rD_ZLW~P8+c2@n=HQnSI-4rp#vv%ye%E+WRfKv&B?G=7_m_^9hVG5%kqM?E9$e| zQWxxI>UZ)&5ygqI+3+-W3%OSw?PDFEsBlpSxgD;=7_nU(Lz|~)RJ2SecN zVp2?P;Qn&v*zn15;)CoLYbbw>XTRjJ_u&*TfI+?=$EX7Ib3W(UE5Vf{S2{3+y}Smb#XT6oF*fu(id;R% z)$?3^f-B?P{Uk2%J;C2azDsO>WlY1wQ&_?bu3;9>;Th(r%oJV0FBsvHBJn1ENh>hY zn~ZFc(!F>c71-*0uVI063C8WjBC0&o5Q%kgm7_9mnkCdYx`tlVIZDB$rw5Swo`*|n z5E?uUkMSvogOeJrr4#?cAq@fJgt(heCJX5%$|W`a1;jF0J2VD&Hr(kG8-*+k$;oft7>~;!iQ`-Wc{# W*4UpF?4ey?pV$rdUzm+HeEJ_WEC6Bv literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/exception/CustomException.class b/bin/main/com/urpsys/basebatch/common/exception/CustomException.class new file mode 100644 index 0000000000000000000000000000000000000000..59c77d1f9cc3ec503ad36d88ee778141a0e86e77 GIT binary patch literal 1934 zcmbVMT~ixX7=BJdNJxT&gg`A)pjru=NCK2n1W_73nwqrJ2Dos>(M`I-O0r9LH?;NA zJAZ-o&I=uGai+D77tZvmGxZPnALPah?;PuMHcLp`ILmpTB*(niS~KEX%a= z=50+NUOa^?JC<(jEDD6&fReo<(7mJ^y0a{BCe;?Xxoeqs)k;lUoZJ@Zl2Bpz(H})G z;sXBEp?|%ROf%J?;5k(}3^8zEMd9PTyvs>33z1oKN z7V&0sxe(rFC6B*8I{xy=0}3HU--7fh^lce?hI!W*a|H?X6?H?q-l$hJYg1N8me{Pa zJ1Tob+uQ7Nc6D1|zWBd}fj#PRPI@4a>{vN!vsm<2uV|MYwYpbQ_gxV|Tzp}o+5(g9 z9rDIPw$zV#+2Xkn7C2)$fx%Rvjk_&!3Clse$JsnBbJH8e`}ja0cp!)J#%C0tDonnL zLHL5eLl|JVn>T1fsdnU6eym=g+8jkWnQr5nw_)Ig1Ficoe5+wN zdR;3R2fD4Zi7SR-I;y;;>|wlEGwT&|FT0@`nx#70Z4yLIfZbaZE}IRjs;%pC9tK{z z*;BGa80UEU`AYb476EkA3exf+#D7k+yXNfj8>Funukp8!*01!-b9v=4VoLf)Bubel z82ScrCI0#&3@h=GM;JZC1@4Z!yKlO?7u?-GB|hPrlQe%Ij2~(KULpaYpbHt2XVH&o z3}FT%tn(NyVuBIxV4l`xt`_;UE#V5584dbfIrLA_qA;G%QEV6sM9ER^40i|Me=b9r zOc1mD1CkLpu{kfXn~d}^vR_F*#w8_wS?WxCGJUShI0XXhtk(uBa}_ZZTnU5CgDnaD z^41ep*6m#n{$s{Sp$R1;;fH_1q9n+4ASjbylSj7@$97wei55YE*{u+ma4wb4rMlu# zedJNanpDi8GtVdF`IJa18(V4PiM4oQ^vXoQRAoxCLVRI8p0D_oDUEUp@}W!*+ksCS$ZEW7KPDfKeN* zmhyS{OFpi%J#s>?vKKyFBfgyF5BZhTn&n!`4=4{YEQK^1DMNsBE?Kl0;E@Rw{}X8R NWuWnnKqZ&%`ak@XjeGzA literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/util/CommonUtil.class b/bin/main/com/urpsys/basebatch/common/util/CommonUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..53f4b774646e6cf91da61d1d0295ef8aa4601f7b GIT binary patch literal 8897 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 Gmi-C>b?1-( literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/util/DataSourceUtil.class b/bin/main/com/urpsys/basebatch/common/util/DataSourceUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..90ae13d6bbede7d5e1d881f35193095cdb041a76 GIT binary patch literal 4248 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.class b/bin/main/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..16b59342b420499f909039c06f3d859472772d37 GIT binary patch literal 2601 zcmbuA+j1L45QhJe50aG$2?m>(5I}(t9dOpMV<*^-Px2wcitR*35E3p{tFgSv>cDE{ zN_Z-$!b%mX;*tw)c^!(Pdv>juk~S`s3vJKz&V185{deone}4NNz#^VR5fQj))vHF! zZ8Tprjgr|^CDXGG4RTiNHKXO(jTdbc&{H^E_}4dWSXzFq8k^mrn7YZz}KgRSIk;d*5-Y5BdlM zK9(55u)rlcr<3#3H!N_JeCsUr8{JijC}NZqif%7R^Ok=D|H*T|{4XR%5cm1nKqzy` zT)()q#5qWTa}@4oM{0A)Y`?%866f)bfF$7BiC8&pHzh9cNilk%Wya215*PVvc(r!2 zjQPcFiFf(MP>G9KU@4h8JEg1!P0?+jpxh(dQe3tRQIIg_&#c@~KpgWJ=f{%7Wh@I! zgo(Ns#j3#anMb|3NyM?j=dEB}Vgs8UIUR7<80#gcBCozDaUIk(21yXwu`Q87o*h|s z%wtDl7khrbPijVB`pxyyRb>l4?4g8#9Aoz-rm@MRqQoo*JfXspA+Y#1siX!|@J#F3 zeX|jCtGM6HNxswp$2!3Ve*-tT!6QMM8lbTPg%?Nx#~XT(u>I zYDWj# XmR1Q`#q}%x#&(n%ji4P|FOUBPq^m!7 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/util/HtmlEmailUtil.class b/bin/main/com/urpsys/basebatch/common/util/HtmlEmailUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..14ed900fb566ef9b1cd933c3137f375f753f9fc4 GIT binary patch literal 4137 zcmb7Hdw&#H8Ga_&>})mzE#bNrZJql} znX}vpb0|Bd>`+5v&YRHCI^g*eW{?}-JY^1e6BEks)o|azq8mDSwbwo21Wq=m`drrw ztm2^nZux#l^$7=&KFJ5cVJI3Eon z7+%nDPsP4rF7Bsr4PUN*K>4!F6KRnl+m)|jV_oB9hbeAGgMAzfR?pD1)OI`PxK8+W zg5BORsv)t<8&hd4M@GjA4a;wbes}DqfiK}c4b2lOj49EuwtZj*&Rsbx2zoo_GS>{c zWuOU3Iy~UGYJV}GRsM)Y3L~m*D>rKSj(k@pliMp6ZfU=J7saP-b&uVVw!UKMopgN0 zOd5??W1tO7#OwzREJ7LbGO5ua4~+Hhr?I%E zKB7*s;w`J?qq6r%$Ebwg69$@*meHVrdyp1=Lk14u$ymT{-^-J=Is)oho5HXLZ9^J| z@C_YIlA7`x>oxFA940_PA?MJtdV)KS&J`_Y9X0S2o|d!p%M-8aZ0s17n0dxP2cBj4 zelhBTSr%hDZ06z}`Ihq5f67(`X$1xpmax!BT7<))Wgj2$Et~Z%iwOgha99CDFZNf% zl1jA2O{ju?8plOvPQ&7v@>W$Kt87sXA-!w}rueX34Mq_92US?~-F}~ySVFb$Kz6p74f&pW;n6XgkN-$pI^z zWX{wfpiWCk;b)|KXBuzg7dqb2aDNR_vnsH(6elbh_$4|CuySqQ9i)!wIIp3ro=3Ll zE0c)sEQN~EX_XGDz$^N;5+r_Q;C=j>7d1My*DVy8v1|z}YRhjWrf@N{!2bMO{7%OQ zWK)z`1wtLo)NuL8$yGCPja^>=YWIR1!?wIAIXbNI1= zKjF`ec57^`FJvv5%qy3L@v%Cv)=k-4zSnp#9Qn@pl#sY6RkJ^ZOS~ycdbh>loKtO* zPi?$yFr7lx-GVD9>-Z~cb_8+F#n`}A3A2Rbj!QwZSt%3a3=0hp*EMOrq|uO^jQS*N zq{xV`r0LjXi8Wr=X5HeuB~CPS*3}fSb1N?_6_mM)j(9GylhQFu0#>oRHS+(61h1F8 zBJxY;m%LMaH%J5IxP{{uz775@2(XX~?1ys~?&TzJY>~Va7GnvwEag`h-}2Mks$Ijf z%UJmdKN|2AKGS@I`IEv9+#k)#N*fJph}4QHt2r-X`Z<=}&7D{A!1~KrJ0oUcZA>*bz)n6XQaeMh#naR4uVMW=NVYzFv2{~V;u6+g#}*Ae zO*hbcIMdYFy5lMy=}Bgi8_L+3Np>a5*qupsUco;84V1Beee1z8Mtby2GNYGqgaR^6 z*Kw=?BJM-1?rF+2m0`(aTqYL96H_vg?@4457isN6JdJ1BD&_qxHoC?LqWwe?c!E$3 za^*>^z(G8S5rTFIn=pz;d2iT*BN$>dAI34BeTGs*4x27)N>T_oI>r9`BBct<M hQoD^Cv_hxO9(=}?6e0T?_cq}3YOemBpfXqg@jpXpbDRJG literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/common/util/RestApiCallUtil.class b/bin/main/com/urpsys/basebatch/common/util/RestApiCallUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..e2ed9475548947c01cb0958f4d50cfe383f831b0 GIT binary patch literal 9007 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/EgovConfigAppIdGen.class b/bin/main/com/urpsys/basebatch/config/EgovConfigAppIdGen.class new file mode 100644 index 0000000000000000000000000000000000000000..68f3ca0ce2ee90d47f4d46b48ef8ac0f44d4b80e GIT binary patch literal 28560 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/EgovMessageSource.class b/bin/main/com/urpsys/basebatch/config/EgovMessageSource.class new file mode 100644 index 0000000000000000000000000000000000000000..be53d48d9bfc1cc1998be0ac1c573488baf8da5c GIT binary patch literal 1278 zcmb`GT~8B16o%jFr(L&#iWO8;RB*RMC-JtV2@*^U3naz##;e)wuqDjQzlC2fYHVRjixTVYRX zD59>T2906P@&dV+_H7xxQx!AZvO-7rT@iWeoEuBYkry*?>rz)v`Hfg6GuIu`Max@t=1_amA2?PKXAtx1t7 zc+^G?wb5D5(Q2sR;dguEsb*?Se8ZOt6Dw3k{p$CuzP;Cr&G)wcPv( z{VQz>xIuFzGcIF}_WIBP^SDVT!oh8tRdAcU3(C8>{sRl=(OPCTDQz=TXbin_1*NV~ zRARdOT=qSjmsUVA3%7ZtlDg{z+p5op*`-TUncrq^19$~4UvDC4OwT$I? HmelwMZVFTJ literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/EncryptConfig.class b/bin/main/com/urpsys/basebatch/config/EncryptConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..78756c504cd07577256938590398d2c6b5cfc024 GIT binary patch literal 821 zcma)4T~CuS6n;7e@0b%1`~tt=!h}Jz2}W)pCO9!6E|REOV!Z0QvK9BXZ`!`d{*_*l zXyOm>M;T8GnKO}ui=NZd^YlFD>(}q^KLPAwHA97=DQ(V6SNM_VUEx(%1UcZ+nj_uk z`$oD^5n9R0P-R#+7AJxah3WId?y-`AVP;nw9bPa@tv5Ri)t2q4I;Jq&z%*tU=G)q+ zw`JZ{?t|zK6~kiNN-^vRr=xxGSPcX188+KjPH2arA(Y>GzTMKrKsknI>&?r)=eadJ zRb%@U{1tP_ui<{7?adrI8|r0EsAC1Q)QI=CbW*+6X-NMJ|7k3iVf(5n zov%#kQY|}J1FZ*b9Z;bgtp&-9EKZt{p58b^?OSr!Nk%uYifber=K#{z$zqtpJcU}I zdyVuBEa4XJkTplXyL6U6fqAlG_^m`o$RAkwc!v95>8*ml438%mY8MO@JV>aADQe8* G5%32V2iA-L literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/KicInsaDbConfig.class b/bin/main/com/urpsys/basebatch/config/KicInsaDbConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..14db16820e8dd31b207583053b2675c50485a9ff GIT binary patch literal 4024 zcmbtXX>-#?7=G3XIC0DsAY8q;6Ng0H1p-Y&2&V&qgtR~ltd&h7uq7kO!G^Z<;tzEC zrN5wG+fIk0%=8EJH+4FFR+3}IM@pt2VB=T64w~%e-WJ@?35-*eB60u>OHukVanGbH=sY17-RGZOUE{$YdRN z&hUz^WzWsJvY;M2?n82NmBH`En7v@Rj$Kf;KP0g2M#=WAf||BGE0UEOfbmt?kH_UK1IGL9 zHlff7f%nqrLb?MV&`yd>VHfr!v3m)kLMNxO7yIZI^{6ECv}kj0EDj;)hWc(N(JL_0 z408`=a;7mubG*PDBP*X&h+vywCBkafOt?x1V?G1=_=`~nq-0JahoD+weW0{1ZoxHmbh*a&J_0J zxJKEBOvzBAhLHD7ci<#l#KbO0w=$CxNNML*vC`8DDQhNuX+9j6#Q>j45a641KGjPg z+#>f+KFUuj&ts6zhj}hgYN1sNUxg?fDHijV8PpTTT?2EdFCdUbY0fLdVwJNz!wY2@ z4Ppt~)L7Y6#h@Z3F)DCuxyY;PU1Kyz?M2!o#soG7MZ|K9OV<`Z2<%!~0Vkv`nZ9!W zPbs|4e6eONYe`F#OXC3^3iNo&Kc{A8DeuP_YCGRn zwr<(UC@%yKw!l-%!o&tlB-fX{u*<$>v{A4kZO1H0%beJlSOIyzAk#DL+ z3O27gzRRJKt%e=Pn4rUE9k(!5JBzpyUI+0sjW57qZC#lCF_E`dB(i=usSO291hWr? zZT7sS$G%NhmJZ~Dy0ZuzUlwz*QF%!QFoqYK62_epBObGZS+m|d(Lf(g|8)V6QHLdZ z(hO$8ZZ^}w@K48J6ha!;kOnu@EOv4VYvccwHYD^=#$A#-y>@U-=<%%KjALeW*2Q%V zpS2#=k(`LZ2L5)F)Zi+(uFAZ`#$N+ooB69bgW>MsujaxF*n+KG33+U%L@j?UcRTpJ za|goXxn}qyZzi~&5!uY|c(?og7ufj|cD%vE|=>3dTzu%l?e5!TE{0^ZsAR zpbc7)?NkLgOP1#-?mTwm0`}oDhAgtWHXQmwpom9Y z<4Ug$-0lWSr*#-3rH2ER&jeth7v8|T)&CNunqpyei!ldwE-KMUPdVfzP)4OrU>N6e zgTOHICrP6tzpDQgp41C_8WUE9k_J^6tpvUby!I@xZwJMG&HXogz9q}h&hPNOhv9z# D1)QB? literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/MailConfig.class b/bin/main/com/urpsys/basebatch/config/MailConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..c9a6d43a2ae77ac37a24314f4f8c608e94da9015 GIT binary patch literal 2614 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 i;Ez#={d8B1iW!bom3aemRT-3t<%)nl!q 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/quartz/QuartzJob.class b/bin/main/com/urpsys/basebatch/config/quartz/QuartzJob.class new file mode 100644 index 0000000000000000000000000000000000000000..7bdce427e0cbb911b5dbfd8987989fc3a58dfdf2 GIT binary patch literal 2180 zcmb7GZCBJ*5PmL;WLYBWN>Q=eRV%Ux#Hv-wQd+yniv{1H^xZa_y}JamxoeUYXivZO z54AmqNr9M!N|K{MP6 zt%@DWiXAztmZSWdTeqIK>>&EVdJ>BVs$!s1;N+V9!nQoyuUn5QYtmtyE`eSZ?Ap^( zAmgdJKz>25hhFXWnzf+nbs3Zd&OdGWk=u~-{tGvBE1taP`zo>{SNWlK@l>Ot)~#9T z%fOCgl`h#y$8&u*nquIg;)+0LSyg2YCveKZNr5v5kD0NZNCjIa@;EKfU6)aEyuj6= zg?0sH&kn;<@%1dbA@G(716hF+3$8C8wi*=~EZa;sF3YjK6+3XXo-TGx#u?_2!GMXg zFqvhv>awJ3-j8<(RayCw+>A;ZjokfBM>b;s4O|i^ z?C-{|&#qY(S70M>Zj0ytGH%hkWD{`uZbZPS)l9J6p`AC=~5K9 zew}&s;5tSPj0jvjBA>Jd6JxLhOm>M`Ov}i2J%O`BNnhHvCp)DcyoXx`ZVL46kDKh9 zxQ+J(j;GP=$X>LY0_R>2mu!`?xGQj~nrH<|S(qsN_)``iut2TmP{M}>CRyl#0}~$; zQ}~EClP3xc?!_XR5MHqMl}nd2w)ZrOp9oyr>ypCvx<_#(i)n#@SBa)~q^vkig*4+C zqPTb6z#L0!A3o1J!y(LJ77t8(iUp3A>qjfL*WzX4XwB7YEu(IEwCGM zLj~(r$figYZ8fD;R*k0er62LYeN+Be2B90qG{B7R)#$RzUbNlEhSP3nd!E`Li#V+y zV6?U=E|I`9e2?)R&^%7r%|CoylsU=_S9)MlJ5H@gsh{q=c!}QM(Dw_K4)pW4b^wR< zOuPbWr1sR!qSU*`hJVMogD%C`MVrz9=kYeBzy(}n;CJ}lNv#l{{tv%9x#IqczWn7K zyxW26I~W$&!3}{$y?SRPKfaBL9ekXD*2^RL`>*um^DoS9V}6Rt&lz!H8;kUKi6{Bb zU*gMce76lp`_C87=_@Y*)Bs_Y>FV219+e+yYCHmMJj1JuEp&j${Ffb^fg_}=vG?0ms;V5 z8$=~TldunAK7bQ~p)4cP43VVVcQQ*uD_T;d)7*|Tv_8mLu9@X`tTodyQyD&CS;Ey_ zQ&^6KWJES49&5K{BHiVS1PLXKjA@zfI3#3B!)7N>)#V`wg>nb8eb*c%EW zsAs53b2m@V&=pM{Iho4njuVfaR9OXvMg>8H7;2NI#bJ zTL__>p?X|iYC>MsxPsmwu2Q=cpNIkteN+YR70WFDO$y7lvh=R?V{!@8a~q^fF^oM z0B{b?-W$-0n%jqIG|JtI?r%6-3~BQqGL!<)N+~3m`i-8FbAU#<7wXbpJ|gQUvH>C+EI~GgxbMs)L1ibMB}$Nu5ZNe^jS*SgBUAHfPB@bu P$8nQr7;X_!026-!Wm9IG literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.class b/bin/main/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.class new file mode 100644 index 0000000000000000000000000000000000000000..1096f4d2dfcb5ebd823bff74c31c7505aa88396a GIT binary patch literal 1885 zcmbVNT~8B16g^XrEoD_i1O-L>KwDJSZ_%Qn6%3|86oQFw+hwSO+a2AV67|^^%idP;^*Y;<8KLwlL4 zT6%_|Y;mKSg6~FAKDU`=I~aD^u#jfhUK9bJsa8rnoOg+?Da&*H1veCW98b258HO3O zpwGr`*u+xZ7gW-v;{U2orCY>(#;s7+?rbhWeNKfUDCc#$K^q5fkW?a9QxU_?-+XIj zW^fosEDTXa4GP%UhXDqgAa#!>MaUN!E@X`^@$QH_oKMc(lBJ2q+^g!=6=b0JW0lV> zq%q8}E%qP${^He-m(M$J93vJ^&|Ye6l??|cNh=X7NfJHTp14Nca4Y6UG9($SvmyuD z%$fkhVA7!(MG_!Jn-}b8xmcHRDu`5A z^|Yc!%1cQppS}II`ktXDW}ooY$ARJWzvrNatZ*fhGW~bw?=fWNWHt2oq|nEtuj!34 zqBkFHwyA*5x7nFIvQS_+x%oc%vp^Om=qzrIV%YabVd=EcJwneGdiwMsC)-Z9WgFQH zSv}JMn?_q{lq0Ku?Op66wymQ3Ee%rWp|=hI9iCn@0~*n}kHZ|YdUeb22kdDK889K* zl^oEIy<~|t2I#GGo+hi;(!*=mzlK9^=sTJ6P$E8Ek3WiR96wFoEfmx74&7b3PdJvs z289eQ0w<`{5d$+=bB$pr2&W7I{dERs$(!LE&d1Q_3>Big0a%maf&uF>;B?EInsik) zFxpiZjUn!mPwP6ni%r>GC3e>g;Bd{g4!D_}=9#CzI^ELCxDqEBC#xk$wY)ZrH~KZ3 fs5({0P1UPT#Z{+p)kKaH6A&MU>$ri*@jbr)h}_7n literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/dao/QuartzDao.class b/bin/main/com/urpsys/basebatch/dao/QuartzDao.class new file mode 100644 index 0000000000000000000000000000000000000000..45f5162a697c5e02da1b77ac9e2a9eb29e9e2e3c GIT binary patch literal 596 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/service/QuartzService.class b/bin/main/com/urpsys/basebatch/service/QuartzService.class new file mode 100644 index 0000000000000000000000000000000000000000..f3537334c8279d307348097830c266c5bf42e890 GIT binary patch literal 1172 zcmbtTTW`}a6h3atO4Gnb2ZM2E6le>=FFYVx4NV{fC~QEczB{SgdQ0PCJDbX{0tpF? z2YvuQ3UT5_y=aj@LQ!&Z?C*R&m(Ra`|M&?29e7ZN0)bX2M>J7mJ<&8^ng`5;L#nwt z5+SD_5~j>&f9jQ?L}2ZJ9WffQctH1p10EUzl}{G+l1Tz}FPE>!WX6T4Hi6BLNo>T3 zcZC)~#CPIY8fJuyHG!v|R0FEVO2mV{Vk3Sm)gcWyi#6@D&`33*Y!*Ow5+jd=;yt8Y z>4;dEZ34wcvrC}#LiV@=ML6d|1snpao{0HwG77lbXLv4wnkPdRb(s>WpDmWmP+%gD z@@vWM4IW<8Ji>nX;gI*<%HU1h$9~irP0w~LF(RU#&<2qeUkqYq5`_u)rvRO$fcTL2 zUNb#>$Hv))?Y(c(_Oz$ag=w_6@u>iT%PyROl`3q)wK7~Ku=V%3xKM+2j9jkcJ;NDH zi>Wsj&dV~$DUbgH?Ei~QOS|pDb+|#m(MDm*cTp_qNaqsGl0<|r6BY7T!VY~&){j#- zfkv+EwBd?NGZ}N5-2$B7vs|cAs8G}=s(4YK`}1WMwc!rVrik~C;EMx7TgJcCo<&^cB#)OTXG2OIG&(SYnY&B(icmlTyr>Ll<+L*#JDh$A6w=j(Y+_gv7ZOsn) J_t3u&@CS)IG9Ul| literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/basebatch/urpBaseBatchApplication.class b/bin/main/com/urpsys/basebatch/urpBaseBatchApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..a06c8909621e998dbf727f0c775c222ce3a80211 GIT binary patch literal 1919 zcmb7FOLH4V5dKECv$C=wVT~Q~z$gzKJz}lN!z7Wh6U#9##c?7qRmmYW+KiR4S36>N zR^SUqxN)Q^M@|$s!XcO(@&ouy6h+TUfP~gmMTeQ~$8>-F&2;PcKVQ5Au!M$%48uiF zwcR-EM0=6jaI4etrN^~YfrW8~V>`UdU7rUn_il4Xc$(qRk_@C? zW*93Jw;0B2>aoaS43jn{aERe(T?S$!ZZ}2vDR26M!Ko{c`&&GeM(!)e^%EH}RO+vS zsY?0UTm}p?g@^Tju{CrkgI2Y;mBs61i#kTEbV9W)eGyf-r)8HwPGQ=@8$(q!_989X zHfC^~;c!dn%}{kjsP`D=3Mm;zRXLo%DGMhV%BiK0vaJF)*3x%t$@gdUY2&oXI2LsM zEM^%de8W)=d7QOyW*A~poQ-ohPwa~?V(t@h(}U=GcT+7sn4}u#Y+OKrVyl?0Yr2P6 zDtD7e(ZrPC?P?Y!hJ|yl_{-rUDi-D$rV{RlgW7Phz+f5jwNH061aaVsF8w!kJ}Ewb zJLu*QLX^c723rQ(A%7H!uq(nW7DwU?+S9{jag8AEO7GEQ(aqwu zP|)R3CkzvrHzCOMzaegpoZ3+NHL*>-b07yftYXbVjiIE%mfL&fL`YkFslr{isg!mb z$;WFpI;q+C2x_ zkB~Hp*Km|HbeMS*EJM2AoMZcN_VH%D?7a0HZ$HKCFL=i(K1bQ?@Ah{i|A=qP&gD^` zt3y6s*?Di&=lYP(O4+H7`n*5nb7~OA%7DpXrG4D`+!Q(t4K4I}ZnQBwZk> zfD($Br*)Br(lULmqk;`$?H(5J0GH6jWjcEWA+91Oudi_p-{3mF!wr0oDxT7*AFzU- za1+l^!#>s$QfGR^;RAd~c_;BRKElUD>n9}9U)&#1U2;LzS& literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.class b/bin/main/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.class new file mode 100644 index 0000000000000000000000000000000000000000..8cfb987ed1c25c06d626e32d6beb01825c3a3a93 GIT binary patch literal 561 zcma)3+e!m55S>)*+InmCN$^=(3g!d02o{kRDnb{0&u-Ig+TA21vr2!>2S31%5@%P@ z6)8v_hI8g*E@$4}UtR%V2;Bf03cx zJ{Ep?FYH&MY8s(aIt@RiwK2kLdJMXSoePw;aTr|mwiOQh69%KL>3{Yui?kzCxJ2Hm zj8;3VwI|=MN*@@U&kBtymygP;IFmP88x*LF_6#nk#-&_Xkt`)wbOhzO_z`e2!AeK_ z4Jx6xr3nisa`|lBntPN^8r)dPXVMz4(6~+5WWZpDjt$VD%k4pva8M%HC)|SeH$EWl Qu*w|4F~v6F6N(*x4?c0I2><{9 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.class b/bin/main/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.class new file mode 100644 index 0000000000000000000000000000000000000000..bc4153408618acd069f304a07942e051342cda5c GIT binary patch literal 1280 zcmb7DT~8B16g|@dl~VaA3ZnS^)k1V0)WleV0gZvAYP5v++3nB{v@^}jEQJ5$gC-^h zAN&FSDC6Dj0!w5QOtYQ6cg{U~=AJvh|NQ&~U>dxK(2nnj&>MTm#Yq8Q zi@Z5dR2s!bD$-nOtR zj??6b?2oRRZzt&!%Q@23okQg zVpy!@scY0X8P;>RFDSmg8B4xX!6I%lj4Dm%rn$-eD8t-YD-Q?9cD~Llx}X$>a?3?}j=+{txbT4_A#;VGP)e|0X@TN-j2ak>cE5#KsZi(UhF$<-p= zY(@`ROKXYV;`I`(MOtat>3@PEPHTc&`hm(fN)#}efySPnqf&rt%3BS$D#8D`EOXae-0vV jVJQ_Akl1@9<36E>g5%5s$`tT05%VbNLYd;n6xV>isY+3m literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.class b/bin/main/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.class new file mode 100644 index 0000000000000000000000000000000000000000..128de57799b73089613624312943a83abdb71e5d GIT binary patch literal 887 zcma)4NlpVX5NwAfBbjq5rted^l6haDcKDUXEajWoS8*^bq*g-DIg3@s@ zDBxrqgO)hn&I_IC343itiuc;ya_7;a_FaSg0*!XkYugPb888?ls{@Rac_&~JN>J{- nC_V*Mx|Lv>GBbsl*}}{m%>RS7K(WOfcL{2AR_VP==L*0Fg|7o7 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.class b/bin/main/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.class new file mode 100644 index 0000000000000000000000000000000000000000..cd456c8f6b7f1e34ba93f22c76d819c14d55c7fc GIT binary patch literal 887 zcmb7C+fLg+5S>jahENi2y@2}M79rRVFhT+WB5EQeB6y!TgR{ZjUG1)c{2CAa06q#a zNuX{8mf&f;=bZ7(oSFNFyFUQ13mXyC1pG`)E(>S<$V(M+-@}j$WRmByk4FAhNh|pL z5KRO#0+xn&jWR=>%G2JEk|3bzDdUe8r=GgB)fe#NSG$yTgHt+m>PNQ;*`SQ} z5zGr%Ez|xoTvKUJE*!G5gBnv3@cpSm5mYAIN?%d`1pT0cHr{LrnD44oV<;R;4=Sa* zFI)NtnT{9lO@7#%w!miah+IWLV~UKuIp^*Kto#pjNEfUsY##%as>ZWf&uQD$UcEA$ zfbM(rZ=8@9(KUrj=vZa!ShL*u&UhgL*3SwZR8AMlt6oO?TAP5Awehms#-$Q1CIga+ zk4Jflr9iSpK2m^)ukItv z@;laYN{5`j<5)nJjCMkUj%WR@zKFJ!#oSF0X{_+X{ZP>3siNT35IWL^`GtU*}euyN-T;w@V(C{9r>=qv|n_i)* zz&eBa1fP&+s8fD7oJc_o4!q35r7uX|J0oJ9bo9tDXf#{h1-l@X@via|F{s8W)kuYt z4B|h8_RVtYbEH5l8af4fm#tOHELm>RyqjB=cBr9C zV2|e)%|}(s4}G8Y+q33UyRy|;IvKo48jvqyt9Jfo3>x2_bzkeVr&^hJh zWeWRoP{RR%L#<%U#{P8l;gCRgQHC){0;l@t8aPjttRNU0cp1xXFc%#fk^+0@99Q0{ zmUGfyvIuGfzHODVmhULJw%9cuMVLYY$924pUPc){bO`*#_Gs>04g^w@>rz#Uz{&n7 zyhaJkL_56GDUao|9*!wMQZwtetVB1h;go=}y=>|>b+shU2wX5G>W|S1I&k9%u12%CWYjK%P-> z&I+7qHmTwGvc*6)iJMIk*NSJ#BOe$>9Pur}*}Sewd`?FX^c3#ko`$;u!~du4b-b^N zz4rx^gh4stwGBxTMVYoWZLYvtg(*x!g=zJb z6BnaAtX0m8YD0R-6FvxUvOk?D%R}meR*>iF89%@l0x@v=cD_9r@n|h>Pa@Fh4TVi z7#5gUtE1=AMIL|9!SdYAdNa0RFNvKZl)+_gw+0+ZC8 z;co%6cz_%1*$mcjE6RA7*)o?}#%i{X4W7`)ZhVX<%zl#Deu=Mm)&f0$jc+*nmNtFp k_?M0o8iWQ@W501+?4-qa-0i^kQB-@V{R8Ev{Qn622j^MNW&i*H literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.class b/bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.class new file mode 100644 index 0000000000000000000000000000000000000000..52b5c18241284fd760bca49b2e0f067d280ea493 GIT binary patch literal 4848 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 b/bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 new file mode 100644 index 00000000..df86c71d --- /dev/null +++ b/bin/main/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 @@ -0,0 +1,259 @@ +package com.urpsys.itmsbatch.cmm.excute; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.stereotype.Component; + +import com.urpsys.basebatch.common.util.CommonUtil; +import com.urpsys.basebatch.common.util.ConvertUtils; +import com.urpsys.basebatch.common.util.HtmlEmailUtil; +import com.urpsys.basebatch.common.util.RestApiCallUtil; +import com.urpsys.itmsbatch.cmm.dao.MailKaTalkDao; +import com.urpsys.itmsbatch.cmm.service.MailKaTalkService; + +import kong.unirest.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * KIC(한국투자공사) 메일/카톡 처리 실행 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.11 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.11    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class MailKaTalkSendKiccJob2 implements Job +{ + @Autowired + MailKaTalkService mailKaTalkService; + + @Autowired + HtmlEmailUtil htmlEmailUtil; + + @Autowired + RestApiCallUtil restApiCallUtil; + + @Value("${custom.api_kic_msg_key}") + private String strApiKicMsgKey; // KIC 메신저서버 api key + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(" >>>>>>>>>> MailKaTalkSendKiccJob Executed <<<<<<<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + // 전송메일 대상 조회 + List> listNctn = mailKaTalkService.selectNctnProcSndInfo(); + + for(LinkedHashMap tempMap : listNctn) + { + String strProcRsltCn = ""; + String strProcRsltCd = ""; + + // 메일 처리 + if(tempMap.get("procTy").equals("1")) + { + Map bodyMap = new HashMap(); + + String strMailAddress = CommonUtil.nvl(tempMap.get("rcvrAddr")); + + // 2025.07.01 나혁제 자기 메일로 처리 + // bodyMap.put("email" , "hong@kic.go.kr"); + bodyMap.put("email" , CommonUtil.nvl(tempMap.get("rcvrAddr")) ); + bodyMap.put("to" , CommonUtil.nvl(tempMap.get("rcvrAddr")) ); + bodyMap.put("subject" , CommonUtil.nvl(tempMap.get("ttl")) ); + bodyMap.put("content" , CommonUtil.nvl(tempMap.get("bdy")) ); + // bodyMap.put("content" , "itms 메일테스트 입니다. 메일 삭제해주세요." ); + bodyMap.put("contentType" , "text/html" ); + + try + { + // 메일주소가 없는경우 오류 처리 + if(strMailAddress.equals("")) + { + strProcRsltCn = "메일주소 존재하지 않음"; + strProcRsltCd = "-1"; + } + else + { + // Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/test/kicMailTest.do"); + Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/api/mail/send/json"); + + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + } + catch(Exception e) + { + e.printStackTrace(); + + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 메신저 처리 + else if(tempMap.get("procTy").equals("3")) + { + String strTtl = CommonUtil.nvl(tempMap.get("ttl")); + String strRcvrAddr = CommonUtil.nvl(tempMap.get("rcvrAddr")); + String strBdy = CommonUtil.nvl(tempMap.get("bdy")); + String[] srBdy = strBdy.split(","); + + try + { + /* + Map messageMap = new HashMap(); + + messageMap.put("\""+"title" +"\"" , "\""+strTtl+"\"" ); + messageMap.put("\""+"context" +"\"" , "\""+srBdy[0]+"\"" ); + + Map messageFuncMap = new HashMap(); + + messageFuncMap.put("\""+"name" +"\"", "\""+"상세페이지로이동"+"\"" ); + messageFuncMap.put("\""+"type" +"\"", "\""+"link" +"\"" ); + messageFuncMap.put("\""+"data" +"\"", "\""+srBdy[1] +"\"" ); + + messageMap.put("\""+"func"+"\"", messageFuncMap); + */ + + // JSONParser parser = new JSONParser(); + + /* + Map messageMap = new HashMap(); + + messageMap.put("title" , strTtl ); + messageMap.put("context" , srBdy[0] ); + + Map messageFuncMap = new HashMap(); + + messageFuncMap.put("name" , "상세페이지로이동" ); + messageFuncMap.put("type" , "link" ); + messageFuncMap.put("data" , srBdy[1] ); + + messageMap.put("func", messageFuncMap); + + StringBuilder strBulider = new StringBuilder(1000); + + strBulider.append("\""); + strBulider.append(messageMap.toString().replaceAll("\"", "\\\"")); + strBulider.append("\""); + */ + + // 변환처리 + // JSONObject jsonObj = ConvertUtils.getJsonFromMap(messageMap); + + + Map bodyMap = new HashMap(); + + List> targetsList = new ArrayList<>(); + + Map targetMap = new HashMap(); + targetMap.put("targetCode", strRcvrAddr); + targetMap.put("targetType", "UR"); + targetsList.add(targetMap); + + JSONObject jsonObj = new JSONObject(); + + // String str = "\"; + + jsonObj.put("name", "상세페이지로이동"); + jsonObj.put("type", "link"); + jsonObj.put("data", srBdy[1]); + + JSONObject jObj = new JSONObject(); + + jObj.put("title" , strTtl); + jObj.put("context", srBdy[0]); + + jObj.put("func", jsonObj); + + StringBuilder strBulider = new StringBuilder(100); + + // strBulider.append("\""); + strBulider.append(jObj.toString().replaceAll("\"", "\\\"")); + // strBulider.append("\""); + + // bodyMap 구성 + bodyMap.put("SubjectCode", strApiKicMsgKey); + bodyMap.put("targets" , targetsList ); + + // bodyMap.put("message" , jsonObj.toString() ); + + bodyMap.put("message" , strBulider.toString() ); + // bodyMap.put("message" , messageMap.toString() ); + // bodyMap.put("message" , messageMap ); + // bodyMap.put("message" , "테스트" ); + + // Map retMap = restApiCallUtil.RestApiCallNoAuthKicMsg( bodyMap, "/test/kicMsgTest.do"); + Map retMap = restApiCallUtil.RestApiCallNoAuthKicMsg( bodyMap, "/server/na/notice"); + + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + catch(Exception e) + { + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 오류처리 + else + { + strProcRsltCn = "알수 없는 구분값"; + strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; + } + + LinkedHashMap inputMap = new LinkedHashMap(); + + inputMap.put("procRsltCn" , strProcRsltCn); + inputMap.put("procRsltCd" , strProcRsltCd); + inputMap.put("nctnEsntlId" , tempMap.get("nctnEsntlId")); + + mailKaTalkService.updateNtcnProcSndInfo(inputMap); + } + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + log.info(" <<<<<<<<<< MailKaTalkSendKiccJob Executed >>>>>>>>>> "); + } + + +} \ No newline at end of file diff --git a/bin/main/com/urpsys/itmsbatch/cmm/service/CmmUseService.class b/bin/main/com/urpsys/itmsbatch/cmm/service/CmmUseService.class new file mode 100644 index 0000000000000000000000000000000000000000..7d98291dfef6f9d693829990d00f9ea8de6446c7 GIT binary patch literal 1809 zcmb7ETTfF#5dO9;R?1Nj5X3uPumxq&XkskE5b%~%i57X^o-SqKT$(+5Kz#By_)9b~ zG5X*S@JAWvT!hxP$>HJT?99%5vorI}{QmRv7l36vC?dzOX!|Y?bvrl=xH4|g5XRo& zw(Igh>V0KPzUI2`16fa`A_@#+yJBB(M|ds1(b$!?VHhS4vRW5DL%B8(vnl)(k1VSU zGw(vrC|7Q&Ks6k>>Uq8qM)_XA@VMsd77yB5d97_NTzTN@J>HPQ3;4FMjjs>6IC9{t zq45utmQ8{^wX8g4Rv7Z-$`(Um&2P#Q@;GB*7$t_$n)2kE&}~S)DJU+(c+Izkvn8~O z(U72Ff5d7apgjz98OQzlg*bR*m*75)k@b* zU#F4m6KYE0^FaLN1U_zA-9#0wc4(3&R#$pnk-GK1 zHzVFkbr=j6Eezq*2rlDl5my-IveCoBI3^f|lt%?3s&rMTvvv$q-Q7EE|Lfq>K~5PH zV3J#Ycf0>*slK?(Vgt4 zfo>U->gHMpct-yy`+F8Dm?x6f{ZQNTxr&FVYgH^pe2un2zcCJs)Y3Q9DV}Z?V*Hc7 zrbg4m)4bDG=$!Y>W3_Oqm?fg+X|FN*h;8&Q(kc3%jx{tXD3LTm5~qJ`H~$^hS5o9~ zHZ=wTjndgl3^0asB+-7r1i??zxj@o+Ow%cc3o+bVI^{?nng52Fg&(+-!xs|s9iWvM zbSg1RLCFEvaGl_0$vO!bX>O2)Mcm39@K$d?e&T>c*31F#^agx%;()}TJ^>f{mh^6K X!0HJD=CBy|jK{<%Q7e{6z7PBboIbIG literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.class b/bin/main/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.class new file mode 100644 index 0000000000000000000000000000000000000000..fb97969527196a7f03021212b1a367d11b47aac7 GIT binary patch literal 3718 zcmbtXTW}ml6+NxjjCRMinAncjd7yw3ON!(Pk%=8imNBv|ZL*TFW!bSE2(!DR)kr%t z>zP?u#w5H#LU<-TlK=sXiNTmxpzH{$s1zSi#SecJ#RvH(`J?y(VouM@N~1?Ys!&;) z?tA<8J$>)Fx7&Yw5(uWEl_I zrMw%Mc{jBD$ylbKMWAEWoHvcC=~j#*#aXKq3N%-}ihy45{E87&r+3d91+P-E{6T?R zj@8}JcC5TRZwGd01X)PoS%i zf;wlHY=Sb%rY8Z8rdHB2mpD7Ij;p;fx|(mhm1*B}taF|}XA~{d4UB2C6ng%7!(75< z9H@uhIopo_W#}~@22KR0I}K-L!d}xQjJ2kYTjYtc&YfaRhqU9eqNsNd99A>CGWIiRenbU~g0+~Y#CFV)8QbCWvP0J)-(n#>V8rqS` zVi)dFU`e(cC%5AIj6m;0rc1)+uk@OY}tiZw}Sfvqd{&nNQ1EcRi)0;XMG-l3t@@ID-n ze6kjZaC2jaRKX9b7@?ao0~Yh8ABQv?#wcmT6EZ4kGQ>@SY*-FyB2tiF(M~2qS)3{! zOg5h&qg9M^R%b$ES7SJ$;R84-&{nnFN;nfyH?Lw+p!42)UVq`~*IvBZ`TDb$UVG{B z&LH$z36W*zK<9-=vzWq31tfaMYG!MA2&Z^z+nr|5*_l2-3~O*L{_Yc!5@$4Qz{V^- zh({EBh_)$8yj6eD@L`xNgTSh?iRRgZkNA~*c~$fh=jrGrA{8Y8WH1Ix!!+1{+pM#7 zv&zcYl7`=i|7i)<*02d3Sx1)*F|y zb_8xsoUW~_!S1{?{g{T2OVf_nbh&d&>qywq?f`%_jmA+CnZn^agp2n9IJR@*-ig-mc zu#zj?a~#h#A|xZxc#6G7!&mTCCc~X43I12PCTEgBzOLaL5ypD0%kf1fa@$T*8f>`z3Dw1t(4D^iTBZ z@4tqFuV8GTwNHN_8MgK5g=DDYlxvvi*nA24OSoM>mQxmSycw7ADm|RewJze}CJd-K z_4nA2Q}yCCl%K;Wbu){Yr8~9ZzE`j1)NAlh_UiMw)_AaxYm)=HQ|}@^(uBtFv1GV} zV-cUAn|8f8kjb_G0r%77)3Jk0pZ;VnBe&^mc#!+`E#j%hCX4tyhnLZtYuBITxn9PX z2HxE4Yg{V>^sK=1Z~R53q9w}S6HyZOkwp8U;{XFc!rSK{hH(gajAD|1AHf4CVgeqH z;xS5|;=AA(oMiuc2;avkT*Vn&$HVv?ujoH>9}8lbkEbzQh)_%u1(TdmAtUzVTlh9fpo=|t0pF3d5L@wGj+)UgviKe@ zvLyH{BZ`aUVIKd)C5{v#{S$t`kxD!>c##(EL{(;jFVe>kdHNonKlbpWB@b7YJY1oN z*zyW3f6Vn~&~^j2p;ZBovPWTz6ut^^gP~HFWE4}XU@ZOzo}B+P82cAS{)1zYa_j~p Yym}M5y-F8N_(@d98IFF+`Okp=0(;%-9{>OV literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.class b/bin/main/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.class new file mode 100644 index 0000000000000000000000000000000000000000..c15c7ff9ec97ff1b7940fa970c7c58671455b878 GIT binary patch literal 1281 zcma)5TTc@~6#k|KDy0a5R8hR)t*yo}h6iIC3~G#of|oXZpKgaTushSt&O-Q4K4@ZM z@WCJ8k20R!*3t$xA=5l#O=;!U8M38vi(%re>Bu~?m@Qx$d4{>V(sCyX+R`=!eV1XOZam?)gjKOW z2u`>?MMBonYf9}GiC7AyPd(c4oc?5u*U+6!y-O`xD3$9;BO|ALURR+b@N`3UwQ!Lo zEsZmP+E{`t-L)L-6=Ro^XO1-BR`m8Q~Zc~U>hP#mAD=uNowU+8lEViVi)R1oT&T0O=(Of^8AjK< zc^Vde758YaS-RSc9vUv$9KFT%64@+ST6p@OA&-+yaFw4Ze5XJLmj_^A6?61n=mRj1 zE9B9xVv$f+6YNq#vNj;eSAL*)g6j<5lG9VB$_P__$V8JHGTly?K9irJ+?kl^$qDXc u@Ri)`h^XfYRk05nP*DO^y-G6f6S^-rjy#}91`iW4kCHCr$$w0K3HS%AYf+B? literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.class b/bin/main/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.class new file mode 100644 index 0000000000000000000000000000000000000000..d1560fd028aa28fb329cdbd06003300d8a461b22 GIT binary patch literal 565 zcma)3+e*Vg5S^{s+Ip*(7r|#~QQQwm5fqUYDnbLkZ<8_IHrWlk6Q#fAgCF2WiIXTA zk%H{QaAwZVnK|?J{_+X{1K4jtL%?}tGg-LYFTK>1`Kh94CcVpKtgIZFNXKYss6E{% z+k$lg-MM;FGF2v#_tQB>B;YVXs#C{I7jV$)k1K9LI+bNE5YP^FViXk)1%!VHgI^!a z0^_0bvpbc46)M$`oHj}DNv+KhT=HYtB99eeeI5ZPy;Yrq{z$;}%JM&j%O;)B7B0eD zo$_u+b$zz(qI5#Q@uV=MGknlqPgA@y#*!j!jTdk_wl0w>SJ4cm=0j*N)ek|k4LLgA z@T?;GytLubsSKa3TS!mn(9$wTIl(QZN0U96MU9d!F<3LK@q7?5nS*+-HzL|yGcl9mHwI!et;h(&aUDr zQjk0hXXa!s=e)hYyaK=odM#)OI7w_S3-7`zNKJW|DoW-u_*~AEmG|hZr?C!nrECi} z1#}ncNy$u^RNhS&n2>;8ic}LPOcu}|3?~({Af3rF7YS&`IyH(4j{@R9gwd}LW{I=0 z3iDg#z6#aMn7lS=^hy1(MRd-Ow=3LC5!TxXI2x?$8x3y+T&^wub8Ok96WhWkc&#(O ztY1%O(auU01RUNMhIEb(I_PPJ7sgmpq^$`8jwjZqQaP2(QEE0o2dQd;WCRU<9_ovXK`HBOJ*V*ph6^NV4%tGBzY)v^$d4TFuJ4 zBUvVpgqA`=9?+yt92y9vG$!N)#>fu{F-;*2Y3e-MkTj(sX+sJnkJ2V>(-!ByGqbz1 zl8h<+kiDyW&pr3tbI(2hIpRiCXFLM9dO2bewSq8ILE@K7Ag=Rr?zB z&anPkPvy~c!X6w*nRC<5J%qbk%Fy^H8CDN{z^U~I6DqX1K znzQS;W9lqw81C=SwA%xzg8g1Gvn;YkvisdQZ5oBmNn06b!)T(#OeTArL{d;6l+(%hLRg?Q^ta zI$F3>MGv73n>B3Wj;E~bO*XIv?etqNEx0&n6fcO;{qhd!la!IKQReIrToRn(+j07g z+Fl)90gZj{X-P5Q)zo+zZ>Kqf^bnnVhk>Ya)ha*QGVTTgmtyHL(5qO^$+P6+hGMwR zz%IowKhF>d1{$sx%*$`Foj%KG9KvqA)4;pXM|dY}r`Jr5(b);_c4bl1KtE#akB-r7 zRWsP2y|y<53xgU47yw-PDzr1$6Pv9(m~QqA3?V@&c4{A^KTrD%d_3=A#`^vIsq5^l zi^prWY-t=BY0P9o7(q&dEx0H@cOaD>F`Y8iGahSkNj)y*kf10L*YQ~@kg&7bMXkL$J|`%35>C?6@dbB7 z+0kx~_$8HCX(%0!aw%sbJG?O!->>1Zf;!Rjuj&x%g;t3y~hyAqI}& zI2BiX4Qt|7j3vjE2%d#Xzz#l1#}ic3+x?dr5yoRXtU+(Fi86Lu_Rn({?gC zzC$@Z+gmquw}lD5Q#$^Zgx0o>Hbp2>gzx8caTWhN0TfRE-asYJ3E>~`qJ|$8*8DS@ zeoEbE;K%q0jT0burC9V1v7+*Ws*3~_BBmce5QK_D$3HQG>{9l5$-vL>&$O?T@=j|i zS&^jz$^Kqi7wq3=c(*{)(>NI3#y4;Y%w7Z+YNpgOntht_L z{gA^*NI)dId1p#e!4?&jHOCqmrG;5d74Qa^C09Su>2l2paH)e4lq)}{=X+V8EaRkm z(yaBu(+`!4bF|HMd^%gOOB^tia5S1T9(^a!_l!qhO~hsx;y8 zRJjF3uGr@~e!+ijU?VC?tSjgTw(k$P?i2M2;lP?c9-Et*x#(5@PZ@$M0us2#H@P-V z=ejUwxVs~OWs!k7m>ZJwWU(f^Mb!slXW=a-dj-swg;DPkY{&&F&CX+*&5tQt>2e_t zk7*+9-az}93S-}SeHu}brN>B+peX{By5jSWeizK^|Ld* zBq6-p7|w*pqY{HI5mMq#2Lo@9iy2*32ZCySB+STgDvT2KRf<#08PZ_Lm9mzr-DJ_( zQ}(!(ro+z|P1}{78VzYusGRGe(p%lb##d}Z zT9kpqG;pBg_AJ~+lX13d+s*W6wv}1iNwyuQ&ra!b4asbGvDxW06~{KO8Qr7HwO+Hu z)+Ne7G>}%C801#0bk~S3Jv`eWZ99dLyfa|f%W2p$Wm8Rk=`<`ie1jqHREC=887iPU z1FEuA0VNbojiqDOri8kC^O8~cG_*>^X2A;Y5e9D+8Fs`nKB8pf=lFf zE1ltz>XykEv|)f#a<^sj7TmsD6B)i_r1q&)IhIaST99?_##G8-$T3GdEoUed&xB+^ zhBO%zEX`+-ggu@b<`b723A~(}d#?DFBm@V8R|cQk6S&2+<4G&Cv?G-o9-Ara1>#D< zL{%otkR-1U@Mr6S0Ld4j9&e&7aGU0oiKPoebCI;@!plvO^ytFKUnH$WSG&z;Gxtfw z%4ov6W7)J#&$JCqc*9xz#;o*NZ_l`prA0A6rTn)@JUO|(g-@I9 z(iq65(Fne2G*&EAXk}bsKB`DvKuNXyt$t>Ov_fhhK% zhgaBMcZ(}L<^3&k8+bQv=H{x?vt2Pt)0MM1C81ttno*_ogewGH?qhd`5Sk{P;lceB!Umi zI{L@exLY>!_PrG!l@8vuujO^R2cM7|aF1B{l%#R5+>HC=c3z3^#{F^+9*_s|pd8{O z)T8)}>%RwC577&K|JCJTDdL(8JMxf}&}$h7FJ;Y?V{{37Nx|!9A4ATuP~+_H$*PgxRvN zQ7XAwg`7j1Hgg3}r}@;$)1)e=$%33F3;0J9PuhZaX-2zJ4Wi*r)?d6V z;543u?o%`zAWg%4?*GF;b=7G`fr^=jDdceOzY_V%ywlh^MLd<|^P&&+pZZWgvEqnS zPs+IkP`~#qP_LAlx=Ohy55uxbSxU;qd5VI2r7RB;9wvbiF&iLC!(SxfQWDOJ_)1w7 zoR@=qrCc@x=B55jn3v1Xgn3!xV&2pEm|XF8A)X7o1;|S^AusPJfP9~Ve1mimV1 zgpfZ>$UjENA0_0E5%MRPM4sU3f0;qxDNNuixQlW8(|8(>;H&hyXW050;r?}eAJ5^3 z_y*zrO}xhF`D>ga^u8?ypCcCHd$I)2%PPJ^)Z+)zfEQR5|A=sZQM&MBYVs3_^7eln zULxFoCNaDsNxUjI;pcK2ejy(rEDz#W@&I0w&-1GOCB7jY$8Q3VKaqp{VOi%x{*fHy z@5({`_8jDI@ge^-<$I7{$Y4|JLVgK8P&+n zv@(_TN(BaGwn}VF&vTi6=kdk25=ZI7PtsGLlWKfd77^3u60_$Mql<~n3s_KGNS|It z@4r|U^EseamP;MKSM$4>MaD+CjC!n=4ykAKS;OmU1Mi_%%DbeI_pfzK!t3R|0@nCBsaR3ve_sWlXX--KQVsd99zr!XAfOz*!>=Hzf*6DvX`^@H%Li~Bjc$49hbTe Af&c&j literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/itmsbatch/srm/service/IncidentHistService.class b/bin/main/com/urpsys/itmsbatch/srm/service/IncidentHistService.class new file mode 100644 index 0000000000000000000000000000000000000000..4d72d79a1657c18365ca24b3f4836dd38d778426 GIT binary patch literal 1283 zcmb7DT~8B16g|@xYCjYNMNs_yYSAz+#28C3C^3*!jh6I%x*ghqcBYw`h4er9poxjW z2Y-M+%6NCXmL*by+3e2VJ7>DmOh5stG;Y1r&>L^skQOKE2AC5^SZGe?gm!r&Yl&0d1UMXZ%LsY-xGm1cF4te z0pAS0IZ{@(iFSHjY2`N&?FT-5j1ftgz zRz-1=%=xY&AK_Fo8S@?K)1|CaIccj(wI0_o^s2|B96<{W)zQL-mb5hf0<51} zpbunwTe$99F-Rt2M;bn=RBZ%Jc~sk=rvQd)WlUkZgeBa_<2u9B|1qnKIn0yzaL^WB zrccGNT$!Y=R^4HEHF5f!@~b5PkaCg z35^f@0DctWCJk*T7HNtS=UyKlAK!ER`_Io`0Gg=fkzsi5>LCw}AB+O7>@esE>-KqI zhCGnwSh?i=VU_j*hL?^uJs$W*dA$Q8hVn$4Bi@n13;2O>tu`YrCJXp> zX!VIQvP-n{P30-O#gMJm+6=k3x+{yw;&K@U6d4vA<;joXup`aBpnVyZ9qo!iTNo9^ zNit{qiiB*YpDDFgBx0#2?X-pt)seQT)||M2p;ZGO zS~X2uqqfWNCUyFP(rdes;Cp4P;WopZ^61pmGpU<0RLY#oI isAvJ5dYxoEAoN&plzB**3?9W|9>-NEQv8JCD)1LCVoxyu literal 0 HcmV?d00001 diff --git a/bin/main/com/urpsys/kicinsa/dao/KicGroupwareDao.class b/bin/main/com/urpsys/kicinsa/dao/KicGroupwareDao.class new file mode 100644 index 0000000000000000000000000000000000000000..814bbc371a071d11e492062653ac2986072a7704 GIT binary patch literal 417 zcmZWlTS@~#5bTMMn5aR-A1@$^U>{(EAczl)2wCvIvuQV-Y-Wa;SwpVohX?RbVrLb6 zF$_IbQ%x21_Wtq;0Db7Sp=IExaC5AKkIRTNDa1y?F*&@G;ySq6FDUROxi+jD*qhQb zVMVsYhtZUaWT01aQt7R(4J0bDe|$1%WOb4XS6pVGlS^qS)qxG<{{;PC3wFli8;X;A z@?Rf~VV;86GW(SNh>)G@G0@Fj9SXjZN-Yllgg;vaGH^JoZIU@ZN|aH>7uLE&Nt}&Z z!@z|S$x|_5l#$XA>05xB#&b}k(?%HmD$P@%IWJt8VN4v@rKM*avUgFE3(IWNfPpnF e8^CCN8?dRkt*8ZCdOOXl3)?!oig$GG0(<~5F?^c< literal 0 HcmV?d00001 diff --git a/bin/main/log4jdbc.log4j2.properties b/bin/main/log4jdbc.log4j2.properties new file mode 100644 index 00000000..85d1ede9 --- /dev/null +++ b/bin/main/log4jdbc.log4j2.properties @@ -0,0 +1,2 @@ +log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator +log4jdbc.dump.sql.maxlinelength=0 \ No newline at end of file diff --git a/bin/main/logback-spring.xml b/bin/main/logback-spring.xml new file mode 100644 index 00000000..825e85e5 --- /dev/null +++ b/bin/main/logback-spring.xml @@ -0,0 +1,102 @@ + + + ${HOSTNAME} + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/kicinsadb/config/MybatisConfig.xml b/bin/main/mapper/kicinsadb/config/MybatisConfig.xml new file mode 100644 index 00000000..1d2a105d --- /dev/null +++ b/bin/main/mapper/kicinsadb/config/MybatisConfig.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml b/bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml new file mode 100644 index 00000000..28aa8899 --- /dev/null +++ b/bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 b/bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 new file mode 100644 index 00000000..71736f70 --- /dev/null +++ b/bin/main/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/primarydb/config/MybatisConfig.xml b/bin/main/mapper/primarydb/config/MybatisConfig.xml new file mode 100644 index 00000000..78cf9a7c --- /dev/null +++ b/bin/main/mapper/primarydb/config/MybatisConfig.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/primarydb/sqlmap/QuartzMapper.xml b/bin/main/mapper/primarydb/sqlmap/QuartzMapper.xml new file mode 100644 index 00000000..34d91a35 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/QuartzMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml b/bin/main/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml new file mode 100644 index 00000000..6172cec2 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + /* BbsInfoHistDao.updateBbsInfoHist */ + UPDATE TB_BBS_INFO_HIST + SET SRCH_PROC_YN = #{srchProcYn} + , SRCH_PROC_SND_TM = NOW() + , SRCH_PROC_SND_MSG = #{srchProcSndMsg} + WHERE NTT_ID = #{nttId} + AND EVENT_TIME = #{eventTime} + AND EVENT_TYPE = #{eventType} + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml b/bin/main/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml new file mode 100644 index 00000000..7fb44af1 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml b/bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml new file mode 100644 index 00000000..f5babd49 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml @@ -0,0 +1,182 @@ + + + + + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_KIC_ORG_MAP + ( ORG_ID + , KIC_ORGID + , KIC_ORGID_NM + , REG_DTM + ) + VALUES + ( #{orgId} + , #{kicOrgId} + , #{kicOrgIdNm} + , SYSDATE() + ) + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_ORG_INFO + ( ORG_ID + , ORG_NM + , ORG_DESC + ) + VALUES + ( #{orgId} + , #{kicOrgIdNm} + , #{kicOrgIdNm}) + + + + + + + + /* KicItsmDao.insertItsmUser */ + INSERT INTO TB_TASK_USER_INFO + ( ESNTL_ID + , TASK_USER_ID + , USER_NM + , PWD + , EMPNO + , SEX_CD + , REGN_NO + , HOUSE_MIDDLE_TELNO + , HOUSE_END_TELNO + , OFFM_TELNO + , MOVE_TELNO + , EML_ADDR + , JBPS_NM + , ORG_ID + , USER_STACD + , JOIN_DTM + , LAST_PWD_CHG_DTM + , HOUSE_ADRES + , PWD_HINT + , PWD_RANS + , ZIP_NO + , OTSD_CONN_YN + ) + VALUES ( + #{uniqId} + , #{userCode} + , #{userName} + , '$2a$10$ysPl0nYOLZXSVemDz1HQFukyaiSs05J9iwdBtwWxK7hrXrdG0MN2W' + , #{userCode} + , '' + , '0000' + , '0000' + , '0000' + , '' + , #{mobile} + , #{mailAddress} + , #{jobPositionName} + , #{orgId} + , CASE WHEN ISNULL(#{retireDate}) || #{retireDate} = '' THEN 'P' + ELSE 'D' + END + , sysdate() + , sysdate() + , '주소없음' + , 'P01' + , '한국투자공사' + , '' + , 'Y' + ) + + + + + + /* KicItsmDao.insertItsmUserMenu */ + INSERT INTO TB_USER_CRYP_CNF + ( CRYP_CNF_TRG_ID + , MEM_TYCD + , AUTH_CD + ) + VALUES ( + #{uniqId} + , 'USR03' + , 'ROLE_EMPTY' + ) + + + + /* KicItsmDao.insertItsmUser */ + UPDATE TB_TASK_USER_INFO + SET USER_NM = #{userName} + , MOVE_TELNO = #{mobile} + , EML_ADDR = #{mailAddress} + , JBPS_NM = #{jobPositionName} + , ORG_ID = #{orgId} + , USER_STACD = CASE WHEN ISNULL(#{retireDate}) || #{retireDate} = '' THEN 'P' + ELSE 'D' + END + , LAST_PWD_CHG_DTM = sysdate() + , OTSD_CONN_YN = 'Y' + WHERE ESNTL_ID = #{uniqId} + + + + + + + + + + + + + diff --git a/bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 b/bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 new file mode 100644 index 00000000..7f1246ca --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 @@ -0,0 +1,167 @@ + + + + + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_KIC_ORG_MAP + ( ORG_ID + , KIC_ORGID + , KIC_ORGID_NM + , REG_DTM + ) + VALUES + ( #{orgId} + , #{kicOrgId} + , #{kicOrgIdNm} + , SYSDATE() + ) + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_ORG_INFO + ( ORG_ID + , ORG_NM + , ORG_DESC + ) + VALUES + ( #{orgId} + , #{kicOrgIdNm} + , #{kicOrgIdNm}) + + + + + + + + /* KicItsmDao.insertItsmUser */ + INSERT INTO TB_TASK_USER_INFO + ( ESNTL_ID + , TASK_USER_ID + , USER_NM + , PWD + , EMPNO + , SEX_CD + , REGN_NO + , HOUSE_MIDDLE_TELNO + , HOUSE_END_TELNO + , OFFM_TELNO + , MOVE_TELNO + , EML_ADDR + , JBPS_NM + , ORG_ID + , USER_STACD + , JOIN_DTM + , LAST_PWD_CHG_DTM + , HOUSE_ADRES + , PWD_HINT + , PWD_RANS + , ZIP_NO + ) + VALUES ( + #{uniqId} + , #{empId} + , #{empNm} + , '$2a$10$ysPl0nYOLZXSVemDz1HQFukyaiSs05J9iwdBtwWxK7hrXrdG0MN2W' + , #{empId} + , #{sex} + , '0000' + , '0000' + , '0000' + , #{tel} + , #{htel} + , #{emailComp} + , #{posgrdCdNm} + , #{orgId} + , CASE WHEN #{serviceCd} = 'Y' THEN 'P' + WHEN #{serviceCd} = 'H' THEN 'A' + WHEN #{serviceCd} = 'N' THEN 'D' + END + , sysdate() + , sysdate() + , '주소없음' + , 'P01' + , '한국투자공사' + , '' + ) + + + + /* KicItsmDao.insertItsmUser */ + UPDATE TB_TASK_USER_INFO + SET USER_NM = #{empNm} + , SEX_CD = #{sex} + , OFFM_TELNO = #{tel} + , MOVE_TELNO = #{htel} + , EML_ADDR = #{emailComp} + , JBPS_NM = #{posgrdCdNm} + , ORG_ID = #{orgId} + , USER_STACD = CASE WHEN #{serviceCd} = 'Y' THEN 'P' + WHEN #{serviceCd} = 'H' THEN 'A' + WHEN #{serviceCd} = 'N' THEN 'D' + END + , LAST_PWD_CHG_DTM = sysdate() + WHERE ESNTL_ID = #{uniqId} + + + + + + + + + + + + + diff --git a/bin/main/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml b/bin/main/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml new file mode 100644 index 00000000..c126b76b --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + /* CmmUseDao.insertNtcnProcSndInfo */ + UPDATE TB_NTCN_PROC_SND_INFO + SET PROC_DT = SYSDATE() + , PROC_RSLT_CD = #{procRsltCd} + , PROC_RSLT_CN = #{procRsltCn} + WHERE NTCN_ESNTL_ID = #{nctnEsntlId} + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/primarydb/sqlmap/ind/NcrdMapper.xml b/bin/main/mapper/primarydb/sqlmap/ind/NcrdMapper.xml new file mode 100644 index 00000000..9f12afc6 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/ind/NcrdMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/main/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml b/bin/main/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml new file mode 100644 index 00000000..26b8c506 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE CM_INCIDENT_HIST + SET SRCH_PROC_YN = #{srchProcYn} + , SRCH_PROC_SND_TM = NOW() + , SRCH_PROC_SND_MSG = #{srchProcSndMsg} + WHERE IN_INCIDENT_SEQ = #{inIncidentSeq} + AND EVENT_TIME = #{eventTime} + AND EVENT_TYPE = #{eventType} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/main/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml b/bin/main/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml new file mode 100644 index 00000000..2040e556 --- /dev/null +++ b/bin/main/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* ReportHistDao.updateReportHist */ + UPDATE CM_REPORT_HIST + SET SRCH_PROC_YN = #{srchProcYn} + , SRCH_PROC_SND_TM = NOW() + , SRCH_PROC_SND_MSG = #{srchProcSndMsg} + WHERE IN_REPORT_SEQ = #{inReportSeq} + AND EVENT_TIME = #{eventTime} + AND EVENT_TYPE = #{eventType} + + + + + + + + + \ No newline at end of file diff --git a/bin/main/messages/message-common.properties b/bin/main/messages/message-common.properties new file mode 100644 index 00000000..fc3577a6 --- /dev/null +++ b/bin/main/messages/message-common.properties @@ -0,0 +1,467 @@ +fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +fail.common.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1} +info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +#UI Common resource# +table.num=\ubc88\ud638 +table.regdate=\ub4f1\ub85d\uc77c +table.reger=\ub4f1\ub85d\uc790 +table.select=\uc120\ud0dd +title.html=egovframe common component +title.detail=\uc0c1\uc138\uc870\ud68c +title.inquire=\uc870\ud68c +title.update=\uc218\uc815 +title.create=\ub4f1\ub85d +title.delete=\uc0ad\uc81c +title.save=\uc800\uc7a5 +title.list=\ubaa9\ub85d +title.searchCondition=\uac80\uc0c9\uc870\uac74 +title.search=\uac80\uc0c9\uc5b4 +title.reply=\ub2f5\uae00 +title.scrap=\uc2a4\ud06c\ub7a9 +title.comment=\ub313\uae00 +title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd +title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c +title.link=\ub9c1\ud06c +title.management=\uad00\ub9ac +title.all=\uc804\uccb4 + +input.select=\uc120\ud0dd\ud558\uc138\uc694 +input.cSelect=\uc120\ud0dd +input.input=\uc785\ub825 +input.button=\ubc84\ud2bc +input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 +input.yes=\uc608 +input.no=\uc544\ub2c8\uc624 + +select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd + +button.select=\uc120\ud0dd +button.search=\uac80\uc0c9 +button.use=\uc0ac\uc6a9 +button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 +button.inquire=\uc870\ud68c +button.update=\uc218\uc815 +button.create=\ub4f1\ub85d +button.delete=\uc0ad\uc81c +button.deleteDatabase=\uc644\uc804\uc0ad\uc81c +button.close=\ub2eb\uae30 +button.save=\uc800\uc7a5 +button.list=\ubaa9\ub85d +button.reset=\ucde8\uc18c +button.passwordUpdate=\uc554\ud638\ubcc0\uacbd +button.subscribe=\uac00\uc785\uc2e0\uccad +button.realname=\uc2e4\uba85\ud655\uc778 +button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.agree=\ub3d9\uc758 +button.disagree=\ube44\ub3d9\uc758 +button.possible=\uac00\ub2a5 +button.impossible=\ubd88\uac00\ub2a5 +button.qnaregist=Q&A\ub4f1\ub85d +button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d +button.preview=\ubbf8\ub9ac\ubcf4\uae30 +button.next=\ub2e4\uc74c +button.add=\ubc14\ub85c\ucd94\uac00 +button.confirm=\ud655\uc778 +button.back = \ub4a4\ub85c +button.yes = \uc608 +button.no = \uc544\ub2c8\uc624 +button.home = \ud648 +button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 +button.cop = \ud611\uc5c5 +button.wrkstart = \ucd9c\uadfc +button.wrkend = \ud1f4\uadfc +button.reply = \ub2f5\uae00 +button.scrap = \uc2a4\ud06c\ub7a9 +button.comment = \ub313\uae00 +button.excel = \uc5d1\uc140 +button.init=\ucd08\uae30\ud654 +button.acknowledgment=\uc2b9\uc778 +button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c +button.bulkUpload=\uc77c\uad04\ub4f1\ub85d +button.log = \ub85c\uadf8 +button.set = \uc124\uc815 +button.move = \uc774\ub3d9 +button.answer = \ub2f5\ubcc0 + +#UI Common Message# +common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. +common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4. +common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4. +common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. + +common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694 +common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4. +common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4. +common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. + +fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4! +fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558) +fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#UI User Message# +fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328) +info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +#Vlidator Errors# +errors.prefix=
+errors.suffix=

+ +errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4. +errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.integer={0}\uc740(\ub294) integer \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.long={0}\uc740(\ub294) long \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.float={0}\uc740(\ub294) float \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.double={0}\uc740(\ub294) double \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. + +errors.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4. +errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4. + +errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4. +errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4. +errors.english={0}\uc740(\ub294) \uc601\ubb38\ub9cc \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc788\uc2b5\ub2c8\ub2e4. +errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckcomb3={0}\uc740(\ub294) \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckcomb4={0}\uc740(\ub294) \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckseries={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckrepeat={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +error.security.runtime.error = error + +info.password.rule.password1 = - 8\uc774\uc0c1 20\uc790\ub9ac \uc774\ud558 +info.password.rule.pwdcheckcomb3 = - \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckcomb4 = - \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckseries = - 3\uc790\ub9ac \uc774\uc0c1 \ubc18\ubcf5 \ub610\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790 \uc0ac\uc6a9 \uae08\uc9c0. \uc608)kkk , 321 \ub4f1 \uc0ac\uc6a9\uae08\uc9c0 + +#Xss Errors# +errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +#File Upload / Download +errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. +success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#common# +comCmmErr.button=\uc774\uc804 \ud398\uc774\uc9c0 + +#accessDenied# +comCmmErr.accessDenied.title=\ud604\uc7ac \ud398\uc774\uc9c0\uc5d0 \ub300\ud55c \uc811\uadfc\uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4! +comCmmErr.accessDenied.code=\uc0ac\uc6a9\uc790\uc811\uadfc\uad8c\ud55c \uc5d0\ub7ec + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=\ub370\uc774\ud130 \ucc98\ub9ac \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4! +comCmmErr.dataAccessFailure.code=\ub370\uc774\ud130\ucc98\ub9ac \uc5d0\ub7ec + +#bizException# +comCmmErr.bizException.title=\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ucc98\ub9ac \uc911 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.bizException.code=\ube44\uc988\ub2c8\uc2a4\ub85c\uc9c1\ucc98\ub9ac \uc5d0\ub7ec + +#runtimeException# +comCmmErr.runtimeException.title=\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.runtimeException.code=\uc2dc\uc2a4\ud15c \uc5d0\ub7ec + +#sessionException# +comCmmErr.sessionException.title=\uc138\uc158\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4! +comCmmErr.sessionException.code=\uc138\uc158\ub9cc\ub8cc \uc5d0\ub7ec + + +#top# +comCmm.top.title=\uc804\uc790\uc815\ubd80 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c \uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 VERSION 4.0 +comCmm.top.leftSessionTime=\uc138\uc158\ub9cc\ub8cc \ub0a8\uc740\uc2dc\uac04 +comCmm.top.incSessionTime=\uc2dc\uac04\uc5f0\uc7a5 +comCmm.top.expiredSessionTime=\uc2dc\uac04\ub9cc\ub8cc +comCmm.top.expireSessionTimeInfo=\ub85c\uadf8\uc778 \uc138\uc158\uc2dc\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.top.cantIncSessionTime=\uc2dc\uac04\uc744 \uc5f0\uc7a5\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +#left# +comCmm.mai.title=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 +comCmm.uat.title=\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d +comCmm.sec.title=\ubcf4\uc548 +comCmm.sts.title=\ud1b5\uacc4/\ub9ac\ud3ec\ud305 +comCmm.cop.title=\ud611\uc5c5 +comCmm.uss.title=\uc0ac\uc6a9\uc790\uc9c0\uc6d0 +comCmm.sym.title=\uc2dc\uc2a4\ud15c\uad00\ub9ac +comCmm.ssi.title=\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4 +comCmm.dam.title=\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac +comCmm.com.title=\uc694\uc18c\uae30\uc220 +comCmm.ext.title=\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8 + +#component# +#\ud3ec\ud0c8 \uba54\uc778\ud654\uba74# +comCmm.left.1=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 + +#\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d# +comCmm.left.10=\ub85c\uadf8\uc778 +comCmm.left.30=\ub85c\uadf8\uc778\uc815\ucc45\uad00\ub9ac + +#\ubcf4\uc548# +comCmm.left.60=\uad8c\ud55c\uad00\ub9ac +comCmm.left.70=\uad8c\ud55c\uadf8\ub8f9\uad00\ub9ac +comCmm.left.80=\uadf8\ub8f9\uad00\ub9ac +comCmm.left.90=\ub864\uad00\ub9ac +comCmm.left.100=\ubd80\uc11c\uad8c\ud55c\uad00\ub9ac + +#\ud1b5\uacc4/\ub9ac\ud3ec\ud305# +comCmm.left.120=\uac8c\uc2dc\ubb3c\ud1b5\uacc4 +comCmm.left.130=\uc0ac\uc6a9\uc790\ud1b5\uacc4 +comCmm.left.140=\uc811\uc18d\ud1b5\uacc4 +comCmm.left.150=\ud654\uba74\ud1b5\uacc4 +comCmm.left.160=\ubcf4\uace0\uc11c\ud1b5\uacc4 +comCmm.left.161=\uc790\ub8cc\uc774\uc6a9\ud604\ud669\ud1b5\uacc4 + +\ud611\uc5c5 +comCmm.left.170=\ube14\ub85c\uadf8\uad00\ub9ac +comCmm.left.180=\uac8c\uc2dc\ud310\uad00\ub9ac +comCmm.left.190=\uac8c\uc2dc\ud310\uc0ac\uc6a9\uc815\ubcf4 +comCmm.left.200=\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.250=\uc2a4\ud06c\ub7a9 \ubaa9\ub85d +comCmm.left.270=\ucee4\ubba4\ub2c8\ud2f0\uad00\ub9ac +comCmm.left.310=\ubb38\uc790\uba54\uc2dc\uc9c0 +comCmm.left.320=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac +comCmm.left.330=\uc77c\uc815\uad00\ub9ac +comCmm.left.340=\uc77c\uc9c0\uad00\ub9ac +comCmm.left.350=\uc804\uccb4\uc77c\uc815\uad00\ub9ac +comCmm.left.360=\uba54\uc77c\ubc1c\uc1a1 +comCmm.left.361=\ubc1c\uc1a1\uba54\uc77c\ub0b4\uc5ed +comCmm.left.370=\uba85\ud568\uad00\ub9ac +comCmm.left.371=\ub0b4\uba85\ud568\ubaa9\ub85d +comCmm.left.380=\uc8fc\uc18c\ub85d\uad00\ub9ac +comCmm.left.390=\uac04\ubd80\uc77c\uc815\uad00\ub9ac +comCmm.left.400=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +comCmm.left.401=\ubd80\uc11c\uc5c5\ubb34\uc815\ubcf4 +comCmm.left.410=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0\uad00\ub9ac +comCmm.left.420=\uba54\ubaa8\ud560\uc77c\uad00\ub9ac +comCmm.left.430=\uba54\ubaa8\ubcf4\uace0 + +#\uc0ac\uc6a9\uc790\uc9c0\uc6d0# +comCmm.left.450=\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac +comCmm.left.460=\uc5c5\ubb34\uc0ac\uc6a9\uc790\uad00\ub9ac +comCmm.left.461=\ubd80\uc11c\uad00\ub9ac +comCmm.left.470=\uc77c\ubc18\ud68c\uc6d0\uad00\ub9ac +comCmm.left.480=\ub9c8\uc774\ud398\uc774\uc9c0\uad00\ub9ac +comCmm.left.490=\uc57d\uad00\uad00\ub9ac +comCmm.left.500=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 +comCmm.left.510=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ud655\uc778 +comCmm.left.520=\ub3c4\uc6c0\ub9d0 +comCmm.left.530=\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.540=FAQ\uad00\ub9ac +comCmm.left.550=Q&A\uad00\ub9ac +comCmm.left.551=Q&A\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.560=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.561=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804\uad00\ub9ac +comCmm.left.570=\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.571=\uc0ac\uc6a9\uc790\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.580=\uc0c1\ub2f4\uad00\ub9ac +comCmm.left.581=\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.590=\uc124\ubb38\uad00\ub9ac +comCmm.left.600=\uc124\ubb38\uc870\uc0ac +comCmm.left.610=\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.620=\uc751\ub2f5\uc790\uad00\ub9ac +comCmm.left.630=\uc9c8\ubb38\uad00\ub9ac +comCmm.left.640=\ud56d\ubaa9\uad00\ub9ac +comCmm.left.650=\ud68c\uc758\uad00\ub9ac +comCmm.left.660=\uc628\ub77c\uc778poll\uad00\ub9ac +comCmm.left.661=\uc628\ub77c\uc778poll\ucc38\uc5ec +comCmm.left.670=\ub274\uc2a4\uad00\ub9ac +comCmm.left.680=\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.700=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.710=\ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 +comCmm.left.711=\uc678\ubd80\uc778\uc0ac\uc815\ubcf4 +comCmm.left.720=\ud31d\uc5c5\ucc3d\uad00\ub9ac +comCmm.left.730=\uc815\ubcf4\uc54c\ub9bc\uc774 +comCmm.left.740=\ubc30\ub108\uad00\ub9ac +comCmm.left.741=MYPAGE\ubc30\ub108\uad00\ub9ac +comCmm.left.750=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.760=\ucd5c\uadfc\uac80\uc0c9\uc5b4 \uc870\ud68c +comCmm.left.770=\uba54\uc778\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.771=\uba54\uc778\uc774\ubbf8\uc9c0 \ubc18\uc601\uacb0\uacfc\ubcf4\uae30 +comCmm.left.780=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac +comCmm.left.790=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac +comCmm.left.800=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4\ubc0f\uad00\ub9ac +comCmm.left.810=Wiki\uae30\ub2a5 +comCmm.left.820=RSS\ud0dc\uadf8\uad00\ub9ac +comCmm.left.822=RSS\ud0dc\uadf8\uc11c\ube44\uc2a4 +comCmm.left.830=Twitter\uc5f0\ub3d9 +comCmm.left.831=Facebook \uc5f0\ub3d9 +comCmm.left.840=\ucabd\uc9c0\uad00\ub9ac +comCmm.left.850=\ubc1b\uc740\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.860=\ubcf4\ub0b8\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.870=\ud68c\uc758\uc2e4\uad00\ub9ac +comCmm.left.871=\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +comCmm.left.890=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uad00\ub9ac +comCmm.left.891=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uc2b9\uc778\uad00\ub9ac +comCmm.left.900=\ud734\uac00\uad00\ub9ac +comCmm.left.901=\ud734\uac00\uc2b9\uc778\uad00\ub9ac +comCmm.left.902=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +comCmm.left.910=\ub2f9\uc9c1\uad00\ub9ac +comCmm.left.911=\ub2f9\uc9c1\uccb4\ud06c\uad00\ub9ac +comCmm.left.920=\ud3ec\uc0c1\uad00\ub9ac +comCmm.left.921=\ud3ec\uc0c1\uc2b9\uc778\uad00\ub9ac +comCmm.left.930=\uae30\ub150\uc77c\uad00\ub9ac +comCmm.left.931=\uae30\ub150\uc77c\ubaa9\ub85d(\ud655\uc778\uc6a9) +comCmm.left.940=\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac +comCmm.left.941=\ud589\uc0ac\uc811\uc218\uad00\ub9ac +comCmm.left.942=\ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac +comCmm.left.943=\uc57d\ub3c4 \uad00\ub9ac +comCmm.left.950=\ucd9c\ud1f4\uadfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c\uad00\ub9ac# +comCmm.left.960=\uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc +comCmm.left.970=\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc +comCmm.left.980=\uacf5\ud1b5\ucf54\ub4dc +comCmm.left.1000=\uc6b0\ud3b8\ubc88\ud638\uad00\ub9ac +comCmm.left.1010=\ud589\uc815\ucf54\ub4dc\uad00\ub9ac +comCmm.left.1020=\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 +comCmm.left.1030=\ub85c\uadf8\uad00\ub9ac +comCmm.left.1040=\uc0ac\uc6a9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1050=\uc1a1/\uc218\uc2e0\ub85c\uadf8\uad00\ub9ac +comCmm.left.1060=\uc2dc\uc2a4\ud15c\uc774\ub825\uad00\ub9ac +comCmm.left.1070=\uc6f9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1080=\uc811\uc18d\ub85c\uadf8\uad00\ub9ac +comCmm.left.1085=\uac1c\uc778\uc815\ubcf4\uc870\ud68c\ub85c\uadf8\uad00\ub9ac +comCmm.left.1090=\uba54\ub274\ub9ac\uc2a4\ud2b8\uad00\ub9ac +comCmm.left.1091=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comCmm.left.1100=\uba54\ub274\uc0dd\uc131\uad00\ub9ac +comCmm.left.1101=\uc0ac\uc774\ud2b8\ub9f5 +comCmm.left.1110=\ubc14\ub85c\uac00\uae30\uba54\ub274\uad00\ub9ac +comCmm.left.1111=\ud504\ub85c\uadf8\ub7a8\uad00\ub9ac +comCmm.left.1112=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\uad00\ub9ac +comCmm.left.1113=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comCmm.left.1114=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comCmm.left.1120=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac +comCmm.left.1130=\ubc30\uce58\uacb0\uacfc\uad00\ub9ac +comCmm.left.1140=\uc2a4\ucf00\uc904\ucc98\ub9ac +comCmm.left.1150=\ubc31\uc5c5\uad00\ub9ac +comCmm.left.1151=\ubc31\uc5c5\uacb0\uacfc\uad00\ub9ac +comCmm.left.1160=\ub124\ud2b8\uc6cc\ud06c\uad00\ub9ac +comCmm.left.1170=\uc11c\ubc84\uc815\ubcf4\uad00\ub9ac +comCmm.left.1171=\uc11c\ubc84(S/W)\ubaa9\ub85d +comCmm.left.1180=\uc7a5\uc560\uc2e0\uccad\uad00\ub9ac +comCmm.left.1190=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4# +comCmm.left.1210=\uc2dc\uc2a4\ud15c\uc5f0\uacc4\uad00\ub9ac +comCmm.left.1220=\uc5f0\uacc4\ud604\ud669\uad00\ub9ac +comCmm.left.1230=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uad00\ub9ac +comCmm.left.1240=\uc5f0\uacc4\uae30\uad00\uad00\ub9ac + +#\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac# +comCmm.left.1250=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac +comCmm.left.1260=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc720\ud615) +comCmm.left.1261=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc870\uc9c1) +comCmm.left.1270=\uc9c0\uc2dd\uc804\ubb38\uac00\uad00\ub9ac +comCmm.left.1280=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac +comCmm.left.1290=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac +comCmm.left.1291=\uc9c0\uc2dd\uc815\ubcf4\uc81c\uacf5 + +#\uc694\uc18c\uae30\uc220# +comCmm.left.1300=\uacf5\ud734\uc77c\uad00\ub9ac(\ub2ec\ub825) +comCmm.left.2080=\uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2090=DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2100=HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2110=\ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2120=\ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2130=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2140=\ud504\ub85d\uc2dc\uc11c\ube44\uc2a4 +comCmm.left.2150=\ud30c\uc77c\ub3d9\uae30\ud654(\ub300\uc0c1\uc11c\ubc84) +comCmm.left.2160=\ub85c\uadf8\uc778\uc138\uc158\uc815\ubcf4\uccb4\ud06c +comCmm.left.2170=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1-\ub300\uc0c1\ubaa9\ub85d +comCmm.left.2180=\uc8fc\uc18c\uc815\ubcf4\uc5f0\uacc4 +comCmm.left.2200=\uc554\ud638\ud654/\ubcf5\ud638\ud654 + +#\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8# +comCmm.left.3000=JFile \uac00\uc774\ub4dc +comCmm.left.3010=JFile \ud30c\uc77c \uc5c5\ub85c\ub4dc +comCmm.left.3020=JFile \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc +comCmm.left.3100=LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac +comCmm.left.3110=LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504 +comCmm.left.3200=\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800 + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=\uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 +comCmm.unitContent.2=\ub2d8 \ud658\uc601\ud569\ub2c8\ub2e4. +comCmm.unitContent.3=\ub85c\uadf8\uc544\uc6c3 +comCmm.unitContent.4=\uc2e4\ud589 \uc2dc \uc624\ub958 \uc0ac\ud56d\uc774 \uc788\uc73c\uc2dc\uba74 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c\uc13c\ud130\ub85c \uc5f0\ub77d\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. +comCmm.unitContent.5=\ud654\uba74 \uc124\uba85 +comCmm.unitContent.6=\uc67c\ucabd \uba54\ub274\ub294 \uba54\ub274\uc640 \uad00\ub828\ub41c \ucef4\ud3ec\ub10c\ud2b8(\uba54\ub274\uad00\ub9ac, \uc0ac\uc774\ud2b8\ub9f5 \ub4f1)\ub4e4\uc758 \uc601\ud5a5\uc744 \ubc1b\uc9c0 \uc54a\uc73c\uba70, +comCmm.unitContent.7=\uac01 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc27d\uac8c \ucc3e\uc544\ubcfc \uc218 \uc788\ub294 \ubc14\ub85c \uac00\uae30 \ub9c1\ud06c\ud398\uc774\uc9c0\uc785\ub2c8\ub2e4. +comCmm.unitContent.8=\ucef4\ud3ec\ub10c\ud2b8 \uc124\uce58 \ud6c4 \uc124\uce58\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 IncludedInfo annotation\uc744 \ud1b5\ud574 \ucc3e\uc544\ub0b8 \ud6c4 +comCmm.unitContent.9=\ud654\uba74\uc5d0 \ud45c\uc2dc\ud560 \uc815\ubcf4\ub97c \ucc98\ub9ac\ud558\ub294 Controller \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. +comCmm.unitContent.10=\uac1c\ubc1c \uc2dc \uba54\ub274 \uad6c\uc870\uac00 \uc7a1\ud788\uae30 \uc804\uc5d0 \ubc30\ud3ec \ud30c\uc77c\ub4e4\uc5d0 \ud3ec\ud568\ub41c \uacf5\ud1b5 \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc758 \ubaa9\ub85d\uc131 \ud654\uba74\uc5d0 URL\uc744 \uc81c\uacf5\ud558\uc5ec +comCmm.unitContent.11=\uac1c\ubc1c\uc790\uac00 \ud3b8\ub9ac\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.unitContent.12=\uc6b4\uc601 \uc2dc\uc5d0 \ubcf8 \ucee8\ud2b8\ub864\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba54\ub274\ub97c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0, +comCmm.unitContent.13=\uc131\ub2a5 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\uac70\ub098 \uc0ac\uc6a9\uc790\ubcc4 \uba54\ub274 \uad6c\uc131\uc5d0 \uc624\ub958\ub97c \ubc1c\uc0dd\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 +comCmm.unitContent.14=\uc2e4 \uc6b4\uc601 \uc2dc\uc5d0\ub294 \uc0ad\uc81c\ud574\uc11c \ubc30\ud3ec\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. + +comCmm.unitContent.20=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc \uc548\ub0b4 + +#EgovExpirePwd(\ube44\ubc00\ubc88\ud638\ubcc0\uacbd \uacf5\uc9c0)# +comCmm.expirePwdContent.1=\ub85c\uadf8\uc778 +comCmm.expirePwdContent.2=\ub85c\uadf8\uc778 \uad6c\ubd84 + +comCmm.expirePwdContent.10=\uc5c5\ubb34\uc0ac\uc6a9\uc790 +comCmm.expirePwdContent.11=\uae30\uc5c5\ud68c\uc6d0 +comCmm.expirePwdContent.12=\uc77c\ubc18\ud68c\uc6d0 + +comCmm.expirePwdContent.21=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc758 \ubcc0\uacbd\uc740 \ub2e4\uc74c \ud30c\uc77c\uc744 \ucc38\uc870\ud558\uc5ec \uc8fc\uc138\uc694. +comCmm.expirePwdContent.22=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc +comCmm.expirePwdContent.23=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.expirePwdContent.24=\uc548\uc804\ud55c \uac1c\uc778\uc815\ubcf4 \ubcf4\ud638\ub97c \uc704\ud574 \uc9c0\uae08 \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694! +comCmm.expirePwdContent.25=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.26=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 +comCmm.expirePwdContent.27=\ube44\ubc00\ubc88\ud638 \ubcc0\uacbd\ud6c4 \uacbd\uacfc\uc77c\uc218 +comCmm.expirePwdContent.28=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.29=\uc8fc\uae30\uc801\uc73c\ub85c \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694. +comCmm.expirePwdContent.30=\uc77c + +comCmm.expirePwdContent.50=\uc9c0\uae08 \uc989\uc2dc \ubcc0\uacbd\ud558\uae30 +comCmm.expirePwdContent.51=\ub2e4\uc74c\uc5d0 \ubcc0\uacbd\ud558\uae30 \ No newline at end of file diff --git a/bin/main/messages/message-common_en.properties b/bin/main/messages/message-common_en.properties new file mode 100644 index 00000000..4e7a26b1 --- /dev/null +++ b/bin/main/messages/message-common_en.properties @@ -0,0 +1,468 @@ +fail.common.msg=error ocurred! +fail.common.sql=sql error ocurred! error code: {0}, error msg: {1} +info.nodata.msg=no data found. + +#UI Common resource# +table.num=num. +table.regdate=reg.date +table.reger=registrant +table.select=select +title.html=egovframe common component +title.detail=Detail Inquiry +title.inquire=Inquire +title.update=Modify +title.create=Create +title.delete=Delete +title.save=Save +title.list=List +title.searchCondition=search condition +title.search=keyword +title.reply=reply +title.scrap=scrap +title.comment=comment +title.attachedFileSelect=attached file +title.attachedFileDelete=attached file delete +title.link=link +title.management=Management +title.all=All + +input.select=Select +input.cSelect=Select +input.input=input +input.button=button +input.selectAll.title=Checkbox select all +input.yes=Yes +input.no=No + +select.searchCondition=select condition select + +button.select=select +button.search=Search +button.use=use +button.notUsed=Not used +button.inquire=inquire +button.update=update +button.create=create +button.delete=delete +button.deleteDatabase=Wiping +button.close=close +button.save=save +button.list=list +button.reset=reset +button.passwordUpdate=password update +button.subscribe=subscribe +button.realname=realname confirm +button.moveToGpin=move to gpin confirm +button.moveToIhidnum=move to ihidnum confirm +button.agree=agree +button.disagree=disagree +button.possible=possible +button.impossible=impossible +button.qnaregist=Q&A create +button.cnsltregist=Counsel create +button.preview=preview +button.next=nexut +button.add=add it now +button.confirm=confirm +button.back =back +button.yes =yes +button.no =no +button.home =home +button.user =user support +button.cop =cooperation +button.wrkstart = work start +button.wrkend = work end +button.reply = reply +button.scrap = scrap +button.comment = comment +button.excel = excel +button.init=init +button.acknowledgment=acknowledgment +button.cancelAcknowledgment=cancel acknowledgment +button.bulkUpload=bulk upload +button.log = log +button.set = set +button.move = move +button.answer = answer + +#UI Common Message# +common.noScriptTitle.msg=I can't use all functions in browser JavaScript is not supported. +common.searchCondition.msg=This layout is a lower information searches made up of information. + +common.summary.list={0} A list of the details of the output. +common.summary.regist={0} Registered by typing the possible contents of registers by clicking the button. +common.summary.update={0} Registered by typing the possible content of modification by clicking the button. +common.summary.inqire={0} Full inquiry details about the details of the output. + +common.save.msg=confirm save? +common.regist.msg=confirm regist? +common.delete.msg=confirm delete? +common.update.msg=confirm update? +common.nodata.msg=There is no data. please choose another seach keyword +common.required.msg=is required field +common.acknowledgement.msg=confirm acknowledgement? +common.acknowledgementcancel.msg=confirm acknowledgement cancel? +common.nocomment.msg=There is no comment. +common.noguest.msg=There is no guest notice. + +success.request.msg=you're request successfully done +success.common.select=successfully selected +success.common.insert=successfully inserted +success.common.update=successfully updated +success.common.delete=successfully deleted + +common.imposbl.fileupload = cannot upload files +common.isConfmDe.msg=Please check the approval date box +common.isExist.msg = already exist + +fail.common.insert = fail to insert. +fail.common.update = fail to update +fail.common.delete = fail to delete +fail.common.delete.upperMenuExist = fail to delete[upperMenuId foreign key error] +fail.common.select = fail to select +fail.common.login = login information is not correct +fail.common.loginIncorrect = login in more than {0} account will be locked! +fail.common.login.password = password information is not correct(password digit should be 8 to 20) +fail.common.idsearch = can not find id +fail.common.pwsearch = can not find password +fail.request.msg = Failed to handle the request +fail.common.login.ip = Login is refused because it is not a registered IP. + +#UI User Message# +fail.user.passwordUpdate1=current password is not correct +fail.user.passwordUpdate2=password confirm is not correct +info.user.rlnmCnfirm=realname confirm ready +success.user.rlnmCnfirm=it is realname +fail.user.rlnmCnfirm=it is not realname +fail.user.connectFail=connection fail +info.user.rlnmPinCnfirm=Using the i-PIN ID, please check your real name +success.user.rlnmPinCnfirm=Consistent with the registration data of the i-PIN +fail.user.rlnmPinCnfirm=i-PIN does not match the registered data + +#Vlidator Errors# +errors.prefix=
+errors.suffix=

+ +errors.required={0} is required. +errors.minlength={0} can not be less than {1} characters. +errors.maxlength={0} can not be greater than {1} characters. +errors.invalid={0} is invalid. + +errors.byte={0} must be a byte. +errors.short={0} must be a short. +errors.integer={0} must be an integer. +errors.long={0} must be a long. +errors.float={0} must be a float. +errors.double={0} must be a double. + +errors.date={0} is not a date. +errors.range={0} is not in the range {1} through {2}. +errors.creditcard={0} is an invalid credit card number. +errors.email={0} is an invalid e-mail address. + +errors.ihidnum=Is not a valid Social Security number +errors.korean={0} should be entered with their Korean +errors.ip=Invalid IP address. +errors.english={0}is an invalid English character. +errors.notKorean={0} should not be entered with their Korean + +errors.password1={0} must be entered within 8 to 20 characters. +errors.password2={0} is Korean, special characters, spaces are not allowed. +errors.password3={0} can not be used continuously for more than four sequential digits. +errors.password4={0} can not be used continuously for more than 4 letters or numbers that are repeated. +errors.pwdcheckcomb3={0} must be include as least 3 of English alphabet, digit number, special characters such as ~!@#$%^&*? +errors.pwdcheckcomb4={0} must be include as least 4 of English alphabet uppercase letter, English alphabet lowercase letter, digit number, special characters such as ~!@#$%^&*? +errors.pwdcheckseries={0} can not be used continuously for more than 3 sequential letters or digits. +errors.pwdcheckrepeat={0} can not be used continuously for more than 3 letters or numbers that are repeated. + +error.security.runtime.error = error + +info.password.rule.password1 = - must be entered within 8 to 20 characters. +info.password.rule.pwdcheckcomb3 = - must be include as least 3 of English alphabet, digit number, special characters such as ~!@#$%^&*? +info.password.rule.pwdcheckcomb4 = - must be include as least 4 of English alphabet uppercase letter, English alphabet lowercase letter, digit number, special characters such as ~!@#$%^&*? +info.password.rule.pwdcheckseries = - can not be used continuously for more than 3 sequential letters or digits ex) kkk, 321 are not allowed. + +#Xss Errors# +errors.xss.checkerUser=There is no use and disposal authority for its capabilities. + +#File Upload / Download +errors.file.extension=It is not a supported file type. +errors.file.transfer=An error occurred during file transfer. +success.file.transfer=The file transfer is complete. + +#common# +comCmmErr.button=before page + +#accessDenied# +comCmmErr.accessDenied.title=You do not have permission to access this page! +comCmmErr.accessDenied.code=User authorization Error + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=Error occurred while processing data! +comCmmErr.dataAccessFailure.code=Database Processing Error + + +#bizException# +comCmmErr.bizException.title=During business logic processing! +comCmmErr.bizException.code=Business Logic Processing Error + +#runtimeException# +comCmmErr.runtimeException.title=Unknown error occurred! +comCmmErr.runtimeException.code=System Error + +#sessionException# +comCmmErr.sessionException.title=Session Expiration Error! +comCmmErr.sessionException.code=Session Expiration Error + + +#top# +comCmm.top.title=eGoverment Standard Framework Common Components VERSION 4.0 +comCmm.top.leftSessionTime=Session expiration time +comCmm.top.incSessionTime=Time extension +comCmm.top.expiredSessionTime=Time out +comCmm.top.expireSessionTimeInfo=The Signin session time has expired. +comCmm.top.cantIncSessionTime=Time cannot be extended. + +#left# +comCmm.mai.title=Portal(example) Main Page +comCmm.uat.title=User Authentication/Directory Service +comCmm.sec.title=Security +comCmm.sts.title=Statistics/Reporting +comCmm.cop.title=Collaboration +comCmm.uss.title=User Support +comCmm.sym.title=System Management +comCmm.ssi.title=System/Service Integration +comCmm.dam.title=Digital Asset Management +comCmm.com.title=Utility Technology +comCmm.ext.title=External Add Components + +#component# +#Portal(example) Main Page# +comCmm.left.1=Portal(example) Main Page + +#User Authentication/Directory Service# +comCmm.left.10=Log In +comCmm.left.30=Log In Policy Management + +#Security# +comCmm.left.60=Authority Management +comCmm.left.70=Authority Group Management +comCmm.left.80=Group Management +comCmm.left.90=Role management for Each Authority +comCmm.left.100=Department Authority Management + +#Statistics/Reporting# +comCmm.left.120=Post Statistics +comCmm.left.130=User Statistics +comCmm.left.140=Connection Statistics +comCmm.left.150=Screen Statistics +comCmm.left.160=Report Statistics +comCmm.left.161=Data Usage Statistics + +#Collaboration# +comCmm.left.170=Blog Management +comCmm.left.180=Board Master Management +comCmm.left.190=Board Usage Management +comCmm.left.200=Template Management +comCmm.left.250=Scrap Management +comCmm.left.270=Community Creation/Usage/Member Management +comCmm.left.310=SMS Service +comCmm.left.320=Department Schedule Management +comCmm.left.330=Schedule Management +comCmm.left.340=Diary Management +comCmm.left.350=Master Schedule +comCmm.left.360=Send Mail +comCmm.left.361=Send Mail List +comCmm.left.370=Business Card Management +comCmm.left.371=My Business Card Management +comCmm.left.380=Address Book Management +comCmm.left.390=Executive Schedule Management +comCmm.left.400=Division Task Folder Management +comCmm.left.401=Division Task Information +comCmm.left.410=Weekly/Monthly Reports Management +comCmm.left.420=Memo/To-do List Management +comCmm.left.430=Memo Report + +#User Support# +comCmm.left.450=Corporate Member Management +comCmm.left.460=User Management +comCmm.left.461=Department Management +comCmm.left.470=Member Management +comCmm.left.480=My Page +comCmm.left.490=Provision Management +comCmm.left.500=Copyright Protection Policy +comCmm.left.510=Private Information Protection Policy +comCmm.left.520=Help +comCmm.left.530=Word Dictionary +comCmm.left.540=FAQ Management +comCmm.left.550=Q&A Management +comCmm.left.551=Q&A Answer +comCmm.left.560=Administration Terminology Dictionary +comCmm.left.561=Administration Terminology Dictionary Management +comCmm.left.570=Online Manual +comCmm.left.571=User Online Manual +comCmm.left.580=Consulting Management +comCmm.left.581=Consulting Answer Management +comCmm.left.590=Questionnaire Management +comCmm.left.600=Questionnaire Survey +comCmm.left.610=Questionnaire Template Management +comCmm.left.620=Questionnaire Respond Management +comCmm.left.630=Questionnaire Question Management +comCmm.left.640=Questionnaire Item Management +comCmm.left.650=Meeting Management +comCmm.left.660=Online POLL Management +comCmm.left.661=Online POLL Participation +comCmm.left.670=News Management +comCmm.left.680=Site Management +comCmm.left.700=Recommended Site Management +comCmm.left.710=Occasion/Event/Campaign +comCmm.left.711=Extra Human Resource +comCmm.left.720=Pop-up Management +comCmm.left.730=Information Alerts +comCmm.left.740=Banner Management +comCmm.left.741=MYPAGE Banner Management +comCmm.left.750=Login Page Image Management +comCmm.left.760=Recent Search Word Inquiry +comCmm.left.770=Main Image Management +comCmm.left.771=Main Image View Reflection Result +comCmm.left.780=Link Intergration Management +comCmm.left.790=User Absence Management +comCmm.left.800=Internet Service Information and Management +comCmm.left.810=Wiki Function +comCmm.left.820=RSS Tag Management +comCmm.left.822=RSS Tag Service +comCmm.left.830=Twitter Linkage +comCmm.left.831=Facebook Linkage +comCmm.left.840=Note Management +comCmm.left.850=Received Note Box Management +comCmm.left.860=Sent Note Box Management +comCmm.left.870=Meeting Room Management +comCmm.left.871=Meeting Room Reservation Management +comCmm.left.890=Employee Family Event Management +comCmm.left.891=Employee Congratulatory Approval Management +comCmm.left.900=Vacation Management +comCmm.left.901=Vacation Approval Management +comCmm.left.902=Personal Vocation Management +comCmm.left.910=Duty Management +comCmm.left.911=Duty Journal Management +comCmm.left.920=Compensation +comCmm.left.921=Compensation Approval Management +comCmm.left.930=Anniversary Management +comCmm.left.931=Anniversary List (Check) +comCmm.left.940=Event Application Management +comCmm.left.941=Event Reception Management +comCmm.left.942=Event Reception Approval Management +comCmm.left.943=Office Location Management +comCmm.left.950=Commute Management + +#System Management# +comCmm.left.960=Common Classification Code +comCmm.left.970=Common Detail Code +comCmm.left.980=Common Code +comCmm.left.1000=Address Management +comCmm.left.1010=Administration Code Management +comCmm.left.1020=Institutions Code Management +comCmm.left.1030=Log Management +comCmm.left.1040=User Log Management +comCmm.left.1050=Transmit/Receive Log Management +comCmm.left.1060=System History Management +comCmm.left.1070=Web Log Management +comCmm.left.1080=Connection Log Management +comCmm.left.1085=Privacy Log Management +comCmm.left.1090=Menu Management +comCmm.left.1091=Menu Management List +comCmm.left.1100=Menu Creation Management +comCmm.left.1101=Site Map +comCmm.left.1110=Short Cut Menu Management +comCmm.left.1111=Program Management +comCmm.left.1112=Program Change Management +comCmm.left.1113=Program Change Process +comCmm.left.1114=Program Change History +comCmm.left.1120=Batch Work Management +comCmm.left.1130=Batch Result Management +comCmm.left.1140=Schedule Process +comCmm.left.1150=Backup Management +comCmm.left.1151=Backup Result Management +comCmm.left.1160=NetWork Management +comCmm.left.1170=Server Information Management +comCmm.left.1171=Server S/W List +comCmm.left.1180=Trouble Request Management +comCmm.left.1190=Trouble Process Result Management + +#System/Service Integration# +comCmm.left.1210=System Contact Management +comCmm.left.1220=Contact Status Management +comCmm.left.1230=Contact Message Management +comCmm.left.1240=Contact Institution Management + +#Digital Asset Management# +comCmm.left.1250=Individual Knowledge Management +comCmm.left.1260=Knowledge Map Management by Types +comCmm.left.1261=Organizational Knowledge Map Management +comCmm.left.1270=Knowledge Expert Management +comCmm.left.1280=Knowledge Information Management +comCmm.left.1290=Knowledge Evaluation Management +comCmm.left.1291=Knowledge Information Offer + +#Utility Technology# +comCmm.left.1300=General Calendar +comCmm.left.2080=Transmit and Receive Monitoring +comCmm.left.2090=DB Service Monitoring +comCmm.left.2100=HTTP Service Monitoring +comCmm.left.2110=Process Monitoring +comCmm.left.2120=Network Service Monitoring +comCmm.left.2130=File System Monitoring +comCmm.left.2140=Proxy Service +comCmm.left.2150=File Synchronization +comCmm.left.2160=Login Session Information Check +comCmm.left.2170=Server Resource Monitoring +comCmm.left.2180=Address Info Linkage +comCmm.left.2200=Encryption/Decryption + +#External Add Components# +comCmm.left.3000=JFile Guide +comCmm.left.3010=JFile File Upload +comCmm.left.3020=JFile File Download +comCmm.left.3100=LDAP Org. Management +comCmm.left.3110=LDAP Org. Graph +comCmm.left.3200=WebMessenger + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=Common Compoent +comCmm.unitContent.2=Welcome. +comCmm.unitContent.3=Logout +comCmm.unitContent.4=If you run into any errors, please contact the eGovframework center. +comCmm.unitContent.5=Screen description +comCmm.unitContent.6=The left menu is not affected by the menu-related components (menu management, site map, etc.) +comCmm.unitContent.7=Controller class that finds installed components after installing components through IncludedInfo annotation and processes information to be displayed on the screen. +comCmm.unitContent.8= +comCmm.unitContent.9= +comCmm.unitContent.10=Before the menu structure is developed, +comCmm.unitContent.11=the list of common components included in the distribution files is provided. +comCmm.unitContent.12=If you use this control to configure menus at runtime, +comCmm.unitContent.13=we recommend that you delete and deploy them in production +comCmm.unitContent.14= because they can cause performance problems or cause errors in your menu configuration. + +comCmm.unitContent.20=Password expiration notice + +#EgovExpirePwd(\ube44\ubc00\ubc88\ud638\ubcc0\uacbd \uacf5\uc9c0)# +comCmm.expirePwdContent.1=Login +comCmm.expirePwdContent.2=Login classification + +comCmm.expirePwdContent.10=Manager +comCmm.expirePwdContent.11=Corporate Member +comCmm.expirePwdContent.12=General Member + +comCmm.expirePwdContent.21=Please refer to the following file to change the password expiration date. +comCmm.expirePwdContent.22=Password expiration +comCmm.expirePwdContent.23=Password validity has expired. +comCmm.expirePwdContent.24=Please change your password now for safe privacy! +comCmm.expirePwdContent.25=Password expiration days +comCmm.expirePwdContent.26=Password validity period +comCmm.expirePwdContent.27=Number of days since password change +comCmm.expirePwdContent.28=Password expiration days +comCmm.expirePwdContent.29=Please change your password periodically. +comCmm.expirePwdContent.30=days + +comCmm.expirePwdContent.50=Change immediately +comCmm.expirePwdContent.51=Change next \ No newline at end of file diff --git a/bin/main/messages/message-common_ko.properties b/bin/main/messages/message-common_ko.properties new file mode 100644 index 00000000..fc3577a6 --- /dev/null +++ b/bin/main/messages/message-common_ko.properties @@ -0,0 +1,467 @@ +fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +fail.common.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1} +info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +#UI Common resource# +table.num=\ubc88\ud638 +table.regdate=\ub4f1\ub85d\uc77c +table.reger=\ub4f1\ub85d\uc790 +table.select=\uc120\ud0dd +title.html=egovframe common component +title.detail=\uc0c1\uc138\uc870\ud68c +title.inquire=\uc870\ud68c +title.update=\uc218\uc815 +title.create=\ub4f1\ub85d +title.delete=\uc0ad\uc81c +title.save=\uc800\uc7a5 +title.list=\ubaa9\ub85d +title.searchCondition=\uac80\uc0c9\uc870\uac74 +title.search=\uac80\uc0c9\uc5b4 +title.reply=\ub2f5\uae00 +title.scrap=\uc2a4\ud06c\ub7a9 +title.comment=\ub313\uae00 +title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd +title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c +title.link=\ub9c1\ud06c +title.management=\uad00\ub9ac +title.all=\uc804\uccb4 + +input.select=\uc120\ud0dd\ud558\uc138\uc694 +input.cSelect=\uc120\ud0dd +input.input=\uc785\ub825 +input.button=\ubc84\ud2bc +input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 +input.yes=\uc608 +input.no=\uc544\ub2c8\uc624 + +select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd + +button.select=\uc120\ud0dd +button.search=\uac80\uc0c9 +button.use=\uc0ac\uc6a9 +button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 +button.inquire=\uc870\ud68c +button.update=\uc218\uc815 +button.create=\ub4f1\ub85d +button.delete=\uc0ad\uc81c +button.deleteDatabase=\uc644\uc804\uc0ad\uc81c +button.close=\ub2eb\uae30 +button.save=\uc800\uc7a5 +button.list=\ubaa9\ub85d +button.reset=\ucde8\uc18c +button.passwordUpdate=\uc554\ud638\ubcc0\uacbd +button.subscribe=\uac00\uc785\uc2e0\uccad +button.realname=\uc2e4\uba85\ud655\uc778 +button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.agree=\ub3d9\uc758 +button.disagree=\ube44\ub3d9\uc758 +button.possible=\uac00\ub2a5 +button.impossible=\ubd88\uac00\ub2a5 +button.qnaregist=Q&A\ub4f1\ub85d +button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d +button.preview=\ubbf8\ub9ac\ubcf4\uae30 +button.next=\ub2e4\uc74c +button.add=\ubc14\ub85c\ucd94\uac00 +button.confirm=\ud655\uc778 +button.back = \ub4a4\ub85c +button.yes = \uc608 +button.no = \uc544\ub2c8\uc624 +button.home = \ud648 +button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 +button.cop = \ud611\uc5c5 +button.wrkstart = \ucd9c\uadfc +button.wrkend = \ud1f4\uadfc +button.reply = \ub2f5\uae00 +button.scrap = \uc2a4\ud06c\ub7a9 +button.comment = \ub313\uae00 +button.excel = \uc5d1\uc140 +button.init=\ucd08\uae30\ud654 +button.acknowledgment=\uc2b9\uc778 +button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c +button.bulkUpload=\uc77c\uad04\ub4f1\ub85d +button.log = \ub85c\uadf8 +button.set = \uc124\uc815 +button.move = \uc774\ub3d9 +button.answer = \ub2f5\ubcc0 + +#UI Common Message# +common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. +common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4. +common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4. +common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. + +common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694 +common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4. +common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4. +common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. + +fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4! +fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558) +fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#UI User Message# +fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328) +info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +#Vlidator Errors# +errors.prefix=
+errors.suffix=

+ +errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4. +errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.integer={0}\uc740(\ub294) integer \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.long={0}\uc740(\ub294) long \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.float={0}\uc740(\ub294) float \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.double={0}\uc740(\ub294) double \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. + +errors.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4. +errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4. + +errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4. +errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4. +errors.english={0}\uc740(\ub294) \uc601\ubb38\ub9cc \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc788\uc2b5\ub2c8\ub2e4. +errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckcomb3={0}\uc740(\ub294) \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckcomb4={0}\uc740(\ub294) \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckseries={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckrepeat={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +error.security.runtime.error = error + +info.password.rule.password1 = - 8\uc774\uc0c1 20\uc790\ub9ac \uc774\ud558 +info.password.rule.pwdcheckcomb3 = - \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckcomb4 = - \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckseries = - 3\uc790\ub9ac \uc774\uc0c1 \ubc18\ubcf5 \ub610\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790 \uc0ac\uc6a9 \uae08\uc9c0. \uc608)kkk , 321 \ub4f1 \uc0ac\uc6a9\uae08\uc9c0 + +#Xss Errors# +errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +#File Upload / Download +errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. +success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#common# +comCmmErr.button=\uc774\uc804 \ud398\uc774\uc9c0 + +#accessDenied# +comCmmErr.accessDenied.title=\ud604\uc7ac \ud398\uc774\uc9c0\uc5d0 \ub300\ud55c \uc811\uadfc\uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4! +comCmmErr.accessDenied.code=\uc0ac\uc6a9\uc790\uc811\uadfc\uad8c\ud55c \uc5d0\ub7ec + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=\ub370\uc774\ud130 \ucc98\ub9ac \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4! +comCmmErr.dataAccessFailure.code=\ub370\uc774\ud130\ucc98\ub9ac \uc5d0\ub7ec + +#bizException# +comCmmErr.bizException.title=\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ucc98\ub9ac \uc911 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.bizException.code=\ube44\uc988\ub2c8\uc2a4\ub85c\uc9c1\ucc98\ub9ac \uc5d0\ub7ec + +#runtimeException# +comCmmErr.runtimeException.title=\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.runtimeException.code=\uc2dc\uc2a4\ud15c \uc5d0\ub7ec + +#sessionException# +comCmmErr.sessionException.title=\uc138\uc158\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4! +comCmmErr.sessionException.code=\uc138\uc158\ub9cc\ub8cc \uc5d0\ub7ec + + +#top# +comCmm.top.title=\uc804\uc790\uc815\ubd80 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c \uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 VERSION 4.0 +comCmm.top.leftSessionTime=\uc138\uc158\ub9cc\ub8cc \ub0a8\uc740\uc2dc\uac04 +comCmm.top.incSessionTime=\uc2dc\uac04\uc5f0\uc7a5 +comCmm.top.expiredSessionTime=\uc2dc\uac04\ub9cc\ub8cc +comCmm.top.expireSessionTimeInfo=\ub85c\uadf8\uc778 \uc138\uc158\uc2dc\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.top.cantIncSessionTime=\uc2dc\uac04\uc744 \uc5f0\uc7a5\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +#left# +comCmm.mai.title=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 +comCmm.uat.title=\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d +comCmm.sec.title=\ubcf4\uc548 +comCmm.sts.title=\ud1b5\uacc4/\ub9ac\ud3ec\ud305 +comCmm.cop.title=\ud611\uc5c5 +comCmm.uss.title=\uc0ac\uc6a9\uc790\uc9c0\uc6d0 +comCmm.sym.title=\uc2dc\uc2a4\ud15c\uad00\ub9ac +comCmm.ssi.title=\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4 +comCmm.dam.title=\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac +comCmm.com.title=\uc694\uc18c\uae30\uc220 +comCmm.ext.title=\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8 + +#component# +#\ud3ec\ud0c8 \uba54\uc778\ud654\uba74# +comCmm.left.1=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 + +#\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d# +comCmm.left.10=\ub85c\uadf8\uc778 +comCmm.left.30=\ub85c\uadf8\uc778\uc815\ucc45\uad00\ub9ac + +#\ubcf4\uc548# +comCmm.left.60=\uad8c\ud55c\uad00\ub9ac +comCmm.left.70=\uad8c\ud55c\uadf8\ub8f9\uad00\ub9ac +comCmm.left.80=\uadf8\ub8f9\uad00\ub9ac +comCmm.left.90=\ub864\uad00\ub9ac +comCmm.left.100=\ubd80\uc11c\uad8c\ud55c\uad00\ub9ac + +#\ud1b5\uacc4/\ub9ac\ud3ec\ud305# +comCmm.left.120=\uac8c\uc2dc\ubb3c\ud1b5\uacc4 +comCmm.left.130=\uc0ac\uc6a9\uc790\ud1b5\uacc4 +comCmm.left.140=\uc811\uc18d\ud1b5\uacc4 +comCmm.left.150=\ud654\uba74\ud1b5\uacc4 +comCmm.left.160=\ubcf4\uace0\uc11c\ud1b5\uacc4 +comCmm.left.161=\uc790\ub8cc\uc774\uc6a9\ud604\ud669\ud1b5\uacc4 + +\ud611\uc5c5 +comCmm.left.170=\ube14\ub85c\uadf8\uad00\ub9ac +comCmm.left.180=\uac8c\uc2dc\ud310\uad00\ub9ac +comCmm.left.190=\uac8c\uc2dc\ud310\uc0ac\uc6a9\uc815\ubcf4 +comCmm.left.200=\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.250=\uc2a4\ud06c\ub7a9 \ubaa9\ub85d +comCmm.left.270=\ucee4\ubba4\ub2c8\ud2f0\uad00\ub9ac +comCmm.left.310=\ubb38\uc790\uba54\uc2dc\uc9c0 +comCmm.left.320=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac +comCmm.left.330=\uc77c\uc815\uad00\ub9ac +comCmm.left.340=\uc77c\uc9c0\uad00\ub9ac +comCmm.left.350=\uc804\uccb4\uc77c\uc815\uad00\ub9ac +comCmm.left.360=\uba54\uc77c\ubc1c\uc1a1 +comCmm.left.361=\ubc1c\uc1a1\uba54\uc77c\ub0b4\uc5ed +comCmm.left.370=\uba85\ud568\uad00\ub9ac +comCmm.left.371=\ub0b4\uba85\ud568\ubaa9\ub85d +comCmm.left.380=\uc8fc\uc18c\ub85d\uad00\ub9ac +comCmm.left.390=\uac04\ubd80\uc77c\uc815\uad00\ub9ac +comCmm.left.400=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +comCmm.left.401=\ubd80\uc11c\uc5c5\ubb34\uc815\ubcf4 +comCmm.left.410=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0\uad00\ub9ac +comCmm.left.420=\uba54\ubaa8\ud560\uc77c\uad00\ub9ac +comCmm.left.430=\uba54\ubaa8\ubcf4\uace0 + +#\uc0ac\uc6a9\uc790\uc9c0\uc6d0# +comCmm.left.450=\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac +comCmm.left.460=\uc5c5\ubb34\uc0ac\uc6a9\uc790\uad00\ub9ac +comCmm.left.461=\ubd80\uc11c\uad00\ub9ac +comCmm.left.470=\uc77c\ubc18\ud68c\uc6d0\uad00\ub9ac +comCmm.left.480=\ub9c8\uc774\ud398\uc774\uc9c0\uad00\ub9ac +comCmm.left.490=\uc57d\uad00\uad00\ub9ac +comCmm.left.500=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 +comCmm.left.510=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ud655\uc778 +comCmm.left.520=\ub3c4\uc6c0\ub9d0 +comCmm.left.530=\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.540=FAQ\uad00\ub9ac +comCmm.left.550=Q&A\uad00\ub9ac +comCmm.left.551=Q&A\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.560=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.561=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804\uad00\ub9ac +comCmm.left.570=\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.571=\uc0ac\uc6a9\uc790\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.580=\uc0c1\ub2f4\uad00\ub9ac +comCmm.left.581=\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.590=\uc124\ubb38\uad00\ub9ac +comCmm.left.600=\uc124\ubb38\uc870\uc0ac +comCmm.left.610=\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.620=\uc751\ub2f5\uc790\uad00\ub9ac +comCmm.left.630=\uc9c8\ubb38\uad00\ub9ac +comCmm.left.640=\ud56d\ubaa9\uad00\ub9ac +comCmm.left.650=\ud68c\uc758\uad00\ub9ac +comCmm.left.660=\uc628\ub77c\uc778poll\uad00\ub9ac +comCmm.left.661=\uc628\ub77c\uc778poll\ucc38\uc5ec +comCmm.left.670=\ub274\uc2a4\uad00\ub9ac +comCmm.left.680=\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.700=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.710=\ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 +comCmm.left.711=\uc678\ubd80\uc778\uc0ac\uc815\ubcf4 +comCmm.left.720=\ud31d\uc5c5\ucc3d\uad00\ub9ac +comCmm.left.730=\uc815\ubcf4\uc54c\ub9bc\uc774 +comCmm.left.740=\ubc30\ub108\uad00\ub9ac +comCmm.left.741=MYPAGE\ubc30\ub108\uad00\ub9ac +comCmm.left.750=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.760=\ucd5c\uadfc\uac80\uc0c9\uc5b4 \uc870\ud68c +comCmm.left.770=\uba54\uc778\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.771=\uba54\uc778\uc774\ubbf8\uc9c0 \ubc18\uc601\uacb0\uacfc\ubcf4\uae30 +comCmm.left.780=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac +comCmm.left.790=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac +comCmm.left.800=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4\ubc0f\uad00\ub9ac +comCmm.left.810=Wiki\uae30\ub2a5 +comCmm.left.820=RSS\ud0dc\uadf8\uad00\ub9ac +comCmm.left.822=RSS\ud0dc\uadf8\uc11c\ube44\uc2a4 +comCmm.left.830=Twitter\uc5f0\ub3d9 +comCmm.left.831=Facebook \uc5f0\ub3d9 +comCmm.left.840=\ucabd\uc9c0\uad00\ub9ac +comCmm.left.850=\ubc1b\uc740\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.860=\ubcf4\ub0b8\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.870=\ud68c\uc758\uc2e4\uad00\ub9ac +comCmm.left.871=\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +comCmm.left.890=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uad00\ub9ac +comCmm.left.891=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uc2b9\uc778\uad00\ub9ac +comCmm.left.900=\ud734\uac00\uad00\ub9ac +comCmm.left.901=\ud734\uac00\uc2b9\uc778\uad00\ub9ac +comCmm.left.902=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +comCmm.left.910=\ub2f9\uc9c1\uad00\ub9ac +comCmm.left.911=\ub2f9\uc9c1\uccb4\ud06c\uad00\ub9ac +comCmm.left.920=\ud3ec\uc0c1\uad00\ub9ac +comCmm.left.921=\ud3ec\uc0c1\uc2b9\uc778\uad00\ub9ac +comCmm.left.930=\uae30\ub150\uc77c\uad00\ub9ac +comCmm.left.931=\uae30\ub150\uc77c\ubaa9\ub85d(\ud655\uc778\uc6a9) +comCmm.left.940=\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac +comCmm.left.941=\ud589\uc0ac\uc811\uc218\uad00\ub9ac +comCmm.left.942=\ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac +comCmm.left.943=\uc57d\ub3c4 \uad00\ub9ac +comCmm.left.950=\ucd9c\ud1f4\uadfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c\uad00\ub9ac# +comCmm.left.960=\uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc +comCmm.left.970=\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc +comCmm.left.980=\uacf5\ud1b5\ucf54\ub4dc +comCmm.left.1000=\uc6b0\ud3b8\ubc88\ud638\uad00\ub9ac +comCmm.left.1010=\ud589\uc815\ucf54\ub4dc\uad00\ub9ac +comCmm.left.1020=\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 +comCmm.left.1030=\ub85c\uadf8\uad00\ub9ac +comCmm.left.1040=\uc0ac\uc6a9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1050=\uc1a1/\uc218\uc2e0\ub85c\uadf8\uad00\ub9ac +comCmm.left.1060=\uc2dc\uc2a4\ud15c\uc774\ub825\uad00\ub9ac +comCmm.left.1070=\uc6f9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1080=\uc811\uc18d\ub85c\uadf8\uad00\ub9ac +comCmm.left.1085=\uac1c\uc778\uc815\ubcf4\uc870\ud68c\ub85c\uadf8\uad00\ub9ac +comCmm.left.1090=\uba54\ub274\ub9ac\uc2a4\ud2b8\uad00\ub9ac +comCmm.left.1091=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comCmm.left.1100=\uba54\ub274\uc0dd\uc131\uad00\ub9ac +comCmm.left.1101=\uc0ac\uc774\ud2b8\ub9f5 +comCmm.left.1110=\ubc14\ub85c\uac00\uae30\uba54\ub274\uad00\ub9ac +comCmm.left.1111=\ud504\ub85c\uadf8\ub7a8\uad00\ub9ac +comCmm.left.1112=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\uad00\ub9ac +comCmm.left.1113=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comCmm.left.1114=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comCmm.left.1120=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac +comCmm.left.1130=\ubc30\uce58\uacb0\uacfc\uad00\ub9ac +comCmm.left.1140=\uc2a4\ucf00\uc904\ucc98\ub9ac +comCmm.left.1150=\ubc31\uc5c5\uad00\ub9ac +comCmm.left.1151=\ubc31\uc5c5\uacb0\uacfc\uad00\ub9ac +comCmm.left.1160=\ub124\ud2b8\uc6cc\ud06c\uad00\ub9ac +comCmm.left.1170=\uc11c\ubc84\uc815\ubcf4\uad00\ub9ac +comCmm.left.1171=\uc11c\ubc84(S/W)\ubaa9\ub85d +comCmm.left.1180=\uc7a5\uc560\uc2e0\uccad\uad00\ub9ac +comCmm.left.1190=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4# +comCmm.left.1210=\uc2dc\uc2a4\ud15c\uc5f0\uacc4\uad00\ub9ac +comCmm.left.1220=\uc5f0\uacc4\ud604\ud669\uad00\ub9ac +comCmm.left.1230=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uad00\ub9ac +comCmm.left.1240=\uc5f0\uacc4\uae30\uad00\uad00\ub9ac + +#\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac# +comCmm.left.1250=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac +comCmm.left.1260=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc720\ud615) +comCmm.left.1261=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc870\uc9c1) +comCmm.left.1270=\uc9c0\uc2dd\uc804\ubb38\uac00\uad00\ub9ac +comCmm.left.1280=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac +comCmm.left.1290=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac +comCmm.left.1291=\uc9c0\uc2dd\uc815\ubcf4\uc81c\uacf5 + +#\uc694\uc18c\uae30\uc220# +comCmm.left.1300=\uacf5\ud734\uc77c\uad00\ub9ac(\ub2ec\ub825) +comCmm.left.2080=\uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2090=DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2100=HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2110=\ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2120=\ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2130=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2140=\ud504\ub85d\uc2dc\uc11c\ube44\uc2a4 +comCmm.left.2150=\ud30c\uc77c\ub3d9\uae30\ud654(\ub300\uc0c1\uc11c\ubc84) +comCmm.left.2160=\ub85c\uadf8\uc778\uc138\uc158\uc815\ubcf4\uccb4\ud06c +comCmm.left.2170=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1-\ub300\uc0c1\ubaa9\ub85d +comCmm.left.2180=\uc8fc\uc18c\uc815\ubcf4\uc5f0\uacc4 +comCmm.left.2200=\uc554\ud638\ud654/\ubcf5\ud638\ud654 + +#\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8# +comCmm.left.3000=JFile \uac00\uc774\ub4dc +comCmm.left.3010=JFile \ud30c\uc77c \uc5c5\ub85c\ub4dc +comCmm.left.3020=JFile \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc +comCmm.left.3100=LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac +comCmm.left.3110=LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504 +comCmm.left.3200=\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800 + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=\uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 +comCmm.unitContent.2=\ub2d8 \ud658\uc601\ud569\ub2c8\ub2e4. +comCmm.unitContent.3=\ub85c\uadf8\uc544\uc6c3 +comCmm.unitContent.4=\uc2e4\ud589 \uc2dc \uc624\ub958 \uc0ac\ud56d\uc774 \uc788\uc73c\uc2dc\uba74 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c\uc13c\ud130\ub85c \uc5f0\ub77d\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. +comCmm.unitContent.5=\ud654\uba74 \uc124\uba85 +comCmm.unitContent.6=\uc67c\ucabd \uba54\ub274\ub294 \uba54\ub274\uc640 \uad00\ub828\ub41c \ucef4\ud3ec\ub10c\ud2b8(\uba54\ub274\uad00\ub9ac, \uc0ac\uc774\ud2b8\ub9f5 \ub4f1)\ub4e4\uc758 \uc601\ud5a5\uc744 \ubc1b\uc9c0 \uc54a\uc73c\uba70, +comCmm.unitContent.7=\uac01 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc27d\uac8c \ucc3e\uc544\ubcfc \uc218 \uc788\ub294 \ubc14\ub85c \uac00\uae30 \ub9c1\ud06c\ud398\uc774\uc9c0\uc785\ub2c8\ub2e4. +comCmm.unitContent.8=\ucef4\ud3ec\ub10c\ud2b8 \uc124\uce58 \ud6c4 \uc124\uce58\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 IncludedInfo annotation\uc744 \ud1b5\ud574 \ucc3e\uc544\ub0b8 \ud6c4 +comCmm.unitContent.9=\ud654\uba74\uc5d0 \ud45c\uc2dc\ud560 \uc815\ubcf4\ub97c \ucc98\ub9ac\ud558\ub294 Controller \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. +comCmm.unitContent.10=\uac1c\ubc1c \uc2dc \uba54\ub274 \uad6c\uc870\uac00 \uc7a1\ud788\uae30 \uc804\uc5d0 \ubc30\ud3ec \ud30c\uc77c\ub4e4\uc5d0 \ud3ec\ud568\ub41c \uacf5\ud1b5 \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc758 \ubaa9\ub85d\uc131 \ud654\uba74\uc5d0 URL\uc744 \uc81c\uacf5\ud558\uc5ec +comCmm.unitContent.11=\uac1c\ubc1c\uc790\uac00 \ud3b8\ub9ac\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.unitContent.12=\uc6b4\uc601 \uc2dc\uc5d0 \ubcf8 \ucee8\ud2b8\ub864\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba54\ub274\ub97c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0, +comCmm.unitContent.13=\uc131\ub2a5 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\uac70\ub098 \uc0ac\uc6a9\uc790\ubcc4 \uba54\ub274 \uad6c\uc131\uc5d0 \uc624\ub958\ub97c \ubc1c\uc0dd\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 +comCmm.unitContent.14=\uc2e4 \uc6b4\uc601 \uc2dc\uc5d0\ub294 \uc0ad\uc81c\ud574\uc11c \ubc30\ud3ec\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. + +comCmm.unitContent.20=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc \uc548\ub0b4 + +#EgovExpirePwd(\ube44\ubc00\ubc88\ud638\ubcc0\uacbd \uacf5\uc9c0)# +comCmm.expirePwdContent.1=\ub85c\uadf8\uc778 +comCmm.expirePwdContent.2=\ub85c\uadf8\uc778 \uad6c\ubd84 + +comCmm.expirePwdContent.10=\uc5c5\ubb34\uc0ac\uc6a9\uc790 +comCmm.expirePwdContent.11=\uae30\uc5c5\ud68c\uc6d0 +comCmm.expirePwdContent.12=\uc77c\ubc18\ud68c\uc6d0 + +comCmm.expirePwdContent.21=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc758 \ubcc0\uacbd\uc740 \ub2e4\uc74c \ud30c\uc77c\uc744 \ucc38\uc870\ud558\uc5ec \uc8fc\uc138\uc694. +comCmm.expirePwdContent.22=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc +comCmm.expirePwdContent.23=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.expirePwdContent.24=\uc548\uc804\ud55c \uac1c\uc778\uc815\ubcf4 \ubcf4\ud638\ub97c \uc704\ud574 \uc9c0\uae08 \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694! +comCmm.expirePwdContent.25=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.26=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 +comCmm.expirePwdContent.27=\ube44\ubc00\ubc88\ud638 \ubcc0\uacbd\ud6c4 \uacbd\uacfc\uc77c\uc218 +comCmm.expirePwdContent.28=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.29=\uc8fc\uae30\uc801\uc73c\ub85c \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694. +comCmm.expirePwdContent.30=\uc77c + +comCmm.expirePwdContent.50=\uc9c0\uae08 \uc989\uc2dc \ubcc0\uacbd\ud558\uae30 +comCmm.expirePwdContent.51=\ub2e4\uc74c\uc5d0 \ubcc0\uacbd\ud558\uae30 \ No newline at end of file diff --git a/bin/main/quartz-kic_dev.properties b/bin/main/quartz-kic_dev.properties new file mode 100644 index 00000000..6c4cd154 --- /dev/null +++ b/bin/main/quartz-kic_dev.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/bin/main/quartz-kic_rel.properties b/bin/main/quartz-kic_rel.properties new file mode 100644 index 00000000..34232a17 --- /dev/null +++ b/bin/main/quartz-kic_rel.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_rel_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = YvRZ5jyhmB6gwVSUGBOqNMQB00k6OZZSfUH5ZU4GEFs= +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/bin/main/quartz-local.properties b/bin/main/quartz-local.properties new file mode 100644 index 00000000..2df3481e --- /dev/null +++ b/bin/main/quartz-local.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/bin/main/quartz.properties b/bin/main/quartz.properties new file mode 100644 index 00000000..2df3481e --- /dev/null +++ b/bin/main/quartz.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/bin/main/secrets/UrpSystem.keystore b/bin/main/secrets/UrpSystem.keystore new file mode 100644 index 00000000..39528f7c --- /dev/null +++ b/bin/main/secrets/UrpSystem.keystore @@ -0,0 +1 @@ +aes256.key=52f48aa1c7435bc11bf909d9d7d1d5932f4bacd8184ec5c1eed6d03ee17fe126 \ No newline at end of file diff --git a/bin/test/UrpKeyMng/LibraryTest.class b/bin/test/UrpKeyMng/LibraryTest.class new file mode 100644 index 0000000000000000000000000000000000000000..822d2ac96d90a0c8804306c2677ecff92324f83d GIT binary patch literal 634 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..aa991fce --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..1b6c7873 --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..1ee7c044 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,11 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/7.4.2/userguide/multi_project_builds.html + */ + +rootProject.name = 'urpItms_30_Batch' + diff --git a/src/etc/tables_mysql.sql b/src/etc/tables_mysql.sql new file mode 100644 index 00000000..f73dc3f1 --- /dev/null +++ b/src/etc/tables_mysql.sql @@ -0,0 +1,168 @@ +# +# Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar +# +# PLEASE consider using mysql with innodb tables to avoid locking issues +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +# + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + + +CREATE TABLE QRTZ_JOB_DETAILS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT(13) NULL, + PREV_FIRE_TIME BIGINT(13) NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT(13) NOT NULL, + END_TIME BIGINT(13) NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT(2) NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + 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 VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT(7) NOT NULL, + REPEAT_INTERVAL BIGINT(12) NOT NULL, + TIMES_TRIGGERED BIGINT(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(200) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BLOB NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT(13) NOT NULL, + SCHED_TIME BIGINT(13) NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT VARCHAR(1) NULL, + REQUESTS_RECOVERY VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT(13) NOT NULL, + CHECKIN_INTERVAL BIGINT(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + + +commit; diff --git a/src/main/java/com/urpsys/basebatch/Aes256Test.java b/src/main/java/com/urpsys/basebatch/Aes256Test.java new file mode 100644 index 00000000..2d1d331f --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/Aes256Test.java @@ -0,0 +1,122 @@ +package com.urpsys.basebatch; + +import java.io.InputStream; +import java.security.InvalidKeyException; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.codec.binary.Hex; + +/** + * Hello world! + * + */ +public class Aes256Test +{ + private static SecretKey keySpec; // keySpec + private static IvParameterSpec ivSpec; // ivSpec + + + public static void main( String[] args ) + { + InputStream fis = null; + String secretKey = null; + + System.out.println( "Hello World!" ); + + secretKey = "52f48aa1c7435bc11bf909d9d7d1d5932f4bacd8184ec5c1eed6d03ee17fe126"; + + args = new String[2]; + + args[0] ="enc"; + args[1] ="kicintf12!"; + + if(args.length !=2 ) + { + System.out.println("Invalid args , args length 2 input "); + System.exit(0); + } + + try + { + byte[] secretKeyBytes = Hex.decodeHex(secretKey); + + if (secretKeyBytes.length != 32) + { + System.out.println("Invalid key (key length is not valid) "); + System.exit(0); + } + + byte[] ivBytes = new byte[16]; + + System.arraycopy(secretKeyBytes, 0, ivBytes, 0, 16); + + keySpec = new SecretKeySpec(secretKeyBytes, "AES"); + ivSpec = new IvParameterSpec(ivBytes); + + if(args[0].equals("enc")) + { + System.out.println( "암호로 변경" ); + + if (args[1] == null) + { + System.out.println("변경할 문자열이 없습니다."); + } + + String encryptedStr = null; + + try + { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + byte[] encrypted = cipher.doFinal(args[1].getBytes("UTF-8")); + encryptedStr = new String(Base64.encodeBase64(encrypted)); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + System.out.println( "["+ args[1] +"] 암호화로 변경 =============>"+ encryptedStr); + } + else if(args[0].equals("dec")) + { + System.out.println( "평문으로 변경" ); + + if (args[1] == null) + { + System.out.println("변경할 문자열이 없습니다."); + } + + String decryptedStr = null; + + try { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); + byte[] byteStr = Base64.decodeBase64(args[1].getBytes("UTF-8")); + decryptedStr = new String(cipher.doFinal(byteStr), "UTF-8"); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + System.out.println( "["+ args[1] +"] 평문으로 변경 =============>"+ decryptedStr); + } + + + + } + catch(Exception e) + { + e.printStackTrace(); + } + + + } +} diff --git a/src/main/java/com/urpsys/basebatch/common/crypto/Aes256Cipher.java b/src/main/java/com/urpsys/basebatch/common/crypto/Aes256Cipher.java new file mode 100644 index 00000000..e390933d --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/crypto/Aes256Cipher.java @@ -0,0 +1,152 @@ +package com.urpsys.basebatch.common.crypto; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.InvalidKeyException; +import java.util.Properties; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +import com.urpsys.basebatch.common.util.CommonUtil; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.codec.binary.Hex; +import org.springframework.core.io.ClassPathResource; + +/** + * aes 256 암호화 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일         수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03     나혁제         최초작성
+ *
+ * 
+ */ + +public class Aes256Cipher +{ + private SecretKey keySpec; // keySpec + private IvParameterSpec ivSpec; // ivSpec + + /** + * Aes256Cipher 생성자 + * + * @param keyFile 키 파일 위치를 입력 받음 + * @throws IOException 파일 io 시 발생하는 익셉션 + * @throws InvalidKeyException key가 잘못되었을 경우 발생하는 익셉션 + * @throws DecoderException 암호화된 문자열을 decoding할 때 발생하는 익셉션 + */ + public Aes256Cipher() throws IOException, InvalidKeyException, DecoderException + { + + String activeProfile = (CommonUtil.nvl(System.getProperty("spring.profiles.active"))); + + InputStream fis = null; + String secretKey = null; + + try + { + fis = new ClassPathResource("secrets/UrpSystem.keystore").getInputStream(); + + Properties props = new Properties(); + props.load(fis); + secretKey = props.getProperty("aes256.key"); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + finally + { + fis.close(); + } + + byte[] secretKeyBytes = Hex.decodeHex(secretKey); + + if (secretKeyBytes.length != 32) { + throw new InvalidKeyException("Invalid key (key length is not valid) "); + } + + byte[] ivBytes = new byte[16]; + + System.arraycopy(secretKeyBytes, 0, ivBytes, 0, 16); + + keySpec = new SecretKeySpec(secretKeyBytes, "AES"); + ivSpec = new IvParameterSpec(ivBytes); + } + + /** + * encryption 하는 메소드 + * + * @param plainStr 평문을 입력 받음 + * @return 암호화된 문자열 + */ + public String encrypt(String plainStr) + { + if (plainStr == null) + { + return null; + } + + String encryptedStr = null; + + try + { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + byte[] encrypted = cipher.doFinal(plainStr.getBytes("UTF-8")); + encryptedStr = new String(Base64.encodeBase64(encrypted)); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + return encryptedStr; + } + + /** + * 암호화된 문자열을 복호화하는 메소드 + * + * @param encryptedStr 암호화된 문자열 + * @return 암호화가 해제된 문자열 + */ + public String decrypt(String encryptedStr) + { + if (encryptedStr == null) + { + return null; + } + + String decryptedStr = null; + + try + { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); + byte[] byteStr = Base64.decodeBase64(encryptedStr.getBytes("UTF-8")); + decryptedStr = new String(cipher.doFinal(byteStr), "UTF-8"); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + return decryptedStr; + } +} diff --git a/src/main/java/com/urpsys/basebatch/common/exception/CustomException.java b/src/main/java/com/urpsys/basebatch/common/exception/CustomException.java new file mode 100644 index 00000000..6f355f6f --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/exception/CustomException.java @@ -0,0 +1,124 @@ +package com.urpsys.basebatch.common.exception; + +import java.sql.SQLSyntaxErrorException; + +import lombok.Getter; + +/** + * Custom exception 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +public class CustomException extends Exception +{ + private static final long serialVersionUID = 3559302713942492181L; + + @Getter + private String errorCode; + + @Getter + private String errorMsg; + + /** + * 생성자(throwable를 받아서 exception 종류에 따라 에러 코드 정의하는 클래스) + * 에러코드 처리 부분은 향후 db에서 에러코드 읽어와서 매핑하는 것으로 + * 변경 가능성 있음 + * @param throwable + */ + public CustomException(Throwable throwable) + { + Throwable rootThrowable = getRootCause(throwable); + + // TODO 에러 코드는 상세 정의해서 define 해야 함 + if(rootThrowable instanceof SQLSyntaxErrorException) + { + this.errorCode = "100"; + this.errorMsg = "SQL 오류"; + } + else if(rootThrowable instanceof ArithmeticException) + { + this.errorCode = "200"; + this.errorMsg = "연산 오류"; + } + else + { + this.errorCode = "900"; + this.errorMsg = "Unknown Error"; + } + } + + /** + * 생성자(에러메시지만 받을 경우 에러코드를 0을 default로 세팅) + * @param errorMsg + */ + public CustomException(String errorMsg) + { + super(errorMsg); + this.errorCode = "0"; + this.errorMsg = errorMsg; + } + + /** + * 생성자(errorcode, errmsg를 받아 세팅, 소스코드에서 편하게 사용하기 위해 + * 에러코드를 int 값으로 받으면 string으로 변환하여 저장) + * @param errorCode + * @param errorMsg + */ + public CustomException(int errorCode, String errorMsg) + { + super(errorMsg); + this.errorCode = String.valueOf(errorCode); + this.errorMsg = errorMsg; + } + + /** + * 생성자(에러코드, 에러메시지를 받아 세팅) + * @param errorCode + * @param errorMsg + */ + public CustomException(String errorCode, String errorMsg) + { + super(errorMsg); + this.errorCode = errorCode; + this.errorMsg = errorMsg; + } + + /** + * stack에서 에러코드 중 root cause를 찾아내는 메소드 + * @param throwable + * @return + */ + private Throwable getRootCause(Throwable throwable) + { + Throwable cause = throwable.getCause(); + + if (cause == null) { + return throwable; + } + + while (true) { + + if(cause.getCause() == null) { + break; + } else { + cause = cause.getCause(); + } + } + + return cause; + } +} diff --git a/src/main/java/com/urpsys/basebatch/common/util/CommonUtil.java b/src/main/java/com/urpsys/basebatch/common/util/CommonUtil.java new file mode 100644 index 00000000..933591ad --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/util/CommonUtil.java @@ -0,0 +1,524 @@ +package com.urpsys.basebatch.common.util; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Base64; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.SimpleTimeZone; +import java.util.Vector; + +import com.urpsys.basebatch.common.exception.CustomException; + +/** + * 공통 유틸리티를 모아둔 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ *      
+ */ + +public class CommonUtil +{ + /** + * nvl 메소드 + * @param inputStr + * @return + */ + public static String nvl(String inputStr) + { + return (inputStr != null) ? inputStr.trim() : ""; + } + + /** + * nvl 메소드 + * @param inputStr + * @param defaultValue + * @return + */ + public static String nvl(String inputStr, String defaultValue) + { + return nvl(inputStr).contentEquals("") ? defaultValue : inputStr.trim(); + } + + /** + * nvl 메소드 + * @param inputObj + * @return + */ + public static String nvl(Object inputObj) + { + return (inputObj != null) ? String.valueOf(inputObj).trim() : ""; + } + + /** + * long 타입의 시간을 입력받아 날짜 형태로 변환해서 리턴해주는 함수 + * + * @param longTime long type 시간 + * @param dateFormat 변환할 포맷 + * @return 변환된 날짜 String + * @throws SystemException + */ + public static String getTimeString(long longTime, String dateFormat) throws CustomException + { + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.KOREA); + + if (longTime < 0) + { + return ""; + } + else + { + try + { + return sdf.format(new Date(longTime)); + } + catch (Exception e) + { + throw new CustomException("Date 변환 오류"); + } + } + } + + /** + * 현재(한국기준) 시간정보를 얻는다.
+ * (예) 입력파리미터인 format string에 "yyyyMMddhh"를 셋팅하면 1998121011과 같이 Return.
+ * (예) format string에 "yyyyMMddHHmmss"를 셋팅하면 19990114232121과 같이 + * 0~23시간 타입으로 Return.
+ * String CurrentDate = CtosUtil2.getKST("yyyyMMddHH");
+ * @param format 얻고자하는 현재시간의 Type + * @return str 현재 한국 시간. + */ + public static String getKST(String format) + { + //1hour(ms) = 60s * 60m * 1000ms + int millisPerHour = 60 * 60 * 1000; + SimpleDateFormat fmt= new SimpleDateFormat(format); + + SimpleTimeZone timeZone = new SimpleTimeZone(9*millisPerHour,"KST"); + fmt.setTimeZone(timeZone); + + long time=System.currentTimeMillis(); + String str=fmt.format(new java.util.Date(time)); + return str; + } + + /** + * 입력한 날짜 기준으로 몇일 전,후 (주의)입력날짜는 구분자가 없는 string형 + * + * @param date + * string date (19991002) + * @param Day + * 기준이 되는 시간 + * @return String + */ + public static String getDatewithSpan(String date, long Day) + { + /* + * int millisPerHour = 60 * 60 * 1000; SimpleDateFormat fmt= new + * SimpleDateFormat("yyyy/MM/dd"); SimpleTimeZone timeZone = new + * SimpleTimeZone(9*millisPerHour,"KST"); fmt.setTimeZone(timeZone); + * + * int year = Integer.valueOf(date.substring(0,4)).intValue(); int month + * = Integer.valueOf(date.substring(4,6)).intValue(); int day = + * Integer.valueOf(date.substring(6,8)).intValue(); + * + * java.util.Calendar aDay = Calendar.getInstance(); + * aDay.set(year+1900,month,day); java.util.Calendar bDay + * =Calendar.getInstance(); bDay.set(1970+1900,1,1); java.util.Date cDay + * = new java.util.Date((aDay.getTime()).getTime() - + * (bDay.getTime()).getTime() + ((Day+1)*86400000) ); + * + * return fmt.format(cDay); + */ + // 2006-09-04 7:03오후 오동원수정 + String vFORMAT = "yyyy/MM/dd"; + return getDatewithSpan(date, Day, "D", vFORMAT); + + } + + /** + * 입력한 날짜 기준으로 몇(일,시간,분) 전,후 (주의)입력날짜는 구분자가 없는 string형
+ * + * @param date + * string date (20000315/2000031509/200003150915) + * @param unit + * long unit: 몇(일,시간,분) 전, 몇(일,시간,분) 후 + * @param type + * String type: D:Day H:Hour M:Minute + * @return String 계산된 문자열의 값. + */ + public static String getDatewithSpan(String date, long unit, String type, String strFormatType) + { + /* + * String formatType = strFormatType; int ihour = 0; int itime = 0; + * + * long dhm = 24 * 60 * 60 * 1000; + * + * if (type.equals("D")) { dhm =dhm + unit * 24 * 60 * 60 * 1000; } else + * if (type.equals("H")){ dhm =dhm + unit * 60 * 60 * 1000; } else if + * (type.equals("M")){ dhm =dhm + unit * 60 * 1000; } else{ return type + * + "은 부적절한 Type값입니다"; } + * + * switch (date.length()){ case (8): if (type.equals("H") || + * type.equals("M")) { return "HM-ERROR"; } + * + * break; case (10): if (type.equals("M")) { return "M-ERROR"; } + * + * ihour = Integer.valueOf(date.substring(8,10)).intValue(); break; case + * (12): + * + * ihour = Integer.valueOf(date.substring(8,10)).intValue(); itime = + * Integer.valueOf(date.substring(10,12)).intValue(); break; default: + * return "date Length Error"; } + * + * int millisPerHour = 60 * 60 * 1000; SimpleDateFormat fmt= new + * SimpleDateFormat(formatType); SimpleTimeZone timeZone = new + * SimpleTimeZone(9*millisPerHour,"KST"); fmt.setTimeZone(timeZone); + * + * int iyear = Integer.valueOf(date.substring(0,4)).intValue(); int + * imonth = Integer.valueOf(date.substring(4,6)).intValue(); int iday = + * Integer.valueOf(date.substring(6,8)).intValue(); java.util.Calendar + * aDay = Calendar.getInstance(); + * aDay.set(iyear+1900,imonth,iday,ihour,itime); java.util.Calendar bDay + * = Calendar.getInstance(); bDay.set(1970+1900,1,1,9,0); java.util.Date + * cDay = new java.util.Date((aDay.getTime()).getTime() - + * (bDay.getTime()).getTime() + dhm); return fmt.format(cDay); + */ + // 2006-09-04 7:03오후 오동원수정 + String formatType = strFormatType; + int ihour = 0; + int itime = 0; + if(!(type.equals("D") || type.equals("H") || type.equals("M"))) + { + return type + "은 부적절한 Type값입니다"; + } + + switch(date.length()) + { + case (8): + if(type.equals("H") || type.equals("M")) + { + return "HM-ERROR"; + } + break; + case (10): + if(type.equals("M")) + { + return "M-ERROR"; + } + ihour = Integer.parseInt(date.substring(8, 10)); + // ihour = Integer.valueOf(date.substring(8, 10)).intValue(); + break; + case (12): + ihour = Integer.parseInt(date.substring(8, 10)); + itime = Integer.parseInt(date.substring(10, 12)); + + // ihour = Integer.valueOf(date.substring(8, 10)).intValue(); + // itime = Integer.valueOf(date.substring(10, 12)).intValue(); + break; + default: + return "date Length Error"; + } + int iyear = Integer.parseInt(date.substring(0, 4)); + int imonth = Integer.parseInt(date.substring(4, 6)); + int iday = Integer.parseInt(date.substring(6, 8)); + + /* + int iyear = Integer.valueOf(date.substring(0, 4)).intValue(); + int imonth = Integer.valueOf(date.substring(4, 6)).intValue(); + int iday = Integer.valueOf(date.substring(6, 8)).intValue(); + */ + + int imonth1 = imonth - 1; // 달은 0달부터 시작한다. + java.util.Calendar zDay = Calendar.getInstance(); + zDay.set(iyear, imonth1, iday, ihour, itime); + + if(type.equals("D")) + { + zDay.add(Calendar.DATE, (int) unit); + } + else if(type.equals("H")) + { + zDay.add(Calendar.HOUR_OF_DAY, (int) unit); + } + else if(type.equals("M")) + { + zDay.add(Calendar.MINUTE, (int) unit); + } + else + { + return type + "은 부적절한 Type값입니다"; + } + java.util.Date z1Day = zDay.getTime(); + java.text.SimpleDateFormat fmt2 = new java.text.SimpleDateFormat(formatType); + return fmt2.format(z1Day); + + } + + /** + * 현재 시간을 기준으로 몇 일후 시간 시간의 형태는 (yyyy/mm/dd) + * + * @param day + * 더하려는 날짜 + * @return str 현재 시간에 입력 시간을 더한 DATE형 시간 + */ + public static String getDatewithSpan(long day) + { + /* + * int millisPerHour = 60 * 60 * 1000; SimpleDateFormat fmt= new + * SimpleDateFormat("yyyy/MM/dd"); SimpleTimeZone timeZone = new + * SimpleTimeZone(9*millisPerHour,"KST"); fmt.setTimeZone(timeZone); + * + * long time = System.currentTimeMillis(); long span = ( 60 * 60 * 1000 + * * 24 ) * day; //하루에 대한 millisecond... long time2 = time + span; + * String str=fmt.format(new java.util.Date(time2)); + * + * return str; + */ + String strSYSDATE = CommonUtil.getKST("yyyyMMddHH"); // 지금 시간 + String vFORMAT = "yyyy/MM/dd"; + return getDatewithSpan(strSYSDATE, day, "D", vFORMAT); + + } + + public static long stol(String str) + { + if(str == null ) return 0; + return (Long.valueOf(str).longValue()); + } + + /** + 문자열을 중 특정 문자열을 변환시킨다. + @version 1.0 + @author Yoon Su-wan + @since JDK1.0 + @param targeter 대상문자열 + @param target_str 변환될 대상문자열 + @param replace_str 변환될 문자열 + @return target_str이 replace_str로 변환된 문자열 + */ + public static String getReplacedString(String targeter, String target_str, String replace_str) + { + if( targeter == null + || target_str == null + || replace_str == null ) + return "debug : parameter value is null"; + + if(target_str.length() == 0) + return targeter; + + StringBuffer str = new StringBuffer(); + int start_ptr = 0; + int current_ptr = 0; + int increment_size = replace_str.length(); + if(increment_size == 0 ) increment_size = 1; + + while((current_ptr = targeter.indexOf(target_str, start_ptr)) != -1) + { + str.append(targeter.substring(start_ptr, current_ptr)); + str.append(replace_str); + start_ptr = current_ptr + increment_size; + if(start_ptr >= targeter.length()) + break; + }//end while + + if(start_ptr == 0) + return targeter; + + if(start_ptr < targeter.length()) + str.append(targeter.substring(start_ptr)); + + return str.toString(); + }//getReplacedString(String targeter, String target_str, String replace_str) + + /** + 받은메세지에서 v_s1값을 찾아서 v_s2로 대치한다. + @version 1.0 + @author Yoon Su-wan + @since JDK1.0 + @param v_msg 대상문자열 + @param v_s1 변환될 대상문자열 + @param v_s2 변환될 문자열 + @return v_s1이 v_s2 변환된 문자열 + */ + + public static String getReplacedString2(String v_msg, String v_s1, String v_s2) + { + int idx = v_msg.indexOf(v_s1); + + if (idx == -1) return v_msg; + else + { + try + { + return v_msg.substring(0, idx) + v_s2 + v_msg.substring(idx+2); + } catch (Exception e) + { + return v_msg.substring(0, idx) + v_s2; + } + } + + } + + public static String getReplacedString3(String sStr, String n1, String n2) + { + int iTmp = 0; + if (sStr == null) return ""; + + String sTmp = sStr; + StringBuffer sbSave = new StringBuffer(); + sbSave.append(""); + while (sTmp.indexOf(n1) > -1) + { + iTmp = sTmp.indexOf(n1); + sbSave.append(sTmp.substring(0,iTmp)); + sbSave.append(n2); + sTmp = sTmp.substring(iTmp + n1.length()); + } + sbSave.append(sTmp); + return sbSave.toString(); + } + + public static Vector arrToDouVector(String strArray, String strDelimt) + { + String[] stArray = strArray.split(strDelimt); + + double[] dArray = Arrays.stream(stArray).mapToDouble(Double::parseDouble).toArray(); + Vector vReturn = new Vector(); + + if(dArray==null) return vReturn; + + for(double dTemp: dArray) + { + vReturn.add(dTemp); + } + + return vReturn; + + } + + public static String arrListToString(List list) + { + String strReturn=""; + + if(list == null ) return ""; + + for(int i=0; i"+strTemp); + // double dou = Double.parseDouble(strTemp); + // strReturn = strReturn+","+dou; + strReturn = strReturn+","+strTemp; + } + + strReturn = strReturn.substring(1); + + return strReturn; + + } + + /** + 보고서 body base64 변환 + front로 부터 받아서 DB저장시 사용 + @version 1.0 + @author 나혁제 + @since 2025.02.06 + @param txt String + @return String + */ + public static String base64encode(String txt) + { + try + { + byte[] bytes = Base64.getEncoder().encode((txt).getBytes("utf-8")); + return new String(bytes); + } + catch(Exception e) + { + e.printStackTrace(); + byte[] bytes = Base64.getEncoder().encode((txt).getBytes()); + return new String(bytes); + } + } + + /** + 서버(DB)에서 front로 전달시 사용 + @version 1.0 + @author 나혁제 + @since 2025.02.06 + @param txt String + @return String + */ + public static String base64decode(String txt) + { + byte[] bytes = Base64.getDecoder().decode(txt.getBytes()); + + try + { + return new String(bytes, "utf-8"); + } + catch(Exception e) + { + e.printStackTrace(); + return new String(bytes); + } + } + + /** + *
+	 * 인자로 받은 String이 null일 경우 "0"로 리턴한다.
+	 * @param src null값일 가능성이 있는 String 값.
+	 * @return 만약 String이 null 값일 경우 "0"로 바꾼 String 값.
+	 *
+ */ + public static int zeroConvert(Object src) + { + String src2 = src+""; + if (src == null || src.equals("null")) + { + return 0; + } + else + { + return Integer.parseInt(((String)src2).trim()); + } + } + + /** + *
+	 * 인자로 받은 String이 null일 경우 ""로 리턴한다.
+	 * @param src null값일 가능성이 있는 String 값.
+	 * @return 만약 String이 null 값일 경우 ""로 바꾼 String 값.
+	 *
+ */ + public static int zeroConvert(String src) + { + + if (src == null || src.equals("null") || "".equals(src) || " ".equals(src)) + { + return 0; + } + else + { + return Integer.parseInt(src.trim()); + } + } + + + +} diff --git a/src/main/java/com/urpsys/basebatch/common/util/ConvertUtils.java b/src/main/java/com/urpsys/basebatch/common/util/ConvertUtils.java new file mode 100644 index 00000000..17eefea3 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/util/ConvertUtils.java @@ -0,0 +1,431 @@ +package com.urpsys.basebatch.common.util; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import org.springframework.util.ObjectUtils; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import kong.unirest.json.JSONArray; +import kong.unirest.json.JSONException; +import kong.unirest.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * 데이터 유형 변환 처리 모음 Util 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.09 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일         수정자        수정내용
+ * -----------  ---------    ------------------------
+ * 2025.03.20    나혁제         최초작성
+ *s
+ *      
+ */ +@Slf4j +public class ConvertUtils +{ + private ConvertUtils() {} + + /** + Object Type을 Map 타입으로 변환처리 + @version 1.0 + @author 나혁제 + @param Object obj + @return Map + */ + public static Map convertToMap(Object obj) + { + try + { + if (Objects.isNull(obj)) + { + return Collections.emptyMap(); + } + + Map convertMap = new LinkedHashMap<>(); + + Field[] fields = obj.getClass().getDeclaredFields(); + + for (Field field : fields) + { + field.setAccessible(true); + convertMap.put(field.getName(), field.get(obj)); + } + + return convertMap; + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + /** + Object Type의 List을 Map List 타입으로 변환처리 + @version 1.0 + @author 나혁제 + @param List list + @return List> + */ + public static List> convertToMaps(List list) + { + if (list == null || list.isEmpty()) + { + return Collections.emptyList(); + } + + List> convertList = new ArrayList<>(list.size()); + + for (Object obj : list) + { + convertList.add(ConvertUtils.convertToMap(obj)); + } + return convertList; + } + + + /** + Object Type을 Map 타입으로 변환처리 (확장영역까지 변환) + @version 1.0 + @author 나혁제 + @param Object obj + @return Map + */ + public static Map convertToMapAll(Object obj) + { + try + { + if (Objects.isNull(obj)) + { + return Collections.emptyMap(); + } + + Class upType = obj.getClass(); + + Map convertMap = new HashMap<>(); + + while(true) + { + + Field[] fields = upType.getDeclaredFields(); + + for (Field field : fields) + { + field.setAccessible(true); + convertMap.put(field.getName(), field.get(obj)); + } + + if(upType.getSuperclass() == null ) + { + break; + } + else + { + upType = upType.getSuperclass(); + } + } + + return convertMap; + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + /** + Map 데이터를 입력괸 클래스 타입으로 변환처리 + @version 1.0 + @author 나혁제 + @param Map map 입력맵 + Class type 변환 클래스 + @return T 변환된 븤래스 + */ + public static T convertToValueObject(Map map, Class type) + { + try + { + Objects.requireNonNull(type, "Class cannot be null"); + T instance = type.getConstructor().newInstance(); + + if (map == null || map.isEmpty()) + { + return instance; + } + + for (Map.Entry entry : map.entrySet()) + { + Field[] fields = type.getDeclaredFields(); + + for (Field field : fields) + { + field.setAccessible(true); + String name = field.getName(); + + boolean isSameType = entry.getValue().getClass().equals(getReferenceType(field.getType())); + boolean isSameName = entry.getKey().equals(name); + + if (isSameType && isSameName) + { + field.set(instance, map.get(name)); + break; + } + } + } + return instance; + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + /** + Map List 데이터를 입력괸 클래스 타입으로 변환처리 + @version 1.0 + @author 나혁제 + @param List> list + Class type 변환 클래스 + @return T 변환된 리스트 + */ + public static List convertToValueObjects(List> list, Class type) + { + Objects.requireNonNull(type, "Class cannot be null"); + + if (list == null || list.isEmpty()) + { + return Collections.emptyList(); + } + + List convertList = new ArrayList<>(list.size()); + + for (Map map : list) + { + convertList.add(ConvertUtils.convertToValueObject(map, type)); + } + return convertList; + } + + /** + Map List 데이터를 입력괸 클래스 타입으로 변환처리 (확장영역) + @version 1.0 + @author 나혁제 + @param Map map 입력맵 + Class type 변환 클래스 + @return T 변환된 븤래스 + */ + public static T convertToValueObjectAll(Map map, Class type) + { + try + { + Objects.requireNonNull(type, "Class cannot be null"); + T instance = type.getConstructor().newInstance(); + + if (map == null || map.isEmpty()) + { + return instance; + } + + for (Map.Entry entry : map.entrySet()) + { + Class upType = type; + + while(true) + { + Boolean bExist = false; + Field[] fields = upType.getDeclaredFields(); + + if(fields == null || fields.length==0) break; + + for (Field field : fields) + { + field.setAccessible(true); + String name = field.getName(); + + boolean isSameType = entry.getValue().getClass().equals(getReferenceType(field.getType())); + boolean isSameName = entry.getKey().equals(name); + + if (isSameType && isSameName) + { + field.set(instance, map.get(name)); + bExist = true; + break; + } + } + + if(bExist) break; + + if(upType.getSuperclass().getClass() == null) + { + break; + } + else + { + upType = upType.getSuperclass(); + } + } + } + + return instance; + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + /** + Map List 데이터를 입력괸 클래스 타입으로 변환처리 (확장된 클래스 처리) + @version 1.0 + @author 나혁제 + @param v_msg Map + @return List + */ + public static List convertToValueObjectsAll(List> list, Class type) + { + Objects.requireNonNull(type, "Class cannot be null"); + + if (list == null || list.isEmpty()) + { + return Collections.emptyList(); + } + + List convertList = new ArrayList<>(list.size()); + + for (Map map : list) + { + convertList.add(ConvertUtils.convertToValueObjectAll(map, type)); + } + return convertList; + } + + private static Class getReferenceType(Class type) + { + switch (type.getName()) { + case "boolean" : return Boolean.class; + case "byte" : return Byte.class; + case "short" : return Short.class; + case "char" : return Character.class; + case "int" : return Integer.class; + case "long" : return Long.class; + case "float" : return Float.class; + case "double" : return Double.class; + default : return type; + } + } + + /** + Map 데이터를 JSONObject로 변환. + @version 1.0 + @author 나혁제 + @param v_msg Map + @return JSONObject + */ + public static JSONObject getJsonFromMap(Map map) throws JSONException + { + JSONObject jsonData = new JSONObject(); + + for (String key : map.keySet()) + { + Object value = map.get(key); + if (value instanceof Map) + { + value = getJsonFromMap((Map) value); + } + jsonData.put(key, value); + } + return jsonData; + } + + /** + List 데이터를 JSONArray로 변환. + @version 1.0 + @author 나혁제 + @param v_msg Map + @return JSONObject + */ + public static JSONArray getJsonFromList(List> list) throws JSONException + { + + JSONArray jsonArr = new JSONArray(); + + for(Map map : list) + { + JSONObject jsonObj = getJsonFromMap(map); + jsonArr.put(jsonObj); + } + + return jsonArr; + } + + + /** + * jsonObject --> map 으로 변경 + * JSONObject 에 JSONArray 없어야 햠. + * @author 나혁제 + * @param obj + * @return + */ + public static Map getMapFromJSONObject(JSONObject obj) + { + if (ObjectUtils.isEmpty(obj)) + { + log.error("BAD REQUEST obj : {}", obj); + throw new IllegalArgumentException(String.format("BAD REQUEST obj %s", obj)); + } + + try + { + return new ObjectMapper().readValue(obj.toString(), Map.class); + } + catch (Exception e) + { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } + } + + /** + * json array 를 list map 으로 변경. + * + * @author 나혁제 + * @param jsonArray + * @return 값이 있으면 list map, 없으면 list 빈 값 return + */ + public static List> getListMapFromJsonArray(JSONArray jsonArray) + { + if (ObjectUtils.isEmpty(jsonArray)) + { + log.error("jsonArray is null."); + throw new IllegalArgumentException("jsonArray is null"); + } + + List> list = new ArrayList<>(); + + for (Object jsonObject : jsonArray) + { + list.add(getMapFromJSONObject((JSONObject) jsonObject)); + } + return list; + } + + + + + +} diff --git a/src/main/java/com/urpsys/basebatch/common/util/DataSourceUtil.java b/src/main/java/com/urpsys/basebatch/common/util/DataSourceUtil.java new file mode 100644 index 00000000..7b87c9b2 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/util/DataSourceUtil.java @@ -0,0 +1,113 @@ +package com.urpsys.basebatch.common.util; + +import javax.sql.DataSource; + +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.springframework.core.env.Environment; +import org.springframework.core.io.Resource; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import com.urpsys.basebatch.common.crypto.Aes256Cipher; +import com.urpsys.basebatch.common.exception.CustomException; +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +import java.util.LinkedHashMap; + +/** + * Datasource 생성하는 유틸리티 + * + * @author 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +public class DataSourceUtil +{ + /** + * 데이터 소스 만드는 메소드 + * @param dataSourceName + * @param env + * @param cipher + * @return + */ + public static DataSource createDataSource(String dataSourceName, Environment env, Aes256Cipher cipher) + { + HikariConfig config = new HikariConfig(); + + config.setDriverClassName (env.getProperty(dataSourceName + ".driverClassName" )); + config.setJdbcUrl (env.getProperty(dataSourceName + ".jdbcUrl" )); + + config.setUsername (cipher.decrypt(env.getProperty(dataSourceName + ".username"))); + config.setPassword (cipher.decrypt(env.getProperty(dataSourceName + ".password"))); + + config.setAutoCommit(false); + + config.setMaximumPoolSize (Integer.parseInt(env.getProperty(dataSourceName + ".maximumPoolSize" ))); + config.setMinimumIdle (Integer.parseInt(env.getProperty(dataSourceName + ".minimumIdle" ))); + config.setConnectionTimeout (Long.parseLong (env.getProperty(dataSourceName + ".connectionTimeout" ))); + config.setIdleTimeout (Long.parseLong (env.getProperty(dataSourceName + ".idleTimeout" ))); + + config.addDataSourceProperty("cachePrepStmts" , "true"); + config.addDataSourceProperty("prepStmtCacheSize" , "250"); + config.addDataSourceProperty("prepStmtCacheSqlLimit" , "2048"); + + return new HikariDataSource(config); + } + + /** + * SqlSessionFactory 만드는 메소드 + * @param dataSource + * @param configLocation + * @param mapperLocation + * @return + * @throws CustomException + */ + public static SqlSessionFactory createSqlSessionFactory(DataSource dataSource, Resource configLocation, + Resource[] mapperLocation) throws CustomException + { + SqlSessionFactory sqlSessionFactory; + + try { + SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); + sessionFactoryBean.setDataSource(dataSource); + sessionFactoryBean.setConfigLocation(configLocation); + sessionFactoryBean.setMapperLocations(mapperLocation); + + sqlSessionFactory = sessionFactoryBean.getObject(); + } + catch (Exception ex) + { + throw new CustomException(ex.getMessage()); + } + + return sqlSessionFactory; + } + + /** + * 트랜잭션 처리 메소드 + * @param dataSource + * @return + */ + public static DataSourceTransactionManager createTxManager(DataSource dataSource) + { + DataSourceTransactionManager txManager = new DataSourceTransactionManager(dataSource); + txManager.setGlobalRollbackOnParticipationFailure(false); + + return txManager; + } + + //end method +} diff --git a/src/main/java/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.java b/src/main/java/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.java new file mode 100644 index 00000000..586fde5c --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/util/EgovIdGnrBuilder.java @@ -0,0 +1,97 @@ +package com.urpsys.basebatch.common.util; + +import javax.sql.DataSource; + +import org.egovframe.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl; +import org.egovframe.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl; + +/** + * @ClassName : EgovIdGnrBuilder.java + * @Description : IdGen 정보 builder + * + * @author : urp 인프라본부 나혁제 + * @since : 2025.01.16 + * @version : 1.0 + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일            수정자               수정내용
+ *  -------------  ------------   ---------------------
+ *   2025.01.16      나혁제               최초 생성
+ * 
+ * + */ +public class EgovIdGnrBuilder +{ + + // TODO : 기본값 설정, 예외처리 필요 + + private DataSource dataSource; + private EgovIdGnrStrategyImpl egovIdGnrStrategyImpl; + + private String preFix; + private int cipers; + private char fillChar; + + private int blockSize; + private String table; + private String tableName; + + public EgovIdGnrBuilder setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + return this; + } + + public EgovIdGnrBuilder setEgovIdGnrStrategyImpl(EgovIdGnrStrategyImpl egovIdGnrStrategyImpl) { + this.egovIdGnrStrategyImpl = egovIdGnrStrategyImpl; + return this; + } + + public EgovIdGnrBuilder setPreFix(String preFix) { + this.preFix = preFix; + return this; + } + public EgovIdGnrBuilder setCipers(int cipers) { + this.cipers = cipers; + return this; + } + public EgovIdGnrBuilder setFillChar(char fillChar) { + this.fillChar = fillChar; + return this; + } + public EgovIdGnrBuilder setBlockSize(int blockSize) { + this.blockSize = blockSize; + return this; + } + public EgovIdGnrBuilder setTable(String table) { + this.table = table; + return this; + } + public EgovIdGnrBuilder setTableName(String tableName) { + this.tableName = tableName; + return this; + } + + public EgovTableIdGnrServiceImpl build() { + + EgovTableIdGnrServiceImpl egovTableIdGnrServiceImpl = new EgovTableIdGnrServiceImpl(); + egovTableIdGnrServiceImpl.setDataSource(dataSource); + if(egovIdGnrStrategyImpl != null) { + egovIdGnrStrategyImpl = new EgovIdGnrStrategyImpl(); + egovIdGnrStrategyImpl.setPrefix(preFix); + egovIdGnrStrategyImpl.setCipers(cipers); + egovIdGnrStrategyImpl.setFillChar(fillChar); + + egovTableIdGnrServiceImpl.setStrategy(egovIdGnrStrategyImpl); + } + egovTableIdGnrServiceImpl.setBlockSize(blockSize); + egovTableIdGnrServiceImpl.setTable(table); + egovTableIdGnrServiceImpl.setTableName(tableName); + + return egovTableIdGnrServiceImpl; + } + + + +} diff --git a/src/main/java/com/urpsys/basebatch/common/util/HtmlEmailUtil.java b/src/main/java/com/urpsys/basebatch/common/util/HtmlEmailUtil.java new file mode 100644 index 00000000..ece2611a --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/util/HtmlEmailUtil.java @@ -0,0 +1,148 @@ +package com.urpsys.basebatch.common.util; + +import java.io.IOException; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeUtility; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.mail.MailException; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import org.springframework.util.StringUtils; + +import org.apache.commons.io.IOUtils; + +import lombok.extern.slf4j.Slf4j; + +/** + * Html 메일 처리에 필요한 유틸리티 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.03.20   나혁제         최초작성
+ *
+ *      
+ */ + + +@Slf4j +@Component("HtmlEmailUtil") +public class HtmlEmailUtil +{ + + @Autowired + private HtmlEmailUtil(JavaMailSender mailSender) + { + this.mailSender = mailSender; + } + + @Value("${custom.sendmail.sendEmail}") + private String strMailAddress; + + @Value("${custom.sendmail.senderName}") + private String strMailSendName; + + private static JavaMailSender mailSender; + + /** + 메일처리 기본함수 + @author 나혁제 + @since 2025.02.11 + @param : String to 받는사람 + String sj 제목 + String cn 메시지 + @return String 처리결과 + * @throws Exception + */ + public String send(String to, String sj, String cn) + { + if (StringUtils.isEmpty(to)) return "수신자 메일이 불문명합니다."; // 수신자가 없을 경우 종료 + + String strReturnErr = ""; + + try + { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper messageHelper = new MimeMessageHelper(message, false, "UTF-8"); + + messageHelper.setSubject(sj); + messageHelper.setText(cn, true); + messageHelper.setFrom(strMailAddress, strMailSendName); + + String[] toArr = to.split(","); + + messageHelper.setTo(toArr); + + mailSender.send(message); // 메일발송 + + strReturnErr = ""; + } + catch(MailException es) + { + es.printStackTrace(); + strReturnErr = es.toString(); + } + catch(Exception e) + { + e.printStackTrace(); + strReturnErr = e.toString(); + } + + return strReturnErr; + } + + public void sendMultipleMessage( String to + , String cc + , String sj + , String cn + , MultipartFile file) throws MessagingException, IOException + { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, true); + + //메일 제목 설정 + helper.setSubject(sj); + + //참조자 설정 + helper.setCc(cc); + + helper.setText(cn, false); + + helper.setFrom(strMailAddress); + + //첨부 파일 설정 + String fileName = StringUtils.cleanPath(file.getOriginalFilename()); + + helper.addAttachment( MimeUtility.encodeText(fileName, "UTF-8", "B") + , new ByteArrayResource(IOUtils.toByteArray(file.getInputStream()))); + + //수신자 개별 전송 +// for(String s : mailDto.getAddress()) { +// helper.setTo(s); +// emailSender.send(message); +// } + //수신자 한번에 전송 + helper.setTo(to); + mailSender.send(message); + log.info("mail multiple send complete."); + + + } + +} diff --git a/src/main/java/com/urpsys/basebatch/common/util/RestApiCallUtil.java b/src/main/java/com/urpsys/basebatch/common/util/RestApiCallUtil.java new file mode 100644 index 00000000..6cffd813 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/common/util/RestApiCallUtil.java @@ -0,0 +1,375 @@ +package com.urpsys.basebatch.common.util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import com.urpsys.basebatch.common.exception.CustomException; +import com.urpsys.basebatch.domain.TokenInfo; +import com.urpsys.basebatch.common.util.ConvertUtils; + +import kong.unirest.HttpRequestWithBody; +import kong.unirest.HttpResponse; +import kong.unirest.JsonNode; +import kong.unirest.Unirest; +import kong.unirest.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * Rest Api 을 호출하는 필요한 유틸리티 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.03.20 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.03.20   나혁제         최초작성
+ *
+ *      
+ */ + + +@Slf4j +@Component("RestApiCallUtil") +public class RestApiCallUtil +{ + @Value("${custom.sendkakaoTalk.serviceId}") + private String strServiceId; + + @Value("${custom.sendkakaoTalk.accessKey}") + private String strAccessKey; + + @Value("${custom.sendkakaoTalk.secretKey}") + private String strSecretKey; + + @Value("${custom.sendkakaoTalk.friendId}") + private String strFriendId; + + @Value("${custom.api_search_server}") + private String strApiSearchSvr; // API 서버 + + + @Value("${custom.api_kic_mail_server}") + private String strKicMailSvr; // KIC 메일서버 + + @Value("${custom.api_kic_msg_server}") + private String strKicMsgSvr; // KIC 메신저서버 + + /** + 네이버 클라우드 카톡 서비스 호출 + @author 나혁제 + @since 2025.03.20 + @param : TokenInfo tokenInfo + , Map bodyMap + , String strRestUrl + @return Map + * @throws CustomException + */ + public Map RestApiCallNaverCloudKaKao(String strTemplateCd, String to, String msg) throws CustomException + { + log.info(">>>>>>>>>>>>>>> RestApiCallNaverCloudKaKao <<<<<<<<<<<<<<<"); + + long timestamp = System.currentTimeMillis(); + + String strTime = timestamp+""; + + String strContentType = "application/json; charset=utf-8" ; + + String strSignature = makeSignature(strTime, strServiceId, strAccessKey, strSecretKey); + + // Header Setting Start --------------------------------- + Map headers = new HashMap<>(); + headers.put("Content-Type" , strContentType ); + headers.put("x-ncp-apigw-timestamp" , strTime ); + headers.put("x-ncp-iam-access-key" , strAccessKey ); + headers.put("x-ncp-apigw-signature-v2" , strSignature ); + // Header Setting End --------------------------------- + + log.info("headers 입력값 확인 => [{}]", headers.toString()); + + Map bodyMap = new HashMap<>(); + + bodyMap.put("plusFriendId" , "@"+strFriendId ); + bodyMap.put("templateCode" , strTemplateCd ); + + List> messagesList = new ArrayList<>(); + + Map messages = new HashMap<>(); + + messages.put("countryCode", "82"); + messages.put("to" , to); + messages.put("content" , msg); + + messagesList.add(messages); + + bodyMap.put("messages", messagesList); + + log.info("body 입력값 확인 json => [{}]", ConvertUtils.getJsonFromMap(bodyMap).toString() ); + + String strFullUrl = "https://sens.apigw.ntruss.com/alimtalk/v2/services/"+strServiceId+"/messages"; + + log.info("strFullUrl => [{}]", strFullUrl); + + HttpResponse jsonResponse = Unirest.post(strFullUrl) + .headers(headers) + .body (bodyMap) + .asJson(); + + JSONObject returnObj = jsonResponse.getBody().getObject(); + // JSONObject returnObjData = new JSONObject(); + + // String strFullReturnData = returnObj.toString(); + + // Map 변환처리 + Map returnMap = null; + + // json to Map 변환처리 + returnMap = ConvertUtils.getMapFromJSONObject(returnObj); + + log.info("전체 리턴값 => [{}]", returnMap.toString()); + + log.info("<<<<<<<<<<<<<<< RestApiCallNaverCloudKaKao >>>>>>>>>>>>>>>"); + + return returnMap; + } + + public String makeSignature(String timestamp, String strServiceId, String strAccessKey, String strSecretKey) + { + String encodeBase64String = ""; + + try + { + String space = " " ; // one space + String newLine = "\n" ; // new line + String method = "POST"; // method + String url = "/alimtalk/v2/services/"+strServiceId+"/messages" ; // url (include query string) + String accessKey = strAccessKey ; // access key id (from portal or Sub Account) + String secretKey = strSecretKey ; + + String message = new StringBuilder() + .append(method) + .append(space) + .append(url) + .append(newLine) + .append(timestamp) + .append(newLine) + .append(accessKey) + .toString(); + + SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(signingKey); + + byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8")); + encodeBase64String = Base64.encodeBase64String(rawHmac); + } + catch(Exception e) + { + e.printStackTrace(); + } + + return encodeBase64String; + } + + /** + RestApi 호출 함수 + @author 나혁제 + @since 2025.01.06 + @param : TokenInfo tokenInfo + , Map bodyMap + , String strRestUrl + @return Map + * @throws CustomException + */ + public Map RestApiCallNoAuth ( Map bodyMap + , String strRestUrl ) throws CustomException + { + log.info(">>>>>>>>>>>>>>> RestApiCallNoAuth <<<<<<<<<<<<<<<"); + + // Header Setting Start --------------------------------- + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + // Header Setting End --------------------------------- + + String strDomain = strApiSearchSvr; + String strFullUrl = strDomain + strRestUrl; + + log.info("입력값 확인 => [{}]", bodyMap.toString()); + log.info("입력값 확인 JSON => [{}]", ConvertUtils.getJsonFromMap(bodyMap)); + log.info("입력 strFullUrl => [{}]", strFullUrl); + + HttpResponse jsonResponse = Unirest.post(strFullUrl) + .headers(headers) + .body(bodyMap) + .asJson(); + + JSONObject returnObj = jsonResponse.getBody().getObject(); + + // JSONObject returnObjData = new JSONObject(); + + log.info("리턴값 확인 => [{}]", returnObj.toString()); + + /* + int iReturnStatus = (int)returnObj.get("status"); + + if(iReturnStatus != 200) + { + String strError = (String)returnObj.get("error"); + String strErrTrace = (String)returnObj.get("trace"); + + throw new CustomException("9000", strErrTrace); + } + else + { + returnObjData = returnObj.getJSONObject("data"); + log.info("리턴값 확인 => [{}]", returnObjData.toString()); + } + */ + + Map returnMap = ConvertUtils.getMapFromJSONObject(returnObj); // Map 변환처리 + + log.info("<<<<<<<<<<<<<<< RestApiCallNoAuth >>>>>>>>>>>>>>>"); + + return returnMap; + } + + /** + RestApi 호출 함수 + @author 나혁제 + @since 2025.06.11 + @param : Map bodyMap + , String strRestUrl + @return Map + * @throws CustomException + */ + public Map RestApiCallNoAuthKicMailTextHtml ( Map bodyMap + , String strRestUrl ) throws CustomException + { + log.info(">>>>>>>>>>>>>>> RestApiCallNoAuthKicMailTextHtml <<<<<<<<<<<<<<<"); + + String strDomain = strKicMailSvr; + String strFullUrl = strDomain + strRestUrl; + + log.info("입력값 확인 JSON => [{}]", ConvertUtils.getJsonFromMap(bodyMap)); + log.info("입력 strFullUrl => [{}]", strFullUrl); + + /* + HttpRequestWithBody request = Unirest.post("https://example.com/api"); + + for (Map.Entry entry : bodyMap.entrySet()) + { + // request = request.field(entry.getKey(), entry.getValue()); + + request = request.field(entry.getKey(), entry.getValue()); + } + */ + + /* + HttpResponse jsonResponse = Unirest.post(strFullUrl) + .field("email" , (String)bodyMap.get("email" )) + .field("to" , (String)bodyMap.get("to" )) + .field("subject" , (String)bodyMap.get("subject" )) + .field("content" , (String)bodyMap.get("content" )) + .field("contentType" , (String)bodyMap.get("contentType")) + .asJson(); + */ + + HttpResponse jsonResponse = Unirest.post(strFullUrl) + .fields(bodyMap) + .asJson(); + + JSONObject returnObj = jsonResponse.getBody().getObject(); + + log.info("리턴값 확인 => [{}]", returnObj.toString()); + + Map returnMap = ConvertUtils.getMapFromJSONObject(returnObj); // Map 변환처리 + + log.info("<<<<<<<<<<<<<<< RestApiCallNoAuthKicMailTextHtml >>>>>>>>>>>>>>>"); + + return returnMap; + } + + /** + RestApi 호출 함수 + @author 나혁제 + @since 2025.01.06 + @param : TokenInfo tokenInfo + , Map bodyMap + , String strRestUrl + @return Map + * @throws CustomException + */ + public Map RestApiCallNoAuthKicMsg ( Map bodyMap + , String strRestUrl ) throws CustomException + { + log.info(">>>>>>>>>>>>>>> RestApiCallNoAuthKicMsg <<<<<<<<<<<<<<<"); + + // Header Setting Start --------------------------------- + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + // Header Setting End --------------------------------- + + String strDomain = strKicMsgSvr; + String strFullUrl = strDomain + strRestUrl; + + log.info("입력값 확인 => [{}]", bodyMap.toString()); + log.info("입력값 확인 JSON => [{}]", ConvertUtils.getJsonFromMap(bodyMap)); + log.info("입력 strFullUrl => [{}]", strFullUrl); + + HttpResponse jsonResponse = Unirest.post(strFullUrl) + .headers(headers) + .body(bodyMap) + .asJson(); + + JSONObject returnObj = jsonResponse.getBody().getObject(); + + // JSONObject returnObjData = new JSONObject(); + + log.info("리턴값 확인 => [{}]", returnObj.toString()); + + /* + int iReturnStatus = (int)returnObj.get("status"); + + if(iReturnStatus != 200) + { + String strError = (String)returnObj.get("error"); + String strErrTrace = (String)returnObj.get("trace"); + + throw new CustomException("9000", strErrTrace); + } + else + { + returnObjData = returnObj.getJSONObject("data"); + log.info("리턴값 확인 => [{}]", returnObjData.toString()); + } + */ + + Map returnMap = ConvertUtils.getMapFromJSONObject(returnObj); // Map 변환처리 + + log.info("<<<<<<<<<<<<<<< RestApiCallNoAuthKicMsg >>>>>>>>>>>>>>>"); + + return returnMap; + } + + + + + + +} diff --git a/src/main/java/com/urpsys/basebatch/config/EgovConfigAppIdGen.java b/src/main/java/com/urpsys/basebatch/config/EgovConfigAppIdGen.java new file mode 100644 index 00000000..f0dfcadc --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/EgovConfigAppIdGen.java @@ -0,0 +1,1946 @@ +package com.urpsys.basebatch.config; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.urpsys.basebatch.common.util.EgovIdGnrBuilder; + +import org.egovframe.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl; +import org.egovframe.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl; + +/** + * @ClassName : EgovConfigAppIdGen.java + * @Description : IdGeneration 설정 + * + * @author : urp 인프라본부 나혁제 + * @since : 2025.01.16 + * @version : 1.0 + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일            수정자          수정내용
+ *  -------------  ------------   ---------------------
+ *   2025.01.16    나혁제              최초 생성
+ * 
+ * + */ +@Configuration +public class EgovConfigAppIdGen +{ + @Autowired + @Qualifier("primaryDataSource") + DataSource dataSource; + + @Autowired + @Qualifier("primaryDataSource") + DataSource egovDataSource; + + // 구현 방법 1: + + /** + * 첨부파일 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovFileIdGnrService() { + EgovTableIdGnrServiceImpl egovTableIdGnrServiceImpl = new EgovTableIdGnrServiceImpl(); + egovTableIdGnrServiceImpl.setDataSource(dataSource); + egovTableIdGnrServiceImpl.setStrategy(fileStrategy()); + egovTableIdGnrServiceImpl.setBlockSize(10); + egovTableIdGnrServiceImpl.setTable("IDS"); + egovTableIdGnrServiceImpl.setTableName("FILE_ID"); + return egovTableIdGnrServiceImpl; + } + + /** + * 첨부파일 ID Generation Strategy Config + * @return + */ + private EgovIdGnrStrategyImpl fileStrategy() { + EgovIdGnrStrategyImpl egovIdGnrStrategyImpl = new EgovIdGnrStrategyImpl(); + egovIdGnrStrategyImpl.setPrefix("FILE_"); + egovIdGnrStrategyImpl.setCipers(15); + egovIdGnrStrategyImpl.setFillChar('0'); + return egovIdGnrStrategyImpl; + } + + + // 구현 방법 2: EgovIdGnrStrategyImpl 사용시 사용 가능 + + /** + * 게시판마스터 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBBSMstrIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(dataSource).setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("IDS") + .setTableName("BBS_ID") + .setPreFix("BBSMSTR_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + // + /** 게시판템플릿 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovTmplatIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(dataSource).setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("IDS") + .setTableName("TMPLAT_ID") + .setPreFix("TMPLAT_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 부서일정 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl deptSchdulManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(dataSource).setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("IDS") + .setTableName("SCHDUL_ID") + .setPreFix("SCHDUL_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 위키북마크 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovWikiBookmarkIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("WIKI_ID") + .setPreFix("WIKI") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 지식정보제공/지식정보요청 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRequestOfferIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("KNO_ID2") + .setPreFix("KNO_ID2") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** RSS관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRssTagManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RSS_ID") + .setPreFix("RSS_ID") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 쪽지관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNoteManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NOTE_ID") + .setPreFix("NOTE_ID") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 보낸쪽지함관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNoteTrnsmitIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NOTE_TRNSMIT_ID") + .setPreFix("NOTE_TR") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 받은쪽지함관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNoteRecptnIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NOTE_RECPTN_ID") + .setPreFix("NOTE_RE") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 시스템연계 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSystemCntcIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CNTC_ID") + .setPreFix("CNTC") + .setCipers(4) + .setFillChar('0') + .build(); + } + + /** 연계기관 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCntcInsttIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("INSTT_ID") + .setPreFix("INS") + .setCipers(5) + .setFillChar('0') + .build(); + } + + /** 연계시스템 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCntcSystemIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SYS_ID") + .setPreFix("SYS") + .setCipers(5) + .setFillChar('0') + .build(); + } + + /** 연계서비스 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCntcServiceIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SVC_ID") + .setPreFix("SVC") + .setCipers(5) + .setFillChar('0') + .build(); + } + + /** 연계메시지 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCntcMessageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CNTC_MESSAGE_ID") + .setPreFix("MSG") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 연계메시지항목 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCntcMessageItemIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ITEM_ID") + .setPreFix("ITM") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 기관코드 수신 작업 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovInsttCodeRecptnIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("INSTT_CODE_OPERT") + .build(); + } + + /** 행정코드 수신 작업 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovAdministCodeRecptnIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ADMIN_CODE_OPERT") + .build(); + } + + /** 팝업창관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovPopupManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("POPUP_ID") + .setPreFix("POPUP_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 최근검색어관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSrchwrdManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SRCHWRD_MANAGEID") + .setPreFix("SRCMGR_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 최근검색어관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSrchwrdIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SRCHWRD_ID") + .setPreFix("SRC_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 행정전문용어사전 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovAdministrationWordIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ADMINIST_WORD_ID") + .setPreFix("ADMINIST_") + .setCipers(11) + .setFillChar('0') + .build(); + } + + /** 개정정보보호정책확인 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovIndvdlInfoPolicyIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("INDVDL_INFO_ID") + .setPreFix("INDVDL_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 통합링크 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovUnityLinkIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("UNITY_LINK_ID") + .setPreFix("ULINK_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 온라인메뉴얼 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovOnlineMenualIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ONLINE_MUL_ID") + .setPreFix("OMUL_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** 온라인POLL관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovOnlinePollManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("POLL_MGR_ID") + .setPreFix("POLLMGR_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 온라인POLL항목 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovOnlinePollItemIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("POLL_IEM_ID") + .setPreFix("POLLIEM_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 온라인POLL결과 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovOnlinePollResultIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("POLL_RUT_ID") + .setPreFix("POLLRUT_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 삭제예정 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("ids") + .setTableName("COMTNWORDDICARYINFO") + .setPreFix("SAMPLE-") + .setCipers(5) + .setFillChar('0') + .build(); + } + + /** 게시판용 NTT_ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNttIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NTT_ID") + //.setPreFix("SAMPLE-") //TODO : 입력하지 않았을때 처리 필요 + .setCipers(20) + .setFillChar('0') + .build(); + } + + /** Clb ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovClbIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CLB_ID") + .setPreFix("CLB_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 커뮤니티 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCmmntyIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CMMNTY_ID") + .setPreFix("CMMNTY_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 커뮤니티 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovUsrCnfrmIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("USRCNFRM_ID") + .setPreFix("USRCNFRM_") + .setCipers(11) + .setFillChar('0') + .build(); + } + + /** 메일 메세지 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMailMsgIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("MAILMSG_ID") + .setPreFix("MAILMSG_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** RestDe NTT_ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRestDeIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RESTDE_ID") + .build(); + } + + /** WordDicary ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovWordDicaryIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("WORD_ID") + .setPreFix("WORDDICARY_") + .setCipers(9) + .setFillChar('0') + .build(); + } + + /** 회의관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMgtIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("MTG_ID") + .setPreFix("MTG_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 행사/이벤트/켐페인 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovEventInfoIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("EVENTINFO_ID") + .setPreFix("EVENT_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 외부인사정보 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovExtrlhrInfoIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("EXTRLHRINFO_ID") + .setPreFix("EXTRLHR_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 설문템플릿 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovQustnrTmplatManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QUSTNRTMPLA_ID") + .setPreFix("QTMPLA_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 설문관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovQustnrManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QUSTNRTMPLA_ID") + .setPreFix("QMANAGE_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 설문문항 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovQustnrQestnManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QUSTNRQESTN_ID") + .setPreFix("QQESTN_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 설문항목 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovQustnrItemManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QESTNR_QESITM_ID") + .setPreFix("QESITM_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 설문응답자정보 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl qustnrRespondManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QESTNR_RPD_ID") + .setPreFix("QRPD_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** 설문조사 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl qustnrRespondInfoIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QESRSPNS_ID") + .setPreFix("QRSPNS_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 일정관리 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl diaryManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("DIARY_ID") + .setPreFix("DIARY_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** SiteManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSiteManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SITE_ID") + .setPreFix("SITE_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** RecomendSiteManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRecomendSiteManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RECOMEND_SITE_ID") + .setPreFix("RECOMEND_") + .setCipers(11) + .setFillChar('0') + .build(); + } + + /** HPCMManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovHpcmManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("HPCM_ID") + .setPreFix("HPCM_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** NewsManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovFaqManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("FAQ_ID") + .setPreFix("FAQ_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** FaqManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNewsManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NEWS_ID") + .setPreFix("NEWS_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** 명함 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNcrdIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NCRD_ID") + .setPreFix("NCRD_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** 주소록 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovAdbkIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ADBK_ID") + .setPreFix("ADBK_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** AdbkUser ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovAdbkUserIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ADBKUSER_ID") + .setPreFix("ADBKUSER_") + .setCipers(11) + .setFillChar('0') + .build(); + } + + /** 그룹 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovGroupIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("GROUP_ID") + .setPreFix("GROUP_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 롤 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRoleIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ROLE_ID") + .setPreFix("") + .setCipers(6) + .setFillChar('0') + .build(); + } + + /** StplatManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovStplatManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("USE_STPLAT_ID") + .setPreFix("STPLAT_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** CpyrhtPrtcPolicy ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCpyrhtPrtcPolicyIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CPYRHT_ID") + .setPreFix("CPYRHT_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** Qna ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovQnaManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("QA_ID") + .setPreFix("QA_") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** Cnslt ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCnsltManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CNSLT_ID") + .setPreFix("CNSLT_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** Login ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovLoginLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("LOGINLOG_ID") + .setPreFix("LOGIN_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** System Log ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSysLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SYSLOG_ID") + .setPreFix("SYSLOG_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** Web Log. ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovWebLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("WEBLOG_ID") + .setPreFix("WEBLOG_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** Trsmrcv. ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovTrsmrcvLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("TRSMRCVLOG_ID") + .setPreFix("TRSMRCV_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 배너. ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBannerIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BANNER_ID") + .setPreFix("BANNER_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 로그인화면이미지. ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovLoginScrinImageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("LSI_ID") + .setPreFix("LSI_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 메인화면이미지. ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMainImageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("MSI_ID") + .setPreFix("MSI_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 인터넷서비스안내 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovIntnetSvcGuidanceIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ISG_ID") + .setPreFix("ISG_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 마이페이지 컨텐츠 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovIndvdlPgeIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CNTNTS_ID") + .setPreFix("C") + .setCipers(19) + .setFillChar('0') + .build(); + } + + /** 보고서통계 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovReprtStatsIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RS_ID") + .setPreFix("RS_") + .setCipers(3) + .setFillChar('0') + .build(); + } + + /** 자료이용현황통계 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovDtaUseStatsIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("DUS_ID") + .setPreFix("DUS_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 자료이용현황통계 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSmsIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SMS_ID") + .setPreFix("SMS_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** Scrap ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovScrapIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SCRAP_ID") + .setPreFix("SCRIP_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 부서 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovDeptManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ORGNZT_ID") + .setPreFix("ORGNZT_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** 네트워크 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNtwrkIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NTWRK_ID") + .setPreFix("NID_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 서버장비 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovServerEqpmnIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SEVEQ_ID") + .setPreFix("SVE_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 서버 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovServerIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SERVER_ID") + .setPreFix("SRV_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 장애 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovTroblIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("TROBL_ID") + .setPreFix("TBM_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 동기화대상 서버 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovSynchrnServerIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SYNCHRNSERVER_ID") + .setPreFix("SSY_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 회의실관리 서버 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMtgPlaceManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("MTG_PLACE_ID") + .setPreFix("MTGP_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** 회의실예약 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMtgPlaceResveIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RESVE_ID") + .setPreFix("RESVE_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 행사 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovEventManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("EVENT_ID") + .setPreFix("EVENT_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 행사접수 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovEventAtdrnIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("APPLCNT_ID") + .setPreFix("APPLCNT_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 포상 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRwardManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RWARD_ID") + .setPreFix("RWARD_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 경조사 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovCtsnnManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("CTSNN_ID") + .setPreFix("RWARD_") + .setCipers(14) + .setFillChar('0') + .build(); + } + + /** 기념일 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovAnnvrsryManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ANN_ID") + .setPreFix("ANN_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 간부일정 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovLeaderSchdulIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("LEADER_SCHDUL_ID") + .setPreFix("LDSCHDUL_") + .setCipers(11) + .setFillChar('0') + .build(); + } + + /** 부서업무함 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovDeptJobBxIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("DEPT_JOB_BX_ID") + .setPreFix("DX_") + .setCipers(3) + .setFillChar('0') + .build(); + } + + /** 부서업무 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovDeptJobIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("DEPT_JOB_ID") + .setPreFix("DEPTJOB_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 주간/월간 보고 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovWikMnthngReprtIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("WIKMNTHNG_REPRT") + .setPreFix("WR") + .setCipers(4) + .setFillChar('0') + .build(); + } + + /** 메모 할일 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMemoTodoIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("MEMO_TODO_ID") + .setPreFix("MEMOTODO_") + .setCipers(11) + .setFillChar('0') + .build(); + } + + /** 메모 보고 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovMemoReprtIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("MEMO_REPRT") + .setPreFix("MR") + .setCipers(4) + .setFillChar('0') + .build(); + } + + /** 약식 결재 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovInfrmlSanctnIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("INFRML_SANCTN") + .setPreFix("SANCTN_") + .setCipers(13) + .setFillChar('0') + .build(); + } + + /** DB서비스모니터링 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovDbMntrngLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("DB_MNTRNG_LOG_ID") + .setPreFix("") + .setCipers(20) + .setFillChar('0') + .build(); + } + + /** DB송수신모니터링 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovTrsmrcvMntrngLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("TR_MNTRNG_LOG_ID") + .setPreFix("") + .setCipers(20) + .setFillChar('0') + .build(); + } + + /** 배치작업 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBatchOpertIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BATCH_OPERT_ID") + .setPreFix("BAT") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 배치스케줄 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBatchSchdulIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BATCH_SCHDUL_ID") + .setPreFix("BSC") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 배치결과 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBatchResultIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BATCH_RESULT_ID") + .setPreFix("BRT") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 파일시스템모니터링 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovFileSysMntrngIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("FILESYS_MNTRNG") + .setPreFix("FILESYS_") + .setCipers(12) + .setFillChar('0') + .build(); + } + + /** 네트워크서비스모니터링 로그 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNtwrkSvcMntrngLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NTWRKSVC_LOGID") + .setPreFix("") + .setCipers(20) + .setFillChar('0') + .build(); + } + + /** 파일시스템모니터링 로그 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovFileSysMntrngLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("FILESYS_LOGID") + .setPreFix("") + .setCipers(20) + .setFillChar('0') + .build(); + } + + /** 프록시서비스 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovProxySvcIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("PROXYSVC_ID") + .setPreFix("PXY_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** 프록시Log ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovProxyLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("PROXYLOG_ID") + .setPreFix("PLG_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** knoManage ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovDamManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("DAM_ID") + .setPreFix("DMID_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** 백업작업 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBackupOpertIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BACKUP_OPERT_ID") + .setPreFix("BAK") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 백업결과 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBackupResultIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BACKUP_RESULT_ID") + .setPreFix("BRT") + .setCipers(17) + .setFillChar('0') + .build(); + } + + /** 서버자원 모니터링 ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovServerResrceMntrngLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("SVCRESMONTLOG_ID") + .setPreFix("LOG_") + .setCipers(16) + .setFillChar('0') + .build(); + } + + /** HttpMon ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovHttpManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("HTTP_ID") + .setPreFix("HTTP_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** HttpMonLog ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovHttpLogManageIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("HTTL_ID") + .setPreFix("HTTL_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** HttpMonLog ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovProcessMonIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("PROC_ID") + .setPreFix("PROC_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** ProcessMonLog ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovProcessMonLogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("PROL_ID") + .setPreFix("PROL_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** ProcessMonLog ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovBlogIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("BLOG_ID") + .setPreFix("BLOG_") + .setCipers(15) + .setFillChar('0') + .build(); + } + + /** ProcessMonLog ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovAnswerNoGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("ANSWER_NO") + .setPreFix("") + .setCipers(20) + .setFillChar('0') + .build(); + } + + + + + /** 개인화메뉴 id + * 권오제 추가 + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl prsnlPortletIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("PORTLET_ID") + .setPreFix("PORTLET_") + .setCipers(10) + .setFillChar('0') + .build(); + } + + /** 포틀릿 이미지 id + * 2023.01.31 권오제 추가 + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl portletImgIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("PORTLET_IMG_ID") + .setPreFix("PORTLET_IMG_") + .setCipers(8) + .setFillChar('0') + .build(); + } + + /** 서비스데스크 인스던트ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovIncientIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("INCI_ID") + .setPreFix("INC_") + .setCipers(6) + .setFillChar('0') + .build(); + } + + /** 보고서ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovRptIdGnrService() { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("RPT_ID") + .setPreFix("RPT_") + .setCipers(6) + .setFillChar('0') + .build(); + } + + /** 메일카톡 고유ID Generation Config + * @return + */ + @Bean(destroyMethod = "destroy") + public EgovTableIdGnrServiceImpl egovNtcnEsntlIdGnrService() + { + return new EgovIdGnrBuilder().setDataSource(egovDataSource) + .setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl()) + .setBlockSize(10) + .setTable("COMTECOPSEQ") + .setTableName("NTCN_ESNTL") + .setPreFix("NTCN_") + .setCipers(6) + .setFillChar('0') + .build(); + } + + + + + + +} diff --git a/src/main/java/com/urpsys/basebatch/config/EgovMessageSource.java b/src/main/java/com/urpsys/basebatch/config/EgovMessageSource.java new file mode 100644 index 00000000..58cbc5af --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/EgovMessageSource.java @@ -0,0 +1,67 @@ +package com.urpsys.basebatch.config; + +import java.util.Locale; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; + +/** + * 메시지 리소스 사용을 위한 MessageSource 인터페이스 및 ReloadableResourceBundleMessageSource 클래스의 구현체 + * + * @author 나혁제 + * @since 2025.01.06 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.01.06   나혁제         최초작성
+ *
+ * 
+*/ + +// @Configuration +public class EgovMessageSource extends ReloadableResourceBundleMessageSource implements MessageSource +{ + + private ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource; + + /** + * getReloadableResourceBundleMessageSource() + * @param reloadableResourceBundleMessageSource - resource MessageSource + * @return ReloadableResourceBundleMessageSource + */ + public void setReloadableResourceBundleMessageSource(ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource) + { + this.reloadableResourceBundleMessageSource = reloadableResourceBundleMessageSource; + } + + /** + * getReloadableResourceBundleMessageSource() + * @return ReloadableResourceBundleMessageSource + */ + public ReloadableResourceBundleMessageSource getReloadableResourceBundleMessageSource() + { + return reloadableResourceBundleMessageSource; + } + + /** + * 정의된 메세지 조회 + * @param code - 메세지 코드 + * @return String + */ + public String getMessage(String code) + { + // return getReloadableResourceBundleMessageSource().getMessage(code, null, Locale.getDefault()); + // 2025.01.24 나혁제 현재는 korea 버전만 수용 + return getReloadableResourceBundleMessageSource().getMessage(code, null, Locale.KOREA); + } + + + +} diff --git a/src/main/java/com/urpsys/basebatch/config/EncryptConfig.java b/src/main/java/com/urpsys/basebatch/config/EncryptConfig.java new file mode 100644 index 00000000..5004dcde --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/EncryptConfig.java @@ -0,0 +1,39 @@ +package com.urpsys.basebatch.config; + +import java.io.IOException; +import java.security.InvalidKeyException; + +import com.urpsys.basebatch.common.crypto.Aes256Cipher; + +import org.apache.commons.codec.DecoderException; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 암호화 유틸리티를 등록하는 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +@Configuration +public class EncryptConfig +{ + @Bean(name="aes256Cipher") + public Aes256Cipher aes256Cipher() throws InvalidKeyException, IOException, DecoderException + { + return new Aes256Cipher(); + } +} diff --git a/src/main/java/com/urpsys/basebatch/config/KicInsaDbConfig.java b/src/main/java/com/urpsys/basebatch/config/KicInsaDbConfig.java new file mode 100644 index 00000000..455047a0 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/KicInsaDbConfig.java @@ -0,0 +1,126 @@ +package com.urpsys.basebatch.config; + +import java.io.IOException; +import java.sql.Connection; + +import javax.sql.DataSource; +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.urpsys.basebatch.common.crypto.Aes256Cipher; +import com.urpsys.basebatch.common.exception.CustomException; +import com.urpsys.basebatch.common.util.DataSourceUtil; + +/** + * kic insa db config 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.04 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.04    나혁제         최초작성
+ *
+ * 
+ */ + +@Configuration +@EnableTransactionManagement +@MapperScan( value={"com.urpsys.kicinsa"} , sqlSessionFactoryRef="kicinsaSqlSessionFactory") +public class KicInsaDbConfig +{ + @Autowired + private Environment env; + + @Autowired + private Aes256Cipher aes256Cipher; + + @Value("${custom.client}") + private String strClient; // 고객확인 + + /** + * 데이터소스 등록하는 메소드 + * @return + */ + @Bean(name="kicinsaDataSource") + public DataSource kicinsaDataSource() + { + DataSource dataSource = null; + + if(strClient.equals("kic")) + { + dataSource = new LazyConnectionDataSourceProxy(DataSourceUtil.createDataSource("kicinsadb", env, aes256Cipher)); + } + else + { + dataSource = new LazyConnectionDataSourceProxy(DataSourceUtil.createDataSource("primarydb", env, aes256Cipher)); + } + + return dataSource; + // return new LazyConnectionDataSourceProxy(DataSourceUtil.createDataSource("kicinsadb", env, aes256Cipher)); + } + + /** + * sqlsessionfactory 등록하는 메소드 + * + * @param dataSource + * @param context + * @return + * @throws SchedulerException + * @throws IOException + */ + @Bean(name="kicinsaSqlSessionFactory") + public SqlSessionFactory kicinsaSqlSessionFactory(@Qualifier("kicinsaDataSource") DataSource dataSource, ApplicationContext context) + throws CustomException, IOException + { + SqlSessionFactory sqlSessionFactory = DataSourceUtil.createSqlSessionFactory( dataSource + , context.getResource ("classpath:mapper/kicinsadb/config/MybatisConfig.xml") + , context.getResources("classpath:mapper/kicinsadb/sqlmap/**/*Mapper*.xml") + ); + + sqlSessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.SIMPLE); + + return sqlSessionFactory; + } + + /** + * sqlsessiontemplate 등록하는 메소드 + * @param primarySqlSessionFactory + * @return + */ + @Bean("kicinsaSqlSessionTemplate") + public SqlSessionTemplate mainSqlSessionTemplate(@Qualifier("kicinsaSqlSessionFactory") SqlSessionFactory kicinsaSqlSessionFactory) + { + return new SqlSessionTemplate(kicinsaSqlSessionFactory); + } + + /** + * 트랜잭션 매니저 등록하는 메소드 + * @param dataSource + * @return + */ + @Bean(name="kicinsaTxManager") + public PlatformTransactionManager kicinsaTxManager(@Qualifier("kicinsaDataSource") DataSource dataSource) + { + return DataSourceUtil.createTxManager(dataSource); + } +} + diff --git a/src/main/java/com/urpsys/basebatch/config/MailConfig.java b/src/main/java/com/urpsys/basebatch/config/MailConfig.java new file mode 100644 index 00000000..a80eb6f4 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/MailConfig.java @@ -0,0 +1,85 @@ +package com.urpsys.basebatch.config; + +import java.util.Properties; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.JavaMailSenderImpl; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.urpsys.basebatch.common.crypto.Aes256Cipher; + +import lombok.extern.slf4j.Slf4j; + +/** + * html 메일 설정 클리스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.03.20    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +public class MailConfig +{ + @Value("${custom.sendmail.id}") + private String strMailId; + + @Value("${custom.sendmail.password}") + private String strMailPass; + + @Value("${custom.sendmail.port}") + private int strMailPort; + + @Value("${custom.sendmail.host}") + private String strMailHost; + + @Value("${custom.sendmail.socketFactory-class}") + private String strSocketFactoryClass; + + @Autowired + private Aes256Cipher aes256Cipher; + + Properties pt = new Properties(); + + @Bean + public JavaMailSender javaMailService() + { + JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); + + javaMailSender.setHost (this.strMailHost ); + javaMailSender.setUsername (aes256Cipher.decrypt(this.strMailId) ); + javaMailSender.setPassword (aes256Cipher.decrypt(this.strMailPass) ); + javaMailSender.setPort (this.strMailPort ); + + pt.put("mail.smtp.socketFactory.port" , this.strMailPort); + pt.put("mail.smtp.auth" , true); + pt.put("mail.smtp.starttls.enable" , true); + pt.put("mail.smtp.starttls.required" , true); + pt.put("mail.smtp.socketFactory.fallback", false); + + // pt.put("mail.smtp.socketFactory.class" , this.strSocketFactoryClass); // SSL 접속처리 + + javaMailSender.setJavaMailProperties(pt); + javaMailSender.setDefaultEncoding("UTF-8"); + + return javaMailSender; + } + +} diff --git a/src/main/java/com/urpsys/basebatch/config/MessageConfig.java b/src/main/java/com/urpsys/basebatch/config/MessageConfig.java new file mode 100644 index 00000000..0beb94d2 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/MessageConfig.java @@ -0,0 +1,112 @@ +package com.urpsys.basebatch.config; + +import java.util.Locale; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.i18n.SessionLocaleResolver; + +import com.urpsys.basebatch.config.EgovMessageSource; + +/** + * 메시지 리소스 사용을 위한 MessageSource 인터페이스 및 ReloadableResourceBundleMessageSource 클래스의 구현체 + * + * @author urp 인프라본부 나혁제 + * @since 2025.01.06 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.01.06   나혁제         최초작성
+ *
+ * 
+ */ + +@Configuration +public class MessageConfig implements WebMvcConfigurer +{ + + /** + * 메세지 소스를 생성한다. + */ + @Bean + public ReloadableResourceBundleMessageSource messageSource() + { + + ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource(); + + source.addBasenames("classpath:/messages/message-common"); + source.addBasenames("classpath:/messages/urp/message"); + + // 기본 인코딩을 지정한다. + source.setDefaultEncoding("UTF-8"); + + // 프로퍼티 파일의 변경을 감지할 시간 간격을 지정한다. + source.setCacheSeconds(60); + + // 없는 메세지일 경우 예외를 발생시키는 대신 코드를 기본 메세지로 한다. + source.setUseCodeAsDefaultMessage(true); + source.setFallbackToSystemLocale(false); + + return source; + } + + /** + * 변경된 언어 정보를 기억할 로케일 리졸버를 생성한다. + * 여기서는 세션에 저장하는 방식을 사용한다. + * @return + */ + @Bean + public SessionLocaleResolver localeResolver() + { + return new SessionLocaleResolver(); + } + + /** + * 언어 변경을 위한 인터셉터를 생성한다. + */ + @Bean + public LocaleChangeInterceptor localeChangeInterceptor() + { + LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor(); + interceptor.setParamName("lang"); + return interceptor; + } + + /** + * 인터셉터를 등록한다. + */ + @Override + public void addInterceptors(InterceptorRegistry registry) + { + registry.addInterceptor(localeChangeInterceptor()); + } + + /** + * @return [Resource 설정] 메세지 소스 등록 + */ + @Bean + public EgovMessageSource egovMessageSource() + { + EgovMessageSource egovMessageSource = new EgovMessageSource(); + egovMessageSource.setReloadableResourceBundleMessageSource(messageSource()); + return egovMessageSource; + } + + + + + + + +} + diff --git a/src/main/java/com/urpsys/basebatch/config/PrimaryDbConfig.java b/src/main/java/com/urpsys/basebatch/config/PrimaryDbConfig.java new file mode 100644 index 00000000..2e827d1b --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/PrimaryDbConfig.java @@ -0,0 +1,113 @@ +package com.urpsys.basebatch.config; + +import java.io.IOException; +import java.sql.Connection; + +import javax.sql.DataSource; +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.env.Environment; +import org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.urpsys.basebatch.common.crypto.Aes256Cipher; +import com.urpsys.basebatch.common.exception.CustomException; +import com.urpsys.basebatch.common.util.DataSourceUtil; + +/** + * primary db config 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +@Configuration +@EnableTransactionManagement +@MapperScan( value={"com.urpsys.basebatch","com.urpsys.itmsbatch"} + , sqlSessionFactoryRef="primarySqlSessionFactory") +public class PrimaryDbConfig +{ + @Autowired + private Environment env; + + @Autowired + private Aes256Cipher aes256Cipher; + + /** + * 데이터소스 등록하는 메소드 + * @return + */ + @Bean(name="primaryDataSource") + public DataSource primaryDataSource() + { + return new LazyConnectionDataSourceProxy(DataSourceUtil.createDataSource("primarydb", env, aes256Cipher)); + } + + /** + * sqlsessionfactory 등록하는 메소드 + * + * @param dataSource + * @param context + * @return + * @throws SchedulerException + * @throws IOException + */ + @Bean(name="primarySqlSessionFactory") + public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource, ApplicationContext context) + throws CustomException, IOException + { + SqlSessionFactory sqlSessionFactory = DataSourceUtil.createSqlSessionFactory( dataSource + , context.getResource ("classpath:mapper/primarydb/config/MybatisConfig.xml") + , context.getResources("classpath:mapper/primarydb/sqlmap/**/*Mapper*.xml") + ); + + sqlSessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.SIMPLE); + + return sqlSessionFactory; + } + + /** + * sqlsessiontemplate 등록하는 메소드 + * @param primarySqlSessionFactory + * @return + */ + @Bean("primarySqlSessionTemplate") + public SqlSessionTemplate mainSqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory primarySqlSessionFactory) + { + return new SqlSessionTemplate(primarySqlSessionFactory); + } + + /** + * 트랜잭션 매니저 등록하는 메소드 + * @param dataSource + * @return + */ + @Bean(name="primaryTxManager") + @Primary + public PlatformTransactionManager primaryTxManager(@Qualifier("primaryDataSource") DataSource dataSource) + { + return DataSourceUtil.createTxManager(dataSource); + } +} + diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/AutoWiringSpringBeanJobFactory.java b/src/main/java/com/urpsys/basebatch/config/quartz/AutoWiringSpringBeanJobFactory.java new file mode 100644 index 00000000..0ad5723f --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/quartz/AutoWiringSpringBeanJobFactory.java @@ -0,0 +1,47 @@ +package com.urpsys.basebatch.config.quartz; + +import org.quartz.spi.TriggerFiredBundle; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.AutowireCapableBeanFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.scheduling.quartz.SpringBeanJobFactory; + +/** + * 시스템에서 사용중인 Bean 수집 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +public class AutoWiringSpringBeanJobFactory extends SpringBeanJobFactory implements ApplicationContextAware +{ + private transient AutowireCapableBeanFactory beanFactory; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException + { + beanFactory = applicationContext.getAutowireCapableBeanFactory(); + } + + @Override + protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception + { + final Object job = super.createJobInstance(bundle); + beanFactory.autowireBean(job); + return job; + } +} + diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java new file mode 100644 index 00000000..4a0e0778 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java @@ -0,0 +1,123 @@ +package com.urpsys.basebatch.config.quartz; + +import java.io.IOException; +import java.util.Properties; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.config.PropertiesFactoryBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; + +import com.urpsys.basebatch.common.crypto.Aes256Cipher; +import com.urpsys.basebatch.common.util.CommonUtil; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * Quartz 설정 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see : https://pooney.tistory.com/99#article-17--qrtz_cron_triggers + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +@Configuration +@Slf4j +public class QuartzConfig +{ + @Autowired + private Aes256Cipher aes256Cipher; + + private final DataSource dataSource; + private final ApplicationContext applicationContext; + private final PlatformTransactionManager platformTransactionManager; + + public QuartzConfig( @Qualifier("primaryDataSource") DataSource dataSource + , ApplicationContext applicationContext + , @Qualifier("primaryTxManager") PlatformTransactionManager platformTransactionManager + ) + { + this.dataSource = dataSource; + this.applicationContext = applicationContext; + this.platformTransactionManager = platformTransactionManager; + } + + /* + public QuartzConfig(@Qualifier("primaryDataSource") DataSource dataSource) { + this.dataSource = dataSource; + applicationContext = null; + platformTransactionManager = null; + } + */ + + @Bean + public SchedulerFactoryBean schedulerFactoryBean() + { + SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); + + AutoWiringSpringBeanJobFactory autoWiringSpringBeanJobFactory = new AutoWiringSpringBeanJobFactory(); + + autoWiringSpringBeanJobFactory.setApplicationContext(applicationContext); + + schedulerFactoryBean.setJobFactory (autoWiringSpringBeanJobFactory); + schedulerFactoryBean.setDataSource (dataSource); + schedulerFactoryBean.setOverwriteExistingJobs (true); + schedulerFactoryBean.setAutoStartup (true); + schedulerFactoryBean.setTransactionManager (platformTransactionManager); + schedulerFactoryBean.setQuartzProperties (quartzProperties()); + + return schedulerFactoryBean; + } + + private Properties quartzProperties() + { + String activeProfile = (CommonUtil.nvl(System.getProperty("spring.profiles.active"))); + + PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); + + propertiesFactoryBean.setLocation(new ClassPathResource("quartz-"+activeProfile+".properties")); + + Properties properties = null; + + + + try + { + propertiesFactoryBean.afterPropertiesSet(); + properties = propertiesFactoryBean.getObject(); + + String strDbUser = aes256Cipher.decrypt((String)properties.get("org.quartz.dataSource.pooney.user")); + String strDbPassword = aes256Cipher.decrypt((String)properties.get("org.quartz.dataSource.pooney.password")); + + properties.setProperty("org.quartz.dataSource.pooney.user" , strDbUser ); + properties.setProperty("org.quartz.dataSource.pooney.password", strDbPassword ); + + // System.out.println("자 봅시다 =>"+ properties.get("org.quartz.dataSource.pooney.user") ); + // System.out.println("자 봅시다 =>"+ properties.get("org.quartz.dataSource.pooney.password") ); + } + catch (IOException e) + { + log.error("quartzProperties parse error : {}", e); + } + return properties; + } +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfigService.java b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfigService.java new file mode 100644 index 00000000..e486acdd --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfigService.java @@ -0,0 +1,162 @@ +package com.urpsys.basebatch.config.quartz; + + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; + +import org.quartz.CronScheduleBuilder; +import org.quartz.Job; +import org.quartz.JobBuilder; +import org.quartz.JobDataMap; +import org.quartz.JobDetail; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.Trigger; +import org.quartz.TriggerBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; + +import com.urpsys.basebatch.service.QuartzService; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * Job 및 트리거 설정 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + + +@Slf4j +@Configuration +@RequiredArgsConstructor +public class QuartzConfigService +{ + private final Scheduler scheduler; + + @Autowired + QuartzService quartzService; + + @PostConstruct + public void init() + { + try + { + //스케줄러 초기화 -> DB도 CLAER + scheduler.clear(); + + //Job 리스너 등록 + scheduler.getListenerManager().addJobListener(new QuartzJobListner()); + + //Trigger 리스너 등록 + scheduler.getListenerManager().addTriggerListener(new QuartzTriggerListener()); + + // DB 작업처리로 변경 + List> jobList = quartzService.selectSchedJobInfo(); + + for(LinkedHashMap tempJob : jobList) + { + List> jobParamList = quartzService.selectSchedJobParamInfo((String)tempJob.get("jobName")); + + //Job에 필요한 Parameter 생성 + Map paramsMap = new HashMap<>(); + for(LinkedHashMap tempJobParam : jobParamList) + { + paramsMap.put(tempJobParam.get("jobParamKey"), tempJobParam.get("jobParamValue")); + } + + //Job의 실행횟수 및 실행시간 + paramsMap.put("executeCount", 1); + paramsMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + Class QuartzClass = (Class) Class.forName((String)tempJob.get("jobClass")); + + String strJobName = (String)tempJob.get("jobName"); + String jobDescription = (String)tempJob.get("jobDescription"); + String cronExpression = (String)tempJob.get("cronExpression"); + + addJob(QuartzClass, strJobName, jobDescription, paramsMap, cronExpression); + } + + /* + //Job에 필요한 Parameter 생성 + Map paramsMap = new HashMap<>(); + + //Job의 실행횟수 및 실행시간 + paramsMap.put("executeCount", 1); + paramsMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + Class QuartzClass = (Class) Class.forName("com.urpsys.basebatch.config.quartz.QuartzJob"); + + // Job 생성 및 Scheduler에 등록 + // addJob(QuartzJob.class, "QuartzJob", "Quartz Job 입니다", paramsMap, "0/5 * * * * ?"); + addJob(QuartzClass, "QuartzJob", "Quartz Job 입니다", paramsMap, "0 * * * * ?"); + + */ + } + catch (Exception e) + { + log.error("addJob error : {}", e); + + } + } + + // Job 추가 + public void addJob( Class job ,String name + , String dsec, Map paramsMap, String cron) throws SchedulerException + { + JobDetail jobDetail = buildJobDetail(job,name,dsec,paramsMap); + + Trigger trigger = buildCronTrigger(cron); + + if(scheduler.checkExists(jobDetail.getKey())) + { + scheduler.deleteJob(jobDetail.getKey()); + } + + scheduler.scheduleJob(jobDetail,trigger); + } + + // JobDetail 생성 + public JobDetail buildJobDetail( Class job, String name, String desc + , Map paramsMap) + { + JobDataMap jobDataMap = new JobDataMap(); + jobDataMap.putAll(paramsMap); + + return JobBuilder + .newJob(job) + .withIdentity(name) + .withDescription(desc) + .usingJobData(jobDataMap) + .build(); + } + + // Trigger 생성 + private Trigger buildCronTrigger(String cronExp) + { + return TriggerBuilder.newTrigger() + .withSchedule(CronScheduleBuilder.cronSchedule(cronExp)) + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzJob.java b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzJob.java new file mode 100644 index 00000000..f8fe2174 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzJob.java @@ -0,0 +1,63 @@ +package com.urpsys.basebatch.config.quartz; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import lombok.extern.slf4j.Slf4j; + +/** + * QuartzJob 실행 클래스 예시 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class QuartzJob implements Job +{ + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(">>>>> Quartz Job Executed <<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + + log.info("<<<<< Quartz Job Executed >>>>> "); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzJobListner.java b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzJobListner.java new file mode 100644 index 00000000..6f5b953e --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzJobListner.java @@ -0,0 +1,60 @@ +package com.urpsys.basebatch.config.quartz; + +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.JobListener; + +import lombok.extern.slf4j.Slf4j; + +/** + * Job 리스너 설정 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +public class QuartzJobListner implements JobListener +{ + @Override + public String getName() + { + return this.getClass().getName(); + } + + @Override + public void jobToBeExecuted(JobExecutionContext context) + { + log.info(">>>>> <<<<<"); + log.info("Job 수행 되기 전"); + log.info("<<<<< >>>>> "); + } + + @Override + public void jobExecutionVetoed(JobExecutionContext context) + { + log.info(">>>>> <<<<<"); + log.info("Job 중단"); + log.info("<<<<< >>>>> "); + } + + @Override + public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) + { + log.info(">>>>> <<<<<"); + log.info("Job 수행 완료 후"); + log.info("<<<<< >>>>> "); + } +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.java b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.java new file mode 100644 index 00000000..b2dfc91d --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzTriggerListener.java @@ -0,0 +1,105 @@ +package com.urpsys.basebatch.config.quartz; + +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.Trigger; +import org.quartz.TriggerListener; + +import lombok.extern.slf4j.Slf4j; + +/** + * 트리거 설정 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.03 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.03    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +public class QuartzTriggerListener implements TriggerListener +{ + @Override + public String getName() + { + return this.getClass().getName(); + } + + /** + * Trigger가 실행된 상태 + * 리스너 중에서 가장 먼저 실행됨 + */ + @Override + public void triggerFired(Trigger trigger, JobExecutionContext context) + { + log.info("Trigger 실행"); + } + + /** + * Trigger가 중단된 상태 + */ + @Override + public void triggerMisfired(Trigger trigger) + { + + } + + /** + * Trigger가 완료된 상태 + */ + @Override + public void triggerComplete(Trigger trigger, JobExecutionContext context, Trigger.CompletedExecutionInstruction triggerInstructionCode) + { + log.info("Trigger 성공"); + + } + + + /** + * Trigger 중단 여부를 확인하는 메소드 + * Job을 수행하기 전 상태 + * + * 반환값이 false인 경우, Job 수행 + * 반환값이 true인 경우, Job을 수행하지않고 'SchedulerListtener.jobExecutionVetoed'로 넘어감 + * + */ + @Override + public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { + // TODO Auto-generated method stub + return false; + } + + + /** + * @Content : 결과가 true이면 JobListener jobExecutionVetoed(JOB중단) 실행 + */ + /* + @Override + public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) + { + log.info("Trigger 상태 체크"); + JobDataMap map = context.getJobDetail().getJobDataMap(); + + int executeCount = 1; + + if (map.containsKey("executeCount")) + { + executeCount = (int) map.get("executeCount"); + } + + return executeCount >= 3; + } + */ + + +} diff --git a/src/main/java/com/urpsys/basebatch/dao/QuartzDao.java b/src/main/java/com/urpsys/basebatch/dao/QuartzDao.java new file mode 100644 index 00000000..68d3365a --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/dao/QuartzDao.java @@ -0,0 +1,38 @@ +package com.urpsys.basebatch.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * 배치 작업정보에 대한 DAO 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자            수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제          최초작성
+ *
+ *      
+ */ + +@Mapper +@Repository +public interface QuartzDao +{ + // 배치작업정보 추출 목록 + public List> selectSchedJobInfo(); + + // 배치작업 인자 정보 추출 목록 + public List> selectSchedJobParamInfo(String strJobName); + +} diff --git a/src/main/java/com/urpsys/basebatch/domain/JWTKey.java b/src/main/java/com/urpsys/basebatch/domain/JWTKey.java new file mode 100644 index 00000000..d82d80b2 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/domain/JWTKey.java @@ -0,0 +1,24 @@ +package com.urpsys.basebatch.domain; + +import org.springframework.util.StringUtils; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Data +public class JWTKey +{ + + String alg = ""; + String value = ""; + + public String getValue() + { + if (!StringUtils.isEmpty(value)) + { + return value; + } + return ""; + } +} diff --git a/src/main/java/com/urpsys/basebatch/domain/TokenInfo.java b/src/main/java/com/urpsys/basebatch/domain/TokenInfo.java new file mode 100644 index 00000000..e8408201 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/domain/TokenInfo.java @@ -0,0 +1,46 @@ +package com.urpsys.basebatch.domain; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class TokenInfo +{ + private String userName; + private String clientId; + + private String strMEM_ID; + private String strPWD; + private String strPWD_HINT; + private String strPWD_RANS; + private String strRRNO; + private String strMEM_NM; + private String strZIP_NO; + private String strADDR; + private String strREGN_NO; + private String strMEM_STACD; + private String strADDR2; + private String strEND_TELNO; + private String strMOVE_TELNO; + private String strGRP_ID; + private String strMEM_FAX_NO; + private String strMEM_EML_ADDR; + private String strMDL_TELNO; + private String strJOIN_DTM; + private String strSEX_CD; + private String strESNTL_ID; + private String strLOCK_AT; + private String strLOCK_NCNT; + private String strLAST_CHG_DTM; + private String strLAST_PWD_CHG_DTM; + private String userSe; + private String orgnztId; + + private List authorities; +} diff --git a/src/main/java/com/urpsys/basebatch/service/QuartzService.java b/src/main/java/com/urpsys/basebatch/service/QuartzService.java new file mode 100644 index 00000000..e52a1acf --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/service/QuartzService.java @@ -0,0 +1,54 @@ +package com.urpsys.basebatch.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.basebatch.dao.QuartzDao; + +/** + * 배치작업정보에 관한 일반 로직 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제      최초작성
+ *
+ *      
+ */ + +@Service +@Transactional +public class QuartzService +{ + @Autowired + QuartzDao quartzDao; + + // 작업정보 추출 목록 + public List> selectSchedJobInfo() + { + return quartzDao.selectSchedJobInfo(); + } + + // 배치작업 인자 정보 추출 목록 + public List> selectSchedJobParamInfo(String strJobName) + { + return quartzDao.selectSchedJobParamInfo(strJobName); + } + + + + + +} diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java new file mode 100644 index 00000000..bdf123a8 --- /dev/null +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -0,0 +1,69 @@ +package com.urpsys.basebatch; + +import com.urpsys.basebatch.common.util.CommonUtil; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * Batch 서버 기본 실행 클래스 + * + * @author 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2024.01.08    나혁제         최초작성
+ *
+ *      
+ */ + +@SpringBootApplication +@ComponentScan(basePackages = {"com.urpsys"}) +public class urpBaseBatchApplication +{ + public static void main(String[] args) + { + String activeProfile = (CommonUtil.nvl(System.getProperty("spring.profiles.active"))); + + if(activeProfile.equals("local")) + { + System.out.println("################################################"); + System.out.println("############# local Env ########################"); + System.out.println("################################################"); + } + else if(activeProfile.equals("infra_server")) + { + System.out.println("################################################"); + System.out.println("############# infra_server Env #################"); + System.out.println("################################################"); + } + else if(activeProfile.equals("kic_dev")) + { + System.out.println("################################################"); + System.out.println("############# kic_dev Env ######################"); + System.out.println("################################################"); + } + else if(activeProfile.equals("kic_rel")) + { + System.out.println("################################################"); + System.out.println("############# kic_rel Env ######################"); + System.out.println("################################################"); + } + else + { + System.out.println("################################################"); + System.out.println("############# No Define ########################"); + System.out.println("################################################"); + } + + SpringApplication.run(urpBaseBatchApplication.class, args); + } +} diff --git a/src/main/java/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.java b/src/main/java/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.java new file mode 100644 index 00000000..7425d24c --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/bbs/dao/BbsInfoHistDao.java @@ -0,0 +1,36 @@ +package com.urpsys.itmsbatch.bbs.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * 게시물 관련 Dao Class + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.24 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.24   나혁제         최초작성
+ *
+ *  
+ */ + +@Mapper +@Repository +public interface BbsInfoHistDao +{ + public List> getBbsInfoHistList() ; // 게시물 이력 데이터 추출 + public int updateBbsInfoHist (LinkedHashMap inMap) ; // 게시물 이력 데이터 변경 + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.java b/src/main/java/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.java new file mode 100644 index 00000000..e213d874 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/bbs/service/BbsInfoHistService.java @@ -0,0 +1,52 @@ +package com.urpsys.itmsbatch.bbs.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.itmsbatch.bbs.dao.BbsInfoHistDao; + +/** + * 보고서 정보 관한 일반 로직 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제      최초작성
+ *
+ *      
+ */ + +@Service +@Transactional +public class BbsInfoHistService +{ + @Autowired + BbsInfoHistDao bbsInfoHistDao; + + // 보고서 이력 추출 목록 + public List> getBbsInfoHistList() + { + return bbsInfoHistDao.getBbsInfoHistList(); + } + + // 보고서 이력 검색시스쳄 송신 이력 변경 + public int updateBbsInfoHist (LinkedHashMap inMap) + { + return bbsInfoHistDao.updateBbsInfoHist(inMap); + } + + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.java b/src/main/java/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.java new file mode 100644 index 00000000..6210bb6c --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/dao/CmmUseDao.java @@ -0,0 +1,41 @@ +package com.urpsys.itmsbatch.cmm.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * 공통처리 추출 하는 Dao Class + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.09 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.09   나혁제         최초작성
+ *
+ *  
+ */ + +@Mapper +@Repository +public interface CmmUseDao +{ + public List> selectCmmCodeDetail (LinkedHashMap inMap) throws Exception; // 공통코드 추출 + + public List> selectOgrnztIdDetail(LinkedHashMap inMap) throws Exception; // 조직정보 추출 + public List> selectGroupIdDetail (LinkedHashMap inMap) throws Exception; // 그룹코드정보 추출 + + // 상세코드 + public LinkedHashMap selectCmmCodeDetailAsCd (LinkedHashMap inMap) throws Exception; + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.java b/src/main/java/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.java new file mode 100644 index 00000000..ccdffda4 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/dao/KicItsmDao.java @@ -0,0 +1,45 @@ +package com.urpsys.itmsbatch.cmm.dao; + +import java.util.LinkedHashMap; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * Kic 인사시스템 연동처리 Dao Class + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.16 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.16   나혁제         최초작성
+ *
+ *  
+ */ + +@Mapper +@Repository +public interface KicItsmDao +{ + public String selectItmsOrgId (String strIn) throws Exception; // Itsm 조직정보 추출 + + public int insertDeptManage (LinkedHashMap inMap) throws Exception; // 조직정보 입력 + public int insertKicOrgMap (LinkedHashMap inMap) throws Exception; // KIC/ITSM 조직 맵핑 정보 입력 + public int insertItsmUser (LinkedHashMap inMap) throws Exception; // 사용자 정보 입력 + public int insertItsmUserMenu(LinkedHashMap inMap) throws Exception; // 사용자 메뉴 입력 + public int updateItsmUser (LinkedHashMap inMap) throws Exception; // 사용자 정보 변경 + + public LinkedHashMap selectItsmUser (String strIn) throws Exception; // Itsm 사용자정보 추출 + + + + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/dao/MailKaTalkDao.java b/src/main/java/com/urpsys/itmsbatch/cmm/dao/MailKaTalkDao.java new file mode 100644 index 00000000..db7c60b9 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/dao/MailKaTalkDao.java @@ -0,0 +1,41 @@ +package com.urpsys.itmsbatch.cmm.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * 알림(메일,카톡) 처리 작업정보에 대한 DAO 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자            수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제          최초작성
+ *
+ *      
+ */ + +@Mapper +@Repository +public interface MailKaTalkDao +{ + // 전송대상 목록 조회 + public List> selectNctnProcSndInfo(); + + // 전송대상 전송후 처리결과 갱신 + public int updateNtcnProcSndInfo(LinkedHashMap inMap); + + + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/excute/KicInsaInterJob.java b/src/main/java/com/urpsys/itmsbatch/cmm/excute/KicInsaInterJob.java new file mode 100644 index 00000000..769f0025 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/excute/KicInsaInterJob.java @@ -0,0 +1,77 @@ +package com.urpsys.itmsbatch.cmm.excute; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.urpsys.itmsbatch.cmm.service.KicInsaInterService; + +import lombok.extern.slf4j.Slf4j; + +/** + * KIC(한국투자공사) 인사시스템 연동 처리 실행 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.16 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.16    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class KicInsaInterJob implements Job +{ + @Autowired + KicInsaInterService kicInsaInterService; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(" >>>>>>>>>> KicInsaInterJob Executed <<<<<<<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + try + { + kicInsaInterService.kicInsaItsmInter(); + } + catch(Exception e) + { + e.printStackTrace(); + } + + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + log.info(" <<<<<<<<<< KicInsaInterJob Executed >>>>>>>>>> "); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java new file mode 100644 index 00000000..b9194b3d --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java @@ -0,0 +1,133 @@ +package com.urpsys.itmsbatch.cmm.excute; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.stereotype.Component; + +import com.urpsys.basebatch.common.util.CommonUtil; +import com.urpsys.basebatch.common.util.HtmlEmailUtil; +import com.urpsys.basebatch.common.util.RestApiCallUtil; +import com.urpsys.itmsbatch.cmm.dao.MailKaTalkDao; +import com.urpsys.itmsbatch.cmm.service.MailKaTalkService; + +import lombok.extern.slf4j.Slf4j; + +/** + * 메일/카톡 처리 실행 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class MailKaTalkSendJob implements Job +{ + @Autowired + MailKaTalkService mailKaTalkService; + + @Autowired + HtmlEmailUtil htmlEmailUtil; + + @Autowired + RestApiCallUtil restApiCallUtil; + + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(" >>>>>>>>>> MailKaTalkSendJob Executed <<<<<<<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + // 전송메일 대상 조회 + List> listNctn = mailKaTalkService.selectNctnProcSndInfo(); + + for(LinkedHashMap tempMap : listNctn) + { + String strProcRsltCn = ""; + String strProcRsltCd = ""; + + // 메일 처리 + if(tempMap.get("procTy").equals("1")) + { + strProcRsltCn = htmlEmailUtil.send( CommonUtil.nvl(tempMap.get("rcvrAddr")) + , CommonUtil.nvl(tempMap.get("ttl")) + , CommonUtil.nvl(tempMap.get("bdy")) ); + + strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; + } + // 카톡처리 + else if(tempMap.get("procTy").equals("2")) + { + try + { + Map retMap = restApiCallUtil.RestApiCallNaverCloudKaKao( CommonUtil.nvl(tempMap.get("ttl")) + , CommonUtil.nvl(tempMap.get("rcvrAddr")) + , CommonUtil.nvl(tempMap.get("bdy")) + ); + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + catch(Exception e) + { + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 오류처리 + else + { + strProcRsltCn = "알수 없는 구분값"; + strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; + } + + LinkedHashMap inputMap = new LinkedHashMap(); + + inputMap.put("procRsltCn" , strProcRsltCn); + inputMap.put("procRsltCd" , strProcRsltCd); + inputMap.put("nctnEsntlId" , tempMap.get("nctnEsntlId")); + + mailKaTalkService.updateNtcnProcSndInfo(inputMap); + } + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + log.info(" <<<<<<<<<< MailKaTalkSendJob Executed >>>>>>>>>> "); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java new file mode 100644 index 00000000..5ed90291 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java @@ -0,0 +1,206 @@ +package com.urpsys.itmsbatch.cmm.excute; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.stereotype.Component; + +import com.urpsys.basebatch.common.util.CommonUtil; +import com.urpsys.basebatch.common.util.ConvertUtils; +import com.urpsys.basebatch.common.util.HtmlEmailUtil; +import com.urpsys.basebatch.common.util.RestApiCallUtil; +import com.urpsys.itmsbatch.cmm.dao.MailKaTalkDao; +import com.urpsys.itmsbatch.cmm.service.MailKaTalkService; + +import kong.unirest.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * KIC(한국투자공사) 메일/카톡 처리 실행 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.11 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.11    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class MailKaTalkSendKiccJob implements Job +{ + @Autowired + MailKaTalkService mailKaTalkService; + + @Autowired + HtmlEmailUtil htmlEmailUtil; + + @Autowired + RestApiCallUtil restApiCallUtil; + + @Value("${custom.api_kic_msg_key}") + private String strApiKicMsgKey; // KIC 메신저서버 api key + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(" >>>>>>>>>> MailKaTalkSendKiccJob Executed <<<<<<<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + // 전송메일 대상 조회 + List> listNctn = mailKaTalkService.selectNctnProcSndInfo(); + + for(LinkedHashMap tempMap : listNctn) + { + String strProcRsltCn = ""; + String strProcRsltCd = ""; + + // 메일 처리 + if(tempMap.get("procTy").equals("1")) + { + Map bodyMap = new HashMap(); + + String strMailAddress = CommonUtil.nvl(tempMap.get("rcvrAddr")); + + // 2025.07.01 나혁제 자기 메일로 처리 + // bodyMap.put("email" , "hong@kic.go.kr"); + bodyMap.put("email" , CommonUtil.nvl(tempMap.get("rcvrAddr")) ); + bodyMap.put("to" , CommonUtil.nvl(tempMap.get("rcvrAddr")) ); + bodyMap.put("subject" , CommonUtil.nvl(tempMap.get("ttl")) ); + bodyMap.put("content" , CommonUtil.nvl(tempMap.get("bdy")) ); + // bodyMap.put("content" , "itms 메일테스트 입니다. 메일 삭제해주세요." ); + bodyMap.put("contentType" , "text/html" ); + + try + { + // 메일주소가 없는경우 오류 처리 + if(strMailAddress.equals("")) + { + strProcRsltCn = "메일주소 존재하지 않음"; + strProcRsltCd = "-1"; + } + else + { + // Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/test/kicMailTest.do"); + Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/api/mail/send/json"); + + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + } + catch(Exception e) + { + e.printStackTrace(); + + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 메신저 처리 + else if(tempMap.get("procTy").equals("3")) + { + String strTtl = CommonUtil.nvl(tempMap.get("ttl")); + String strRcvrAddr = CommonUtil.nvl(tempMap.get("rcvrAddr")); + String strBdy = CommonUtil.nvl(tempMap.get("bdy")); + String[] srBdy = strBdy.split(","); + + try + { + Map bodyMap = new HashMap(); + + List> targetsList = new ArrayList<>(); + + // 기본정보 Setting + Map targetMap = new HashMap(); + targetMap.put("targetCode", strRcvrAddr); + targetMap.put("targetType", "UR"); + targetsList.add(targetMap); + + // 메세지 Body Setting + JSONObject jsonObj = new JSONObject(); + jsonObj.put("name", "상세페이지로이동"); + jsonObj.put("type", "link"); + jsonObj.put("data", srBdy[1]); + + JSONObject jObj = new JSONObject(); + jObj.put("title" , strTtl); + jObj.put("context", srBdy[0]); + jObj.put("func", jsonObj); + + StringBuilder strBulider = new StringBuilder(100); + + strBulider.append(jObj.toString().replaceAll("\"", "\\\"")); + + // bodyMap 구성 + bodyMap.put("SubjectCode", strApiKicMsgKey); + bodyMap.put("targets" , targetsList ); + + bodyMap.put("message" , strBulider.toString() ); + + Map retMap = restApiCallUtil.RestApiCallNoAuthKicMsg( bodyMap, "/server/na/notice"); + + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + catch(Exception e) + { + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 오류처리 + else + { + strProcRsltCn = "알수 없는 구분값"; + strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; + } + + LinkedHashMap inputMap = new LinkedHashMap(); + + inputMap.put("procRsltCn" , strProcRsltCn); + inputMap.put("procRsltCd" , strProcRsltCd); + inputMap.put("nctnEsntlId" , tempMap.get("nctnEsntlId")); + + mailKaTalkService.updateNtcnProcSndInfo(inputMap); + } + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + log.info(" <<<<<<<<<< MailKaTalkSendKiccJob Executed >>>>>>>>>> "); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 new file mode 100644 index 00000000..df86c71d --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendKiccJob.java.20250703 @@ -0,0 +1,259 @@ +package com.urpsys.itmsbatch.cmm.excute; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.stereotype.Component; + +import com.urpsys.basebatch.common.util.CommonUtil; +import com.urpsys.basebatch.common.util.ConvertUtils; +import com.urpsys.basebatch.common.util.HtmlEmailUtil; +import com.urpsys.basebatch.common.util.RestApiCallUtil; +import com.urpsys.itmsbatch.cmm.dao.MailKaTalkDao; +import com.urpsys.itmsbatch.cmm.service.MailKaTalkService; + +import kong.unirest.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * KIC(한국투자공사) 메일/카톡 처리 실행 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.11 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.11    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class MailKaTalkSendKiccJob2 implements Job +{ + @Autowired + MailKaTalkService mailKaTalkService; + + @Autowired + HtmlEmailUtil htmlEmailUtil; + + @Autowired + RestApiCallUtil restApiCallUtil; + + @Value("${custom.api_kic_msg_key}") + private String strApiKicMsgKey; // KIC 메신저서버 api key + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(" >>>>>>>>>> MailKaTalkSendKiccJob Executed <<<<<<<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + // 전송메일 대상 조회 + List> listNctn = mailKaTalkService.selectNctnProcSndInfo(); + + for(LinkedHashMap tempMap : listNctn) + { + String strProcRsltCn = ""; + String strProcRsltCd = ""; + + // 메일 처리 + if(tempMap.get("procTy").equals("1")) + { + Map bodyMap = new HashMap(); + + String strMailAddress = CommonUtil.nvl(tempMap.get("rcvrAddr")); + + // 2025.07.01 나혁제 자기 메일로 처리 + // bodyMap.put("email" , "hong@kic.go.kr"); + bodyMap.put("email" , CommonUtil.nvl(tempMap.get("rcvrAddr")) ); + bodyMap.put("to" , CommonUtil.nvl(tempMap.get("rcvrAddr")) ); + bodyMap.put("subject" , CommonUtil.nvl(tempMap.get("ttl")) ); + bodyMap.put("content" , CommonUtil.nvl(tempMap.get("bdy")) ); + // bodyMap.put("content" , "itms 메일테스트 입니다. 메일 삭제해주세요." ); + bodyMap.put("contentType" , "text/html" ); + + try + { + // 메일주소가 없는경우 오류 처리 + if(strMailAddress.equals("")) + { + strProcRsltCn = "메일주소 존재하지 않음"; + strProcRsltCd = "-1"; + } + else + { + // Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/test/kicMailTest.do"); + Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/api/mail/send/json"); + + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + } + catch(Exception e) + { + e.printStackTrace(); + + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 메신저 처리 + else if(tempMap.get("procTy").equals("3")) + { + String strTtl = CommonUtil.nvl(tempMap.get("ttl")); + String strRcvrAddr = CommonUtil.nvl(tempMap.get("rcvrAddr")); + String strBdy = CommonUtil.nvl(tempMap.get("bdy")); + String[] srBdy = strBdy.split(","); + + try + { + /* + Map messageMap = new HashMap(); + + messageMap.put("\""+"title" +"\"" , "\""+strTtl+"\"" ); + messageMap.put("\""+"context" +"\"" , "\""+srBdy[0]+"\"" ); + + Map messageFuncMap = new HashMap(); + + messageFuncMap.put("\""+"name" +"\"", "\""+"상세페이지로이동"+"\"" ); + messageFuncMap.put("\""+"type" +"\"", "\""+"link" +"\"" ); + messageFuncMap.put("\""+"data" +"\"", "\""+srBdy[1] +"\"" ); + + messageMap.put("\""+"func"+"\"", messageFuncMap); + */ + + // JSONParser parser = new JSONParser(); + + /* + Map messageMap = new HashMap(); + + messageMap.put("title" , strTtl ); + messageMap.put("context" , srBdy[0] ); + + Map messageFuncMap = new HashMap(); + + messageFuncMap.put("name" , "상세페이지로이동" ); + messageFuncMap.put("type" , "link" ); + messageFuncMap.put("data" , srBdy[1] ); + + messageMap.put("func", messageFuncMap); + + StringBuilder strBulider = new StringBuilder(1000); + + strBulider.append("\""); + strBulider.append(messageMap.toString().replaceAll("\"", "\\\"")); + strBulider.append("\""); + */ + + // 변환처리 + // JSONObject jsonObj = ConvertUtils.getJsonFromMap(messageMap); + + + Map bodyMap = new HashMap(); + + List> targetsList = new ArrayList<>(); + + Map targetMap = new HashMap(); + targetMap.put("targetCode", strRcvrAddr); + targetMap.put("targetType", "UR"); + targetsList.add(targetMap); + + JSONObject jsonObj = new JSONObject(); + + // String str = "\"; + + jsonObj.put("name", "상세페이지로이동"); + jsonObj.put("type", "link"); + jsonObj.put("data", srBdy[1]); + + JSONObject jObj = new JSONObject(); + + jObj.put("title" , strTtl); + jObj.put("context", srBdy[0]); + + jObj.put("func", jsonObj); + + StringBuilder strBulider = new StringBuilder(100); + + // strBulider.append("\""); + strBulider.append(jObj.toString().replaceAll("\"", "\\\"")); + // strBulider.append("\""); + + // bodyMap 구성 + bodyMap.put("SubjectCode", strApiKicMsgKey); + bodyMap.put("targets" , targetsList ); + + // bodyMap.put("message" , jsonObj.toString() ); + + bodyMap.put("message" , strBulider.toString() ); + // bodyMap.put("message" , messageMap.toString() ); + // bodyMap.put("message" , messageMap ); + // bodyMap.put("message" , "테스트" ); + + // Map retMap = restApiCallUtil.RestApiCallNoAuthKicMsg( bodyMap, "/test/kicMsgTest.do"); + Map retMap = restApiCallUtil.RestApiCallNoAuthKicMsg( bodyMap, "/server/na/notice"); + + strProcRsltCn = retMap.toString(); + strProcRsltCd = "0"; + } + catch(Exception e) + { + strProcRsltCn = e.toString(); + strProcRsltCd = "-2"; + } + } + // 오류처리 + else + { + strProcRsltCn = "알수 없는 구분값"; + strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; + } + + LinkedHashMap inputMap = new LinkedHashMap(); + + inputMap.put("procRsltCn" , strProcRsltCn); + inputMap.put("procRsltCd" , strProcRsltCd); + inputMap.put("nctnEsntlId" , tempMap.get("nctnEsntlId")); + + mailKaTalkService.updateNtcnProcSndInfo(inputMap); + } + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + log.info(" <<<<<<<<<< MailKaTalkSendKiccJob Executed >>>>>>>>>> "); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/service/CmmUseService.java b/src/main/java/com/urpsys/itmsbatch/cmm/service/CmmUseService.java new file mode 100644 index 00000000..215f90e7 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/service/CmmUseService.java @@ -0,0 +1,64 @@ +package com.urpsys.itmsbatch.cmm.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.itmsbatch.cmm.dao.CmmUseDao; + +/** + * 공토코드 추출하는 비즈니스 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.09 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.09   나혁제      최초작성
+ *
+ *      
+ */ + +@Service +@Transactional +public class CmmUseService +{ + @Autowired + CmmUseDao cmmUseDao; + + // 공통코드 추출 + public List> selectCmmCodeDetail(LinkedHashMap inMap) throws Exception + { + return cmmUseDao.selectCmmCodeDetail(inMap); + } + + // 조직정보 추출 + public List> selectOgrnztIdDetail(LinkedHashMap inMap) throws Exception + { + return cmmUseDao.selectOgrnztIdDetail(inMap); + } + + // 그룹코드정보 추출 + public List> selectGroupIdDetail(LinkedHashMap inMap) throws Exception + { + return cmmUseDao.selectGroupIdDetail(inMap); + } + + // 상세코드조회 + public LinkedHashMap selectCmmCodeDetailAsCd (LinkedHashMap inMap) throws Exception + { + return cmmUseDao.selectCmmCodeDetailAsCd(inMap); + } + + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.java b/src/main/java/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.java new file mode 100644 index 00000000..b11fbc0d --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/service/KicInsaInterService.java @@ -0,0 +1,126 @@ +package com.urpsys.itmsbatch.cmm.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import javax.annotation.Resource; + +import org.egovframe.rte.fdl.idgnr.EgovIdGnrService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.basebatch.common.util.CommonUtil; +import com.urpsys.itmsbatch.cmm.dao.KicItsmDao; +import com.urpsys.itmsbatch.cmm.excute.KicInsaInterJob; +import com.urpsys.kicinsa.dao.KicGroupwareDao; + +import lombok.extern.slf4j.Slf4j; + +/** + * kic 인사시스템 연동 비즈니스 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.06.16 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.06.06   나혁제      최초작성
+ *
+ *      
+ */ + +@Slf4j +@Service +@Transactional +public class KicInsaInterService +{ + @Autowired + KicGroupwareDao groupwareDao; + + @Autowired + KicItsmDao kicItsmDao; + + /** Message ID Generation 부서ID */ + @Resource(name = "egovDeptManageIdGnrService") + private EgovIdGnrService egovDeptManageIdGnrService; + + /** egovUsrCnfrmIdGnrService usr_id */ + @Resource(name="egovUsrCnfrmIdGnrService") + private EgovIdGnrService idgenUseService; + + // 인사시스템 연동처리 + public void kicInsaItsmInter() throws Exception + { + List> listKicInsaInfo = groupwareDao.getKicInsaList(); + + LinkedHashMap mapInsUpd = new LinkedHashMap<>(); + + for(LinkedHashMap mapTemp : listKicInsaInfo) + { + String strKicOrgId = (String)mapTemp.get("deptCode" ); + String strKicOrgIdNm = (String)mapTemp.get("deptName" ); + String strUserCode = (String)mapTemp.get("userCode" ); + + if(strUserCode.length() > 20) + { + log.info("20자리 오버 strUserCode : {}", strUserCode); + continue; + } + + // 부서 존재 여부 조회 + String strItsmsOrgId = kicItsmDao.selectItmsOrgId(strKicOrgId); + + // Itsm 조직정보가 없는경우 새롭게 추출 + if(strItsmsOrgId == null || strItsmsOrgId.equals("")) + { + strItsmsOrgId = egovDeptManageIdGnrService.getNextStringId(); + + mapInsUpd = new LinkedHashMap<>(); + + mapInsUpd.put("orgId" , strItsmsOrgId ); + mapInsUpd.put("kicOrgId" , strKicOrgId ); + mapInsUpd.put("kicOrgIdNm" , strKicOrgIdNm ); + + kicItsmDao.insertKicOrgMap (mapInsUpd); + kicItsmDao.insertDeptManage(mapInsUpd); + } + + // ITSM 사용자 정보 조회 + LinkedHashMap mapItmsUser = kicItsmDao.selectItsmUser((String)mapTemp.get("userCode")); + + String strUniqId = ""; + // String strUniqId = CommonUtil.nvl( mapItmsUser.get("uniqId") ); + + // ITMS 사용자 정보가 없는경우 입력처리(insert) + if(mapItmsUser == null ) + { + strUniqId = idgenUseService.getNextStringId(); + + mapTemp.put("uniqId", strUniqId); + mapTemp.put("orgId" , strItsmsOrgId ); + + kicItsmDao.insertItsmUser (mapTemp); // 사용자 정보 입력 + kicItsmDao.insertItsmUserMenu(mapTemp); // 사용자 기본메뉴정보 입력 + } + // ITSM 정보가 있는경우(update) + else + { + strUniqId = CommonUtil.nvl( mapItmsUser.get("uniqId") ); + + mapTemp.put("uniqId", strUniqId ); + mapTemp.put("orgId" , strItsmsOrgId ); + + kicItsmDao.updateItsmUser(mapTemp); + } + } + } + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.java b/src/main/java/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.java new file mode 100644 index 00000000..add892aa --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/cmm/service/MailKaTalkService.java @@ -0,0 +1,52 @@ +package com.urpsys.itmsbatch.cmm.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.basebatch.dao.QuartzDao; +import com.urpsys.itmsbatch.cmm.dao.MailKaTalkDao; + +/** + * 알림(메일,카톡) 처리에 관한 일반 로직 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제      최초작성
+ *
+ *      
+ */ + +@Service +@Transactional +public class MailKaTalkService +{ + @Autowired + MailKaTalkDao mailKaTalkDao; + + // 전송대상 목록 조회 + public List> selectNctnProcSndInfo() + { + return mailKaTalkDao.selectNctnProcSndInfo(); + } + + // 전송대상 전송후 처리결과 갱신 + public int updateNtcnProcSndInfo(LinkedHashMap inMap) + { + return mailKaTalkDao.updateNtcnProcSndInfo(inMap); + } + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.java b/src/main/java/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.java new file mode 100644 index 00000000..3f1c4f6e --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/srm/dao/IncidentHistDao.java @@ -0,0 +1,36 @@ +package com.urpsys.itmsbatch.srm.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * 인스던트 관련 Dao Class + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.24 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.24   나혁제         최초작성
+ *
+ *  
+ */ + +@Mapper +@Repository +public interface IncidentHistDao +{ + public List> getIncidentHistList() ; // 인스던트 이력 데이터 추출 + public int updateIncidentHist (LinkedHashMap inMap) ; // 인스던트 이력 데이터 변경 + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/srm/dao/ReportHistDao.java b/src/main/java/com/urpsys/itmsbatch/srm/dao/ReportHistDao.java new file mode 100644 index 00000000..fa71e4a3 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/srm/dao/ReportHistDao.java @@ -0,0 +1,36 @@ +package com.urpsys.itmsbatch.srm.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * Report 관련 Dao Class + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.24 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.24   나혁제         최초작성
+ *
+ *  
+ */ + +@Mapper +@Repository +public interface ReportHistDao +{ + public List> getReportHistList() ; // 보고서 이력 데이터 추출 + public int updateReportHist (LinkedHashMap inMap) ; // 보고서 이력 데이터 변경 + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/srm/excute/SendSearchSysJob.java b/src/main/java/com/urpsys/itmsbatch/srm/excute/SendSearchSysJob.java new file mode 100644 index 00000000..806f2e7e --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/srm/excute/SendSearchSysJob.java @@ -0,0 +1,330 @@ +package com.urpsys.itmsbatch.srm.excute; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.urpsys.basebatch.common.util.CommonUtil; +import com.urpsys.basebatch.common.util.RestApiCallUtil; +import com.urpsys.itmsbatch.bbs.service.BbsInfoHistService; +import com.urpsys.itmsbatch.srm.service.IncidentHistService; +import com.urpsys.itmsbatch.srm.service.ReportHistService; + +import lombok.extern.slf4j.Slf4j; + +/** + * 검색 데이터 검색 시스템 송신 실행 클래스 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.24 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일        수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.24    나혁제         최초작성
+ *
+ * 
+ */ + +@Slf4j +@Component +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +public class SendSearchSysJob implements Job +{ + @Autowired + IncidentHistService incidentHistService; + + @Autowired + ReportHistService reportHistService; + + @Autowired + BbsInfoHistService bbsInfoHistService; + + @Autowired + RestApiCallUtil restApiCallUtil; + + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + log.info(" >>>>>>>>>> SendSearchSysJob Executed <<<<<<<<<< "); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + + log.info("dataMap date : {}", dataMap.get("date")); + log.info("dataMap executeCount : {}", dataMap.get("executeCount")); + + SearchSendIncidentHist(); + SearchSendReportHist(); + SearchSendBbsInfoHist(); + + //JobDataMap를 통해 Job의 실행 횟수를 받아서 횟수 + 1을한다. + int cnt = (int) dataMap.get("executeCount"); + + dataMap.put("executeCount", ++cnt); + dataMap.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + + log.info(" <<<<<<<<<< SendSearchSysJob Executed >>>>>>>>>> "); + } + + /** + * 인스던트 이력 데이터 검색시스템 전송처리 + * @author urp 인프라본부 나혁제 + * 작성일 : 2025.04.24 + */ + public void SearchSendIncidentHist() + { + // 인스던트 검색시스템 전송 대상 조회 + List> listIncidentHist = incidentHistService.getIncidentHistList(); + + int iTotalProCnt=0; + for(LinkedHashMap tempMap : listIncidentHist) + { + // if(iTotalProCnt > 10) break; + + Map bodyMap = new LinkedHashMap(); + Map metaDataMap = new LinkedHashMap(); + + metaDataMap.put("vc_incident_num" , tempMap.get("vcIncidentNum")); + metaDataMap.put("vc_charge_user" , tempMap.get("vcChargeUser")); + + bodyMap.put("id" , tempMap.get("inIncidentSeq")); + bodyMap.put("title" , tempMap.get("vcIncidentTitle")); + bodyMap.put("text" , CommonUtil.base64decode((String)tempMap.get("txIncidentBody")) ); + bodyMap.put("user" , tempMap.get("vcRegUser")); + bodyMap.put("last_date" , tempMap.get("dtReceiptDatetime")); + + bodyMap.put("metadata", metaDataMap); + + String strUrl = "/api/v1/1/"; + + if(tempMap.get("eventType").equals("INSERT")) + { + strUrl = strUrl+"C"; + } + else if(tempMap.get("eventType").equals("UPDATE")) + { + strUrl = strUrl+"U"; + } + else if(tempMap.get("eventType").equals("DELETE")) + { + strUrl = strUrl+"D"; + } + + // 기본데이터 추출 + int inIncidentSeq = (int)tempMap.get("inIncidentSeq"); + String strEventTime = (String)tempMap.get("eventTime"); + String strEventType = (String)tempMap.get("eventType"); + String strSrchProcYn = ""; + String strSrchProcSndMsg = ""; + + try + { + Map returnMap = restApiCallUtil.RestApiCallNoAuth(bodyMap, strUrl); + + strSrchProcYn = "Y"; + strSrchProcSndMsg = returnMap.toString(); + } + catch(Exception e) + { + e.printStackTrace(); + + strSrchProcYn = "E"; + strSrchProcSndMsg = e.toString(); + } + + LinkedHashMap inMap = new LinkedHashMap(); + + inMap.put("inIncidentSeq" , inIncidentSeq ); + inMap.put("eventTime" , strEventTime ); + inMap.put("eventType" , strEventType ); + inMap.put("srchProcYn" , strSrchProcYn ); + inMap.put("srchProcSndMsg" , strSrchProcSndMsg); + + incidentHistService.updateIncidentHist(inMap); + + iTotalProCnt++; + } + } + + /** + * 보고서 이력 데이터 검색시스템 전송처리 + * @author urp 인프라본부 나혁제 + * 작성일 : 2025.04.24 + */ + public void SearchSendReportHist() + { + // 인스던트 검색시스템 전송 대상 조회 + List> listReportHist = reportHistService.getReportHistList(); + + int iTotalProCnt=0; + for(LinkedHashMap tempMap : listReportHist) + { + // if(iTotalProCnt > 0) break; + + Map bodyMap = new LinkedHashMap(); + Map metaDataMap = new LinkedHashMap(); + + metaDataMap.put("vc_report_id" , tempMap.get("vcReportId")); + metaDataMap.put("in_task" , tempMap.get("inTask")); + + bodyMap.put("id" , tempMap.get("inReportSeq")); + bodyMap.put("title" , tempMap.get("vcReportTitle")); + bodyMap.put("text" , CommonUtil.base64decode((String)tempMap.get("txReportBody")) ); + bodyMap.put("user" , tempMap.get("vcRegUser")); + bodyMap.put("last_date" , tempMap.get("dtLastUpdate")); + + bodyMap.put("metadata", metaDataMap); + + String strUrl = "/api/v1/2/"; + + if(tempMap.get("eventType").equals("INSERT")) + { + strUrl = strUrl+"C"; + } + else if(tempMap.get("eventType").equals("UPDATE")) + { + strUrl = strUrl+"U"; + } + else if(tempMap.get("eventType").equals("DELETE")) + { + strUrl = strUrl+"D"; + } + + // 기본데이터 추출 + int inReportSeq = CommonUtil.zeroConvert(tempMap.get("inReportSeq")); + String strEventTime = (String)tempMap.get("eventTime"); + String strEventType = (String)tempMap.get("eventType"); + String strSrchProcYn = ""; + String strSrchProcSndMsg = ""; + + try + { + Map returnMap = restApiCallUtil.RestApiCallNoAuth(bodyMap, strUrl); + + strSrchProcYn = "Y"; + strSrchProcSndMsg = returnMap.toString(); + } + catch(Exception e) + { + e.printStackTrace(); + + strSrchProcYn = "E"; + strSrchProcSndMsg = e.toString(); + } + + LinkedHashMap inMap = new LinkedHashMap(); + + inMap.put("inReportSeq" , inReportSeq ); + inMap.put("eventTime" , strEventTime ); + inMap.put("eventType" , strEventType ); + inMap.put("srchProcYn" , strSrchProcYn ); + inMap.put("srchProcSndMsg" , strSrchProcSndMsg); + + reportHistService.updateReportHist(inMap); + + iTotalProCnt++; + } + } + + /** + * 게시물 이력 데이터 검색시스템 전송처리 + * @author urp 인프라본부 나혁제 + * 작성일 : 2025.04.24 + */ + public void SearchSendBbsInfoHist() + { + // 인스던트 검색시스템 전송 대상 조회 + List> listBbsInfoHist = bbsInfoHistService.getBbsInfoHistList(); + + int iTotalProCnt=0; + for(LinkedHashMap tempMap : listBbsInfoHist ) + { + // if(iTotalProCnt > 0) break; + + Map bodyMap = new LinkedHashMap(); + Map metaDataMap = new LinkedHashMap(); + + metaDataMap.put("bbs_id" , tempMap.get("bbsId")); + metaDataMap.put("ntt_no" , tempMap.get("nttNo")); + + bodyMap.put("id" , tempMap.get("nttId") ); + bodyMap.put("title" , tempMap.get("nttSj") ); + bodyMap.put("text" , tempMap.get("nttCn") ); + bodyMap.put("user" , tempMap.get("frstRegisterNm")); + bodyMap.put("last_date" , tempMap.get("frstRegisterPnttm")); + + bodyMap.put("metadata", metaDataMap); + + String strUrl = "/api/v1/3/"; + + if(tempMap.get("eventType").equals("INSERT")) + { + strUrl = strUrl+"C"; + } + else if(tempMap.get("eventType").equals("UPDATE")) + { + strUrl = strUrl+"U"; + } + else if(tempMap.get("eventType").equals("DELETE")) + { + strUrl = strUrl+"D"; + } + + // 기본데이터 추출 + int nttId = CommonUtil.zeroConvert(tempMap.get("nttId")); + String strEventTime = (String)tempMap.get("eventTime"); + String strEventType = (String)tempMap.get("eventType"); + String strSrchProcYn = ""; + String strSrchProcSndMsg = ""; + + try + { + Map returnMap = restApiCallUtil.RestApiCallNoAuth(bodyMap, strUrl); + + strSrchProcYn = "Y"; + strSrchProcSndMsg = returnMap.toString(); + } + catch(Exception e) + { + e.printStackTrace(); + + strSrchProcYn = "E"; + strSrchProcSndMsg = e.toString(); + } + + LinkedHashMap inMap = new LinkedHashMap(); + + inMap.put("nttId" , nttId ); + inMap.put("eventTime" , strEventTime ); + inMap.put("eventType" , strEventType ); + inMap.put("srchProcYn" , strSrchProcYn ); + inMap.put("srchProcSndMsg" , strSrchProcSndMsg); + + bbsInfoHistService.updateBbsInfoHist(inMap); + + iTotalProCnt++; + } + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/urpsys/itmsbatch/srm/service/IncidentHistService.java b/src/main/java/com/urpsys/itmsbatch/srm/service/IncidentHistService.java new file mode 100644 index 00000000..d16e7b6e --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/srm/service/IncidentHistService.java @@ -0,0 +1,52 @@ +package com.urpsys.itmsbatch.srm.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.itmsbatch.srm.dao.IncidentHistDao; + +/** + * 인스던트 정보 관한 일반 로직 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제      최초작성
+ *
+ *      
+ */ + +@Service +@Transactional +public class IncidentHistService +{ + @Autowired + IncidentHistDao svcDeskDao; + + // 작업정보 추출 목록 + public List> getIncidentHistList() + { + return svcDeskDao.getIncidentHistList(); + } + + // 배치작업 인자 정보 추출 목록 + public int updateIncidentHist (LinkedHashMap inMap) + { + return svcDeskDao.updateIncidentHist(inMap); + } + + + +} diff --git a/src/main/java/com/urpsys/itmsbatch/srm/service/ReportHistService.java b/src/main/java/com/urpsys/itmsbatch/srm/service/ReportHistService.java new file mode 100644 index 00000000..821eceb1 --- /dev/null +++ b/src/main/java/com/urpsys/itmsbatch/srm/service/ReportHistService.java @@ -0,0 +1,58 @@ +package com.urpsys.itmsbatch.srm.service; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.urpsys.itmsbatch.srm.dao.ReportHistDao; +import com.urpsys.kicinsa.dao.KicGroupwareDao; + +/** + * 보고서 정보 관한 일반 로직 구현 클래스를 정의 + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.02 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일     수정자      수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.02   나혁제      최초작성
+ *
+ *      
+ */ + +@Service +@Transactional +public class ReportHistService +{ + @Autowired + ReportHistDao reportDao; + + // @Autowired + // GroupwareDao groupwareDao; + + // 보고서 이력 추출 목록 + public List> getReportHistList() + { + // groupwareDao.getInsaList(); + return reportDao.getReportHistList(); + } + + // 보고서 이력 검색시스쳄 송신 이력 변경 + public int updateReportHist (LinkedHashMap inMap) + { + + return reportDao.updateReportHist(inMap); + } + + + +} diff --git a/src/main/java/com/urpsys/kicinsa/dao/KicGroupwareDao.java b/src/main/java/com/urpsys/kicinsa/dao/KicGroupwareDao.java new file mode 100644 index 00000000..b3fb22e2 --- /dev/null +++ b/src/main/java/com/urpsys/kicinsa/dao/KicGroupwareDao.java @@ -0,0 +1,36 @@ +package com.urpsys.kicinsa.dao; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * Report 관련 Dao Class + * + * @author urp 인프라본부 나혁제 + * @since 2025.04.24 + * @version 1.0.0 + * @see + * + *
+ *
+ * << 개정이력(Modification information) >>
+ *
+ *   수정일       수정자         수정내용
+ * -----------  ---------    ------------------------
+ * 2025.04.24   나혁제         최초작성
+ *
+ *  
+ */ + +@Mapper +@Repository +public interface KicGroupwareDao +{ + public List> getKicInsaList() ; // 보고서 이력 데이터 추출 + + + +} diff --git a/src/main/resources/application-infra_server.yml b/src/main/resources/application-infra_server.yml new file mode 100644 index 00000000..980e643f --- /dev/null +++ b/src/main/resources/application-infra_server.yml @@ -0,0 +1,62 @@ +# Service port +# server: +# port: 9002 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://109.26.11.21:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://109.26.11.21:48381 +# api_search_server: http://192.168.8.138:48381 + \ No newline at end of file diff --git a/src/main/resources/application-kic_dev.yml b/src/main/resources/application-kic_dev.yml new file mode 100644 index 00000000..a3f2b797 --- /dev/null +++ b/src/main/resources/application-kic_dev.yml @@ -0,0 +1,85 @@ +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.10.10.19:1521:gwdev + username: mLq9nSgZHzZBmuOmyvjahQ== + password: C7+TsdsHhTcGiH6JSupSeA== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + # 검색서버 + api_search_server: http://192.10.10.203:48381 + # kicc 메일서버 + api_kic_mail_server : https://devkicmail.kic.go.kr + # api_kic_mail_server : https://kicmail.kic.go.kr + # kicc 메신저 서버 + api_kic_msg_server : http://devtalk.kic.go.kr + api_kic_msg_key : 73f26d49-b014-41a9-a184-24c34c893701 + # api_kic_msg_server : http://talk.kic.go.kr + # api_kic_msg_key : eebe896f-1608-456f-80ff-282d1024c25c + client : kic + + \ No newline at end of file diff --git a/src/main/resources/application-kic_rel.yml b/src/main/resources/application-kic_rel.yml new file mode 100644 index 00000000..1e98c878 --- /dev/null +++ b/src/main/resources/application-kic_rel.yml @@ -0,0 +1,81 @@ +# Service port + server: + port: 12030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_rel_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: YvRZ5jyhmB6gwVSUGBOqNMQB00k6OZZSfUH5ZU4GEFs= + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.10.10.242:1521:gwprd2 + username: mLq9nSgZHzZBmuOmyvjahQ== + password: F4KWP/A4aPptqZO9gZUdqg== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://192.10.10.203:49381 + # kicc 메일서버 + api_kic_mail_server : https://kicmail.kic.go.kr + # kicc 메신저 서버 + api_kic_msg_server : http://talk.kic.go.kr + api_kic_msg_key : eebe896f-1608-456f-80ff-282d1024c25c + client : kic + \ No newline at end of file diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml new file mode 100644 index 00000000..9de735bf --- /dev/null +++ b/src/main/resources/application-local.yml @@ -0,0 +1,81 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm +# api_search_server: http://192.168.8.138:48381 # 개발 + api_search_server: http://192.168.8.138:49381 # 운영 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/application-vmware.yml b/src/main/resources/application-vmware.yml new file mode 100644 index 00000000..380716ab --- /dev/null +++ b/src/main/resources/application-vmware.yml @@ -0,0 +1,62 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm +# api_search_server: http://109.26.11.21:48381 + api_search_server: http://192.168.8.138:48381 + \ No newline at end of file diff --git a/src/main/resources/log4jdbc.log4j2.properties b/src/main/resources/log4jdbc.log4j2.properties new file mode 100644 index 00000000..85d1ede9 --- /dev/null +++ b/src/main/resources/log4jdbc.log4j2.properties @@ -0,0 +1,2 @@ +log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator +log4jdbc.dump.sql.maxlinelength=0 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 00000000..825e85e5 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,102 @@ + + + ${HOSTNAME} + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/kicinsadb/config/MybatisConfig.xml b/src/main/resources/mapper/kicinsadb/config/MybatisConfig.xml new file mode 100644 index 00000000..1d2a105d --- /dev/null +++ b/src/main/resources/mapper/kicinsadb/config/MybatisConfig.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml b/src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml new file mode 100644 index 00000000..28aa8899 --- /dev/null +++ b/src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 b/src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 new file mode 100644 index 00000000..71736f70 --- /dev/null +++ b/src/main/resources/mapper/kicinsadb/sqlmap/insa/KicGroupwareMapper.xml.20250701 @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/primarydb/config/MybatisConfig.xml b/src/main/resources/mapper/primarydb/config/MybatisConfig.xml new file mode 100644 index 00000000..78cf9a7c --- /dev/null +++ b/src/main/resources/mapper/primarydb/config/MybatisConfig.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/primarydb/sqlmap/QuartzMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/QuartzMapper.xml new file mode 100644 index 00000000..34d91a35 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/QuartzMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml new file mode 100644 index 00000000..6172cec2 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + /* BbsInfoHistDao.updateBbsInfoHist */ + UPDATE TB_BBS_INFO_HIST + SET SRCH_PROC_YN = #{srchProcYn} + , SRCH_PROC_SND_TM = NOW() + , SRCH_PROC_SND_MSG = #{srchProcSndMsg} + WHERE NTT_ID = #{nttId} + AND EVENT_TIME = #{eventTime} + AND EVENT_TYPE = #{eventType} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml new file mode 100644 index 00000000..7fb44af1 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/cmm/CmmUseMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml new file mode 100644 index 00000000..f5babd49 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml @@ -0,0 +1,182 @@ + + + + + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_KIC_ORG_MAP + ( ORG_ID + , KIC_ORGID + , KIC_ORGID_NM + , REG_DTM + ) + VALUES + ( #{orgId} + , #{kicOrgId} + , #{kicOrgIdNm} + , SYSDATE() + ) + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_ORG_INFO + ( ORG_ID + , ORG_NM + , ORG_DESC + ) + VALUES + ( #{orgId} + , #{kicOrgIdNm} + , #{kicOrgIdNm}) + + + + + + + + /* KicItsmDao.insertItsmUser */ + INSERT INTO TB_TASK_USER_INFO + ( ESNTL_ID + , TASK_USER_ID + , USER_NM + , PWD + , EMPNO + , SEX_CD + , REGN_NO + , HOUSE_MIDDLE_TELNO + , HOUSE_END_TELNO + , OFFM_TELNO + , MOVE_TELNO + , EML_ADDR + , JBPS_NM + , ORG_ID + , USER_STACD + , JOIN_DTM + , LAST_PWD_CHG_DTM + , HOUSE_ADRES + , PWD_HINT + , PWD_RANS + , ZIP_NO + , OTSD_CONN_YN + ) + VALUES ( + #{uniqId} + , #{userCode} + , #{userName} + , '$2a$10$ysPl0nYOLZXSVemDz1HQFukyaiSs05J9iwdBtwWxK7hrXrdG0MN2W' + , #{userCode} + , '' + , '0000' + , '0000' + , '0000' + , '' + , #{mobile} + , #{mailAddress} + , #{jobPositionName} + , #{orgId} + , CASE WHEN ISNULL(#{retireDate}) || #{retireDate} = '' THEN 'P' + ELSE 'D' + END + , sysdate() + , sysdate() + , '주소없음' + , 'P01' + , '한국투자공사' + , '' + , 'Y' + ) + + + + + + /* KicItsmDao.insertItsmUserMenu */ + INSERT INTO TB_USER_CRYP_CNF + ( CRYP_CNF_TRG_ID + , MEM_TYCD + , AUTH_CD + ) + VALUES ( + #{uniqId} + , 'USR03' + , 'ROLE_EMPTY' + ) + + + + /* KicItsmDao.insertItsmUser */ + UPDATE TB_TASK_USER_INFO + SET USER_NM = #{userName} + , MOVE_TELNO = #{mobile} + , EML_ADDR = #{mailAddress} + , JBPS_NM = #{jobPositionName} + , ORG_ID = #{orgId} + , USER_STACD = CASE WHEN ISNULL(#{retireDate}) || #{retireDate} = '' THEN 'P' + ELSE 'D' + END + , LAST_PWD_CHG_DTM = sysdate() + , OTSD_CONN_YN = 'Y' + WHERE ESNTL_ID = #{uniqId} + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 b/src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 new file mode 100644 index 00000000..7f1246ca --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/cmm/KicItsmMapper.xml,20250701 @@ -0,0 +1,167 @@ + + + + + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_KIC_ORG_MAP + ( ORG_ID + , KIC_ORGID + , KIC_ORGID_NM + , REG_DTM + ) + VALUES + ( #{orgId} + , #{kicOrgId} + , #{kicOrgIdNm} + , SYSDATE() + ) + + + + + /* KicItsmDao.insertDeptManage */ + INSERT INTO TB_ORG_INFO + ( ORG_ID + , ORG_NM + , ORG_DESC + ) + VALUES + ( #{orgId} + , #{kicOrgIdNm} + , #{kicOrgIdNm}) + + + + + + + + /* KicItsmDao.insertItsmUser */ + INSERT INTO TB_TASK_USER_INFO + ( ESNTL_ID + , TASK_USER_ID + , USER_NM + , PWD + , EMPNO + , SEX_CD + , REGN_NO + , HOUSE_MIDDLE_TELNO + , HOUSE_END_TELNO + , OFFM_TELNO + , MOVE_TELNO + , EML_ADDR + , JBPS_NM + , ORG_ID + , USER_STACD + , JOIN_DTM + , LAST_PWD_CHG_DTM + , HOUSE_ADRES + , PWD_HINT + , PWD_RANS + , ZIP_NO + ) + VALUES ( + #{uniqId} + , #{empId} + , #{empNm} + , '$2a$10$ysPl0nYOLZXSVemDz1HQFukyaiSs05J9iwdBtwWxK7hrXrdG0MN2W' + , #{empId} + , #{sex} + , '0000' + , '0000' + , '0000' + , #{tel} + , #{htel} + , #{emailComp} + , #{posgrdCdNm} + , #{orgId} + , CASE WHEN #{serviceCd} = 'Y' THEN 'P' + WHEN #{serviceCd} = 'H' THEN 'A' + WHEN #{serviceCd} = 'N' THEN 'D' + END + , sysdate() + , sysdate() + , '주소없음' + , 'P01' + , '한국투자공사' + , '' + ) + + + + /* KicItsmDao.insertItsmUser */ + UPDATE TB_TASK_USER_INFO + SET USER_NM = #{empNm} + , SEX_CD = #{sex} + , OFFM_TELNO = #{tel} + , MOVE_TELNO = #{htel} + , EML_ADDR = #{emailComp} + , JBPS_NM = #{posgrdCdNm} + , ORG_ID = #{orgId} + , USER_STACD = CASE WHEN #{serviceCd} = 'Y' THEN 'P' + WHEN #{serviceCd} = 'H' THEN 'A' + WHEN #{serviceCd} = 'N' THEN 'D' + END + , LAST_PWD_CHG_DTM = sysdate() + WHERE ESNTL_ID = #{uniqId} + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml new file mode 100644 index 00000000..c126b76b --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/cmm/MailKaTalkMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + /* CmmUseDao.insertNtcnProcSndInfo */ + UPDATE TB_NTCN_PROC_SND_INFO + SET PROC_DT = SYSDATE() + , PROC_RSLT_CD = #{procRsltCd} + , PROC_RSLT_CN = #{procRsltCn} + WHERE NTCN_ESNTL_ID = #{nctnEsntlId} + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/primarydb/sqlmap/ind/NcrdMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/ind/NcrdMapper.xml new file mode 100644 index 00000000..9f12afc6 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/ind/NcrdMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml new file mode 100644 index 00000000..26b8c506 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE CM_INCIDENT_HIST + SET SRCH_PROC_YN = #{srchProcYn} + , SRCH_PROC_SND_TM = NOW() + , SRCH_PROC_SND_MSG = #{srchProcSndMsg} + WHERE IN_INCIDENT_SEQ = #{inIncidentSeq} + AND EVENT_TIME = #{eventTime} + AND EVENT_TYPE = #{eventType} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml new file mode 100644 index 00000000..2040e556 --- /dev/null +++ b/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* ReportHistDao.updateReportHist */ + UPDATE CM_REPORT_HIST + SET SRCH_PROC_YN = #{srchProcYn} + , SRCH_PROC_SND_TM = NOW() + , SRCH_PROC_SND_MSG = #{srchProcSndMsg} + WHERE IN_REPORT_SEQ = #{inReportSeq} + AND EVENT_TIME = #{eventTime} + AND EVENT_TYPE = #{eventType} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/messages/message-common.properties b/src/main/resources/messages/message-common.properties new file mode 100644 index 00000000..fc3577a6 --- /dev/null +++ b/src/main/resources/messages/message-common.properties @@ -0,0 +1,467 @@ +fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +fail.common.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1} +info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +#UI Common resource# +table.num=\ubc88\ud638 +table.regdate=\ub4f1\ub85d\uc77c +table.reger=\ub4f1\ub85d\uc790 +table.select=\uc120\ud0dd +title.html=egovframe common component +title.detail=\uc0c1\uc138\uc870\ud68c +title.inquire=\uc870\ud68c +title.update=\uc218\uc815 +title.create=\ub4f1\ub85d +title.delete=\uc0ad\uc81c +title.save=\uc800\uc7a5 +title.list=\ubaa9\ub85d +title.searchCondition=\uac80\uc0c9\uc870\uac74 +title.search=\uac80\uc0c9\uc5b4 +title.reply=\ub2f5\uae00 +title.scrap=\uc2a4\ud06c\ub7a9 +title.comment=\ub313\uae00 +title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd +title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c +title.link=\ub9c1\ud06c +title.management=\uad00\ub9ac +title.all=\uc804\uccb4 + +input.select=\uc120\ud0dd\ud558\uc138\uc694 +input.cSelect=\uc120\ud0dd +input.input=\uc785\ub825 +input.button=\ubc84\ud2bc +input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 +input.yes=\uc608 +input.no=\uc544\ub2c8\uc624 + +select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd + +button.select=\uc120\ud0dd +button.search=\uac80\uc0c9 +button.use=\uc0ac\uc6a9 +button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 +button.inquire=\uc870\ud68c +button.update=\uc218\uc815 +button.create=\ub4f1\ub85d +button.delete=\uc0ad\uc81c +button.deleteDatabase=\uc644\uc804\uc0ad\uc81c +button.close=\ub2eb\uae30 +button.save=\uc800\uc7a5 +button.list=\ubaa9\ub85d +button.reset=\ucde8\uc18c +button.passwordUpdate=\uc554\ud638\ubcc0\uacbd +button.subscribe=\uac00\uc785\uc2e0\uccad +button.realname=\uc2e4\uba85\ud655\uc778 +button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.agree=\ub3d9\uc758 +button.disagree=\ube44\ub3d9\uc758 +button.possible=\uac00\ub2a5 +button.impossible=\ubd88\uac00\ub2a5 +button.qnaregist=Q&A\ub4f1\ub85d +button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d +button.preview=\ubbf8\ub9ac\ubcf4\uae30 +button.next=\ub2e4\uc74c +button.add=\ubc14\ub85c\ucd94\uac00 +button.confirm=\ud655\uc778 +button.back = \ub4a4\ub85c +button.yes = \uc608 +button.no = \uc544\ub2c8\uc624 +button.home = \ud648 +button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 +button.cop = \ud611\uc5c5 +button.wrkstart = \ucd9c\uadfc +button.wrkend = \ud1f4\uadfc +button.reply = \ub2f5\uae00 +button.scrap = \uc2a4\ud06c\ub7a9 +button.comment = \ub313\uae00 +button.excel = \uc5d1\uc140 +button.init=\ucd08\uae30\ud654 +button.acknowledgment=\uc2b9\uc778 +button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c +button.bulkUpload=\uc77c\uad04\ub4f1\ub85d +button.log = \ub85c\uadf8 +button.set = \uc124\uc815 +button.move = \uc774\ub3d9 +button.answer = \ub2f5\ubcc0 + +#UI Common Message# +common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. +common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4. +common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4. +common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. + +common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694 +common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4. +common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4. +common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. + +fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4! +fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558) +fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#UI User Message# +fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328) +info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +#Vlidator Errors# +errors.prefix=
+errors.suffix=

+ +errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4. +errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.integer={0}\uc740(\ub294) integer \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.long={0}\uc740(\ub294) long \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.float={0}\uc740(\ub294) float \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.double={0}\uc740(\ub294) double \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. + +errors.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4. +errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4. + +errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4. +errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4. +errors.english={0}\uc740(\ub294) \uc601\ubb38\ub9cc \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc788\uc2b5\ub2c8\ub2e4. +errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckcomb3={0}\uc740(\ub294) \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckcomb4={0}\uc740(\ub294) \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckseries={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckrepeat={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +error.security.runtime.error = error + +info.password.rule.password1 = - 8\uc774\uc0c1 20\uc790\ub9ac \uc774\ud558 +info.password.rule.pwdcheckcomb3 = - \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckcomb4 = - \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckseries = - 3\uc790\ub9ac \uc774\uc0c1 \ubc18\ubcf5 \ub610\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790 \uc0ac\uc6a9 \uae08\uc9c0. \uc608)kkk , 321 \ub4f1 \uc0ac\uc6a9\uae08\uc9c0 + +#Xss Errors# +errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +#File Upload / Download +errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. +success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#common# +comCmmErr.button=\uc774\uc804 \ud398\uc774\uc9c0 + +#accessDenied# +comCmmErr.accessDenied.title=\ud604\uc7ac \ud398\uc774\uc9c0\uc5d0 \ub300\ud55c \uc811\uadfc\uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4! +comCmmErr.accessDenied.code=\uc0ac\uc6a9\uc790\uc811\uadfc\uad8c\ud55c \uc5d0\ub7ec + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=\ub370\uc774\ud130 \ucc98\ub9ac \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4! +comCmmErr.dataAccessFailure.code=\ub370\uc774\ud130\ucc98\ub9ac \uc5d0\ub7ec + +#bizException# +comCmmErr.bizException.title=\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ucc98\ub9ac \uc911 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.bizException.code=\ube44\uc988\ub2c8\uc2a4\ub85c\uc9c1\ucc98\ub9ac \uc5d0\ub7ec + +#runtimeException# +comCmmErr.runtimeException.title=\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.runtimeException.code=\uc2dc\uc2a4\ud15c \uc5d0\ub7ec + +#sessionException# +comCmmErr.sessionException.title=\uc138\uc158\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4! +comCmmErr.sessionException.code=\uc138\uc158\ub9cc\ub8cc \uc5d0\ub7ec + + +#top# +comCmm.top.title=\uc804\uc790\uc815\ubd80 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c \uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 VERSION 4.0 +comCmm.top.leftSessionTime=\uc138\uc158\ub9cc\ub8cc \ub0a8\uc740\uc2dc\uac04 +comCmm.top.incSessionTime=\uc2dc\uac04\uc5f0\uc7a5 +comCmm.top.expiredSessionTime=\uc2dc\uac04\ub9cc\ub8cc +comCmm.top.expireSessionTimeInfo=\ub85c\uadf8\uc778 \uc138\uc158\uc2dc\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.top.cantIncSessionTime=\uc2dc\uac04\uc744 \uc5f0\uc7a5\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +#left# +comCmm.mai.title=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 +comCmm.uat.title=\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d +comCmm.sec.title=\ubcf4\uc548 +comCmm.sts.title=\ud1b5\uacc4/\ub9ac\ud3ec\ud305 +comCmm.cop.title=\ud611\uc5c5 +comCmm.uss.title=\uc0ac\uc6a9\uc790\uc9c0\uc6d0 +comCmm.sym.title=\uc2dc\uc2a4\ud15c\uad00\ub9ac +comCmm.ssi.title=\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4 +comCmm.dam.title=\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac +comCmm.com.title=\uc694\uc18c\uae30\uc220 +comCmm.ext.title=\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8 + +#component# +#\ud3ec\ud0c8 \uba54\uc778\ud654\uba74# +comCmm.left.1=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 + +#\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d# +comCmm.left.10=\ub85c\uadf8\uc778 +comCmm.left.30=\ub85c\uadf8\uc778\uc815\ucc45\uad00\ub9ac + +#\ubcf4\uc548# +comCmm.left.60=\uad8c\ud55c\uad00\ub9ac +comCmm.left.70=\uad8c\ud55c\uadf8\ub8f9\uad00\ub9ac +comCmm.left.80=\uadf8\ub8f9\uad00\ub9ac +comCmm.left.90=\ub864\uad00\ub9ac +comCmm.left.100=\ubd80\uc11c\uad8c\ud55c\uad00\ub9ac + +#\ud1b5\uacc4/\ub9ac\ud3ec\ud305# +comCmm.left.120=\uac8c\uc2dc\ubb3c\ud1b5\uacc4 +comCmm.left.130=\uc0ac\uc6a9\uc790\ud1b5\uacc4 +comCmm.left.140=\uc811\uc18d\ud1b5\uacc4 +comCmm.left.150=\ud654\uba74\ud1b5\uacc4 +comCmm.left.160=\ubcf4\uace0\uc11c\ud1b5\uacc4 +comCmm.left.161=\uc790\ub8cc\uc774\uc6a9\ud604\ud669\ud1b5\uacc4 + +\ud611\uc5c5 +comCmm.left.170=\ube14\ub85c\uadf8\uad00\ub9ac +comCmm.left.180=\uac8c\uc2dc\ud310\uad00\ub9ac +comCmm.left.190=\uac8c\uc2dc\ud310\uc0ac\uc6a9\uc815\ubcf4 +comCmm.left.200=\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.250=\uc2a4\ud06c\ub7a9 \ubaa9\ub85d +comCmm.left.270=\ucee4\ubba4\ub2c8\ud2f0\uad00\ub9ac +comCmm.left.310=\ubb38\uc790\uba54\uc2dc\uc9c0 +comCmm.left.320=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac +comCmm.left.330=\uc77c\uc815\uad00\ub9ac +comCmm.left.340=\uc77c\uc9c0\uad00\ub9ac +comCmm.left.350=\uc804\uccb4\uc77c\uc815\uad00\ub9ac +comCmm.left.360=\uba54\uc77c\ubc1c\uc1a1 +comCmm.left.361=\ubc1c\uc1a1\uba54\uc77c\ub0b4\uc5ed +comCmm.left.370=\uba85\ud568\uad00\ub9ac +comCmm.left.371=\ub0b4\uba85\ud568\ubaa9\ub85d +comCmm.left.380=\uc8fc\uc18c\ub85d\uad00\ub9ac +comCmm.left.390=\uac04\ubd80\uc77c\uc815\uad00\ub9ac +comCmm.left.400=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +comCmm.left.401=\ubd80\uc11c\uc5c5\ubb34\uc815\ubcf4 +comCmm.left.410=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0\uad00\ub9ac +comCmm.left.420=\uba54\ubaa8\ud560\uc77c\uad00\ub9ac +comCmm.left.430=\uba54\ubaa8\ubcf4\uace0 + +#\uc0ac\uc6a9\uc790\uc9c0\uc6d0# +comCmm.left.450=\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac +comCmm.left.460=\uc5c5\ubb34\uc0ac\uc6a9\uc790\uad00\ub9ac +comCmm.left.461=\ubd80\uc11c\uad00\ub9ac +comCmm.left.470=\uc77c\ubc18\ud68c\uc6d0\uad00\ub9ac +comCmm.left.480=\ub9c8\uc774\ud398\uc774\uc9c0\uad00\ub9ac +comCmm.left.490=\uc57d\uad00\uad00\ub9ac +comCmm.left.500=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 +comCmm.left.510=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ud655\uc778 +comCmm.left.520=\ub3c4\uc6c0\ub9d0 +comCmm.left.530=\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.540=FAQ\uad00\ub9ac +comCmm.left.550=Q&A\uad00\ub9ac +comCmm.left.551=Q&A\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.560=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.561=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804\uad00\ub9ac +comCmm.left.570=\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.571=\uc0ac\uc6a9\uc790\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.580=\uc0c1\ub2f4\uad00\ub9ac +comCmm.left.581=\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.590=\uc124\ubb38\uad00\ub9ac +comCmm.left.600=\uc124\ubb38\uc870\uc0ac +comCmm.left.610=\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.620=\uc751\ub2f5\uc790\uad00\ub9ac +comCmm.left.630=\uc9c8\ubb38\uad00\ub9ac +comCmm.left.640=\ud56d\ubaa9\uad00\ub9ac +comCmm.left.650=\ud68c\uc758\uad00\ub9ac +comCmm.left.660=\uc628\ub77c\uc778poll\uad00\ub9ac +comCmm.left.661=\uc628\ub77c\uc778poll\ucc38\uc5ec +comCmm.left.670=\ub274\uc2a4\uad00\ub9ac +comCmm.left.680=\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.700=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.710=\ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 +comCmm.left.711=\uc678\ubd80\uc778\uc0ac\uc815\ubcf4 +comCmm.left.720=\ud31d\uc5c5\ucc3d\uad00\ub9ac +comCmm.left.730=\uc815\ubcf4\uc54c\ub9bc\uc774 +comCmm.left.740=\ubc30\ub108\uad00\ub9ac +comCmm.left.741=MYPAGE\ubc30\ub108\uad00\ub9ac +comCmm.left.750=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.760=\ucd5c\uadfc\uac80\uc0c9\uc5b4 \uc870\ud68c +comCmm.left.770=\uba54\uc778\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.771=\uba54\uc778\uc774\ubbf8\uc9c0 \ubc18\uc601\uacb0\uacfc\ubcf4\uae30 +comCmm.left.780=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac +comCmm.left.790=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac +comCmm.left.800=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4\ubc0f\uad00\ub9ac +comCmm.left.810=Wiki\uae30\ub2a5 +comCmm.left.820=RSS\ud0dc\uadf8\uad00\ub9ac +comCmm.left.822=RSS\ud0dc\uadf8\uc11c\ube44\uc2a4 +comCmm.left.830=Twitter\uc5f0\ub3d9 +comCmm.left.831=Facebook \uc5f0\ub3d9 +comCmm.left.840=\ucabd\uc9c0\uad00\ub9ac +comCmm.left.850=\ubc1b\uc740\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.860=\ubcf4\ub0b8\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.870=\ud68c\uc758\uc2e4\uad00\ub9ac +comCmm.left.871=\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +comCmm.left.890=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uad00\ub9ac +comCmm.left.891=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uc2b9\uc778\uad00\ub9ac +comCmm.left.900=\ud734\uac00\uad00\ub9ac +comCmm.left.901=\ud734\uac00\uc2b9\uc778\uad00\ub9ac +comCmm.left.902=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +comCmm.left.910=\ub2f9\uc9c1\uad00\ub9ac +comCmm.left.911=\ub2f9\uc9c1\uccb4\ud06c\uad00\ub9ac +comCmm.left.920=\ud3ec\uc0c1\uad00\ub9ac +comCmm.left.921=\ud3ec\uc0c1\uc2b9\uc778\uad00\ub9ac +comCmm.left.930=\uae30\ub150\uc77c\uad00\ub9ac +comCmm.left.931=\uae30\ub150\uc77c\ubaa9\ub85d(\ud655\uc778\uc6a9) +comCmm.left.940=\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac +comCmm.left.941=\ud589\uc0ac\uc811\uc218\uad00\ub9ac +comCmm.left.942=\ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac +comCmm.left.943=\uc57d\ub3c4 \uad00\ub9ac +comCmm.left.950=\ucd9c\ud1f4\uadfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c\uad00\ub9ac# +comCmm.left.960=\uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc +comCmm.left.970=\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc +comCmm.left.980=\uacf5\ud1b5\ucf54\ub4dc +comCmm.left.1000=\uc6b0\ud3b8\ubc88\ud638\uad00\ub9ac +comCmm.left.1010=\ud589\uc815\ucf54\ub4dc\uad00\ub9ac +comCmm.left.1020=\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 +comCmm.left.1030=\ub85c\uadf8\uad00\ub9ac +comCmm.left.1040=\uc0ac\uc6a9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1050=\uc1a1/\uc218\uc2e0\ub85c\uadf8\uad00\ub9ac +comCmm.left.1060=\uc2dc\uc2a4\ud15c\uc774\ub825\uad00\ub9ac +comCmm.left.1070=\uc6f9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1080=\uc811\uc18d\ub85c\uadf8\uad00\ub9ac +comCmm.left.1085=\uac1c\uc778\uc815\ubcf4\uc870\ud68c\ub85c\uadf8\uad00\ub9ac +comCmm.left.1090=\uba54\ub274\ub9ac\uc2a4\ud2b8\uad00\ub9ac +comCmm.left.1091=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comCmm.left.1100=\uba54\ub274\uc0dd\uc131\uad00\ub9ac +comCmm.left.1101=\uc0ac\uc774\ud2b8\ub9f5 +comCmm.left.1110=\ubc14\ub85c\uac00\uae30\uba54\ub274\uad00\ub9ac +comCmm.left.1111=\ud504\ub85c\uadf8\ub7a8\uad00\ub9ac +comCmm.left.1112=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\uad00\ub9ac +comCmm.left.1113=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comCmm.left.1114=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comCmm.left.1120=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac +comCmm.left.1130=\ubc30\uce58\uacb0\uacfc\uad00\ub9ac +comCmm.left.1140=\uc2a4\ucf00\uc904\ucc98\ub9ac +comCmm.left.1150=\ubc31\uc5c5\uad00\ub9ac +comCmm.left.1151=\ubc31\uc5c5\uacb0\uacfc\uad00\ub9ac +comCmm.left.1160=\ub124\ud2b8\uc6cc\ud06c\uad00\ub9ac +comCmm.left.1170=\uc11c\ubc84\uc815\ubcf4\uad00\ub9ac +comCmm.left.1171=\uc11c\ubc84(S/W)\ubaa9\ub85d +comCmm.left.1180=\uc7a5\uc560\uc2e0\uccad\uad00\ub9ac +comCmm.left.1190=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4# +comCmm.left.1210=\uc2dc\uc2a4\ud15c\uc5f0\uacc4\uad00\ub9ac +comCmm.left.1220=\uc5f0\uacc4\ud604\ud669\uad00\ub9ac +comCmm.left.1230=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uad00\ub9ac +comCmm.left.1240=\uc5f0\uacc4\uae30\uad00\uad00\ub9ac + +#\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac# +comCmm.left.1250=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac +comCmm.left.1260=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc720\ud615) +comCmm.left.1261=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc870\uc9c1) +comCmm.left.1270=\uc9c0\uc2dd\uc804\ubb38\uac00\uad00\ub9ac +comCmm.left.1280=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac +comCmm.left.1290=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac +comCmm.left.1291=\uc9c0\uc2dd\uc815\ubcf4\uc81c\uacf5 + +#\uc694\uc18c\uae30\uc220# +comCmm.left.1300=\uacf5\ud734\uc77c\uad00\ub9ac(\ub2ec\ub825) +comCmm.left.2080=\uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2090=DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2100=HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2110=\ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2120=\ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2130=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2140=\ud504\ub85d\uc2dc\uc11c\ube44\uc2a4 +comCmm.left.2150=\ud30c\uc77c\ub3d9\uae30\ud654(\ub300\uc0c1\uc11c\ubc84) +comCmm.left.2160=\ub85c\uadf8\uc778\uc138\uc158\uc815\ubcf4\uccb4\ud06c +comCmm.left.2170=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1-\ub300\uc0c1\ubaa9\ub85d +comCmm.left.2180=\uc8fc\uc18c\uc815\ubcf4\uc5f0\uacc4 +comCmm.left.2200=\uc554\ud638\ud654/\ubcf5\ud638\ud654 + +#\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8# +comCmm.left.3000=JFile \uac00\uc774\ub4dc +comCmm.left.3010=JFile \ud30c\uc77c \uc5c5\ub85c\ub4dc +comCmm.left.3020=JFile \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc +comCmm.left.3100=LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac +comCmm.left.3110=LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504 +comCmm.left.3200=\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800 + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=\uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 +comCmm.unitContent.2=\ub2d8 \ud658\uc601\ud569\ub2c8\ub2e4. +comCmm.unitContent.3=\ub85c\uadf8\uc544\uc6c3 +comCmm.unitContent.4=\uc2e4\ud589 \uc2dc \uc624\ub958 \uc0ac\ud56d\uc774 \uc788\uc73c\uc2dc\uba74 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c\uc13c\ud130\ub85c \uc5f0\ub77d\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. +comCmm.unitContent.5=\ud654\uba74 \uc124\uba85 +comCmm.unitContent.6=\uc67c\ucabd \uba54\ub274\ub294 \uba54\ub274\uc640 \uad00\ub828\ub41c \ucef4\ud3ec\ub10c\ud2b8(\uba54\ub274\uad00\ub9ac, \uc0ac\uc774\ud2b8\ub9f5 \ub4f1)\ub4e4\uc758 \uc601\ud5a5\uc744 \ubc1b\uc9c0 \uc54a\uc73c\uba70, +comCmm.unitContent.7=\uac01 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc27d\uac8c \ucc3e\uc544\ubcfc \uc218 \uc788\ub294 \ubc14\ub85c \uac00\uae30 \ub9c1\ud06c\ud398\uc774\uc9c0\uc785\ub2c8\ub2e4. +comCmm.unitContent.8=\ucef4\ud3ec\ub10c\ud2b8 \uc124\uce58 \ud6c4 \uc124\uce58\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 IncludedInfo annotation\uc744 \ud1b5\ud574 \ucc3e\uc544\ub0b8 \ud6c4 +comCmm.unitContent.9=\ud654\uba74\uc5d0 \ud45c\uc2dc\ud560 \uc815\ubcf4\ub97c \ucc98\ub9ac\ud558\ub294 Controller \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. +comCmm.unitContent.10=\uac1c\ubc1c \uc2dc \uba54\ub274 \uad6c\uc870\uac00 \uc7a1\ud788\uae30 \uc804\uc5d0 \ubc30\ud3ec \ud30c\uc77c\ub4e4\uc5d0 \ud3ec\ud568\ub41c \uacf5\ud1b5 \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc758 \ubaa9\ub85d\uc131 \ud654\uba74\uc5d0 URL\uc744 \uc81c\uacf5\ud558\uc5ec +comCmm.unitContent.11=\uac1c\ubc1c\uc790\uac00 \ud3b8\ub9ac\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.unitContent.12=\uc6b4\uc601 \uc2dc\uc5d0 \ubcf8 \ucee8\ud2b8\ub864\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba54\ub274\ub97c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0, +comCmm.unitContent.13=\uc131\ub2a5 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\uac70\ub098 \uc0ac\uc6a9\uc790\ubcc4 \uba54\ub274 \uad6c\uc131\uc5d0 \uc624\ub958\ub97c \ubc1c\uc0dd\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 +comCmm.unitContent.14=\uc2e4 \uc6b4\uc601 \uc2dc\uc5d0\ub294 \uc0ad\uc81c\ud574\uc11c \ubc30\ud3ec\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. + +comCmm.unitContent.20=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc \uc548\ub0b4 + +#EgovExpirePwd(\ube44\ubc00\ubc88\ud638\ubcc0\uacbd \uacf5\uc9c0)# +comCmm.expirePwdContent.1=\ub85c\uadf8\uc778 +comCmm.expirePwdContent.2=\ub85c\uadf8\uc778 \uad6c\ubd84 + +comCmm.expirePwdContent.10=\uc5c5\ubb34\uc0ac\uc6a9\uc790 +comCmm.expirePwdContent.11=\uae30\uc5c5\ud68c\uc6d0 +comCmm.expirePwdContent.12=\uc77c\ubc18\ud68c\uc6d0 + +comCmm.expirePwdContent.21=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc758 \ubcc0\uacbd\uc740 \ub2e4\uc74c \ud30c\uc77c\uc744 \ucc38\uc870\ud558\uc5ec \uc8fc\uc138\uc694. +comCmm.expirePwdContent.22=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc +comCmm.expirePwdContent.23=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.expirePwdContent.24=\uc548\uc804\ud55c \uac1c\uc778\uc815\ubcf4 \ubcf4\ud638\ub97c \uc704\ud574 \uc9c0\uae08 \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694! +comCmm.expirePwdContent.25=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.26=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 +comCmm.expirePwdContent.27=\ube44\ubc00\ubc88\ud638 \ubcc0\uacbd\ud6c4 \uacbd\uacfc\uc77c\uc218 +comCmm.expirePwdContent.28=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.29=\uc8fc\uae30\uc801\uc73c\ub85c \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694. +comCmm.expirePwdContent.30=\uc77c + +comCmm.expirePwdContent.50=\uc9c0\uae08 \uc989\uc2dc \ubcc0\uacbd\ud558\uae30 +comCmm.expirePwdContent.51=\ub2e4\uc74c\uc5d0 \ubcc0\uacbd\ud558\uae30 \ No newline at end of file diff --git a/src/main/resources/messages/message-common_en.properties b/src/main/resources/messages/message-common_en.properties new file mode 100644 index 00000000..4e7a26b1 --- /dev/null +++ b/src/main/resources/messages/message-common_en.properties @@ -0,0 +1,468 @@ +fail.common.msg=error ocurred! +fail.common.sql=sql error ocurred! error code: {0}, error msg: {1} +info.nodata.msg=no data found. + +#UI Common resource# +table.num=num. +table.regdate=reg.date +table.reger=registrant +table.select=select +title.html=egovframe common component +title.detail=Detail Inquiry +title.inquire=Inquire +title.update=Modify +title.create=Create +title.delete=Delete +title.save=Save +title.list=List +title.searchCondition=search condition +title.search=keyword +title.reply=reply +title.scrap=scrap +title.comment=comment +title.attachedFileSelect=attached file +title.attachedFileDelete=attached file delete +title.link=link +title.management=Management +title.all=All + +input.select=Select +input.cSelect=Select +input.input=input +input.button=button +input.selectAll.title=Checkbox select all +input.yes=Yes +input.no=No + +select.searchCondition=select condition select + +button.select=select +button.search=Search +button.use=use +button.notUsed=Not used +button.inquire=inquire +button.update=update +button.create=create +button.delete=delete +button.deleteDatabase=Wiping +button.close=close +button.save=save +button.list=list +button.reset=reset +button.passwordUpdate=password update +button.subscribe=subscribe +button.realname=realname confirm +button.moveToGpin=move to gpin confirm +button.moveToIhidnum=move to ihidnum confirm +button.agree=agree +button.disagree=disagree +button.possible=possible +button.impossible=impossible +button.qnaregist=Q&A create +button.cnsltregist=Counsel create +button.preview=preview +button.next=nexut +button.add=add it now +button.confirm=confirm +button.back =back +button.yes =yes +button.no =no +button.home =home +button.user =user support +button.cop =cooperation +button.wrkstart = work start +button.wrkend = work end +button.reply = reply +button.scrap = scrap +button.comment = comment +button.excel = excel +button.init=init +button.acknowledgment=acknowledgment +button.cancelAcknowledgment=cancel acknowledgment +button.bulkUpload=bulk upload +button.log = log +button.set = set +button.move = move +button.answer = answer + +#UI Common Message# +common.noScriptTitle.msg=I can't use all functions in browser JavaScript is not supported. +common.searchCondition.msg=This layout is a lower information searches made up of information. + +common.summary.list={0} A list of the details of the output. +common.summary.regist={0} Registered by typing the possible contents of registers by clicking the button. +common.summary.update={0} Registered by typing the possible content of modification by clicking the button. +common.summary.inqire={0} Full inquiry details about the details of the output. + +common.save.msg=confirm save? +common.regist.msg=confirm regist? +common.delete.msg=confirm delete? +common.update.msg=confirm update? +common.nodata.msg=There is no data. please choose another seach keyword +common.required.msg=is required field +common.acknowledgement.msg=confirm acknowledgement? +common.acknowledgementcancel.msg=confirm acknowledgement cancel? +common.nocomment.msg=There is no comment. +common.noguest.msg=There is no guest notice. + +success.request.msg=you're request successfully done +success.common.select=successfully selected +success.common.insert=successfully inserted +success.common.update=successfully updated +success.common.delete=successfully deleted + +common.imposbl.fileupload = cannot upload files +common.isConfmDe.msg=Please check the approval date box +common.isExist.msg = already exist + +fail.common.insert = fail to insert. +fail.common.update = fail to update +fail.common.delete = fail to delete +fail.common.delete.upperMenuExist = fail to delete[upperMenuId foreign key error] +fail.common.select = fail to select +fail.common.login = login information is not correct +fail.common.loginIncorrect = login in more than {0} account will be locked! +fail.common.login.password = password information is not correct(password digit should be 8 to 20) +fail.common.idsearch = can not find id +fail.common.pwsearch = can not find password +fail.request.msg = Failed to handle the request +fail.common.login.ip = Login is refused because it is not a registered IP. + +#UI User Message# +fail.user.passwordUpdate1=current password is not correct +fail.user.passwordUpdate2=password confirm is not correct +info.user.rlnmCnfirm=realname confirm ready +success.user.rlnmCnfirm=it is realname +fail.user.rlnmCnfirm=it is not realname +fail.user.connectFail=connection fail +info.user.rlnmPinCnfirm=Using the i-PIN ID, please check your real name +success.user.rlnmPinCnfirm=Consistent with the registration data of the i-PIN +fail.user.rlnmPinCnfirm=i-PIN does not match the registered data + +#Vlidator Errors# +errors.prefix=
+errors.suffix=

+ +errors.required={0} is required. +errors.minlength={0} can not be less than {1} characters. +errors.maxlength={0} can not be greater than {1} characters. +errors.invalid={0} is invalid. + +errors.byte={0} must be a byte. +errors.short={0} must be a short. +errors.integer={0} must be an integer. +errors.long={0} must be a long. +errors.float={0} must be a float. +errors.double={0} must be a double. + +errors.date={0} is not a date. +errors.range={0} is not in the range {1} through {2}. +errors.creditcard={0} is an invalid credit card number. +errors.email={0} is an invalid e-mail address. + +errors.ihidnum=Is not a valid Social Security number +errors.korean={0} should be entered with their Korean +errors.ip=Invalid IP address. +errors.english={0}is an invalid English character. +errors.notKorean={0} should not be entered with their Korean + +errors.password1={0} must be entered within 8 to 20 characters. +errors.password2={0} is Korean, special characters, spaces are not allowed. +errors.password3={0} can not be used continuously for more than four sequential digits. +errors.password4={0} can not be used continuously for more than 4 letters or numbers that are repeated. +errors.pwdcheckcomb3={0} must be include as least 3 of English alphabet, digit number, special characters such as ~!@#$%^&*? +errors.pwdcheckcomb4={0} must be include as least 4 of English alphabet uppercase letter, English alphabet lowercase letter, digit number, special characters such as ~!@#$%^&*? +errors.pwdcheckseries={0} can not be used continuously for more than 3 sequential letters or digits. +errors.pwdcheckrepeat={0} can not be used continuously for more than 3 letters or numbers that are repeated. + +error.security.runtime.error = error + +info.password.rule.password1 = - must be entered within 8 to 20 characters. +info.password.rule.pwdcheckcomb3 = - must be include as least 3 of English alphabet, digit number, special characters such as ~!@#$%^&*? +info.password.rule.pwdcheckcomb4 = - must be include as least 4 of English alphabet uppercase letter, English alphabet lowercase letter, digit number, special characters such as ~!@#$%^&*? +info.password.rule.pwdcheckseries = - can not be used continuously for more than 3 sequential letters or digits ex) kkk, 321 are not allowed. + +#Xss Errors# +errors.xss.checkerUser=There is no use and disposal authority for its capabilities. + +#File Upload / Download +errors.file.extension=It is not a supported file type. +errors.file.transfer=An error occurred during file transfer. +success.file.transfer=The file transfer is complete. + +#common# +comCmmErr.button=before page + +#accessDenied# +comCmmErr.accessDenied.title=You do not have permission to access this page! +comCmmErr.accessDenied.code=User authorization Error + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=Error occurred while processing data! +comCmmErr.dataAccessFailure.code=Database Processing Error + + +#bizException# +comCmmErr.bizException.title=During business logic processing! +comCmmErr.bizException.code=Business Logic Processing Error + +#runtimeException# +comCmmErr.runtimeException.title=Unknown error occurred! +comCmmErr.runtimeException.code=System Error + +#sessionException# +comCmmErr.sessionException.title=Session Expiration Error! +comCmmErr.sessionException.code=Session Expiration Error + + +#top# +comCmm.top.title=eGoverment Standard Framework Common Components VERSION 4.0 +comCmm.top.leftSessionTime=Session expiration time +comCmm.top.incSessionTime=Time extension +comCmm.top.expiredSessionTime=Time out +comCmm.top.expireSessionTimeInfo=The Signin session time has expired. +comCmm.top.cantIncSessionTime=Time cannot be extended. + +#left# +comCmm.mai.title=Portal(example) Main Page +comCmm.uat.title=User Authentication/Directory Service +comCmm.sec.title=Security +comCmm.sts.title=Statistics/Reporting +comCmm.cop.title=Collaboration +comCmm.uss.title=User Support +comCmm.sym.title=System Management +comCmm.ssi.title=System/Service Integration +comCmm.dam.title=Digital Asset Management +comCmm.com.title=Utility Technology +comCmm.ext.title=External Add Components + +#component# +#Portal(example) Main Page# +comCmm.left.1=Portal(example) Main Page + +#User Authentication/Directory Service# +comCmm.left.10=Log In +comCmm.left.30=Log In Policy Management + +#Security# +comCmm.left.60=Authority Management +comCmm.left.70=Authority Group Management +comCmm.left.80=Group Management +comCmm.left.90=Role management for Each Authority +comCmm.left.100=Department Authority Management + +#Statistics/Reporting# +comCmm.left.120=Post Statistics +comCmm.left.130=User Statistics +comCmm.left.140=Connection Statistics +comCmm.left.150=Screen Statistics +comCmm.left.160=Report Statistics +comCmm.left.161=Data Usage Statistics + +#Collaboration# +comCmm.left.170=Blog Management +comCmm.left.180=Board Master Management +comCmm.left.190=Board Usage Management +comCmm.left.200=Template Management +comCmm.left.250=Scrap Management +comCmm.left.270=Community Creation/Usage/Member Management +comCmm.left.310=SMS Service +comCmm.left.320=Department Schedule Management +comCmm.left.330=Schedule Management +comCmm.left.340=Diary Management +comCmm.left.350=Master Schedule +comCmm.left.360=Send Mail +comCmm.left.361=Send Mail List +comCmm.left.370=Business Card Management +comCmm.left.371=My Business Card Management +comCmm.left.380=Address Book Management +comCmm.left.390=Executive Schedule Management +comCmm.left.400=Division Task Folder Management +comCmm.left.401=Division Task Information +comCmm.left.410=Weekly/Monthly Reports Management +comCmm.left.420=Memo/To-do List Management +comCmm.left.430=Memo Report + +#User Support# +comCmm.left.450=Corporate Member Management +comCmm.left.460=User Management +comCmm.left.461=Department Management +comCmm.left.470=Member Management +comCmm.left.480=My Page +comCmm.left.490=Provision Management +comCmm.left.500=Copyright Protection Policy +comCmm.left.510=Private Information Protection Policy +comCmm.left.520=Help +comCmm.left.530=Word Dictionary +comCmm.left.540=FAQ Management +comCmm.left.550=Q&A Management +comCmm.left.551=Q&A Answer +comCmm.left.560=Administration Terminology Dictionary +comCmm.left.561=Administration Terminology Dictionary Management +comCmm.left.570=Online Manual +comCmm.left.571=User Online Manual +comCmm.left.580=Consulting Management +comCmm.left.581=Consulting Answer Management +comCmm.left.590=Questionnaire Management +comCmm.left.600=Questionnaire Survey +comCmm.left.610=Questionnaire Template Management +comCmm.left.620=Questionnaire Respond Management +comCmm.left.630=Questionnaire Question Management +comCmm.left.640=Questionnaire Item Management +comCmm.left.650=Meeting Management +comCmm.left.660=Online POLL Management +comCmm.left.661=Online POLL Participation +comCmm.left.670=News Management +comCmm.left.680=Site Management +comCmm.left.700=Recommended Site Management +comCmm.left.710=Occasion/Event/Campaign +comCmm.left.711=Extra Human Resource +comCmm.left.720=Pop-up Management +comCmm.left.730=Information Alerts +comCmm.left.740=Banner Management +comCmm.left.741=MYPAGE Banner Management +comCmm.left.750=Login Page Image Management +comCmm.left.760=Recent Search Word Inquiry +comCmm.left.770=Main Image Management +comCmm.left.771=Main Image View Reflection Result +comCmm.left.780=Link Intergration Management +comCmm.left.790=User Absence Management +comCmm.left.800=Internet Service Information and Management +comCmm.left.810=Wiki Function +comCmm.left.820=RSS Tag Management +comCmm.left.822=RSS Tag Service +comCmm.left.830=Twitter Linkage +comCmm.left.831=Facebook Linkage +comCmm.left.840=Note Management +comCmm.left.850=Received Note Box Management +comCmm.left.860=Sent Note Box Management +comCmm.left.870=Meeting Room Management +comCmm.left.871=Meeting Room Reservation Management +comCmm.left.890=Employee Family Event Management +comCmm.left.891=Employee Congratulatory Approval Management +comCmm.left.900=Vacation Management +comCmm.left.901=Vacation Approval Management +comCmm.left.902=Personal Vocation Management +comCmm.left.910=Duty Management +comCmm.left.911=Duty Journal Management +comCmm.left.920=Compensation +comCmm.left.921=Compensation Approval Management +comCmm.left.930=Anniversary Management +comCmm.left.931=Anniversary List (Check) +comCmm.left.940=Event Application Management +comCmm.left.941=Event Reception Management +comCmm.left.942=Event Reception Approval Management +comCmm.left.943=Office Location Management +comCmm.left.950=Commute Management + +#System Management# +comCmm.left.960=Common Classification Code +comCmm.left.970=Common Detail Code +comCmm.left.980=Common Code +comCmm.left.1000=Address Management +comCmm.left.1010=Administration Code Management +comCmm.left.1020=Institutions Code Management +comCmm.left.1030=Log Management +comCmm.left.1040=User Log Management +comCmm.left.1050=Transmit/Receive Log Management +comCmm.left.1060=System History Management +comCmm.left.1070=Web Log Management +comCmm.left.1080=Connection Log Management +comCmm.left.1085=Privacy Log Management +comCmm.left.1090=Menu Management +comCmm.left.1091=Menu Management List +comCmm.left.1100=Menu Creation Management +comCmm.left.1101=Site Map +comCmm.left.1110=Short Cut Menu Management +comCmm.left.1111=Program Management +comCmm.left.1112=Program Change Management +comCmm.left.1113=Program Change Process +comCmm.left.1114=Program Change History +comCmm.left.1120=Batch Work Management +comCmm.left.1130=Batch Result Management +comCmm.left.1140=Schedule Process +comCmm.left.1150=Backup Management +comCmm.left.1151=Backup Result Management +comCmm.left.1160=NetWork Management +comCmm.left.1170=Server Information Management +comCmm.left.1171=Server S/W List +comCmm.left.1180=Trouble Request Management +comCmm.left.1190=Trouble Process Result Management + +#System/Service Integration# +comCmm.left.1210=System Contact Management +comCmm.left.1220=Contact Status Management +comCmm.left.1230=Contact Message Management +comCmm.left.1240=Contact Institution Management + +#Digital Asset Management# +comCmm.left.1250=Individual Knowledge Management +comCmm.left.1260=Knowledge Map Management by Types +comCmm.left.1261=Organizational Knowledge Map Management +comCmm.left.1270=Knowledge Expert Management +comCmm.left.1280=Knowledge Information Management +comCmm.left.1290=Knowledge Evaluation Management +comCmm.left.1291=Knowledge Information Offer + +#Utility Technology# +comCmm.left.1300=General Calendar +comCmm.left.2080=Transmit and Receive Monitoring +comCmm.left.2090=DB Service Monitoring +comCmm.left.2100=HTTP Service Monitoring +comCmm.left.2110=Process Monitoring +comCmm.left.2120=Network Service Monitoring +comCmm.left.2130=File System Monitoring +comCmm.left.2140=Proxy Service +comCmm.left.2150=File Synchronization +comCmm.left.2160=Login Session Information Check +comCmm.left.2170=Server Resource Monitoring +comCmm.left.2180=Address Info Linkage +comCmm.left.2200=Encryption/Decryption + +#External Add Components# +comCmm.left.3000=JFile Guide +comCmm.left.3010=JFile File Upload +comCmm.left.3020=JFile File Download +comCmm.left.3100=LDAP Org. Management +comCmm.left.3110=LDAP Org. Graph +comCmm.left.3200=WebMessenger + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=Common Compoent +comCmm.unitContent.2=Welcome. +comCmm.unitContent.3=Logout +comCmm.unitContent.4=If you run into any errors, please contact the eGovframework center. +comCmm.unitContent.5=Screen description +comCmm.unitContent.6=The left menu is not affected by the menu-related components (menu management, site map, etc.) +comCmm.unitContent.7=Controller class that finds installed components after installing components through IncludedInfo annotation and processes information to be displayed on the screen. +comCmm.unitContent.8= +comCmm.unitContent.9= +comCmm.unitContent.10=Before the menu structure is developed, +comCmm.unitContent.11=the list of common components included in the distribution files is provided. +comCmm.unitContent.12=If you use this control to configure menus at runtime, +comCmm.unitContent.13=we recommend that you delete and deploy them in production +comCmm.unitContent.14= because they can cause performance problems or cause errors in your menu configuration. + +comCmm.unitContent.20=Password expiration notice + +#EgovExpirePwd(\ube44\ubc00\ubc88\ud638\ubcc0\uacbd \uacf5\uc9c0)# +comCmm.expirePwdContent.1=Login +comCmm.expirePwdContent.2=Login classification + +comCmm.expirePwdContent.10=Manager +comCmm.expirePwdContent.11=Corporate Member +comCmm.expirePwdContent.12=General Member + +comCmm.expirePwdContent.21=Please refer to the following file to change the password expiration date. +comCmm.expirePwdContent.22=Password expiration +comCmm.expirePwdContent.23=Password validity has expired. +comCmm.expirePwdContent.24=Please change your password now for safe privacy! +comCmm.expirePwdContent.25=Password expiration days +comCmm.expirePwdContent.26=Password validity period +comCmm.expirePwdContent.27=Number of days since password change +comCmm.expirePwdContent.28=Password expiration days +comCmm.expirePwdContent.29=Please change your password periodically. +comCmm.expirePwdContent.30=days + +comCmm.expirePwdContent.50=Change immediately +comCmm.expirePwdContent.51=Change next \ No newline at end of file diff --git a/src/main/resources/messages/message-common_ko.properties b/src/main/resources/messages/message-common_ko.properties new file mode 100644 index 00000000..fc3577a6 --- /dev/null +++ b/src/main/resources/messages/message-common_ko.properties @@ -0,0 +1,467 @@ +fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +fail.common.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1} +info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +#UI Common resource# +table.num=\ubc88\ud638 +table.regdate=\ub4f1\ub85d\uc77c +table.reger=\ub4f1\ub85d\uc790 +table.select=\uc120\ud0dd +title.html=egovframe common component +title.detail=\uc0c1\uc138\uc870\ud68c +title.inquire=\uc870\ud68c +title.update=\uc218\uc815 +title.create=\ub4f1\ub85d +title.delete=\uc0ad\uc81c +title.save=\uc800\uc7a5 +title.list=\ubaa9\ub85d +title.searchCondition=\uac80\uc0c9\uc870\uac74 +title.search=\uac80\uc0c9\uc5b4 +title.reply=\ub2f5\uae00 +title.scrap=\uc2a4\ud06c\ub7a9 +title.comment=\ub313\uae00 +title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd +title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c +title.link=\ub9c1\ud06c +title.management=\uad00\ub9ac +title.all=\uc804\uccb4 + +input.select=\uc120\ud0dd\ud558\uc138\uc694 +input.cSelect=\uc120\ud0dd +input.input=\uc785\ub825 +input.button=\ubc84\ud2bc +input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 +input.yes=\uc608 +input.no=\uc544\ub2c8\uc624 + +select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd + +button.select=\uc120\ud0dd +button.search=\uac80\uc0c9 +button.use=\uc0ac\uc6a9 +button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 +button.inquire=\uc870\ud68c +button.update=\uc218\uc815 +button.create=\ub4f1\ub85d +button.delete=\uc0ad\uc81c +button.deleteDatabase=\uc644\uc804\uc0ad\uc81c +button.close=\ub2eb\uae30 +button.save=\uc800\uc7a5 +button.list=\ubaa9\ub85d +button.reset=\ucde8\uc18c +button.passwordUpdate=\uc554\ud638\ubcc0\uacbd +button.subscribe=\uac00\uc785\uc2e0\uccad +button.realname=\uc2e4\uba85\ud655\uc778 +button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.agree=\ub3d9\uc758 +button.disagree=\ube44\ub3d9\uc758 +button.possible=\uac00\ub2a5 +button.impossible=\ubd88\uac00\ub2a5 +button.qnaregist=Q&A\ub4f1\ub85d +button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d +button.preview=\ubbf8\ub9ac\ubcf4\uae30 +button.next=\ub2e4\uc74c +button.add=\ubc14\ub85c\ucd94\uac00 +button.confirm=\ud655\uc778 +button.back = \ub4a4\ub85c +button.yes = \uc608 +button.no = \uc544\ub2c8\uc624 +button.home = \ud648 +button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 +button.cop = \ud611\uc5c5 +button.wrkstart = \ucd9c\uadfc +button.wrkend = \ud1f4\uadfc +button.reply = \ub2f5\uae00 +button.scrap = \uc2a4\ud06c\ub7a9 +button.comment = \ub313\uae00 +button.excel = \uc5d1\uc140 +button.init=\ucd08\uae30\ud654 +button.acknowledgment=\uc2b9\uc778 +button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c +button.bulkUpload=\uc77c\uad04\ub4f1\ub85d +button.log = \ub85c\uadf8 +button.set = \uc124\uc815 +button.move = \uc774\ub3d9 +button.answer = \ub2f5\ubcc0 + +#UI Common Message# +common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. +common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4. +common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4. +common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. + +common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694 +common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4. +common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4. +common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. + +fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4! +fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558) +fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#UI User Message# +fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328) +info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +#Vlidator Errors# +errors.prefix=
+errors.suffix=

+ +errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4. +errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.integer={0}\uc740(\ub294) integer \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.long={0}\uc740(\ub294) long \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.float={0}\uc740(\ub294) float \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.double={0}\uc740(\ub294) double \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. + +errors.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4. +errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4. + +errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4. +errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4. +errors.english={0}\uc740(\ub294) \uc601\ubb38\ub9cc \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc788\uc2b5\ub2c8\ub2e4. +errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckcomb3={0}\uc740(\ub294) \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckcomb4={0}\uc740(\ub294) \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc838\uc57c \ud569\ub2c8\ub2e4. +errors.pwdcheckseries={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.pwdcheckrepeat={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 3\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +error.security.runtime.error = error + +info.password.rule.password1 = - 8\uc774\uc0c1 20\uc790\ub9ac \uc774\ud558 +info.password.rule.pwdcheckcomb3 = - \uc601\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckcomb4 = - \uc601\ubb38\ub300\ubb38\uc790,\uc601\ubb38\uc18c\ubb38\uc790,\uc22b\uc790,\ud2b9\uc218\ubb38\uc790(~!@#$%^&*?)\uc758 \uc870\ud569 +info.password.rule.pwdcheckseries = - 3\uc790\ub9ac \uc774\uc0c1 \ubc18\ubcf5 \ub610\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790 \uc0ac\uc6a9 \uae08\uc9c0. \uc608)kkk , 321 \ub4f1 \uc0ac\uc6a9\uae08\uc9c0 + +#Xss Errors# +errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +#File Upload / Download +errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. +success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#common# +comCmmErr.button=\uc774\uc804 \ud398\uc774\uc9c0 + +#accessDenied# +comCmmErr.accessDenied.title=\ud604\uc7ac \ud398\uc774\uc9c0\uc5d0 \ub300\ud55c \uc811\uadfc\uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4! +comCmmErr.accessDenied.code=\uc0ac\uc6a9\uc790\uc811\uadfc\uad8c\ud55c \uc5d0\ub7ec + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=\ub370\uc774\ud130 \ucc98\ub9ac \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4! +comCmmErr.dataAccessFailure.code=\ub370\uc774\ud130\ucc98\ub9ac \uc5d0\ub7ec + +#bizException# +comCmmErr.bizException.title=\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ucc98\ub9ac \uc911 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.bizException.code=\ube44\uc988\ub2c8\uc2a4\ub85c\uc9c1\ucc98\ub9ac \uc5d0\ub7ec + +#runtimeException# +comCmmErr.runtimeException.title=\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.runtimeException.code=\uc2dc\uc2a4\ud15c \uc5d0\ub7ec + +#sessionException# +comCmmErr.sessionException.title=\uc138\uc158\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4! +comCmmErr.sessionException.code=\uc138\uc158\ub9cc\ub8cc \uc5d0\ub7ec + + +#top# +comCmm.top.title=\uc804\uc790\uc815\ubd80 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c \uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 VERSION 4.0 +comCmm.top.leftSessionTime=\uc138\uc158\ub9cc\ub8cc \ub0a8\uc740\uc2dc\uac04 +comCmm.top.incSessionTime=\uc2dc\uac04\uc5f0\uc7a5 +comCmm.top.expiredSessionTime=\uc2dc\uac04\ub9cc\ub8cc +comCmm.top.expireSessionTimeInfo=\ub85c\uadf8\uc778 \uc138\uc158\uc2dc\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.top.cantIncSessionTime=\uc2dc\uac04\uc744 \uc5f0\uc7a5\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +#left# +comCmm.mai.title=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 +comCmm.uat.title=\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d +comCmm.sec.title=\ubcf4\uc548 +comCmm.sts.title=\ud1b5\uacc4/\ub9ac\ud3ec\ud305 +comCmm.cop.title=\ud611\uc5c5 +comCmm.uss.title=\uc0ac\uc6a9\uc790\uc9c0\uc6d0 +comCmm.sym.title=\uc2dc\uc2a4\ud15c\uad00\ub9ac +comCmm.ssi.title=\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4 +comCmm.dam.title=\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac +comCmm.com.title=\uc694\uc18c\uae30\uc220 +comCmm.ext.title=\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8 + +#component# +#\ud3ec\ud0c8 \uba54\uc778\ud654\uba74# +comCmm.left.1=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 + +#\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d# +comCmm.left.10=\ub85c\uadf8\uc778 +comCmm.left.30=\ub85c\uadf8\uc778\uc815\ucc45\uad00\ub9ac + +#\ubcf4\uc548# +comCmm.left.60=\uad8c\ud55c\uad00\ub9ac +comCmm.left.70=\uad8c\ud55c\uadf8\ub8f9\uad00\ub9ac +comCmm.left.80=\uadf8\ub8f9\uad00\ub9ac +comCmm.left.90=\ub864\uad00\ub9ac +comCmm.left.100=\ubd80\uc11c\uad8c\ud55c\uad00\ub9ac + +#\ud1b5\uacc4/\ub9ac\ud3ec\ud305# +comCmm.left.120=\uac8c\uc2dc\ubb3c\ud1b5\uacc4 +comCmm.left.130=\uc0ac\uc6a9\uc790\ud1b5\uacc4 +comCmm.left.140=\uc811\uc18d\ud1b5\uacc4 +comCmm.left.150=\ud654\uba74\ud1b5\uacc4 +comCmm.left.160=\ubcf4\uace0\uc11c\ud1b5\uacc4 +comCmm.left.161=\uc790\ub8cc\uc774\uc6a9\ud604\ud669\ud1b5\uacc4 + +\ud611\uc5c5 +comCmm.left.170=\ube14\ub85c\uadf8\uad00\ub9ac +comCmm.left.180=\uac8c\uc2dc\ud310\uad00\ub9ac +comCmm.left.190=\uac8c\uc2dc\ud310\uc0ac\uc6a9\uc815\ubcf4 +comCmm.left.200=\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.250=\uc2a4\ud06c\ub7a9 \ubaa9\ub85d +comCmm.left.270=\ucee4\ubba4\ub2c8\ud2f0\uad00\ub9ac +comCmm.left.310=\ubb38\uc790\uba54\uc2dc\uc9c0 +comCmm.left.320=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac +comCmm.left.330=\uc77c\uc815\uad00\ub9ac +comCmm.left.340=\uc77c\uc9c0\uad00\ub9ac +comCmm.left.350=\uc804\uccb4\uc77c\uc815\uad00\ub9ac +comCmm.left.360=\uba54\uc77c\ubc1c\uc1a1 +comCmm.left.361=\ubc1c\uc1a1\uba54\uc77c\ub0b4\uc5ed +comCmm.left.370=\uba85\ud568\uad00\ub9ac +comCmm.left.371=\ub0b4\uba85\ud568\ubaa9\ub85d +comCmm.left.380=\uc8fc\uc18c\ub85d\uad00\ub9ac +comCmm.left.390=\uac04\ubd80\uc77c\uc815\uad00\ub9ac +comCmm.left.400=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +comCmm.left.401=\ubd80\uc11c\uc5c5\ubb34\uc815\ubcf4 +comCmm.left.410=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0\uad00\ub9ac +comCmm.left.420=\uba54\ubaa8\ud560\uc77c\uad00\ub9ac +comCmm.left.430=\uba54\ubaa8\ubcf4\uace0 + +#\uc0ac\uc6a9\uc790\uc9c0\uc6d0# +comCmm.left.450=\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac +comCmm.left.460=\uc5c5\ubb34\uc0ac\uc6a9\uc790\uad00\ub9ac +comCmm.left.461=\ubd80\uc11c\uad00\ub9ac +comCmm.left.470=\uc77c\ubc18\ud68c\uc6d0\uad00\ub9ac +comCmm.left.480=\ub9c8\uc774\ud398\uc774\uc9c0\uad00\ub9ac +comCmm.left.490=\uc57d\uad00\uad00\ub9ac +comCmm.left.500=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 +comCmm.left.510=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ud655\uc778 +comCmm.left.520=\ub3c4\uc6c0\ub9d0 +comCmm.left.530=\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.540=FAQ\uad00\ub9ac +comCmm.left.550=Q&A\uad00\ub9ac +comCmm.left.551=Q&A\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.560=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.561=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804\uad00\ub9ac +comCmm.left.570=\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.571=\uc0ac\uc6a9\uc790\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.580=\uc0c1\ub2f4\uad00\ub9ac +comCmm.left.581=\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.590=\uc124\ubb38\uad00\ub9ac +comCmm.left.600=\uc124\ubb38\uc870\uc0ac +comCmm.left.610=\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.620=\uc751\ub2f5\uc790\uad00\ub9ac +comCmm.left.630=\uc9c8\ubb38\uad00\ub9ac +comCmm.left.640=\ud56d\ubaa9\uad00\ub9ac +comCmm.left.650=\ud68c\uc758\uad00\ub9ac +comCmm.left.660=\uc628\ub77c\uc778poll\uad00\ub9ac +comCmm.left.661=\uc628\ub77c\uc778poll\ucc38\uc5ec +comCmm.left.670=\ub274\uc2a4\uad00\ub9ac +comCmm.left.680=\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.700=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.710=\ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 +comCmm.left.711=\uc678\ubd80\uc778\uc0ac\uc815\ubcf4 +comCmm.left.720=\ud31d\uc5c5\ucc3d\uad00\ub9ac +comCmm.left.730=\uc815\ubcf4\uc54c\ub9bc\uc774 +comCmm.left.740=\ubc30\ub108\uad00\ub9ac +comCmm.left.741=MYPAGE\ubc30\ub108\uad00\ub9ac +comCmm.left.750=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.760=\ucd5c\uadfc\uac80\uc0c9\uc5b4 \uc870\ud68c +comCmm.left.770=\uba54\uc778\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.771=\uba54\uc778\uc774\ubbf8\uc9c0 \ubc18\uc601\uacb0\uacfc\ubcf4\uae30 +comCmm.left.780=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac +comCmm.left.790=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac +comCmm.left.800=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4\ubc0f\uad00\ub9ac +comCmm.left.810=Wiki\uae30\ub2a5 +comCmm.left.820=RSS\ud0dc\uadf8\uad00\ub9ac +comCmm.left.822=RSS\ud0dc\uadf8\uc11c\ube44\uc2a4 +comCmm.left.830=Twitter\uc5f0\ub3d9 +comCmm.left.831=Facebook \uc5f0\ub3d9 +comCmm.left.840=\ucabd\uc9c0\uad00\ub9ac +comCmm.left.850=\ubc1b\uc740\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.860=\ubcf4\ub0b8\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.870=\ud68c\uc758\uc2e4\uad00\ub9ac +comCmm.left.871=\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +comCmm.left.890=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uad00\ub9ac +comCmm.left.891=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uc2b9\uc778\uad00\ub9ac +comCmm.left.900=\ud734\uac00\uad00\ub9ac +comCmm.left.901=\ud734\uac00\uc2b9\uc778\uad00\ub9ac +comCmm.left.902=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +comCmm.left.910=\ub2f9\uc9c1\uad00\ub9ac +comCmm.left.911=\ub2f9\uc9c1\uccb4\ud06c\uad00\ub9ac +comCmm.left.920=\ud3ec\uc0c1\uad00\ub9ac +comCmm.left.921=\ud3ec\uc0c1\uc2b9\uc778\uad00\ub9ac +comCmm.left.930=\uae30\ub150\uc77c\uad00\ub9ac +comCmm.left.931=\uae30\ub150\uc77c\ubaa9\ub85d(\ud655\uc778\uc6a9) +comCmm.left.940=\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac +comCmm.left.941=\ud589\uc0ac\uc811\uc218\uad00\ub9ac +comCmm.left.942=\ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac +comCmm.left.943=\uc57d\ub3c4 \uad00\ub9ac +comCmm.left.950=\ucd9c\ud1f4\uadfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c\uad00\ub9ac# +comCmm.left.960=\uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc +comCmm.left.970=\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc +comCmm.left.980=\uacf5\ud1b5\ucf54\ub4dc +comCmm.left.1000=\uc6b0\ud3b8\ubc88\ud638\uad00\ub9ac +comCmm.left.1010=\ud589\uc815\ucf54\ub4dc\uad00\ub9ac +comCmm.left.1020=\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 +comCmm.left.1030=\ub85c\uadf8\uad00\ub9ac +comCmm.left.1040=\uc0ac\uc6a9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1050=\uc1a1/\uc218\uc2e0\ub85c\uadf8\uad00\ub9ac +comCmm.left.1060=\uc2dc\uc2a4\ud15c\uc774\ub825\uad00\ub9ac +comCmm.left.1070=\uc6f9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1080=\uc811\uc18d\ub85c\uadf8\uad00\ub9ac +comCmm.left.1085=\uac1c\uc778\uc815\ubcf4\uc870\ud68c\ub85c\uadf8\uad00\ub9ac +comCmm.left.1090=\uba54\ub274\ub9ac\uc2a4\ud2b8\uad00\ub9ac +comCmm.left.1091=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comCmm.left.1100=\uba54\ub274\uc0dd\uc131\uad00\ub9ac +comCmm.left.1101=\uc0ac\uc774\ud2b8\ub9f5 +comCmm.left.1110=\ubc14\ub85c\uac00\uae30\uba54\ub274\uad00\ub9ac +comCmm.left.1111=\ud504\ub85c\uadf8\ub7a8\uad00\ub9ac +comCmm.left.1112=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\uad00\ub9ac +comCmm.left.1113=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comCmm.left.1114=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comCmm.left.1120=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac +comCmm.left.1130=\ubc30\uce58\uacb0\uacfc\uad00\ub9ac +comCmm.left.1140=\uc2a4\ucf00\uc904\ucc98\ub9ac +comCmm.left.1150=\ubc31\uc5c5\uad00\ub9ac +comCmm.left.1151=\ubc31\uc5c5\uacb0\uacfc\uad00\ub9ac +comCmm.left.1160=\ub124\ud2b8\uc6cc\ud06c\uad00\ub9ac +comCmm.left.1170=\uc11c\ubc84\uc815\ubcf4\uad00\ub9ac +comCmm.left.1171=\uc11c\ubc84(S/W)\ubaa9\ub85d +comCmm.left.1180=\uc7a5\uc560\uc2e0\uccad\uad00\ub9ac +comCmm.left.1190=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4# +comCmm.left.1210=\uc2dc\uc2a4\ud15c\uc5f0\uacc4\uad00\ub9ac +comCmm.left.1220=\uc5f0\uacc4\ud604\ud669\uad00\ub9ac +comCmm.left.1230=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uad00\ub9ac +comCmm.left.1240=\uc5f0\uacc4\uae30\uad00\uad00\ub9ac + +#\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac# +comCmm.left.1250=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac +comCmm.left.1260=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc720\ud615) +comCmm.left.1261=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc870\uc9c1) +comCmm.left.1270=\uc9c0\uc2dd\uc804\ubb38\uac00\uad00\ub9ac +comCmm.left.1280=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac +comCmm.left.1290=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac +comCmm.left.1291=\uc9c0\uc2dd\uc815\ubcf4\uc81c\uacf5 + +#\uc694\uc18c\uae30\uc220# +comCmm.left.1300=\uacf5\ud734\uc77c\uad00\ub9ac(\ub2ec\ub825) +comCmm.left.2080=\uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2090=DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2100=HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2110=\ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2120=\ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2130=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2140=\ud504\ub85d\uc2dc\uc11c\ube44\uc2a4 +comCmm.left.2150=\ud30c\uc77c\ub3d9\uae30\ud654(\ub300\uc0c1\uc11c\ubc84) +comCmm.left.2160=\ub85c\uadf8\uc778\uc138\uc158\uc815\ubcf4\uccb4\ud06c +comCmm.left.2170=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1-\ub300\uc0c1\ubaa9\ub85d +comCmm.left.2180=\uc8fc\uc18c\uc815\ubcf4\uc5f0\uacc4 +comCmm.left.2200=\uc554\ud638\ud654/\ubcf5\ud638\ud654 + +#\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8# +comCmm.left.3000=JFile \uac00\uc774\ub4dc +comCmm.left.3010=JFile \ud30c\uc77c \uc5c5\ub85c\ub4dc +comCmm.left.3020=JFile \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc +comCmm.left.3100=LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac +comCmm.left.3110=LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504 +comCmm.left.3200=\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800 + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=\uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 +comCmm.unitContent.2=\ub2d8 \ud658\uc601\ud569\ub2c8\ub2e4. +comCmm.unitContent.3=\ub85c\uadf8\uc544\uc6c3 +comCmm.unitContent.4=\uc2e4\ud589 \uc2dc \uc624\ub958 \uc0ac\ud56d\uc774 \uc788\uc73c\uc2dc\uba74 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c\uc13c\ud130\ub85c \uc5f0\ub77d\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. +comCmm.unitContent.5=\ud654\uba74 \uc124\uba85 +comCmm.unitContent.6=\uc67c\ucabd \uba54\ub274\ub294 \uba54\ub274\uc640 \uad00\ub828\ub41c \ucef4\ud3ec\ub10c\ud2b8(\uba54\ub274\uad00\ub9ac, \uc0ac\uc774\ud2b8\ub9f5 \ub4f1)\ub4e4\uc758 \uc601\ud5a5\uc744 \ubc1b\uc9c0 \uc54a\uc73c\uba70, +comCmm.unitContent.7=\uac01 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc27d\uac8c \ucc3e\uc544\ubcfc \uc218 \uc788\ub294 \ubc14\ub85c \uac00\uae30 \ub9c1\ud06c\ud398\uc774\uc9c0\uc785\ub2c8\ub2e4. +comCmm.unitContent.8=\ucef4\ud3ec\ub10c\ud2b8 \uc124\uce58 \ud6c4 \uc124\uce58\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 IncludedInfo annotation\uc744 \ud1b5\ud574 \ucc3e\uc544\ub0b8 \ud6c4 +comCmm.unitContent.9=\ud654\uba74\uc5d0 \ud45c\uc2dc\ud560 \uc815\ubcf4\ub97c \ucc98\ub9ac\ud558\ub294 Controller \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. +comCmm.unitContent.10=\uac1c\ubc1c \uc2dc \uba54\ub274 \uad6c\uc870\uac00 \uc7a1\ud788\uae30 \uc804\uc5d0 \ubc30\ud3ec \ud30c\uc77c\ub4e4\uc5d0 \ud3ec\ud568\ub41c \uacf5\ud1b5 \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc758 \ubaa9\ub85d\uc131 \ud654\uba74\uc5d0 URL\uc744 \uc81c\uacf5\ud558\uc5ec +comCmm.unitContent.11=\uac1c\ubc1c\uc790\uac00 \ud3b8\ub9ac\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.unitContent.12=\uc6b4\uc601 \uc2dc\uc5d0 \ubcf8 \ucee8\ud2b8\ub864\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba54\ub274\ub97c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0, +comCmm.unitContent.13=\uc131\ub2a5 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\uac70\ub098 \uc0ac\uc6a9\uc790\ubcc4 \uba54\ub274 \uad6c\uc131\uc5d0 \uc624\ub958\ub97c \ubc1c\uc0dd\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 +comCmm.unitContent.14=\uc2e4 \uc6b4\uc601 \uc2dc\uc5d0\ub294 \uc0ad\uc81c\ud574\uc11c \ubc30\ud3ec\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. + +comCmm.unitContent.20=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc \uc548\ub0b4 + +#EgovExpirePwd(\ube44\ubc00\ubc88\ud638\ubcc0\uacbd \uacf5\uc9c0)# +comCmm.expirePwdContent.1=\ub85c\uadf8\uc778 +comCmm.expirePwdContent.2=\ub85c\uadf8\uc778 \uad6c\ubd84 + +comCmm.expirePwdContent.10=\uc5c5\ubb34\uc0ac\uc6a9\uc790 +comCmm.expirePwdContent.11=\uae30\uc5c5\ud68c\uc6d0 +comCmm.expirePwdContent.12=\uc77c\ubc18\ud68c\uc6d0 + +comCmm.expirePwdContent.21=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc758 \ubcc0\uacbd\uc740 \ub2e4\uc74c \ud30c\uc77c\uc744 \ucc38\uc870\ud558\uc5ec \uc8fc\uc138\uc694. +comCmm.expirePwdContent.22=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ub9cc\ub8cc +comCmm.expirePwdContent.23=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04\uc774 \ub9cc\ub8cc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.expirePwdContent.24=\uc548\uc804\ud55c \uac1c\uc778\uc815\ubcf4 \ubcf4\ud638\ub97c \uc704\ud574 \uc9c0\uae08 \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694! +comCmm.expirePwdContent.25=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.26=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 +comCmm.expirePwdContent.27=\ube44\ubc00\ubc88\ud638 \ubcc0\uacbd\ud6c4 \uacbd\uacfc\uc77c\uc218 +comCmm.expirePwdContent.28=\ube44\ubc00\ubc88\ud638 \uc720\ud6a8\uae30\uac04 \ucd08\uacfc\uc77c\uc218 +comCmm.expirePwdContent.29=\uc8fc\uae30\uc801\uc73c\ub85c \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud574 \uc8fc\uc138\uc694. +comCmm.expirePwdContent.30=\uc77c + +comCmm.expirePwdContent.50=\uc9c0\uae08 \uc989\uc2dc \ubcc0\uacbd\ud558\uae30 +comCmm.expirePwdContent.51=\ub2e4\uc74c\uc5d0 \ubcc0\uacbd\ud558\uae30 \ No newline at end of file diff --git a/src/main/resources/quartz-kic_dev.properties b/src/main/resources/quartz-kic_dev.properties new file mode 100644 index 00000000..6c4cd154 --- /dev/null +++ b/src/main/resources/quartz-kic_dev.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-kic_rel.properties b/src/main/resources/quartz-kic_rel.properties new file mode 100644 index 00000000..34232a17 --- /dev/null +++ b/src/main/resources/quartz-kic_rel.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.10.10.203:3306/ur_itms_rel_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = YvRZ5jyhmB6gwVSUGBOqNMQB00k6OZZSfUH5ZU4GEFs= +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-local.properties b/src/main/resources/quartz-local.properties new file mode 100644 index 00000000..2df3481e --- /dev/null +++ b/src/main/resources/quartz-local.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz.properties b/src/main/resources/quartz.properties new file mode 100644 index 00000000..2df3481e --- /dev/null +++ b/src/main/resources/quartz.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/secrets/UrpSystem.keystore b/src/main/resources/secrets/UrpSystem.keystore new file mode 100644 index 00000000..39528f7c --- /dev/null +++ b/src/main/resources/secrets/UrpSystem.keystore @@ -0,0 +1 @@ +aes256.key=52f48aa1c7435bc11bf909d9d7d1d5932f4bacd8184ec5c1eed6d03ee17fe126 \ No newline at end of file From f92e60d10ddad61b82be85af8757de887081e42a Mon Sep 17 00:00:00 2001 From: urp Date: Fri, 29 Aug 2025 13:17:23 +0900 Subject: [PATCH 02/14] =?UTF-8?q?=ED=95=9C=EA=B5=AD=ED=99=98=EA=B2=BD?= =?UTF-8?q?=EC=82=B0=EC=97=85=EA=B8=B0=EC=88=A0=EC=9B=90=20=EC=84=A4?= =?UTF-8?q?=EC=B9=98=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 6 +- .settings/org.eclipse.wst.common.component | 1 - .../basebatch/urpBaseBatchApplication.java | 6 ++ src/main/resources/application-keiti_prod.yml | 85 +++++++++++++++++++ .../resources/quartz-keiti_prod.properties | 23 +++++ 5 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/application-keiti_prod.yml create mode 100644 src/main/resources/quartz-keiti_prod.properties diff --git a/.classpath b/.classpath index 36064bc1..a50c6c85 100644 --- a/.classpath +++ b/.classpath @@ -12,7 +12,11 @@ - + + + + + diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 88d71dfd..e7c8cd95 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,6 +4,5 @@ - diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java index bdf123a8..76fe995a 100644 --- a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -57,6 +57,12 @@ public class urpBaseBatchApplication System.out.println("############# kic_rel Env ######################"); System.out.println("################################################"); } + else if(activeProfile.equals("keiti_prod")) + { + System.out.println("################################################"); + System.out.println("############# keiti_prod Env ###################"); + System.out.println("################################################"); + } else { System.out.println("################################################"); diff --git a/src/main/resources/application-keiti_prod.yml b/src/main/resources/application-keiti_prod.yml new file mode 100644 index 00000000..a5642e91 --- /dev/null +++ b/src/main/resources/application-keiti_prod.yml @@ -0,0 +1,85 @@ +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.100.76:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.10.10.19:1521:gwdev + username: mLq9nSgZHzZBmuOmyvjahQ== + password: C7+TsdsHhTcGiH6JSupSeA== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + # 검색서버 + api_search_server: http://192.168.100.76:48381 + # kicc 메일서버 + api_kic_mail_server : https://devkicmail.kic.go.kr + # api_kic_mail_server : https://kicmail.kic.go.kr + # kicc 메신저 서버 + api_kic_msg_server : http://devtalk.kic.go.kr + api_kic_msg_key : 73f26d49-b014-41a9-a184-24c34c893701 + # api_kic_msg_server : http://talk.kic.go.kr + # api_kic_msg_key : eebe896f-1608-456f-80ff-282d1024c25c + client : keiti + + \ No newline at end of file diff --git a/src/main/resources/quartz-keiti_prod.properties b/src/main/resources/quartz-keiti_prod.properties new file mode 100644 index 00000000..269b1b0d --- /dev/null +++ b/src/main/resources/quartz-keiti_prod.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.100.76:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file From 6ce03c85bd42b025886e3d00f08af28b651bd437 Mon Sep 17 00:00:00 2001 From: nhj Date: Mon, 1 Sep 2025 18:21:42 +0900 Subject: [PATCH 03/14] =?UTF-8?q?=EB=A9=94=EC=9D=BC=EC=86=A1=EC=8B=A0?= =?UTF-8?q?=EA=B8=88=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java index b9194b3d..74c3f58c 100644 --- a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java +++ b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java @@ -81,9 +81,11 @@ public class MailKaTalkSendJob implements Job // 메일 처리 if(tempMap.get("procTy").equals("1")) { + /* 2025.09.01 메일보내기 잠시 Stop strProcRsltCn = htmlEmailUtil.send( CommonUtil.nvl(tempMap.get("rcvrAddr")) , CommonUtil.nvl(tempMap.get("ttl")) , CommonUtil.nvl(tempMap.get("bdy")) ); + */ strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; } From dfc3f68da20f346c9aa8fa7a8745d2d3da5b496f Mon Sep 17 00:00:00 2001 From: urp Date: Fri, 19 Sep 2025 14:45:33 +0900 Subject: [PATCH 04/14] =?UTF-8?q?kintex=20=EC=B6=94=EA=B0=80=20=EC=98=A4?= =?UTF-8?q?=ED=94=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basebatch/urpBaseBatchApplication.java | 7 ++ .../resources/application-kintex_prod.yml | 85 +++++++++++++++++++ .../resources/quartz-kintex_prod.properties | 23 +++++ 3 files changed, 115 insertions(+) create mode 100644 src/main/resources/application-kintex_prod.yml create mode 100644 src/main/resources/quartz-kintex_prod.properties diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java index 76fe995a..73593afd 100644 --- a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -63,6 +63,13 @@ public class urpBaseBatchApplication System.out.println("############# keiti_prod Env ###################"); System.out.println("################################################"); } + // 2025.09.12 나혁제 킨텍스 추가 + else if(activeProfile.equals("kintex_prod")) + { + System.out.println("################################################"); + System.out.println("############# kintex_prod Env ##################"); + System.out.println("################################################"); + } else { System.out.println("################################################"); diff --git a/src/main/resources/application-kintex_prod.yml b/src/main/resources/application-kintex_prod.yml new file mode 100644 index 00000000..b289097f --- /dev/null +++ b/src/main/resources/application-kintex_prod.yml @@ -0,0 +1,85 @@ +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://10.2.11.37:3307/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.10.10.19:1521:gwdev + username: mLq9nSgZHzZBmuOmyvjahQ== + password: C7+TsdsHhTcGiH6JSupSeA== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + # 검색서버 + api_search_server: http://10.2.11.37:48381 + # kicc 메일서버 + api_kic_mail_server : https://devkicmail.kic.go.kr + # api_kic_mail_server : https://kicmail.kic.go.kr + # kicc 메신저 서버 + api_kic_msg_server : http://devtalk.kic.go.kr + api_kic_msg_key : 73f26d49-b014-41a9-a184-24c34c893701 + # api_kic_msg_server : http://talk.kic.go.kr + # api_kic_msg_key : eebe896f-1608-456f-80ff-282d1024c25c + client : kintex + + \ No newline at end of file diff --git a/src/main/resources/quartz-kintex_prod.properties b/src/main/resources/quartz-kintex_prod.properties new file mode 100644 index 00000000..8c73d67d --- /dev/null +++ b/src/main/resources/quartz-kintex_prod.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://10.2.11.37:3307/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file From d7cd8f50af940257e859dc4ebc9e799aa07cf309 Mon Sep 17 00:00:00 2001 From: urp Date: Wed, 12 Nov 2025 09:31:09 +0900 Subject: [PATCH 05/14] =?UTF-8?q?=EB=A9=94=EC=9D=BC=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java index 74c3f58c..115c9c16 100644 --- a/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java +++ b/src/main/java/com/urpsys/itmsbatch/cmm/excute/MailKaTalkSendJob.java @@ -81,12 +81,12 @@ public class MailKaTalkSendJob implements Job // 메일 처리 if(tempMap.get("procTy").equals("1")) { - /* 2025.09.01 메일보내기 잠시 Stop + /* 2025.09.01 나혁제 메일보내기 잠시 Stop */ + /* 2025.11.07 나혁제 메일보내기 잠시 Open */ strProcRsltCn = htmlEmailUtil.send( CommonUtil.nvl(tempMap.get("rcvrAddr")) , CommonUtil.nvl(tempMap.get("ttl")) , CommonUtil.nvl(tempMap.get("bdy")) ); - */ - + strProcRsltCd = (strProcRsltCn.equals("")) ? "0" : "-1"; } // 카톡처리 From 32a6ef07e0ba16724d0decd5d4a336c0b2d17243 Mon Sep 17 00:00:00 2001 From: nhj Date: Fri, 28 Nov 2025 08:42:42 +0900 Subject: [PATCH 06/14] =?UTF-8?q?=EC=84=B8=ED=8C=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .settings/org.eclipse.wst.common.component | 1 + 1 file changed, 1 insertion(+) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index e7c8cd95..88d71dfd 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,5 +4,6 @@ + From 0d492f1af3cd55599fab9bf4db8f3a9ba3652729 Mon Sep 17 00:00:00 2001 From: nhj Date: Tue, 23 Dec 2025 17:59:51 +0900 Subject: [PATCH 07/14] =?UTF-8?q?=EA=B2=80=EC=83=89=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-local.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 9de735bf..a77b6446 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -70,8 +70,8 @@ accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR friendId: 유알피-uritsm -# api_search_server: http://192.168.8.138:48381 # 개발 - api_search_server: http://192.168.8.138:49381 # 운영 + api_search_server: http://192.168.8.138:48381 # 개발 +# api_search_server: http://192.168.8.138:49381 # 운영 # kicc 메일서버 api_kic_mail_server : http://localhost:9002 # kicc 메신저 서버 From 2e155725c09d01e81810e82cd275dbb89ed49c10 Mon Sep 17 00:00:00 2001 From: urp Date: Fri, 26 Dec 2025 18:15:41 +0900 Subject: [PATCH 08/14] =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EA=B1=B4=EC=88=98=20?= =?UTF-8?q?=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml | 1 + .../mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml | 5 ++--- .../mapper/primarydb/sqlmap/srm/ReportHistMapper.xml | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml index 6172cec2..d3261fa3 100644 --- a/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml +++ b/src/main/resources/mapper/primarydb/sqlmap/bbs/BbsInfoHistMapper.xml @@ -42,6 +42,7 @@ WHERE 1=1 AND SRCH_PROC_YN IS NULL ORDER BY EVENT_TIME + LIMIT 0, 50 diff --git a/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml index 26b8c506..99a07dc3 100644 --- a/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml +++ b/src/main/resources/mapper/primarydb/sqlmap/srm/IncidentHistMapper.xml @@ -63,7 +63,6 @@ IF(A.IN_INCIDENT_STATUS=1, "승인중", IF(A.IN_INCIDENT_STATUS=2, "반려", "승인완료"))) AS VC_INCIDENT_STATUS , A.IN_INCIDENT_STATUS - , B.VC_SERVICE_NAME , A.VC_SERVICE_TARGET , A.VC_REQUEST_DEPT , A.VC_REQUEST_USER @@ -79,11 +78,11 @@ , A.IN_SATISFACTION , A.ATCH_FILE_ID FROM CM_INCIDENT_HIST A - , CM_SERVICE B WHERE 1=1 AND SRCH_PROC_YN IS NULL - AND A.IN_SERVICE_CODE=B.IN_SERVICE_CODE ORDER BY EVENT_TIME + LIMIT 50 + diff --git a/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml b/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml index 2040e556..44a4556c 100644 --- a/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml +++ b/src/main/resources/mapper/primarydb/sqlmap/srm/ReportHistMapper.xml @@ -79,6 +79,7 @@ WHERE 1=1 AND A.SRCH_PROC_YN IS NULL ORDER BY A.EVENT_TIME + LIMIT 0, 50 From c9904705563d2f18ed2d439c7579a1333c3f002b Mon Sep 17 00:00:00 2001 From: urp Date: Fri, 27 Feb 2026 11:13:05 +0900 Subject: [PATCH 09/14] =?UTF-8?q?=EB=85=B8=EC=9B=90=EA=B5=AC=EC=B2=AD,=20?= =?UTF-8?q?=EC=96=91=ED=8F=89=EA=B5=B0=EC=B2=AD=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=A5=B8=20AP=20=EB=B3=B4=EC=99=84?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basebatch/config/quartz/QuartzConfig.java | 12 ++- .../basebatch/urpBaseBatchApplication.java | 14 ++++ src/main/resources/application-local.yml | 3 +- src/main/resources/application-nowon.yml | 80 +++++++++++++++++++ src/main/resources/application-yp21.yml | 80 +++++++++++++++++++ src/main/resources/quartz-nowon.properties | 23 ++++++ src/main/resources/quartz-yp21.properties | 23 ++++++ 7 files changed, 230 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/application-nowon.yml create mode 100644 src/main/resources/application-yp21.yml create mode 100644 src/main/resources/quartz-nowon.properties create mode 100644 src/main/resources/quartz-yp21.properties diff --git a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java index 4a0e0778..ef9c35e2 100644 --- a/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java +++ b/src/main/java/com/urpsys/basebatch/config/quartz/QuartzConfig.java @@ -90,16 +90,19 @@ public class QuartzConfig private Properties quartzProperties() { + log.info(">>>>>>>>>> quartzProperties <<<<<<<<<<"); + String activeProfile = (CommonUtil.nvl(System.getProperty("spring.profiles.active"))); PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); - propertiesFactoryBean.setLocation(new ClassPathResource("quartz-"+activeProfile+".properties")); + String strProFile = "quartz-"+activeProfile+".properties"; + log.info("strProFile [{}]", strProFile); + + propertiesFactoryBean.setLocation(new ClassPathResource(strProFile)); Properties properties = null; - - try { propertiesFactoryBean.afterPropertiesSet(); @@ -118,6 +121,9 @@ public class QuartzConfig { log.error("quartzProperties parse error : {}", e); } + + log.info("<<<<<<<<<< quartzProperties >>>>>>>>>>"); + return properties; } } \ No newline at end of file diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java index 73593afd..821df0ad 100644 --- a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -70,6 +70,20 @@ public class urpBaseBatchApplication System.out.println("############# kintex_prod Env ##################"); System.out.println("################################################"); } + // 2026.01.28 나혁제 노원구청 추가 + else if(activeProfile.equals("nowon")) + { + System.out.println("################################################"); + System.out.println("############# nowon Env ########################"); + System.out.println("################################################"); + } + // 2026.02.26 나혁제 양평군청 추가 + else if(activeProfile.equals("yp21")) + { + System.out.println("################################################"); + System.out.println("############# yp21 Env #########################"); + System.out.println("################################################"); + } else { System.out.println("################################################"); diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index a77b6446..182758b2 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -70,8 +70,7 @@ accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR friendId: 유알피-uritsm - api_search_server: http://192.168.8.138:48381 # 개발 -# api_search_server: http://192.168.8.138:49381 # 운영 + api_search_server: http://192.168.8.138:48381 # 검색시스템 연동 # kicc 메일서버 api_kic_mail_server : http://localhost:9002 # kicc 메신저 서버 diff --git a/src/main/resources/application-nowon.yml b/src/main/resources/application-nowon.yml new file mode 100644 index 00000000..a2d55830 --- /dev/null +++ b/src/main/resources/application-nowon.yml @@ -0,0 +1,80 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://98.11.2.93:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://98.11.2.93:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/application-yp21.yml b/src/main/resources/application-yp21.yml new file mode 100644 index 00000000..02b78c9e --- /dev/null +++ b/src/main/resources/application-yp21.yml @@ -0,0 +1,80 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://105.29.2.26:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://105.29.2.26:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/quartz-nowon.properties b/src/main/resources/quartz-nowon.properties new file mode 100644 index 00000000..d880aa94 --- /dev/null +++ b/src/main/resources/quartz-nowon.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://98.11.2.93:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-yp21.properties b/src/main/resources/quartz-yp21.properties new file mode 100644 index 00000000..491fcb17 --- /dev/null +++ b/src/main/resources/quartz-yp21.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://105.29.2.26:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file From bb2871d62949878fad113d4e9698196344459cf5 Mon Sep 17 00:00:00 2001 From: urp Date: Mon, 23 Mar 2026 09:48:31 +0900 Subject: [PATCH 10/14] =?UTF-8?q?=EB=85=B8=EC=9D=B8=EC=9D=B8=EB=A0=A5?= =?UTF-8?q?=EA=B0=9C=EB=B0=9C=EC=9B=90=20=EC=84=A4=EC=B9=98=ED=99=98?= =?UTF-8?q?=EA=B2=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basebatch/urpBaseBatchApplication.java | 7 ++ src/main/resources/application-kordi.yml | 80 +++++++++++++++++++ src/main/resources/quartz-kordi.properties | 23 ++++++ 3 files changed, 110 insertions(+) create mode 100644 src/main/resources/application-kordi.yml create mode 100644 src/main/resources/quartz-kordi.properties diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java index 821df0ad..cb521be7 100644 --- a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -84,6 +84,13 @@ public class urpBaseBatchApplication System.out.println("############# yp21 Env #########################"); System.out.println("################################################"); } + // 2026.03.19 나혁제 노인인력개발원 추가 + else if(activeProfile.equals("kordi")) + { + System.out.println("################################################"); + System.out.println("############# kordi Env ########################"); + System.out.println("################################################"); + } else { System.out.println("################################################"); diff --git a/src/main/resources/application-kordi.yml b/src/main/resources/application-kordi.yml new file mode 100644 index 00000000..9b7a6342 --- /dev/null +++ b/src/main/resources/application-kordi.yml @@ -0,0 +1,80 @@ +# Service port +# server: +# port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.102.204:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://192.168.102.204:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/quartz-kordi.properties b/src/main/resources/quartz-kordi.properties new file mode 100644 index 00000000..b1cbcd5c --- /dev/null +++ b/src/main/resources/quartz-kordi.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.102.204:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file From 65bd3cb8a9a4a9a9a5b92e72db0da3e9fdf9b78a Mon Sep 17 00:00:00 2001 From: nhj Date: Tue, 7 Apr 2026 10:51:33 +0900 Subject: [PATCH 11/14] =?UTF-8?q?=ED=99=98=EA=B2=BD=EA=B0=92=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/urpsys/basebatch/urpBaseBatchApplication.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java index cb521be7..c533e251 100644 --- a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -45,18 +45,21 @@ public class urpBaseBatchApplication System.out.println("############# infra_server Env #################"); System.out.println("################################################"); } + // KIC(한국투장공사) 개발 else if(activeProfile.equals("kic_dev")) { System.out.println("################################################"); System.out.println("############# kic_dev Env ######################"); System.out.println("################################################"); } + // KIC(한국투장공사) 운영 else if(activeProfile.equals("kic_rel")) { System.out.println("################################################"); System.out.println("############# kic_rel Env ######################"); System.out.println("################################################"); } + // KEITI(한국환경산업기술원) else if(activeProfile.equals("keiti_prod")) { System.out.println("################################################"); From f9431842e7924ea63c8cf7e941a39949317c0992 Mon Sep 17 00:00:00 2001 From: urp Date: Thu, 30 Apr 2026 09:00:20 +0900 Subject: [PATCH 12/14] =?UTF-8?q?=ED=97=8C=EB=B2=95=EC=9E=AC=ED=8C=90?= =?UTF-8?q?=EC=86=8C,=EB=AC=B8=ED=99=94=EC=9B=90=EC=97=B0=ED=95=A9?= =?UTF-8?q?=ED=9A=8C,=EC=84=B1=EC=8B=A0=EC=97=AC=EB=8C=80,=EC=83=9D?= =?UTF-8?q?=EB=AC=BC=EC=9E=90=EC=9B=90=EA=B4=80=20=EC=84=A4=EC=B9=98=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basebatch/urpBaseBatchApplication.java | 28 +++++++ src/main/resources/application-ccourt.yml | 81 +++++++++++++++++++ src/main/resources/application-kccf.yml | 81 +++++++++++++++++++ src/main/resources/application-nibr.yml | 81 +++++++++++++++++++ src/main/resources/application-sungshin.yml | 81 +++++++++++++++++++ src/main/resources/application-vmware.yml | 10 ++- src/main/resources/quartz-ccourt.properties | 25 ++++++ src/main/resources/quartz-kccf.properties | 25 ++++++ src/main/resources/quartz-nibr.properties | 25 ++++++ src/main/resources/quartz-sungshin.properties | 25 ++++++ src/main/resources/quartz-wmware.properties | 23 ++++++ 11 files changed, 483 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/application-ccourt.yml create mode 100644 src/main/resources/application-kccf.yml create mode 100644 src/main/resources/application-nibr.yml create mode 100644 src/main/resources/application-sungshin.yml create mode 100644 src/main/resources/quartz-ccourt.properties create mode 100644 src/main/resources/quartz-kccf.properties create mode 100644 src/main/resources/quartz-nibr.properties create mode 100644 src/main/resources/quartz-sungshin.properties create mode 100644 src/main/resources/quartz-wmware.properties diff --git a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java index c533e251..994eb19c 100644 --- a/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java +++ b/src/main/java/com/urpsys/basebatch/urpBaseBatchApplication.java @@ -94,6 +94,34 @@ public class urpBaseBatchApplication System.out.println("############# kordi Env ########################"); System.out.println("################################################"); } + // 2026.04.21 나혁제 헌법재판소 추가 + else if(activeProfile.equals("ccourt")) + { + System.out.println("################################################"); + System.out.println("############# ccourt Env #######################"); + System.out.println("################################################"); + } + // 2026.04.27 나혁제 문화원연합회 추가 + else if(activeProfile.equals("kccf")) + { + System.out.println("################################################"); + System.out.println("############# kccf Env #########################"); + System.out.println("################################################"); + } + // 2026.04.28 나혁제 국립생물자원관 추가 + else if(activeProfile.equals("nibr")) + { + System.out.println("################################################"); + System.out.println("############# nibr Env #########################"); + System.out.println("################################################"); + } + // 2026.04.28 나혁제 성신여대 추가 + else if(activeProfile.equals("sungshin")) + { + System.out.println("################################################"); + System.out.println("############# sungshin Env #####################"); + System.out.println("################################################"); + } else { System.out.println("################################################"); diff --git a/src/main/resources/application-ccourt.yml b/src/main/resources/application-ccourt.yml new file mode 100644 index 00000000..10f38e37 --- /dev/null +++ b/src/main/resources/application-ccourt.yml @@ -0,0 +1,81 @@ +# 헌법재판소 설정 +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://10.38.101.101:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://10.38.101.101:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/application-kccf.yml b/src/main/resources/application-kccf.yml new file mode 100644 index 00000000..24a7f9fe --- /dev/null +++ b/src/main/resources/application-kccf.yml @@ -0,0 +1,81 @@ +# 문화원연합회 설정 +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://10.10.10.167:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://10.10.10.167:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/application-nibr.yml b/src/main/resources/application-nibr.yml new file mode 100644 index 00000000..c01304aa --- /dev/null +++ b/src/main/resources/application-nibr.yml @@ -0,0 +1,81 @@ +# 국립생물자원관 설정 +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://10.101.130.249:43306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://10.101.130.249:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/application-sungshin.yml b/src/main/resources/application-sungshin.yml new file mode 100644 index 00000000..32d9177d --- /dev/null +++ b/src/main/resources/application-sungshin.yml @@ -0,0 +1,81 @@ +# 헌법재판소 설정 +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://172.16.25.167:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://172.16.25.167:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/application-vmware.yml b/src/main/resources/application-vmware.yml index 380716ab..f35138eb 100644 --- a/src/main/resources/application-vmware.yml +++ b/src/main/resources/application-vmware.yml @@ -11,7 +11,7 @@ # Primary db information primarydb: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - jdbcUrl: jdbc:log4jdbc:mariadb://192.168.8.131:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + jdbcUrl: jdbc:log4jdbc:mariadb://192.168.8.140:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true username: g9IwFesTyIloXVpUnfOX0g== password: E4SOtjDqqO79BQERc/eaTw== maximumPoolSize: 35 @@ -58,5 +58,11 @@ secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR friendId: 유알피-uritsm # api_search_server: http://109.26.11.21:48381 - api_search_server: http://192.168.8.138:48381 + api_search_server: http://192.168.8.140:48381 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : \ No newline at end of file diff --git a/src/main/resources/quartz-ccourt.properties b/src/main/resources/quartz-ccourt.properties new file mode 100644 index 00000000..d890bfdc --- /dev/null +++ b/src/main/resources/quartz-ccourt.properties @@ -0,0 +1,25 @@ +# \ud5cc\ubc95\uc7ac\ud310\uc18c + +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://10.38.101.101:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-kccf.properties b/src/main/resources/quartz-kccf.properties new file mode 100644 index 00000000..e7d842dc --- /dev/null +++ b/src/main/resources/quartz-kccf.properties @@ -0,0 +1,25 @@ +# \ud5cc\ubc95\uc7ac\ud310\uc18c + +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://10.10.10.167:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-nibr.properties b/src/main/resources/quartz-nibr.properties new file mode 100644 index 00000000..a9c465cf --- /dev/null +++ b/src/main/resources/quartz-nibr.properties @@ -0,0 +1,25 @@ +# \ud5cc\ubc95\uc7ac\ud310\uc18c + +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://10.101.130.249:43306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-sungshin.properties b/src/main/resources/quartz-sungshin.properties new file mode 100644 index 00000000..01d41a2d --- /dev/null +++ b/src/main/resources/quartz-sungshin.properties @@ -0,0 +1,25 @@ +# \ud5cc\ubc95\uc7ac\ud310\uc18c + +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://172.16.25.167:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file diff --git a/src/main/resources/quartz-wmware.properties b/src/main/resources/quartz-wmware.properties new file mode 100644 index 00000000..20e45db1 --- /dev/null +++ b/src/main/resources/quartz-wmware.properties @@ -0,0 +1,23 @@ +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://192.168.8.140:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file From e715d6fa37d14a688681036b7bd0e002a096f632 Mon Sep 17 00:00:00 2001 From: urp Date: Fri, 15 May 2026 16:15:20 +0900 Subject: [PATCH 13/14] =?UTF-8?q?=ED=99=98=EA=B2=BD=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/application-infra_server.yml | 15 ++++++++--- src/main/resources/application-kordi.yml | 2 ++ .../resources/quartz-infra_server.properties | 25 +++++++++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/quartz-infra_server.properties diff --git a/src/main/resources/application-infra_server.yml b/src/main/resources/application-infra_server.yml index 980e643f..67f2132f 100644 --- a/src/main/resources/application-infra_server.yml +++ b/src/main/resources/application-infra_server.yml @@ -1,6 +1,8 @@ + # URP 인프라 형상서버 + # Service port -# server: -# port: 9002 + server: + port: 9002 # JPA 설정, JSP 설정 spring: @@ -11,7 +13,7 @@ # Primary db information primarydb: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - jdbcUrl: jdbc:log4jdbc:mariadb://109.26.11.21:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + jdbcUrl: jdbc:log4jdbc:mariadb://109.26.11.21:3307/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true username: g9IwFesTyIloXVpUnfOX0g== password: E4SOtjDqqO79BQERc/eaTw== maximumPoolSize: 35 @@ -58,5 +60,10 @@ secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR friendId: 유알피-uritsm api_search_server: http://109.26.11.21:48381 -# api_search_server: http://192.168.8.138:48381 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : \ No newline at end of file diff --git a/src/main/resources/application-kordi.yml b/src/main/resources/application-kordi.yml index 9b7a6342..5265b08f 100644 --- a/src/main/resources/application-kordi.yml +++ b/src/main/resources/application-kordi.yml @@ -1,3 +1,5 @@ +# 노인인력개발원 + # Service port # server: # port: 11030 diff --git a/src/main/resources/quartz-infra_server.properties b/src/main/resources/quartz-infra_server.properties new file mode 100644 index 00000000..b55e8c4c --- /dev/null +++ b/src/main/resources/quartz-infra_server.properties @@ -0,0 +1,25 @@ +# \ud5cc\ubc95\uc7ac\ud310\uc18c + +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://109.26.11.21:3307/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file From 83e25293022899e4704f89189d27689293addaa4 Mon Sep 17 00:00:00 2001 From: urp Date: Wed, 27 May 2026 10:47:41 +0900 Subject: [PATCH 14/14] =?UTF-8?q?=ED=86=B5=EC=9D=BC=EB=B6=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-unikorea.yml | 81 +++++++++++++++++++ src/main/resources/quartz-unikorea.properties | 25 ++++++ 2 files changed, 106 insertions(+) create mode 100644 src/main/resources/application-unikorea.yml create mode 100644 src/main/resources/quartz-unikorea.properties diff --git a/src/main/resources/application-unikorea.yml b/src/main/resources/application-unikorea.yml new file mode 100644 index 00000000..bfbcd70e --- /dev/null +++ b/src/main/resources/application-unikorea.yml @@ -0,0 +1,81 @@ +# 헌법재판소 설정 +# Service port + server: + port: 11030 + +# JPA 설정, JSP 설정 + spring: + devtools: + livereload: + enabled: true + +# Primary db information + primarydb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:mariadb://10.63.121.150:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true + username: g9IwFesTyIloXVpUnfOX0g== + password: E4SOtjDqqO79BQERc/eaTw== + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + + # kicinsadb db information + kicinsadb: + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + jdbcUrl: jdbc:log4jdbc:oracle:thin:@192.168.8.132:1521:XE + username: Lp1nYnFre15DjG/Y36UNWA== ## TEST01 + password: E4SOtjDqqO79BQERc/eaTw== ## 123456 + maximumPoolSize: 35 + minimumIdle: 2 + connectionTimeout: 3000 + idleTimeout: 300000 + testOnBorrow: true + validationQuery: SELECT 1 + +# SQL Log 관련 setting + log4jdbc: + spylogdelegator: + name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator + dump: + sql: + maxlinelength: 0 + + logging.level.jdbc.sqltiming: false + logging.level.jdbc.audit: false + logging.level.jdbc.resultset: false + logging.level.jdbc.connection: false + +# 개발중 + logging.level.jdbc.sqlonly: info + logging.level.jdbc.resultsettable: info +# 운영중 +# logging.level.jdbc.sqlonly: false +# logging.level.jdbc.resultsettable: false +# custom 설정 + custom: + api_server : null + sendmail: + id: tW9kMpd3SiAnf3RQBOZapw== + password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8= + port: 587 + host: smtp.gmail.com + sendEmail: hhjj0701@gmail.com + senderName: 나혁제 + socketFactory-class: javax.net.ssl.SSLSocketFactory + supplier: gmail.com + sendkakaoTalk: + serviceId: ncp:kkobizmsg:kr:349487487272:uritms + accessKey: ncp_iam_BPAMKR4Le2ali6vfRCsG + secretKey: ncp_iam_BPKMKRIOXMe91u5YQoPjmk5WZ2A1FNEcoR + friendId: 유알피-uritsm + api_search_server: http://10.63.121.150:48381 # 개발 + # kicc 메일서버 + api_kic_mail_server : http://localhost:9002 + # kicc 메신저 서버 + api_kic_msg_server : http://localhost:9002 + api_kic_msg_key : testKey + client : + \ No newline at end of file diff --git a/src/main/resources/quartz-unikorea.properties b/src/main/resources/quartz-unikorea.properties new file mode 100644 index 00000000..98cd7a54 --- /dev/null +++ b/src/main/resources/quartz-unikorea.properties @@ -0,0 +1,25 @@ +# \ud5cc\ubc95\uc7ac\ud310\uc18c + +org.quartz.scheduler.instanceName=pooney +org.quartz.scheduler.instanceId=AUTO +org.quartz.scheduler.rmi.export=false +org.quartz.scheduler.rmi.proxy=false +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=3 +org.quartz.context.key.QuartzTopic=QuartzPorperties +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.isClustered=true +org.quartz.jobStore.clusterCheckinInterval=300000 + +# \uae30\ubcf8\uac12: 15000 (15\ucd08), \ubcc0\uacbd\uac12: 120000 (2\ubd84) + +org.quartz.jobStore.dataSource = primarydb +org.quartz.jobStore.dataSource = pooney +org.quartz.dataSource.pooney.provider=hikaricp +org.quartz.dataSource.pooney.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpy +org.quartz.dataSource.pooney.URL = jdbc:log4jdbc:mariadb://10.63.121.150:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true +org.quartz.dataSource.pooney.user = g9IwFesTyIloXVpUnfOX0g== +org.quartz.dataSource.pooney.password = E4SOtjDqqO79BQERc/eaTw== +org.quartz.dataSource.pooney.maxConnections = 30 \ No newline at end of file