2025-10-22 12:18 이수증, 설문 수정

This commit is contained in:
myname 2025-10-22 12:18:54 +09:00
parent 8574ddf474
commit 1a57241fc6
4 changed files with 547 additions and 10 deletions

View File

@ -2161,6 +2161,180 @@ public class CndtnPrcsInfoMngController {
return "/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup"; return "/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup";
} }
/**
* 1.이수증 출력 팝업 function
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/popup/printCertPopup.do")
public String printCertPopup(
// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
System.out.println("vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getPrcsAplctPrdOrd());
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//3. SelectPagingListQuery set 조건 설정
String selectCondition = new String();
//사용중인 경우만
selectCondition += "AND a.use_yn = 'Y' ";
//위촉상태인 경우만
selectCondition += "AND COALESCE(a.qlfct_end_yn, 'N') = 'N' ";
//3.1 제출 완료 사용중인 데이터 조회
//selectCondition += "AND a.sbmt_yn='Y' AND a.use_yn = 'Y'";
//3.2 강사 테이블 성인강사여부 Y인것만 조회
//selectCondition += "AND (b.adult_instr_yn ='Y' OR a.qlfct_end_yn = 'Y') ";
//3.3 이름 검색
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
//selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
//이름 암호화 - comDefaultVO 검색단어 공통 암호화
ComDefaultVO comDefaultVO = new ComDefaultVO();
comDefaultVO.setSearchKeyword(vEPrcsDetailVO.getSearchKeyword());
comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO);
vEPrcsDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
selectCondition += "AND a.instr_nm LIKE '%'|| '" +vEPrcsDetailVO.getSearchKeyword() + "'|| '%'";
comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO);
vEPrcsDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
}
//3.4 요청일 시작일 검색
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchStartDt())){
// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') >= REPLACE('"+vEPrcsDetailVO.getSearchStartDt()+"', '.', '')";
// }
//3.5 요청일 종료일 검색
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchEndDt())){
// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <= REPLACE('"+vEPrcsDetailVO.getSearchEndDt()+"', '.', '')";
// }
vEPrcsDetailVO.setInstrDiv(LCTR_DIV_CD); //20
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
List<VEInstrDetailVO> vEInstrDetailVOList = vEPrcsAplctPrdService.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO);
try {
vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
//4.pageing step3
paginationInfo = this.setInstrPagingStep3(vEInstrDetailVOList, paginationInfo);
System.out.println(" ==== vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getPrcsAplctPrdOrd());
model.addAttribute("vEPrcsDetailVO", vEPrcsDetailVO);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailVOList);
return "/oprtn/cndtnSspnIdtmt/popup/printCertPopup";
}
/**
* 1.개인 설문 확인 팝업 function
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/popup/printQustnrPopup.do")
public String printQustnrPopup(
// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
System.out.println("vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getPrcsAplctPrdOrd());
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//3. SelectPagingListQuery set 조건 설정
String selectCondition = new String();
//사용중인 경우만
selectCondition += "AND a.use_yn = 'Y' ";
//위촉상태인 경우만
selectCondition += "AND COALESCE(a.qlfct_end_yn, 'N') = 'N' ";
//3.1 제출 완료 사용중인 데이터 조회
//selectCondition += "AND a.sbmt_yn='Y' AND a.use_yn = 'Y'";
//3.2 강사 테이블 성인강사여부 Y인것만 조회
//selectCondition += "AND (b.adult_instr_yn ='Y' OR a.qlfct_end_yn = 'Y') ";
//3.3 이름 검색
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
//selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
//이름 암호화 - comDefaultVO 검색단어 공통 암호화
ComDefaultVO comDefaultVO = new ComDefaultVO();
comDefaultVO.setSearchKeyword(vEPrcsDetailVO.getSearchKeyword());
comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO);
vEPrcsDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
selectCondition += "AND a.instr_nm LIKE '%'|| '" +vEPrcsDetailVO.getSearchKeyword() + "'|| '%'";
comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO);
vEPrcsDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
}
//3.4 요청일 시작일 검색
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchStartDt())){
// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') >= REPLACE('"+vEPrcsDetailVO.getSearchStartDt()+"', '.', '')";
// }
//3.5 요청일 종료일 검색
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchEndDt())){
// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <= REPLACE('"+vEPrcsDetailVO.getSearchEndDt()+"', '.', '')";
// }
vEPrcsDetailVO.setInstrDiv(LCTR_DIV_CD); //20
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
List<VEInstrDetailVO> vEInstrDetailVOList = vEPrcsAplctPrdService.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO);
try {
vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
//4.pageing step3
paginationInfo = this.setInstrPagingStep3(vEInstrDetailVOList, paginationInfo);
System.out.println(" ==== vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getPrcsAplctPrdOrd());
model.addAttribute("vEPrcsDetailVO", vEPrcsDetailVO);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailVOList);
return "/oprtn/cndtnSspnIdtmt/popup/printQustnrPopup";
}
/** /**
* 1.신청자 수동 추가 * 1.신청자 수동 추가
*/ */

View File

@ -484,6 +484,71 @@
vForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtEduAplctCnfrmExcel.do'/>"; vForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtEduAplctCnfrmExcel.do'/>";
vForm.submit(); vForm.submit();
} }
// 이수증
function fncPrintCert(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/cndtnSspnIdtmt/popup/printCertPopup.do'/>";
window.open("#", "_printCertPop", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
form.target = "_printCertPop";
form.submit();
}
// 설문
function fncQustnrCert(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/cndtnSspnIdtmt/popup/printQustnrPopup.do'/>";
window.open("#", "_printQustnrPop", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
form.target = "_printQustnrPop";
form.submit();
}
//이수증 출력
function fncPrintCert_aft(
id //aplctOrd
, chId //chasiOrd
, p_site_id_cd //10,20,30
, p_action //select, insert
, p_qustnrTmplatId //select, insert
, p_qestnrId //select, insert
, p_qustnrRespondId //select, insert
){
paramObj = {
"eduAplctOrd" : id
,"eduChasiOrd" : chId
,"siteIdCd" : p_site_id_cd
,"siteId" : "60" //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
,"action" : p_action
,"qustnrTmplatId" : p_qustnrTmplatId
,"qestnrId" : p_qestnrId
,"qustnrRespondId" : p_qustnrRespondId
};
commonPopLayeropen(
//"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrPopList.do"
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/certPopList.do"
, 800
, 700
, paramObj
, "Y"
, "QustnrList"
);
}
</script> </script>
</head> </head>
@ -777,17 +842,19 @@
<div class="tb_type01"> <div class="tb_type01">
<table> <table>
<colgroup> <colgroup>
<col style="width: 30px">
<col style="width: 50px"> <col style="width: 50px">
<col style="width: 70px">
<col style="width: 210px;"> <col style="width: 210px;">
<col style="width: 130px;"> <col style="width: 130px;">
<col style="width: auto"> <col style="width: 270px;">
<col style="width: 130px;">
<col style="width: 110px;">
<col style="width: 210px;">
<col style="width: 250px;">
<%-- <col style="width: 140px;"> --%> <col style="width: 120px;">
<col style="width: 110px;">
<col style="width: 190px;">
<col style="width: auto">
<col style="width: 150px;">
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
@ -801,7 +868,7 @@
<th>교육이수상태변경</th> <th>교육이수상태변경</th>
<th>취소상태</th> <th>취소상태</th>
<!-- <th>이수증</th> --> <th>내용확인</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -830,8 +897,8 @@
<input type="text" id="email_${status.count}" name="email_${status.count}" <input type="text" id="email_${status.count}" name="email_${status.count}"
placeholder="이메일을 입력하세요." class="search_input" placeholder="이메일을 입력하세요." class="search_input"
value="<c:out value='${list.email}'/>"> value="<c:out value='${list.email}'/>">
<button type="button" class="btn_type04" <!-- <button type="button" class="btn_type04" -->
onclick="fn_emailChg('<c:out value="${list.eduAplctOrd }" />', 'email_${status.count}')">저장</button> <%-- onclick="fn_emailChg('<c:out value="${list.eduAplctOrd }" />', 'email_${status.count}')">저장</button> --%>
</td> </td>
<td> <td>
<c:out value="${list.phone}"/> <c:out value="${list.phone}"/>
@ -894,6 +961,32 @@
- -
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</td>
<td>
<c:choose>
<c:when test="${list.aplctStateCd eq 20 and list.qestnrId10Cnt gt 0}">
<!-- 작성된 설문이 있다 -->
<button type="button" class="btnType02" data-info="${list.eduAplctOrd}" data-tooltip="sub36_pop02"
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','select'
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
)" title="팝업 열림">설문완료</button>
</c:when>
<c:when test="${empty list.qestnrId10 and list.aprvlCd eq 20}">
<!-- 대상 설문이 없다 -->
대상설문없음
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<button type="button" class="btn_type04" onclick="fncPrintCert('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert','${list.qustnrTmplatId}','${list.qestnrId10}','')"/>이수증</button>
</td> </td>
</tr> </tr>
</c:forEach> </c:forEach>

View File

@ -0,0 +1,135 @@
<!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;
}
});
fncPrintCert_aft('${vEPrcsDetailVO.prcsAplctPrdOrd}');
});
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/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup.do'/>";
listForm.submit();
}
function fncInstrAsgnm(p_id) {
$("#userId").val(p_id);
var data1 = new FormData(document.getElementById("createForm"));
if(confirm("강사를 선택 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnInstrAsgnmAjax.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);
}
});
}
}
//이수증 출력
function fncPrintCert_aft(
id //aplctOrd
, chId //chasiOrd
, p_site_id_cd //10,20,30
, p_action //select, insert
, p_qustnrTmplatId //select, insert
, p_qestnrId //select, insert
, p_qustnrRespondId //select, insert
){
paramObj = {
"eduAplctOrd" : id
,"eduChasiOrd" : chId
,"siteIdCd" : p_site_id_cd
,"siteId" : "60" //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
,"action" : p_action
,"qustnrTmplatId" : p_qustnrTmplatId
,"qestnrId" : p_qestnrId
,"qustnrRespondId" : p_qustnrRespondId
};
commonPopLayeropen(
//"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrPopList.do"
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/certPopList.do"
, 800
, 700
, paramObj
, "Y"
, "QustnrList"
);
}
</script>
</head>
<body>
</body>
</html>

View File

@ -0,0 +1,135 @@
<!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;
}
});
fncPrintCert_aft('${vEPrcsDetailVO.prcsAplctPrdOrd}', '', '10', 'select');
});
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/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup.do'/>";
listForm.submit();
}
function fncInstrAsgnm(p_id) {
$("#userId").val(p_id);
var data1 = new FormData(document.getElementById("createForm"));
if(confirm("강사를 선택 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnInstrAsgnmAjax.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);
}
});
}
}
//이수증 출력
function fncPrintCert_aft(
id //aplctOrd
, chId //chasiOrd
, p_site_id_cd //10,20,30
, p_action //select, insert
, p_qustnrTmplatId //select, insert
, p_qestnrId //select, insert
, p_qustnrRespondId //select, insert
){
paramObj = {
"eduAplctOrd" : id
,"eduChasiOrd" : chId
,"siteIdCd" : p_site_id_cd
,"siteId" : "60" //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
,"action" : p_action
,"qustnrTmplatId" : p_qustnrTmplatId
,"qestnrId" : p_qestnrId
,"qustnrRespondId" : p_qustnrRespondId
};
commonPopLayeropen(
//"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrPopList.do"
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrFndtnPopList.do"
, 800
, 700
, paramObj
, "Y"
, "QustnrList"
);
}
</script>
</head>
<body>
</body>
</html>