2023-10-31 16:56 수정 사항 반영

This commit is contained in:
myname 2023-10-31 16:57:00 +09:00
parent 16c2a9fcb2
commit dcd285011d
12 changed files with 1710 additions and 10 deletions

View File

@ -14,9 +14,12 @@ public interface VEEduMIXService {
//L
List<VEEduAplctVO> selectList(VEEduAplctVO paramVO) throws Exception;
//Page List
//Page List - 대상별(차시단위)
List<VEEduAplctVO> selectPagingList(VEEduAplctVO paramVO) throws Exception;
//신청별(신청단위)
List<VEEduAplctVO> selectPagingApplyList(VEEduAplctVO paramVO) throws Exception;
/* 2023-0607 월별교육과정 통계와 데이터가 맞지 않아 쿼리 수정함 */
List<VEEduAplctVO> selectPagingList_20230607(VEEduAplctVO paramVO) throws Exception;

View File

@ -43,6 +43,12 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
return tlist;
}
public List<VEEduAplctVO> selectPagingApplyList(VEEduAplctVO paramVO) throws Exception {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectPagingApplyList", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectPagingList_20230607(VEEduAplctVO paramVO) throws Exception {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectPagingList_20230607", paramVO);

View File

@ -41,6 +41,11 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
return vEEduMIXDAO.selectPagingList(paramVO);
}
public List<VEEduAplctVO> selectPagingApplyList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectPagingApplyList(paramVO);
}
//paging List
public List<VEEduAplctVO> selectPagingList_20230607(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectPagingList_20230607(paramVO);

View File

@ -198,7 +198,7 @@ public class EduAplctMngTngrController {
* 2023-04-28 우영두
*
* */
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingApplyList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
vEEduAplctVO.setSearchChrgNm(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchChrgNm()));
//3.pageing step3
@ -209,6 +209,79 @@ public class EduAplctMngTngrController {
return "oprtn/tngrVisitEdu/eduAplctMngList";
}
/**
* 교육신청관리 목록 화면(대상별)
*/
@RequestMapping("eduAplctMngTrgtList.do")
public String eduAplctMngTrgtList( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , HttpSession session, ModelMap model ) throws Exception {
LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
//기준년도가 없으면 최종 신청년도가 속한 회차의 년도를 기본값으로 가져온다. // 없으면 올해가 기본
/*
{
if ("".equals(vEEduAplctVO.getStngYr()) || vEEduAplctVO.getStngYr()==null) {
VEAStngVO vEAStngVO = new VEAStngVO();
String s_stngYr = vEAStngMixService.selectEduGetStngYrToStr(vEAStngVO);
vEEduAplctVO.setStngYr(s_stngYr);
}
}
*/
//년도
if(StringUtils.isBlank(vEEduAplctVO.getSearchYear())){
//vEEduAplctVO.setSearchYear(String.valueOf(LocalDate.now().getYear()));
}
//
if(StringUtils.isBlank(vEEduAplctVO.getSearchMonth())){
vEEduAplctVO.setSearchMonth(String.valueOf(LocalDate.now().getMonthValue()));
}
if(!"".equals(vEEduAplctVO.getSearchChrgNm())) {
vEEduAplctVO.setSearchChrgNm(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchChrgNm()));
}
// 요청, 반려건
//vEEduAplctVO.setSearchNotStatusArr(new String[]{"60"});
// 청소년
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO);
//정렬
if("".equals(vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
vEEduAplctVO.setOrderByQuery("A.SBMT_PNTTM DESC");
}else{
vEEduAplctVO.setOrderByQuery(vEEduAplctVO.getSearchSortCnd() + " " +vEEduAplctVO.getSearchSortOrd());
}
System.out.println("vEEduAplctVO.getOrderByQuery() :: "+ vEEduAplctVO.getOrderByQuery());
//2. pageing step2
vEEduAplctVO = this.setPagingStep2Sub(vEEduAplctVO, paginationInfo);
vEEduAplctVO.setNotiUserId(user.getUniqId());
vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString());
/*
* 리스트 검색에서 교육일자 시작/종료일 입력 없이 검색시
* 기존 searchEndDt where 조건에 1=2로 되어있어서 리스트 검색이 안되던 것을
* 저작위 요청사항으로 1=1로 변경하여 날짜 입력이 안되어도 검색이 되도록 수정함
* 2023-04-28 우영두
*
* */
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
vEEduAplctVO.setSearchChrgNm(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchChrgNm()));
//3.pageing step3
paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEEduAplctVOList);
return "oprtn/tngrVisitEdu/eduAplctMngTrgtList";
}
/**
* 교육신청관리 목록 화면
*/
@ -834,6 +907,36 @@ public class EduAplctMngTngrController {
return "oprtn/tngrVisitEdu/eduAplctMailDetail";
}
/**
* 청소년 교육확정 메일본문 미리보기 페이지
*/
@RequestMapping("popup/eduAplctMailPreviewDetail.do")
public String eduAplctMailPreviewDetail( @ModelAttribute("cntManageVO") CntManageVO cntManageVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
try {
//샘플소스
cntManageVO.setCntId("CNT_000000000000");
cntManageVO.setCntDtId("CNTDT_0000000000");
cntManageVO = egovCntManageService.selectCntDtDetail(cntManageVO);
model.addAttribute("cntManageVO", cntManageVO);
//본문적용소스
cntManageVO.setCntId("CNT_000000000001");
cntManageVO.setCntDtId("CNTDT_0000000001");
cntManageVO = egovCntManageService.selectCntDtDetail(cntManageVO);
model.addAttribute("cntManageVO2", cntManageVO);
}catch(Exception ex) {
ex.printStackTrace();
}
return "oprtn/tngrVisitEdu/popup/eduAplctMailPreviewDetail";
}
/**
* 청소년 교육확정 메일본문 수정
*/

View File

@ -768,6 +768,7 @@
, b.end_oprtn_dt AS endOprtnDt
, b.instt_nm AS insttNm
, b.hope_sbjct AS hopeSbjct
, b.EDU_PLACE AS eduPlace
, a.memo_cn AS memoCn
, ((SUBSTR(a.end_tm, 1,2) - SUBSTR(a.strt_tm, 1,2)) * 60) + (SUBSTR(a.end_tm, 3,4) - SUBSTR(a.strt_tm, 3,4)) AS eduTM
@ -917,6 +918,7 @@
, b.chrg_nm AS chrgNm
, b.phone AS phone
, b.email AS email
, b.edu_place AS eduPlace
, b.end_oprtn_dt AS endOprtnDt
, b.instt_div_cd AS insttDivCd
, b.schol_div_cd AS scholDivCd

View File

@ -328,6 +328,10 @@
, CC.EDU_HOPE_DT AS eduHopeDt
, CC.EDU_CHASI_ORD AS eduChasiOrd
, CC.lrn_tm AS lrnTm
, CC.strt_tm AS strtTm
, CC.end_tm AS endTm
, D.USER_NM AS userNm
, E.CHRG_MJR AS chrgMjr
, E.D_BIRTH AS dBirth
@ -510,6 +514,8 @@
EDU_APLCT_ORD
,EDU_CHASI_ORD
,SUM(lrn_tm) AS lrn_tm
,MIN(strt_tm) AS strt_tm
,MIN(end_tm) AS end_tm
,MIN(
REPLACE(
/*
@ -930,6 +936,753 @@
</isNotEqual>
</select>
<!-- 강사 정보 L page -->
<select id="VEEduMIXDAO.selectPagingApplyList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectPagingApplyList */
SELECT
COUNT(1) OVER() AS totCnt
, ROWNUM AS rowNo
, A.EDU_CN AS eduCn
<isNotEmpty property="s4Excel">
, A.EDU_SLCT_CD AS eduSlctCd
, (SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0008'
AND a0.code =a.edu_slct_area_cd
)
AS eduSlctAreaCd
, (SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0009'
AND a0.code =a.schol_div_cd
)
AS scholDivCd
, (SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0003'
AND a0.code =a.aprvl_cd
)
AS aprvlCd
/*
, IF(A.APRVL_CD = '60', TO_CHAR(A.APRVL_PNTTM, 'YYYY.MM.DD'), '-') AS aprvlPnttm
*/
, CASE WHEN A.APRVL_CD = '60' THEN TO_CHAR(A.APRVL_PNTTM, 'YYYY.MM.DD') ELSE '-' END AS aprvlPnttm
, A.frst_Regist_Pnttm AS frstRegistPnttm
</isNotEmpty>
<isEmpty property="s4Excel">
, A.EDU_SLCT_CD AS eduSlctCd
, A.EDU_SLCT_AREA_CD AS eduSlctAreaCd
, A.SCHOL_DIV_CD AS scholDivCd
, A.APRVL_CD AS aprvlCd
, TO_CHAR(A.APRVL_PNTTM, 'YYYY.MM.DD') AS aprvlPnttm
</isEmpty>
, A.EDU_PLACE AS eduPlace
, A.SBMT_YN AS sbmtYn
, TO_CHAR(A.SBMT_PNTTM, 'YYYY.MM.DD') AS sbmtPnttm
, A.SCHOL_INSTT_NM AS scholInsttNm
, A.INSTT_NM AS InsttNm
, A.EDU_APLCT_ORD AS eduAplctOrd
, A.EDU_TRGT AS eduTrgt
, A.EDU_PRSNL AS eduPrsnl
, A.CHRG_NM AS chrgNm
, A.JOB_NM AS jobNm
, A.USE_YN AS useYn
, A.MDFY_RQST_YN AS mdfyRqstYn
, A.EQPMN_CN AS eqpmnCn
, A.BLNG AS blng
, A.DPRTM AS dprtm
, A.FULL_NAME AS fullName
, A.PSTN AS pstn
, A.PRPS AS prps
, A.RPRT_SBMT_DT AS rprtSbmtDt
, A.hope_sbjct AS hopeSbjct
, A.isltn_schol_yn AS isltnScholYn
, A.clphone AS clphone
, A.phone AS phone
, A.Email AS email
, A.Addr AS addr
, A.IS_WAIT AS isWait
, A.CORPS_EDU AS corpsEdu
, A.BROADROOM_EDU AS broadroomEdu
, A.ADMIN_UPDT_YN AS adminUpdtYn
, A.OATH_ATCH_FILE_ID AS oathAtchFileId
, A.PLAN_ATCH_FILE_ID AS planAtchFileId
,(
SELECT
MAX(S2.PRCS_NM)||
CASE WHEN COUNT(*) > 1 THEN '외' || (COUNT(*)-1)
ELSE '' END AS PRCS_NM
FROM VE_EDU_APLCT_ONLN S1 INNER JOIN VE_PRCS S2
ON S1.PRCS_ORD = S2.PRCS_ORD
WHERE 1=1
AND S1.EDU_APLCT_ORD = A.EDU_APLCT_ORD
GROUP BY S1.EDU_APLCT_ORD
/*
ORDER BY S1.PRCS_ORD
*/
) AS prcsGroupNm
, A.INSTT_DIV_CD AS insttDivCd
, A.FRST_REGISTER_ID AS frstRegisterId
, TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY.MM.DD') AS frstRegistPnttm
, A0.CNT-1 AS cnt
, A0.PRCS_ORD AS prcsOrd
, A0.PRCS_NM AS prcsNm
, CC.lrn_tm AS lrnTm
, CC.EDU_HOPE_DT AS eduHopeDt
, CC.EDU_CHASI_ORD AS eduChasiOrd
, CC.strt_tm AS strtTm
, CC.end_tm AS endTm
, D.USER_NM AS userNm
, E.CHRG_MJR AS chrgMjr
, E.D_BIRTH AS dBirth
, E.CHRG_SEX_CD AS chrgSexCd
, E.CMPLT_YEAR AS cmpltYear
, E.CMPLT_NUM AS cmpltNum
, E.EXPRN_CLSRN_CD AS exprnClsrnCd
, E.EXPRN_CLSRN_YEAR AS exprnClsrnYear
, E.EXPRN_CLSRN_APLCT AS exprnClsrnAplct
, E.EXPRN_CLSRN_APLCT_CN AS exprnClsrnAplctCn
, E.TRGT_GRADE AS trgtGrade
, E.TRGT_CLSRM AS trgtClsrm
, E.TRGT_PRSNL AS trgtPrsnl
, E.RPRT_SBMT AS rprtSbmt
, E.OPRTN_STRT_DT AS oprtnStrtDt
, E.OPRTN_END_DT AS oprtnEndDt
, E.OPRTN_FILE_ID AS oprtnFileId
, H.APRVL_CD AS rprtAprvlCd
, (
SELECT
S3.end_pnttm
FROM ve_prcs_aplct_prd S3
WHERE S3.use_YN = 'Y' AND S3.frst_regist_pnttm = (SELECT MAX(frst_regist_pnttm) FROM ve_prcs_aplct_prd)
) AS endPnttm
, (
SELECT
S4.end_pnttm
FROM ve_prcs_aplct_prd S4
WHERE S4.prcs_aplct_prd_ord = A.prcs_ord
) AS prcsEndPnttm
, (
SELECT
COUNT(1)
FROM ve_edu_chasi_instr_asgnm X
, ve_edu_chasi y
WHERE A.edu_aplct_ord = X.edu_aplct_ord
AND X.asgnm_aprvl_cd = '30'
AND x.EDU_APLCT_ORD=y.EDU_APLCT_ORD
AND x.EDU_CHASI_ORD=y.EDU_CHASI_ORD
) AS instrCnfrmCnt
,(
SELECT
/*
COUNT(1)
*/
sum(NVL(chasi,1))
FROM ve_edu_chasi Z
WHERE Z.edu_aplct_ord = A.edu_aplct_ord
) AS chasiCnt
,
/*
(
SELECT COUNT(1)
FROM ve_new_noti e
WHERE ((A.edu_aplct_ord = e.tbl_uniq_ord OR CC.edu_aplct_ord = e.tbl_uniq_ord) OR CC.edu_chasi_ord = e.tbl_uniq_ord)
AND e.menu_no = menuNo
AND e.frst_register_id = notiUserId
)
AS notiCnt,
*/
( SELECT
COUNT(1)
FROM ve_acmdt_aplct ZZ
, VE_EDU_CHASI YY
WHERE A.EDU_APLCT_ORD = ZZ.EDU_APLCT_ORD
AND ZZ.EDU_APLCT_ORD = YY.EDU_APLCT_ORD
AND ZZ.EDU_CHASI_ORD = YY.EDU_CHASI_ORD
AND ZZ.sbmt_yn = 'Y'
AND ZZ.APRVL_CD = '10'
) AS acmdtCnt,
( SELECT COUNT(1)
FROM VE_ACMDT_APLCT ZZ
, VE_EDU_CHASI YY
WHERE A.EDU_APLCT_ORD = ZZ.EDU_APLCT_ORD
AND ZZ.EDU_APLCT_ORD = YY.EDU_APLCT_ORD
AND ZZ.EDU_CHASI_ORD = YY.EDU_CHASI_ORD
AND ZZ.SBMT_YN = 'Y'
) AS acmdtAllCnt
,(
SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
) AS isEndCnt
,(
SELECT sum(a0.EDU_PRSNL)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
) AS endEduPrsnl
, g.edu_strt_dt AS eduStrtDt
, g.edu_end_dt AS eduEndDt
/*
, IF(A.APRVL_CD='20'
and
(
SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
)>0
, g.edu_reg_dt
, ''
) AS eduRegDt
*/
/*
, IF(A.APRVL_CD='20'
and
(
SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
)>0
and length(g.edu_strt_dt)=8
and length(g.edu_end_dt)=8
,
SUBSTRING(g.edu_strt_dt,1,4) || '.' || SUBSTRING(g.edu_strt_dt,5,2) || '.' || SUBSTRING(g.edu_strt_dt,7,2)
|| '~'
|| SUBSTRING(g.edu_end_dt,1,4) || '.' || SUBSTRING(g.edu_end_dt,5,2) || '.' || SUBSTRING(g.edu_end_dt,7,2)
, ''
) AS eduDt
*/
FROM VE_EDU_APLCT A LEFT OUTER JOIN (
SELECT
AA.EDU_APLCT_ORD
, AA.CNT
, AA.PRCS_ORD
, BB.PRCS_NM
FROM (
SELECT
A.EDU_APLCT_ORD
, COUNT(*) CNT
, MIN(B.PRCS_ORD) PRCS_ORD
FROM VE_EDU_APLCT A , VE_EDU_APLCT_ONLN B
WHERE A.EDU_APLCT_ORD = B.EDU_APLCT_ORD
GROUP BY A.EDU_APLCT_ORD
)AA, VE_PRCS BB
WHERE AA.PRCS_ORD = BB.PRCS_ORD
)A0 ON(A.EDU_APLCT_ORD = A0.EDU_APLCT_ORD)
/*
LEFT OUTER JOIN (
SELECT
EDU_APLCT_ORD
,EDU_CHASI_ORD
,SUM(lrn_tm) AS lrn_tm
,MIN(
REPLACE(
CASE WHEN EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = '' THEN NULL ELSE EDU_HOPE_DT END
, '.'
, ''
)
) AS EDU_HOPE_DT
FROM VE_EDU_CHASI
GROUP BY EDU_APLCT_ORD, EDU_CHASI_ORD
) CC ON A.EDU_APLCT_ORD = CC.EDU_APLCT_ORD
*/
LEFT OUTER JOIN
(
SELECT vec4.*
FROM (
SELECT vec1.edu_aplct_ord, min(vec1.EDU_CHASI_ORD) edu_chasi_ord
FROM ve_edu_chasi vec1
,(
SELECT EDU_APLCT_ORD
, MIN(
/* IF(EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = '', NULL, EDU_HOPE_DT) */
CASE
WHEN EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = ''
THEN '9999.12.31'
ELSE EDU_HOPE_DT
END ) AS EDU_HOPE_DT
FROM ve_edu_chasi
GROUP BY EDU_APLCT_ORD
)vec2
WHERE vec1.edu_aplct_ord=vec2.edu_aplct_ord
AND vec1.edu_hope_dt=vec2.edu_hope_dt
GROUP BY vec1.edu_aplct_ord
)vec3
, ve_edu_chasi vec4
WHERE vec3.edu_aplct_ord=vec4.edu_aplct_ord
AND vec3.edu_chasi_ord=vec4.edu_chasi_ord
)CC
ON A.EDU_APLCT_ORD = CC.EDU_APLCT_ORD
LEFT OUTER JOIN COMVNUSERMASTER D
ON A.USER_ID = D.USER_ID
LEFT OUTER JOIN VE_EDU_OPRTN E
ON A.EDU_APLCT_ORD = E.EDU_APLCT_ORD
<isEqual property="lctrDivCd" compareValue="20">
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm DD
ON (
A.EDU_APLCT_ORD = DD.EDU_APLCT_ORD
AND CC.EDU_CHASI_ORD = DD.EDU_CHASI_ORD
)
LEFT OUTER JOIN ve_instr_detail F
ON (DD.USER_ID = F.USER_ID
AND F.USE_YN = 'Y'
<isNotEmpty property="instrDiv">
AND F.instr_div = #instrDiv#
</isNotEmpty>
AND F.INSTR_DIV = #instrDiv#)
</isEqual>
LEFT OUTER JOIN
(
/*
SELECT edu_aplct_ord, edu_strt_dt, edu_end_dt , DATE_FORMAT(sbmt_pnttm,'%Y%m%d') AS edu_reg_dt
FROM ve_prcs_cmplt_detail
GROUP BY edu_aplct_ord, edu_strt_dt, edu_end_dt , DATE_FORMAT(sbmt_pnttm,'%Y%m%d')
*/
SELECT edu_aplct_ord, edu_strt_dt, edu_end_dt , TO_CHAR(sbmt_pnttm,'YYYYMMDD') AS edu_reg_dt
FROM ve_prcs_cmplt_detail
GROUP BY edu_aplct_ord, edu_strt_dt, edu_end_dt , TO_CHAR(sbmt_pnttm,'YYYYMMDD')
) G
ON A.EDU_APLCT_ORD = G.EDU_APLCT_ORD
LEFT OUTER JOIN ve_edu_rslt_rprt H
ON A.EDU_APLCT_ORD = H.EDU_APLCT_ORD
WHERE 1=1
/*
AND IFNULL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
*/
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
<isEmpty property="sbmtYn">
AND A.SBMT_YN = 'Y'
</isEmpty>
<isNotEmpty property="sbmtYn">
AND A.SBMT_YN != 'Y'
</isNotEmpty>
<isNotEmpty property="searchAcmdtCnt">
AND
(
SELECT
COUNT(1)
FROM
ve_acmdt_aplct ZZ
WHERE
A.edu_aplct_ord = ZZ.edu_aplct_ord
AND
ZZ.sbmt_yn = 'Y'
) > 0
</isNotEmpty>
<isNotEmpty property="lctrDivCd">
AND A.LCTR_DIV_CD = #lctrDivCd#
</isNotEmpty>
<isNotEmpty property="aprvlCd">
AND A.APRVL_CD=#aprvlCd#
</isNotEmpty>
<isNotEmpty property="searchStartDt">
AND CC.EDU_HOPE_DT <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndDt">
AND CC.EDU_HOPE_DT <![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchStartSbmtPnttm">
AND TO_CHAR(A.SBMT_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartSbmtPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndSbmtPnttm">
AND TO_CHAR(A.SBMT_PNTTM,'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndSbmtPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchStartRegistPnttm">
AND TO_CHAR(A.FRST_REGIST_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartRegistPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndRegistPnttm">
AND TO_CHAR(A.FRST_REGIST_PNTTM,'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndRegistPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchStratAprvlPnttm">
AND TO_CHAR(A.APRVL_PNTTM, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStratAprvlPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndAprvlPnttm">
AND TO_CHAR(A.APRVL_PNTTM, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndAprvlPnttm#, '.' , '')
</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>
<isNotEmpty property="searchScholDivCd">
AND A.SCHOL_DIV_CD = #searchScholDivCd#
</isNotEmpty>
<isEmpty property="searchStartDt">
<isEmpty property="searchEndDt">
AND 1=1
</isEmpty>
</isEmpty>
<isNotEmpty property="searchEduSlctAreaCd">
AND (
(
A.EDU_SLCT_AREA_CD = #searchEduSlctAreaCd#
AND
A.EDU_SLCT_CD = '20'
)
OR
(
'400' = #searchEduSlctAreaCd#
AND
A.EDU_SLCT_CD = '10'
)
)
</isNotEmpty>
<isNotEmpty property="searchEduSlctAreaCd2">
AND (
A.EDU_SLCT_AREA_CD = #searchEduSlctAreaCd2#
OR
'400' = #searchEduSlctAreaCd2#
)
</isNotEmpty>
<isNotEmpty property="searchEduSlctCd">
AND A.EDU_SLCT_CD = #searchEduSlctCd#
</isNotEmpty>
<isNotEmpty property="searchInsttDivCd">
AND A.INSTT_DIV_CD = #searchInsttDivCd#
</isNotEmpty>
<isNotEmpty property="userId">
AND A.USER_ID = #userId#
</isNotEmpty>
<isNotEmpty property="frstRegisterId">
AND A.FRST_REGISTER_ID = #frstRegisterId#
</isNotEmpty>
<isNotEmpty property="searchScholNm">
AND A.SCHOL_INSTT_NM LIKE '%' || #searchScholNm# || '%'
</isNotEmpty>
<isEmpty property="searchCondition">
<isNotEmpty property="searchKeyword">
AND (
A.SCHOL_INSTT_NM LIKE '%' || #searchKeyword# '%' OR
A.INSTT_NM LIKE '%' || #searchKeyword# || '%'
)
</isNotEmpty>
</isEmpty>
<isNotEmpty property="searchCondition">
<isEqual property="searchCondition" compareValue="1">
AND A.SCHOL_INSTT_NM LIKE '%' || #searchKeyword# || '%'
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND A.CHRG_NM LIKE '%' || #searchKeyword# || '%'
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchChrgNm">
AND A.CHRG_NM LIKE '%' || #searchChrgNm# , '%')
</isNotEmpty>
<isNotEmpty property="searchStatusArr">
<iterate open="(" close=")" conjunction="," property="searchStatusArr" prepend="AND A.APRVL_CD IN " > #searchStatusArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchNotStatusArr">
<iterate open="(" close=")" conjunction="," property="searchNotStatusArr" prepend="AND A.APRVL_CD NOT IN " > #searchNotStatusArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchScholDivCdArr">
<iterate open="(" close=")" conjunction="," property="searchScholDivCdArr" prepend="AND A.SCHOL_DIV_CD IN " > #searchScholDivCdArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchStatus">
<isEqual property="searchStatus" compareValue="99">
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM VE_PRCS_CMPLT_DETAIL
WHERE edu_aplct_ord = A.edu_aplct_ord ) bb
WHERE bb.CNT <![CDATA[ > ]]> 0
) > 0
</isEqual>
<isNotEqual property="searchStatus" compareValue="99">
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM VE_PRCS_CMPLT_DETAIL
WHERE edu_aplct_ord = A.edu_aplct_ord ) bb
WHERE bb.CNT = 0
) = 0
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchStateYear">
AND TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY') = #searchStateYear#
</isNotEmpty>
<isNotEmpty property="searchStateStatusArr">
AND
(1=2
<iterate property="searchStateStatusArr" >
<isEqual property="searchStateStatusArr[]" compareValue="10">
<!-- OR (A.strt_oprtn_dt <![CDATA[ <= ]]> TO_CHAR(NOW(), 'YYYYMMDD') AND end_oprtn_dt <![CDATA[ >= ]]> TO_CHAR(NOW(), 'YYYYMMDD')) -->
OR (E.oprtn_strt_dt <![CDATA[ <= ]]> TO_CHAR(NOW(), 'YYYYMMDD') AND E.oprtn_end_dt <![CDATA[ >= ]]> TO_CHAR(NOW(), 'YYYYMMDD'))
</isEqual>
<isEqual property="searchStateStatusArr[]" compareValue="20">
<!-- OR
(
A.end_oprtn_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = a.edu_aplct_ord ) AA
WHERE AA.CNT = 0
)
) -->
OR
(
E.oprtn_end_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = A.edu_aplct_ord )
= 0
)
</isEqual>
<isEqual property="searchStateStatusArr[]" compareValue="30">
<!-- OR
(
A.end_oprtn_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = a.edu_aplct_ord ) AA
WHERE AA.CNT <![CDATA[ > ]]> 0
)
) -->
OR
(
E.oprtn_end_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = A.edu_aplct_ord )
> 0
)
</isEqual>
<isEqual property="searchStateStatusArr[]" compareValue="40">
/* 서류제출완료 */
OR(
1=1
)
</isEqual>
</iterate>
)
</isNotEmpty>
<isNotEmpty property="searchStateStatusArr">
<iterate property="searchStateStatusArr" >
<isEqual property="searchStateStatusArr[]" compareValue="40">
/* 서류제출완료 */
AND
(
a.oath_atch_file_id IS NOT NULL
OR a.trans_atch_file_id IS NOT null
)
</isEqual>
</iterate>
</isNotEmpty>
<isNotEmpty property="searchChsYn">
AND A.MDFY_RQST_YN = #searchChsYn#
</isNotEmpty>
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
<isNotEmpty property="eduAplctOrd">
AND A.EDU_APLCT_ORD = #eduAplctOrd#
</isNotEmpty>
<isNotEmpty property="searchStatus2">
/* 교육콘텐츠 신청 > 수강신청 목록 셀렉트박스 검색자 */
<isEqual property="searchStatus2" compareValue="90">
AND A.APRVL_CD = '20'
AND
( SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N') ='Y'
) > 0
</isEqual>
<isNotEqual property="searchStatus2" compareValue="90">
AND A.APRVL_CD = #searchStatus2#
AND 0>=
( SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N') ='Y'
)
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchYear">
/*저작권 체험교실 년도 검색*/
AND TO_CHAR(A.SBMT_PNTTM,'YYYY') = #searchYear#
</isNotEmpty>
<isNotEmpty property="eduSlctAreaCd">
/*저작권 체험교실 지역 검색*/
AND A.EDU_SLCT_AREA_CD = #eduSlctAreaCd#
</isNotEmpty>
<isNotEmpty property="searchCpyAprvlCd">
/*저작권 체험교실 상태 검색*/
AND A.APRVL_CD = #searchCpyAprvlCd#
</isNotEmpty>
<isNotEmpty property="searchFullName">
/*교육콘텐츠 신청자 검색*/
AND (
/*
A.FULL_NAME like '%' || searchFullName || '%'
OR A.BLNG like concat('%', searchFullName, '%')
*/
A.FULL_NAME like '%'||#searchFullName#||'%'
OR A.BLNG like '%'||#searchFullName#||'%'
)
</isNotEmpty>
<isEqual property="searchAdminUpdtYn" compareValue="Y">
AND A.ADMIN_UPDT_YN = 'Y'
</isEqual>
/*
ORDER BY 1=1
*/
ORDER BY 1
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
<isNotEqual property="mode" compareValue="EXCEL">
/*
LIMIT recordCountPerPage OFFSET firstIndex
*/
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</isNotEqual>
</select>
<!-- 성인 찾아가는 저작권교육 교육배치확정관리 목록 -->
<select id="VEEduMIXDAO.selectAdultPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectAdultPagingList */

View File

@ -92,6 +92,16 @@
);
}
//fncPreviewEmail
function fncPreviewEmail(){
//document.listForm.authorCode.value = vAuthorCode;
//document.listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/popup/advRndsStngMngPopup.do'/>";
document.listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/popup/eduAplctMailPreviewDetail.do'/>";
window.open("#", "_aplctPreviewPop", "scrollbars = no, top=100px, left=100px, height=800px, width=1000px");
document.listForm.target = "_aplctPreviewPop";
document.listForm.submit();
}
//발송
function fncContent(p_url, p_cd, p_cn, p_flag
, p_clphone1
@ -156,13 +166,14 @@
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
<col style="width: 220px;height:100px;">
<col style="width: auto;height:100px;">
</colgroup>
<tr>
<th scope="row"><p>메일 샘플 코드</p> </th>
<td>
<c:out value='${cntManageVO.cntCn}' escapeXml="false" />
<%-- <c:out value='${cntManageVO.cntCn}' escapeXml="false" /> --%>
<c:out value='${cntManageVO.cntCn}' escapeXml="true" />
</td>
</tr>
<tr>
@ -190,6 +201,7 @@
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<button type="button" class="btn_type03" onclick="fncPreviewEmail();return false;">메일 미리보기</button>
</div>
<div class="btn_center">
<button type="button" class="btn_type08" onclick="fncUpdate();return false;">메일 본문 수정</button>
@ -214,7 +226,10 @@
</div>
</div>
</div>
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;">
<input type="hidden" name="yr" id="yr" value=""/>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -305,6 +305,7 @@
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_WAIT ? 'selected' : ''} value="${VeConstants.STATUS_CD_WAIT}">대기</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
<ve:select codeId="VE0009" name="searchScholDivCd" id="searchScholDivCd" styleClass="sel_type1" selectedValue="${vEEduAplctVO.searchScholDivCd}" defaultValue="" defaultText='전체'/>
@ -375,7 +376,7 @@
<option value='1000' <c:if test="${vEEduAplctVO.pageUnit == '1000'}">selected</c:if>>1000줄</option>
</select>
<button type="button" class="btn_type03" onclick="fncPrintListPopup(); return false;">신청서 일괄출력</button>
<button type="button" class="btn_down_excel" onclick="excelDownLoad();">엑셀 다운로드</button>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoad();">엑셀 다운로드</button> -->
</div>
</div>
@ -391,6 +392,7 @@
<col style="width: auto;">
<col style="width: 6%">
<col style="width: 6%">
<col style="width: 6%">
<col style="width: 8%">
<col style="width: 10%">
<col style="width: 8%">
@ -403,8 +405,9 @@
<th>교육일자<button class="sort sortBtn" id="sort_eduHopeDt">▲</button></th>
<th>신청일자<button class="sort sortBtn" id="sort_sbmtPnttm">▲</button></th>
<th>지역</th>
<th>학교(기관)명</th>
<th>학교(기관)명<button class="sort sortBtn" id="sort_scholInsttNm">▲</button></th>
<th>신청시간</th>
<th>소요시간<button class="sort sortBtn" id="sort_lrnTm">▲</button></th>
<th>학교구분</th>
<th>담당자</th>
<th>신청상태</th>
@ -436,7 +439,7 @@
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}');">
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyyMMdd"/>
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyy.MM.dd"/>
<fmt:formatDate value="${eduHopeDt}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>
@ -463,6 +466,15 @@
<c:out value="${list.scholInsttNm}"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<fmt:parseDate value="${list.strtTm}" var="strtTm" pattern="kkmm"/>
<fmt:formatDate value="${strtTm}" pattern="kk:mm"/>
~
<fmt:parseDate value="${list.endTm}" var="endTm" pattern="kkmm"/>
<fmt:formatDate value="${endTm}" pattern="kk:mm"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<c:out value="${list.lrnTm}"/>
@ -556,7 +568,7 @@
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
<button type="button" class="btn_type06" onclick="fncSndSms(); return false;">교육확정알림</button>
<!-- <button type="button" class="btn_type06" onclick="fncSndSms(); return false;">교육확정알림</button> -->
</div>
</div>
<!-- page -->

View File

@ -0,0 +1,590 @@
<!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="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" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
.list_util .btn_type03 {
height: 40px;
padding: 0 18px 0 18px
margin: 0 2px;
font-size: 18px;
text-align: center;
vertical-align: middle;
letter-spacing: -0.8px;
border-radius: 5px;
box-sizing: border-box;
transition: background-color .1s linear;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
});
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduAplctMngReg.do'/>";
listForm.submit();
}
function linkPhonePage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduAplctMngPhoneList.do'/>";
listForm.submit();
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduAplctMngTrgtList.do'/>";
listForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncGoDetail(eduAplctOrd){
/*
var listForm = document.listForm ;
listForm.eduAplctOrd.value = eduAplctOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduAplctMngDetail.do'/>";
listForm.submit();
*/
alert("상세내용은 신청별 페이지를 통해 접근 가능합니다.");
}
function excelDownLoad(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduAplctExcelDownLoad.do'/>";
listForm.submit();
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if($(this).prop('tagName') == 'SELECT'){
if($(this).attr('name').indexOf('Month') != -1){
$(this).val(new Date().getMonth()+1);
}else if($(this).attr('name').indexOf('Year') != -1){
$(this).val(new Date().getFullYear());
}else if($(this).attr('name').indexOf('stngYr') != -1){
$(this).val('${vEEduAplctVO.stngYr}');
}else{
$(this).prop("selectedIndex", 0);
}
}else{
$(this).val('');
}
});
}
//체크박스 전체 선택
function chkAll(thisObj){
$("input[name=chk]").prop("checked" , $(thisObj).is(":checked"));
}
// 신청서 일괄 출력
function fncPrintListPopup() {
if ($("input:checkbox[name='chk']:checked").length <= 0) {
alert("출력할 신청목록을 하나 이상 체크하세요.");
}
else {
commonPopWindowopenForm(
"${pageContext.request.contextPath}/kccadr/oprtn/tngrVisitEdu/popup/eduAplctMngDetailListPopup.do"
, "1000"
, "700"
, "ListPrintPopup",$("#listForm")
);
}
}
function fncChkStatusUpdate() {
var chkLen = $(listForm).find("input[name=chk]:checked").length;
var statusVal = $("#saveStatus option:selected").val();
if(chkLen == 0){
alert("선택된 항목이 없습니다.");
return;
}
if(statusVal == ''){
alert('상태를 선택해주세요.');
return false;
}
$("#aprvlCd").val(statusVal);
var data1 = new FormData(document.getElementById("listForm"));
if(confirm("상태를 변경 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/comm/eduAplctStatusListAjax.do",
data: data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.rsCnt > 0){
if(returnData.result == 'success'){
alert("저장 되었습니다.");
location.reload();
}
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
//sms 발송
function fncSndSms(){
var chkLen = $(listForm).find("input[name=chk]:checked").length;
if(chkLen == 0){
alert("선택된 항목이 없습니다.");
return;
}
var fnExit = false;
var chkAplctChasi = "";
var phones = "";
var emails = "";
var chkLength = $('input:checkbox[name="chk"]:checked').length;
$('input:checkbox[name="chk"]:checked').each(function(idx) {
if($(this).attr("class") != "60") {
alert("선택한 목록 중 교욱확정알림이 불가능한 건이 있습니다.");
fnExit = true;
}
if(idx === chkLength - 1) {
//chkAplctChasi += $(this).val();
chkAplctChasi += $(this).data("chasi");
phones += $(this).data("phone");
emails += $(this).data("email");
} else {
//chkAplctChasi += $(this).val() + ",";
chkAplctChasi += $(this).data("chasi") + ",";
phones += $(this).data("phone") + ",";
emails += $(this).data("email") + ",";
}
});
//체크한 리스트 중 해당 상태에 실행 불가능한 건이 있는지 체크 후, 존재 시 함수 종료
if(fnExit) return false;
var p_smsMsg = "[찾아가는 저작권 교육] 확정된 교육이 있습니다.확인해주세요.";
fncContent(
"${pageContext.request.contextPath}/kccadr/oprtn/pblc/smsSndAjax.do",
"10",
p_smsMsg,
chkAplctChasi,
phones,
emails,
"Z"
);
}
//발송
function fncContent(p_url, p_cd, p_cn, chkAplctChasi, phones, emails, sndFlag){
$.ajax({
type: "POST",
// enctype: 'multipart/form-data',
url:p_url,
//data: data,
data:{
"sndCd": p_cd,
"sndCn": p_cn,
"chk": chkAplctChasi,
"clphone": phones,
"email" : emails,
"sndFlag" : sndFlag
},
dataType:'json',
/*
async: false,
processData: false,
contentType: false,
cache: false,
*/
success:function(returnData){
if(returnData.result == "success"){
alert("정상적으로 발송되었습니다.");
location.reload();
}else{
alert("발송 중 오류가 발생하였습니다.");
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>신청관리</title>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" value="" />
<input type="hidden" name="aprvlCd" id="aprvlCd" value="" />
<input type="hidden" name="lctrDivCd" id="lctrDivCd" value="<c:out value="${vEEduAplctVO.lctrDivCd}" />" />
<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">
<!-- list_top -->
<div class="list_top">
<!--
<div class="list_top_1">
<div class="util_left">
<p>기준년도</p>
</div>
<div class="util_right">
<label for="searchStatus2" class="label">신청상태 선택</label>
<ve:select codeId="VE0029" name="stngYr" id="stngYr" css="class='sel_type1'"
selectedValue="${vEEduAplctVO.stngYr}"
onChange="fncGoListReset(); return false;"
/>
</div>
</div>
-->
<div class="list_top_1">
<div class="util_left">
<p>구분</p>
</div>
<div class="util_right">
<label for="searchStatus2" class="label">신청상태 선택</label>
<select class="sel_type1" id="searchStatus2" name="searchStatus2">
<option ${vEEduAplctVO.searchStatus2 eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_WAIT ? 'selected' : ''} value="${VeConstants.STATUS_CD_WAIT}">대기</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
<ve:select codeId="VE0009" name="searchScholDivCd" id="searchScholDivCd" styleClass="sel_type1" selectedValue="${vEEduAplctVO.searchScholDivCd}" defaultValue="" defaultText='전체'/>
<ve:select codeId="VE0008" name="searchEduSlctAreaCd" id="searchEduSlctAreaCd" styleClass="sel_type1" selectedValue="${vEEduAplctVO.searchEduSlctAreaCd}" defaultValue="" defaultText='전체'/>
</div>
</div>
<div class="list_top_1">
<div class="util_left">
<p>학교(기관)명</p>
</div>
<div class="util_right">
<input type="text" id="searchScholNm" name="searchScholNm" class="search_input" placeholder="검색어를 입력하세요" value="${vEEduAplctVO.searchScholNm}" onkeyDown="press(event);">
</div>
</div>
<div class="list_top_1">
<div class="util_left">
<p>신청자명</p>
</div>
<div class="util_right">
<input type="text" id="searchChrgNm" name="searchChrgNm" class="search_input" placeholder="검색어를 입력하세요" value="${vEEduAplctVO.searchChrgNm}" onkeyDown="press(event);">
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>교육일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="${vEEduAplctVO.searchStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="endDate" name="searchEndDt" value="${vEEduAplctVO.searchEndDt}">
</div>
</div>
</div>
<div class="list_top_3">
<div class="util_left">
<p>신청일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEEduAplctVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEEduAplctVO.searchSmbtEndDt}">
</div>
<div style="padding-left:30px;">
관리자 수정 건만 보기<input type="checkbox" name="searchAdminUpdtYn" id="searchAdminUpdtYn" value="Y" <c:if test="${vEEduAplctVO.searchAdminUpdtYn eq 'Y'}">checked</c:if>>
</div>
</div>
</div>
</div>
<!-- //list_top -->
<!-- list util -->
<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">
<option value='10' <c:if test="${vEEduAplctVO.pageUnit == '10' or vEEduAplctVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEEduAplctVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEEduAplctVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEEduAplctVO.pageUnit == '100'}">selected</c:if>>100줄</option>
<option value='1000' <c:if test="${vEEduAplctVO.pageUnit == '1000'}">selected</c:if>>1000줄</option>
</select>
<!-- <button type="button" class="btn_type03" onclick="fncPrintListPopup(); return false;">신청서 일괄출력</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad();">엑셀 다운로드</button>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 10%">
<col style="width: auto;">
<col style="width: 6%">
<col style="width: 6%">
<col style="width: 6%">
<col style="width: 8%">
<col style="width: 10%">
<col style="width: 8%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="chkAll(this);" /><label for="checkAll"></label></th>
<th>번호</th>
<th>교육일자<button class="sort sortBtn" id="sort_eduHopeDt">▲</button></th>
<th>신청일자<button class="sort sortBtn" id="sort_sbmtPnttm">▲</button></th>
<th>지역</th>
<th>학교(기관)명<button class="sort sortBtn" id="sort_scholInsttNm">▲</button></th>
<th>신청시간</th>
<th>소요시간<button class="sort sortBtn" id="sort_lrnTm">▲</button></th>
<th>학교구분</th>
<th>담당자</th>
<th>신청상태</th>
<th>확정일자</th>
<th>관리자 수정 여부</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<c:choose>
<c:when test="${list.notiCnt == 0}">
<tr class="new_cont" title="<c:out value='${list.eduAplctOrd}'/>" style="cursor:pointer;">
</c:when>
<c:otherwise>
<tr title="<c:out value='${list.eduAplctOrd}'/>" style="cursor:pointer;">
</c:otherwise>
</c:choose>
<td>
<input name="chk" class="${list.aprvlCd}"
value="${list.eduAplctOrd}" title="Check" type="checkbox"
data-chasi="${list.eduAplctOrd}@${list.eduChasiOrd}" data-phone="<c:out value='${list.clphone}' />"
data-email="<c:out value='${list.email}' />"
/>
</td>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}');">
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${eduHopeDt}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<c:out value="${list.sbmtPnttm}"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<c:if test="${list.eduSlctCd eq '10'}">
(온)
</c:if>
<ve:code codeId="VE0008" code="${list.eduSlctAreaCd}"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<c:out value="${list.scholInsttNm}"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<fmt:parseDate value="${list.strtTm}" var="strtTm" pattern="kkmm"/>
<fmt:formatDate value="${strtTm}" pattern="kk:mm"/>
~
<fmt:parseDate value="${list.endTm}" var="endTm" pattern="kkmm"/>
<fmt:formatDate value="${endTm}" pattern="kk:mm"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<c:out value="${list.lrnTm}"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<ve:code codeId="VE0009" code="${list.scholDivCd}"/>
</a>
</td>
<td>
<a href="#" onclick="javascript:fncGoDetail('${list.eduAplctOrd}'); return false;">
<c:out value="${list.chrgNm}"/>
</a>
</td>
<td>
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_230}">
<span class="app_status1">대기</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_SBMT}">
<span class="app_status1">교육신청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CFRM}">
<span class="app_status2">교육승인</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_RJT}">
<span class="app_status4">교육반려</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CAN}">
<span class="app_status4">교육취소</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CHI_CMPT}">
<span class="app_status4">선정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<span class="app_status3">수정요청<c:if test="${list.isWait eq 'Y'}">(대기)</c:if></span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDT_CMPT}">
<span class="app_status3">수정완료<c:if test="${list.isWait eq 'Y'}">(대기)</c:if></span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDU_SELCT}">
<span class="app_status1">교육확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:if test="${list.aprvlCd eq VeConstants.STATUS_CD_EDU_SELCT}">
<p>${list.aprvlPnttm}</p>
</c:if>
</td>
<td>
<c:choose>
<c:when test="${list.adminUpdtYn eq 'Y'}">
</c:when>
<c:otherwise>
아니오
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="12"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<!--
<select id="saveStatus" name="saveStatus" class="sel_type1">
<option value="">상태선택</option>
<option value="${VeConstants.STATUS_CD_WAIT}">대기</option>
<option value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
<%-- <option value="${VeConstants.STATUS_CD_WAIT_N}">대기(삭제)</option> --%>
<%-- <option value="${VeConstants.STATUS_CD_WAIT_Y}">대기(처리)</option> --%>
</select>
<button type="button" class="btn_type05" onclick="fncChkStatusUpdate(); return false;">상태저장</button>
-->
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<!-- <button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button> -->
<button type="button" class="btn_type06" onclick="fncSndSms(); return false;">교육확정알림</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
</div>
</div>
</div>
</form:form>
<a href="#" onclick="javascript:linkPhonePage('1'); return false;">.</a>
</body>
</html>

View File

@ -0,0 +1,193 @@
<!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="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" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<% pageContext.setAttribute("replaceChar", "\n"); %>
<%
/**
* @Class Name : eduAplctMailPreviewDetail.jsp
* @Description : 메일 미리보기
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2022.04.05 안주영 최초 생성
* @author 안주영
* @since 2022.04.05
* @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 fncUpdate(){
if ($("#emailCn").val() == null || $("#emailCn").val() == ''){
alert("메일 본문 내용은 필수값입니다.");
return false;
}
if(confirm("메일 본문을 수정하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/tngrVisitEdu/eduAplctMailMdfyAjax.do",
data: {
"cntCn" : $("#emailCn").val()
},
dataType:'json',
success:function(returnData){
if(returnData.result == "success"){
alert("수정 되었습니다.");
location.reload(true);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
//이메일 발송
function fncSndEmail(){
var p_smsEmail = $("#emailCn").val();
if (p_smsEmail==""){
alert("이메일 발송 내용은 필수값입니다.");
return false;
}
if ($("#emailAddr").val() == null || $("#emailAddr").val() == ''){
alert("이메일 수신 주소는 필수값입니다.");
return false;
}
//alert($("#emailType").val());
//return false;
fncContent(
"${pageContext.request.contextPath}/kccadr/oprtn/pblc/emailSndAjax.do",
"20",
p_smsEmail,
//"C"
$("#emailType").val()
, $("#clphone1").val()
, $("#clphone2").val()
);
}
//fncPreviewEmail
function fncPreviewEmail(){
//document.listForm.authorCode.value = vAuthorCode;
document.listForm.action = "<c:url value='/oprtn/tngrVisitEdu/popup/eduAplctMailPreviewDetail.do'/>";
window.open("#", "_aplctPreviewPop", "scrollbars = no, top=100px, left=100px, height=800px, width=1000px");
document.listForm.target = "_aplctPreviewPop";
document.listForm.submit();
}
//발송
function fncContent(p_url, p_cd, p_cn, p_flag
, p_clphone1
, p_clphone2
){
$.ajax({
type: "POST",
// enctype: 'multipart/form-data',
url:p_url,
//data: data,
data:{
"sndCd": p_cd,
"sndCn": p_cn,
"eduAplctOrd": 'test',
"email": $("#emailAddr").val(),
"sndFlag": p_flag,
"clphone1": p_clphone1
, "clphone2": p_clphone2
},
dataType:'json',
/*
async: false,
processData: false,
contentType: false,
cache: false,
*/
success:function(returnData){
if(returnData.result == "success"){
alert("정상적으로 발송되었습니다.");
}else{
alert("발송 중 오류가 발생하였습니다.");
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>사용본문 미리보기(저장된 내용만 반영됩니다.)</h2>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_type02">
<table>
<colgroup>
<col style="width: auto;">
</colgroup>
<tr>
<td>
<c:out value='${cntManageVO2.cntCn}' escapeXml="false" />
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btn_type08" onclick="self.close();return false;">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
<!-- //cont -->
</body>
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;" action="">
<input type="hidden" name="yr" id="yr" value=""/>
</form:form>
</html>

View File

@ -440,6 +440,14 @@
</c:forEach>
</td>
</tr>
<tr>
<th scope="row">
<p>교육장소</p>
</th>
<td colspan="3">
${info.eduPlace}
</td>
</tr>
<tr class="trLength4">
<th scope="row">
<p>교육대상</p>

View File

@ -169,6 +169,14 @@ $( document ).ready(function() {
</c:forEach>
</td>
</tr>
<tr>
<th scope="row">
<p>교육장소</p>
</th>
<td colspan="3">
${info.eduPlace}
</td>
</tr>
<tr class="trLength4">
<th scope="row">
<p>교육대상</p>
@ -497,12 +505,14 @@ $( document ).ready(function() {
</th>
<td><c:out value="${info3.unqIsues}" /></td>
</tr>
<!--
<tr>
<th scope="row">
<p>건의사항</p>
</th>
<td><c:out value="${info3.sgstnIsues}" /></td>
</tr>
-->
</tbody>
</table>
</div>