diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java
index aaa58d3f..0e32b4ff 100644
--- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java
+++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java
@@ -1,1259 +1,1264 @@
-package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.web;
-
-import java.time.LocalDate;
-import java.time.Period;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.apache.commons.collections.map.HashedMap;
-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.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.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
-import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
-
-/**
- * 기반강화연수(관리자)
- * 기반강화연수에 관한 controller 클래스를 정의한다.
- * @author 조용준
- * @since 2023.07.12
- * @version 1.0
- * @see
- *
- *
- * << 개정이력(Modification Information) >>
- *
- * 수정일 수정자 수정내용
- * ------- -------- ---------------------------
- * 2021.12.16 조용준 최초 생성
- *
- *
- */
-
-@Controller
-//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn")
-public class CndtnTrgtMngController {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(CndtnTrgtMngController.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="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 = "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/cndtnSspnIdtmt/trgtList.do")
- public String trgtList(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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);
-
- //검색 조회
- if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
-
-
- String selectCondition = "";
- String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
-
- selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
- cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
-
- }
-
-// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- List cndtnTrgtInfoMngVOList = null;
- try {
-
- cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- } catch (Exception e) {
- e.printStackTrace();
- // TODO: handle exception
- }
-
- //3.pageing step3
- paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
-
- model.addAttribute("paginationInfo", paginationInfo);
-
-
- //대상 리스트, 페이징 정보 전달
- model.addAttribute("list", cndtnTrgtInfoMngVOList);
-
-
-
-
- return "oprtn/cndtnSspnIdtmt/trgtList";
- }
-
- /**
- * @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/cndtnSspnIdtmt/trgtMngList.do")
- public String trgtMngList(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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);
- }
-
- System.out.println("cndtnTrgtInfoMngVO.getSearchSelStatus() : "+ cndtnTrgtInfoMngVO.getSearchSelStatus());
-
- if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus()))
- {
- cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus());
- }
-
- List cndtnTrgtInfoMngVOList = null;
-
- try {
-
- cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- } catch (Exception e) {
- e.printStackTrace();
- // TODO: handle exception
- }
-
- //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);
-
- return "oprtn/cndtnSspnIdtmt/trgtMngList";
- }
-
- /**
- * @methodName : trgtCmpltList
- * @author : 이호영
- * @date : 2023.10.20
- * @description : 대상자 이수 목록
- * @param cndtnTrgtInfoMngVO
- * @param model
- * @return
- * @throws Exception
- */
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltList.do")
- public String trgtCmpltList(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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);
-
- //검색 조회
- if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
-
-
- String selectCondition = "";
- String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
-
- selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
- cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
-
- }
-
-// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- List cndtnTrgtInfoMngVOList = null;
- try {
- // 이수 조건 추가
- cndtnTrgtInfoMngVO.setEduStateCd("20");
- cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- } catch (Exception e) {
- e.printStackTrace();
- // TODO: handle exception
- }
-
- //3.pageing step3
- paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
-
- model.addAttribute("paginationInfo", paginationInfo);
-
-
- //대상 리스트, 페이징 정보 전달
- model.addAttribute("list", cndtnTrgtInfoMngVOList);
-
- return "oprtn/cndtnSspnIdtmt/trgtCmpltList";
- }
-
- /**
- * 조건부기소유예대상자 등록 화면
- */
- //@RequestMapping("eduPrcsMngReg.do")
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtReg.do")
- public String cndtnEduPrcsMngReg(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
- , ModelMap model
- , HttpServletRequest request
- ) throws Exception {
-
- //로그인 처리====================================
- //로그인 정보 가져오기
-
- String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
- if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
-
- //로그인 처리====================================
-
- String userWork = this.getUserWork(request);
- model.addAttribute("userWork", userWork);
-
-
-
- ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
- codeParam.setCodeId("VEA008");
- List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam);
- model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList);
-
- return "oprtn/cndtnSspnIdtmt/trgtReg";
- }
-
- /**
- * 조건부기소유예과정 등록
- */
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtRegAjax.do")
- public ModelAndView cndtnEduPrcsMngRegAjax(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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, 검찰청명, 검찰청 고유번호, 연도, 접수번호
-
- cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO));
-
- cndtnTrgtInfoMngVO.setSspnIdtmtTrgtOrd(trgtOrdService.getNextStringId());
- cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
- cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
- cndtnTrgtInfoMngService.insert(cndtnTrgtInfoMngVO);
-
-
-
-
- modelAndView.addObject("result", "success");
-
- return modelAndView;
-
- }
-
- // 사건번호
- // 형식 : - 예시로 A-서울중앙-100-23-1 경우
- // A (성인/미성년 구분), 서울중앙, 100, 23, 1
- // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
- private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
-
- //성인 미성년 구분
- String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getDBirth());
- String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear();
-
- int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%");
- System.out.println(cnt);
- System.out.println(cnt+1);
- return reqNmbrTemp+"-"+(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/cndtnSspnIdtmt/trgtMdfyAjax.do")
- public ModelAndView trgtMdfyAjax(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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
- cndtnTrgtInfoMngService.update(cndtnTrgtInfoMngVO);
-
-
-
-
- modelAndView.addObject("result", "success");
-
- return modelAndView;
-
- }
- /**
- * 대상자목록
- */
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtDetail.do")
- public String trgtDetail(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
- , ModelMap model
- , HttpServletRequest request
- ) throws Exception {
-
- //로그인 처리====================================
- //로그인 정보 가져오기
-
- LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
- SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
-
- //로그인 처리====================================
-
- //과정 조회
- CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
- 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());
-
- return "oprtn/cndtnSspnIdtmt/trgtDetail";
- }
-
- /**
- * 조건부기소유예과정 등록
- */
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/delUpdateAjax.do")
- public ModelAndView delUpdateAjax(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
- , ModelMap model
- , HttpServletRequest request
- ) throws Exception {
-
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName("jsonView");
-
- //로그인 처리====================================
- //로그인 정보 가져오기
- cndtnTrgtInfoMngService.updateDel(cndtnTrgtInfoMngVO);
-
-
-
- modelAndView.addObject("result", "success");
-
- return modelAndView;
-
- }
-
- /**
- * 조건부기소유예과정 수료자 상세화면
- */
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltDetail.do")
- public String trgtCmpltDetail(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
- , ModelMap model
- , HttpServletRequest request
- ) throws Exception {
-
- //로그인 처리====================================
- //로그인 정보 가져오기
-
- LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
- SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
-
- //로그인 처리====================================
-
- //과정 조회
- CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
- 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 = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- }
- model.addAttribute("list", cndtnTrgtInfoMngVOList);
-
-
- return "oprtn/cndtnSspnIdtmt/trgtCmpltDetail";
- }
-
-
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateTrgtDuplAjax.do")
- public ModelAndView updateEduAplctAprvlCd(
- @ModelAttribute("vEPrcsDetailVO") CndtnTrgtMngVO 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);
- cndtnTrgtInfoMngService.updateTrgtDuplAjax(cndtnTrgtInfoMngVO);
-
- modelAndView.addObject("result", "success");
-
- } catch (Exception ex) {
- ex.printStackTrace();
- modelAndView.addObject("result", "");
- }
-
-
- return modelAndView;
-
- }
-
- /**
- * 조건부기소유예과정 수정화면
- */
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMdfy.do")
- public String trgtMdfy(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
- , ModelMap model
- , HttpServletRequest request
- ) throws Exception {
-
- //로그인 처리====================================
- //로그인 정보 가져오기
-
- LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
- SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
-
- //로그인 처리====================================
-
- //과정 조회
- CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
- 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());
-
- return "oprtn/cndtnSspnIdtmt/trgtMdfy";
- }
-
-
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngMdfy.do")
- public String trgtMngMdfy(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
- , ModelMap model
- , HttpServletRequest request
- ) throws Exception {
-
- //로그인 처리====================================
- //로그인 정보 가져오기
-
- LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
- SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
-
- //로그인 처리====================================
-
- //과정 조회
- CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
- 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);
-
- return "oprtn/cndtnSspnIdtmt/trgtMngMdfy";
- }
-
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/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/cndtnSspnIdtmt/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/cndtnSspnIdtmt/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/cndtnSspnIdtmt/cndtnEduQnaMngDetail";
- }
-
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/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);
-
-
- //세부과정 지우고 다시 생성
- VEPrcsCntntVO vEPrcsCntntVO = new VEPrcsCntntVO();
- vEPrcsCntntVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd());
- modelAndView.addObject("result", "success");
- return modelAndView;
- }
-
-
- @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngExcel.do")
- public ModelAndView trgtMngExcel(
- @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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;
- }
-
- //로그인 처리====================================
-
- //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(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus()))
- {
- cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus());
- }
-
- List cndtnTrgtInfoMngVOList = null;
-
- try {
-
- cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
- } catch (Exception e) {
- e.printStackTrace();
- // TODO: handle exception
- }
-
- ComDefaultCodeVO vo = new ComDefaultCodeVO();
-
- for(CndtnTrgtMngVO 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);
- 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);
- tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm())));
- }
- //의뢰상태
- if(StringUtil.isNotEmpty(tmp.getReqStateCd())) {
- vo.setCodeId("VEA005");
- vo.setCode(tmp.getReqStateCd());
- CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo);
- tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm())));
- }
- //교육상태
- if(StringUtil.isNotEmpty(tmp.getEduStateCd())) {
- vo.setCodeId("VEA002");
- vo.setCode(tmp.getEduStateCd());
- CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo);
- tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm())));
- }
- //주소
- if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) {
- tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail());
- }
- }
-
- int[] width = {
- 4000, 5000, 5000, 5000, 3000
- , 3000, 5000, 4000, 5000, 13000
-
- , 3500
- }; // 너비
- String[] header = {
- "의뢰일", "사건번호", "관할청", "생년월일", "성명"
- , "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소"
- , "검사명"
- }; // 헤더에 들어갈 이름
- String[] order = {
- "ReqPnttm", "VntYear", "CmptntAthrt", "DBirth", "TrgtNm"
- , "Sex", "ReqNmbr", "ReqStateCd", "EduStateCd", "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;
- }
-
-
-
-
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //
- //
- // 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(
- CndtnTrgtMngVO 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 CndtnTrgtMngVO setCndtnPagingStep2(
- CndtnTrgtMngVO 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();
- }
- }
-}
+package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.web;
+
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+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.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.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
+import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
+
+/**
+ * 기반강화연수(관리자)
+ * 기반강화연수에 관한 controller 클래스를 정의한다.
+ * @author 조용준
+ * @since 2023.07.12
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.12.16 조용준 최초 생성
+ *
+ *
+ */
+
+@Controller
+//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn")
+public class CndtnTrgtMngController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CndtnTrgtMngController.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="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 = "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/cndtnSspnIdtmt/trgtList.do")
+ public String trgtList(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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);
+
+ //검색 조회
+ if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
+
+
+ String selectCondition = "";
+ String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
+
+ selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
+ cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
+
+ }
+
+// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ List cndtnTrgtInfoMngVOList = null;
+ try {
+
+ cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // TODO: handle exception
+ }
+
+ //3.pageing step3
+ paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("list", cndtnTrgtInfoMngVOList);
+
+
+
+
+ return "oprtn/cndtnSspnIdtmt/trgtList";
+ }
+
+ /**
+ * @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/cndtnSspnIdtmt/trgtMngList.do")
+ public String trgtMngList(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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);
+ }
+
+ System.out.println("cndtnTrgtInfoMngVO.getSearchSelStatus() : "+ cndtnTrgtInfoMngVO.getSearchSelStatus());
+
+ if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus()))
+ {
+ cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus());
+ }
+
+ List cndtnTrgtInfoMngVOList = null;
+
+ try {
+
+ cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // TODO: handle exception
+ }
+
+ //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);
+
+ return "oprtn/cndtnSspnIdtmt/trgtMngList";
+ }
+
+ /**
+ * @methodName : trgtCmpltList
+ * @author : 이호영
+ * @date : 2023.10.20
+ * @description : 대상자 이수 목록
+ * @param cndtnTrgtInfoMngVO
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltList.do")
+ public String trgtCmpltList(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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);
+
+ //검색 조회
+ if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
+
+
+ String selectCondition = "";
+ String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
+
+ selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
+ cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
+
+ }
+
+// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ List cndtnTrgtInfoMngVOList = null;
+ try {
+ // 이수 조건 추가
+ cndtnTrgtInfoMngVO.setEduStateCd("20");
+ cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // TODO: handle exception
+ }
+
+ //3.pageing step3
+ paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("list", cndtnTrgtInfoMngVOList);
+
+ return "oprtn/cndtnSspnIdtmt/trgtCmpltList";
+ }
+
+ /**
+ * 조건부기소유예대상자 등록 화면
+ */
+ //@RequestMapping("eduPrcsMngReg.do")
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtReg.do")
+ public String cndtnEduPrcsMngReg(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
+ , ModelMap model
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리====================================
+
+ String userWork = this.getUserWork(request);
+ model.addAttribute("userWork", userWork);
+
+
+
+ ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
+ codeParam.setCodeId("VEA008");
+ List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam);
+ model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList);
+
+ return "oprtn/cndtnSspnIdtmt/trgtReg";
+ }
+
+ /**
+ * 조건부기소유예과정 등록
+ */
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtRegAjax.do")
+ public ModelAndView cndtnEduPrcsMngRegAjax(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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 {
+ System.out.println(cndtnTrgtInfoMngVO.getDBirth());
+ System.out.println(cndtnTrgtInfoMngVO.getdBirth());
+
+ cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO));
+
+ cndtnTrgtInfoMngVO.setSspnIdtmtTrgtOrd(trgtOrdService.getNextStringId());
+ cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
+ cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
+ cndtnTrgtInfoMngService.insert(cndtnTrgtInfoMngVO);
+
+ }catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+
+ // 사건번호
+ // 형식 : - 예시로 A-서울중앙-100-23-1 경우
+ // A (성인/미성년 구분), 서울중앙, 100, 23, 1
+ // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
+ private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
+
+ //성인 미성년 구분
+ System.out.println("cndtnTrgtInfoMngVO.getDBirth()");
+ System.out.println(cndtnTrgtInfoMngVO.getDBirth());
+ String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getDBirth());
+ String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear();
+
+ int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%");
+ System.out.println(cnt);
+ System.out.println(cnt+1);
+ return reqNmbrTemp+"-"+(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/cndtnSspnIdtmt/trgtMdfyAjax.do")
+ public ModelAndView trgtMdfyAjax(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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
+ cndtnTrgtInfoMngService.update(cndtnTrgtInfoMngVO);
+
+
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+ /**
+ * 대상자목록
+ */
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtDetail.do")
+ public String trgtDetail(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
+ , ModelMap model
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ //과정 조회
+ CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
+ 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());
+
+ return "oprtn/cndtnSspnIdtmt/trgtDetail";
+ }
+
+ /**
+ * 조건부기소유예과정 등록
+ */
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/delUpdateAjax.do")
+ public ModelAndView delUpdateAjax(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
+ , ModelMap model
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+ cndtnTrgtInfoMngService.updateDel(cndtnTrgtInfoMngVO);
+
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+
+ /**
+ * 조건부기소유예과정 수료자 상세화면
+ */
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltDetail.do")
+ public String trgtCmpltDetail(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
+ , ModelMap model
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ //과정 조회
+ CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
+ 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 = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ }
+ model.addAttribute("list", cndtnTrgtInfoMngVOList);
+
+
+ return "oprtn/cndtnSspnIdtmt/trgtCmpltDetail";
+ }
+
+
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateTrgtDuplAjax.do")
+ public ModelAndView updateEduAplctAprvlCd(
+ @ModelAttribute("vEPrcsDetailVO") CndtnTrgtMngVO 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);
+ cndtnTrgtInfoMngService.updateTrgtDuplAjax(cndtnTrgtInfoMngVO);
+
+ modelAndView.addObject("result", "success");
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ modelAndView.addObject("result", "");
+ }
+
+
+ return modelAndView;
+
+ }
+
+ /**
+ * 조건부기소유예과정 수정화면
+ */
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMdfy.do")
+ public String trgtMdfy(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
+ , ModelMap model
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ //과정 조회
+ CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
+ 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());
+
+ return "oprtn/cndtnSspnIdtmt/trgtMdfy";
+ }
+
+
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngMdfy.do")
+ public String trgtMngMdfy(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
+ , ModelMap model
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ //과정 조회
+ CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
+ 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);
+
+ return "oprtn/cndtnSspnIdtmt/trgtMngMdfy";
+ }
+
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/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/cndtnSspnIdtmt/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/cndtnSspnIdtmt/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/cndtnSspnIdtmt/cndtnEduQnaMngDetail";
+ }
+
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/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);
+
+
+ //세부과정 지우고 다시 생성
+ VEPrcsCntntVO vEPrcsCntntVO = new VEPrcsCntntVO();
+ vEPrcsCntntVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd());
+ modelAndView.addObject("result", "success");
+ return modelAndView;
+ }
+
+
+ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngExcel.do")
+ public ModelAndView trgtMngExcel(
+ @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO 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;
+ }
+
+ //로그인 처리====================================
+
+ //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(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus()))
+ {
+ cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus());
+ }
+
+ List cndtnTrgtInfoMngVOList = null;
+
+ try {
+
+ cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // TODO: handle exception
+ }
+
+ ComDefaultCodeVO vo = new ComDefaultCodeVO();
+
+ for(CndtnTrgtMngVO 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);
+ 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);
+ tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm())));
+ }
+ //의뢰상태
+ if(StringUtil.isNotEmpty(tmp.getReqStateCd())) {
+ vo.setCodeId("VEA005");
+ vo.setCode(tmp.getReqStateCd());
+ CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo);
+ tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm())));
+ }
+ //교육상태
+ if(StringUtil.isNotEmpty(tmp.getEduStateCd())) {
+ vo.setCodeId("VEA002");
+ vo.setCode(tmp.getEduStateCd());
+ CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo);
+ tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm())));
+ }
+ //주소
+ if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) {
+ tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail());
+ }
+ }
+
+ int[] width = {
+ 4000, 5000, 5000, 5000, 3000
+ , 3000, 5000, 4000, 5000, 13000
+
+ , 3500
+ }; // 너비
+ String[] header = {
+ "의뢰일", "사건번호", "관할청", "생년월일", "성명"
+ , "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소"
+ , "검사명"
+ }; // 헤더에 들어갈 이름
+ String[] order = {
+ "ReqPnttm", "VntYear", "CmptntAthrt", "DBirth", "TrgtNm"
+ , "Sex", "ReqNmbr", "ReqStateCd", "EduStateCd", "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;
+ }
+
+
+
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ //
+ // 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(
+ CndtnTrgtMngVO 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 CndtnTrgtMngVO setCndtnPagingStep2(
+ CndtnTrgtMngVO 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();
+ }
+ }
+}
diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp
index 7d631969..c2cf80d0 100644
--- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp
+++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp
@@ -72,7 +72,7 @@
console.log('returnData :: ', returnData);
if(returnData.result == "success"){
alert("저장되었습니다.");
- fncGoList();
+ //fncGoList();
}else if(returnData.result == "fail"){
alert(returnData.message);
$('#cmptntAthrt').prop('disabled', true);
@@ -131,9 +131,9 @@
}
// 생년월일 검사
- if($("#dBirth").val().trim() == ""){
+ if($("#DBirth").val().trim() == ""){
alert("생년월일을 입력해주세요.");
- $("#dBirth").focus();
+ $("#DBirth").focus();
return true;
}
@@ -321,7 +321,7 @@
생년월일 |
-
+
|