This commit is contained in:
myname 2023-12-26 15:12:53 +09:00
commit a9ebb0654b
10 changed files with 743 additions and 310 deletions

View File

@ -164,7 +164,7 @@ public class AnotaionSchedule {
//================================================================
// 기반 테스트
this.sendLctrDivCd("50", "2", "A");
// this.sendLctrDivCd("50", "2", "A");
// 기반강화
// this.sendLctrDivCd50("50", "1", "A"); // LCTR_DIV_CD 50, A 기반강화, 1 하루후
// 기소유예

View File

@ -482,6 +482,10 @@ public class SspnIdtmtController {
// frst_regist_pnttm
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(vEPrcsDetailVO.getPhone());
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
try {
@ -514,6 +518,27 @@ public class SspnIdtmtController {
}
@RequestMapping("/web/ve/aplct/sspnIdtmt/eduAplctPop.do")
public String eduAplctPop(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
return "/web/ve/aplct/sspnIdtmt/popup/eduAplctPop";
}
/**
* 기반강화연수과정 신청기간 등록
*/

View File

@ -45,6 +45,8 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String instrNm; //
private String phone; //
//ve_edu_aplct
private String eduAplctOrd; //교육신청순번
private List<String> eduAplctOrdList; //교육신청순번
@ -984,6 +986,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setCmmNotifyOrd(String cmmNotifyOrd) {
this.cmmNotifyOrd = cmmNotifyOrd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}

View File

@ -3,12 +3,14 @@ package kcc.ve.oprtn.cndtnSspnIdtmt.web;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
@ -24,8 +26,10 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.impl.CmmUseDAO;
import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
@ -43,6 +47,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
/**
* 기반강화연수(관리자)
@ -136,6 +141,9 @@ public class CndtnPrcsInfoMngController {
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
/** cmmUseService */
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService egovCmmUseService;
/**
* 기반강화연수 과정 관리 목록 화면
*/
@ -697,6 +705,92 @@ public class CndtnPrcsInfoMngController {
}
/**
* 성인찾아가는 저작권 교육 목록 Excel
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduAplctExcelDownLoad.do")
public ModelAndView eduAplctExcelDownLoad(@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO, ModelMap model) throws Exception {
// 요청, 반려건
try {
VEEduAplctVO paramVO = new VEEduAplctVO();
paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
paramVO.setSbmtYn("Y");
// 검색 - 날짜
paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt());
paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt());
// 검색 - 검색어
paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus());
List<VEEduAplctVO> list = vEEduMIXService.selectCndtnList(paramVO);
list = egovCryptoUtil.decryptVeEduAplctList(list);
List<ExcelVO> excelVOList = new ArrayList<>();
// util에서 vo의 모든 변수를 순회하기 때문에 느림
// 필요한 변수들만 vo로 선언
list.forEach( vo -> {
ExcelVO excelVO = new ExcelVO();
excelVO.setUserNm(vo.getUserNm());
excelVO.setEmail(vo.getEmail());
excelVO.setPhone(vo.getPhone());
excelVO.setSbmtPnttm(vo.getSbmtPnttm());
ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
codeParam.setCodeId("VE0003");
codeParam.setCode(vo.getAprvlCd());
excelVO.setAprvlCd(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam));
excelVOList.add(excelVO);
});
List<Object> excelData = new ArrayList<>();
excelData.addAll(excelVOList);
// 세팅값
String title = "조건부 기소유예 - 교육신청 목록";
int[] width = {
4000, 4000, 4000, 4000, 4000
}; // 너비
String[] header = {
"신청자", "이메일", "핸드폰", "신청일", "상태"
};
String[] order = {
"UserNm", "Email", "Phone", "SbmtPnttm", "AprvlCd"
};
// 호출
SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title);
model.addAttribute("locale", Locale.KOREA);
model.addAttribute("workbook", workbook);
model.addAttribute("workbookName", title);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
modelAndView.addObject(model);
return modelAndView;
}
/**
* ve_prcs_aplct_prd 테이블에 데이터 하나만 변경하는 기능
*/

View File

@ -665,16 +665,6 @@ public class FndthPrcsAplctPrdMngController {
@RequestMapping(value = "/kccadr/oprtn/fndthEnhanceTrn/eduAplctExcelDownLoad.do")
public ModelAndView eduAplctExcelDownLoad(@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO, ModelMap model) throws Exception {
//년도
// if(StringUtils.isBlank(vEEduAplctVO.getSearchYear())){
// vEEduAplctVO.setSearchYear(String.valueOf(LocalDate.now().getYear()));
// }
//
// //
// if(StringUtils.isBlank(vEEduAplctVO.getSearchMonth())){
// vEEduAplctVO.setSearchMonth(String.valueOf(LocalDate.now().getMonthValue()));
// }
// 요청, 반려건
try {

View File

@ -320,7 +320,9 @@
D_BIRTH,
FLD,
LCTR_YN,
PRVS_QS
PRVS_QS,
PHONE,
EMAIL
)
VALUES(
#eduAplctOrd#,
@ -342,7 +344,9 @@
#dBirth#,
#fld#,
#lctrYn#,
#prvsQs#
#prvsQs#,
#phone#,
#email#
)
WHEN MATCHED THEN
UPDATE
@ -386,6 +390,12 @@
<isNotEmpty property="prvsQs">
,PRVS_QS = #prvsQs#
</isNotEmpty>
<isNotEmpty property="phone">
,PHONE = #phone#
</isNotEmpty>
<isNotEmpty property="email">
,EMAIL = #email#
</isNotEmpty>
</insert>

View File

@ -192,7 +192,6 @@
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
le.MBER_NM AS userNm,
tr.CLPHONE,
<include refid="VEEduMIXDAO.select_column_name"/>,
CASE
WHEN EXISTS (/* 설문조사 */
@ -214,8 +213,6 @@
/* AND vpap.PRCS_APLCT_PRD_ORD = vadi.PRCS_APLCT_PRD_ORD */
JOIN LETTNGNRLMBER le ON
a.USER_ID = le.ESNTL_ID
LEFT JOIN VEA_SSPN_IDMT_TRGT tr ON
a.USER_ID = tr.USER_ID
WHERE
1=1
<isNotEmpty property="prcsOrd">

View File

@ -255,6 +255,13 @@
}
// 엑셀다운로드
function excelDownLoad() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduAplctExcelDownLoad.do'/>";
listForm.submit();
}
</script>
@ -274,6 +281,7 @@
<input type="hidden" name="userId" id="userId"/>
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
</form:form>
<form id="popForm" name="popForm" method="post">
<input type="hidden" name="pageIndex" value="1"/>
@ -488,6 +496,8 @@
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 210px;">
@ -498,6 +508,8 @@
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="chkAll(this);" /><label for="checkAll"></label></th>
<th>신청자</th>
<th>이메일</th>
<th>핸드폰</th>
<th>신청일</th>
<th>확정여부</th>
<th>교육상태</th>
@ -522,6 +534,12 @@
<td>
<c:out value="${list.userNm}"/>
</td>
<td>
<c:out value="${list.email}"/>
</td>
<td>
<c:out value="${list.phone}"/>
</td>
<td>
<c:out value="${list.sbmtPnttm}"/>
</td>
@ -563,6 +581,7 @@
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<button type="button" class="btn_type02" onclick="excelDownLoad(); return false;">엑셀다운로드</button>
<button type="button" class="btn_type04" onclick="fncDdlnCdSave(10); return false;">신청마감</button>
<button type="button" class="btn_type04" onclick="fncDdlnCdSave(20); return false;">교육확정</button>
</div>

View File

@ -198,7 +198,7 @@ $(document).ready(function(){
// 대상자 이름, 생년월일, 대상자TB ID
function fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd){
/* function fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd){
var form = document.regForm;
form.trgtNm.value = trgtNm;
form.dBirth.value = dBirth;
@ -230,8 +230,28 @@ $(document).ready(function(){
}
});
}
} */
function fn_eduRegPopup(trgtNm, dBirth, sspnIdtmtTrgtOrd){
var data ={
"prcsAplctPrdOrd": $('#regForm input[name="prcsAplctPrdOrd"]').val()
, "trgtNm" : trgtNm
, "dBirth" : dBirth
, "sspnIdtmtTrgtOrd" :sspnIdtmtTrgtOrd
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctPop.do"
// "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduAplctPop.do"
, 800
, 800
, data
, "N"
, "eduRegPopup"
);
}
function fn_dayDiff(item){
var startDt = item.eduStrtPnttm;
@ -358,13 +378,14 @@ $(document).ready(function(){
if(returnData.next == "Y")
{
//sspnIdtmtTrgtOrd = returnData.id;
fncEduReg(trgtNm, dBirth, returnData.id);
// fncEduReg(trgtNm, dBirth, returnData.id);
fn_eduRegPopup(trgtNm, dBirth, returnData.id);
}
}else{
alert(returnData.msg);
}
// fn_target_confirm_clean();
location.reload();
// location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);

View File

@ -0,0 +1,269 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 기소유예 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="/offedu/visitEdu/adm/publish/css/reset.css">
<style>
.duet-date__dialog-content,.duet-date__dialog{max-width:400px;width:364px;}
.popup_wrap.popType01{left: 25%;width: 50%;}
.twoRow{width: 100%;}
input::placeholder {
/* color: red; */
font-size: 0.7em;
/* font-style: italic; */
}
</style>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
const dBirth = document.querySelector(".dBirth");
dBirth.localization = {
placeholder: '생년월일을 선택하세요',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
identifier: "searchStartDt",
incrementYears:100,
}
$('#fldSelect').change(function(){
console.log($(this).val());
console.log($(this).val() == '99');
if($(this).val() == '99'){
$('#fld').val('');
$('#fld').attr('type', 'text');
}else{
$('#fld').val($('#fldSelect option:selected').text());
$('#fld').attr('type', 'hidden');
}
})
// $('#fld').hide();
});
// value 체크
// 20231130 이호영
function fnValidation(){
var valChk = true
// 텍스트 입력 필드에 값이 있는지 확인
$('input[type="text"]').not('#fld').each(function() {
if ($(this).val() == '') {
var fieldName = $(this).closest('td').prev('th').find('p').text();
alert(fieldName + '를 입력해주세요.');
$(this).focus();
valChk = false
return false; // 함수 실행 중지
}
});
// alert 두번 방지 if
if(valChk){
if(!$('#chkY').prop("checked")){
alert('개인정보 처리 동의해 주세요.')
return false;
}
}
return valChk;
}
function fncEduReg(){
if(!fnValidation()){
return false;
}
var data = new FormData(document.getElementById("regForm2"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/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);
}
});
}
$('#target_confirm_popup-close').click();
}
</script>
<form id="regForm2" name="regForm2" method="post">
<input type="hidden" name="prcsAplctPrdOrd" value="${vEPrcsDetailVO.prcsAplctPrdOrd}">
<!-- 대상자 테이블 PK -->
<input type="hidden" name="sspnIdtmtTrgtOrd" value="${vEPrcsDetailVO.sspnIdtmtTrgtOrd}">
<input type="hidden" name="trgtNm" value="${vEPrcsDetailVO.trgtNm}">
<input type="hidden" name="dBirth" value="${vEPrcsDetailVO.dBirth}">
<!-- 신청인정보 -->
<div class="tooltip-wrap q_pop">
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="target_confirm_popup" data-focus="target_confirm_popup" data-focus-prev="target_confirm_popup_close">
<div class="popup_tit">
<p id="popNm">신청인정보</p>
<button class="btn_popup_close tooltip-close" data-focus="target_confirm_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type01" style="overflow:visible;">
<table>
<caption>신청인정보를 입력하는 표</caption>
<colgroup>
<col style="width: 170px;">
<col style="width: auto;">
<col style="width: 170px;">
<col style="width: auto;">
</colgroup>
<tbody>
<!-- <tr>
<th scope="row">
<p>성명</p>
</th>
<td>
<input type="text" class="twoRow" name="chrgNm" id="chrgNm"/>
</td>
<th scope="row">
<p>생년월일</p>
</th>
<td>
<div class="calendar_wrap">
<duet-date-picker identifier="date" class="dBirth" name="dBirth" min="1940-01-01" max="2025-12-31"></duet-date-picker>
</div>
</td>
</tr> -->
<tr>
<th scope="row">
<p>핸드폰</p>
</th>
<td>
<input type="text" class="twoRow" name="phone" id="phone"/>
</td>
<th scope="row">
<p>이메일</p>
</th>
<td>
<input type="text" class="twoRow" name="email" id="email"/>
</td>
</tr>
<%-- <tr>
<th scope="row">
<p>소속기업</p>
</th>
<td>
<input type="text" class="twoRow" name="insttNm" id="insttNm"/>
</td>
</tr>
<tr>
<th scope="row">
<p>분야</p>
</th>
<td>
<ve:select codeId="VEA014" id="fldSelect" css="class='selType1'"
selectedValue="" defaultValue=''
defaultText="선택"
/>
<!-- <input type="text" class="twoRow" name="fld" id="fld"/> -->
<td colspan="2">
<input type="hidden" placeholder="직접 입력해주세요" class="twoRow" name="fld" id="fld"/>
</td>
</tr>
<tr>
<th scope="row">
<p>저작권 교육 수강 여부</p>
</th>
<td>
<input type="text" class="lctrYn" name="lctrYn" id="lctrYn"/>
</td>
</tr>
<tr>
<th scope="row">
<p>교육관련 사전질의</p>
</th>
<td colspan="2">
<input type="text" name="prvsQs" id="prvsQs" style="width: 100%;"/>
</td>
</tr> --%>
<!-- <tr> -->
<!-- <td colspan="3"> -->
<!-- </td> -->
<!-- </tr> -->
</tbody>
</table>
</div>
<pre>개인정보 처리 동의서
한국저작권위원회에서는 귀하의 개인정보를 중요시하며, 개인정보보호법 제15조, 제17조, 제22조, 제23조 및 제24조에 따라 아래와 같이 개인정보 처리에 관하여 동의를 얻고자 합니다.
&lt;개인정보 수집 및 이용에 대한 동의 &gt;
ο 개인정보의 수집 이용 목적 : 이수증 발급, 이수자 관리
ο 수집하는 개인정보 항목 : 성명, 생년월일, 휴대전화, 이메일
ο 개인정보의 보유 및 이용기간 : 사업 종료시까지
ο 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 : 귀하의 개인정보 제공 및 동의를 거부할 권리가 있으며, 위 항목 동의 거부시 수강신청 및 이수증 발급이 어려워질 수 있음
</pre>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<input type="checkbox" name="chkYn" id="chkY" value="Y"/><label for="chkY">동의</label>
</div>
<div class="btn_right">
</div>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" id="regButton" onclick="fncEduReg();">신청</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="target_confirm_popup-close" data-focus-next="target_confirm_popup">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->
</form>