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