diff --git a/egovframe-template-simple-react-contribution/public/assets/images/banner_m_01.png b/egovframe-template-simple-react-contribution/public/assets/images/banner_m_01.png deleted file mode 100644 index 41619c7..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/banner_m_01.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/banner_m_02.png b/egovframe-template-simple-react-contribution/public/assets/images/banner_m_02.png deleted file mode 100644 index 247f7bc..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/banner_m_02.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/banner_w_01.png b/egovframe-template-simple-react-contribution/public/assets/images/banner_w_01.png deleted file mode 100644 index 0b65d27..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/banner_w_01.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/banner_w_02.png b/egovframe-template-simple-react-contribution/public/assets/images/banner_w_02.png deleted file mode 100644 index a53ee85..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/banner_w_02.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/copy.png b/egovframe-template-simple-react-contribution/public/assets/images/copy.png new file mode 100644 index 0000000..f393326 Binary files /dev/null and b/egovframe-template-simple-react-contribution/public/assets/images/copy.png differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/copy2.png b/egovframe-template-simple-react-contribution/public/assets/images/copy2.png new file mode 100644 index 0000000..bc0fb0d Binary files /dev/null and b/egovframe-template-simple-react-contribution/public/assets/images/copy2.png differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/copy3.png b/egovframe-template-simple-react-contribution/public/assets/images/copy3.png new file mode 100644 index 0000000..27bd178 Binary files /dev/null and b/egovframe-template-simple-react-contribution/public/assets/images/copy3.png differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/f-logo.png b/egovframe-template-simple-react-contribution/public/assets/images/f-logo.png new file mode 100644 index 0000000..37742e6 Binary files /dev/null and b/egovframe-template-simple-react-contribution/public/assets/images/f-logo.png differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/logo.png b/egovframe-template-simple-react-contribution/public/assets/images/logo.png new file mode 100644 index 0000000..5821b04 Binary files /dev/null and b/egovframe-template-simple-react-contribution/public/assets/images/logo.png differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/logo_footer_m.png b/egovframe-template-simple-react-contribution/public/assets/images/logo_footer_m.png deleted file mode 100644 index 43efe6a..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/logo_footer_m.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/logo_footer_w.png b/egovframe-template-simple-react-contribution/public/assets/images/logo_footer_w.png deleted file mode 100644 index f153be3..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/logo_footer_w.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/logo_m.png b/egovframe-template-simple-react-contribution/public/assets/images/logo_m.png index 6af6761..a16dd4c 100644 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/logo_m.png and b/egovframe-template-simple-react-contribution/public/assets/images/logo_m.png differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/logo_w.png b/egovframe-template-simple-react-contribution/public/assets/images/logo_w.png deleted file mode 100644 index 12e87f6..0000000 Binary files a/egovframe-template-simple-react-contribution/public/assets/images/logo_w.png and /dev/null differ diff --git a/egovframe-template-simple-react-contribution/public/assets/images/search.png b/egovframe-template-simple-react-contribution/public/assets/images/search.png new file mode 100644 index 0000000..843d049 Binary files /dev/null and b/egovframe-template-simple-react-contribution/public/assets/images/search.png differ diff --git a/egovframe-template-simple-react-contribution/src/components/EgovFooter.jsx b/egovframe-template-simple-react-contribution/src/components/EgovFooter.jsx index 62582ff..cc5dd62 100644 --- a/egovframe-template-simple-react-contribution/src/components/EgovFooter.jsx +++ b/egovframe-template-simple-react-contribution/src/components/EgovFooter.jsx @@ -7,30 +7,36 @@ function EgovFooter() { }else{ return (
+
+
+
건설기준코드
건설기준위원회
정보제공
센터소개
+
건설기준코드 안내 | 건설기준코드 검색 | (구)건설기준 검색
+ 진행현황 | 위원회 일정
+ 공지사항 | Q&A | 수요조사 | 주요행사 | 건설교육안내 | 기술자료 | 보도자료 | 관련사이트 | API서비스 | 영문기준 제공 | 건설기준용어 | 건설기준 연구
+ 인사말 | 연혁 | 홍보자료 | 주요업무 | 찾아오시는길 +
+
+

- - 국가건설 기준센터 - {/* - */} - +

- 대표문의메일 : kcsc@kict.re.kr |
대표전화 : 0000-0000 (000-0000-0000)
- 호환성확인 : 000-0000-0000 | 교육문의 : 0000-0000-0000 + 상호명 : 한국건설기술연구원 | 대표자 : 김병석 | 대표메일 : kcsc@kict.re.kr
+ 사업자등록번호 : 229-82-01135 | 주소 : 경기도 고양시 일산서구 고양대로 283(대화동)

-

Copyright © 2021 Ministry Of The Interior And Safety. All Rights Reserved.

+

Copyright © 2011 KOREA INSTITUTE of CIVIL ENGINEERING and BUILDING TECHNOLOGY. All Rights Reserved.

- - - - - - - - + {/**/} + {/* */} + {/* */} + {/**/} + {/**/} + {/* */} + {/* */} + {/**/}
diff --git a/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx b/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx index 2b4ff7a..ef899bb 100644 --- a/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx +++ b/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx @@ -71,21 +71,34 @@ function EgovHeader({ loginUser, onChangeLogin }) {

- 국가건설기준센터{/*국가건설기준센터*/} - 국가건설기준센터{/*국가건설기준센터*/} + +
국가건설기준센터
국가건설기준센터 + 국가건설기준센터{/*국가건설기준센터*/}

주메뉴

    -
  • (isActive ? "cur" : "")}>건설기준코드
  • - {/*
  • (isActive ? "cur" : "")}>사이트소개
  • */} -
  • (isActive ? "cur" : "")}>정보마당
  • -
  • (isActive ? "cur" : "")}>고객지원
  • -
  • (isActive ? "cur" : "")}>알림마당
  • - {sessionUserSe ==='ACC_TP01' && -
  • (isActive ? "cur" : "")}>사이트관리
  • - } +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + {/*
  • (isActive ? "cur" : "")}>건설기준코드
  • */} + {/*/!*
  • (isActive ? "cur" : "")}>사이트소개
  • *!/*/} + {/*
  • (isActive ? "cur" : "")}>정보마당
  • */} + {/*
  • (isActive ? "cur" : "")}>고객지원
  • */} + {/*
  • (isActive ? "cur" : "")}>알림마당
  • */} + {/*{sessionUserSe ==='ACC_TP01' &&*/} + {/*
  • (isActive ? "cur" : "")}>사이트관리
  • */} + {/*}*/}
diff --git a/egovframe-template-simple-react-contribution/src/css/layout.css b/egovframe-template-simple-react-contribution/src/css/layout.css index f4781f8..e669895 100644 --- a/egovframe-template-simple-react-contribution/src/css/layout.css +++ b/egovframe-template-simple-react-contribution/src/css/layout.css @@ -5,16 +5,17 @@ body {min-width: 1400px;} .header {position: relative;} .header::after {content: ""; display: block; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: #dedede;} .header > .inner {position: relative; width: 1400px; height: 150px; margin: 0 auto; padding: 0 50px;} -.header h1 {display: inline-block; margin-top: 62px;} +.header h1 {display: inline-block; margin-top: 32px;} .header h1 a, .header h1 img {display: block;} .header .logo .m {display: none;} -.header .user_info {position: absolute; right: 50px; top: 20px; line-height: 30px;} +.header .logo .logotop {display: flex; width: 220px; justify-content: flex-end;} +.header .user_info {position: absolute; right: 50px; top: 10px; line-height: 30px;} .header .user_info .person {display: inline-block; color: #169bd5; font-weight: 500;} .header .user_info .person::before {content: ""; display: inline-block; width: 22px; height: 22px; margin-right: 7px; background: url(css/images/ico_person.png) no-repeat; background-size: contain; vertical-align: -4px;} .header .user_info .btn {margin-left: 14px; padding: 0 20px; border-radius: 15px; color: #fff; font-size: 14px; line-height: 30px; background: #169bd5;} -.header .gnb {position: absolute; left: 430px; top: 78px; width: 920px;} +.header .gnb {position: absolute; left: 430px; top: 50px; width: 920px;} .header .gnb ul {font-size: 0; text-align: center;} .header .gnb ul::after {content: ""; display: block; clear: both;} .header .gnb ul li {float: left;} @@ -22,11 +23,13 @@ body {min-width: 1400px;} .header .gnb ul li a {color: #666; font-size: 20px; font-weight: 700; letter-spacing: -0.25px;} .header .gnb ul li a.cur {color: #222;} -.header .right_a {position: absolute; right: 50px; top: 75px;} +.header .right_a {position: absolute; right: 50px; top: 65px;} .header .right_a .btn {width: 30px; height: 30px; font-size: 0; background: url(css/images/ico_allmenu.png) no-repeat right; background-size: 22px 18px;} .header .right_a .btn.active {background: url(css/images/ico_allmenu_close.png) no-repeat right; background-size: 22px 18px;} .header .right_a .btn.mobile {display: none;} +.header .topsearch {width: 25px; height: 27px; background: url(css/images/ico_search_b.png) no-repeat; margin: 5px;} + /* All menu */ .all_menu {transition: transform .2s ease-in-out, opacity .2s ease-in-out; transform-origin: top; z-index: 10;} .all_menu.Mobile {display: none;} @@ -75,14 +78,18 @@ body {min-width: 1400px;} .location ul li a.home::before {content: ""; display: block; position: absolute; left: 0; top: 3px; width: 14px; height: 13px; background: url(css/images/ico_home.png) no-repeat;} -.footer {position: relative; height: 180px;} +.footer {position: relative; background-color: #2c394b; } +.footer .upper {width: 100%; background-color: #384556; font-size: 12px;} +.footer .upper .up {width: 1400px; margin: 0 auto; padding: 10px 50px; } +.footer .upper .up .left {text-align: right; color: #B4B5B7; font-weight: 700;} +.footer .upper .up .right {color: #96A1AE; } .footer::before {content: ""; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 1px; background: #ccc;} .footer .inner {position: relative; width: 1400px; margin: 0 auto; padding: 0 50px;} .footer .inner::after {content: ""; display: block; clear: both;} -.footer h1 {float: left; width: 220px; padding-top: 50px;} +.footer h1 {float: left; width: 220px; padding-top: 20px;} .footer h1 .m {display: none;} -.footer .info {float: left; padding-top: 44px; color: #888; font-size: 16px; line-height: 26px;} -.footer .info .copy {margin-top: 12px;} +.footer .info {float: left; padding: 14px 10px; color: #888; font-size: 13px; } +.footer .info .copy {padding-top: 5px;} .footer .info .m_show {display: none;} .footer .right_col {position: absolute; right: 0; top: 73px; font-size: 0;} .footer .right_col a {display: inline-block; margin-right: 60px; vertical-align: top;} diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx new file mode 100644 index 0000000..0335671 --- /dev/null +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx @@ -0,0 +1,187 @@ +import React, {useState, useEffect, useRef} from 'react'; +import {Link, useNavigate, useLocation, useParams} from 'react-router-dom'; +import Modal from "react-bootstrap/Modal"; + +import * as EgovNet from 'api/egovFetch'; +import URL from 'constants/url'; +import CODE from 'constants/code'; + +import {default as EgovLeftNav} from 'components/leftmenu/EgovLeftNavAdmin'; +import EgovRadioButtonGroup from 'components/EgovRadioButtonGroup'; +import {Form} from "react-bootstrap"; + + +function AdminPostMgtEdit({props, reloadFunction}) { + console.group("AdminPostMgtEdit"); + console.log("[Start] AdminPostMgtEdit ------------------------------"); + console.log("AdminPostMgtEdit [props] : ", props); + + const navigate = useNavigate(); + const location = useLocation(); + const checkRef = useRef([]); + + console.log("AdminPostMgtEdit [location] : ", location); + + let item = null; + item = props; + console.log("@@@ item : " + JSON.stringify(item)); + + const [modeInfo, setModeInfo] = useState(item != null ? {mode: props.mode} : {mode: CODE.MODE_CREATE}); + const [boardDetail, setBoardDetail] = useState({}); + console.log("@@@ mode : " + modeInfo.mode); + + useEffect(() => { + initMode(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const initMode = () => { + if (modeInfo.mode === CODE.MODE_MODIFY) { + setBoardDetail(item); + } + } + + function editPartnerSite(e) { + e.preventDefault(); + e.stopPropagation(); + const form = e.target; + const info = { + siteTitle: form.siteTitle.value, + siteUrl: form.siteUrl.value, + fileGrpId: form.fileGrpId.value, + siteOrder: form.siteOrder.value, + useYn: form.useYn.value + } + if (modeInfo.mode === CODE.MODE_MODIFY) { + info.siteSeq = props.siteSeq; + } + EgovNet.requestFetch( + '/admin/config/partner-site-mgt', + { + method: "PUT", + headers: { + 'Content-type': 'application/json' + }, + body: JSON.stringify(info) + }, + (resp) => { + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + alert("저장되었습니다."); + reloadFunction(); + } else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) { + console.log("토큰 갱신중.") + } else { + alert(resp.result.resultMessage) + } + } + ) + } + + function deletePartnerSite(partnerSite){ + if(window.confirm("삭제하시겠습니까?")) { + EgovNet.requestFetch( + '/admin/config/partner-site-mgt', + { + method: "DELETE", + headers: { + 'Content-type': 'application/json' + }, + body: JSON.stringify(partnerSite) + }, + (resp) => { + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + alert("삭제되었습니다.") + reloadFunction(); + } else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) { + console.log("토큰 갱신중.") + } else { + alert(resp.result.resultMessage) + } + } + ) + } + } + + console.log("------------------------------AdminPostMgtEdit [End]"); + console.groupEnd("AdminPostMgtEdit"); + + const [defaultFixedYn, setDefaultFixedYn] = useState(props?.fixedYn || "N"); + + return ( + <> + {/* */} + + + {modeInfo.mode === CODE.MODE_CREATE && '글 작성'} + {modeInfo.mode === CODE.MODE_MODIFY && '글 수정'} + + + + +
+
{editPartnerSite(e)}} noValidate> +
+
필수
+
+ setDefaultFixedYn(e.target.checked ? 'Y' : 'N')} + /> +
+
+
+
필수
+
+ +
+
+
+
필수
+
+ +
+
+
+
필수
+
+ +
+
+
+
필수
+
+ +
+
+ + {/* */} +
+
+ + {modeInfo.mode === CODE.MODE_MODIFY && + + } +
+ +
+ +
+
+ {/* */} +
+
+
+ + + ); +} + +export default AdminPostMgtEdit; \ No newline at end of file diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx index 36b6e2b..4f65a0d 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx @@ -8,14 +8,18 @@ import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; import EgovPaging from 'components/EgovPaging'; import { itemIdxByPage } from 'utils/calc'; +import CODE from "../../../constants/code"; +import AboutSiteModal from "../config/aboutSiteMgt/AboutSiteModal"; +import AdminPostMgtEdit from "./AdminPostMgtEdit"; +import Modal from "react-bootstrap/Modal"; function AdminPostMgtList(props) { - console.group("EgovAdminBoardList"); - console.log("[Start] EgovAdminBoardList ------------------------------"); - console.log("EgovAdminBoardList [props] : ", props); + console.group("EgovAdminPostList"); + console.log("[Start] EgovAdminPostList ------------------------------"); + console.log("EgovAdminPostList [props] : ", props); const location = useLocation(); - console.log("EgovAdminBoardList [location] : ", location); + console.log("EgovAdminPostList [location] : ", location); // eslint-disable-next-line no-unused-vars const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { pageIndex: 1, searchCnd: '0', searchWrd: '' });// 기존 조회에서 접근 했을 시 || 신규로 접근 했을 시 @@ -26,18 +30,23 @@ function AdminPostMgtList(props) { const [listTag, setListTag] = useState([]); - const retrieveList = useCallback((srchCnd) => { - console.groupCollapsed("EgovAdminBoardList.retrieveList()"); + const [show, setShow] = useState(false); + const [modalBody, setModalBody] = useState(); + const handleClose = () => setShow(false); + const handleShow = () => setShow(true); - const retrieveListURL = '/cop/bbs/selectBBSMasterInfsAPI.do'; + const retrieveList = useCallback(() => { + console.groupCollapsed("EgovAdminPostList.retrieveList()"); + + const retrieveListURL = '/admin/boards/post-list'; const requestOptions = { - method: "POST", + method: "GET", headers: { 'Content-type': 'application/json', }, - body: JSON.stringify(srchCnd) + body: JSON.stringify() } EgovNet.requestFetch(retrieveListURL, @@ -48,31 +57,19 @@ function AdminPostMgtList(props) { let mutListTag = []; listTag.push(

검색된 결과가 없습니다.

); // 게시판 목록 초기값 - const resultCnt = parseInt(resp.result.resultCnt); - const currentPageNo = resp.result.paginationInfo.currentPageNo; - const pageSize = resp.result.paginationInfo.pageSize; - // 리스트 항목 구성 - resp.result.resultList.forEach(function (item, index) { + resp.result.postList.forEach(function (item, index) { if (index === 0) mutListTag = []; // 목록 초기화 - const listIdx = itemIdxByPage(resultCnt , currentPageNo, pageSize, index); mutListTag.push( - -
{listIdx}
-
{item.bbsNm}
-
{item.bbsTyCodeNm}
-
{item.bbsAttrbCodeNm}
-
{item.frstRegisterPnttm}
-
{item.useAt === "Y" ? "사용" : "사용안함"}
- +
+
{item.bbsContSeq}
+
{item.bbsSeq}
+
{item.bbsContTitle}
+
{item.bbsContents}
+
{item.bbsReadCnt}
+
{item.bbsContLevel}
+
); }); @@ -82,7 +79,7 @@ function AdminPostMgtList(props) { console.log("err response : ", resp); } ); - console.groupEnd("EgovAdminBoardList.retrieveList()"); + console.groupEnd("EgovAdminPostList.retrieveList()"); },[listTag, searchCondition]); useEffect(() => { @@ -90,8 +87,16 @@ function AdminPostMgtList(props) { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - console.log("------------------------------EgovAdminBoardList [End]"); - console.groupEnd("EgovAdminBoardList"); + function editPost(item){ + handleShow(); + if(item != undefined) { + item.mode = CODE.MODE_MODIFY; + } + setModalBody() + } + + console.log("------------------------------EgovAdminPostList [End]"); + console.groupEnd("EgovAdminPostList"); return (
@@ -99,7 +104,8 @@ function AdminPostMgtList(props) {
  • Home
  • -
  • 사이트관리
  • +
  • 사이트관리
  • +
  • 게시판현황
  • 게시물 관리
@@ -114,11 +120,9 @@ function AdminPostMgtList(props) { {/* */}
-

사이트관리

+

게시물 관리

-

게시물 관리

- {/* */}
    @@ -159,12 +163,13 @@ function AdminPostMgtList(props) { {/* */}
    - 번호 - 게시판명 - 게시판유형 - 게시판속성 - 생성일 - 사용여부 + + 제목 + 작성자 + 작성일 + 조회수 + 파일 +
    {listTag} @@ -184,6 +189,9 @@ function AdminPostMgtList(props) {
+ + {modalBody} +
diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx index 1051483..eb120ad 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx @@ -1,4 +1,4 @@ -import React, {useState, useEffect, useRef} from 'react'; +import React, {useState, useEffect, useRef, useCallback} from 'react'; import {Link, useNavigate, useLocation, useParams} from 'react-router-dom'; import Modal from "react-bootstrap/Modal"; @@ -30,7 +30,35 @@ function EgovAdminBoardEdit({props, reloadFunction}) { const [boardDetail, setBoardDetail] = useState({}); console.log("@@@ mode : " + modeInfo.mode); + const [bbsTypeList, setBbsTypeList] = useState([]); + const [roleList, setRoleList] = useState([]); + + const retrieveList = useCallback(() => { + const retrieveListURL = '/admin/boards/get-option-list'; + + const requestOptions = { + method: "GET", + headers: { + 'Content-type': 'application/json', + }, + body: JSON.stringify() + } + + EgovNet.requestFetch(retrieveListURL, + requestOptions, + (resp) => { + setBbsTypeList(resp.result.bbsTypeList); + setRoleList(resp.result.roleList); + console.log("@@@ bbsTypeList : " + JSON.stringify(resp.result.bbsTypeList)); + }, + function (resp) { + console.log("err response : ", resp); + } + ); + },[]); + useEffect(() => { + retrieveList(); initMode(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -48,7 +76,13 @@ function EgovAdminBoardEdit({props, reloadFunction}) { const info = { bbsId: form.bbsId.value, bbsTitle: form.bbsTitle.value, - bbsDesc: form.bbsDesc.value + bbsDesc: form.bbsDesc.value, + bbsType: form.bbsType.value, + bbsAnsYn: bbsAnsYn, + bbsReplYn: bbsReplYn, + useYn: useYn, + readRole: form.readRole.value, + writeRole: form.writeRole.value } if (modeInfo.mode === CODE.MODE_MODIFY) { info.bbsSeq = props.bbsSeq; @@ -103,6 +137,10 @@ function EgovAdminBoardEdit({props, reloadFunction}) { console.log("------------------------------EgovAdminBoardEdit [End]"); console.groupEnd("EgovAdminBoardEdit"); + const [bbsAnsYn, setBbsAnsYn] = useState(props?.bbsAnsYn || "N"); + const [bbsReplYn, setBbsReplYn] = useState(props?.bbsReplYn || "N"); + const [useYn, setUseYn] = useState(props?.useYn || "N"); + return ( <> {/* */} @@ -137,6 +175,75 @@ function EgovAdminBoardEdit({props, reloadFunction}) { defaultValue={props?.bbsDesc}/> +
+
필수
+
+ + + {bbsTypeList.map((item) => ( + + ))} + +
+
+
+
필수
+
+ setBbsAnsYn(e.target.checked ? 'Y' : 'N')} + /> +
+
+
+
필수
+
+ setBbsReplYn(e.target.checked ? 'Y' : 'N')} + /> +
+
+
+
필수
+
+ setUseYn(e.target.checked ? 'Y' : 'N')} + /> +
+
+
+
필수
+
+ + + {roleList.map((item) => ( + + ))} + +
+
+
+
필수
+
+ + + {roleList.map((item) => ( + + ))} + +
+
{/* */}
diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/boards/List.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/boards/List.jsx index fe4318e..2a1381b 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/boards/List.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/boards/List.jsx @@ -56,7 +56,7 @@ function EgovAdminBoardList(props) { mutListTag.push(
-
{item.bbsSeq}
+
{item.bbsId}
{item.bbsTitle}
{item.frstCrtId}
@@ -99,7 +99,8 @@ function EgovAdminBoardList(props) {
  • Home
  • -
  • 사이트관리
  • +
  • 사이트관리
  • +
  • 게시판현황
  • 게시판 관리
@@ -114,10 +115,9 @@ function EgovAdminBoardList(props) { {/* */}
-

사이트관리

+

게시판 관리

-

게시판 관리

{/* */} {/*
@@ -159,7 +159,7 @@ function EgovAdminBoardList(props) { {/* */}
- 번호 + 아이디 제목 작성자 diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/committee/ProgressStatus.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/committee/ProgressStatus.jsx index 40ad06d..94ff4e8 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/committee/ProgressStatus.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/committee/ProgressStatus.jsx @@ -8,6 +8,102 @@ import URL from 'constants/url'; import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; import EgovPagingPaginationInfo from 'components/EgovPagingPaginationInfo'; +import styled from "styled-components"; + +const StyledDiv = styled.div` +.BRD008 { + .head { + span { + text-align: left; + &:nth-child(1) { + width: 32px; + text-align: center; + } + &:nth-child(2) { + width: 60px; + text-align: center; + } + &:nth-child(3) { + width: 300px; + } + &:nth-child(4) { + width: 120px; + } + &:nth-child(5) { + width: 80px; + } + &:nth-child(6) { + width: 70px; + } + &:nth-child(7) { + width: 50px; + text-align: center; + } + &:nth-child(8) { + width: 50px; + text-align: center; + } + } + } + .result .list_item { + & > div { + text-align: left; + &:nth-child(1) { + width: 32px; + text-align: center; + } + &:nth-child(2) { + width: 60px; + text-align: center; + } + &:nth-child(3) { + width: 300px; + } + &:nth-child(4) { + width: 120px; + } + &:nth-child(5) { + width: 80px; + } + &:nth-child(6) { + width: 70px; + } + &:nth-child(7) { + width: 50px; + text-align: center; + } + &:nth-child(8) { + width: 50px; + text-align: center; + } + } + } +} + +.board-bot { + margin-top: 20px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + justify-content: center; + + & > *:nth-child(1) { + width: 16%; + justify-content: left; + } + & > *:nth-child(2) { + width: 68%; + justify-content: center; + } + & > *:nth-child(3) { + width: 16%; + justify-content: right; + } +} +`; + function ProgressStatus(props) { const location = useLocation(); @@ -16,6 +112,11 @@ function ProgressStatus(props) { const [paginationInfo, setPaginationInfo] = useState({}); const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { pageIndex: 1, searchCnd: '0', searchWrd: '' }); + useEffect(function () { + getList(searchCondition); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const requestOptions = { method: "GET", headers: { @@ -25,11 +126,11 @@ function ProgressStatus(props) { const getList = (searchCondition) => { - EgovNet.requestFetch(`/contents/api/popup-manage/list?page=${searchCondition.pageIndex-1}&size=10&sort=popupSeq,desc`, + EgovNet.requestFetch(`/admin/committee/progress-status/list?page=${searchCondition.pageIndex-1}&size=10&sort=popupSeq,desc`, requestOptions, function (resp) { console.log('%o', resp); - setListItem(resp.result.listPopup); + setListItem(resp.result.list); setPaginationInfo({...resp.result.paginationInfo}); } ); @@ -63,17 +164,22 @@ function ProgressStatus(props) {
{/* */} -
-

진행현황 관리

-
+ +
+

진행현황 관리

+
- {/* */} -
+ {/* */} +
- 번호 - 제목 - 기간 - 사용여부 + # + 구분 + 제목 / 코드명 + 진행위원회 + 진행단계 + 등록일 + 수정 + 삭제
{/* */} @@ -83,6 +189,13 @@ function ProgressStatus(props) { {listItem.map((it)=>(
{it.number}
+
{it.drftTypeNm}
+
{it.categoryNm}
{it.title}
+
{it.orgNm}
+
진행단계표시
+
{it.regDate}
+
+
))}
@@ -105,6 +218,7 @@ function ProgressStatus(props) {
{/* */} + {/* */}
diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/config/AboutSiteMgt.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/config/AboutSiteMgt.jsx index 0003462..3bf6bab 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/config/AboutSiteMgt.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/config/AboutSiteMgt.jsx @@ -50,13 +50,13 @@ function StandardCodeMgt(props) { mutListTag.push(
-
{item.siteSeq}
+
{item.siteTitle}
{item.siteUrl}
{item.fileGrpId}
{item.siteOrder}
{item.useYn}
-
+
); }); @@ -76,7 +76,7 @@ function StandardCodeMgt(props) { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - function editBoard(item){ + function editPartnerSite(item){ handleShow(); if(item != undefined) { item.mode = CODE.MODE_MODIFY; @@ -147,13 +147,13 @@ function StandardCodeMgt(props) { {/* */}
- 번호 + 사이트명 URL 배너이미지 정렬순서 사용여부 - +
{listTag} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java index 9215a7b..1a2ec86 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java @@ -4,6 +4,8 @@ import com.dbnt.kcscbackend.admin.boards.entity.TnBbs; import com.dbnt.kcscbackend.admin.boards.service.AdminBoardsService; import com.dbnt.kcscbackend.admin.config.entity.TcMenu; import com.dbnt.kcscbackend.auth.entity.LoginVO; +import com.dbnt.kcscbackend.commonCode.CommonCodeController; +import com.dbnt.kcscbackend.commonCode.service.CommonCodeService; import com.dbnt.kcscbackend.config.common.BaseController; import com.dbnt.kcscbackend.config.common.ResponseCode; import com.dbnt.kcscbackend.config.common.ResultVO; @@ -32,6 +34,7 @@ import java.util.Map; public class AdminBoardsController extends BaseController { private final AdminBoardsService adminBoardsService; + private final CommonCodeService commonCodeService; /* ---- 게시판관리 ----- */ @Operation( @@ -53,6 +56,26 @@ public class AdminBoardsController extends BaseController { return resultVO; } + @Operation( + summary = "게시판 셀렉트박스 옵션 조회", + description = "게시판 셀렉트박스 옵션 조회", + tags = {"AdminBoardsController"} + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "조회 성공"), + @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") + }) + @RequestMapping(method = RequestMethod.GET, value = "/get-option-list", consumes = MediaType.APPLICATION_JSON_VALUE) + public ResultVO getOptionList() throws Exception { + ResultVO resultVO = new ResultVO(); + Map resultMap = new HashMap<>(); + + resultMap.put("bbsTypeList", commonCodeService.selectCodeItemList("BBS_TYPE")); + resultMap.put("roleList", commonCodeService.selectCodeItemList("ROLE")); + resultVO.setResult(resultMap); + return resultVO; + } + @Operation( summary = "게시판 저장", description = "게시판 저장", @@ -126,7 +149,7 @@ public class AdminBoardsController extends BaseController { ResultVO resultVO = new ResultVO(); Map resultMap = new HashMap<>(); - resultMap.put("boardList", adminBoardsService.selectBoardList()); + resultMap.put("postList", adminBoardsService.selectPostList()); resultVO.setResult(resultMap); return resultVO; } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbs.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbs.java index f91277a..1226a05 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbs.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbs.java @@ -70,4 +70,10 @@ public class TnBbs { @Column(name = "oldd_seq") private Long olddSeq; + @Column(name = "read_role") + private Long readRole; + + @Column(name = "write_role") + private Long writeRole; + } \ No newline at end of file diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java index 5291413..874c5f0 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java @@ -8,7 +8,7 @@ import java.util.List; public interface TnBbsRepository extends JpaRepository { - @Query(value = "SELECT * FROM tn_bbs WHERE use_yn = 'Y' ORDER BY bbs_seq DESC", nativeQuery = true) + @Query(value = "SELECT * FROM tn_bbs ORDER BY bbs_seq DESC", nativeQuery = true) List findAllByOrderByBbsSeqDesc(); } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java index 48a4bca..796d21f 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java @@ -34,16 +34,18 @@ public class AdminBoardsService extends EgovAbstractServiceImpl { if (bbs.getBbsSeq() == null) { bbs.setFrstCrtDt(LocalDateTime.now()); bbs.setFrstCrtId(userId); - bbs.setBbsAnsYn("N"); - bbs.setBbsReplYn("N"); - bbs.setUseYn("Y"); tnBbsRepository.save(bbs); } else { TnBbs savedBoard = tnBbsRepository.findById(bbs.getBbsSeq()).orElse(null); savedBoard.setBbsId(bbs.getBbsId()); savedBoard.setBbsTitle(bbs.getBbsTitle()); savedBoard.setBbsDesc(bbs.getBbsDesc()); - //savedBoard.setUseYn("Y"); + savedBoard.setBbsType(bbs.getBbsType()); + savedBoard.setBbsAnsYn(bbs.getBbsAnsYn()); + savedBoard.setBbsReplYn(bbs.getBbsReplYn()); + savedBoard.setUseYn(bbs.getUseYn()); + savedBoard.setReadRole(bbs.getReadRole()); + savedBoard.setWriteRole(bbs.getWriteRole()); savedBoard.setLastChgId(userId); savedBoard.setLastChgDt(LocalDateTime.now()); tnBbsRepository.save(savedBoard); diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/AdminCommitteeController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/AdminCommitteeController.java new file mode 100644 index 0000000..c57b67a --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/AdminCommitteeController.java @@ -0,0 +1,92 @@ +package com.dbnt.kcscbackend.admin.committee; + +import com.dbnt.kcscbackend.admin.committee.service.AdminCommitteeProgressStatusService; +import com.dbnt.kcscbackend.admin.config.entity.TcMenu; +import com.dbnt.kcscbackend.admin.config.entity.TnPartnerSite; +import com.dbnt.kcscbackend.admin.config.model.CreateCommitteeCodeManagementVO; +import com.dbnt.kcscbackend.admin.config.model.SetCommitteeCodeManagementVO; +import com.dbnt.kcscbackend.admin.config.service.AdminCommitteeCodeManagementService; +import com.dbnt.kcscbackend.admin.config.service.AdminConfigService; +import com.dbnt.kcscbackend.auth.entity.LoginVO; +import com.dbnt.kcscbackend.commonCode.entity.TcCodeGrp; +import com.dbnt.kcscbackend.commonCode.entity.TcCodeItem; +import com.dbnt.kcscbackend.commonCode.service.CommonCodeService; +import com.dbnt.kcscbackend.config.common.BaseController; +import com.dbnt.kcscbackend.config.common.ResponseCode; +import com.dbnt.kcscbackend.config.common.ResultVO; +import io.swagger.annotations.ApiParam; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.http.MediaType; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.validation.Errors; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/admin/committee") +@Tag(name="AdminCommitteeController", description = "사이트관리 위원회관리 메뉴 컨트롤러") +public class AdminCommitteeController extends BaseController { + + private final AdminConfigService adminConfigService; + private final CommonCodeService commonCodeService; + + @Resource(name = "adminCommitteeProgressStatusService") + private AdminCommitteeProgressStatusService adminCommitteeProgressStatusService; + + + @Operation( + summary = "'진행현황 관리' 페이지에서 목록 불러오는 API", + description = "관리자 단에서 '위원회관리' > '진행현황 관리' 페이지에서 목록 불러오는 API", + tags = {"AdminCommitteeController"} + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "조 회 성공"), + @ApiResponse(responseCode = "303", description = "만료된 토큰"), + @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") + }) + @GetMapping(value = "/progress-status/list") + public ResultVO getCommitteeProgressStatus( + @AuthenticationPrincipal LoginVO user, + HttpServletRequest request, + Pageable pageable + ) throws Exception { + + ResultVO resultVO = new ResultVO(); + if(user == null) { + resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); + } else { + try { + resultVO = adminCommitteeProgressStatusService.getCommitteeProgressStatus(resultVO, request, user, pageable); + } catch (Exception e) { + resultVO.setResultCode(ResponseCode.FAILED.getCode()); + resultVO.setResultMessage(e.getMessage()); + } + } + + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " OUT:" + + "\n--------------------------------------------------------------\n" + + "resultVO.toString():" + "\n" + + resultVO.toString() + "\n" + + "\n--------------------------------------------------------------\n" + ); + + return resultVO; + } + + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraft.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraft.java new file mode 100644 index 0000000..981b507 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraft.java @@ -0,0 +1,93 @@ +package com.dbnt.kcscbackend.admin.committee.entity; + +import lombok.*; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "tn_cmt_draft") +public class TnCmtDraft { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "drft_seq") + private Long drftSeq; + + @Column(name = "drft_title") + private String drftTitle; + + @Column(name = "doc_info_seq") + private Long docInfoSeq; + + @Column(name = "drft_type_cd") + private String drftTypeCd; + + @Column(name = "drft_dt") + private String drftDt; + + @Column(name = "cmt_seq") + private Long cmtSeq; + + @Column(name = "measure_pre_data_file_grp_id") + private String measurePreDataFileGrpId; + + @Column(name = "measure_pre_form_file_grp_id") + private String measurePreFormFileGrpId; + + @Column(name = "measure_partner_file_grp_id") + private String measurePartnerFileGrpId; + + @Column(name = "drft_confe_charger") + private String drftConfeCharger; + + @Column(name = "drft_confe_pw") + private String drftConfePw; + + @Column(name = "drft_confe_room") + private String drftConfeRoom; + + @Column(name = "drft_stat_cd") + private String drftStatCd; + + @Column(name = "drft_summery") + private String drftSummery; + + @Column(name = "measure_plan_file_grp_id") + private String measurePlanFileGrpId; + + @Column(name = "measure_result_file_grp_id") + private String measureResultFileGrpId; + + @Column(name = "start_dt") + private String startDt; + + @Column(name = "end_dt") + private String endDt; + + @Column(name = "frst_crt_id") + private String frstCrtId; + + @Column(name = "frst_crt_dt") + private String frstCrtDt; + + @Column(name = "last_chg_id") + private String lastChgId; + + @Column(name = "last_chg_dt") + private String lastChgDt; + + @Column(name = "use_yn") + private String useYn; + + @Column(name = "old_seq") + private Long oldSeq; + + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraftAttend.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraftAttend.java new file mode 100644 index 0000000..e34f4ef --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraftAttend.java @@ -0,0 +1,46 @@ +package com.dbnt.kcscbackend.admin.committee.entity; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "tn_cmt_draft_attend") +public class TnCmtDraftAttend { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "drft_atd_seq") + private Long drftAtdSeq; + + @Column(name = "drft_seq") + private Long drftSeq; + + @Column(name = "drft_final_type") + private String drftFinalType; + + @Column(name = "drft_final_comment") + private String drftFinalComment; + + @Column(name = "user_id") + private String userId; + + @Column(name = "nick_name") + private String nickName; + + @Column(name = "write_dt") + private String writeDt; + + @Column(name = "drft_file_grp_id") + private String drftFileGrpId; + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraftDetail.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraftDetail.java new file mode 100644 index 0000000..b3865c6 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/entity/TnCmtDraftDetail.java @@ -0,0 +1,46 @@ +package com.dbnt.kcscbackend.admin.committee.entity; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "tn_cmt_draft_detail") +public class TnCmtDraftDetail { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "drft_dt_seq") + private Long drftDtSeq; + + @Column(name = "drft_seq") + private Long drftSeq; + + @Column(name = "drft_dt_type") + private String drftDtType; + + @Column(name = "drft_dt_value") + private String drftDtValue; + + @Column(name = "user_id") + private String userId; + + @Column(name = "nick_name") + private String nickName; + + @Column(name = "write_dt") + private String writeDt; + + @Column(name = "drft_file_grp_id") + private String drftFileGrpId; + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/service/AdminCommitteeProgressStatusService.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/service/AdminCommitteeProgressStatusService.java new file mode 100644 index 0000000..be7a069 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/service/AdminCommitteeProgressStatusService.java @@ -0,0 +1,18 @@ +package com.dbnt.kcscbackend.admin.committee.service; + +import com.dbnt.kcscbackend.admin.config.model.CreateCommitteeCodeManagementVO; +import com.dbnt.kcscbackend.admin.config.model.SetCommitteeCodeManagementVO; +import com.dbnt.kcscbackend.auth.entity.LoginVO; +import com.dbnt.kcscbackend.config.common.ResultVO; +import org.springframework.data.domain.Pageable; + +import javax.servlet.http.HttpServletRequest; + +public interface AdminCommitteeProgressStatusService { + public ResultVO createCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, CreateCommitteeCodeManagementVO createCommitteeCodeManagementVO) throws Exception; + public ResultVO getCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, Pageable pageable) throws Exception; + public ResultVO setCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, SetCommitteeCodeManagementVO setCommitteeCodeManagementVO, Long cmtSeq) throws Exception; + public ResultVO deleteCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, Long cmtSeq) throws Exception; + + +} \ No newline at end of file diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/service/impl/AdminCommitteeProgressStatusServiceImpl.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/service/impl/AdminCommitteeProgressStatusServiceImpl.java new file mode 100644 index 0000000..d90dce0 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/committee/service/impl/AdminCommitteeProgressStatusServiceImpl.java @@ -0,0 +1,224 @@ +package com.dbnt.kcscbackend.admin.committee.service.impl; + +import com.dbnt.kcscbackend.admin.committee.entity.TnCmtDraft; +import com.dbnt.kcscbackend.admin.committee.entity.TnCmtDraftAttend; +import com.dbnt.kcscbackend.admin.committee.service.AdminCommitteeProgressStatusService; +import com.dbnt.kcscbackend.admin.config.model.CreateCommitteeCodeManagementVO; +import com.dbnt.kcscbackend.admin.config.model.SetCommitteeCodeManagementVO; +import com.dbnt.kcscbackend.admin.contents.popUp.model.FileVO; +import com.dbnt.kcscbackend.auth.entity.LoginVO; +import com.dbnt.kcscbackend.commonCode.repository.TnCmtDraftAttendRepository; +import com.dbnt.kcscbackend.commonCode.repository.TnCmtDraftDetailRepository; +import com.dbnt.kcscbackend.commonCode.repository.TnCmtDraftRepository; +import com.dbnt.kcscbackend.config.common.ResponseCode; +import com.dbnt.kcscbackend.config.common.ResultVO; +import lombok.RequiredArgsConstructor; +import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; +import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +@Service("adminCommitteeProgressStatusService") +@RequiredArgsConstructor +public class AdminCommitteeProgressStatusServiceImpl extends EgovAbstractServiceImpl implements AdminCommitteeProgressStatusService { + + private final TnCmtDraftRepository tnCmtDraftRepository; + private final TnCmtDraftAttendRepository tnCmtDraftAttendRepository; + private final TnCmtDraftDetailRepository tnCmtDraftDetailRepository; + + @Override + public ResultVO createCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, CreateCommitteeCodeManagementVO createCommitteeCodeManagementVO) throws Exception { + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " IN:" + + "\n--------------------------------------------------------------\n" + + "user.getEmail():" + "\n" + + user.getEmail() + "\n" + + "\n--------------------------------------------------------------\n" + ); + + // 아래 null로 전달 되는 부분 확인하기. + // 유효성 검사 실시 + if(createCommitteeCodeManagementVO.getParamCodeLevel().trim().isEmpty()) { + throw new Exception("오류가 발생했습니다. 시스템 담당자에게 문의 바랍니다. paramCodeLevel is empty."); + } + + Map response = tnCmtDraftRepository.spAddTnCmtDraft( + createCommitteeCodeManagementVO.getParamOrgNm(), // 위원회 이름 + null, // 위원회 등급 + createCommitteeCodeManagementVO.getParamOrgDesc(), // 위원회 설명 + null, // 상위 위원회 sequence + null, // 정렬 순서 + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + user.getId(), + null, + null, + null, + null + ); + + Map dto = new HashMap(); + dto.put("id", response.get("_cmt_seq") ); + + resultVO.setResult(dto); + resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); + resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage()); + + return resultVO; + } + + @Override + public ResultVO getCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, Pageable pageable) throws Exception { + + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " IN:" + + "\n--------------------------------------------------------------\n" + + "user.getEmail():" + "\n" + + user.getEmail() + "\n" + + "pageable.getPageSize():" + "\n" + + pageable.getPageSize() + "\n" + + "pageable.getPageNumber():" + "\n" + + pageable.getPageNumber() + "\n" + + "\n--------------------------------------------------------------\n" + ); + + + List> list = new ArrayList<>(); + long totalRecordCount = tnCmtDraftRepository.findByUseYnOrderByDrftSeqDesc("Y").size(); + List> itemList = tnCmtDraftRepository.getCommitteeProgressStatus(pageable.getPageSize(),pageable.getPageNumber()); + AtomicInteger index = new AtomicInteger(); + for (Map item : itemList) { + + Map item2 = new HashMap<>(); + for (String key : item.keySet()) { + item2.put(key, item.get(key)); + } + item2.put("number", totalRecordCount - (long) pageable.getPageNumber() * pageable.getPageSize() - index.getAndIncrement()); + list.add(item2); + } + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(pageable.getPageNumber()+1); + paginationInfo.setRecordCountPerPage(pageable.getPageSize()); + paginationInfo.setPageSize(5);//hard coded + paginationInfo.setTotalRecordCount((int) totalRecordCount); + + Map dto = new HashMap(); + + dto.put("list", list); + dto.put("paginationInfo", paginationInfo); + resultVO.setResult(dto); + resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); + resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage()); + + return resultVO; + } + + @Override + public ResultVO setCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, SetCommitteeCodeManagementVO setCommitteeCodeManagementVO, Long cmtSeq) throws Exception { + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " IN:" + + "\n--------------------------------------------------------------\n" + + "setCommitteeCodeManagementVO:" + "\n" + + setCommitteeCodeManagementVO.toString() + "\n" + + "cmtSeq:" + "\n" + + cmtSeq + "\n" + + "\n--------------------------------------------------------------\n" + ); + + // 유효성 검사 실시 + int isValid = tnCmtDraftRepository.spIsValidTnCmtDraftId(cmtSeq.intValue()); + + if( isValid == 0 ) { + throw new Exception("대상이 존재하지 않습니다."); + } + + //TnCmtDraft tnCmtDraft = tnCmtDraftRepository.findByDrftSeq(cmtSeq); + + Map response = tnCmtDraftRepository.spUpdateTnCmtDraft( + cmtSeq.intValue(), + setCommitteeCodeManagementVO.getParamOrgNm(), + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + user.getId(), + null, + null, + null + ); + + + Map dto = new HashMap(); + dto.put("errorMessage", response.get("_error_message") ); + dto.put("orgId", cmtSeq); + + resultVO.setResult(dto); + resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); + resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage()); + + return resultVO; + } + + @Override + public ResultVO deleteCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, Long cmtSeq) throws Exception { + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " IN:" + + "\n--------------------------------------------------------------\n" + + "cmtSeq:" + "\n" + + cmtSeq + "\n" + + "\n--------------------------------------------------------------\n" + ); + + + Map response = tnCmtDraftRepository.spDeleteTnCmtDraft( + cmtSeq.intValue(), + user.getId(), + null, + null, + null + ); + + + Map dto = new HashMap(); + dto.put("errorMessage", response.get("_error_message") ); + dto.put("orgId", cmtSeq ); + + resultVO.setResult(dto); + resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); + resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage()); + + return resultVO; + } + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftAttendRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftAttendRepository.java new file mode 100644 index 0000000..c16f630 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftAttendRepository.java @@ -0,0 +1,101 @@ +package com.dbnt.kcscbackend.commonCode.repository; + +import com.dbnt.kcscbackend.admin.committee.entity.TnCmtDraftAttend; +import com.dbnt.kcscbackend.commonCode.entity.TnPopupMng; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.jpa.repository.query.Procedure; +import org.springframework.data.repository.query.Param; + +import java.util.Map; + +/** 작성 중 ...*/ +public interface TnCmtDraftAttendRepository extends JpaRepository { + + @Query(value = "CALL sp_add_tn_popup_mng (" + + ":_popup_title, " + + "TO_TIMESTAMP(" + + " :_popup_start_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + "TO_TIMESTAMP(" + + " :_popup_end_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + ":_file_grp_id, " + + ":_popup_contents, " + + ":_modi_id, " + + ":_popup_seq, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spAddTnPopupMng( + @Param("_popup_title") String popupTitle, + @Param("_popup_start_date") String popupStartDate, + @Param("_popup_end_date") String popupEndDate, + @Param("_file_grp_id") String fileGrpId, + @Param("_popup_contents") String popupContents, + @Param("_modi_id") String modiId, + @Param("_popup_seq") Integer popupSeq, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Query(value = "CALL sp_update_tn_popup_mng (" + + ":_popup_seq, " + + ":_popup_title, " + + "TO_TIMESTAMP(" + + " :_popup_start_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + "TO_TIMESTAMP(" + + " :_popup_end_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + ":_file_grp_id, " + + ":_popup_contents, " + + ":_modi_id, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spUpdateTnPopupMng( + @Param("_popup_seq") Integer popupSeq, + @Param("_popup_title") String popupTitle, + @Param("_popup_start_date") String popupStartDate, + @Param("_popup_end_date") String popupEndDate, + @Param("_file_grp_id") String fileGrpId, + @Param("_popup_contents") String popupContents, + @Param("_modi_id") String modiId, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Query(value = "CALL sp_delete_tn_popup_mng (" + + ":_popup_seq, " + + ":_modi_id, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spDeleteTnPopupMng( + @Param("_popup_seq") Integer popupSeq, + @Param("_modi_id") String modiId, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Procedure("sp_is_valid_tn_popup_mng_id") + int spIsValidTnPopupMngId( Integer popupSeq ); + + TnCmtDraftAttend findByDrftAtdSeq(Long drftAtdSeq); + + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftDetailRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftDetailRepository.java new file mode 100644 index 0000000..d57f4fc --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftDetailRepository.java @@ -0,0 +1,101 @@ +package com.dbnt.kcscbackend.commonCode.repository; + +import com.dbnt.kcscbackend.admin.committee.entity.TnCmtDraftDetail; +import com.dbnt.kcscbackend.commonCode.entity.TnPopupMng; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.jpa.repository.query.Procedure; +import org.springframework.data.repository.query.Param; + +import java.util.Map; + +/** 작성 중 ...*/ +public interface TnCmtDraftDetailRepository extends JpaRepository { + + @Query(value = "CALL sp_add_tn_popup_mng (" + + ":_popup_title, " + + "TO_TIMESTAMP(" + + " :_popup_start_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + "TO_TIMESTAMP(" + + " :_popup_end_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + ":_file_grp_id, " + + ":_popup_contents, " + + ":_modi_id, " + + ":_popup_seq, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spAddTnPopupMng( + @Param("_popup_title") String popupTitle, + @Param("_popup_start_date") String popupStartDate, + @Param("_popup_end_date") String popupEndDate, + @Param("_file_grp_id") String fileGrpId, + @Param("_popup_contents") String popupContents, + @Param("_modi_id") String modiId, + @Param("_popup_seq") Integer popupSeq, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Query(value = "CALL sp_update_tn_popup_mng (" + + ":_popup_seq, " + + ":_popup_title, " + + "TO_TIMESTAMP(" + + " :_popup_start_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + "TO_TIMESTAMP(" + + " :_popup_end_date," + + " 'YYYYMMDDHH24MISS'" + + ")::::timestamptz AT TIME ZONE 'UTC', " + + ":_file_grp_id, " + + ":_popup_contents, " + + ":_modi_id, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spUpdateTnPopupMng( + @Param("_popup_seq") Integer popupSeq, + @Param("_popup_title") String popupTitle, + @Param("_popup_start_date") String popupStartDate, + @Param("_popup_end_date") String popupEndDate, + @Param("_file_grp_id") String fileGrpId, + @Param("_popup_contents") String popupContents, + @Param("_modi_id") String modiId, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Query(value = "CALL sp_delete_tn_popup_mng (" + + ":_popup_seq, " + + ":_modi_id, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spDeleteTnPopupMng( + @Param("_popup_seq") Integer popupSeq, + @Param("_modi_id") String modiId, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Procedure("sp_is_valid_tn_popup_mng_id") + int spIsValidTnPopupMngId( Integer popupSeq ); + + TnCmtDraftDetail findByDrftDtSeq(Long drftDtSeq); + + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftRepository.java new file mode 100644 index 0000000..43e5a38 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/commonCode/repository/TnCmtDraftRepository.java @@ -0,0 +1,212 @@ +package com.dbnt.kcscbackend.commonCode.repository; + +import com.dbnt.kcscbackend.admin.committee.entity.TnCmtDraft; +import com.dbnt.kcscbackend.commonCode.entity.TnPopupMng; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.jpa.repository.query.Procedure; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Map; + + +public interface TnCmtDraftRepository extends JpaRepository { + + @Query(value = "CALL sp_add_tn_cmt_draft (" + + ":_drft_title, " + + ":_drft_type_cd, " + + ":_drft_dt, " + + ":_cmt_seq, " + + ":_measure_pre_data_file_grp_id, " + + ":_measure_pre_form_file_grp_id, " + + ":_measure_partner_file_grp_id, " + + ":_drft_confe_charger, " + + ":_drft_confe_pw, " + + ":_drft_confe_room, " + + ":_drft_stat_cd, " + + ":_drft_summery, " + + ":_measure_plan_file_grp_id, " + + ":_measure_result_file_grp_id, " + + ":_start_dt, " + + ":_end_dt, " + + ":_modi_id, " + + ":_drft_seq, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spAddTnCmtDraft( + @Param("_drft_title") String drftTitle, + @Param("_drft_type_cd") Integer drftTypeCd, + @Param("_drft_dt") String drftDt, + @Param("_cmt_seq") Integer cmtSeq, + @Param("_measure_pre_data_file_grp_id") String measurePreDataFileGrpId, + @Param("_measure_pre_form_file_grp_id") String measurePreFormFileGrpId, + @Param("_measure_partner_file_grp_id") String measurePartnerFileGrpId, + @Param("_drft_confe_charger") String drftConfeCharger, + @Param("_drft_confe_pw") String drftConfePw, + @Param("_drft_confe_room") String drftConfeRoom, + @Param("_drft_stat_cd") String drftStatCd, + @Param("_drft_summery") String drftSummery, + @Param("_measure_plan_file_grp_id") String measurePlanFileGrpId, + @Param("_measure_result_file_grp_id") String measureResultFileGrpId, + @Param("_start_dt") String startDt, + @Param("_end_dt") String endDt, + @Param("_modi_id") String modiId, + @Param("_drft_seq") Integer drftSeq, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Query(value = "CALL sp_update_tn_cmt_draft (" + + ":_drft_seq, " + + ":_drft_title, " + + ":_doc_info_seq, " + + ":_drft_type_cd, " + + ":_drft_dt, " + + ":_cmt_seq, " + + ":_measure_pre_data_file_grp_id, " + + ":_measure_pre_form_file_grp_id, " + + ":_measure_partner_file_grp_id, " + + ":_drft_confe_charger, " + + ":_drft_confe_pw, " + + ":_drft_confe_room, " + + ":_drft_stat_cd, " + + ":_drft_summery, " + + ":_measure_plan_file_grp_id, " + + ":_measure_result_file_grp_id, " + + ":_start_dt, " + + ":_end_dt, " + + ":_modi_id, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spUpdateTnCmtDraft( + @Param("_drft_seq") Integer drftSeq, + @Param("_drft_title") String drftTitle, + @Param("_doc_info_seq") Integer docInfoSeq, + @Param("_drft_type_cd") String drftTypeCd, + @Param("_drft_dt") String drftDt, + @Param("_cmt_seq") Integer cmtSeq, + @Param("_measure_pre_data_file_grp_id") String measurePreDataFileGrpId, + @Param("_measure_pre_form_file_grp_id") String measurePreFormFileGrpId, + @Param("_measure_partner_file_grp_id") String measurePartnerFileGrpId, + @Param("_drft_confe_charger") String drftConfeCharger, + @Param("_drft_confe_pw") String drftConfePw, + @Param("_drft_confe_room") String drftConfeRoom, + @Param("_drft_stat_cd") String drftStatCd, + @Param("_drft_summery") String drftSummery, + @Param("_measure_plan_file_grp_id") String measurePlanFileGrpId, + @Param("_measure_result_file_grp_id") String measureResultFileGrpId, + @Param("_start_dt") String startDt, + @Param("_end_dt") String endDt, + @Param("_modi_id") String modiId, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Query(value = "CALL sp_delete_tn_cmt_draft (" + + ":_drft_seq, " + + ":_modi_id, " + + ":_result_count, " + + ":_result_code, " + + ":_error_message)", + nativeQuery = true) + Map spDeleteTnCmtDraft( + @Param("_drft_seq") Integer drftSeq, + @Param("_modi_id") String modiId, + @Param("_result_count") Integer resultCount, + @Param("_result_code") String resultCode, + @Param("_error_message") String errorMessage + ); + + + @Procedure("sp_is_valid_tn_cmt_draft_id") + int spIsValidTnCmtDraftId( Integer drftSeq ); + + TnCmtDraft findByDrftSeq(Long drftSeq); + List findByUseYnOrderByDrftSeqDesc(String useYn); + + + @Query(value = + "select " + + " tcd.drft_seq as \"seq\", " + + " tcd.doc_info_seq as \"categoryId\", " + + " tcd.drft_dt as \"drftDatetime\", " + + " tcd.drft_title as \"title\", " + + " null as \"drftCharger\", " + + " null as \"drftChargerEmail\", " + + " null as \"drftChargerPhone\", " + + " null as \"drftStatCode\", " + + " tcd.drft_type_cd as \"drftTypeCode\", " + + " tcd.cmt_seq as \"orgId\", " + + " null as \"startDatetime\", " + + " null as \"endDatetime\", " + + " null as \"closeDatetime\", " + + " tcd.frst_crt_dt as \"createDate\", " + + " tcd.last_chg_dt as \"updateDate\", " + + " null as \"createUserId\", " + + " null as \"updateUserId\", " + + " case when UPPER(tcd.use_yn) = 'Y' then 'N' else 'Y' end as \"delYn\", " + + " tcd.drft_summery as \"drftSummery\", " + + " tcd.drft_confe_charger as \"drftConfeCharger\", " + + " tcd.drft_confe_pw as \"drftConfePw\", " + + " tcd.drft_confe_room as \"drftConfeRoom\", " + + " null as \"drftMeasurePlanFileSeq\", " + + " null as \"drftMeasureResultFileSeq\", " + + " null as \"drftMeasurePlanFileName\", " + + " null as \"drftMeasureResultFileName\", " + + " null as \"drftMeasurePreDataFileName\", " + + " null as \"drftMeasurePreDataFileSeq\", " + + " null as \"drftMeasurePreFormFileName\", " + + " null as \"drftMeasurePreFormFileSeq\", " + + " null as \"drftMeasurePartnerFileName\", " + + " null as \"drftMeasurePartnerFileSeq\", " + + " null as \"drftProcess\", " + + " ( " + + " select tci.item_nm " + + " from tc_code_item tci " + + " where tci.item_cd = tcd.drft_type_cd " + + " limit 1 offset 0 " + + " ) as \"drftTypeNm\", " + + " concat(tdi.kcsc_cd, ' ', tdi.doc_nm) as \"categoryNm\", " + + " tco.cmt_nm as \"orgNm\", " + + " ( " + + " select tci.item_nm " + + " from tc_code_item tci " + + " where tci.item_cd = tcd.drft_stat_cd " + + " limit 1 offset 0 " + + " ) as \"drftStatNm\", " + + " null as \"categoryInfo\", " + + " null as \"orgType\", " + + " null as \"upOrgId\", " + + " null as \"orgList\", " + + " null as \"orgList1\", " + + " null as \"orgList2\", " + + " null as \"orgList3\", " + + " null as \"depthOrgId\", " + + " null as \"depthOrgId1\", " + + " null as \"depthOrgId2\", " + + " null as \"depthOrgId3\", " + + " to_char(tcd.frst_crt_dt, 'yyyy-mm-dd') as \"regDate\" " + + "from tn_cmt_draft tcd " + + "left join tn_document_info tdi on tcd.doc_info_seq = tdi.doc_info_seq " + + "left join tn_document_group tdg on tdi.group_seq = tdg.group_seq " + + "left join tn_cmt_org tco on tcd.cmt_seq = tco.cmt_seq " + + "where tcd.use_yn = 'Y' " + + "order by tcd.drft_seq desc " + + "limit :limit offset :limit * :offset", + nativeQuery = true) + List> getCommitteeProgressStatus( + @Param("limit") Integer limit, + @Param("offset") Integer offset + ); + + +}