2025-10-14 16:18 신청자 수동 추가 작업

This commit is contained in:
myname 2025-10-14 16:18:16 +09:00
parent bafbac67ca
commit d661cf20b9
12 changed files with 617 additions and 24 deletions

View File

@ -344,6 +344,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String sspnIdtmtTrgtOrd; //기소유예 대상자 private String sspnIdtmtTrgtOrd; //기소유예 대상자
private String cmdTrgtInfoOrd; //시정명령 대상자
private String eduStateCd; //기소유예 대상자 교육상태 private String eduStateCd; //기소유예 대상자 교육상태
private String reqStateCd; //기소유예 대상자 의뢰상태 private String reqStateCd; //기소유예 대상자 의뢰상태
@ -2144,6 +2146,12 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setReqStateCd(String reqStateCd) { public void setReqStateCd(String reqStateCd) {
this.reqStateCd = reqStateCd; this.reqStateCd = reqStateCd;
} }
public String getCmdTrgtInfoOrd() {
return cmdTrgtInfoOrd;
}
public void setCmdTrgtInfoOrd(String cmdTrgtInfoOrd) {
this.cmdTrgtInfoOrd = cmdTrgtInfoOrd;
}
} }

View File

@ -119,6 +119,8 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectCndtnList(VEEduAplctVO paramVO); List<VEEduAplctVO> selectCndtnList(VEEduAplctVO paramVO);
List<VEEduAplctVO> selectCndtnCmdList(VEEduAplctVO paramVO);
List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) throws Exception; List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) throws Exception;
List<VEEduAplctVO> selectExprnAtchFileDownList(VEEduAplctVO paramVO) throws Exception; List<VEEduAplctVO> selectExprnAtchFileDownList(VEEduAplctVO paramVO) throws Exception;

View File

@ -287,6 +287,10 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCndtnList", paramVO); return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCndtnList", paramVO);
} }
public List<VEEduAplctVO> selectCndtnCmdList(VEEduAplctVO paramVO) {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCndtnCmdList", paramVO);
}
public List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) { public List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectAdultRsltRprtList", paramVO); List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectAdultRsltRprtList", paramVO);

View File

@ -255,6 +255,11 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
return vEEduMIXDAO.selectCndtnList(paramVO); return vEEduMIXDAO.selectCndtnList(paramVO);
} }
@Override
public List<VEEduAplctVO> selectCndtnCmdList(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectCndtnCmdList(paramVO);
}
@Override @Override
public List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) throws Exception{ public List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectAdultRsltRprtList(paramVO); return vEEduMIXDAO.selectAdultRsltRprtList(paramVO);

View File

@ -142,6 +142,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String trgtNm; private String trgtNm;
private String eduStateCd; private String eduStateCd;
private String sspnIdtmtTrgtOrd; private String sspnIdtmtTrgtOrd;
private String cmdTrgtInfoOrd;
private String cnclAtchFileId; private String cnclAtchFileId;
private String cnclCn; private String cnclCn;
@ -1106,4 +1107,10 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setQustnrTm(String qustnrTm) { public void setQustnrTm(String qustnrTm) {
this.qustnrTm = qustnrTm; this.qustnrTm = qustnrTm;
} }
public String getCmdTrgtInfoOrd() {
return cmdTrgtInfoOrd;
}
public void setCmdTrgtInfoOrd(String cmdTrgtInfoOrd) {
this.cmdTrgtInfoOrd = cmdTrgtInfoOrd;
}
} }

View File

@ -54,8 +54,8 @@ 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;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService; import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO; import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
/** /**
@ -98,8 +98,12 @@ public class CmdPrcsInfoMngController {
//과정 관리 //과정 관리
@Resource(name = "cndtnTrgtInfoMngService") //@Resource(name = "cndtnTrgtInfoMngService")
private CndtnTrgtMngService cndtnTrgtInfoMngService; //private CndtnTrgtMngService cndtnTrgtInfoMngService;
//@Resource(name = "cndtnTrgtInfoMngService")
//private CndtnTrgtMngService cndtnTrgtInfoMngService;
@Resource(name = "cmdTrgtInfoMngService")
private CmdTrgtMngService cmdTrgtInfoMngService;
//교육과정순번 //교육과정순번
@Resource(name="prcsGnrService") @Resource(name="prcsGnrService")
@ -166,7 +170,9 @@ public class CmdPrcsInfoMngController {
@Resource(name = "checkFileUtil") @Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil; private CheckFileUtil checkFileUtil;
//교육신청순번
@Resource(name="eduAplctGnrService")
private EgovIdGnrService eduAplctGnrService;
/** /**
* 기반강화연수 과정 관리 목록 화면 * 기반강화연수 과정 관리 목록 화면
@ -807,7 +813,7 @@ public class CmdPrcsInfoMngController {
// List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO); // List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCndtnList(paramVO); List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCndtnCmdList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList); vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
//대상 리스트, 페이징 정보 전달 //대상 리스트, 페이징 정보 전달
@ -2165,8 +2171,8 @@ public class CmdPrcsInfoMngController {
@RequestMapping("/kccadr/oprtn/cmdTrgt/popup/cndtnApplyAsgnmPopup.do") @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/cndtnApplyAsgnmPopup.do")
public String fndthApplyAsgnmPopup( public String fndthApplyAsgnmPopup(
// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO // @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
//@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO , @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model , ModelMap model
, RedirectAttributes redirectAttributes , RedirectAttributes redirectAttributes
@ -2221,10 +2227,10 @@ public class CmdPrcsInfoMngController {
cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
// List<CndtnTrgtInfoMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); // List<CndtnTrgtInfoMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = null; List<CmdTrgtMngVO> cndtnTrgtInfoMngVOList = null;
try { try {
cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
// TODO: handle exception // TODO: handle exception
@ -2237,7 +2243,7 @@ public class CmdPrcsInfoMngController {
//복호화 //복호화
cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCndtnTrgtMngVOList(cndtnTrgtInfoMngVOList); cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList);
//대상 리스트, 페이징 정보 전달 //대상 리스트, 페이징 정보 전달
model.addAttribute("list", cndtnTrgtInfoMngVOList); model.addAttribute("list", cndtnTrgtInfoMngVOList);
@ -2245,6 +2251,113 @@ public class CmdPrcsInfoMngController {
return "/oprtn/cmdTrgt/popup/cndtnApplyAsgnmPopup"; return "/oprtn/cmdTrgt/popup/cndtnApplyAsgnmPopup";
} }
/**
* 기반강화연수과정 신청기간 등록
*/
@RequestMapping("/kccadr/oprtn/cmdTrgt/popup/eduRegAjax.do")
public ModelAndView fndthEduPrcsAplctPrdMngRegAjax(
@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 로그인 정보 가져오기
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
String s_eduAplctOrd = eduAplctGnrService.getNextStringId();
vEEduAplctVO.setEduAplctOrd(s_eduAplctOrd);
vEEduAplctVO.setLctrDivCd(LCTR_DIV_CD); // 기소유예
vEEduAplctVO.setAprvlCd("10"); // 승인코드 VE0003 10 - 요청, 20 - 승인, 30 - 반려
// sbmt_pnttm 제출일시
vEEduAplctVO.setSbmtYn("Y"); // 제출여부
vEEduAplctVO.setFrstRegisterId(loginVO.getUniqId());
// frst_regist_pnttm
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone()));
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
try {
//암호화
vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO);
vEEduAplctVO.setRndsOrd(vEPrcsDetailVO.getCmdTrgtInfoOrd()); //2024-02-07 추가 신청서 정보에 대상자 정보를 넣어야 추후 구분이 가능해서 추가함
sspnIdtmtService.insertVeEduAplct(vEEduAplctVO);
CmdTrgtMngVO cndtnTrgtMngVO = new CmdTrgtMngVO();
cndtnTrgtMngVO.setUserId(loginVO.getUniqId());
cndtnTrgtMngVO.setCmdTrgtInfoOrd(vEPrcsDetailVO.getCmdTrgtInfoOrd());
cndtnTrgtMngVO.setEduStateCd("25"); // 신청
cndtnTrgtMngVO.setEduAplctOrd(s_eduAplctOrd); //동일한 대상자가 어떤 신청서와 맞는지 매칭에 필요함
//cndtnTrgtMngVO.setPrcsAplctPrdOrdCmplt(vEPrcsDetailVO.getPrcsAplctPrdOrd()); // 교육 번호
// , edu_state_cd = #eduStateCd#
// , prcs_aplct_prd_ord_cmplt = #prcsAplctPrdOrdCmplt#
cmdTrgtInfoMngService.updateUserId(cndtnTrgtMngVO);
//알림 교육신청
try {
iTNotiUtil.insertNotifyNew_60(
LCTR_DIV_CD, //"60",
loginVO.getUniqId(),
VeConstants.NOTI_STATUS_10,
vEPrcsDetailVO.getPrcsAplctPrdOrd(),
"",
"1",
"1"
);
}catch(Exception ex) {
ex.printStackTrace();
}
result = "success";
} catch (Exception e) {
// TODO: handle exception
}
modelAndView.addObject("result", result);
return modelAndView;
}
/** /**
* @methodName : cnclPopup * @methodName : cnclPopup
* @author : 이호영 * @author : 이호영
@ -2297,7 +2410,7 @@ public class CmdPrcsInfoMngController {
@RequestMapping("/kccadr/oprtn/cmdTrgt/popup/detailPopup.do") @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/detailPopup.do")
public String detailPopup( public String detailPopup(
// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO // @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ModelAttribute("vEPrcsDetailVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model , ModelMap model
, HttpServletRequest request , HttpServletRequest request
) throws Exception { ) throws Exception {
@ -2307,15 +2420,15 @@ public class CmdPrcsInfoMngController {
//로그인 처리==================================== //로그인 처리====================================
CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.findByEduAplctOrdAndMberId(cndtnTrgtInfoMngVO); CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.findByEduAplctOrdAndMberId(cndtnTrgtInfoMngVO);
//복호화 //복호화
cndtnTrgtInfoVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoVO); cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO);
model.addAttribute("info", cndtnTrgtInfoVO); model.addAttribute("info", cndtnTrgtInfoVO);
//이력정보 //이력정보
List<CndtnTrgtMngVO> cndtnTrgtMngVOList = cndtnTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); List<CmdTrgtMngVO> cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO);
model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList);
@ -3013,7 +3126,7 @@ public class CmdPrcsInfoMngController {
//CndtnTrgtInfoMngVO //CndtnTrgtInfoMngVO
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정 //페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setCndtnPagingStep1( private PaginationInfo setCndtnPagingStep1(
CndtnTrgtMngVO p_cndtnTrgtInfoMngVO CmdTrgtMngVO p_cndtnTrgtInfoMngVO
)throws Exception{ )throws Exception{
// pageing step1 // pageing step1
PaginationInfo paginationInfo = new PaginationInfo(); PaginationInfo paginationInfo = new PaginationInfo();
@ -3026,8 +3139,8 @@ public class CmdPrcsInfoMngController {
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화 //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private CndtnTrgtMngVO setCndtnPagingStep2( private CmdTrgtMngVO setCndtnPagingStep2(
CndtnTrgtMngVO p_cndtnTrgtInfoMngVO CmdTrgtMngVO p_cndtnTrgtInfoMngVO
, PaginationInfo p_paginationInfo , PaginationInfo p_paginationInfo
)throws Exception{ )throws Exception{
// pageing step2 // pageing step2
@ -3046,7 +3159,7 @@ public class CmdPrcsInfoMngController {
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setCndtnPagingStep3( private PaginationInfo setCndtnPagingStep3(
List<CndtnTrgtMngVO> p_cndtnTrgtInfoMngVOList List<CmdTrgtMngVO> p_cndtnTrgtInfoMngVOList
, PaginationInfo p_paginationInfo , PaginationInfo p_paginationInfo
)throws Exception{ )throws Exception{
// pageing step3 // pageing step3

View File

@ -463,6 +463,7 @@
</select> </select>
<!-- 교육신청자 - 조건부기소유예 -->
<select id="VEEduMIXDAO.selectCndtnList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO"> <select id="VEEduMIXDAO.selectCndtnList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectCndtnList */ /* VEEduMIXDAO.selectCndtnList */
SELECT SELECT
@ -549,6 +550,93 @@
</select> </select>
<!-- 교육신청자 - 시정명령 -->
<select id="VEEduMIXDAO.selectCndtnCmdList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectCndtnCmdList */
SELECT
ROW_NUMBER() OVER(ORDER BY a.frst_regist_pnttm ASC) AS rowNo,
vadi.APLCT_STATE_CD AS aplctStateCd,
vsit.req_STATE_CD as reqStateCd,
vpap.TITLE AS title,
vsit.CMPTNT_ATHRT AS cmptntAthrt,
vsit.VNT_YEAR AS vntYear,
vsit.VNT_NMBR AS vntNmbr,
vsit.PRSCTR_NM AS prsctrNm,
vsit.req_nmbr AS reqNmbr,
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
le.MBER_NM AS userNm,
le.mber_id AS mberId,
<include refid="VEEduMIXDAO.select_column_name"/>,
CASE
WHEN EXISTS (/* 설문조사 */
SELECT
1
FROM
LETTNQESTNRRSLTDETAIL lersltD
WHERE
lersltD.respond_id = a.USER_ID
AND a.edu_aplct_ord = lersltD.edu_aplct_ord ) THEN 1
ELSE 0
END AS qestRsltExists,
vsit.TRGT_NM AS trgtNm,
CASE
WHEN vsit.sex = 'M' THEN '남성'
WHEN vsit.sex = 'F' THEN '여성'
ELSE '' END trgtSex
, vsit.CMD_TRGT_INFO_ORD AS cmdTrgtInfoOrd
FROM
<include refid="VEEduMIXDAO.table_name"/> a
JOIN ve_prcs_aplct_prd vpap ON
a.PRCS_ORD = vpap.PRCS_APLCT_PRD_ORD
LEFT JOIN VEA_APLCT_DETAIL_INFO vadi ON
a.EDU_APLCT_ORD = vadi.EDU_APLCT_ORD
/* AND vpap.PRCS_APLCT_PRD_ORD = vadi.PRCS_APLCT_PRD_ORD */
LEFT JOIN LETTNGNRLMBER le ON
a.USER_ID = le.ESNTL_ID
LEFT JOIN lettnemplyrinfo le2 ON
a.USER_ID = le2.ESNTL_ID
LEFT JOIN VEA_CMD_TRGT_INFO vsit ON
(
/* 신청 정보에 대상자 키 값이 들어 있어서 해당 값을만 확인하면 된다.*/
a.rnds_ord=vsit.CMD_TRGT_INFO_ORD
)
WHERE
1=1
<isNotEmpty property="prcsOrd">
AND a.prcs_ord=#prcsOrd#
</isNotEmpty>
<isNotEmpty property="sbmtYn">
AND a.sbmt_yn=#sbmtYn#
</isNotEmpty>
<isNotEmpty property="searchSelStatus">
AND a.aprvl_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty property="searchQuery">
$searchQuery$
</isNotEmpty>
<isNotEmpty property="searchSmbtStartDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchSmbtStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchSmbtEndDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '')
</isNotEmpty>
AND a.use_yn = 'Y'
<!-- AND le.MBER_NM IS NOT NULL -->
ORDER BY a.frst_regist_pnttm ASC
</select>
<!-- --> <!-- -->
<select id="VEEduMIXDAO.selectTrgtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO"> <select id="VEEduMIXDAO.selectTrgtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectTrgtList */ /* VEEduMIXDAO.selectTrgtList */

View File

@ -278,7 +278,19 @@
form.submit(); form.submit();
} }
// 신청자 수동 추가
function fncApplyAsgnmInfo(prcsAplctPrdOrd) {
var form = document.popForm;
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
// form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/fndthInstrAsgnmPopup.do'/>";
form.action = "<c:url value='/kccadr/oprtn/cmdTrgt/popup/cndtnApplyAsgnmPopup.do'/>";
window.open("#", "_securityPop", "scrollbars = no, top=100px, left=0px, height=750px, width=1600px");
form.target = "_securityPop";
form.submit();
}
function fn_goDetailPop(p_eduAplctOrd, p_mberId, p_cmdTrgtInfoOrd) { function fn_goDetailPop(p_eduAplctOrd, p_mberId, p_cmdTrgtInfoOrd) {
@ -586,6 +598,7 @@
</div> </div>
</div> </div>
<br/>
<!-- <!--
강사 배치 정보 강사 배치 정보
강사 배치 정보 강사 배치 정보
@ -773,7 +786,7 @@
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<tr> <tr>
<td colspan="6">신청자가 없습니다.</td> <td colspan="10">신청자가 없습니다.</td>
</tr> </tr>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
@ -801,6 +814,18 @@
</div> </div>
</div> </div>
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btn_type02" onclick="fncApplyAsgnmInfo('<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">신청자 수동 추가</button>
</div>
<div class="btn_right">
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,337 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%
/**
* @Class Name : instrAsgnmPopup.jsp
* @Description : 강사배치 팝업
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.09 김봉호 최초 생성
* @author 안주영
* @since 2022.1.8
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%-- <script type="text/javascript" src="<c:url value='/js/ve/tmapJS.js'/>"></script> --%>
<script type="text/javascript">
</script>
<title>강사배치 팝업</title>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
// ID를 alpreah_input로 가지는 곳에서 키를 누를 경우
$("#instrNm").keydown(function(key) {
if (key.keyCode == 13) {
linkPage(1);
return false;
}
});
});
function fncPopClose(){
self.close();
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
if($('#searchEduSlctAreaCd option:selected').text() != '전체'){
listForm.rsdne.value = $('#searchEduSlctAreaCd option:selected').text();
}
listForm.action = "<c:url value='/kccadr/oprtn/cmdTrgt/popup/cndtnApplyAsgnmPopup.do'/>";
listForm.submit();
}
function fncApplyAsgnm(p_id) {
$("#userId").val(p_id);
var data1 = new FormData(document.getElementById("createForm"));
if(confirm("해당 대상자 수동 교육 신청을 진행하시겠습니까?\n수동신청한 경우 해당 대상자의 신청자 온라인 연동은 불가합니다.")){
$.ajax({
type:"POST",
//url:"${pageContext.request.contextPath}/kccadr/oprtn/cmdTrgt/cndtnInstrAsgnmAjax.do",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cmdTrgt/cndtnApplyAsgnmAjax.do",
data: data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == 'success'){
alert("저장 되었습니다.");
opener.location.reload();
fncPopClose();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
</script>
</head>
<body>
<div class="area_popup supm_popup">
<div class="cont_popup">
<form:form id="createForm" name="createForm" method="post" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/>
<input type="hidden" name="eduChasiOrd" id="eduChasiOrd"/>
<input type="hidden" name="userId" id="userId" />
<input type="hidden" name="asgnmAprvlCd" id="asgnmAprvlCd" value="30"/> <!-- VE0019 배정 승인 코드 30 확정 -->
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value="${vEPrcsDetailVO.prcsAplctPrdOrd}" />" />
</form:form>
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/>
<input type="hidden" name="eduChasiOrd" id="eduChasiOrd"/>
<input type="hidden" name="userId" id="userId" />
<input type="hidden" name="asgnmAprvlCd" id="asgnmAprvlCd" value="30"/> <!-- VE0019 배정 승인 코드 30 확정 -->
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value="${vEPrcsDetailVO.prcsAplctPrdOrd}" />" />
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="pageUnit" value="5" />
<input type="hidden" name="rsdne" value="" />
<div class="area_popup">
<div class="cont_popup">
<!-- list_top -->
<div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>대상자검색</p>
</div>
<%-- <ve:select codeId="VE0008" name="searchEduSlctAreaCd" id="searchEduSlctAreaCd" css="class='sel_type1'" --%>
<%-- selectedText="${vEEduAplctVO.rsdne}" defaultValue='' --%>
<%-- defaultText='전체' --%>
<%-- /> --%>
<div class="util_right">
<input type="text" id="searchKeywordFrom" name="searchKeywordFrom" placeholder="이름을 입력해주세요." title="검색어 입력" class="search_input" value="<c:out value='${cndtnTrgtInfoMngVO.searchKeywordFrom}'/>" onkeyDown="press(event);">
<button type="button" class="btn_type08" onclick="linkPage(1); return false;">검색</button>
</div>
</div>
</div>
<div class="pop_tb_tit01">
<p>대상자 목록</p>
</div>
<div class="pop_tb_type01">
<table>
<colgroup>
<col style="width: 8%">
<col style="width: 9%">
<col style="width: 10%">
<col style="width: 7%">
<col style="width: 5%">
<col style="width: 4%">
<col style="width: 12%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: auto">
<col style="width: 80px">
<col style="width: 80px">
</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>
<th scope="col">선택</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount"
<c:if test="${empty list.prcsAplctPrdOrdCmplt}">
style="cursor:pointer;"
</c:if>
<c:if test="${not empty list.prcsAplctPrdOrdCmplt}">
style="cursor:pointer;background-color:lightgray;"
</c:if>
>
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<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 onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" />
</td>
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<ve:code codeId="VEA008" code="${list.cmptntAthrt }"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.dBirth }" />
</td>
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.trgtNm }" />
</td>
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<ve:code codeId="COM014" code="${list.sex }"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.reqNmbr }" />
</td>
<!--
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</td>
-->
<!-- 의뢰상태 -->
<td onclick="fncGoDetail('<c:out value="${list.cmdTrgtInfoOrd}"/>');" style="cursor:pointer;">
<c:if test="${empty list.prcsAplctPrdOrdCmplt}">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>(${list.reqStateCd })
</c:if>
<c:if test="${not empty list.prcsAplctPrdOrdCmplt}">
병합처리
</c:if>
</td>
<!-- 교육상태 -->
<td>
<ve:code codeId="VEA003" code="${list.eduStateCd }"/>(${list.eduStateCd })
</td>
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td class="ellipsis" title="${fullAddr}">
${fullAddr}
<%-- ${fn:length(fullAddr)> 50 ? fn:substring(fullAddr, 0, 50).concat('...') : ''} --%>
</td>
<td>
<c:out value="${list.prsctrNm }" />
</td>
<td>
<c:if test='${not empty list.trgtNm and list.eduStateCd ne 20 and list.reqStateCd ne 30}'>
<button class="btn_type06"
onclick="fncEduReg('<c:out value="${list.cmdTrgtInfoOrd}" />', '<c:out value="${list.trgtNm}" />', '<c:out value="${list.dBirth}" />', '<c:out value="${list.clphone}" />'); return false;">선택</button>
</c:if>
</td>
</tr>
<c:if test="${!empty list.rmrks }">
<tr class="memoTr" style="display:none;">
<td colspan="11" style="text-align:left; background-color:#131de14a;">
<c:out value="${list.rmrks}" />
</td>
</tr>
</c:if>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
<div class="btn_wrap_pop btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btn_type04" onclick="self.close();">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</form:form>
</div>
</div>
<form id="regForm2" name="regForm2" method="post">
<input type="hidden" name="prcsAplctPrdOrd" value="${vEPrcsDetailVO.prcsAplctPrdOrd}">
<!-- 대상자 테이블 PK -->
<input type="hidden" name="cmdTrgtInfoOrd" id="cmdTrgtInfoOrd" value="">
<input type="hidden" name="trgtNm" id="trgtNm" value="">
<input type="hidden" name="dBirth" id="dBirth" value="">
<input type="hidden" name="phone" id="phone" value=""/>
</form>
<script type="text/javascript">
function fncEduReg(p_cmdTrgtInfoOrd, p_trgtNm, p_dBirth, p_phone){
$("#cmdTrgtInfoOrd").val(p_cmdTrgtInfoOrd);
$("#trgtNm").val(p_trgtNm);
$("#dBirth").val(p_dBirth);
$("#phone").val(p_phone);
var data = new FormData(document.getElementById("regForm2"));
if(confirm("해당 대상자 수동 교육 신청을 진행하시겠습니까?\n수동신청한 경우 해당 대상자의 신청자 온라인 연동은 불가합니다.")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cmdTrgt/popup/eduRegAjax.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("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncGoList(){
window.opener.reload();
}
</script>
</body>
</html>

View File

@ -786,7 +786,7 @@
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<tr> <tr>
<td colspan="6">신청자가 없습니다.</td> <td colspan="10">신청자가 없습니다.</td>
</tr> </tr>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>

View File

@ -224,7 +224,7 @@
<!-- 교육상태 --> <!-- 교육상태 -->
<td> <td>
<ve:code codeId="VEA003" code="${list.eduStateCd }"/> <ve:code codeId="VEA003" code="${list.eduStateCd }"/>(${list.eduStateCd })
</td> </td>
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" /> <c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%> <%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
@ -326,6 +326,10 @@
} }
} }
function fncGoList(){
window.opener.reload();
}
</script> </script>
</body> </body>

View File

@ -775,7 +775,7 @@
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<tr> <tr>
<td colspan="6">신청자가 없습니다.</td> <td colspan="10">신청자가 없습니다.</td>
</tr> </tr>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>