diff --git a/2_apply.bat b/2_apply.bat
index 0e79bd7..dcbc3ae 100644
--- a/2_apply.bat
+++ b/2_apply.bat
@@ -75,7 +75,12 @@ for /f "delims=" %%i in (admin_list.txt) do (
set source_file=%target_directory%!line!
set relative_path=!line:%source_prefix%=!
set target_file=%target_prefix%!relative_path!
- )
+ ) else if "!line:~-4!" == ".gif" (
+ set source_file=%target_directory%!line!
+ set relative_path=!line:%source_prefix%=!
+ set target_file=%target_prefix%!relative_path!
+ )
+
rem Copy the source file to the target location, overwriting if necessary
echo Copying "!source_file!" to "!target_file!"
diff --git a/admin_list.txt b/admin_list.txt
index 1b8295a..8b0ee32 100644
--- a/admin_list.txt
+++ b/admin_list.txt
@@ -1,25 +1,21 @@
-src\main\webapp\WEB-INF\config\springmvc\action-servlet.xml
-src\main\webapp\WEB-INF\views\admins\user\left.jsp
-src\main\webapp\images\renew\arrow-right.png
-src\main\webapp\images\renew\add.png
-src\main\webapp\images\renew\chevron.png
-src\main\webapp\images\renew\chevron.svg
-src\main\webapp\images\renew\delete.png
-src\main\webapp\images\renew\minus.png
src\main\webapp\css\admins\style.css
src\main\webapp\css\admins\style.css.map
-src\main\java\geoinfo\admins\user\GeneralUserMngController.java
-src\main\java\geoinfo\admins\user\service\HomeTrainingService.java
-src\main\java\geoinfo\admins\user\service\impl\HomeTrainingServiceImpl.java
-src\main\java\geoinfo\admins\user\service\HomeTrainingMapper.java
-src\main\resources\geoinfo\sqlmap\mappers\admins\user\HomeTrainingMapper.xml
-src\main\webapp\WEB-INF\views\admins\user\home-training-index.jsp
-src\main\webapp\WEB-INF\views\admins\user\home-training-approval-system.jsp
-src\main\webapp\WEB-INF\views\admins\user\visit-training-index.jsp
-src\main\webapp\WEB-INF\views\admins\user\visit-training-approval-system.jsp
-src\main\java\geoinfo\util\MyUtil.java
-src\main\webapp\WEB-INF\lib\json-simple-1.1.1.jar
-src\main\java\geoinfo\admins\main\MainController.java
-src\main\resources\geoinfo\sqlmap\mappers\admins\main\Login_SQL.xml
+src\main\webapp\images\admins\frame\top_menu.gif
+src\main\webapp\WEB-INF\views\admins\frame\top.jsp
+src\main\webapp\WEB-INF\views\admins\main\index.jsp
src\main\webapp\WEB-INF\views\admins\main\main.jsp
-src\main\webapp\WEB-INF\views\admins\frame\mainframe.jsp
+src\main\webapp\WEB-INF\views\admins\constructionProjectManagement\00.jsp
+src\main\webapp\WEB-INF\views\admins\constructionProjectManagement\left.jsp
+src\main\webapp\WEB-INF\views\admins\constructionProjectManagement\construction-project-statistics-index.jsp
+src\main\webapp\images\admins\constructionProjectManagement\1_tit_01.gif
+src\main\java\geoinfo\admins\constructionProjectManagement\ConstructionProjectManagementController.java
+src\main\webapp\js\admins\chart.js
+#일반사용자관리 첫 화면 사용자 목록 안 보이도록 하기
+src\main\webapp\WEB-INF\views\admins\frame\top.jsp
+src\main\webapp\WEB-INF\views\admins\main\index.jsp
+src\main\webapp\WEB-INF\views\admins\main\main.jsp
+src\main\java\geoinfo\admins\user\GeneralUserMngController.java
+src\main\webapp\WEB-INF\views\admins\user\00.jsp
+src\main\webapp\js\admins\adlogin.js
+src\main\webapp\WEB-INF\views\admins\main\index.jsp
+src\main\webapp\WEB-INF\views\admins\frame\mainframe.jsp
\ No newline at end of file
diff --git a/old/GeneralUserMngController.class b/old/GeneralUserMngController.class
deleted file mode 100644
index 99cfb80..0000000
Binary files a/old/GeneralUserMngController.class and /dev/null differ
diff --git a/old/HomeTrainingMapper.class b/old/HomeTrainingMapper.class
deleted file mode 100644
index 838099c..0000000
Binary files a/old/HomeTrainingMapper.class and /dev/null differ
diff --git a/old/HomeTrainingMapper.xml b/old/HomeTrainingMapper.xml
deleted file mode 100644
index 44aa3c6..0000000
--- a/old/HomeTrainingMapper.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/old/HomeTrainingService.class b/old/HomeTrainingService.class
deleted file mode 100644
index 65f8743..0000000
Binary files a/old/HomeTrainingService.class and /dev/null differ
diff --git a/old/HomeTrainingServiceImpl.class b/old/HomeTrainingServiceImpl.class
deleted file mode 100644
index 3f5efc4..0000000
Binary files a/old/HomeTrainingServiceImpl.class and /dev/null differ
diff --git a/old/Login_SQL.xml b/old/Login_SQL.xml
deleted file mode 100644
index eca19d6..0000000
--- a/old/Login_SQL.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/old/MainController.class b/old/MainController.class
deleted file mode 100644
index 1e60865..0000000
Binary files a/old/MainController.class and /dev/null differ
diff --git a/old/MyUtil.class b/old/MyUtil.class
deleted file mode 100644
index b7cc487..0000000
Binary files a/old/MyUtil.class and /dev/null differ
diff --git a/old/action-servlet.xml b/old/action-servlet.xml
deleted file mode 100644
index 9fe211d..0000000
--- a/old/action-servlet.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geoinfo.**.service
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /WEB-INF/tiles/tiles-layout.xml
-
-
-
-
-
-
\ No newline at end of file
diff --git a/old/add.png b/old/add.png
deleted file mode 100644
index 392fe0d..0000000
Binary files a/old/add.png and /dev/null differ
diff --git a/old/arrow-right.png b/old/arrow-right.png
deleted file mode 100644
index b887d35..0000000
Binary files a/old/arrow-right.png and /dev/null differ
diff --git a/old/chevron.png b/old/chevron.png
deleted file mode 100644
index f80cedb..0000000
Binary files a/old/chevron.png and /dev/null differ
diff --git a/old/chevron.svg b/old/chevron.svg
deleted file mode 100644
index c1794ab..0000000
--- a/old/chevron.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/old/delete.png b/old/delete.png
deleted file mode 100644
index 0b915d7..0000000
Binary files a/old/delete.png and /dev/null differ
diff --git a/old/json-simple-1.1.1.jar b/old/json-simple-1.1.1.jar
deleted file mode 100644
index dfd5856..0000000
Binary files a/old/json-simple-1.1.1.jar and /dev/null differ
diff --git a/old/left.jsp b/old/left.jsp
deleted file mode 100644
index 8b61aab..0000000
--- a/old/left.jsp
+++ /dev/null
@@ -1,195 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-<%@ taglib prefix="fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  |
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
- |
-
- |
-
-
- |
-
- |
-
-
-
- |
-
-
-
-
-
-
-
diff --git a/old/main.jsp b/old/main.jsp
deleted file mode 100644
index 1cd36d5..0000000
--- a/old/main.jsp
+++ /dev/null
@@ -1,173 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-
-
-
-국토지반정보 포털 관리시스템
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-  |
-
-
-
- |
-
-
-
-
-
-
- |
-
- |
- |
-
-
-
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-  |
-
-
- |
-
-
-
-
-
-
-
-<%--
-
- 승인 대기 건
-
-
- 승인 대기 0건
-
- --%>
-
-
diff --git a/old/mainframe.jsp b/old/mainframe.jsp
deleted file mode 100644
index f966a6b..0000000
--- a/old/mainframe.jsp
+++ /dev/null
@@ -1,22 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/old/minus.png b/old/minus.png
deleted file mode 100644
index e9f5eff..0000000
Binary files a/old/minus.png and /dev/null differ
diff --git a/old/style.css b/old/style.css
deleted file mode 100644
index 3be7f8f..0000000
--- a/old/style.css
+++ /dev/null
@@ -1,782 +0,0 @@
-@charset "UTF-8";
-/* 기본 */
-img {
- border: 0;
-}
-
-body {
- margin-left: 16;
- margin-top: 20;
- margin-right: 16;
- margin-bottom: 0;
- scrollbar-face-color: #FFFFFF;
- scrollbar-shadow-color: #A0A0A0;
- scrollbar-highlight-color: #FFFFFF;
- scrollbar-3dlight-color: #A0A0A0;
- scrollbar-darkshadow-color: #F6F6F6;
- scrollbar-track-color: #F6F6F6;
- scrollbar-arrow-color: #A0A0A0;
-}
-
-/* 페이지 네비게이션 */
-.navi_cur {
- font-family: "굴림체";
- font-size: 9pt;
- color: #3F3F3F;
- line-height: 150%;
- font-weight: bold;
-}
-
-a.navi:link {
- font-family: "굴림체";
- font-size: 9pt;
- color: #3F3F3F;
- text-decoration: none;
- line-height: 150%;
-}
-
-a.navi:visited {
- font-family: "굴림체";
- font-size: 9pt;
- color: #3F3F3F;
- text-decoration: none;
- line-height: 150%;
-}
-
-a.navi:hover {
- font-family: "굴림체";
- font-size: 9pt;
- color: #3F3F3F;
- text-decoration: underline;
- line-height: 150%;
-}
-
-/* 목록 헤드와 내용 */
-.list_head {
- font-size: 9pt;
- font-family: 굴림체;
- font-weight: bold;
- line-height: 150%;
- color: #B64E0F;
-}
-
-.list_head2 {
- font-size: 9pt;
- font-family: 굴림체;
- font-weight: bold;
- line-height: 150%;
- color: #1180B5;
-}
-
-.list_head_noti {
- font-size: 9pt;
- font-family: 굴림체;
- font-weight: bold;
- line-height: 150%;
- color: #B64E0F;
-}
-
-.list_content {
- font-size: 9pt;
- font-family: 굴림체;
- line-height: 150%;
- color: #525252;
-}
-
-/* search */
-.search {
- font-size: 9pt;
- color: #545454;
-}
-
-.search1 {
- font-size: 9pt;
- color: #545454;
-}
-
-.date_search {
- font-size: 9pt;
- font-weight: bold;
- color: #545454;
-}
-
-/* 폼 */
-Select {
- font-size: 9pt;
-}
-
-input {
- font-size: 9pt;
-}
-
-.write {
- background-color: #FFFFFF;
- border-color: #C5C5C5;
- border-width: 1px;
- border-style: solid;
- font-size: 10pt;
-}
-
-.input {
- font-size: 9pt;
- border: 1x solid #C8D0D5;
- text-align: left;
- color: #333333;
-}
-
-.input1 {
- font-size: 9pt;
- border: 1x solid #8C8C8C;
-}
-
-.input2 {
- font-size: 9pt;
- border: 1x solid #D1DEDE;
- text-align: justify;
- padding-right: 3px;
- background-color: #F4F7F7;
- height: 17px;
- padding-left: 3px;
-}
-
-.input3 {
- font-size: 9pt;
- border: 1x solid #8C8C8C;
- text-align: center;
- padding-top: 2px;
-}
-
-Input.search {
- background-color: #F9F9F9;
- border-color: #C5C5C5;
- border-width: 1px;
- border-style: solid;
- font-size: 10pt;
-}
-
-/* 일반 */
-a:link {
- font-family: "굴림체";
- font-size: 9pt;
- color: #525252;
- text-decoration: none;
- line-height: 150%;
-}
-
-a:visited {
- font-family: "굴림체";
- font-size: 9pt;
- color: #525252;
- text-decoration: none;
- line-height: 150%;
-}
-
-a:hover {
- font-family: "굴림체";
- font-size: 9pt;
- color: #FF8000;
- text-decoration: underline;
- line-height: 150%;
-}
-
-/* FAQ */
-.faq_q {
- font-size: 9pt;
- line-height: 150%;
- color: #1F177C;
- font-weight: bold;
-}
-
-.faq_a {
- font-size: 9pt;
- line-height: 150%;
- color: #1F177C;
-}
-
-/* QnA */
-.qna_head {
- font-size: 9pt;
- font-family: 굴림체;
- font-weight: bold;
- line-height: 150%;
- color: #939393;
-}
-
-.qna_content {
- font-size: 9pt;
- font-family: 굴림체;
- line-height: 150%;
- color: #939393;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-.qna_contentH {
- font-size: 9pt;
- font-family: 굴림체;
- line-height: 150%;
- color: #939393;
- padding: 5px;
-}
-
-.qna_reply {
- font-size: 9pt;
- font-family: 굴림체;
- line-height: 120%;
- color: #3F83FF;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-.qna_reply_gray {
- font-size: 9pt;
- font-family: 굴림체;
- line-height: 150%;
- color: #939393;
-}
-
-/* 팝업타이틀, 입력창(input, select) 추가 2017.08.01 */
-.pop_title {
- height: 20px;
- border-bottom: 1px solid #31b0e5;
- background: url("../../images/admins/bullet03.png") 10px 10px no-repeat;
- padding: 7px 0 7px 27px;
- font-size: 14px;
- font-family: 굴림체;
- font-weight: bold;
- line-height: 150%;
- color: #1180B5;
-}
-
-.input_txt {
- padding: 3px;
- border: 1px solid #ccc;
- border-radius: 3px;
- color: #666;
- font-size: 12px;
-}
-
-/* 2023.10.11 LHJ 게시판 제목에서 길이 초과된 뒷부분 생략 추가 */
-#Table_List {
- table-layout: fixed;
-}
-
-#Table_List td {
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
-}
-
-/* 2023.10.23 LHJ 팝업 미리보기 화면 추가 */
-.popup_noti {
- width: 500px;
- height: 600px;
- display: flex;
- flex-direction: column;
- position: relative;
-}
-
-.bg_noti:nth-child(1) {
- flex-grow: 2.5;
- background-color: #FFCCB3;
-}
-
-.bg_noti:nth-child(2) {
- flex-grow: 1.5;
- background-color: #FFF2D0;
-}
-
-.bg_noti:nth-child(3) {
- flex-grow: 6;
- background-color: #DCF1EA;
-}
-
-.bg_white {
- position: absolute;
- top: 10%;
- left: 7%;
- right: 7%;
- bottom: 5%;
- background-color: white;
- border: 1px solid black;
-}
-
-.subject_noti {
- position: absolute;
- top: 10%;
- left: 7%;
- right: 7%;
- font-family: "NanumGothicB";
- font-weight: bold;
- font-size: 15pt;
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
-}
-
-.contents_noti pre {
- display: block;
- padding: inherit;
- margin: inherit;
- font-size: inherit;
- line-height: inherit;
- color: inherit;
- word-break: break-all;
- word-wrap: break-word;
- white-space: pre-wrap;
- background-color: inherit;
- border: inherit;
- border-radius: inherit;
- font-family: inherit;
-}
-
-.contents_noti {
- position: absolute;
- top: 27%;
- left: 7%;
- right: 7%;
- bottom: 5%;
- font-family: "Nanum Gothic";
- font-size: 9pt;
- overflow-y: auto;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 10;
- -webkit-box-orient: vertical;
-}
-
-.menu-item {
- padding: 0px 5px;
- width: 230px;
- text-align: center;
- margin-bottom: 9px;
-}
-.menu-item span {
- box-sizing: border-box;
- display: inline-block;
- width: 220px;
- padding: 5px 20px;
- padding-left: 31px;
- box-shadow: inset 2px 2px 6px #b7b7b7;
- border-radius: 20px;
- text-align: left;
- background: #ffffff;
- color: #888888;
- font-size: 14px;
- font-weight: 600;
- margin-left: 4px;
-}
-.menu-item .sub-menu {
- display: none;
-}
-.menu-item.active {
- margin-bottom: 3px;
-}
-.menu-item.active span {
- color: #2b85c6;
-}
-.menu-item.active .sub-menu {
- display: block;
- margin: 0px;
- margin-top: 3px;
- padding: 0px;
- text-align: right;
-}
-.menu-item.active .sub-menu .sub-menu-item {
- box-sizing: border-box;
- display: inline-block;
- width: 180px;
- padding: 5px 20px;
- padding-left: 31px;
- box-shadow: inset 2px 2px 6px #b7b7b7;
- border-radius: 20px;
- text-align: left;
- background: #ffffff;
- color: #888888;
- font-size: 14px;
- font-weight: 600;
- margin-left: 4px;
- margin-right: 4px;
- margin-bottom: 3px;
- cursor: pointer;
-}
-.menu-item.active .sub-menu .sub-menu-item.active {
- color: #2b85c6;
-}
-
-.main-title {
- font-size: 20px;
-}
-
-.sub-title {
- font-size: 20px;
- color: #df8107;
-}
-
-.home-trainning {
- width: 100%;
- max-width: 1600px;
- position: relative;
- /* 신청인정보 */
-}
-.home-trainning th,
-.home-trainning tr {
- height: 36px;
-}
-.home-trainning .contentBtn {
- display: flex;
- gap: 10px;
- justify-content: end;
- margin: 10px 0;
-}
-.home-trainning button {
- background-color: #007BFF;
- color: #fff;
- border-radius: 6px;
- border: none;
- padding: 5px 10px;
-}
-.home-trainning .Table_Main {
- width: 100%;
- max-width: 1600px;
- border: 1px solid #e9e9e9;
- text-align: center;
-}
-.home-trainning .Table_Main.course-list-table tbody tr {
- cursor: pointer;
-}
-.home-trainning .Table_Main.course-list-table tbody tr:hover {
- background: #f1f1f1;
-}
-.home-trainning .Table_Main.new-course-creation-table {
- margin-bottom: 50px;
-}
-.home-trainning .Table_Main.new-course-creation-table .new-course-creation-tbody tr td input {
- width: 100%;
- height: 100%;
- height: 35px;
- border: none;
- padding: 0px 5px;
- font-size: 14px;
-}
-.home-trainning .Table_Main.new-course-creation-table .new-course-creation-tbody tr td input.reg-start-end-date {
- width: 40%;
- padding: 0px;
-}
-.home-trainning .Table_List {
- background: #e9eff4;
-}
-.home-trainning .application {
- width: 60px;
- padding: 5px;
- background: #E9F0F5;
- border-radius: 6px;
- border: none;
- font-weight: 600;
- font-size: 12px;
-}
-.home-trainning .applicationEnd {
- color: red;
-}
-.home-trainning .home-visit-item {
- display: none;
-}
-.home-trainning #UserDate {
- margin: 25px 0;
- display: none;
-}
-.home-trainning .DateTitle {
- font-size: 18px;
- font-weight: 700;
- line-height: 18px;
- display: inline-block;
- margin-right: 20px;
-}
-.home-trainning .AddBtn {
- display: block;
- margin: 30px auto;
- padding: 10px 20px;
- background-color: #007BFF;
- color: white;
- border: none;
- border-radius: 5px;
- cursor: pointer;
-}
-.home-trainning button:hover {
- background-color: #0056b3;
-}
-.home-trainning #ContentAdd {
- display: none;
-}
-.home-trainning .DateTitle {
- font-size: 18px;
- font-weight: 700;
- line-height: 18px;
- display: inline-block;
- margin-right: 20px;
-}
-.home-trainning .DateText {
- font-size: 15px;
- font-weight: 400;
- line-height: 12px;
- align-items: center;
-}
-.home-trainning .DateText .home-visit-item-training-name {
- font-weight: 600;
-}
-
-.visit-trainning {
- /* 기본 레이아웃 설정 */
- /* 캘린더 CSS */
- /* Form css */
- /* 관리자용 css */
-}
-.visit-trainning .page-content-wrapper {
- display: inline-block;
- width: auto;
- margin: 0 auto;
-}
-.visit-trainning .page-sidebar-wrapper {
- float: left;
- width: 222px;
- height: 1000px;
-}
-.visit-trainning .page-content {
- width: 100%;
-}
-.visit-trainning .content-bg {
- background-color: #e9eff4;
- padding: 30px;
-}
-.visit-trainning .CalendarOverlay {
- display: inline-flex;
-}
-.visit-trainning .Calendar {
- padding: 30px;
- background: white;
- border-radius: 16px;
- flex-direction: column;
- justify-content: flex-start;
- align-items: flex-start;
- gap: 12px;
- display: flex;
-}
-.visit-trainning .Header {
- align-self: stretch;
- justify-content: space-between;
- align-items: center;
- display: inline-flex;
-}
-.visit-trainning .yyyy-mm {
- color: black;
- font-size: 24px;
- font-family: Inter;
- font-weight: 900;
- word-wrap: break-word;
-}
-.visit-trainning .Frame9 {
- justify-content: flex-start;
- align-items: flex-start;
- gap: 12px;
- display: flex;
-}
-.visit-trainning .Chevron {
- padding: 8px;
- justify-content: flex-start;
- align-items: flex-start;
- gap: 10px;
- display: flex;
-}
-.visit-trainning .page-prev {
- margin-top: 3px;
- width: 26px;
- height: 26px;
- transform: rotate(90deg);
-}
-.visit-trainning .page-next {
- margin-top: 3px;
- width: 26px;
- height: 26px;
- transform: rotate(-90deg);
-}
-.visit-trainning .month {
- margin: 0px auto;
-}
-.visit-trainning .month .Days {
- flex-direction: column;
- justify-content: flex-start;
- align-items: center;
- display: flex;
-}
-.visit-trainning .month .Row {
- justify-content: flex-start;
- align-items: center;
- display: flex;
-}
-.visit-trainning .month .Cell {
- display: flex;
- justify-content: center;
- align-items: center;
- width: 64px;
- height: 64px;
- padding: 10px;
- box-sizing: border-box;
- padding: 20px;
-}
-.visit-trainning .month .Cell:hover {
- background-color: #e9eff4;
-}
-.visit-trainning .month .Day {
- display: flex;
- justify-content: center;
- align-items: center;
- width: 64px;
- height: 64px;
- padding: 10px;
- border: 1px solid #D5D4DF;
- box-sizing: border-box;
- padding: 20px;
-}
-.visit-trainning .month .Week {
- width: 24px;
- height: 24px;
- text-align: center;
- color: black;
- font-size: 14px;
- font-family: Inter;
- font-weight: 600;
- word-wrap: break-word;
- border: 1px solid #fff;
-}
-.visit-trainning .month .Day {
- border: 1px #D5D4DF solid;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 14px;
-}
-.visit-trainning .month .inactive {
- width: 64px;
- height: 64 px;
- text-align: center;
- color: #A8A8A8;
- font-size: 14px;
- font-family: Inter;
- font-weight: 400;
- word-wrap: break-word;
-}
-.visit-trainning .month .Weekdays {
- width: 24px;
- height: 24px;
- text-align: center;
- color: black;
- font-size: 14px;
- font-family: Inter;
- font-weight: 400;
- word-wrap: break-word;
-}
-.visit-trainning .month .Su {
- color: #FF6666;
-}
-.visit-trainning .month .Sa {
- color: #3378C1;
-}
-.visit-trainning .month .today {
- background-color: #45539d;
- font-weight: bold;
- color: #fff;
- pointer-events: none;
-}
-.visit-trainning .Application {
- width: 430px;
- margin-top: 15px;
- float: right;
-}
-.visit-trainning .InputBox {
- width: 342px;
- height: 34px;
- background: white;
- border-radius: 6px;
- border: 1px solid rgba(66, 80, 102, 0.4);
-}
-.visit-trainning #Agency, .visit-trainning #Place {
- width: 160px;
-}
-.visit-trainning #Name {
- width: 91px;
-}
-.visit-trainning #Persons {
- width: 79px;
-}
-.visit-trainning #Tel, .visit-trainning #Place {
- margin-left: -13px;
-}
-.visit-trainning #Hope1, .visit-trainning #Hope2, .visit-trainning #Hope3 {
- width: 342px;
- margin-left: -20px;
-}
-.visit-trainning label {
- margin: 0 25px 0 20px;
- display: inline-block;
- text-align: left;
- line-height: 50px;
- font-size: 14px;
-}
-.visit-trainning .possible {
- width: 100px;
- height: 32px;
- padding: 5px;
- background: #E9F0F5;
- border-radius: 6px;
- border: none;
-}
-.visit-trainning .impossibility {
- width: 100px;
- height: 32px;
- padding: 5px;
- background: #EAEAEA;
- border-radius: 6px;
- border: none;
-}
-
-.visit-trainning-approval-system th,
-.visit-trainning-approval-system tr {
- height: 36px;
-}
-.visit-trainning-approval-system #Table_Main {
- width: 1020px;
- border: 1px solid #e9e9e9;
- text-align: center;
-}
-.visit-trainning-approval-system .Table_List {
- background: #e9eff4;
-}
-.visit-trainning-approval-system .caption {
- font-size: 11px;
- margin: 10px;
-}
-.visit-trainning-approval-system .HopeDay {
- color: #2e5aac;
- bordeR: 1px solid #89a7e0;
- padding: 5px;
- background: #fff;
- border-radius: 2px;
-}
-.visit-trainning-approval-system .cancel {
- border: 1px solid red;
- color: red;
- border-radius: 2px;
- padding: 4px 8px;
- background-color: #fff;
-}
-.visit-trainning-approval-system .HopeDay.clicked {
- background-color: #89a7e0;
- color: white;
-}
-.visit-trainning-approval-system .statusConfirmed {
- color: #2e5aac;
-}
-
-/*# sourceMappingURL=style.css.map */
diff --git a/old/style.css.map b/old/style.css.map
deleted file mode 100644
index 53162a0..0000000
--- a/old/style.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sourceRoot":"","sources":["sass/style.scss"],"names":[],"mappings":";AAAA;AACA;EAAM;;;AACN;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EAAY;EAAoB;EAAiB;EAAgB;EAAkB;;;AACnF;EAAc;EAAoB;EAAiB;EAAgB;EAAuB;;;AAC1F;EAAgB;EAAoB;EAAiB;EAAgB;EAAuB;;;AAC5F;EAAc;EAAoB;EAAiB;EAAgB;EAA4B;;;AAE/F;AACA;EAAe;EAAe;EAAkB;EAAkB;EAAkB;;;AACpF;EAAe;EAAe;EAAkB;EAAkB;EAAkB;;;AACpF;EAAkB;EAAe;EAAkB;EAAkB;EAAkB;;;AACvF;EAAiB;EAAe;EAAkB;EAAkB;;;AAEpE;AACA;EAAY;EAAe;;;AAC3B;EAAY;EAAe;;;AAC3B;EAAe;EAAe;EAAkB;;;AAEhD;AACA;EAAY;;;AACZ;EAAU;;;AACV;EAAY;EAA0B;EAAsB;EAAkB;EAAoB;;;AAClG;EAAW;EAAe;EAA0B;EAAkB;;;AACtE;EAAW;EAAe;;;AAC1B;EAAW;EAAe;EAAyB;EAAqB;EAAoB;EAA2B;EAAc;;;AACrI;EAAW;EAAe;EAAyB;EAAoB;;;AACvE;EAAe;EAA0B;EAAsB;EAAkB;EAAoB;;;AAErG;AACA;EAAU;EAAoB;EAAgB;EAAgB;EAAuB;;;AACrF;EAAY;EAAoB;EAAgB;EAAgB;EAAuB;;;AACvF;EAAW;EAAoB;EAAgB;EAAgB;EAA4B;;;AAE3F;AACA;EAAY;EAAe;EAAkB;EAAe;;;AAC5D;EAAW;EAAe;EAAkB;;;AAG5C;AACA;EAAc;EAAe;EAAkB;EAAkB;EAAkB;;;AACnF;EAAgB;EAAe;EAAkB;EAAkB;EAAe;EAAkB;;;AACpG;EAAiB;EAAe;EAAkB;EAAkB;EAAe;;;AACnF;EAAe;EAAe;EAAkB;EAAkB;EAAe;EAAkB;;;AACnG;EAAkB;EAAe;EAAkB;EAAkB;;;AAErE;AACA;EAAa;EAAa;EAAiC;EAAwE;EAAwB;EAAiB;EAAkB;EAAkB;EAAkB;;;AAClO;EAAY;EAAa;EAAuB;EAAmB;EAAY;;;AAE/E;AACA;EAAa;;;AACb;EAAgB;EAAyB;EAAqB;;;AAE9D;AACA;EACI;EACH;EACG;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACC;EACA;EACA;EACA;EACA;;;AAEL;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAEJ;EACI;;AACA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;;;AAOpB;EACI;;;AAEJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;AAwEA;;AAvEA;AAAA;EAEI;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGQ;EACI;;AACA;EACI;;AAOhB;EACI;;AAIY;EACI;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;EACA;;AAQ5B;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAIJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAEJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AACA;EACI;;;AAMZ;AACI;AAmBA;AA8IA;AAsCA;;AAtMA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAIJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACK;EACA;EACA;EACA;EACA;;AAEL;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;EACA;EACA;EACA;;AAEJ;EACG;EACA;EACA;;AAEH;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEH;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;;AAKR;EACI;EACA;EACA;;AAEJ;EACI;EACC;EACA;EACA;EACA;;AAEL;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACC;;AAGL;EACI;EACC;EACA;EACA;EACA;;AAKL;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACK;EACD;EACA;EACA;EACA;EACA;;;AAMJ;AAAA;EAEI;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;;AAEJ;EACG;EACC;;AAIJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAEJ;EACG","file":"style.css"}
\ No newline at end of file
diff --git a/src/main/java/geoinfo/admins/constructionProjectManagement/ConstructionProjectManagementController.java b/src/main/java/geoinfo/admins/constructionProjectManagement/ConstructionProjectManagementController.java
new file mode 100644
index 0000000..fce2de6
--- /dev/null
+++ b/src/main/java/geoinfo/admins/constructionProjectManagement/ConstructionProjectManagementController.java
@@ -0,0 +1,553 @@
+package geoinfo.admins.constructionProjectManagement;
+
+import java.net.URLEncoder;
+import java.security.SecureRandom;
+import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.log4j.Logger;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import egovframework.com.cmm.service.EgovProperties;
+import egovframework.rte.psl.dataaccess.util.EgovMap;
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import geoinfo.admins.board.RefrncRoomController;
+import geoinfo.admins.user.service.GeneralUserMngService;
+import geoinfo.admins.user.service.HomeTrainingService;
+import geoinfo.com.EgovExcel;
+import geoinfo.com.GeoinfoCommon;
+import geoinfo.comm.util.ScriptUtil;
+import geoinfo.session.UserInfo;
+import geoinfo.util.MyUtil;
+import whois.whoisSMS;
+
+
+
+@Controller
+public class ConstructionProjectManagementController {
+ @Resource(name = "generalUserMngService")
+ private GeneralUserMngService masterService;
+
+ @Resource(name = "homeTrainingService")
+ private HomeTrainingService homeTrainingService;
+
+ /**
+ * 집합교육 화면
+ * @param params
+ * @param model
+ * @param response
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/construction-project-statistics-index.do")
+ public String homeTrainingIndex(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception {
+
+ if (!UserInfo.isValidSession(request, response, "admin")) {
+ return "";
+ }
+
+ model.addAttribute("params", params);
+ return "admins/constructionProjectManagement/construction-project-statistics-index";
+ }
+
+ /**
+ * 집합교육 추가
+ * @param request
+ * @param strJSON
+ * @param response
+ * @return
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/home-training-index/add.do", method = RequestMethod.POST)
+ @ResponseBody
+ public JSONObject addHomeTraining(
+ HttpServletRequest request,
+ @RequestBody String strJSON,
+ HttpServletResponse response) {
+
+
+ JSONObject jsonResponse = new JSONObject();
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " IN:" +
+ "\n--------------------------------------------------------------\n" +
+ "strJSON" + strJSON + "\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+ JSONParser jsonParser = new JSONParser();
+ JSONArray jsonArr = null;
+ boolean isFail = false;
+ String failMsg = "";
+ try {
+ jsonArr = (JSONArray)jsonParser.parse(strJSON);
+ for (Object obj : jsonArr) {
+ JSONObject jsonObject = (JSONObject) obj;
+
+ // JSONObject를 HashMap으로 변환
+ HashMap params = new HashMap<>();
+ for (Object key : jsonObject.keySet()) {
+ String keyStr = (String) key;
+ Object value = jsonObject.get(keyStr);
+ params.put(keyStr, value);
+ }
+ try {
+ HashMap hashMap = homeTrainingService.addHomeTraining(request, response, params);
+ int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("p_result_code"));
+ String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("p_err_msg"));
+
+ long lWvtRegId = MyUtil.getLongFromObject(hashMap.get("p_wvt_reg_id"));
+
+ if( nRetCode == 100 ) {
+ jsonResponse.put("resultCode", nRetCode);
+ jsonResponse.put("result", "true");
+ jsonResponse.put("message", "등록이 완료되었습니다.");
+ } else {
+ if( nRetCode == 11 ) {
+ lpszRetMsg += "\n" +
+ "사업명: " + params.get("constName");
+ }
+ jsonResponse.put("resultCode", nRetCode);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", lpszRetMsg);
+
+ isFail = true;
+ failMsg = lpszRetMsg;
+ break;
+ }
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ String strTxt =
+ "---------- BUG REPORTING START ----------" + "\n" +
+ "에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
+ "strJSON:[\n" + strJSON + "\n]\n" +
+ "e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
+ "new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
+ "---------- BUG REPORTING END ----------" + "\n" +
+ "";
+ System.out.println(strTxt);
+ jsonResponse.put("resultCode", -1);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", e.getMessage());
+ }
+ }
+
+ } catch (org.json.simple.parser.ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ if( isFail ) {
+ jsonResponse.put("resultCode", -2);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", failMsg);
+ }
+
+ System.out.println("\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " OUT:" +
+ "\n--------------------------------------------------------------\n" +
+ "jsonResponse.toJSONString():[" + jsonResponse.toJSONString() + "]\n" +
+ "\n--------------------------------------------------------------\n");
+
+ return jsonResponse;
+ }
+
+ /**
+ * 집합교육 수정
+ * @param request
+ * @param strJSON
+ * @param response
+ * @return
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/home-training-index/update.do", method = RequestMethod.POST)
+ @ResponseBody
+ public JSONObject updateHomeTraining(
+ HttpServletRequest request,
+ @RequestBody String strJSON,
+ HttpServletResponse response) {
+
+
+ JSONObject jsonResponse = new JSONObject();
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " IN:" +
+ "\n--------------------------------------------------------------\n" +
+ "strJSON" + strJSON + "\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+ JSONParser jsonParser = new JSONParser();
+ JSONArray jsonArr = null;
+ boolean isFail = false;
+ String failMsg = "";
+ try {
+ jsonArr = (JSONArray)jsonParser.parse(strJSON);
+ for (Object obj : jsonArr) {
+ JSONObject jsonObject = (JSONObject) obj;
+
+ // JSONObject를 HashMap으로 변환
+ HashMap params = new HashMap<>();
+ for (Object key : jsonObject.keySet()) {
+ String keyStr = (String) key;
+ Object value = jsonObject.get(keyStr);
+ params.put(keyStr, value);
+ }
+ try {
+ HashMap hashMap = homeTrainingService.updateHomeTraining(request, response, params);
+ int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("p_result_code"));
+ String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("p_err_msg"));
+
+ if( nRetCode == 100 ) {
+ jsonResponse.put("resultCode", nRetCode);
+ jsonResponse.put("result", "true");
+ jsonResponse.put("message", "수정이 완료되었습니다.");
+ } else {
+ if( nRetCode == 11 ) {
+ lpszRetMsg += "\n" +
+ "사업명: " + params.get("constName");
+ }
+ jsonResponse.put("resultCode", nRetCode);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", lpszRetMsg);
+
+ isFail = true;
+ failMsg = lpszRetMsg;
+ break;
+ }
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ String strTxt =
+ "---------- BUG REPORTING START ----------" + "\n" +
+ "에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
+ "strJSON:[\n" + strJSON + "\n]\n" +
+ "e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
+ "new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
+ "---------- BUG REPORTING END ----------" + "\n" +
+ "";
+ System.out.println(strTxt);
+ jsonResponse.put("resultCode", -1);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", e.getMessage());
+ }
+ }
+
+ } catch (org.json.simple.parser.ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ if( isFail ) {
+ jsonResponse.put("resultCode", -2);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", failMsg);
+ }
+
+ System.out.println("\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " OUT:" +
+ "\n--------------------------------------------------------------\n" +
+ "jsonResponse.toJSONString():[" + jsonResponse.toJSONString() + "]\n" +
+ "\n--------------------------------------------------------------\n");
+
+ return jsonResponse;
+ }
+
+ @RequestMapping(value = "admins/constructionProjectManagement/home-training-index/list.do", method = RequestMethod.GET)
+ @ResponseBody
+ public JSONObject getHomeTraining(
+ HttpServletRequest request,
+ @RequestParam HashMap params,
+ HttpServletResponse response) {
+
+
+ JSONObject jsonResponse = new JSONObject();
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " IN:" +
+ "\n--------------------------------------------------------------\n" +
+ "params.toString()" + params.toString() + "\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+
+
+ try {
+ homeTrainingService.getHomeTraining(request, response, jsonResponse, params);
+ jsonResponse.put("resultCode", 100);
+ jsonResponse.put("result", "true");
+ jsonResponse.put("message", "조회가 완료되었습니다.");
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ String strTxt =
+ "---------- BUG REPORTING START ----------" + "\n" +
+ "에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
+ "e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
+ "new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
+ "---------- BUG REPORTING END ----------" + "\n" +
+ "";
+ System.out.println(strTxt);
+
+ String eMsg = e.getMessage();
+ if( eMsg != null ) {
+ if( eMsg.equals("로그인이 필요한 서비스입니다.") ) {
+ jsonResponse.put("resultCode", 401);
+ }
+ }
+
+ jsonResponse.put("resultCode", -1);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", e.getMessage());
+ }
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " OUT:" +
+ "\n--------------------------------------------------------------\n" +
+ "jsonResponse.toJSONString():[" + jsonResponse.toJSONString() + "]\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+
+ return jsonResponse;
+ }
+
+ /**
+ * 특정 집합교육에 참여한 사용자 목록을 조회한다.
+ * @param request
+ * @param params
+ * @param response
+ * @return
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/home-training-index/item/list.do", method = RequestMethod.GET)
+ @ResponseBody
+ public JSONObject getHomeTrainingItemList(
+ HttpServletRequest request,
+ @RequestParam HashMap params,
+ HttpServletResponse response) {
+
+
+ JSONObject jsonResponse = new JSONObject();
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " IN:" +
+ "\n--------------------------------------------------------------\n" +
+ "params.toString()" + params.toString() + "\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+
+
+ try {
+ homeTrainingService.getHomeTrainingItemList(request, response, jsonResponse, params);
+ jsonResponse.put("resultCode", 100);
+ jsonResponse.put("result", "true");
+ jsonResponse.put("message", "조회가 완료되었습니다.");
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ String strTxt =
+ "---------- BUG REPORTING START ----------" + "\n" +
+ "에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
+ "e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
+ "new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
+ "---------- BUG REPORTING END ----------" + "\n" +
+ "";
+ System.out.println(strTxt);
+ jsonResponse.put("resultCode", -1);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", e.getMessage());
+ }
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " OUT:" +
+ "\n--------------------------------------------------------------\n" +
+ "jsonResponse.toJSONString():[" + jsonResponse.toJSONString() + "]\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+
+ return jsonResponse;
+ }
+
+
+ @RequestMapping(value = "admins/constructionProjectManagement/home-training-index/item/delete.do", method = RequestMethod.POST)
+ @ResponseBody
+ public JSONObject deleteHomeTrainingItem(
+ HttpServletRequest request,
+ @RequestBody String strJSON,
+ HttpServletResponse response) {
+
+
+ JSONObject jsonResponse = new JSONObject();
+
+ System.out.println(
+ "\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " IN:" +
+ "\n--------------------------------------------------------------\n" +
+ "strJSON" + strJSON + "\n" +
+ "\n--------------------------------------------------------------\n"
+ );
+
+ JSONParser jsonParser = new JSONParser();
+ JSONArray jsonArr = null;
+ boolean isFail = false;
+ String failMsg = "";
+ try {
+ jsonArr = (JSONArray)jsonParser.parse(strJSON);
+ for (Object obj : jsonArr) {
+ JSONObject jsonObject = (JSONObject) obj;
+
+ // JSONObject를 HashMap으로 변환
+ HashMap params = new HashMap<>();
+ for (Object key : jsonObject.keySet()) {
+ String keyStr = (String) key;
+ Object value = jsonObject.get(keyStr);
+ params.put(keyStr, value);
+ }
+ try {
+ HashMap hashMap = homeTrainingService.deleteHomeTrainingItem(request, response, params);
+ int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("p_result_code"));
+ String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("p_err_msg"));
+
+
+ if( nRetCode == 100 ) {
+ jsonResponse.put("resultCode", nRetCode);
+ jsonResponse.put("result", "true");
+ jsonResponse.put("message", "삭제가 완료되었습니다.");
+ } else {
+ if( nRetCode == 11 ) {
+ lpszRetMsg += "\n" +
+ "사업명: " + params.get("constName");
+ }
+ jsonResponse.put("resultCode", nRetCode);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", lpszRetMsg);
+
+ isFail = true;
+ failMsg = lpszRetMsg;
+ break;
+ }
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ String strTxt =
+ "---------- BUG REPORTING START ----------" + "\n" +
+ "에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
+ "strJSON:[\n" + strJSON + "\n]\n" +
+ "e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
+ "new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
+ "---------- BUG REPORTING END ----------" + "\n" +
+ "";
+ System.out.println(strTxt);
+ jsonResponse.put("resultCode", -1);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", e.getMessage());
+ }
+ }
+
+ } catch (org.json.simple.parser.ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ if( isFail ) {
+ jsonResponse.put("resultCode", -2);
+ jsonResponse.put("result", "false");
+ jsonResponse.put("message", failMsg);
+ }
+
+ System.out.println("\n--------------------------------------------------------------\n" +
+ request.getRequestURI() + " OUT:" +
+ "\n--------------------------------------------------------------\n" +
+ "jsonResponse.toJSONString():[" + jsonResponse.toJSONString() + "]\n" +
+ "\n--------------------------------------------------------------\n");
+
+ return jsonResponse;
+ }
+
+ /**
+ * 집합교육 승인 화면
+ * @param params
+ * @param model
+ * @param response
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/home-training-approval-system")
+ public String homeTrainingApprovalSystem(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception {
+
+ if (!UserInfo.isValidSession(request, response, "admin")) {
+ return "";
+ }
+
+ model.addAttribute("params", params);
+ return "admins/constructionProjectManagement/home-training-approval-system";
+ }
+
+ /**
+ * 방문교육 달력 화면
+ * @param params
+ * @param model
+ * @param response
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/visit-training-index.do")
+ public String visitTrainingIndex(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception {
+
+ if (!UserInfo.isValidSession(request, response, "admin")) {
+ return "";
+ }
+
+ model.addAttribute("params", params);
+ return "admins/constructionProjectManagement/visit-training-index";
+ }
+
+ /**
+ * 방문교육 승인 화면
+ * @param params
+ * @param model
+ * @param response
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "admins/constructionProjectManagement/visit-training-approval-system")
+ public String visitTrainingApprovalSystem(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception {
+
+ if (!UserInfo.isValidSession(request, response, "admin")) {
+ return "";
+ }
+
+ model.addAttribute("params", params);
+ return "admins/constructionProjectManagement/visit-training-approval-system";
+ }
+
+}
diff --git a/src/main/java/geoinfo/admins/user/GeneralUserMngController.java b/src/main/java/geoinfo/admins/user/GeneralUserMngController.java
index 1f6a7d0..967f597 100644
--- a/src/main/java/geoinfo/admins/user/GeneralUserMngController.java
+++ b/src/main/java/geoinfo/admins/user/GeneralUserMngController.java
@@ -113,9 +113,16 @@ public class GeneralUserMngController {
params.put("firstRecordIndex", paginationInfo.getFirstRecordIndex());
params.put("recordCountPerPage", paginationInfo.getRecordCountPerPage());
- List> resultList = masterService.selectInfoList(params);
+ String isFirst = request.getParameter("isFirst");
+
+
+ List> resultList = null;
+ int totalCnt = 0;
+ if( isFirst == null || !isFirst.toLowerCase().trim().equals("true") ) {
+ resultList = masterService.selectInfoList(params);
+ totalCnt = resultList.size() == 0 ? 0 : Integer.valueOf(((EgovMap) resultList.get(0)).get("totalrows").toString());
+ }
- int totalCnt = resultList.size() == 0 ? 0 : Integer.valueOf(((EgovMap) resultList.get(0)).get("totalrows").toString());
paginationInfo.setTotalRecordCount(totalCnt);
model.addAttribute("params", params);
diff --git a/src/main/webapp/WEB-INF/views/admins/board/00.jsp b/src/main/webapp/WEB-INF/views/admins/board/00.jsp
index 1fae7d3..5b17127 100644
--- a/src/main/webapp/WEB-INF/views/admins/board/00.jsp
+++ b/src/main/webapp/WEB-INF/views/admins/board/00.jsp
@@ -24,7 +24,7 @@ function linkPage(index){
function goDetail(idx, aid) {
document.listForm.idx.value = idx;
document.listForm.action = "${pageContext.request.contextPath}/admins/board/00-view.do";
- document.listForm.submit();
+ document.listForm.submit();
}
function goWrite() {
@@ -32,13 +32,13 @@ function goWrite() {
}
function searchPsBoard() {
-
+
if ( $("select[name=searchTitle]").val() == "0" ) {
alert("검색항목을 선택하세요.");
$("select[name=searchTitle]").focus();
return false;
}
-
+
if ( $("input[name=searchKey]").val() == "" ) {
alert("검색어를 입력하세요.");
$("input[name=searchKey]").focus();
@@ -46,7 +46,7 @@ function searchPsBoard() {
}
document.listForm.pageIndex.value = "1";
document.listForm.action = "${pageContext.request.contextPath}/admins/board/00.do";
- document.listForm.submit();
+ document.listForm.submit();
}
$(document).ready(
@@ -56,9 +56,9 @@ $(document).ready(
if ( $(this).val() == "" ) {
$(this).prop("selected", "selected");
}
- }
+ }
);
- }
+ }
);
@@ -82,15 +82,15 @@ $(document).ready(
-
+
|
-
+
@@ -164,7 +164,7 @@ $(document).ready(
diff --git a/old/home-training-index.jsp b/src/main/webapp/WEB-INF/views/admins/constructionProjectManagement/00.jsp
similarity index 63%
rename from old/home-training-index.jsp
rename to src/main/webapp/WEB-INF/views/admins/constructionProjectManagement/00.jsp
index 1cce9ed..6850db0 100644
--- a/old/home-training-index.jsp
+++ b/src/main/webapp/WEB-INF/views/admins/constructionProjectManagement/00.jsp
@@ -9,10 +9,10 @@
-
+
-
+
집합교육
-
+
-
+
-
-
+
+
교육 대상자 명단
⁕ 신청 집합교육명 :
-
+
-
+
+
|