diff --git a/src/main/java/kcc/ve/aplct/cmdTrgt/service/CmdTrgtService.java b/src/main/java/kcc/ve/aplct/cmdTrgt/service/CmdTrgtService.java index d9c8643a..e152a160 100644 --- a/src/main/java/kcc/ve/aplct/cmdTrgt/service/CmdTrgtService.java +++ b/src/main/java/kcc/ve/aplct/cmdTrgt/service/CmdTrgtService.java @@ -19,8 +19,7 @@ public interface CmdTrgtService { ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO); //교육대상자 확인 - new - ModelAndView checkSspnIdtmt(CmdTrgtMngVO cndtnTrgtInfoMngVO); - + ModelAndView checkSspnIdtmt(CmdTrgtMngVO cndtnTrgtInfoMngVO); } diff --git a/src/main/java/kcc/ve/aplct/prevent/service/PreventService.java b/src/main/java/kcc/ve/aplct/prevent/service/PreventService.java new file mode 100644 index 00000000..38e331df --- /dev/null +++ b/src/main/java/kcc/ve/aplct/prevent/service/PreventService.java @@ -0,0 +1,24 @@ +package kcc.ve.aplct.prevent.service; + + +import org.springframework.web.servlet.ModelAndView; + +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; + +public interface PreventService { + + void insertVeEduAplct(VEEduAplctVO paramVO); + + void updateAprvlCd(VEEduAplctVO paramVO) throws Exception; + + VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO); + +// String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO); + //교육대상자 확인 + ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + //교육대상자 확인 - new + ModelAndView checkSspnIdtmt(CmdTrgtMngVO cndtnTrgtInfoMngVO); + +} diff --git a/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java b/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java new file mode 100644 index 00000000..238d4016 --- /dev/null +++ b/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java @@ -0,0 +1,285 @@ +package kcc.ve.aplct.prevent.service.impl; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.apache.commons.lang.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.servlet.ModelAndView; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import kcc.com.cmm.LoginVO; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.aplct.prevent.service.PreventService; +import kcc.ve.cmm.VeSendSMS; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctSndHstryService; +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.instrInfo.service.VEInstrMixService; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.impl.CmdTrgtMngDAO; + +@Service("preventService") +public class PreventServiceImpl implements PreventService { + + //과정 + @Resource(name="vEEduAplctDAO") + private VEEduAplctDAO vEEduAplctDAO; + + // 기소유예 관련 + @Resource(name="cmdTrgtInfoMngDAO") + private CmdTrgtMngDAO cmdTrgtMngDAO; + + //snd_hstry id gen + @Resource(name = "sndGnrService") + private EgovIdGnrService sndGnrService; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + //강사 정보 MIX + @Resource(name="vEInstrMixService") + private VEInstrMixService vEInstrMixService; + + // 교육신청발송이력 + @Resource(name = "vEEduAplctSndHstryService") + private VEEduAplctSndHstryService vEEduAplctSndHstryService; + + @Override + public void insertVeEduAplct(VEEduAplctVO paramVO) { + vEEduAplctDAO.insertVeEduAplct(paramVO); + } + + @Override + public void updateAprvlCd(VEEduAplctVO paramVO) throws Exception { + vEEduAplctDAO.updateReg(paramVO); + } + + @Override + public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) { + return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO); + } + + @Override + public ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String result=""; + String msg=""; + String id=""; + String next=""; + try { + result="success"; +// +// // 교육 신청한 대상자 조회 + id = cmdTrgtMngDAO.findByTrgtNmAndDBirthAndEduStateCd(cndtnTrgtInfoMngVO); + + if(StringUtils.isNotEmpty(id)) { + msg = "이미 신청한 대상자 입니다."; + + // 신청한 대상자가 없으면 + // 신청하지 않은 대상자가 있는지 조회 + }else { + + id = cmdTrgtMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd(cndtnTrgtInfoMngVO); + msg = "대상자가 없습니다."; + + if(StringUtils.isNotEmpty(id)) { + msg = "확인됐습니다."; + next = "Y"; + } + } + } catch (Exception e) { + result="fail"; + msg = "오류가 발생하였습니다 관리자에게 문의하세요. "; + e.printStackTrace(); + // TODO: handle exception + } + modelAndView.addObject("msg", msg); + modelAndView.addObject("result", result); + modelAndView.addObject("id", id); + modelAndView.addObject("next", next); + + + return modelAndView; + } + + @Override + public ModelAndView checkSspnIdtmt(CmdTrgtMngVO cmdTrgtMngVO) { + /* + * step0.해당 계정으로 신청한 정보가 있는지 확인 하고, 있다면 동일한 정보로 신청했는지 확인 할것. + * step1.신청 가능한 대상이 있는지 찾는다. + * 있으면 신청처리 but 2개 이상이면 선택하도록, 1개면 신청 처리 + * step2.대상이 없으면 기존 이력이 있는지 확인 + * 있으면 기존 사유 노출 + * step3.기존 이력이 없으면 관리자에게 문의 하도록 한다. + * */ + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String result=""; + String msg=""; + String id=""; + String next=""; //? + String smsYn = ""; //휴대폰 인증 번호 발송 여부 + try { + result=""; +// +// // step0.해당 계정으로 신청한 정보가 있는지 확인 하고, 있다면 동일한 정보로 신청했는지 확인 할것. + //CmdTrgtMngVO cndtnTrgtMngVO = cmdTrgtMngDAO.checkSspnIdtmtNewStep0(cmdTrgtMngVO); + /* + if ("F".equals(cndtnTrgtMngVO.getResultCd())) { //해당 계정으로 신청한 정보중에 다른 개인정보(이름, 생년월일, 성별)를 사용해서 신청한 내용이 있다. + + result="fail"; + msg = "하나의 계정은 한 명의 대상자만 신청할 수 있습니다."; + + modelAndView.addObject("msg", msg); + modelAndView.addObject("result", result); + + return modelAndView; + + } + */ + + + // step1.신청 가능한 대상이 있는지 찾는다.-대상자 존재 여부만 확인 + List cndtnTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep1(cmdTrgtMngVO); + + System.out.println(cndtnTrgtMngVOList); + System.out.println(cndtnTrgtMngVOList.size()); + + if (false) { //대상자가 없음 + result = "fail"; + msg = "대상자 정보와 입력하신 정보가 일치하지 않습니다.\n담당자에게 문의 바랍니다.\n문의: 055-792-0223"; + next = "Y"; //? + + }else { //대상자 있음 + //id = cndtnTrgtMngVOList.get(0).getCmdTrgtInfoOrd(); + + //step2.대상이 완료 상태인지 확인 + cndtnTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep2(cmdTrgtMngVO); + + int i_cnt = 0; + + try { + i_cnt = cndtnTrgtMngVOList.size(); + }catch(Exception ex) { + ex.printStackTrace(); + } + + if (i_cnt>0) { //완료한 상태이다. + result = "fail"; + msg = "의뢰 상태가 완료로 과정대상자가 아닙니다. 관리자에게 문의 바랍니다."; + next = "Y"; //? + + }else { //미완료 상태이다. //신청한 과정이 있는지 확인 필요. + cndtnTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep3(cmdTrgtMngVO); + + i_cnt = 0; + + try { + i_cnt = cndtnTrgtMngVOList.size(); + }catch(Exception ex) { + ex.printStackTrace(); + } + + if (i_cnt>0) {//기 신청한 과정이 있다. + msg = "이미 신청한 교육이 있습니다."; + next = ""; //? + }else {//신청한 과정이 없다. + result = "success"; + msg = ""; + //id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd(); + //id = ""; + next = "Y"; + smsYn = "Y"; + //next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자 수 + } + + } + } + + //핸드폰으로 인증번호 발송 + if ("Y".equals(smsYn) && !"Y".equals(cmdTrgtMngVO.getChkYn())) { + //인증번호 생성 + String code = RandomStringUtils.randomNumeric(6); + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + VeSendSMS sendSMS = new VeSendSMS(); + cmdTrgtMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cmdTrgtMngVO); //핸드폰번호 복호화 + vEEduAplctVO.setEduAplctOrd("기소유예 대상자 인증"); + vEEduAplctVO.setSndCn("안녕하세요. 저작권배움터 기소유예 담당자입니다.\n인증번호는 " + code + " 입니다."); + vEEduAplctVO.setClphone(cmdTrgtMngVO.getClphone()); + vEEduAplctVO.setSndFlag("B"); + Map resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag()); + //문자 발송 성공 시 + if("1".equals(resultMap.get("result_code"))){ + //발송 로그 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); + String snd_ord = sndGnrService.getNextStringId(); + vEEduAplctVO.setSndHstryOrd(snd_ord); + vEEduAplctVO.setSndId(loginVO.getUniqId()); + vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone()); + vEEduAplctVO.setSndCd("10"); + vEEduAplctVO.setTrgtId(loginVO.getUniqId()); + vEEduAplctSndHstryService.insert(vEEduAplctVO); + + + //인증번호 row 생성 (기존 강사인증 테이블 사용) + VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO(); + vEInstrDetailVO.setEmail(vEEduAplctVO.getClphone()); + vEInstrDetailVO.setCrtfdNumber(code); + vEInstrDetailVO.setUserId(loginVO.getUniqId()); + vEInstrMixService.deleteInstrEmailCrtfd(vEInstrDetailVO); + vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO); + + } + } + + + /* + if(StringUtils.isNotEmpty(id)) { + msg = "이미 신청한 대상자 입니다."; + + // 신청한 대상자가 없으면 + // 신청하지 않은 대상자가 있는지 조회 + }else { + + id = cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd(cndtnTrgtInfoMngVO); + msg = "대상자가 없습니다."; + + if(StringUtils.isNotEmpty(id)) { + msg = "확인됐습니다."; + next = "Y"; + } + } + */ + } catch (Exception e) { + result="fail"; + msg = "오류가 발생하였습니다 관리자에게 문의하세요. "; + next = "Y"; + e.printStackTrace(); + // TODO: handle exception + } + + modelAndView.addObject("msg", msg); + modelAndView.addObject("id", id); + modelAndView.addObject("result", result); + modelAndView.addObject("next", next); //fail & Y = 관리자 문의 버튼 노출 + + return modelAndView; + } +} diff --git a/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java b/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java index ed641c94..3b308e63 100644 --- a/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java +++ b/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java @@ -35,7 +35,7 @@ import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.let.utl.fcc.service.ITNotiUtil; import kcc.ve.aplct.adultVisitEdu.eduAplct.service.EduAplctAdultService; import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService; -import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService; +import kcc.ve.aplct.prevent.service.PreventService; import kcc.ve.cmm.VeConstants; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctOnlnService; @@ -50,6 +50,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService; import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; @@ -165,8 +166,14 @@ public class PreventController { private CmmUseDAO cmmUseDAO; //온라인콘텐츠과정 관리 - @Resource(name = "sspnIdtmtService") - private SspnIdtmtService sspnIdtmtService; + //@Resource(name = "sspnIdtmtService") + //private SspnIdtmtService sspnIdtmtService; + + //@Resource(name = "cmdTrgtService") + //private CmdTrgtService cmdTrgtService; + + @Resource(name = "preventService") + private PreventService preventService; @Resource(name = "NotifyManageService") private NotifyManageService notifyManageService; @@ -364,6 +371,10 @@ public class PreventController { , ModelMap model , HttpServletRequest request ) throws Exception { + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + model.addAttribute("loginVO", loginVO); + System.out.println("s_actionaaaaaaaaaaa"); String s_action = request.getParameter("action"); //insert or select System.out.println("s_action"); @@ -529,7 +540,7 @@ public class PreventController { vEEduAplctReqVO.setLctrDivCd(vEPrcsDetailVODetail.getLctrDivCd()); vEEduAplctReqVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd()); vEEduAplctReqVO.setLctrDivCd(p_lctr_div_cd); - VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO); + VEEduAplctVO vEEduAplctVO = preventService.findByAprvlCd(vEEduAplctReqVO); // VO를 먼저 null 체크 후 진행해야 에러안남 // vEEduAplctVO != null && if(vEEduAplctVO != null && StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd())) { @@ -675,6 +686,7 @@ public class PreventController { // frst_regist_pnttm vEEduAplctVO.setUserId(loginVO.getUniqId()); vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + vEEduAplctVO.setChrgNm(vEPrcsDetailVO.getTrgtNm()); vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm()); vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth()); vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone())); @@ -685,14 +697,14 @@ public class PreventController { //암호화 vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); vEEduAplctVO.setRndsOrd(vEPrcsDetailVO.getSspnIdtmtTrgtOrd()); //2024-02-07 추가 신청서 정보에 대상자 정보를 넣어야 추후 구분이 가능해서 추가함 - sspnIdtmtService.insertVeEduAplct(vEEduAplctVO); + preventService.insertVeEduAplct(vEEduAplctVO); CndtnTrgtMngVO cndtnTrgtMngVO = new CndtnTrgtMngVO(); cndtnTrgtMngVO.setUserId(loginVO.getUniqId()); cndtnTrgtMngVO.setSspnIdtmtTrgtOrd(vEPrcsDetailVO.getSspnIdtmtTrgtOrd()); - cndtnTrgtMngVO.setEduStateCd("25"); // 신청 + //cndtnTrgtMngVO.setEduStateCd("25"); // 신청 cndtnTrgtMngVO.setEduAplctOrd(s_eduAplctOrd); //동일한 대상자가 어떤 신청서와 맞는지 매칭에 필요함 @@ -920,7 +932,7 @@ public class PreventController { String result = "false"; try { - sspnIdtmtService.updateAprvlCd(vEEduAplctVO); + preventService.updateAprvlCd(vEEduAplctVO); result = "success"; } catch (Exception e) { @@ -940,7 +952,7 @@ public class PreventController { */ @RequestMapping("/web/ve/aplct/prevent/userConfirmAjax.do") public ModelAndView userConfirmAjax( - @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO , ModelMap model , HttpServletRequest request ) throws Exception { @@ -956,7 +968,7 @@ public class PreventController { return modelAndView; } - return sspnIdtmtService.checkSspnIdtmt(cndtnTrgtInfoMngVO); + return preventService.checkSspnIdtmt(cndtnTrgtInfoMngVO); /* try { @@ -992,7 +1004,7 @@ public class PreventController { */ @RequestMapping("/web/ve/aplct/prevent/userNewConfirmAjax.do") public ModelAndView userNewConfirmAjax( - @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO , ModelMap model , HttpServletRequest request ) throws Exception { @@ -1022,11 +1034,11 @@ public class PreventController { System.out.println(cndtnTrgtInfoMngVO.getTrgtNm()); */ - cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO); + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); //return modelAndView; - return sspnIdtmtService.checkSspnIdtmt(cndtnTrgtInfoMngVO); + return preventService.checkSspnIdtmt(cndtnTrgtInfoMngVO); } diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduPrcsAplctPrdMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduPrcsAplctPrdMngDetail.jsp index 280e4ead..282a807f 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduPrcsAplctPrdMngDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduPrcsAplctPrdMngDetail.jsp @@ -592,6 +592,7 @@ 강사 배치 정보 강사 배치 정보 --> +

강사 배치 정보

@@ -735,7 +736,7 @@ - + diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPop.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPop.jsp new file mode 100644 index 00000000..8a0844c6 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPop.jsp @@ -0,0 +1,299 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> + +교육신청 목록 > 기소유예 찾아가는 저작권 교육 > 한국지식재산보호원 저작권 교육 시스템 + + + + + + + + +
+ + + + + + + +
+ +
+ +
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp new file mode 100644 index 00000000..fe9317c0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp @@ -0,0 +1,624 @@ +<%-- + + Class Name : eduAplctPopList.jsp + Description : 신청팝업 + Modification Information + + 1.강의 종류(청소년, 성인 ... VE0011) 및 설문 종류 (10-기본, 20-신청자, 30-강사) 및 상태(등록, 완료) 에 맞는 설문 레이어 팝업을 만든다. + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2021.12.02 조용준 내용 + + author : 조용준 + since : 2021.12.02 + +--%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> + + + + +
+ + + + +
+ +
+ + + + + + + + +