diff --git a/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java b/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java index 294737fe..5693ec2e 100644 --- a/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java +++ b/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java @@ -534,8 +534,25 @@ public class SspnIdtmtController { model.addAttribute("info", vEPrcsDetailVODetail); model.addAttribute("infoAplctOrd", vEEduAplctVO); + + //신청 상태 정보를 가져온다. + VEPrcsDetailVO vEPrcsAplctVO = new VEPrcsDetailVO(); + //신청이 없는 경우를 위한 예외 처리 + try { + if (vEEduAplctVO !=null) { + vEPrcsAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd()); + vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsAplctVO); + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + model.addAttribute("prcsAplctVO", vEPrcsAplctVO); + return "/web/ve/aplct/sspnIdtmt/eduAplctDetail"; } @@ -1102,6 +1119,69 @@ public class SspnIdtmtController { return "/web/ve/aplct/sspnIdtmt/eduFAQList"; } + //사용자 - 기소유예 상태 변경 + @RequestMapping(value="/web/ve/aplct/sspnIdtmt/eduAplctStatusChange4UserAjax.do") + public ModelAndView eduAplctStatusChange4UserAjax( HttpServletRequest request , ModelMap model + , VEPrcsDetailVO vEPrcsDetailVO + ) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 체크==================================== + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 체크==================================== + + + //4개 테이블에 대한 상태 변경이 필요하다. + //ve_prcs_aplct_prd - 교육과정정보, + //ve_edu_aplct - 교육신청상태, + //vea_aplct_detail_info - 교육신청 상세 + //vea_sspn_idtmt_trgt - 교육의뢰대상자 + + /* + * 기본 전달값을 하면 요청 번호에 따라서 처리 하도록 한다. + private String eduAplctOrd; //교육신청순번 + private String prcsAplctPrdOrd; //교육과정순번 + private String reqNo; //요청번호 - excel 참고 - 해당 번호에 따라서 처리 + */ + + //신청 상태 정보를 가져온다. + VEPrcsDetailVO vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsDetailVO); + + if (vEPrcsAplctVO==null) { + modelAndView.addObject("result", "fail"); + return modelAndView; + } + + vEPrcsAplctVO.setReqNo(vEPrcsDetailVO.getReqNo()); + + //수정자 정보 + vEPrcsAplctVO.setLastUpdusrId(loginVO.getUniqId()); + + System.out.println("vEPrcsAplctVO.getReqNo()"); + System.out.println(vEPrcsAplctVO.getReqNo()); + System.out.println(vEPrcsAplctVO.getReqNo()); + + int i_ret = 0; + try { + i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO); + + }catch(Exception ex) { + System.out.println(ex.toString()); + } + + modelAndView.addObject("result", "success"); + modelAndView.addObject("rsCnt", i_ret); + return modelAndView; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduAplctDAO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduAplctDAO.java index b063a16d..69a9b268 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduAplctDAO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduAplctDAO.java @@ -59,6 +59,10 @@ public class VEEduAplctDAO extends EgovAbstractDAO { return update("VEEduAplctDAO.update", paramVO); } + public int updateSspnIdmtTrgtCancelNew(VEPrcsDetailVO paramVO) throws Exception { + return update("VEEduAplctDAO.updateSspnIdmtTrgtCancelNew", paramVO); + } + public int updateUserId(VEEduAplctVO paramVO) throws Exception { return update("VEEduAplctDAO.updateUserId", paramVO); } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrDetailServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrDetailServiceImpl.java index 50fabdd4..a30cbca9 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrDetailServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrDetailServiceImpl.java @@ -49,8 +49,7 @@ public class VEInstrDetailServiceImpl implements VEInstrDetailService { } //U - public int update(VEInstrDetailVO vEInstrDetailVO) throws Exception{ - + public int update(VEInstrDetailVO vEInstrDetailVO) throws Exception{ return vEInstrDetailDAO.update(vEInstrDetailVO); } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java index d54208b0..bfc2e946 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java @@ -9,6 +9,8 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduAplctDAO; import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; @@ -29,6 +31,13 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService { @Resource(name="vEPrcsDAO") private VEPrcsDAO vEPrcsDAO; + //과정신청 + @Resource(name="vEEduAplctDAO") + private VEEduAplctDAO vEEduAplctDAO; + + //과정신청 + @Resource(name="vEPrcsMIXDAO") + private VEPrcsMIXDAO vEPrcsMIXDAO; //C public void insert(VEPrcsDetailVO vEPrcsDetailVO) throws Exception { @@ -175,6 +184,65 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService { @Override public int updateStatusChange4User(VEPrcsDetailVO vEPrcsDetailVO) throws Exception { + + + String s_reqNo = vEPrcsDetailVO.getReqNo(); + + if ("2-1".equals(s_reqNo) //사용자 신청 후 취소 + || "3-1".equals(s_reqNo) //관리자 승인 후 취소 + || "5-1".equals(s_reqNo) //관리자 교육 신청 마감 이후 취소 + ) { + //대상자 교육신청후 교육 취소 시 처리 + //ve_prcs_aplct_prd : 처리 없음 + //ve_edu_aplct : 삭제 + //vea_aplct_detail_info : 삭제 + //vea_sspn_idmt_trgt : update edu_state_cd=10,edu_aplct_ord is null + + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd()); + + //vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO); + + vEEduAplctDAO.delete(vEEduAplctVO); + vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO); + vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO); + + }else if ("4".equals(vEPrcsDetailVO.getReqNo())) { + //대상자 교육신청후 관리자가 반려 처리 + //ve_prcs_aplct_prd : 처리 없음 + //ve_edu_aplct : update aprvl_cd=35 + //vea_aplct_detail_info : 처리 없음 + //vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20 + + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd()); + + //vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO); + + //vEEduAplctDAO.delete(vEEduAplctVO); + vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO); + vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO); + vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO); + + }else if ("6-1".equals(vEPrcsDetailVO.getReqNo())) { + //대상자 교육신청후 교육 취소 시 처리 + //ve_prcs_aplct_prd : 처리 없음 + //ve_edu_aplct : update aprvl_cd=35 + //vea_aplct_detail_info : 처리 없음 + //vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20 + + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd()); + + //vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO); + + //vEEduAplctDAO.delete(vEEduAplctVO); + vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO); + //vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO); + vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO); + + } + return 1; //return vEPrcsAplctPrdDAO.updateStatusChange4User(vEPrcsDetailVO); } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsMIXDAO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsMIXDAO.java index 5e6b5d03..c90b9d88 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsMIXDAO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsMIXDAO.java @@ -58,4 +58,17 @@ public class VEPrcsMIXDAO extends EgovAbstractDAO { List tlist = (List) list("VEPrcsDAO.selectPagingList4FndthInstr", paramVO); return tlist; } + + // + public int updateAplctDetailInfo(VEPrcsDetailVO paramVO) throws Exception { + return update("VEPrcsDAO.updateAplctDetailInfo", paramVO); + } + + public int deleteAplctDetailInfo(VEPrcsDetailVO paramVO) throws Exception { + return update("VEPrcsDAO.deleteAplctDetailInfo", paramVO); + } + + public int updateSspnIdmtTrgtCancelNew(VEPrcsDetailVO paramVO) throws Exception { + return update("VEPrcsDAO.updateSspnIdmtTrgtCancelNew", paramVO); + } } diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnPrcsInfoMngController.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnPrcsInfoMngController.java index b2a0d581..5ea049ef 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnPrcsInfoMngController.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnPrcsInfoMngController.java @@ -968,6 +968,148 @@ public class CndtnPrcsInfoMngController { } + //사용자 - 기소유예 상태 변경 + @RequestMapping(value="/kccadr/oprtn/cndtnSspnIdtmt/eduAplctStatusChange4UserAjax.do") + public ModelAndView eduAplctStatusChange4UserAjax( HttpServletRequest request , ModelMap model + , VEPrcsDetailVO vEPrcsDetailVO + ) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 체크==================================== + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + if (loginVO==null) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 체크==================================== + + + //4개 테이블에 대한 상태 변경이 필요하다. + //ve_prcs_aplct_prd - 교육과정정보, + //ve_edu_aplct - 교육신청상태, + //vea_aplct_detail_info - 교육신청 상세 + //vea_sspn_idtmt_trgt - 교육의뢰대상자 + + /* + * 기본 전달값을 하면 요청 번호에 따라서 처리 하도록 한다. + private String eduAplctOrd; //교육신청순번 + private String prcsAplctPrdOrd; //교육과정순번 + private String reqNo; //요청번호 - excel 참고 - 해당 번호에 따라서 처리 + */ + + //신청 상태 정보를 가져온다. + VEPrcsDetailVO vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsDetailVO); + + if (vEPrcsAplctVO==null) { + modelAndView.addObject("result", "fail"); + return modelAndView; + } + + vEPrcsAplctVO.setReqNo(vEPrcsDetailVO.getReqNo()); + + //수정자 정보 + vEPrcsAplctVO.setLastUpdusrId(loginVO.getUniqId()); + + System.out.println("vEPrcsAplctVO.getReqNo()"); + System.out.println(vEPrcsAplctVO.getReqNo()); + System.out.println(vEPrcsAplctVO.getReqNo()); + + int i_ret = 0; + try { + i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO); + + }catch(Exception ex) { + System.out.println(ex.toString()); + } + + modelAndView.addObject("result", "success"); + modelAndView.addObject("rsCnt", i_ret); + return modelAndView; + } + + //사용자 - 기소유예 상태 변경 + @RequestMapping(value="/kccadr/oprtn/cndtnSspnIdtmt/eduAplctStatusChange4UserListAjax.do") + public ModelAndView eduAplctStatusChange4UserListAjax( HttpServletRequest request , ModelMap model + , VEPrcsDetailVO vEPrcsDetailVO + ) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 체크==================================== + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + if (loginVO==null) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 체크==================================== + + + //4개 테이블에 대한 상태 변경이 필요하다. + //ve_prcs_aplct_prd - 교육과정정보, + //ve_edu_aplct - 교육신청상태, + //vea_aplct_detail_info - 교육신청 상세 + //vea_sspn_idtmt_trgt - 교육의뢰대상자 + + /* + * 기본 전달값을 하면 요청 번호에 따라서 처리 하도록 한다. + private String eduAplctOrd; //교육신청순번 + private String prcsAplctPrdOrd; //교육과정순번 + private String reqNo; //요청번호 - excel 참고 - 해당 번호에 따라서 처리 + */ + + int i_ret = 0; + + + for(String eduAplctOrd : vEPrcsDetailVO.getEduAplctOrdList()) { + + //결과보고서 제출 알림 + try { + //신청 상태 정보를 가져온다. + vEPrcsDetailVO.setEduAplctOrd(eduAplctOrd); + VEPrcsDetailVO vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsDetailVO); + + if (vEPrcsAplctVO==null) { + modelAndView.addObject("result", "fail"); + return modelAndView; + } + + vEPrcsAplctVO.setReqNo(vEPrcsDetailVO.getReqNo()); + + //수정자 정보 + vEPrcsAplctVO.setLastUpdusrId(loginVO.getUniqId()); + + System.out.println("vEPrcsAplctVO.getReqNo()"); + System.out.println(vEPrcsAplctVO.getReqNo()); + System.out.println(vEPrcsAplctVO.getReqNo()); + + + try { + i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO); + + }catch(Exception ex) { + System.out.println(ex.toString()); + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + } + + + + modelAndView.addObject("result", "success"); + modelAndView.addObject("rsCnt", i_ret); + return modelAndView; + } + /** * @methodName : updateAplctStateCdAjax_only * @author : 이호영 diff --git a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml index c0ccad30..8729ec5f 100644 --- a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml @@ -674,8 +674,13 @@ vea_sspn_idmt_trgt a WHERE 1 = 1 - AND a.EDU_APLCT_ORD = #eduAplctOrd# - AND a.USER_ID = #userId# + AND ((a.EDU_APLCT_ORD = #eduAplctOrd# + AND a.USER_ID = #userId#) + OR + ( + a.sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd# + ) + ) diff --git a/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml index 0c575066..01a2030c 100644 --- a/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml @@ -493,7 +493,10 @@ , A.RSLT_ATCH_FILE_ID , A.EDU_MD_CD - , A.FEE_INSTT_CD + , A.FEE_INSTT_CD + + ORDER BY A.EDU_APLCT_ORD DESC + LIMIT 1 @@ -1038,6 +1041,31 @@ WHERE EDU_APLCT_ORD = #eduAplctOrd# + + + /* VEEduAplctDAO.updateSspnIdmtTrgtCancelNew + ve_edu_aplct = aprvl_cd (10-요청, 100-찜하기, 120-선정완료, 140-선정취소, 20-승인, 230-대기, 30-반려, 40-취소, 60-교육확정, 70-수정요청, 80-수정완료, 90-교육미확정) VE0003 + */ + UPDATE + SET + LAST_UPDT_PNTTM = SYSDATE + ,LAST_UPDUSR_ID = #lastUpdusrId# + + + /* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */ + , aprvl_cd = '30' + + + + + /* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */ + , aprvl_cd = '35' + + + + WHERE EDU_APLCT_ORD = #eduAplctOrd# + + UPDATE diff --git a/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml index 3840bcd2..a2829b9a 100644 --- a/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml @@ -435,6 +435,7 @@ WHEN vsit.sex = 'M' THEN '남성' WHEN vsit.sex = 'F' THEN '여성' ELSE '' END trgtSex + , vsit.SSPN_IDTMT_TRGT_ORD AS sspnIdtmtTrgtOrd FROM a JOIN ve_prcs_aplct_prd vpap ON @@ -446,10 +447,8 @@ a.USER_ID = le.ESNTL_ID LEFT JOIN VEA_SSPN_IDMT_TRGT vsit ON ( - a.USER_ID = vsit.USER_ID - AND a.rnds_ord=vsit.SSPN_IDTMT_TRGT_ORD - AND a.edu_aplct_ord=vsit.edu_aplct_ord - + /* 신청 정보에 대상자 키 값이 들어 있어서 해당 값을만 확인하면 된다.*/ + a.rnds_ord=vsit.SSPN_IDTMT_TRGT_ORD ) WHERE 1=1 @@ -479,10 +478,6 @@ AND a.use_yn = 'Y' - /* 취소된 내역 안 보여줌 */ - /* - AND a.aprvl_cd != '40' - */ @@ -774,7 +769,7 @@ AND a.use_yn = 'Y' - AND a.aprvl_cd = '20' /* 확정된 사람만 보여줌 */ + AND a.aprvl_cd IN ('20', '35', '60') /* 승인(20), 취소요청(35), 확정(60)된 사람만 보여줌 */ diff --git a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml index 21c4084a..d75fb5ed 100644 --- a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Tibero.xml @@ -402,9 +402,7 @@ x.USER_ID = le.ESNTL_ID WHERE x.prcs_ord = a.prcs_aplct_prd_ord AND x.sbmt_yn='Y' - AND x.aprvl_cd != 30 /*반려 신청자 제거*/ - AND x.aprvl_cd != 40 /*취소된 신청자 제거*/ - AND x.aprvl_cd != 100 /*찜 신청자 제거*/ + AND x.aprvl_cd != 100 /*찜 신청자만 제거*/ ) AS nosCnt1 @@ -617,8 +615,9 @@ x.USER_ID = le.ESNTL_ID WHERE x.prcs_ord = a.prcs_aplct_prd_ord AND x.sbmt_yn='Y' - AND x.aprvl_cd != 40 /*취소된 신청자 제거*/ - AND x.aprvl_cd != 30 /*취소된 신청자 제거*/ + AND x.aprvl_cd IN (20,35,60) + /* 20-승인, 35-취소 신청, 60-확정*/ + ) AS nosCnt1 /* @@ -1566,24 +1565,31 @@ /* VEPrcsAplctPrdDAO.selectAplctInfo */ SELECT - a.DDLN_CD AS ddlnCd - , b.aplct_state_cd AS aplctStateCd + + a.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd + , a.DDLN_CD AS ddlnCd + + , c.EDU_APLCT_ORD AS eduAplctOrd , c.APRVL_CD AS aprvlCd + , d.REQ_STATE_CD AS reqStateCd , d.EDU_STATE_CD AS eduStateCd - , d.EDU_APLCT_ORD AS eduAplctOrd - , a.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd - , d.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd + + , NVL(c.rnds_ord, d.sspn_idtmt_trgt_ord) AS sspnIdtmtTrgtOrd + + , b.aplct_state_cd AS aplctStateCd FROM ve_prcs_aplct_prd a - , vea_aplct_detail_info b , ve_edu_aplct c + + /* 승인 이후에 생성되는 데이터*/ + LEFT OUTER JOIN vea_aplct_detail_info b + on(b.EDU_APLCT_ORD = c.EDU_APLCT_ORD) + LEFT OUTER JOIN vea_sspn_idmt_trgt d on(c.EDU_APLCT_ORD=d.EDU_APLCT_ORD) WHERE 1=1 - AND a.PRCS_APLCT_PRD_ORD =b.PRCS_APLCT_PRD_ORD - AND b.EDU_APLCT_ORD =c.EDU_APLCT_ORD AND c.edu_aplct_ord=#eduAplctOrd# AND a.prcs_aplct_prd_ord=#prcsAplctPrdOrd# diff --git a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Tibero.xml index f52f0348..8c85df68 100644 --- a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Tibero.xml @@ -584,4 +584,64 @@ + + + /* VEPrcsDAO.updateCancelNew */ + UPDATE + vea_sspn_idmt_trgt + SET + LAST_UPDT_PNTTM = SYSDATE + ,LAST_UPDUSR_ID = #lastUpdusrId# + + + /* 신청 후 취소 */ + , user_id = NULL + , edu_aplct_ord = NULL + , edu_state_cd = '10' + , prcs_aplct_prd_ord_cmplt = NULL + + + + /* 신청 후 반려 */ + , user_id = NULL + , edu_aplct_ord = NULL + , edu_state_cd = '10' + , prcs_aplct_prd_ord_cmplt = NULL + + + + /* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */ + , edu_state_cd = '30' + , req_state_cd = '20' + + WHERE + sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd# + + + + + /* VEPrcsDAO.updateAplctDetailInfo */ + UPDATE VEA_APLCT_DETAIL_INFO + SET + LAST_UPDT_PNTTM = SYSDATE + ,LAST_UPDUSR_ID = #lastUpdusrId# + + + /* 신청 후 관리자 반려 aplct_state_cd=50 */ + , aplct_state_cd = '50' + + + + WHERE + edu_aplct_ord = #eduAplctOrd# + + + + + /* VEPrcsDAO.deleteAplctDetailInfo */ + DELETE FROM VEA_APLCT_DETAIL_INFO + WHERE + edu_aplct_ord = #eduAplctOrd# + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.jsp index 01fe7c77..77b114c8 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.jsp @@ -175,6 +175,12 @@ // 사용자 승인 반려 처리 : 체크박스O function updateEduAplctOrdList(p_aprvlCd, p_prcsAplctPrdOrd) { + if (p_aprvlCd=='30'){ + if(!confirm("접수취소(반려)처리 합니까?\n\n교육희망시 사용자가 재신청을 진행해야 합니다.")){ + return; + } + } + var selectedEduAplctOrd = []; // "chk" 이름을 가진 체크박스가 체크된 항목들을 순회 @@ -274,12 +280,14 @@ - function fn_goDetailPop(p_eduAplctOrd, p_mberId) { + function fn_goDetailPop(p_eduAplctOrd, p_mberId, p_sspnIdtmtTrgtOrd) { var form = document.detailPopForm; form.eduAplctOrd.value = p_eduAplctOrd; form.userId.value = p_mberId; + form.sspnIdtmtTrgtOrd.value = p_sspnIdtmtTrgtOrd; + form.action = ""; openPopupAndSubmitForm('detailPopForm', 'detailPopForm', 1000, 720); @@ -302,8 +310,86 @@ listForm.action = ""; listForm.submit(); } + + // 사용자 승인 반려 처리 : 체크박스X + function fncCancelUserList( + p_prcsAplctPrdOrd + , p_reqNo + ){ + + // 기존에 있던 updateEduAplctOrdList function 사용하기 위한 function + + var selectedEduAplctOrd = []; + + // "chk" 이름을 가진 체크박스가 체크된 항목들을 순회 + $("input[name='chk']:checked").each(function() { + var eduAplctOrdValue = $(this).val(); + selectedEduAplctOrd.push(eduAplctOrdValue); + }); + + // 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료 + if (selectedEduAplctOrd.length === 0) { + alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요."); + return false; + } + + + var dataToSend = { + "eduAplctOrdList": selectedEduAplctOrd, + "prcsAplctPrdOrd": p_prcsAplctPrdOrd, + "reqNo" : p_reqNo + }; + + var url = ""; + + commAjax_url(dataToSend, url); + + } - + function fncCancelUser( + p_eduAplctOrd + , p_prcsAplctPrdOrd + , p_reqNo + ){ + + var dataToSend = { + "eduAplctOrd" : p_eduAplctOrd + , "prcsAplctPrdOrd" : p_prcsAplctPrdOrd + , "reqNo" : p_reqNo + }; + + var url = ""; + + commAjax_url(dataToSend, url); + + } + + function commAjax_url(dataToSend, p_url){ + //var url = ""; + var url = p_url; + + + // AJAX 호출을 통해 서버에 데이터 전송 + $.ajax({ + type:"POST", + url: url, + data: $.param(dataToSend, true), // 직렬화 , 컨트롤러에서 @ModelAttribute로 받을 수 있음 +// contentType : 'application/json', + dataType:'json', + success:function(returnData){ + if(returnData.result == "success"){ + alert("변경 처리 되었습니다."); + window.location.reload(); + }else{ + alert("변경 중 오류가 발생하였습니다."); + } + }, + error: function(jqXHR, textStatus, errorThrown) { + console.error("AJAX Error:", textStatus, errorThrown); + console.error("Response:", jqXHR.responseText); + } + }); + } @@ -312,6 +398,7 @@
+
@@ -608,21 +695,22 @@ - -<%-- --%> -<%-- --%> + + + + -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> + + + + - + @@ -644,19 +732,16 @@ -<%-- --%> -<%-- --%> + + + - -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> -<%-- --%> + + + + + + @@ -683,7 +768,9 @@
- +<%-- --%> + +
diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/eduAplctDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/eduAplctDetail.jsp index 7211e3ee..a4e0524c 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/eduAplctDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/eduAplctDetail.jsp @@ -45,7 +45,8 @@ var regStatus = true; // 텍스트가 비어있는지 확인 - if ($ddlnCdStts.text().trim() === "") { + if ($ddlnCdStts.text().trim() === "" + || $ddlnCdStts.text().trim() === "반려") { var dateText = $ddlnCdStts.closest('table').find("td:eq(2)").text().trim(); var strtPnttm = new Date(dateText.split("~")[0].trim().replace(/\./g, '-')); @@ -69,6 +70,7 @@ } console.log('regStatus : ', regStatus); $('#regBtn').prop('disabled', regStatus); // 버튼 비활성화 + /* 240122 웹접근성으로 인하여 disabled 사용 불가능 - disabled대신 onclick과 데이터툴팁 제거하기 */ if ($('#regBtn').prop('disabled')) { $('#regBtn').removeAttr('onclick').removeAttr('data-tooltip'); @@ -112,8 +114,9 @@ } } + /* function fncCancelUser(p_eduAplctOrd){ - if(confirm("교육 수강을 취소 하시겠습니까?")){ + if(confirm("교육 수강을 취소 하시겠습니까? ")){ $.ajax({ type:"POST", url:"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctDelete4UserAjax.do", @@ -133,6 +136,7 @@ }); } } + */ function fncCancelUserToAdmin(p_eduAplctOrd){ if(confirm("교육 수강 취소 요청을 하시겠습니까?")){ @@ -155,6 +159,63 @@ }); } } + + function fncCancelUser( + p_eduAplctOrd + , p_prcsAplctPrdOrd + , p_reqNo + ){ + if(confirm("교육 수강을 취소 하시겠습니까?")){ + $.ajax({ + type:"POST", + url:"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctStatusChange4UserAjax.do", + data: { + "eduAplctOrd" : p_eduAplctOrd + , "prcsAplctPrdOrd" : p_prcsAplctPrdOrd + , "reqNo" : p_reqNo + }, + dataType:'json', + success:function(returnData){ + if(returnData.rsCnt > 0){ + alert("취소 되었습니다."); + fncGoList(); + } + }, + error:function(request , status, error){ + alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); + } + }); + } + } + + function fncCancelStatusChange( + p_eduAplctOrd + , p_prcsAplctPrdOrd + , p_reqNo + ){ + if(confirm("교육 수강 취소 요청을 하시겠습니까?\n관리자 승인 후 취소가 가능합니다.")){ + $.ajax({ + type:"POST", + url:"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctStatusChange4UserAjax.do", + data: { + "eduAplctOrd" : p_eduAplctOrd + , "prcsAplctPrdOrd" : p_prcsAplctPrdOrd + , "reqNo" : p_reqNo + }, + dataType:'json', + success:function(returnData){ + if(returnData.rsCnt > 0){ + alert("취소요청 되었습니다."); + fncGoList(); + } + }, + error:function(request , status, error){ + alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); + } + }); + } + } + // function fncCancleSubmit(){ // if(confirm("교육신청 취소하시겠습니까?")){ // $.ajax({ @@ -323,12 +384,13 @@ ); } - function fn_eduRegPopup(trgtNm, dBirth, sspnIdtmtTrgtOrd){ + function fn_eduRegPopup(p_trgtNm, p_dBirth, p_clphone, p_sspnIdtmtTrgtOrd){ var data ={ "prcsAplctPrdOrd": $('#regForm input[name="prcsAplctPrdOrd"]').val() - , "trgtNm" : trgtNm - , "dBirth" : dBirth - , "sspnIdtmtTrgtOrd" :sspnIdtmtTrgtOrd + , "trgtNm" : p_trgtNm + , "dBirth" : p_dBirth + , "clphone" : p_clphone + , "sspnIdtmtTrgtOrd" :p_sspnIdtmtTrgtOrd } commonPopLayeropen( @@ -486,17 +548,28 @@
- - - - - - - + + +<%-- --%> +<%-- --%> +<%-- --%> + +<%-- --%> <%-- --%> +<%-- --%> - + + + + + + + + + + +
diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPop.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPop.jsp index 38e1e565..e6b01991 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPop.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPop.jsp @@ -166,6 +166,7 @@ $(document).ready(function(){ +