diff --git a/src/main/java/kcc/ve/oprtn/prevent/web/PreventNewMngController.java b/src/main/java/kcc/ve/oprtn/prevent/web/PreventNewMngController.java new file mode 100644 index 00000000..35080d37 --- /dev/null +++ b/src/main/java/kcc/ve/oprtn/prevent/web/PreventNewMngController.java @@ -0,0 +1,2836 @@ +package kcc.ve.oprtn.prevent.web; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.ComDefaultCodeVO; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.CmmnDetailCode; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.spring.data.util.ExcelUtil; +import kcc.com.cmm.util.DateUtil; +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckFileUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.fcc.service.ITNotiUtil; +import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl.TrgtExcelReader; +import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO; + +/** + * 기반강화연수(관리자) + * 기반강화연수에 관한 controller 클래스를 정의한다. + * @author 조용준 + * @since 2023.07.12 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.12.16  조용준          최초 생성
+ *
+ * 
+ */ + +@Controller +//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn") +public class PreventNewMngController { + + private static final Logger LOGGER = LoggerFactory.getLogger(PreventNewMngController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //과정 관리 + @Resource(name = "vEPrcsService") + private VEPrcsService vEPrcsService; + + //온라인콘텐츠과정 관리 + @Resource(name = "vEPrcsOnlnCntntService") + private VEPrcsOnlnCntntService vEPrcsOnlnCntntService; + + + //과정 관리 + @Resource(name = "cndtnTrgtInfoMngService") + private CndtnTrgtMngService cndtnTrgtInfoMngService; + + //과정 관리 - 시정명령 + @Resource(name = "cmdTrgtInfoMngService") + private CmdTrgtMngService cmdTrgtInfoMngService; + + //교육과정순번 + @Resource(name="prcsGnrService") + private EgovIdGnrService prcsGnrService; + + //기소유예대상자 + @Resource(name="trgtOrdService") + private EgovIdGnrService trgtOrdService; + + //과정온라인콘텐츠순번 + @Resource(name="prcsOnlnGnrService") + private EgovIdGnrService prcsOnlnGnrService; + + + //과정차시 관리 + @Resource(name = "vEPrcsAplctPrdService") + private VEPrcsAplctPrdService vEPrcsAplctPrdService; + + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + + //파일정보의 관리 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService egovCmmUseService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + //알림 + @Resource(name = "iTNotiUtil") + private ITNotiUtil iTNotiUtil; + + //과정 관리 + @Resource(name = "vEEduMIXService") + private VEEduMIXService vEEduMIXService; + + /* + + // 교육신청 서비스단 + @Resource(name = "AdjReqMgrService") + private AdjReqMgrService adjReqMgrService; + + // eGov 공통코드 + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + // global 프로퍼티 + @Resource(name="globalSettings") + protected Properties propertiesService; + + //첨부파일 경로, realPath 설정 + @Resource(name="EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + // 첨부파일 정보 + @Resource(name="EgovFileMngService") + private EgovFileMngService fileMngService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + @Resource(name="KccadrMgrUdtService") + private KccadrMgrUdtService kccadrMgrUdtService; + + // 교육신청 서비스단 + @Resource(name = "checkAdrProcessUtil") + private CheckAdrProcessUtil checkAdrProcessUtil; + */ + + + @RequestMapping("/kccadr/oprtn/prevent/trgtList.do") + public String trgtList( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 +// LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + String userWork = this.getUserWork(request); + cndtnTrgtInfoMngVO.setSearchCondition(userWork); + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //검색 조회 + String selectCondition = ""; + + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){ + String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus(); + + //selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')"; + selectCondition = "AND a."+searchStatus+" LIKE '%'||'" +cndtnTrgtInfoMngVO.getSearchKeyword() + "'||'%' "; + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + } + + //성명검색 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordFrom())){ + //cndtnTrgtInfoMngVO.setSearchKeywordFrom(egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom())); + selectCondition = " AND a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "; + //cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + } + + //생년월일검색 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordTo())){ + selectCondition = " AND a.d_birth ='" +cndtnTrgtInfoMngVO.getSearchKeywordTo() + "' "; + + } + + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + +// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + List cndtnTrgtInfoMngVOList = null; + try { + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + + //복호화 + //cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + + + return "oprtn/prevent/trgtList"; + } + + + @RequestMapping("/kccadr/oprtn/prevent/updateEduStateCdAndReqStateCdAjax.do") + public ModelAndView updateEduStateCdAndReqStateCdAjax( + @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + cndtnTrgtMngVO.setLastUpdusrId(loginVO.getUniqId()); + + // 대괄호 제거 + List resultList = new ArrayList<>(); + for (String list : cndtnTrgtMngVO.getSspnIdtmtTrgtOrdList()) { + resultList.add(list.replace("[","").replace("]","")); // 내부 리스트의 모든 요소를 resultList에 추가 + } + + cndtnTrgtMngVO.setSspnIdtmtTrgtOrdList(resultList); + + try { + cmdTrgtInfoMngService.updateEduStateCdAndReqStateCdAjax(cndtnTrgtMngVO); + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + //교육대상자 삭제 + @RequestMapping("/kccadr/oprtn/prevent/deleteEduReqAjax.do") + public ModelAndView deleteEduReqAjax( + @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + cndtnTrgtMngVO.setLastUpdusrId(loginVO.getUniqId()); + try { + + + cmdTrgtInfoMngService.deleteEduReqAjax(cndtnTrgtMngVO); + + + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + + /** + * @methodName : getUserWork + * @author : 이호영 + * @date : 2023.11.07 + * @description : 사용자 권한이 관할청 담당자일때 userWork로 관할 가져오기 + * @param request + * @return + */ + private String getUserWork(HttpServletRequest request) { + + String userWork = ""; + HttpSession session = request.getSession(); + LoginVO loginVO = (LoginVO) session.getAttribute("LoginVO"); + String authority = loginVO.getAuthority(); + // 관할청 담당자일때 + if("ROLE_ADR_JRSDC".equals(authority)) { + userWork = loginVO.getUserWork(); + } + // TODO Auto-generated method stub + return userWork; + } + + @RequestMapping("/kccadr/oprtn/prevent/trgtMngList.do") + public String trgtMngList( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //검색 조회 + String selectCondition = ""; + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){ + String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus(); +// selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')"; + selectCondition += "AND a."+searchStatus+" LIKE '%" +cndtnTrgtInfoMngVO.getSearchKeyword() + "%'"; + //cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + } + + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordFrom())) { + if("1".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //전체 + selectCondition += " AND (a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "+" OR a.prsctr_nm ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "+" OR a.vnt_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "+" OR a.req_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "') "; + }else if("2".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //성명 + selectCondition += " AND a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "; + }else if("3".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //검사명 + selectCondition += " AND a.prsctr_nm ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "; + }else if("4".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //사건번호 + selectCondition += " AND a.vnt_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "; + }else { //의뢰번호 + selectCondition += " AND a.req_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "; + } + } + + + //생년월일검색 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordTo())){ + selectCondition += " AND a.d_birth ='" +cndtnTrgtInfoMngVO.getSearchKeywordTo() + "' "; + + } + + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus())) + { + cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus()); + } + + List cndtnTrgtInfoMngVOList = null; + + try { + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + return "oprtn/prevent/trgtMngList"; + } + + /** + * @methodName : trgtCmpltList + * @author : 이호영 + * @date : 2023.10.20 + * @description : 대상자 이수 목록 + * @param cndtnTrgtInfoMngVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtCmpltList.do") + public String trgtCmpltList( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //성명검색 + String selectCondition = ""; + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordFrom())){ + selectCondition += " AND a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "; + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + } + + //검색 조회 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){ + + + + String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus(); + + //selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')"; + selectCondition = "AND a."+searchStatus+" LIKE '%'||'" +cndtnTrgtInfoMngVO.getSearchKeyword() + "'||'%' "; + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + } + +// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + List cndtnTrgtInfoMngVOList = null; + try { + // 이수 조건 추가 + cndtnTrgtInfoMngVO.setEduStateCd("20"); + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + return "oprtn/prevent/trgtCmpltList"; + } + + /** + * 조건부기소유예대상자 중복확인 화면-등록관리 + */ + //@RequestMapping("trgtDplctChk.do") + @RequestMapping("/kccadr/oprtn/prevent/trgtMngDplctChk.do") + public String trgtMngDplctChk( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + return "oprtn/prevent/trgtMngDplctChk"; + } + + /** + * 조건부기소유예대상자 중복확인 화면-대상자관리 + */ + //@RequestMapping("trgtDplctChk.do") + @RequestMapping("/kccadr/oprtn/prevent/trgtDplctChk.do") + public String trgtDplctChk( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + return "oprtn/prevent/trgtDplctChk"; + } + + /** + * 조건부기소유예대상자 등록 화면 + */ + //@RequestMapping("eduPrcsMngReg.do") + @RequestMapping("/kccadr/oprtn/prevent/trgtReg.do") + public String cndtnEduPrcsMngReg( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + // 사용자 권한이 관할청 담당자일때 userWork로 관할 가져오기 + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + + + // CODE 값을 저장할 Set (중복을 제거하기 위해 사용) + HashSet uniqueCodes = new HashSet<>(); + + for(CmmnDetailCode vo : CmmnDetailCodeList) { + uniqueCodes.add(vo.getCode().split("-")[0]); + } + + ArrayList al = new ArrayList<>(uniqueCodes); + + Collections.sort(al); + + + + model.addAttribute("CmmnDetailCodeList", al); + + + //병합대상자 정보 + CmdTrgtMngVO cndtnTrgtInfoVO = new CmdTrgtMngVO(); + cndtnTrgtInfoVO.setCmdTrgtInfoOrd(cndtnTrgtInfoMngVO.getPrcsAplctPrdOrdCmplt()); + cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoVO); + + model.addAttribute("mergeInfo", cndtnTrgtInfoVO); + + + return "oprtn/prevent/trgtReg"; + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/prevent/selectCmptntAthrtCodeAjax.do") + public ModelAndView selectCmptntAthrtCodeAjax( + @ModelAttribute("comDefaultCodeVO") ComDefaultCodeVO comDefaultCodeVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("comDefaultCodeVO.getCodeNm() : "+ comDefaultCodeVO.getCodeNm()); + comDefaultCodeVO.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailLikeNmOrderByCode(comDefaultCodeVO); + + + modelAndView.addObject("cmmnCodeList", CmmnDetailCodeList); + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtRegAjax.do") + public ModelAndView cndtnEduPrcsMngRegAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + + + // 사건번호 + // 형식 : - 예시로 A-서울중앙-100-23-1 경우 + // A (성인/미성년 구분), 서울중앙, 100, 23, 1 + // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 + + try { + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + } + System.out.println(cndtnTrgtInfoMngVO.getdBirth()); + + cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO)); + + cndtnTrgtInfoMngVO.setCmdTrgtInfoOrd(trgtOrdService.getNextStringId()); + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일 + cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + + //암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + cmdTrgtInfoMngService.insert(cndtnTrgtInfoMngVO); + // 병합을 하기위한 key + modelAndView.addObject("cmdTrgtInfoOrd", cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()); + modelAndView.addObject("result", "success"); + + //첨부파일 이름 변경하기 + List result = new ArrayList<>(); + FileVO fileCheck = new FileVO(); + fileCheck.setAtchFileId(s_scholSealAtchFileId); + result = fileService.selectFileInfs(fileCheck); + + for(int i=0; i < result.size(); i++) { + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + String orignlFileNm = cndtnTrgtInfoMngVO.getTrgtNm() + "_"+cndtnTrgtInfoMngVO.getDBirth()+"_"+cndtnTrgtInfoMngVO.getCmptntAthrtNm(); + orignlFileNm = orignlFileNm+"_"+(i+1); + orignlFileNm = orignlFileNm +"."+ result.get(i).getFileExtsn(); + result.get(i).setOrignlFileNm(orignlFileNm); + fileService.updateFileName(result.get(i)); + } + + }catch(Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", "fail"); + } + + + return modelAndView; + + } + + /** + * @methodName : trgtExcelRegAjax + * @author : 이호영 + * @date : 2024.01.08 + * @description : 대상자 EXCEL UPLOAD + * @param cndtnTrgtInfoMngVO + * @param model + * @param request + * @param multiRequest + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtExcelRegAjax.do") + public ModelAndView trgtExcelRegAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + modelAndView.addObject("result", "success"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + + // 파일 저장후 atchFileId return + String s_scholSealAtchFileId = this.getAtchFileId(request, multiRequest, modelAndView); + //TEST + //String s_scholSealAtchFileId = "FILE_000000000001530"; + + + // 등록 파일 select + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_scholSealAtchFileId); + List fileList = fileService.selectFileInfs(fileVO); + + if(fileList.size() > 0) { + LOGGER.info(" ++ SAVE FILE INFO :: [{}] ", fileList.get(0).toString()); + FileVO fileInfoVO = fileList.get(0); + // 파일경로 + 파일명 생성 + String filePathAndNm = fileInfoVO.getFileStreCours() + fileInfoVO.getStreFileNm(); + + TrgtExcelReader excelReader = new TrgtExcelReader(filePathAndNm); + try { + LOGGER.info(" ++ Excel Read Start"); + // 엑셀 Read + List trgtExcelVOList = excelReader.readExcelFileFromCmdTrgt(); + LOGGER.info(" ++ Excel Read End Total :: [{}]", trgtExcelVOList.size()); + + + + int i = 0 ; + for(CmdTrgtMngVO cndtnTrgtMngVO : trgtExcelVOList) + { + cndtnTrgtMngVO.setCmdTrgtInfoOrd(trgtOrdService.getNextStringId()); + cndtnTrgtMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + + // 의뢰 상태코드 + ComDefaultCodeVO comDefaultReqCodeVO = new ComDefaultCodeVO(); + comDefaultReqCodeVO.setCodeId("VEA005"); + comDefaultReqCodeVO.setCodeDc(cndtnTrgtMngVO.getReqStateCd()); + cndtnTrgtMngVO.setReqStateCd( egovCmmUseService.selectCmmCodeDetailCode(comDefaultReqCodeVO) ); + + // 교육상태코드 + ComDefaultCodeVO comDefaultEduCodeVO = new ComDefaultCodeVO(); + comDefaultEduCodeVO.setCodeId("VEA002"); + comDefaultEduCodeVO.setCodeDc(cndtnTrgtMngVO.getEduStateCd()); + cndtnTrgtMngVO.setEduStateCd( egovCmmUseService.selectCmmCodeDetailCode(comDefaultEduCodeVO) ); + + // 성별 + ComDefaultCodeVO comDefaultSexCodeVO = new ComDefaultCodeVO(); + comDefaultSexCodeVO.setCodeId("COM014"); + comDefaultSexCodeVO.setCodeDc(cndtnTrgtMngVO.getSex()); + cndtnTrgtMngVO.setSex( egovCmmUseService.selectCmmCodeDetailCode(comDefaultSexCodeVO) ); + + // 관할청 + ComDefaultCodeVO comDefaultCmptntCodeVO = new ComDefaultCodeVO(); + comDefaultCmptntCodeVO.setCodeId("VEA008"); + comDefaultCmptntCodeVO.setCodeDc(cndtnTrgtMngVO.getCmptntAthrt()); + cndtnTrgtMngVO.setCmptntAthrt( egovCmmUseService.selectCmmCodeDetailCode(comDefaultCmptntCodeVO) ); + + //암호화 + cndtnTrgtMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtMngVO); + + + LOGGER.info(cndtnTrgtMngVO.toString()); + + + // 이수 상태일 경우 vea_aplct_detail_info TB에 INSERT 해야함 +// if("20".equals(cndtnTrgtMngVO.getEduStateCd())) +// { +// CndtnTrgtMngVO veaAplctDetailInfoVO = new CndtnTrgtMngVO(); +// +// } + + + + // TEST +// i++; +// if(i==10) +// break; + + } + + LOGGER.info(" 엑셀 insert :: [{}]건", trgtExcelVOList.size()); + + for(CmdTrgtMngVO cndtnTrgtMngVO : trgtExcelVOList) { + //병합이면 대상을 찾아서 넣는다. + System.out.println("cndtnTrgtMngVO.getMergeStatus()"); + System.out.println(cndtnTrgtMngVO.getMergeStatus()); + + //병합요청인지 확인 + if (cndtnTrgtMngVO.getMergeStatus()!=null && !"".equals(cndtnTrgtMngVO.getMergeStatus())) { + //가능한 병합대상을 찾는다. + CmdTrgtMngVO cndtnTrgtMergeVO = cmdTrgtInfoMngService.selectDetail4Merge(cndtnTrgtMngVO); + + //자기 자신으로 병합되지는 않는다. + if (cndtnTrgtMergeVO!=null && !cndtnTrgtMergeVO.getReqNmbr().equals(cndtnTrgtMngVO.getReqNmbr())) { + cndtnTrgtMngVO.setPrcsAplctPrdOrdCmplt(cndtnTrgtMergeVO.getCmdTrgtInfoOrd()); + } + } + + //excel 데이터를 넣거나, 업데이트 한다. + i+=cmdTrgtInfoMngService.insert4Merge(cndtnTrgtMngVO); + } + + modelAndView.addObject("resultCnt", i); + + } catch (Exception e) { + // TODO: handle exception + modelAndView.addObject("result", "fail"); + e.printStackTrace(); + } + + + // 파일이 없을 경우 + }else { + modelAndView.addObject("result", "fail"); + } + + + + return modelAndView; + + } + + + private String getAtchFileId(HttpServletRequest request, MultipartHttpServletRequest multiRequest, + ModelAndView modelAndView) throws Exception { //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + String s_scholSealAtchFileId = ""; + try { + + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "trgtExcel_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + + if ("ERROR".equals(s_scholSealAtchFileId)) return ""; + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + return s_scholSealAtchFileId; + } + + @RequestMapping("/kccadr/oprtn/prevent/popup/excelUploadPopup.do") + public String excelUploadPopup( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + + } + + +// return "/oprtn/prevent/popup/duplChkPopup"; + return "/oprtn/prevent/popup/excelUploadPopup"; + } + + @RequestMapping("/kccadr/oprtn/prevent/popup/duplChkPopup.do") + public String duplChkPopup( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + //현재 등록자 정보 + CmdTrgtMngVO cndtnTrgtInfo = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + cndtnTrgtInfo = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfo); + + + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + + } + + //검색을 위한 암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + + + //병합대상자 검색 + cndtnTrgtInfoMngVO.setEduStateCd(""); + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + model.addAttribute("cndtnTrgtInfo", cndtnTrgtInfo); + + + + + return "/oprtn/prevent/popup/duplChkPopup"; + } + + + @RequestMapping("/kccadr/oprtn/prevent/duplChkAjax.do") + public ModelAndView duplChkAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + + System.out.println(cndtnTrgtInfoMngVO.getTrgtNm()); + System.out.println(cndtnTrgtInfoMngVO.getdBirth()); + System.out.println(cndtnTrgtInfoMngVO.getSex()); + + + try { + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + } + System.out.println(cndtnTrgtInfoMngVO.getdBirth()); + + + + //암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + List cndtnTrgtDuplListVO = cmdTrgtInfoMngService.selectDuplChk(cndtnTrgtInfoMngVO); + + modelAndView.addObject("cndtnTrgtDuplListVO", cndtnTrgtDuplListVO); + modelAndView.addObject("trgtDuplSize", cndtnTrgtDuplListVO.size()); + modelAndView.addObject("result", "success"); + }catch(Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", "fail"); + } + + + return modelAndView; + + } + + @RequestMapping("/kccadr/oprtn/prevent/popup/duplChkTable.do") + public String duplChkTable( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + //현재 등록자 정보 + CmdTrgtMngVO cndtnTrgtInfo = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + //cndtnTrgtInfo = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfo); + + + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + + } + + //검색을 위한 암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + + + //병합대상자 검색 + cndtnTrgtInfoMngVO.setEduStateCd(""); + cndtnTrgtInfoMngVO.setCmdTrgtInfoOrd("중복확인"); + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + model.addAttribute("cndtnTrgtInfo", cndtnTrgtInfo); + + + + + return "/oprtn/prevent/duplChkTable"; + } + + // 사건번호 + // 형식 : - 예시로 A-서울중앙-100-23-1 경우 + // A (성인/미성년 구분), 서울중앙, 100, 23, 1 + // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 + private String getReqNmbr(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + + /* + * step1.관할청 코드 자르기 + * STEP2.저장용 의뢰번호 최대값 찾기 //A-춘천-%-24 - 동일지청의 올해 발급번호중에서 최대값을 찾아야 한다. + * STEP3.저장용 의뢰번호 만들기 //A-춘천-300-24 - 저장을 위해 선택한 관할청으로 저장용 값을 만든다. + */ + //현재 선택한 검찰청의 지검 코드 가져오기 + //CndtnTrgtMngVO vcndtnTrgtInfoMngVO = cndtnTrgtInfoMngService.selectDetailReqNmbr(cndtnTrgtInfoMngVO); + //step1.관할청 코드 자르기 + System.out.println("cndtnTrgtInfoMngVO.getCmptntAthrt()"); + System.out.println(cndtnTrgtInfoMngVO); + System.out.println(cndtnTrgtInfoMngVO.getCmptntAthrt()); + String s_athrt = cndtnTrgtInfoMngVO.getCmptntAthrt(); + String [] a_athrt = s_athrt.split("-"); //광주-600, 광주-601 + + //STEP2.저장용 의뢰번호 최대값 찾기 + ////System.out.println("cndtnTrgtInfoMngVO.getDBirth()"); + //System.out.println(cndtnTrgtInfoMngVO.getDBirth()); + //성인 미성년 구분 + String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getDBirth()); //A or Y + //검색용 의뢰번호 만들기 + String reqNmbrTemp_4_max = adultWhether+"-"+a_athrt[0] +"-%-"+DateUtil.getStringToLocalDateYear()+"-"; //A-춘천-%-24- + + + //int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%"); + int cnt = cmdTrgtInfoMngService.findCntreqNmber(reqNmbrTemp_4_max); + System.out.println(cnt); + System.out.println(cnt+1); + + + //STEP3.저장용 의뢰번호 만들기 + String reqNmbr_4_ret = adultWhether+"-"+s_athrt +"-"+DateUtil.getStringToLocalDateYear(); //A-춘천-%-24 + return reqNmbr_4_ret+"-"+(cnt+1); + + } + + /** + * @methodName : getIsAdultInKorea + * @author : 이호영 + * @date : 2023.11.07 + * @description : 성인이면 A, 미성년이면 Y + * @param birthDateString + * @return + */ + public static String getIsAdultInKorea(String birthDateString) { + String returnData = "Y"; + // 생년월일 포맷 정의 (예시: "yyyy-MM-dd") + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + + // 문자열로부터 LocalDate 객체 생성 + LocalDate birthDate = LocalDate.parse(birthDateString, formatter); + + // 현재 날짜 얻기 + LocalDate now = LocalDate.now(); + + // 생년월일과 현재 날짜 사이의 기간 계산 + Period period = Period.between(birthDate, now); + System.out.println("period.getYears() : "+ period.getYears()); + if(period.getYears() >= 19) { + returnData="A"; + } + // 만 나이가 19세 이상인지 확인 + return returnData; + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtMdfyAjax.do") + public ModelAndView trgtMdfyAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + //step2.첨부파일 체크 후 저장 하기 + String s_scholSealAtchFileId = ""; + s_scholSealAtchFileId = cndtnTrgtInfoMngVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_scholSealAtchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_scholSealAtchFileId = ""; + } + + + //step3.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //기존 파일 존재 여부에 따라서 insert or update 처리 + if ("".equals(s_scholSealAtchFileId)) { + //atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); + }else { + //atchFileId = this.fileValCheckNdbUpdate(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit, atchFileId); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + , s_scholSealAtchFileId + ); //EXT, MB size and ea + } + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + + + + + cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + + //암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + //수정 + cmdTrgtInfoMngService.update(cndtnTrgtInfoMngVO); + + try { + //첨부파일 이름 변경하기 + FileVO fileCheck = new FileVO(); + fileCheck.setAtchFileId(s_scholSealAtchFileId); + result = fileService.selectFileInfs(fileCheck); + + for(int i=0; i < result.size(); i++) { + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + String orignlFileNm = cndtnTrgtInfoMngVO.getTrgtNm() + "_"+cndtnTrgtInfoMngVO.getdBirth()+"_"+cndtnTrgtInfoMngVO.getCmptntAthrtNm(); + orignlFileNm = orignlFileNm+"_"+(i+1); + orignlFileNm = orignlFileNm +"."+ result.get(i).getFileExtsn(); + result.get(i).setOrignlFileNm(orignlFileNm); + fileService.updateFileName(result.get(i)); + } + }catch(Exception ex){ + System.out.println("error"); + } + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + /** + * 대상자목록 + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtDetail.do") + public String trgtDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + + //병합대상자 검색 + //model = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + /* + List cndtnTrgtInfoMngVOList = new ArrayList(); + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getDBirth())) + { + cndtnTrgtInfoMngVO.setFirstIndex(0); + cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); +// String selectCondition = "AND PRCS_APLCT_PRD_ORD_CMPLT is not null "; +// cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } + */ + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + System.out.println("=========================================="); //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + //병합 대상자 리스트 + /* + List cndtnTrgtInfoMergeVOList = new ArrayList(); + { + cndtnTrgtInfoMngVO.setTrgtNm(""); + + cndtnTrgtInfoMngVO.setFirstIndex(0); + cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + cndtnTrgtInfoMngVO.setSearchQuery(" AND a.prcs_aplct_prd_ord_cmplt='"+cndtnTrgtInfoMngVO.getSspnIdtmtTrgtOrd()+"' "); + cndtnTrgtInfoMergeVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + + } + */ + List cndtnTrgtInfoMergeVOList = this._getMergeList(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMergeVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMergeVOList); + model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + + + + //상위 병합 대상자 + List cndtnTrgtInfoTopMngVOList = this._getTopMergeList(cndtnTrgtInfoMngVO); + System.out.println("=========================================="); //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoTopMngVOList); + model.addAttribute("listTopMerge", cndtnTrgtInfoTopMngVOList); + + + //이력정보 + List cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "oprtn/prevent/trgtDetail"; + } + + /** + * 대상자목록 + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtMngDetail.do") + public String trgtMngDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + + //병합대상자 검색 + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = this._getMergeList(cndtnTrgtInfoMngVO); + //복호화 + cndtnTrgtInfoMergeVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMergeVOList); + model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + + + //상위 병합 대상자 + List cndtnTrgtInfoTopMngVOList = this._getTopMergeList(cndtnTrgtInfoMngVO); + System.out.println("=========================================="); //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoTopMngVOList); + model.addAttribute("listTopMerge", cndtnTrgtInfoTopMngVOList); + + + //이력정보 + List cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "oprtn/prevent/trgtMngDetail"; + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/prevent/delUpdateAjax.do") + public ModelAndView delUpdateAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + cmdTrgtInfoMngService.updateDel(cndtnTrgtInfoMngVO); + + + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + /** + * 조건부기소유예과정 수료자 상세화면 + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtCmpltDetail.do") + public String trgtCmpltDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + + model.addAttribute("info", cndtnTrgtInfoVO); + //세부과정 목록 조회 + + + //병합대상자 검색 + /* + List cndtnTrgtInfoMngVOList = new ArrayList(); + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getDBirth())) + { + cndtnTrgtInfoMngVO.setFirstIndex(0); + cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); +// String selectCondition = "AND PRCS_APLCT_PRD_ORD_CMPLT is not null "; +// cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } + model.addAttribute("list", cndtnTrgtInfoMngVOList); + */ + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = this._getMergeList(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMergeVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMergeVOList); + + model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + + + //이력정보 + List cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "oprtn/prevent/trgtCmpltDetail"; + } + + + @RequestMapping("/kccadr/oprtn/prevent/updateTrgtDuplAjax.do") + public ModelAndView updateEduAplctAprvlCd( + @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + + try { + // 교육 신청 테이블에 신청자 상태값 update +// vEAPrcsAplctPrdInstrAsgnmService.udpateAprvlCdEduAplct(vEPrcsDetailVO); + cmdTrgtInfoMngService.updateTrgtDuplAjax(cndtnTrgtInfoMngVO); + + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + /** + * 조건부기소유예과정 수정화면 + */ + @RequestMapping("/kccadr/oprtn/prevent/trgtMdfy.do") + public String trgtMdfy( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + try { + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + // 관할청 공통코드 + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + return "oprtn/prevent/trgtMdfy"; + } + + + @RequestMapping("/kccadr/oprtn/prevent/trgtMngMdfy.do") + public String trgtMngMdfy( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + try { + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + /* + // 관할청 공통코드 + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + */ + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + + + // CODE 값을 저장할 Set (중복을 제거하기 위해 사용) + Set uniqueCodes = new HashSet<>(); + + for(CmmnDetailCode vo : CmmnDetailCodeList) { + uniqueCodes.add(vo.getCode().split("-")[0]); + } + + model.addAttribute("CmmnDetailCodeList", uniqueCodes); + + // 관할청 - 지역명 + String codeNm = cndtnTrgtInfoVO.getCmptntAthrt().split("-")[0]; + model.addAttribute("cmptntAthrtCode", codeNm); + + codeParam.setCodeNm(codeNm); + List CmmnDetailList = egovCmmUseService.selectCmmCodeDetailLikeNmOrderByCode(codeParam); + + + model.addAttribute("cmmnCodeList", CmmnDetailList); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + + return "oprtn/prevent/trgtMngMdfy"; + } + + @RequestMapping("/kccadr/oprtn/prevent/cndtnEduQnaMngList.do") + public String cndtnEduQnaMngList( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); + + //기반강화 조회 + vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + +// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){ +// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')"; +// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition); +// } + + List vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + + // 사용자 이름 디코딩 + vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm()))); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEPrcsDetailVOList); + + + return "oprtn/prevent/cndtnEduQnaMngList"; +// return "oprtn/fndthEnhanceTrn/fndthEduQnaMngList"; + } + + /** + * @methodName : cndtnEduQnaMngDetail + * @author : 이호영 + * @date : 2023.11.21 + * @description : + * @param vEPrcsDetailVO + * @param model + * @param redirectAttributes + * @param session + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/prevent/cndtnEduQnaMngDetail.do") + public String cndtnEduQnaMngDetail( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + System.out.println("vEPrcsDetailVO.getPrcsAplctPrdQnaOrd() : "+ vEPrcsDetailVO.getPrcsAplctPrdQnaOrd()); + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO); + vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm())); + + model.addAttribute("info", vEPrcsQnaDetail); + //세부과정 목록 조회 + + return "oprtn/prevent/cndtnEduQnaMngDetail"; + } + + @RequestMapping("/kccadr/oprtn/prevent/cndtnEduQnaMngUpdateAjax.do") + public ModelAndView cndtnEduQnaMngUpdateAjax( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + + //로그인 처리==================================== + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + vEPrcsDetailVO.setQnaAnswerer(loginVO.getUniqId()); //esntl_id + vEPrcsService.qnaUpdate(vEPrcsDetailVO); + + //알림 교육문의등록 + try { + iTNotiUtil.insertNotifyNew_60( + "60", + loginVO.getUniqId(), + VeConstants.NOTI_STATUS_92, + "", + vEPrcsDetailVO.getFrstRegisterId(), + "0", + "2" + ); + }catch(Exception ex) { + ex.printStackTrace(); + } + + //세부과정 지우고 다시 생성 + VEPrcsCntntVO vEPrcsCntntVO = new VEPrcsCntntVO(); + vEPrcsCntntVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd()); + modelAndView.addObject("result", "success"); + return modelAndView; + } + + @RequestMapping("/kccadr/oprtn/prevent/trgtMngExcel.do") + public ModelAndView trgtMngExcel( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + + //로그인 처리==================================== + //로그인 정보 가져오기 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject(model); + return modelAndView; + } + + //로그인 처리==================================== + + List cndtnTrgtInfoMngVOList = null; + + try { + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + paginationInfo.setRecordCountPerPage(100000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //검색 조회 + String selectCondition = ""; + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){ + String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus(); +// selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')"; + selectCondition = "AND a."+searchStatus+" LIKE '%" +cndtnTrgtInfoMngVO.getSearchKeyword() + "%'"; + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + } + + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus())) + { + cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus()); + } + + + + try { + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(CmdTrgtMngVO tmp : cndtnTrgtInfoMngVOList) { + //의뢰읠 + tmp.setReqPnttm(tmp.getReqPnttm().substring(0, 10)); + //사건번호 + tmp.setVntYear(tmp.getVntYear()+"형제"+tmp.getVntNmbr()); + + //관할청 + /* + if(StringUtil.isNotEmpty(tmp.getCmptntAthrt())) { + vo.setCodeId("VEA008"); + vo.setCode(tmp.getCmptntAthrt()); + CmmnDetailCode cmmnDetailCode= egovCmmUseService.selectCmmCodeDetailValue(vo); + + if (cmmnDetailCode!=null) tmp.setCmptntAthrt(StringUtil.escapeXml(cmmnDetailCode.getCodeNm())); + } + */ + + //생년월일 + if(StringUtil.isNotEmpty(tmp.getdBirth())) { + tmp.setDBirth(tmp.getdBirth()); + } + + //성별 + /* + if(StringUtil.isNotEmpty(tmp.getSex())) { + vo.setCodeId("COM014"); + vo.setCode(tmp.getSex()); + CmmnDetailCode cmmnDetailCodeSex= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeSex!=null) tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm()))); + } + */ + //의뢰상태 + /* + if(StringUtil.isNotEmpty(tmp.getReqStateCd())) { + if (tmp.getPrcsAplctPrdOrdCmplt()==null) { + vo.setCodeId("VEA005"); + vo.setCode(tmp.getReqStateCd()); + CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeReqState!=null) tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm()))); + }else { + tmp.setReqStateCd("병합처리"); + } + } + */ + //교육상태 + /* + if(StringUtil.isNotEmpty(tmp.getEduStateCd())) { + vo.setCodeId("VEA002"); + vo.setCode(tmp.getEduStateCd()); + CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeEduState!=null) tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm()))); + } + */ + //주소 + if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) { + tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail()); + } + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + int[] width = { + 4000, 5000, 5000, 5000, 3000 + , 3000, 5000, 4000, 5000, 13000 + + , 3500 + }; // 너비 + String[] header = { + "의뢰일", "사건번호", "관할청", "생년월일", "성명", "연락처" + , "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소" + , "검사명" + }; // 헤더에 들어갈 이름 + String[] order = { + "ReqPnttm", "VntYear", "CmptntAthrtNm", "DBirth", "TrgtNm", "Clphone" + , "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr" + + , "PrsctrNm" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + + excelDown( + cndtnTrgtInfoMngVOList, + "대상자 목록", + width, + header, + order, + model + ); + + + + + + + //3.pageing step3 +// paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); +// +// model.addAttribute("paginationInfo", paginationInfo); +// +// +// //대상 리스트, 페이징 정보 전달 +// model.addAttribute("list", cndtnTrgtInfoMngVOList); +// +// ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); +// codeParam.setCodeId("VEA008"); +// List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); +// model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + modelAndView.addObject(model); + + return modelAndView; + } + + + //수료자 관리 엑셀 다운로드 + @RequestMapping("/kccadr/oprtn/prevent/trgtCmpltExcel.do") + public ModelAndView trgtCmpltExcel( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + + //로그인 처리==================================== + //로그인 정보 가져오기 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject(model); + return modelAndView; + } + + //로그인 처리==================================== + + List cndtnTrgtInfoMngVOList = null; + + try { + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + paginationInfo.setRecordCountPerPage(100000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + // 이수 조건 추가 + cndtnTrgtInfoMngVO.setEduStateCd("20"); + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(CmdTrgtMngVO tmp : cndtnTrgtInfoMngVOList) { + //의뢰읠 + tmp.setReqPnttm(tmp.getReqPnttm().substring(0, 10)); + //이름 복호화 + tmp.setTrgtNm(egovCryptoUtil.decrypt(tmp.getTrgtNm())); + //생년월일 - VO에 dbirth와 Dbirth 둘다 있음 + if(StringUtil.isNotEmpty(tmp.getdBirth())) { + tmp.setDBirth(tmp.getdBirth()); + } + //성별 + /* + if(StringUtil.isNotEmpty(tmp.getSex())) { + vo.setCodeId("COM014"); + vo.setCode(tmp.getSex()); + CmmnDetailCode cmmnDetailCodeSex= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeSex!=null) tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm()))); + } + */ + //의뢰상태 + /* + if(StringUtil.isNotEmpty(tmp.getReqStateCd())) { + if (tmp.getPrcsAplctPrdOrdCmplt()==null) { + vo.setCodeId("VEA005"); + vo.setCode(tmp.getReqStateCd()); + CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeReqState!=null) tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm()))); + }else { + tmp.setReqStateCd("병합처리"); + } + } + */ + //교육상태 + /* + if(StringUtil.isNotEmpty(tmp.getEduStateCd())) { + vo.setCodeId("VEA002"); + vo.setCode(tmp.getEduStateCd()); + CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeEduState!=null) tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm()))); + } + */ + //주소 + if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) { + tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail()); + } + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + int[] width = { + 4000, 5000, 5000, 5000, 3000 + , 3000, 5000, 4000, 5000, 13000 + + , 3500 + }; // 너비 + String[] header = { + "의뢰일", "사건번호", "관할청", "생년월일", "성명" + , "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소" + , "검사명" + }; // 헤더에 들어갈 이름 + String[] order = { + "ReqPnttm", "VntNmbr", "CmptntAthrtNm", "DBirth", "TrgtNm" + , "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr" + , "PrsctrNm" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + + excelDown( + cndtnTrgtInfoMngVOList, + "수료자 목록", + width, + header, + order, + model + ); + + + + + + + //3.pageing step3 +// paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); +// +// model.addAttribute("paginationInfo", paginationInfo); +// +// +// //대상 리스트, 페이징 정보 전달 +// model.addAttribute("list", cndtnTrgtInfoMngVOList); +// +// ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); +// codeParam.setCodeId("VEA008"); +// List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); +// model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + modelAndView.addObject(model); + + return modelAndView; + } + + //지청 담당자 excel 다운로드 + @RequestMapping("/kccadr/oprtn/prevent/trgtExcel.do") + public ModelAndView trgtExcel( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + + //로그인 처리==================================== + //로그인 정보 가져오기 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject(model); + return modelAndView; + } + + //로그인 처리==================================== + + List cndtnTrgtInfoMngVOList = null; + + try { + //현재사용자의 검찰청 코드를 검색조건에 넣는다. + String userWork = this.getUserWork(request); + cndtnTrgtInfoMngVO.setSearchCondition(userWork); + + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + paginationInfo.setRecordCountPerPage(100000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //검색 조회 + String selectCondition = ""; + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){ + String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus(); +// selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')"; + selectCondition = "AND a."+searchStatus+" LIKE '%" +cndtnTrgtInfoMngVO.getSearchKeyword() + "%'"; + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + } + + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus())) + { + cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus()); + } + + //ㅁ + + try { + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(CmdTrgtMngVO tmp : cndtnTrgtInfoMngVOList) { + //의뢰읠 + tmp.setReqPnttm(tmp.getReqPnttm().substring(0, 10)); + //사건번호 + tmp.setVntYear(tmp.getVntYear()+"형제"+tmp.getVntNmbr()); + //관할청 + /* + if(StringUtil.isNotEmpty(tmp.getCmptntAthrt())) { + vo.setCodeId("VEA008"); + vo.setCode(tmp.getCmptntAthrt()); + CmmnDetailCode cmmnDetailCode= egovCmmUseService.selectCmmCodeDetailValue(vo); + + if (cmmnDetailCode!=null) tmp.setCmptntAthrt(StringUtil.escapeXml(cmmnDetailCode.getCodeNm())); + } + */ + //생년월일 + if(StringUtil.isNotEmpty(tmp.getdBirth())) { + tmp.setDBirth(tmp.getdBirth()); + } + //성별 + /* + if(StringUtil.isNotEmpty(tmp.getSex())) { + vo.setCodeId("COM014"); + vo.setCode(tmp.getSex()); + CmmnDetailCode cmmnDetailCodeSex= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeSex!=null) tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm()))); + } + */ + //의뢰상태 + /* + if(StringUtil.isNotEmpty(tmp.getReqStateCd())) { + if (tmp.getPrcsAplctPrdOrdCmplt()==null) { + vo.setCodeId("VEA005"); + vo.setCode(tmp.getReqStateCd()); + CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeReqState!=null) tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm()))); + }else { + tmp.setReqStateCd("병합처리"); + } + } + */ + //교육상태 + /* + if(StringUtil.isNotEmpty(tmp.getEduStateCd())) { + vo.setCodeId("VEA002"); + vo.setCode(tmp.getEduStateCd()); + CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeEduState!=null) tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm()))); + } + */ + //주소 + if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) { + tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail()); + } + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + int[] width = { + 4000, 5000, 5000, 5000, 3000, 5000 + , 3000, 5000, 4000, 5000, 13000 + + , 3500, 13000 + }; // 너비 + String[] header = { + "의뢰일", "사건번호", "관할청", "생년월일", "성명", "연락처" + , "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소" + , "검사명", "비공개메모" + }; // 헤더에 들어갈 이름 + String[] order = { + "ReqPnttm", "VntYear", "CmptntAthrtNm", "DBirth", "TrgtNm", "Clphone" + , "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr" + + , "PrsctrNm", "Rmrks" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + + excelDown( + cndtnTrgtInfoMngVOList, + "대상자 목록", + width, + header, + order, + model + ); + + modelAndView.addObject(model); + + return modelAndView; + } + + /** + * 특이사항 등록/수정 처리 + */ + @RequestMapping("/oprtn/prevent/updateRmrksAjax.do") + public ModelAndView updateRmrksAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + + int successCnt = 0; + try { + + cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + cmdTrgtInfoMngService.memoUpdate(cndtnTrgtInfoMngVO); + + successCnt = successCnt+1; + + } catch (Exception ex) { + ex.printStackTrace(); + } + if (successCnt == 0) { + modelAndView.addObject("result", "fail"); + } else { + modelAndView.addObject("result", "success"); + } + + return modelAndView; + } + + @RequestMapping("/oprtn/prevent/popup/trgtSendSmsPopup.do") + public String eduDocReqAlertPopup( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , ModelMap model , HttpServletRequest request ) throws Exception { + + VEAStngVO vEAStngVO = new VEAStngVO(); + vEAStngVO.setStngCd("SND01"); + vEAStngVO = cmdTrgtInfoMngService.selectSMSSndString(vEAStngVO); + + model.addAttribute("vEAStngVO", vEAStngVO); + return "oprtn/prevent/popup/trgtSendSmsPopup"; + } + + @RequestMapping("/oprtn/prevent/popup/smsStringUpdateAjax.do") + public ModelAndView smsStringUpdateAjax( @ModelAttribute("vEEduAplctVO") VEAStngVO vEAStngVO , ModelMap model , HttpServletRequest request ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + //로그인 처리==================================== + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + + int successCnt = 0; + try { + + vEAStngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + vEAStngVO.setCn(vEAStngVO.getSmsCn()); + cmdTrgtInfoMngService.updateSMSSndString(vEAStngVO); + modelAndView.addObject("result", "success"); + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", "fail"); + } + + return modelAndView; + } + + + //교육신청 확정자 엑셀 다운로드 + @RequestMapping("/kccadr/oprtn/prevent/trgtEduAplctCnfrmExcel.do") + public ModelAndView trgtEduAplctCnfrmExcel( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + + //로그인 처리==================================== + //로그인 정보 가져오기 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject(model); + return modelAndView; + } + + //로그인 처리==================================== + + List vEPrcsDetailVOList = null; + + try { + + //과정 신청자 정보 가져오기 + //해당 과정을 제출한 사용자 정보를 가져온다. + VEEduAplctVO paramVO = new VEEduAplctVO(); + paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + paramVO.setSbmtYn("Y"); + + // 검색 - 날짜 + paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt()); + paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt()); + // 검색 - 검색어 + paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus()); + paramVO.setSearchSelStatus(vEPrcsDetailVO.getSearchSelStatus()); + + if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) { + + //String searchQuery = "AND vadi.APLCT_STATE_CD = "+vEPrcsDetailVO.getSearchStatus(); + String searchQuery = "AND vsit.edu_state_cd = "+vEPrcsDetailVO.getSearchStatus(); + paramVO.setSearchQuery(searchQuery); + } + + + paramVO.setSiteId("60"); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소 + vEPrcsDetailVOList = vEEduMIXService.selectTrgtList4Cmplt(paramVO); + vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList); + + + // + + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(VEEduAplctVO tmp : vEPrcsDetailVOList) { + //교육상태 + if(StringUtil.isNotEmpty(tmp.getEduStateCd())) { + vo.setCodeId("VEA002"); + vo.setCode(tmp.getEduStateCd()); + CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo); + if (cmmnDetailCodeEduState!=null) tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm()))); + if (cmmnDetailCodeEduState!=null) tmp.setAplctStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm()))); + } + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + + /* + int[] width = { + 4000, 5000, 5000, 5000, 3000 + }; // 너비 + String[] header = { + "신청자", "주민번호앞자리", "이메일", "연락처", "교육이수여부" + }; // 헤더에 들어갈 이름 + String[] order = { + "TrgtNm", "DBirth", "Email", "Phone", "EduStateCd" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + */ + + List excelVOList = new ArrayList<>(); + + // util에서 vo의 모든 변수를 순회하기 때문에 느림 + // 필요한 변수들만 vo로 선언 + vEPrcsDetailVOList.forEach( vo -> { + ExcelVO excelVO = new ExcelVO(); + + excelVO.setRowNoStr(Integer.toString(vo.getRowNo())); + excelVO.setVntNmbr(vo.getVntYear() +"형제"+ vo.getVntNmbr()); + excelVO.setCmptntAthrt(vo.getCmptntAthrt()); + excelVO.setTitle(vo.getTitle()); + excelVO.setPrcsNm(vo.getPrcsNm()); + excelVO.setUserNm(vo.getUserNm()); + excelVO.setEmail(vo.getEmail()); + excelVO.setPhone(vo.getPhone()); + excelVO.setSbmtPnttm(vo.getSbmtPnttm()); + excelVO.setTrgtSex(vo.getTrgtSex()); + excelVO.setDBirth(vo.getDBirth()); + excelVO.setTrgtNm(vo.getTrgtNm()); + excelVO.setPrsctrNm(vo.getPrsctrNm()); + excelVO.setReqNmbr(vo.getReqNmbr()); + + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + /* + codeParam.setCodeId("VE0003"); + codeParam.setCode(vo.getAprvlCd()); + excelVO.setAprvlCd(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam)); + */ + excelVO.setAprvlCd(vo.getAplctStateCd()); + + //ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + codeParam.setCode(vo.getCmptntAthrt()); + excelVO.setCmptntAthrt(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam)); + + System.out.println(excelVO.getPrcsNm()); + + excelVOList.add(excelVO); + }); + + + + + + List excelData = new ArrayList<>(); + excelData.addAll(excelVOList); + + int[] width = { + 2000, 4000, 4000, 4000, 4000 + , 4000, 4000, 4000 + , 4000, 4000, 4000, 4000, 4000 + }; // 너비 + + String[] header = { + "순번", "신청자", "이메일", "핸드폰", "생년월일" + , "성별", "신청일", "상태" + , "관할청", "사건번호", "담당검사", "교육명", "의뢰번호" + }; + + String[] order = { + "RowNoStr", "TrgtNm", "Email", "Phone", "DBirth" + , "TrgtSex", "SbmtPnttm", "AprvlCd" + , "CmptntAthrt", "VntNmbr", "PrsctrNm", "Title", "ReqNmbr" + }; + + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, "교육확정상세-교육신청자"); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", "교육확정상세-교육신청자"); + /* + excelDown( + vEPrcsDetailVOList, + "교육확정상세-교육신청자", + width, + header, + order, + model + ); + */ + + modelAndView.addObject(model); + + return modelAndView; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // private function + // + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEPrcsDetailVO p_vEPrcsDetailVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit()); + paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEPrcsDetailVO setPagingStep2( + VEPrcsDetailVO p_vEPrcsDetailVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord"); + p_vEPrcsDetailVO.setSearchSortOrd("desc"); + } + + return p_vEPrcsDetailVO; + } + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEPrcsDetailVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + //CndtnTrgtInfoMngVO + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setCndtnPagingStep1( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_cndtnTrgtInfoMngVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_cndtnTrgtInfoMngVO.getPageUnit()); + paginationInfo.setPageSize(p_cndtnTrgtInfoMngVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private CmdTrgtMngVO setCndtnPagingStep2( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_cndtnTrgtInfoMngVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_cndtnTrgtInfoMngVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_cndtnTrgtInfoMngVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_cndtnTrgtInfoMngVO.setSearchSortCnd("prcs_ord"); + p_cndtnTrgtInfoMngVO.setSearchSortOrd("desc"); + } + + return p_cndtnTrgtInfoMngVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setCndtnPagingStep3( + List p_cndtnTrgtInfoMngVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_cndtnTrgtInfoMngVOList.size() > 0) totCnt = p_cndtnTrgtInfoMngVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + + @SuppressWarnings("unused") + private void excelDown( + List list, + String title, + int[] width, + String[] header, + String[] order, + ModelMap model + ){ + // 호출 + SXSSFWorkbook workbook; + try { + workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + //병합 대상자 검색 + private List _getMergeSearchList( + ModelMap p_model + , CmdTrgtMngVO p_cndtnTrgtInfoMngVO + ) throws Exception { + //병합대상자 검색 + List cndtnTrgtInfoMngVOList = new ArrayList(); + if(StringUtils.isNotEmpty(p_cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(p_cndtnTrgtInfoMngVO.getDBirth())) + { + p_cndtnTrgtInfoMngVO.setFirstIndex(0); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + + //병합 대상자 검색 조건 추가 + String selectCondition = " AND a.prcs_aplct_prd_ord_cmplt IS NULL " //이미 병합 안된 사람 +// + " AND 0>=(SELECT count(*) FROM vea_sspn_idmt_trgt WHERE prcs_aplct_prd_ord_cmplt=a.sspn_idtmt_trgt_ord) " //소속 병합이 없어야 함 + + " AND a.cmd_trgt_info_ord!='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"' "; //본인 제외 + p_cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); + } + + return cndtnTrgtInfoMngVOList; + } + + //병합 대상자 + private List _getMergeList( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + )throws Exception{ + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = new ArrayList(); + { + p_cndtnTrgtInfoMngVO.setTrgtNm(""); + + p_cndtnTrgtInfoMngVO.setFirstIndex(0); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + p_cndtnTrgtInfoMngVO.setSearchQuery(" AND a.prcs_aplct_prd_ord_cmplt='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"' "); + cndtnTrgtInfoMergeVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); + + } + + return cndtnTrgtInfoMergeVOList; + //model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + } + + //상위 병합 대상자 + private List _getTopMergeList( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + )throws Exception{ + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = new ArrayList(); + { + p_cndtnTrgtInfoMngVO.setTrgtNm(""); + + p_cndtnTrgtInfoMngVO.setFirstIndex(0); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + p_cndtnTrgtInfoMngVO.setSearchQuery(" AND a.cmd_trgt_info_ord =(SELECT prcs_aplct_prd_ord_cmplt FROM vea_cmd_trgt_info WHERE cmd_trgt_info_ord='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"') "); + cndtnTrgtInfoMergeVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); + + } + + return cndtnTrgtInfoMergeVOList; + //model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + } +} diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduQnaMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduQnaMngDetail.jsp new file mode 100644 index 00000000..4b77e142 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduQnaMngDetail.jsp @@ -0,0 +1,246 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" + pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : fndthEduPrcsMngDetail.jsp + * @Description : 기반강화연수 상세화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + +
+
+ + + + +
+
+ + +
+

교육문의상세

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 교육문의상세
  • +
+
+ + +
+ +
+

교육문의상세

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
질문자ID + +
질문자 이름 + +
질문내용 + +
답변상태 + + + 미완료 + + + 완료 + + +
답변일시 + + + - + + + + + +
+
+ + +
+

답변

+
+
+ + + + + + + + + + +
+

내용

+
+
+ + +
+
+
+ + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduQnaMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduQnaMngList.jsp new file mode 100644 index 00000000..6c85bd54 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduQnaMngList.jsp @@ -0,0 +1,281 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + +<% + /** + * @Class Name : fndthEduQnaMngList.jsp + * @Description : 기반강화연수 과정관리 목록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2023.11.17 이호영 최초 생성 + * @author 조용준 + * @since 2021.12.14 + * @version 1.0 + * @see + * + */ +%> + + + + + + 교육문의 + + +
+ + +
+ + + " /> + " /> + + + +
+
+ + +
+

교육문의목록

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 교육문의목록
  • +
+
+ + +
+
+

교육 문의 관리

+
+ +
+
+
+ +<%-- +<%-- selectedValue="${vEPrcsDetailVO.searchStatus }" defaultValue="" --%> +<%-- defaultText="전체" --%> +<%-- /> --%> +
+ +
+ ~ +
+ +
+ + + +
+
+
+ +
+

건의 접수가 검색되었습니다.

+
+ + <%----%> +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
질문자ID질문자이름질문내용답변상태질문일시답변일시
+ + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + + + + 미완료 + + + 완료 + + + + + + + + - + + + + + +
+
+ + + +
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + +
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduQnaMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduQnaMngDetail.jsp new file mode 100644 index 00000000..3a1a3af4 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduQnaMngDetail.jsp @@ -0,0 +1,246 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" + pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : fndthEduPrcsMngDetail.jsp + * @Description : 기반강화연수 상세화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + +
+
+ + + + +
+
+ + +
+

교육문의상세

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 교육문의상세
  • +
+
+ + +
+ +
+

교육문의상세

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
질문자ID + +
질문자 이름 + +
질문내용 + +
답변상태 + + + 미완료 + + + 완료 + + +
답변일시 + + + - + + + + + +
+
+ + +
+

답변

+
+
+ + + + + + + + + + +
+

내용

+
+
+ + +
+
+
+ + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduQnaMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduQnaMngList.jsp new file mode 100644 index 00000000..6e26711a --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduQnaMngList.jsp @@ -0,0 +1,281 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + +<% + /** + * @Class Name : fndthEduQnaMngList.jsp + * @Description : 기반강화연수 과정관리 목록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2023.11.17 이호영 최초 생성 + * @author 조용준 + * @since 2021.12.14 + * @version 1.0 + * @see + * + */ +%> + + + + + + 교육문의 + + +
+ + +
+ + + " /> + " /> + + + +
+
+ + +
+

교육문의목록

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 교육문의목록
  • +
+
+ + +
+
+

교육 문의 관리

+
+ +
+
+
+ +<%-- +<%-- selectedValue="${vEPrcsDetailVO.searchStatus }" defaultValue="" --%> +<%-- defaultText="전체" --%> +<%-- /> --%> +
+ +
+ ~ +
+ +
+ + + +
+
+
+ +
+

건의 접수가 검색되었습니다.

+
+ + <%----%> +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
질문자ID질문자이름질문내용답변상태질문일시답변일시
+ + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + + + + 미완료 + + + 완료 + + + + + + + + - + + + + + +
+
+ + + +
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + +
+ + +