[관리자] 수료상세 - 중복 대상자 검색

This commit is contained in:
hylee 2023-10-20 19:10:26 +09:00
parent 4f4a9f4e6c
commit be88b210da
23 changed files with 1077 additions and 73 deletions

View File

@ -1,6 +1,8 @@
package kcc.ve.aplct.sspnIdtmt.service; package kcc.ve.aplct.sspnIdtmt.service;
import org.springframework.web.servlet.ModelAndView;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
@ -10,7 +12,8 @@ public interface SspnIdtmtService {
VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO); VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO);
String findByTrgtNm(CndtnTrgtMngVO cndtnTrgtInfoMngVO); // String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
} }

View File

@ -2,7 +2,9 @@ package kcc.ve.aplct.sspnIdtmt.service.impl;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService; import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
@ -34,7 +36,50 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
} }
@Override @Override
public String findByTrgtNm(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { public ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return cndtnTrgtInfoMngDAO.findByTrgtNm(cndtnTrgtInfoMngVO);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String result="";
String msg="";
String id="";
String next="";
try {
result="success";
//
// // 교육 신청한 대상자 조회
id = cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd(cndtnTrgtInfoMngVO);
if(StringUtils.isNotEmpty(id)) {
msg = "이미 신청한 대상자 입니다.";
// 신청한 대상자가 없으면
// 신청하지 않은 대상자가 있는지 조회
}else {
msg = "대상자가 없습니다.";
id = cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd(cndtnTrgtInfoMngVO);
if(StringUtils.isNotEmpty(id)) {
msg = "확인됐습니다.";
next = "Y";
}
}
} catch (Exception e) {
result="fail";
msg = "오류가 발생하였습니다 관리자에게 문의하세요. ";
e.printStackTrace();
// TODO: handle exception
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", result);
modelAndView.addObject("id", id);
modelAndView.addObject("next", next);
return modelAndView;
} }
} }

View File

@ -288,6 +288,7 @@ public class SspnIdtmtController {
// VO를 먼저 null 체크 진행해야 에러안남 // VO를 먼저 null 체크 진행해야 에러안남
// vEEduAplctVO != null && // vEEduAplctVO != null &&
if(vEEduAplctVO != null && StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd())) { if(vEEduAplctVO != null && StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd())) {
System.out.println("vEEduAplctVO.getAprvlCd() :: "+ vEEduAplctVO.getAprvlCd());
t.setAprvlCd(vEEduAplctVO.getAprvlCd()); t.setAprvlCd(vEEduAplctVO.getAprvlCd());
} }
}); });
@ -496,26 +497,40 @@ public class SspnIdtmtController {
//로그인 처리==================================== //로그인 처리====================================
//로그인 정보 가져오기 //로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) { if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail"); modelAndView.addObject("result", "loginFail");
return modelAndView; return modelAndView;
} }
return sspnIdtmtService.findByTrgtNmAndDBirthAndEduStateCd(cndtnTrgtInfoMngVO);
/*
try {
String id = sspnIdtmtService.findByTrgtNm(cndtnTrgtInfoMngVO);
String result=""; // 이미 이수한 사용자가 있는지 확인
// 있으면 리턴
id = sspnIdtmtService.findByTrgtNmAndDBirthAndEduStateCd(cndtnTrgtInfoMngVO);
if(StringUtils.isNotEmpty(id)) { if(StringUtils.isNotEmpty(id)) {
result = "success"; modelAndView.addObject("msg", "확인되었습니다.");
modelAndView.addObject("result", "success");
modelAndView.addObject("id", id);
return modelAndView;
} }
} catch (Exception e) {
result = "fail";
msg = "오류가 발생하였습니다. 담당자에게 문의해주세요.";
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", result); modelAndView.addObject("result", result);
modelAndView.addObject("id", id); modelAndView.addObject("id", id);
return modelAndView; return modelAndView;
*/
} }

View File

@ -10,10 +10,10 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
/* /*
* 교육신청테이블 * 교육신청테이블
* */ * */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
//ve_edu_aplct - 교육신청 //ve_edu_aplct - 교육신청
private String eduAplctOrd; //교육신청순번 private String eduAplctOrd; //교육신청순번
private String lctrDivCd; //강의구분코드 private String lctrDivCd; //강의구분코드
private String userId; //사용자아이디 private String userId; //사용자아이디
@ -303,6 +303,10 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String unfthYn; //불성실여부 private String unfthYn; //불성실여부
private String sspnIdtmtTrgtOrd; //기소유예 대상자
private String eduStateCd; //기소유예 대상자 교육상태
private String trgtNm; //기소유예 대상자 private String trgtNm; //기소유예 대상자
private String vs_clphone; //기소유예 대상자 폰번호 private String vs_clphone; //기소유예 대상자 폰번호
@ -1537,6 +1541,18 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setNeedTxtbNum(String needTxtbNum) { public void setNeedTxtbNum(String needTxtbNum) {
this.needTxtbNum = needTxtbNum; this.needTxtbNum = needTxtbNum;
} }
public String getEduStateCd() {
return eduStateCd;
}
public void setEduStateCd(String eduStateCd) {
this.eduStateCd = eduStateCd;
}
public String getSspnIdtmtTrgtOrd() {
return sspnIdtmtTrgtOrd;
}
public void setSspnIdtmtTrgtOrd(String sspnIdtmtTrgtOrd) {
this.sspnIdtmtTrgtOrd = sspnIdtmtTrgtOrd;
}
public String getTrgtNm() { public String getTrgtNm() {
return trgtNm; return trgtNm;
} }

View File

@ -58,4 +58,8 @@ public interface VEEduMIXService {
void updateAplctStateCd(VEEduAplctVO vEEduAplctVO); void updateAplctStateCd(VEEduAplctVO vEEduAplctVO);
void updateEduStateCd(VEEduAplctVO vEEduAplctVO);
List<VEEduAplctVO> selectTrgtList(VEEduAplctVO paramVO);
} }

View File

@ -154,4 +154,12 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
return tlist; return tlist;
} }
public List<VEEduAplctVO> selectTrgtList(VEEduAplctVO paramVO) {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTrgtList", paramVO);
}
public void updateEduStateCd(VEEduAplctVO paramVO) {
update("VEEduMIXDAO.updateEduStateCd", paramVO);
}
} }

View File

@ -140,4 +140,15 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
vEEduMIXDAO.updateAplctStateCd(vEEduAplctVO); vEEduMIXDAO.updateAplctStateCd(vEEduAplctVO);
} }
@Override
public List<VEEduAplctVO> selectTrgtList(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectTrgtList(paramVO);
}
@Override
public void updateEduStateCd(VEEduAplctVO paramVO) {
vEEduMIXDAO.updateEduStateCd(paramVO);
}
} }

View File

@ -19,4 +19,6 @@ public interface VEAPrcsAplctPrdInstrAsgnmService {
void updateAplctStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO); void updateAplctStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO);
void updatLctrPlanAtchFileId(VEAPrcsAplctPrdInstrAsgnmVO vEAPrcsAplctPrdInstrAsgnmVO); void updatLctrPlanAtchFileId(VEAPrcsAplctPrdInstrAsgnmVO vEAPrcsAplctPrdInstrAsgnmVO);
void updateEduStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO);
} }

View File

@ -44,6 +44,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
//ve_edu_aplct //ve_edu_aplct
private String eduAplctOrd; //교육신청순번 private String eduAplctOrd; //교육신청순번
private List<String> eduAplctOrdList; //교육신청순번 private List<String> eduAplctOrdList; //교육신청순번
private List<String> sspnIdtmtTrgtOrdList; //교육신청순번
private String eduChasiOrd; //교육차시순번 private String eduChasiOrd; //교육차시순번
private String cnt; private String cnt;
@ -129,6 +130,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private Boolean qestRsltExists; private Boolean qestRsltExists;
private String trgtNm; private String trgtNm;
private String eduStateCd;
private String sspnIdtmtTrgtOrd; private String sspnIdtmtTrgtOrd;
@ -272,6 +274,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setEduAplctOrdList(List<String> eduAplctOrdList) { public void setEduAplctOrdList(List<String> eduAplctOrdList) {
this.eduAplctOrdList = eduAplctOrdList; this.eduAplctOrdList = eduAplctOrdList;
} }
public List<String> getSspnIdtmtTrgtOrdList() {
return sspnIdtmtTrgtOrdList;
}
public void setSspnIdtmtTrgtOrdList(List<String> sspnIdtmtTrgtOrdList) {
this.sspnIdtmtTrgtOrdList = sspnIdtmtTrgtOrdList;
}
public String getEduChasiOrd() { public String getEduChasiOrd() {
return eduChasiOrd; return eduChasiOrd;
} }
@ -617,6 +625,13 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public String getTrgtNm() { public String getTrgtNm() {
return trgtNm; return trgtNm;
} }
public String getEduStateCd() {
return eduStateCd;
}
public void setEduStateCd(String eduStateCd) {
this.eduStateCd = eduStateCd;
}
public void setTrgtNm(String trgtNm) { public void setTrgtNm(String trgtNm) {
this.trgtNm = trgtNm; this.trgtNm = trgtNm;
} }

View File

@ -48,4 +48,8 @@ public class VEAPrcsAplctPrdInstrAsgnmDAO extends EgovAbstractDAO {
} }
public void updateEduStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO) {
update("VEAPrcsAplctPrdInstrAsgnmDAO.updateEduStateCdListAjax", vEPrcsDetailVO);
}
} }

View File

@ -70,4 +70,9 @@ public class VEAPrcsAplctPrdInstrAsgnmServiceImpl implements VEAPrcsAplctPrdInst
vEAPrcsAplctPrdInstrAsgnmDAO.updatLctrPlanAtchFileId(vEAPrcsAplctPrdInstrAsgnmVO); vEAPrcsAplctPrdInstrAsgnmDAO.updatLctrPlanAtchFileId(vEAPrcsAplctPrdInstrAsgnmVO);
} }
@Override
public void updateEduStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO) {
vEAPrcsAplctPrdInstrAsgnmDAO.updateEduStateCdListAjax(vEPrcsDetailVO);
}
} }

View File

@ -109,13 +109,17 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
update("cndtnTrgtInfoMngDAO.update", cndtnTrgtInfoMngVO); update("cndtnTrgtInfoMngDAO.update", cndtnTrgtInfoMngVO);
} }
public String findByTrgtNm(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { public String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNm", cndtnTrgtInfoMngVO); return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd", cndtnTrgtInfoMngVO);
} }
public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) { public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) {
update("cndtnTrgtInfoMngDAO.updateUserId", cndtnTrgtMngVO); update("cndtnTrgtInfoMngDAO.updateUserId", cndtnTrgtMngVO);
} }
public String findByTrgtNmAndDBirthAndUserIdAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd", cndtnTrgtInfoMngVO);
}
} }

View File

@ -1,11 +1,12 @@
package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.web; package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.web;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -13,7 +14,6 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
@ -22,7 +22,6 @@ import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil; import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; 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.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@ -125,9 +124,8 @@ public class CndtnTrgtMngController {
*/ */
// @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do")
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do") @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do")
public String cndtnSspnIdtmtMngList( public String trgtList(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model , ModelMap model
) throws Exception { ) throws Exception {
@ -183,6 +181,74 @@ public class CndtnTrgtMngController {
return "oprtn/cndtnSspnIdtmt/trgtList"; return "oprtn/cndtnSspnIdtmt/trgtList";
} }
/**
* @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<CndtnTrgtInfoMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
List<CndtnTrgtMngVO> 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";
}
/** /**
* 조건부기소유예대상자 등록 화면 * 조건부기소유예대상자 등록 화면
*/ */
@ -316,6 +382,45 @@ public class CndtnTrgtMngController {
return "oprtn/cndtnSspnIdtmt/trgtDetail"; return "oprtn/cndtnSspnIdtmt/trgtDetail";
} }
/**
* 조건부기소유예과정 수료자 상세화면
*/
@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<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = new ArrayList<CndtnTrgtMngVO>();
System.out.println(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()));
System.out.println("StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) : "+ StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()));
System.out.println("StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) : "+ StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()));
if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getdBirth()))
{
cndtnTrgtInfoMngVO.setFirstIndex(0);
cndtnTrgtInfoMngVO.setRecordCountPerPage(100000);
cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
}
model.addAttribute("list", cndtnTrgtInfoMngVOList);
return "oprtn/cndtnSspnIdtmt/trgtCmpltDetail";
}
/** /**
* 조건부기소유예과정 수정화면 * 조건부기소유예과정 수정화면

View File

@ -764,7 +764,7 @@ public class CndtnPrcsInfoMngController {
} }
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO); List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectTrgtList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList); vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
@ -813,7 +813,11 @@ public class CndtnPrcsInfoMngController {
try { try {
// 신청상세정보 상태값 update
vEEduMIXService.updateAplctStateCd(vEEduAplctVO); vEEduMIXService.updateAplctStateCd(vEEduAplctVO);
// 기소유예 대상자 상태값 udpate
vEEduMIXService.updateEduStateCd(vEEduAplctVO);
modelAndView.addObject("result", "success"); modelAndView.addObject("result", "success");
} catch (Exception e) { } catch (Exception e) {
modelAndView.addObject("result", ""); modelAndView.addObject("result", "");
@ -902,15 +906,8 @@ public class CndtnPrcsInfoMngController {
// 교육 신청 테이블에 신청자 상태값 update // 교육 신청 테이블에 신청자 상태값 update
vEAPrcsAplctPrdInstrAsgnmService.updateAplctStateCdListAjax(vEPrcsDetailVO); vEAPrcsAplctPrdInstrAsgnmService.updateAplctStateCdListAjax(vEPrcsDetailVO);
// 승인 - 승인일 경우 vea_aplct_detail_info TB에 넣어줘야함 // 대상자 테이블에 update
if("20".equals(vEPrcsDetailVO.getAprvlCd())) { vEAPrcsAplctPrdInstrAsgnmService.updateEduStateCdListAjax(vEPrcsDetailVO);
this.aprvlCd20(vEPrcsDetailVO,loginVO.getUniqId());
}
// 접수취소(반려) - vea_aplct_detail_info TB에 data update
else if("30".equals(vEPrcsDetailVO.getAprvlCd()))
{
this.aprvlCd30(vEPrcsDetailVO);
}
modelAndView.addObject("result", "success"); modelAndView.addObject("result", "success");
} catch (Exception ex) { } catch (Exception ex) {

View File

@ -145,6 +145,7 @@
<!-- 기소유예 대상자 R --> <!-- 기소유예 대상자 R -->
<select id="cndtnTrgtInfoMngDAO.selectPagingList" parameterClass="CndtnPrcsInfoMngVO" resultClass="CndtnPrcsInfoMngVO"> <select id="cndtnTrgtInfoMngDAO.selectPagingList" parameterClass="CndtnPrcsInfoMngVO" resultClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.selectPagingList */
SELECT SELECT
COUNT(1) OVER() AS totCnt, COUNT(1) OVER() AS totCnt,
<include refid="CndtnTrgtInfoMngDAO.select_column_name"/> <include refid="CndtnTrgtInfoMngDAO.select_column_name"/>
@ -152,6 +153,19 @@
<include refid="CndtnTrgtInfoMngDAO.table_name"/> a <include refid="CndtnTrgtInfoMngDAO.table_name"/> a
WHERE WHERE
1=1 1=1
<isNotEmpty property="eduStateCd">
AND a.EDU_STATE_CD = #eduStateCd#
</isNotEmpty>
/* 수료자 중복 리스트를 위한 조건문 */
<isNotEmpty property="trgtNm">
AND a.TRGT_NM = #trgtNm#
</isNotEmpty>
<isNotEmpty property="dBirth">
AND a.D_BIRTH = #dBirth#
</isNotEmpty>
/* //수료자 중복 리스트를 위한 조건문 */
<isNotEmpty property="searchQuery"> <isNotEmpty property="searchQuery">
$searchQuery$ $searchQuery$
</isNotEmpty> </isNotEmpty>
@ -162,14 +176,14 @@
<isNotEmpty property="searchSmbtEndDt"> <isNotEmpty property="searchSmbtEndDt">
AND TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '') AND TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '')
</isNotEmpty> </isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY; OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select> </select>
<!-- 기소유예 대상자 확인 --> <!-- 기소유예 대상자 확인 STEP01 -->
<select id="cndtnTrgtInfoMngDAO.findByTrgtNm" parameterClass="CndtnPrcsInfoMngVO" resultClass="String"> <select id="cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd" parameterClass="CndtnPrcsInfoMngVO" resultClass="String">
/* cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd */
SELECT SELECT
sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
FROM FROM
@ -177,7 +191,31 @@
WHERE WHERE
a.trgt_nm = #trgtNm# a.trgt_nm = #trgtNm#
AND a.d_birth = #dBirth# AND a.d_birth = #dBirth#
AND a.user_id IS null AND (
a.edu_state_cd = '10'
OR a.edu_state_cd = '40'
OR a.edu_state_cd = '50'
OR a.edu_state_cd = '60'
OR a.edu_state_cd = '70'
)
</select>
<!-- 기소유예 대상자 확인 STEP02 -->
<select id="cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd" parameterClass="CndtnPrcsInfoMngVO" resultClass="String">
/* cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd */
SELECT
sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
FROM
<include refid="CndtnTrgtInfoMngDAO.table_name"/> a
WHERE
a.trgt_nm = #trgtNm#
AND a.d_birth = #dBirth#
AND (
a.edu_state_cd = '20'
OR a.edu_state_cd = '25'
OR a.edu_state_cd = '30'
)
</select> </select>

View File

@ -169,13 +169,14 @@
<!-- --> <!-- -->
<select id="VEEduMIXDAO.selectTrgtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO"> <select id="VEEduMIXDAO.selectTrgtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectList */ /* VEEduMIXDAO.selectTrgtList */
SELECT SELECT
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */ qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */ vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
le.MBER_NM AS userNm, le.MBER_NM AS userNm,
<include refid="VEEduMIXDAO.select_column_name"/>, <include refid="VEEduMIXDAO.select_column_name"/>,
vsit.trgt_nm AS trgtNm, vsit.trgt_nm AS trgtNm,
vsit.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd,
vsit.clphone AS vs_clphone, vsit.clphone AS vs_clphone,
vsit.d_birth AS dBirth vsit.d_birth AS dBirth
FROM FROM
@ -3552,8 +3553,20 @@ VALUES
prcs_aplct_prd_ord = #prcsAplctPrdOrd# prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND edu_aplct_ord = #eduAplctOrd# AND edu_aplct_ord = #eduAplctOrd#
</update>
<update id="VEEduMIXDAO.updateEduStateCd" parameterClass="VEEduAplctVO">
/* VEEduMIXDAO.updateEduStateCd */
UPDATE
vea_sspn_idmt_trgt
SET
edu_state_cd = #eduStateCd#
WHERE
sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</update> </update>
<select id="VEEduMIXDAO.selectExprnPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO"> <select id="VEEduMIXDAO.selectExprnPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnPagingList */ /* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnPagingList */
SELECT SELECT

View File

@ -117,7 +117,7 @@
<!-- 교육 신청자 상태 update --> <!-- 교육 신청자 상태 update -->
<update id="VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct" parameterClass="VEPrcsDetailVO"> <update id="VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct" parameterClass="VEPrcsDetailVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.updateAplctStateCdListAjax */ /* VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct */
UPDATE VE_EDU_APLCT UPDATE VE_EDU_APLCT
SET aprvl_cd = #aprvlCd# SET aprvl_cd = #aprvlCd#
@ -139,6 +139,18 @@
</iterate> </iterate>
</update> </update>
<!-- 교육 신청자 상태 update -->
<update id="VEAPrcsAplctPrdInstrAsgnmDAO.updateEduStateCdListAjax" parameterClass="VEPrcsDetailVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.updateEduStateCdListAjax */
UPDATE VEA_SSPN_IDMT_TRGT
SET edu_state_cd = #eduStateCd#
WHERE sspn_idtmt_trgt_ord IN
<iterate property="sspnIdtmtTrgtOrdList" open="(" close=")" conjunction=",">
#sspnIdtmtTrgtOrdList[]#
</iterate>
</update>
<!-- 강사 배정 등록 --> <!-- 강사 배정 등록 -->
<select id="VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd" parameterClass="String" resultClass="VEAPrcsAplctPrdInstrAsgnmVO"> <select id="VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd" parameterClass="String" resultClass="VEAPrcsAplctPrdInstrAsgnmVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd */ /* VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd */

View File

@ -96,9 +96,11 @@
} }
function fn_statusChg(eduAplctOrd, aplctStateCd){ function fn_statusChg(aplctStateCd, eduAplctOrd, sspnIdtmtTrgtOrd){
document.statusChgForm.eduAplctOrd.value = eduAplctOrd ; document.statusChgForm.eduAplctOrd.value = eduAplctOrd ;
document.statusChgForm.aplctStateCd.value = aplctStateCd ; document.statusChgForm.aplctStateCd.value = aplctStateCd ;
document.statusChgForm.eduStateCd.value = aplctStateCd ;
document.statusChgForm.sspnIdtmtTrgtOrd.value = sspnIdtmtTrgtOrd ;
var data = new FormData(document.getElementById("statusChgForm")); var data = new FormData(document.getElementById("statusChgForm"));
if(confirm("상태병경을 하시겠습니까?")){ if(confirm("상태병경을 하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax.do'/>"; var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax.do'/>";
@ -151,11 +153,18 @@
// form 데이터를 묶지 않기 때문에 prcsAplctPrdOrd 데이터 필요함 // form 데이터를 묶지 않기 때문에 prcsAplctPrdOrd 데이터 필요함
function fn_statusChgList(p_aplctStateCd, p_prcsAplctPrdOrd) { function fn_statusChgList(p_aplctStateCd, p_prcsAplctPrdOrd) {
var selectedEduAplctOrd = []; var selectedEduAplctOrd = [];
var selectsspnIdtmtTrgtOrd = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회 // "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() { $("input[name='chk']:checked").each(function() {
// 회원 ID
var eduAplctOrdValue = $(this).val(); var eduAplctOrdValue = $(this).val();
selectedEduAplctOrd.push(eduAplctOrdValue); selectedEduAplctOrd.push(eduAplctOrdValue);
// 대상자 ID
var sspnIdtmtTrgtOrd = $(this).data('info');
selectsspnIdtmtTrgtOrd.push(sspnIdtmtTrgtOrd);
}); });
console.log('selectedEduAplctOrd : ', selectedEduAplctOrd); console.log('selectedEduAplctOrd : ', selectedEduAplctOrd);
@ -165,9 +174,16 @@
return false; return false;
} }
/*
p_aplctStateCd
이수 : 20
미이수 : 10
*/
var dataToSend = { var dataToSend = {
"eduAplctOrdList": selectedEduAplctOrd, "eduAplctOrdList": selectedEduAplctOrd,
"sspnIdtmtTrgtOrdList": selectsspnIdtmtTrgtOrd,
"aplctStateCd": p_aplctStateCd, "aplctStateCd": p_aplctStateCd,
"eduStateCd": p_aplctStateCd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd "prcsAplctPrdOrd": p_prcsAplctPrdOrd
}; };
@ -209,6 +225,8 @@
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/> <input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<input type="hidden" name="aplctStateCd" id="aplctStateCd"/> <input type="hidden" name="aplctStateCd" id="aplctStateCd"/>
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/> <input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/>
<input type="hidden" name="eduStateCd" id="eduStateCd"/>
<input type="hidden" name="sspnIdtmtTrgtOrd" id="sspnIdtmtTrgtOrd"/>
</form> </form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post"> <form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form> </form:form>
@ -436,10 +454,10 @@
<tr> <tr>
<td> <td>
<input name="chk" class="${list.asgnmAprvlCd}" <input name="chk" class="${list.asgnmAprvlCd}"
value="${list.eduAplctOrd}" title="Check" type="checkbox"/> value="${list.eduAplctOrd}" data-info="${list.sspnIdtmtTrgtOrd }" title="Check" type="checkbox"/>
</td> </td>
<td> <td>
<c:out value="${list.userNm}"/>(<c:out value="${list.trgtNm}"/>) <c:out value="${list.userNm}"/>(<c:out value="${list.trgtNm}"/>)(<c:out value="${list.sspnIdtmtTrgtOrd}"/>)
</td> </td>
<td> <td>
<c:out value="${list.dBirth}"/> <c:out value="${list.dBirth}"/>
@ -451,8 +469,8 @@
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/> <ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
</td> </td>
<td> <td>
<button type="button" class="btn_type04" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '20')">이수</button> <button type="button" class="btn_type04" onclick="fn_statusChg('20', '<c:out value="${list.eduAplctOrd }" />', '<c:out value="${list.sspnIdtmtTrgtOrd }"/>')">이수</button>
<button type="button" class="btn_type05" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '10')">미이수</button> <button type="button" class="btn_type05" onclick="fn_statusChg('10', '<c:out value="${list.eduAplctOrd }" />', '<c:out value="${list.sspnIdtmtTrgtOrd }"/>')">미이수</button>
</td> </td>
</tr> </tr>
</c:forEach> </c:forEach>

View File

@ -51,7 +51,12 @@
var strtPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[0].trim()); var strtPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[1].trim()); var endPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[1].trim());
var currentDate = new Date(); var currentDate = new Date();
// new Date에서 년, 월, 일만 생성
currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
console.log(currentDate);
console.log(endPnttm);
console.log('');
var ddlnCdText = ''; var ddlnCdText = '';
if (currentDate < strtPnttm) { if (currentDate < strtPnttm) {
ddlnCdText = "접수전"; ddlnCdText = "접수전";

View File

@ -0,0 +1,319 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : cndtnEduPrcsMngDetail.jsp
* @Description : 조건부기소유예 상세화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltList.do'/>";
listForm.submit();
}
function fncGoSearch(){
var form = document.listForm ;
form.trgtNm.value=$('#trgtNm').val();
form.dBirth.value=$('#dBirth').val();
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltDetail.do'/>";
form.submit();
}
</script>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value='${info.sspnIdtmtTrgtOrd}'/>"/>
<input type="hidden" name="trgtNm" value=""/>
<input type="hidden" name="dBirth" value=""/>
</form:form>
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value='${info.sspnIdtmtTrgtOrd}'/>"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>수료자 상세</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">수료자 목록</span></li>
<li><span class="cur_nav">수료자 상세</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>수료자 상세</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">의뢰일</th>
<td>
<div id="calendar">
<div class="calendar_wrap">
<!-- <input type="text" class="calendar" placeholder="의뢰일" title="의뢰일 선택" id="reqPnttm" name="reqPnttm" value=""> -->
<!-- <input type="text" class="calendar" placeholder="의뢰일" title="의뢰일 선택" id="reqPnttm" name="reqPnttm" value=""> -->
<c:set var="reqPnttm" value="${fn:substring(info.reqPnttm, 0, 10)}" />
<%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%>
<c:out value="${reqPnttm }" />
</div>
</div>
</td>
</tr>
<tr>
<th scope="row">사건번호</th>
<td>
<c:out value="${info.vntNmbr }" />
</td>
</tr>
<tr>
<th scope="row">관할청</th>
<td>
<c:out value="${info.cmptntAthrt }" />
</td>
</tr>
<tr>
<th scope="row">성별</th>
<td>
<ve:code codeId="COM014" code="${info.sex }"/>
</td>
<th scope="row">연락처</th>
<td>
<c:out value="${info.clphone }" />
</td>
</tr>
<tr>
<th scope="row">성명</th>
<td>
<c:out value="${info.trgtNm }" />
</td>
<th scope="row">생년월일</th>
<td>
<c:out value="${info.dBirth }" />
</td>
</tr>
<!-- <tr>
<th scope="row">연락처(핸드폰)</th>
<td>
<input type="text" name="clphone" />
</td>
</tr> -->
<tr>
<th scope="row">의뢰번호</th>
<td>
<c:out value="${info.reqNmbr }" />
</td>
<th scope="row">의뢰상태</th>
<td>
<ve:code codeId="VEA005" code="${info.reqStateCd }"/>
</td>
</tr>
<tr>
<th scope="row">교육상태</th>
<td>
<ve:code codeId="VEA002" code="${info.eduStateCd }"/>
</td>
<th scope="row">검사명</th>
<td>
<c:out value="${info.prsctrNm }" />
</td>
</tr>
<tr class="input_adress">
<th scope="row">
<p>주소</p>
</th>
<td colspan="3">
<label for="post" class="label">우편번호 입력</label>
<c:out value='${info.post}'/>
<div class="detail_address">
<c:out value='${info.addr}'/>
<c:out value='${info.addrDetail}'/>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<div class="tb_tit01">
<p>중복 대상자 검색</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<!-- placeholder를 위한 c:choose 추가 -->
<c:choose>
<c:when test="${not empty cndtnTrgtInfoMngVO.trgtNm}">
<input type="text" id="trgtNm" name="trgtNm" placeholder="이름" value="<c:out value='${cndtnTrgtInfoMngVO.trgtNm }' /> " />
</c:when>
<c:otherwise>
<input type="text" id="trgtNm" name="trgtNm" placeholder="이름" />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${not empty cndtnTrgtInfoMngVO.dBirth}">
<input type="text" id="dBirth" name="dBirth" placeholder="연락처" value="<c:out value='${cndtnTrgtInfoMngVO.dBirth }' /> " />
</c:when>
<c:otherwise>
<input type="text" id="dBirth" name="dBirth" placeholder="연락처" />
</c:otherwise>
</c:choose>
<%-- <input type="text" id="searchKeyword" name="searchKeyword" placeholder="검색어를 입력하세요." title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>"> --%>
<button type="button" class="btn_type08" onclick="fncGoSearch(); return false;">검색</button>
<!-- <button class="btn_type03" onclick="fncReset(this); return false;">초기화</button> -->
</div>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
</colgroup>
<thead>
<tr>
<th>의뢰일</th>
<th>사건번호</th>
<th>관할청</th>
<th>생년월일</th>
<th>성명</th>
<th>성별</th>
<th>의뢰번호</th>
<th>의뢰상태</th>
<th>교육상태</th>
<th>주소</th>
<th>검사명</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount" onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<%-- <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> --%>
<%-- <c:out value='${list.prcsNm}'/> --%>
<!-- </td> -->
<td>
<c:set var="reqPnttm" value="${fn:substring(list.reqPnttm, 0, 10)}" />
<%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%>
<c:out value="${reqPnttm }" />
</td>
<td>
<c:out value="${list.vntNmbr }" />
</td>
<td>
<c:out value="${list.cmptntAthrt }" />
</td>
<td>
<c:out value="${list.dBirth }" />
</td>
<td>
<c:out value="${list.trgtNm }" />
</td>
<td>
<ve:code codeId="COM014" code="${list.sex }"/>
</td>
<td>
<c:out value="${list.reqNmbr }" />
</td>
<td>
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</td>
<td>
<ve:code codeId="VEA002" code="${list.eduStateCd }"/>
</td>
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}">
${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''}
</td>
<td>
<c:out value="${list.prsctrNm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<!-- <button type="button" class="btn_type02" onclick="fncMdfy(); return false;">수정</button> -->
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,361 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : cndtnEduPrcsMngList.jsp
* @Description : 조건부 기소유예 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
searchInit();
// 검색 select box
$('#searchStatus').change(function(){
$('#searchKeyword').val('');
$('#searchSmbtStartDt').val('');
$('#searchSmbtEndDt').val('');
if($(this).val() == 'frstRegistPnttm'){
$('#searchKeyword').hide();
$('#calendar').show();
}
if($(this).val() == 'trgt_nm'){
$('#searchKeyword').attr('placeholder', '이름을 입력해 주세요.');
$('#calendar').hide();
$('#searchKeyword').show();
}
if($(this).val() == 'd_birth'){
$('#searchKeyword').attr('placeholder', '생년월일을 입력해 주세요.');
$('#calendar').hide();
$('#searchKeyword').show();
}
});
});
function searchInit(){
var selecedTxt = $('#searchStatus option:checked').val();
console.log('selecedTxt : ', selecedTxt);
if(selecedTxt == 'trgt_nm' || selecedTxt == 'd_birth'){
$('#calendar').hide();
}else{
$('#searchKeyword').hide();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltList.do'/>";
listForm.submit();
}
function fncGoDetail(sspnIdtmtTrgtOrd){
var detailForm = document.detailForm ;
detailForm.sspnIdtmtTrgtOrd.value = sspnIdtmtTrgtOrd;
detailForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltDetail.do'/>";
detailForm.submit();
}
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>교육과정관리</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post" >
<input type="hidden" id="sspnIdtmtTrgtOrd" name="sspnIdtmtTrgtOrd" value="" />
</form>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>수료자 목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">수료자 목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>수료자 목록</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<select name="searchStatus" id="searchStatus" class="sel_type1">
<option value="trgt_nm" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'trgt_nm' }">selected="selected"</c:if>>이름</option>
<option value="d_birth" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'd_birth' }">selected="selected"</c:if>>생년월일</option>
<option value="frstRegistPnttm" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'frstRegistPnttm' }">selected="selected"</c:if>>기간별</option>
</select>
<div id="calendar">
<div class="calendar_wrap">
<input type="text" class="calendar" placeholder="시작일" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${cndtnTrgtInfoMngVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" placeholder="종료일" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${cndtnTrgtInfoMngVO.searchSmbtEndDt}">
</div>
</div>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="이름을 입력해주세요." title="검색어 입력" class="search_input" value="<c:out value='${cndtnTrgtInfoMngVO.searchKeyword}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<!-- <button class="btn_type03" onclick="fncReset(this); return false;">초기화</button> -->
</div>
</div>
</div>
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '10' or cndtnTrgtInfoMngVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
<%--<button type="button" class="btn_down_excel">엑셀 다운로드</button>--%>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
</colgroup>
<thead>
<tr>
<th>의뢰일</th>
<th>사건번호</th>
<th>관할청</th>
<th>생년월일</th>
<th>성명</th>
<th>성별</th>
<th>의뢰번호</th>
<th>의뢰상태</th>
<th>교육상태</th>
<th>주소</th>
<th>검사명</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount" onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<%-- <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> --%>
<%-- <c:out value='${list.prcsNm}'/> --%>
<!-- </td> -->
<td>
<c:set var="reqPnttm" value="${fn:substring(list.reqPnttm, 0, 10)}" />
<%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%>
<c:out value="${reqPnttm }" />
</td>
<td>
<c:out value="${list.vntNmbr }" />
</td>
<td>
<c:out value="${list.cmptntAthrt }" />
</td>
<td>
<c:out value="${list.dBirth }" />
</td>
<td>
<c:out value="${list.trgtNm }" />
</td>
<td>
<ve:code codeId="COM014" code="${list.sex }"/>
</td>
<td>
<c:out value="${list.reqNmbr }" />
</td>
<td>
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</td>
<td>
<ve:code codeId="VEA002" code="${list.eduStateCd }"/>
</td>
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}">
${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''}
</td>
<td>
<c:out value="${list.prsctrNm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
<!-- <div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div> -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -48,6 +48,8 @@
var strtPnttm = new Date(dateText.split("~")[0].trim().replace(/\./g, '-')); var strtPnttm = new Date(dateText.split("~")[0].trim().replace(/\./g, '-'));
var endPnttm = new Date(dateText.split("~")[1].trim().replace(/\./g, '-')); var endPnttm = new Date(dateText.split("~")[1].trim().replace(/\./g, '-'));
var currentDate = new Date(); var currentDate = new Date();
// new Date에서 년, 월, 일만 생성
currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
if (currentDate < strtPnttm) { if (currentDate < strtPnttm) {
$ddlnCdStts.text("접수전"); $ddlnCdStts.text("접수전");
@ -197,32 +199,32 @@
if(returnData.result == "success"){ if(returnData.result == "success"){
// 대상자 테이블 pk 값 // 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id; var sspnIdtmtTrgtOrd = returnData.id;
if(sspnIdtmtTrgtOrd != ''){ alert(returnData.msg);
alert("확인되었습니다.");
// 교육 신청 ajax // 교육 신청 ajax
// 대상자 이름, 생년월일, 대상자TB ID // 대상자 이름, 생년월일, 대상자TB ID
fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd); if(returnData.next == "Y")
} else { {
alert("대상자에 없습니다."); //sspnIdtmtTrgtOrd = returnData.id;
fncEduReg(trgtNm, dBirth, returnData.id);
} }
}else{ }else{
alert("대상자에 없습니다."); alert(returnData.msg);
} }
fn_target_confirm_clean(); // fn_target_confirm_clean();
location.reload();
}, },
error:function(request , status, error){ error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
} }
}); });
$('#target_confirm_popup-close').click(); $('#target_confirm_popup-close').click();
} }
function fn_target_confirm_clean(){
$('#trgtNm').val('');
$('#dBirth').val('');
}
</script> </script>
<form name="regForm" id="regForm"> <form name="regForm" id="regForm">

View File

@ -93,6 +93,8 @@ $(document).ready(function(){
var strtPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[0].trim()); var strtPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[1].trim()); var endPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[1].trim());
var currentDate = new Date(); var currentDate = new Date();
// new Date에서 년, 월, 일만 생성
currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
// 시간, 분, 초 초기화 // 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0); strtPnttm.setHours(0, 0, 0, 0);
@ -274,20 +276,20 @@ $(document).ready(function(){
if(returnData.result == "success"){ if(returnData.result == "success"){
// 대상자 테이블 pk 값 // 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id; var sspnIdtmtTrgtOrd = returnData.id;
if(sspnIdtmtTrgtOrd != ''){ alert(returnData.msg);
alert("확인되었습니다.");
// 교육 신청 ajax // 교육 신청 ajax
// 대상자 이름, 생년월일, 대상자TB ID // 대상자 이름, 생년월일, 대상자TB ID
fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd); if(returnData.next == "Y")
} else { {
alert("대상자에 없습니다."); //sspnIdtmtTrgtOrd = returnData.id;
fncEduReg(trgtNm, dBirth, returnData.id);
} }
}else{ }else{
alert("대상자에 없습니다."); alert(returnData.msg);
} }
fn_target_confirm_clean(); // fn_target_confirm_clean();
location.reload();
}, },
error:function(request , status, error){ error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);