강석 최 2024-01-23 17:22:04 +09:00
commit f67c3ee502
6 changed files with 233 additions and 94 deletions

View File

@ -64,7 +64,10 @@ function SchedulesEdit(props) {
//${location.state?.schdulId
const getDateFourteenDigit = (date) => {
return `${getYYYY_MM_DD(date).toString()} ${makeTwoDigit(date.getHours())}:${makeTwoDigit(date.getMinutes())}:${makeTwoDigit(date.getSeconds())}`;
return `${getYYYYMMDD(date).toString()}${makeTwoDigit(date.getHours())}${makeTwoDigit(date.getMinutes())}${makeTwoDigit(date.getSeconds())}`;
}
const getYYYYMMDD = (date) => {
return date.getFullYear().toString() + makeTwoDigit(Number(date.getMonth() + 1)) + makeTwoDigit(date.getDate());
}
const getYYYY_MM_DD = (date) => {
return `${date.getFullYear().toString()}-${makeTwoDigit(Number(date.getMonth() + 1))}-${makeTwoDigit(date.getDate())}`;
@ -249,14 +252,11 @@ function SchedulesEdit(props) {
if (formData.get('contents') === null ||formData.get('contents') === "") {
alert("내용을 입력해 주세요.");
return false;
}
/*
if (formData.get('contents') > formData.get('schdulEndde')) {
}
if (formData.get('schdulBgnde') > formData.get('schdulEndde')) {
alert("종료일시는 시작일시보다 앞 설 수 없습니다.");
return false;
//return false;
}
*/
return true;
}
@ -285,6 +285,31 @@ function SchedulesEdit(props) {
}, [scheduleDetail && scheduleDetail.upCommittee]);
const onClickDeleteSchedule = (schdulId) => {
const deleteBoardURL = `/schedule/${schdulId}`;
const requestOptions = {
method: "DELETE",
headers: {
'Content-type': 'application/json',
}
}
EgovNet.requestFetch(deleteBoardURL,
requestOptions,
(resp) => {
console.log("====>>> Schdule delete= ", resp);
if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) {
alert("게시글이 삭제되었습니다.")
navigate(URL.ADMIN__COMMITTEE__SCHEDULES ,{ replace: true });
} else {
navigate({pathname: URL.ERROR}, {state: {msg : resp.resultMessage}});
}
}
);
}
console.log("------------------------------EgovAdminScheduleEdit [End]");
console.groupEnd("EgovAdminScheduleEdit");
return (
@ -389,7 +414,7 @@ function SchedulesEdit(props) {
showTimeInput
onChange={(date) => {
console.log("setStartDate : ", date);
setScheduleDetail({ ...scheduleDetail, startDate: date });
setScheduleDetail({ ...scheduleDetail, schdulBgnde: getDateFourteenDigit(date), schdulBgndeYYYMMDD: getYYYYMMDD(date), schdulBgndeHH: date.getHours(), schdulBgndeMM: date.getMinutes(), startDate: date });
setSchdulBgndeHH(date.getHours());
setSchdulBgndeMM(date.getMinutes());
}} />
@ -407,7 +432,7 @@ function SchedulesEdit(props) {
minDate={scheduleDetail.startDate}
onChange={(date) => {
console.log("setEndDate: ", date);
setScheduleDetail({ ...scheduleDetail, endDate: date });
setScheduleDetail({ ...scheduleDetail, schdulEndde: getDateFourteenDigit(date), schdulEnddeYYYMMDD: getYYYYMMDD(date), schdulEnddeHH: date.getHours(), schdulEnddeMM: date.getMinutes(), endDate: date });
setSchdulEnddeHH(date.getHours());
setSchdulEnddeMM(date.getMinutes());
}
@ -433,7 +458,13 @@ function SchedulesEdit(props) {
<button className="btn btn_skyblue_h46 w_100"
onClick={() => updateSchedule()}
> 저장</button>
<a href="#!" className="btn btn_skyblue_h46 w_100">삭제</a>
{modeInfo.mode === CODE.MODE_MODIFY &&
<button className="btn btn_skyblue_h46 w_100"
onClick={(e) => {
onClickDeleteSchedule(location.state?.schdulId);
}}>삭제</button>
}
</div>
<div className="right_col btn1">

View File

@ -129,81 +129,81 @@ function EgovMain(props) {
</Row>
</div>
<div className="right_col">
<div className="mini_board">
<ul className="tab">
<li><a href="#공지사항" className="on">공지사항</a></li>
<li><a href="#갤러리">갤러리</a></li>
</ul>
<div className="list">
<div className="notice">
<h2 className="blind">공지사항</h2>
<ul>
{noticeListTag}
</ul>
<Link to={URL.INFORM_NOTICE} className="more">더보기</Link>
</div>
{/*<div className="right_col">*/}
{/* <div className="mini_board">*/}
{/* <ul className="tab">*/}
{/* <li><a href="#공지사항" className="on">공지사항</a></li>*/}
{/* <li><a href="#갤러리">갤러리</a></li>*/}
{/* </ul>*/}
{/* <div className="list">*/}
{/* <div className="notice">*/}
{/* <h2 className="blind">공지사항</h2>*/}
{/* <ul>*/}
{/* {noticeListTag}*/}
{/* </ul>*/}
{/* <Link to={URL.INFORM_NOTICE} className="more">더보기</Link>*/}
{/* </div>*/}
<div className="gallary">
<h2 className="blind">갤러리</h2>
<ul>
{gallaryListTag}
</ul>
<Link to={URL.INFORM_GALLERY} className="more">더보기</Link>
</div>
</div>
</div>
{/* <div className="gallary">*/}
{/* <h2 className="blind">갤러리</h2>*/}
{/* <ul>*/}
{/* {gallaryListTag}*/}
{/* </ul>*/}
{/* <Link to={URL.INFORM_GALLERY} className="more">더보기</Link>*/}
{/* </div>*/}
{/* </div>*/}
{/* </div>*/}
<div className="banner">
<Link to={URL.SUPPORT_DOWNLOAD} className="bn1">
<strong>자료실</strong>
<span>다양한 자료를<br />다운로드 받으실 있습니다.</span>
</Link>
<Link to={URL.ABOUT} className="bn2">
<strong>국가건설기준센터</strong>
<span>국가건설기준센터의<br />약도 등의 정보를 제공합니다.</span>
</Link>
</div>
</div>
{/* <div className="banner">*/}
{/* <Link to={URL.SUPPORT_DOWNLOAD} className="bn1">*/}
{/* <strong>자료실</strong>*/}
{/* <span>다양한 자료를<br />다운로드 받으실 수 있습니다.</span>*/}
{/* </Link>*/}
{/* <Link to={URL.ABOUT} className="bn2">*/}
{/* <strong>국가건설기준센터</strong>*/}
{/* <span>국가건설기준센터의<br />약도 등의 정보를 제공합니다.</span>*/}
{/* </Link>*/}
{/* </div>*/}
{/*</div>*/}
</div>
<div className="banner_bot">
<div className="b1">
<div>
<h2>주요사업 소개</h2>
<p>국가건설기준센터가 제공하는<br />
주요 사업을 소개합니다.</p>
</div>
<Link to={URL.INTRO_WORKS}>자세히 보기</Link>
</div>
<div className="b2">
<div>
<h2>대표서비스 소개</h2>
<p>국가건설기준센터 실행환경의<br />
서비스 그룹에서 제공하는<br />
대표서비스입니다.</p>
</div>
<Link to={URL.INTRO_SERVICE}>자세히 보기</Link>
</div>
<div className="b3">
<div>
<h2>서비스 신청</h2>
<p>국가건설기준센터 경량환경<br />
홈페이지의 다양한 서비스를<br />
신청 하실 있습니다.</p>
</div>
<Link to={URL.SUPPORT_APPLY}>자세히 보기</Link>
</div>
<div className="b4">
<div>
<h2>일정 현황</h2>
<p>국가건설기준센터 경량환경<br />
홈페이지의 전체적인 일정<br />
현황을 조회하실 있습니다.</p>
</div>
<Link to={URL.INFORM}>자세히 보기</Link>
</div>
</div>
{/*<div className="banner_bot">*/}
{/* <div className="b1">*/}
{/* <div>*/}
{/* <h2>주요사업 소개</h2>*/}
{/* <p>국가건설기준센터가 제공하는<br />*/}
{/* 주요 사업을 소개합니다.</p>*/}
{/* </div>*/}
{/* <Link to={URL.INTRO_WORKS}>자세히 보기</Link>*/}
{/* </div>*/}
{/* <div className="b2">*/}
{/* <div>*/}
{/* <h2>대표서비스 소개</h2>*/}
{/* <p>국가건설기준센터 실행환경의<br />*/}
{/* 서비스 그룹에서 제공하는<br />*/}
{/* 대표서비스입니다.</p>*/}
{/* </div>*/}
{/* <Link to={URL.INTRO_SERVICE}>자세히 보기</Link>*/}
{/* </div>*/}
{/* <div className="b3">*/}
{/* <div>*/}
{/* <h2>서비스 신청</h2>*/}
{/* <p>국가건설기준센터 경량환경<br />*/}
{/* 홈페이지의 다양한 서비스를<br />*/}
{/* 신청 하실 수 있습니다.</p>*/}
{/* </div>*/}
{/* <Link to={URL.SUPPORT_APPLY}>자세히 보기</Link>*/}
{/* </div>*/}
{/* <div className="b4">*/}
{/* <div>*/}
{/* <h2>일정 현황</h2>*/}
{/* <p>국가건설기준센터 경량환경<br />*/}
{/* 홈페이지의 전체적인 일정<br />*/}
{/* 현황을 조회하실 수 있습니다.</p>*/}
{/* </div>*/}
{/* <Link to={URL.INFORM}>자세히 보기</Link>*/}
{/* </div>*/}
{/*</div>*/}
</div>
</div>

View File

@ -79,7 +79,7 @@ public class SchedulesApiController {
try {
resultVO = egovIndvdlSchdulManageService.createSchedule(resultVO, request, createScheduleVO);
} catch (Exception e) {
resultVO.setResultCode(-1);
resultVO.setResultCode(ResponseCode.FAILED.getCode());
resultVO.setResultMessage(e.getMessage());
}
@ -119,7 +119,47 @@ public class SchedulesApiController {
try {
resultVO = egovIndvdlSchdulManageService.updateSchedule(resultVO, request, updateScheduleVO);
} catch (Exception e) {
resultVO.setResultCode(-1);
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;
}
@Operation(
summary = "'위원회 일정 등록' 페이지에서 일정 삭제하는 API",
description = "관리자 단에서 '위원회 관리' > '위원회 일정 관리'에서 특정 일정을 삭제하는 API",
tags = {"SchedulesApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "등록 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@DeleteMapping(value = "/schedule/{scheduleId}")
public ResultVO deleteSchedule
(
@AuthenticationPrincipal LoginVO user,
HttpServletRequest request,
@PathVariable("scheduleId") String schdulId
) throws Exception {
ResultVO resultVO = new ResultVO();
Long test = Long.valueOf(schdulId);
try {
resultVO = egovIndvdlSchdulManageService.deleteSchedule(resultVO, request, test);
} catch (Exception e) {
resultVO.setResultCode(ResponseCode.FAILED.getCode());
resultVO.setResultMessage(e.getMessage());
}
@ -158,7 +198,7 @@ public class SchedulesApiController {
try {
resultVO = egovIndvdlSchdulManageService.scheduleDetail(resultVO, request, user, scheduleId);
} catch (Exception e) {
resultVO.setResultCode(-1);
resultVO.setResultCode(ResponseCode.FAILED.getCode());
resultVO.setResultMessage(e.getMessage());
}
@ -204,7 +244,7 @@ public class SchedulesApiController {
try {
resultVO = egovIndvdlSchdulManageService.scheduleMonth(resultVO, request, user, commandMap);
} catch (Exception e) {
resultVO.setResultCode(-1);
resultVO.setResultCode(ResponseCode.FAILED.getCode());
resultVO.setResultMessage(e.getMessage());
}

View File

@ -36,6 +36,8 @@ public interface EgovIndvdlSchdulManageService {
public ResultVO createSchedule(ResultVO resultVO, HttpServletRequest request, CreateScheduleVO createScheduleVO) throws Exception;
public ResultVO updateSchedule(ResultVO resultVO, HttpServletRequest request, UpdateScheduleVO updateScheduleVO) throws Exception;
public ResultVO deleteSchedule(ResultVO resultVO, HttpServletRequest request, Long scheduleId) throws Exception;
public ResultVO scheduleDetail(ResultVO resultVO, HttpServletRequest request, LoginVO user, Long scheduleId) throws Exception;

View File

@ -122,6 +122,11 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
"\n--------------------------------------------------------------\n"
);
// 유효성 검사 실시
if( Long.parseLong(createScheduleVO.getStartDate()) > Long.parseLong(createScheduleVO.getEndDate()) ) {
throw new Exception("종료일시는 시작일시보다 앞 설 수 없습니다.");
}
Map<String, Object> response = tnCmtEventRepository.spAddTnCmtEvent(
createScheduleVO.getDivMeet(), // 구분
@ -162,12 +167,22 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
"\n--------------------------------------------------------------\n"
);
// 유효성 검사 실시
int isValid = tnCmtEventRepository.sp_is_valid_tn_cmt_event_id( updateScheduleVO.getEvtSeq() );
if( isValid == 0 ) {
throw new Exception("대상이 존재하지 않습니다.");
}
if( Long.parseLong(updateScheduleVO.getStartDate()) > Long.parseLong(updateScheduleVO.getEndDate()) ) {
throw new Exception("종료일시는 시작일시보다 앞 설 수 없습니다.");
}
Map<String, Object> response = tnCmtEventRepository.spUpdateTnCmtEvent(
updateScheduleVO.getEvtSeq().intValue(),
updateScheduleVO.getEvtSeq(),
updateScheduleVO.getDivMeet(), // 구분
updateScheduleVO.getUpCommittee().intValue(), // 심의위원회 상위 코드 번호
updateScheduleVO.getCommittee().intValue(), // 심의위원회 하위 코드 번호
updateScheduleVO.getUpCommittee(), // 심의위원회 상위 코드 번호
updateScheduleVO.getCommittee(), // 심의위원회 하위 코드 번호
updateScheduleVO.getTitle(), // 제목
updateScheduleVO.getLocation(), // 장소
updateScheduleVO.getContents(), // 내용
@ -190,6 +205,38 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
return resultVO;
}
@Override
public ResultVO deleteSchedule(ResultVO resultVO, HttpServletRequest request, Long scheduleId) throws Exception {
System.out.println(
"\n--------------------------------------------------------------\n" +
request.getRequestURI() + " IN:" +
"\n--------------------------------------------------------------\n" +
"scheduleId:" + "\n" +
scheduleId + "\n" +
"\n--------------------------------------------------------------\n"
);
Map<String, Object> response = tnCmtEventRepository.spDeleteTnCmtEvent(
scheduleId.intValue(),
"admin",
null,
null,
null
);
Map<String, Object> dto = new HashMap<String, Object>();
dto.put("errorMessage", response.get("_error_message") );
dto.put("schdulId", scheduleId );
resultVO.setResult(dto);
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage());
return resultVO;
}

View File

@ -27,11 +27,11 @@ public interface TnCmtEventRepository extends JpaRepository<TnCmtEvent, TnCmtEve
":_evt_contents, " +
"TO_TIMESTAMP(" +
" :_evt_start_dt," +
" 'YYYY-MM-DD HH24:MI:SS'" +
" 'YYYYMMDDHH24MISS'" +
")::::timestamptz AT TIME ZONE 'UTC', " +
"TO_TIMESTAMP(" +
" :_evt_end_dt," +
" 'YYYY-MM-DD HH24:MI:SS'" +
" 'YYYYMMDDHH24MISS'" +
")::::timestamptz AT TIME ZONE 'UTC', " +
":_modi_id, " +
":_evt_seq, " +
@ -66,11 +66,11 @@ public interface TnCmtEventRepository extends JpaRepository<TnCmtEvent, TnCmtEve
":_evt_contents, " +
"TO_TIMESTAMP(" +
" :_evt_start_dt," +
" 'YYYY-MM-DD HH24:MI:SS'" +
" 'YYYYMMDDHH24MISS'" +
")::::timestamptz AT TIME ZONE 'UTC', " +
"TO_TIMESTAMP(" +
" :_evt_end_dt," +
" 'YYYY-MM-DD HH24:MI:SS'" +
" 'YYYYMMDDHH24MISS'" +
")::::timestamptz AT TIME ZONE 'UTC', " +
":_modi_id, " +
":_result_count, " +
@ -94,6 +94,23 @@ public interface TnCmtEventRepository extends JpaRepository<TnCmtEvent, TnCmtEve
);
@Query(value = "CALL sp_delete_tn_cmt_event (" +
":_evt_seq, " +
":_modi_id, " +
":_result_count, " +
":_result_code, " +
":_error_message)",
nativeQuery = true)
Map<String, Object> spDeleteTnCmtEvent(
@Param("_evt_seq") Integer evtSeq,
@Param("_modi_id") String modiId,
@Param("_result_count") Integer resultCount,
@Param("_result_code") String resultCode,
@Param("_error_message") String errorMessage
);
//@Procedure
//Map<String, Object> sp_is_valid_tn_cmt_event_id( @Param("_evt_seq") Long evtSeq );
@ -111,11 +128,13 @@ public interface TnCmtEventRepository extends JpaRepository<TnCmtEvent, TnCmtEve
"FROM" + " \n" +
" tn_cmt_event tce" + " \n" +
"WHERE" + " " +
" tce.use_yn = 'Y'" + " \n" +
" AND" + " \n" +
" TO_TIMESTAMP(" + " \n" +
" :sSearchDate," + " \n" +
" 'YYYYMM'" + " \n" +
" ) AT TIME ZONE 'UTC+9' <= tce.evt_start_dt AND" + " \n" +
" ) AT TIME ZONE 'UTC+9' <= tce.evt_start_dt" + " \n" +
" AND" + " \n" +
" tce.evt_start_dt < TO_TIMESTAMP(" + " \n" +
" :sSearchDate," + " \n" +
" 'YYYYMM'" + " \n" +