This commit is contained in:
myname 2024-01-04 14:37:22 +09:00
commit 076a48613f
28 changed files with 1572 additions and 25 deletions

View File

@ -0,0 +1,67 @@
package kcc.com.cmm.util;
/**
*
* @author : 이호영
* @fileName : KoreanRegionEnum.java
* @date : 2024.01.02
* @description : VEA017 지역 이랑 코드 맞춰야함
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2024.01.02 이호영 최초 생성
*
*
*
*/
public enum KoreanRegionEnum {
GANGWON("10", "강원도", "강원"),
GYEONGGI("20", "경기도", "경기"),
GYEONGSANGNAM("30", "경상남도", "경남"),
GYEONGSANGBUK("40", "경상북도", "경북"),
GWANGJU("50", "광주광역시", "광주"),
DAEGU("60", "대구광역시", "대구"),
DAEJEON("70", "대전광역시", "대전"),
BUSAN("80", "부산광역시", "부산"),
SEOUL("90", "서울특별시", "서울"),
SEJONG("100", "세종특별자치시", "세종"),
ULSAN("110", "울산광역시", "울산"),
INCHEON("120", "인천광역시", "인천"),
JEOLLANAM("130", "전라남도", "전남"),
JEOLLABUK("140", "전라북도", "전북"),
JEJU("150", "제주특별자치도", "제주"),
CHUNGCHEONGNAM("160", "충청남도", "충남"),
CHUNGCHEONGBUK("170", "충청북도", "충북");
private final String order;
private final String fullName;
private final String shortName;
KoreanRegionEnum(String order, String fullName, String shortName) {
this.order = order;
this.fullName = fullName;
this.shortName = shortName;
}
public static KoreanRegionEnum fromOrder(String order) {
for (KoreanRegionEnum region : values()) {
if (region.getOrder().equals(order)) {
return region;
}
}
throw new IllegalArgumentException("No enum constant with order: " + order);
}
public String getOrder() {
return order;
}
public String getFullName() {
return fullName;
}
public String getShortName() {
return shortName;
}
}

View File

@ -16,13 +16,16 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.EgovMessageSource;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.util.IpUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
@ -36,6 +39,7 @@ import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService;
@ -93,12 +97,20 @@ public class VEAdultAsgnmController {
//NOTI 서비스
@Resource(name="vEAsgnmNotiService")
private VEAsgnmNotiService vEAsgnmNotiService;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//강의교환
@Resource(name="veaLctrExchnOrdGnrService")
private EgovIdGnrService veaLctrExchnOrdGnrService;
//성인강사 강의 요청 목록
@RequestMapping("/web/ve/instr/adultVisitEdu/asgnmInfo/instrAsgnmRqstList.do")
public String instrAsgnmRqstList(
@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
@ -140,8 +152,7 @@ public class VEAdultAsgnmController {
}
List<VEInstrAsgnmVO> vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmRqstPagingList(vEInstrAsgnmVO);
//6.pageing step3
paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
@ -154,10 +165,152 @@ public class VEAdultAsgnmController {
//대상 리스트, 페이징 정보 전달
model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList);
return "/web/ve/instr/adultVisitEdu/asgnmInfo/instrAsgnmRqstList";
}
@RequestMapping("/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListPopup.do")
public String instrAsgnmListPopup(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
System.out.println("vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getEduAplctOrd());
System.out.println("vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getEduChasiOrd());
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();
//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("20");
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
vEPrcsDetailVO.setLoginId(loginVO.getUniqId());;
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 "/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListPopup";
// return "/web/ve/instr/adultVisitEdu/asgnmInfo/instrAsgnmRqstList";
}
@RequestMapping("/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup.do")
public String instrAsgnmListExchnPopup(
@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
model.addAttribute("ssoLoginVO", ssoLoginVO);
model.addAttribute("loginVO", loginVO);
//로그인 처리====================================
//3.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO);
//4. pageing step2
vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo);
vEInstrAsgnmVO.setUserId(loginVO.getUniqId());
vEInstrAsgnmVO.setInstrDiv("20");
vEInstrAsgnmVO.setHstryCd("10");
try {
System.out.println("session.getAttribute(menuNo).toString()");
System.out.println(session.getAttribute("menuNo").toString());
vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString());
}catch(Exception ex) {
ex.printStackTrace();
vEInstrAsgnmVO.setMenuNo("9991100");
}
vEInstrAsgnmVO.setSearchAsgnmAprvlCd("20");
List<VEInstrAsgnmVO> vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmRqstPagingList(vEInstrAsgnmVO);
//6.pageing step3
paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//fee 계산하기
//feeSum4Dp
// vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList);
//대상 리스트, 페이징 정보 전달
model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList);
return "/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup";
}
//성인강사 강의 추가신청 목록
@RequestMapping("/web/ve/instr/adultVisitEdu/asgnmInfo/instrAsgnmAddRqstList.do")
@ -524,6 +677,8 @@ public class VEAdultAsgnmController {
return modelAndView;
}
/**
* 숙박신청 등록 처리
*/
@ -683,4 +838,55 @@ public class VEAdultAsgnmController {
return p_paginationInfo;
}
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
VEPrcsDetailVO p_vEPrcsDetailVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex());
// paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit());
paginationInfo.setRecordCountPerPage(5);
paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEPrcsDetailVO setPagingStep2(
VEPrcsDetailVO p_vEPrcsDetailVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord");
p_vEPrcsDetailVO.setSearchSortOrd("desc");
}
return p_vEPrcsDetailVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setInstrPagingStep3(
List<VEInstrDetailVO> p_vEInstrDetailVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEInstrDetailVOList.size() > 0) totCnt = p_vEInstrDetailVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
}

View File

@ -123,4 +123,10 @@ public interface VEAsgnmMIXService {
List<VEPrcsDetailVO> selectFndtnVisitAsgnmPagingList(VEPrcsDetailVO vEPrcsDetailVO);
VEInstrAsgnmVO findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrAsgnmVO);
void insertFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrAsgnmVO);
List<VEInstrAsgnmVO> findAllFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrVO);
}

View File

@ -161,6 +161,15 @@ public class VEInstrAsgnmVO extends ComDefaultVO implements Serializable {
private String cmmNotifyOrd; //평균점수
private String selectRsdneQuery; // 지역쿼리
private String exchnOrd;
private String exchnCd;
private String toUserId;
private String toEduAplctOrd;
private String toEduChasiOrd;
public String getMemoCn() {
@ -799,5 +808,41 @@ public class VEInstrAsgnmVO extends ComDefaultVO implements Serializable {
public void setCmmNotifyOrd(String cmmNotifyOrd) {
this.cmmNotifyOrd = cmmNotifyOrd;
}
public String getSelectRsdneQuery() {
return selectRsdneQuery;
}
public void setSelectRsdneQuery(String selectRsdneQuery) {
this.selectRsdneQuery = selectRsdneQuery;
}
public String getExchnOrd() {
return exchnOrd;
}
public void setExchnOrd(String exchnOrd) {
this.exchnOrd = exchnOrd;
}
public String getExchnCd() {
return exchnCd;
}
public void setExchnCd(String exchnCd) {
this.exchnCd = exchnCd;
}
public String getToUserId() {
return toUserId;
}
public void setToUserId(String toUserId) {
this.toUserId = toUserId;
}
public String getToEduAplctOrd() {
return toEduAplctOrd;
}
public void setToEduAplctOrd(String toEduAplctOrd) {
this.toEduAplctOrd = toEduAplctOrd;
}
public String getToEduChasiOrd() {
return toEduChasiOrd;
}
public void setToEduChasiOrd(String toEduChasiOrd) {
this.toEduChasiOrd = toEduChasiOrd;
}
}

View File

@ -219,5 +219,17 @@ public class VEAsgnmMIXDAO extends EgovAbstractDAO {
public List<VEPrcsDetailVO> selectFndtnVisitAsgnmPagingList(VEPrcsDetailVO paramVO) {
return (List<VEPrcsDetailVO>) list("VEAsgnmMIXDAO.selectFndtnVisitAsgnmPagingList", paramVO);
}
public VEInstrAsgnmVO findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo(VEInstrAsgnmVO paramVO) {
return (VEInstrAsgnmVO) select("VEAsgnmMIXDAO.findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo", paramVO);
}
public void insertFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrAsgnmVO) {
insert("VEAsgnmMIXDAO.insertFromVeaLctrExchnInfo", vEInstrAsgnmVO);
}
public List<VEInstrAsgnmVO> findAllFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrVO) {
return (List<VEInstrAsgnmVO>) list("VEAsgnmMIXDAO.findAllFromVeaLctrExchnInfo", vEInstrVO);
}
}

View File

@ -200,5 +200,20 @@ public class VEAsgnmMIXServiceImpl implements VEAsgnmMIXService {
public List<VEPrcsDetailVO> selectFndtnVisitAsgnmPagingList(VEPrcsDetailVO paramVO) {
return vEAsgnmMIXDAO.selectFndtnVisitAsgnmPagingList(paramVO);
}
@Override
public VEInstrAsgnmVO findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrAsgnmVO) {
return vEAsgnmMIXDAO.findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo(vEInstrAsgnmVO);
}
@Override
public void insertFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrAsgnmVO) {
vEAsgnmMIXDAO.insertFromVeaLctrExchnInfo(vEInstrAsgnmVO);
}
@Override
public List<VEInstrAsgnmVO> findAllFromVeaLctrExchnInfo(VEInstrAsgnmVO vEInstrVO) {
return vEAsgnmMIXDAO.findAllFromVeaLctrExchnInfo(vEInstrVO);
}
}

View File

@ -1,5 +1,6 @@
package kcc.ve.instr.tngrVisitEdu.asgnmInfo.web;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
@ -15,10 +16,13 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.EgovMessageSource;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.util.IpUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
@ -37,6 +41,7 @@ import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService;
@ -95,7 +100,14 @@ public class VEAsgnmController {
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
//강사MIX 정보
@Resource(name="vEInstrMixService")
private VEInstrMixService vEInstrMixService;
//강의교환
@Resource(name="veaLctrExchnOrdGnrService")
private EgovIdGnrService veaLctrExchnOrdGnrService;
//청소년강사 강의 요청 목록
@RequestMapping("/web/ve/instr/tngrVisitEdu/asgnmInfo/instrAsgnmRqstList.do")
@ -150,15 +162,245 @@ public class VEAsgnmController {
paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 교환상태 확인
vEInstrAsgnmVOList.stream().forEach(t-> {
if("20".equals(t.getAsgnmAprvlCd())) {
VEInstrAsgnmVO veaLctrExchnInfo = vEAsgnmMIXService.findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo(t);
if(veaLctrExchnInfo != null) {
t.setExchnOrd(veaLctrExchnInfo.getExchnOrd());
t.setExchnCd(veaLctrExchnInfo.getExchnCd());
}
}
});
//대상 리스트, 페이징 정보 전달
model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList);
// 교환강의신청목록 영역
// 교환강의신청목록 영역
// 교환강의신청목록 영역
VEInstrAsgnmVO vEInstrVO = new VEInstrAsgnmVO();
vEInstrVO.setToUserId(loginVO.getUniqId());
//3.pageing step1
// PaginationInfo paginationTwoInfo = this.setPagingStep1(vEInstrAsgnmVO);
//4. pageing step2
// vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationTwoInfo);
List<VEInstrAsgnmVO> veaLctrExchnInfo = vEAsgnmMIXService.findAllFromVeaLctrExchnInfo(vEInstrVO);
veaLctrExchnInfo.stream().forEach(t-> {
t.setInstrNm(egovCryptoUtil.decrypt(t.getInstrNm()));
});
model.addAttribute("veaLctrExchnInfo", veaLctrExchnInfo);
//6.pageing step3
// paginationTwoInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationTwoInfo);
// model.addAttribute("paginationTwoInfo", paginationTwoInfo);
return "/web/ve/instr/tngrVisitEdu/asgnmInfo/instrAsgnmRqstList";
}
//청소년강사 강의 추가신청 목록
@RequestMapping("/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup.do")
public String instrAsgnmListExchnPopup(
@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
model.addAttribute("ssoLoginVO", ssoLoginVO);
model.addAttribute("loginVO", loginVO);
//로그인 처리====================================
//3.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO);
//4. pageing step2
vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo);
vEInstrAsgnmVO.setUserId(loginVO.getUniqId());
vEInstrAsgnmVO.setInstrDiv("10");
vEInstrAsgnmVO.setHstryCd("10");
try {
System.out.println("session.getAttribute(menuNo).toString()");
System.out.println(session.getAttribute("menuNo").toString());
vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString());
}catch(Exception ex) {
ex.printStackTrace();
vEInstrAsgnmVO.setMenuNo("999231100");
}
vEInstrAsgnmVO.setSearchAsgnmAprvlCd("20");
List<VEInstrAsgnmVO> vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmRqstPagingList(vEInstrAsgnmVO);
//6.pageing step3
paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//fee 계산하기
//feeSum4Dp
// vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList);
//대상 리스트, 페이징 정보 전달
model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList);
return "/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup";
}
@RequestMapping("/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListPopup.do")
public String instrAsgnmListPopup(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingInstrStep1(vEInstrDetailVO);
//2. pageing step2
vEInstrDetailVO = this.setPagingInstrStep2(vEInstrDetailVO, paginationInfo);
//3. SelectPagingListQuery set 조건 설정
String selectCondition = new String();
//3.1 제출 완료 사용중인 데이터 조회
selectCondition += "AND a0.sbmt_yn='Y' AND a0.use_yn = 'Y'";
//3.2 강사 테이블 성인강사여부 Y인것만 조회
//selectCondition += "AND (b0.tngr_instr_yn ='Y' OR a0.qlfct_end_yn = 'Y') ";
List<VEInstrDetailVO> vEInstrDetailVOList = new ArrayList<VEInstrDetailVO>();
//3.3 이름 검색
if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchKeyword())){
//이름 암호화 - comDefaultVO 검색단어 공통 암호화
ComDefaultVO comDefaultVO = new ComDefaultVO();
comDefaultVO.setSearchKeyword(vEInstrDetailVO.getSearchKeyword());
comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO);
vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
//selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
selectCondition += "AND a0.instr_nm LIKE '%'||'" +vEInstrDetailVO.getSearchKeyword() + "'||'%'";
comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO);
vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
//정보변경 요청사항 있는 강사부터 조회
vEInstrDetailVO.setOrderByQuery(" rqstCnt DESC ");
vEInstrDetailVO.setInstrDiv("10");
vEInstrDetailVO.setSelectPagingListQuery(selectCondition);
vEInstrDetailVOList = vEInstrMixService.selectPagingDetailList(vEInstrDetailVO);
vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList);
}
//3.4 요청일 시작일 검색
/*if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchStartDt())){
selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') >= REPLACE('"+vEInstrDetailVO.getSearchStartDt()+"', '.', '')";
}
//3.5 요청일 종료일 검색
if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchEndDt())){
selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <= REPLACE('"+vEInstrDetailVO.getSearchEndDt()+"', '.', '')";
}*/
//4.pageing step3
paginationInfo = this.setPagingInstrStep3(vEInstrDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailVOList);
return "/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListPopup";
// return "/web/ve/instr/tngrVisitEdu/asgnmInfo/instrAsgnmAddRqstList";
}
/**
* 교환 신청 Insert
* 교환 신청 Insert
* 교환 신청 Insert
* 교환 신청 Insert
*/
@RequestMapping("/web/ve/instr/tngrVisitEdu/asgnmInfo/insertVeaLctrExchnAjax.do")
public ModelAndView insertVeaLctrExchnAjax(
@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
Boolean isSuccess = true;
String msg = "";
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
vEInstrAsgnmVO.setFrstRegisterId(loginVO.getUniqId());
vEInstrAsgnmVO.setUserId(loginVO.getUniqId());
vEInstrAsgnmVO.setExchnOrd(veaLctrExchnOrdGnrService.getNextStringId()); // 고유ID
vEAsgnmMIXService.insertFromVeaLctrExchnInfo(vEInstrAsgnmVO);
} catch (Exception ex) {
ex.printStackTrace();
isSuccess = false;
msg = ex.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
@RequestMapping("/web/ve/instr/tngrVisitEdu/asgnmInfo/instrAsgnmAddRqstList.do")
public String instrAsgnmAddRqstList(
@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO
@ -850,4 +1092,55 @@ public class VEAsgnmController {
return p_paginationInfo;
}
/// 강사 페이징을 위한 paging
//청소년강사 강의 추가신청 목록
private PaginationInfo setPagingInstrStep3(
List<VEInstrDetailVO> p_vEInstrDetailVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEInstrDetailVOList.size() > 0) totCnt = p_vEInstrDetailVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
private VEInstrDetailVO setPagingInstrStep2(
VEInstrDetailVO p_vEInstrDetailVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEInstrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEInstrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEInstrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEInstrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEInstrDetailVO.setSearchSortCnd("sbmt_pnttm");
p_vEInstrDetailVO.setSearchSortOrd("desc");
}
return p_vEInstrDetailVO;
}
private PaginationInfo setPagingInstrStep1(
VEInstrDetailVO p_vEInstrDetailVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEInstrDetailVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEInstrDetailVO.getPageUnit());
paginationInfo.setPageSize(p_vEInstrDetailVO.getPageSize());
return paginationInfo;
}
}

View File

@ -315,6 +315,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
////////////////paging///////////////
private String selectPagingListQuery;
private String selectRsdneQuery;
private String searchRsdne;
private String orderByQuery;
//운영신청 목록 셀렉트박스 검색구분자
@ -374,6 +376,18 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setSelectPagingListQuery(String selectPagingListQuery) {
this.selectPagingListQuery = selectPagingListQuery;
}
public String getSelectRsdneQuery() {
return selectRsdneQuery;
}
public void setSelectRsdneQuery(String selectRsdneQuery) {
this.selectRsdneQuery = selectRsdneQuery;
}
public String getSearchRsdne() {
return searchRsdne;
}
public void setSearchRsdne(String searchRsdne) {
this.searchRsdne = searchRsdne;
}
public String getOrderByQuery() {
return orderByQuery;
}

View File

@ -27,6 +27,8 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable {
private String lastUpdtPnttm; // 수정일시
private String lastUpdusrId; // 수정자
private String searchRsdne; // 수정자
private String checkTopSum;
private String weekCnt;
private List<String> userIdList = new ArrayList<String>();
@ -299,6 +301,12 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable {
public void setLastUpdusrId(String lastUpdusrId) {
this.lastUpdusrId = lastUpdusrId;
}
public String getSearchRsdne() {
return searchRsdne;
}
public void setSearchRsdne(String searchRsdne) {
this.searchRsdne = searchRsdne;
}
public String getInstrDiv() {
return instrDiv;
}

View File

@ -68,4 +68,6 @@ public interface VEPrcsAplctPrdService {
List<VEPrcsDetailVO> selectOneDayBeforeTrainingStartDate(VEPrcsDetailVO vEPrcsDetailVO);
List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO vEPrcsDetailVO) throws Exception;
}

View File

@ -208,6 +208,8 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String qestnrId20Cnt;
private String qestnrId30Cnt;
private String loginId;
public String getEduPrcsOrd() {
return eduPrcsOrd;
@ -1013,6 +1015,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setQestnrId30Cnt(String qestnrId30Cnt) {
this.qestnrId30Cnt = qestnrId30Cnt;
}
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
}

View File

@ -79,6 +79,11 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return tlist;
}
public List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception {
List<VEPrcsDetailVO> tlist = (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth", paramVO);
return tlist;
}
public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception {
return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne", paramVO);
}

View File

@ -71,6 +71,11 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
return vEPrcsAplctPrdDAO.selectPagingList4Fndth(paramVO);
}
public List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception{
return vEPrcsAplctPrdDAO.selectCfnPagingList4Fndth(paramVO);
}
//R
public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception {
return vEPrcsAplctPrdDAO.selectDetailNewOne(paramVO);

View File

@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.epapyrus.common.util.StringUtils;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.LoginVO;
@ -24,6 +26,7 @@ import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.KoreanRegionEnum;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.kccadr.cmm.CmmUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
@ -170,12 +173,21 @@ public class EduCnfrmMngAdultController {
vEEduAplctVO.setLctrDivCd("20"); //성인강의
vEEduAplctVO.setAprvlCd("60"); //확정코드
// 지역검색
/* if(StringUtils.isNotEmpty(vEEduAplctVO.getSearchRsdne()))
{
// KoreanRegionEnum Class 참고
// VEA017 코드 번호만 넘기면 경상남도, 경남과 같은 값을 return함
// return "AND rsdne like '%' || '"+fullName+"' || '%' OR rsdne like '%' || '"+shortName+"' || '%' ";
vEEduAplctVO.setSelectRsdneQuery(this.getRsdneQueryStr(vEEduAplctVO.getSearchRsdne()));
}*/
if(!"".equals(vEEduAplctVO.getSearchInstrNm())) {
vEEduAplctVO.setSearchInstrNm(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchInstrNm()));
}
System.out.println("vEEduAplctVO.getAprvlCd()");
System.out.println(vEEduAplctVO.getAprvlCd());
System.out.println("vEEduAplctVO.getSearchRsdne()");
System.out.println(vEEduAplctVO.getSearchRsdne());
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO);
VEEduAplctVO vo = new VEEduAplctVO();
@ -193,11 +205,21 @@ public class EduCnfrmMngAdultController {
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEEduAplctVOList);
return "oprtn/adultVisitEdu/eduCnfrmMngList";
}
private String getRsdneQueryStr(String searchRsdne) {
KoreanRegionEnum region = KoreanRegionEnum.fromOrder(searchRsdne);
String fullName = region.getFullName();
String shortName = region.getShortName();
// return String.format("AND rsdne like '%' || '%s'|| '%' OR rsdne like '%' || '%s'|| '%' ", fullName, shortName);
return "AND (rsdne like '"+fullName+"' || '%' OR rsdne like '"+shortName+"' || '%' )";
}
/**
* 교육배치관리 상세 화면
*/
@ -310,11 +332,17 @@ public class EduCnfrmMngAdultController {
//String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request);
//if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo;
System.out.println("vEEduAplctVO.getSearchRsdne() : "+vEEduAplctVO.getSearchRsdne());
String searchRsdne = vEEduAplctVO.getSearchRsdne();
//로그인 처리====================================
//0.step0
//해당 처시 정보 가져오기 (온라인 오프라인 여부 신청내용 확인)
vEEduAplctVO = vEEduAplctService.selectDetailChasi(vEEduAplctVO);
System.out.println(vEEduAplctVO.getEduSlctCd()); //10-온라인, 20-오프라인
System.out.println(vEEduAplctVO.getAplctCn()); //신청내용
System.out.println(vEInstrAsgnmVO.getInstrNm()); //검색강사
@ -324,6 +352,9 @@ public class EduCnfrmMngAdultController {
String[] a_rr = null;
System.out.println("vEEduAplctVO.getAplctCn()"); //신청내용
@ -355,7 +386,15 @@ public class EduCnfrmMngAdultController {
}
// 지역검색
if(StringUtils.isNotEmpty(searchRsdne))
{
// KoreanRegionEnum Class 참고
// VEA017 코드 번호만 넘기면 경상남도, 경남과 같은 값을 return함
// return "AND rsdne like '%' || '"+fullName+"' || '%' OR rsdne like '%' || '"+shortName+"' || '%' ";
vEInstrAsgnmVO.setSelectRsdneQuery(this.getRsdneQueryStr(searchRsdne));
}
vEInstrAsgnmVO.setYr(vEEduAplctVO.getEduHopeDt().substring(0,4));
vEInstrAsgnmVO.setSearchQuery(s_searchQuery);
List<VEInstrAsgnmVO> selectVEInstrAsgnmVOList = vEAsgnmMIX2023Service.selectInstrAsgnmList_202311_adult(vEInstrAsgnmVO);

View File

@ -1676,7 +1676,7 @@ public class CndtnPrcsInfoMngController {
//vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectCfnPagingList4Fndth(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);

View File

@ -310,7 +310,7 @@ public class FndthPrcsAplctPrdMngController {
//vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectCfnPagingList4Fndth(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);

View File

@ -3061,7 +3061,6 @@
</bean>
<!-- 결과보고 테이블 -->
<bean name="veaRsltRprtOrdGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
<property name="dataSource" ref="dataSource" />
<property name="strategy" ref="veaRsltRprtOrdStrategy" /><!-- strategy 값 수정 -->
@ -3075,5 +3074,20 @@
<property name="cipers" value="12" /><!-- 일련번호(순번) 전체 길이(prefix길이 미포함) -->
<property name="fillChar" value="0" />
</bean>
<!-- 결과보고 테이블 -->
<bean name="veaLctrExchnOrdGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
<property name="dataSource" ref="dataSource" />
<property name="strategy" ref="veaLctrExchnOrdStrategy" /><!-- strategy 값 수정 -->
<property name="blockSize" value="10"/>
<property name="table" value="IDS"/>
<property name="tableName" value="VEA_RSLT_RPRT"/><!-- tableName 값 수정 -->
</bean>
<!-- 과정신청기간 ID Generation Strategy Config -->
<bean name="veaLctrExchnOrdStrategy" class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl"><!-- bean name 값에 strategy 값 입력 -->
<property name="prefix" value="veaExchn_" /><!-- prefix 값 수정 -->
<property name="cipers" value="11" /><!-- 일련번호(순번) 전체 길이(prefix길이 미포함) -->
<property name="fillChar" value="0" />
</bean>
</beans>

View File

@ -938,6 +938,9 @@
)
WHERE 1 =1
<isNotEmpty property="selectRsdneQuery">
$selectRsdneQuery$
</isNotEmpty>
AND b.user_id =a.user_id
AND b.use_yn ='Y'
AND b.INSTR_DIV ='20'

View File

@ -4969,7 +4969,84 @@
</select>
<!-- 배정 최대값 제한 산술식을 위한 해당 교육 차시에 속한 달의 강사 교육접수차시 가져오기 R -->
<!-- 교육,차시 pk값과 userId로 교환신청강의가 있는지 확인 -->
<select id="VEAsgnmMIXDAO.findByEduAplctOrdAndEduChasiOrdFromVeaLctrExchnInfo" parameterClass="VEInstrAsgnmVO" resultClass="VEInstrAsgnmVO">
SELECT
EXCHN_ORD as exchnOrd,
EDU_APLCT_ORD as eduAplctOrd,
EDU_CHASI_ORD as eduChasiOrd,
USER_ID as userId,
EXCHN_CD as exchnCd,
TO_USER_ID as toUserId,
TO_EDU_APLCT_ORD as toEduAplctOrd,
TO_EDU_CHASI_ORD as toEduChasiOrd,
FRST_REGIST_PNTTM as frstRegistPnttm,
FRST_REGISTER_ID as frstRegisterId,
LAST_UPDT_PNTTM as lastUpdtPnttm,
LAST_UPDUSR_ID as lastUpdusrId
FROM
VEA_LCTR_EXCHN
WHERE
EDU_APLCT_ORD = #eduAplctOrd#
AND EDU_CHASI_ORD = #eduChasiOrd#
AND USER_ID = #userId#
</select>
<!-- 교육,차시 pk값과 userId로 교환신청강의가 있는지 확인 -->
<select id="VEAsgnmMIXDAO.findAllFromVeaLctrExchnInfo" parameterClass="VEInstrAsgnmVO" resultClass="VEInstrAsgnmVO">
/* VEAsgnmMIXDAO.findAllFromVeaLctrExchnInfo */
SELECT
a.USER_ID
, d.INSTR_NM AS instrNm
, a.EDU_APLCT_ORD as eduAplctOrd
, a.EDU_CHASI_ORD as eduChasiOrd
, c.edu_hope_dt
, TO_CHAR(TO_DATE(c.STRT_TM, 'HH24MI'), 'HH24:MI') AS strtTm
, TO_CHAR(TO_DATE(c.END_TM, 'HH24MI'), 'HH24:MI') AS endTm
, b.EDU_SLCT_AREA_CD AS eduSlctAreaCd
, b.schol_instt_nm AS scholInsttNm
, c.TRGT AS trgt
FROM
VEA_LCTR_EXCHN a
LEFT JOIN VE_EDU_APLCT b
ON a.EDU_APLCT_ORD = b.EDU_APLCT_ORD
LEFT JOIN VE_EDU_CHASI c
ON a.EDU_CHASI_ORD = c.EDU_CHASI_ORD
LEFT JOIN VE_INSTR_DETAIL d ON
a.USER_ID = d.user_id
AND d.USE_YN = 'Y'
WHERE
a.TO_USER_ID = #toUserId#
</select>
<!-- 교환신청강의 insert -->
<insert id="VEAsgnmMIXDAO.insertFromVeaLctrExchnInfo" parameterClass="VEInstrAsgnmVO">
INSERT INTO VEA_LCTR_EXCHN (
EXCHN_ORD
, EDU_APLCT_ORD
, EDU_CHASI_ORD
, USER_ID
, EXCHN_CD
, TO_USER_ID
, FRST_REGIST_PNTTM
, FRST_REGISTER_ID
)VALUES(
#exchnOrd#,
#eduAplctOrd#,
#eduChasiOrd#,
#userId#,
'10',
#toUserId#,
SYSDATE,
#userId#
)
</insert>
<select id="VEAsgnmMIXDAO.selectTtlMntChasiSumDetail" parameterClass="VEInstrAsgnmVO" resultClass="VEInstrAsgnmVO">
/* VEAsgnmMIXDAO.selectTtlMntChasiSumDetail */
SELECT aa0.sumMntChasi ,

View File

@ -2609,6 +2609,7 @@
AND b.edu_chasi_ord = i.edu_chasi_ord
GROUP BY i.edu_aplct_ord , i.edu_chasi_ord
),0) AS rowNo
, e.rsdne as rsdne
FROM ve_edu_aplct a
, ve_edu_chasi b
@ -2686,7 +2687,7 @@
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
<isNotEmpty property="searchAsgnmAprvlCd">
<isEqual property="searchAsgnmAprvlCd" compareValue="90">
AND d.asgnm_aprvl_cd is null
@ -2736,6 +2737,11 @@
<isNotEmpty property="checkListQuery">
$checkListQuery$
</isNotEmpty>
<isNotEmpty property="selectRsdneQuery">
$selectRsdneQuery$
</isNotEmpty>
<isEqual property="searchSubmitYn" compareValue="Y">
AND AA.CNT <![CDATA[ >= ]]> 1

View File

@ -403,6 +403,78 @@
ORDER BY 1
<isEmpty property="orderByQuery">
, a.prcs_aplct_prd_ord desc
</isEmpty>
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
/*
LIMIT recordCountPerPage OFFSET firstIndex
*/
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<!-- 기반강화, 기소유예 확정 L page -->
<select id="VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth */
SELECT
COUNT(1) OVER() AS totCnt ,
<include refid="VEPrcsAplctPrdDAO.select_column_name"/>
, (SELECT user_nm FROM comvnusermaster WHERE esntl_id = a.frst_register_id) as frstRegisterNm
, (SELECT orignl_file_nm FROM lettnfiledetail WHERE atch_file_id = a.atch_file_id LIMIT 1) as atchFileNm
, b.prcs_nm as prcsNm
, b.prcs_div as prcsDiv
, (SELECT COUNT(*)
FROM ve_edu_aplct x
WHERE x.prcs_ord = a.prcs_aplct_prd_ord
AND x.sbmt_yn='Y'
AND x.aprvl_cd != 40 /*취소된 신청자 제거*/
AND x.aprvl_cd != 30 /*취소된 신청자 제거*/
) AS nosCnt1
/*
신청자 정보
*/
FROM
<include refid="VEPrcsAplctPrdDAO.table_name"/> a
, ve_prcs b
WHERE
1=1
AND a.prcs_ord=b.prcs_ord
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
<isNotEmpty property="lctrDivCd">
AND a.lctr_div_cd=#lctrDivCd#
</isNotEmpty>
<isNotEmpty property="prcsAplctPrdOrd">
AND a.prcs_aplct_prd_ord=#prcsAplctPrdOrd#
</isNotEmpty>
/*교육확정목록을 조회하기 위한 조건문*/
<isNotEmpty property="ddlnCd">
AND a.ddln_cd = #ddlnCd#
</isNotEmpty>
<isNotEmpty property="searchKeyword">
AND b.prcs_nm LIKE '%'|| #searchKeyword# ||'%'
</isNotEmpty>
ORDER BY 1
<isEmpty property="orderByQuery">
@ -607,6 +679,13 @@
<isNotEmpty property="userId">
AND a.user_id=#userId#
</isNotEmpty>
/*
교환 강사 목록을 위한 조건
내 id 제외
*/
<isNotEmpty property="loginId">
AND a.user_id!=#loginId#
</isNotEmpty>
<isNotEmpty property="instrDiv">
AND a.instr_div=#instrDiv#

View File

@ -560,8 +560,6 @@
</div>
<div class="util_right">
<input type="text" id="searchInsttNm" name="searchInsttNm" class="search_input" placeholder="검색어를 입력하세요" value="${vEEduAplctVO.searchInsttNm}" 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_1">
@ -585,8 +583,24 @@
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEEduAplctVO.searchEndDt}'/>">
</div>
<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">
<ve:select codeId="VEA017" name="searchRsdne" id="searchRsdne" css="class='sel_type1'"
selectedValue="${vEEduAplctVO.searchRsdne}" defaultValue=''
defaultText='전체'
/>
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div> --%>
</div>
<!-- //list_top -->

View File

@ -132,6 +132,10 @@
<div class="util_left">
<p>강사검색</p>
</div>
<ve:select codeId="VEA017" name="searchRsdne" id="searchRsdne" css="class='sel_type1'"
selectedValue="${vEEduAplctVO.searchRsdne}" defaultValue=''
defaultText='지역전체'
/>
<%-- <ve:select codeId="VE0008" name="searchEduSlctAreaCd" id="searchEduSlctAreaCd" css="class='sel_type1'" --%>
<%-- selectedText="${vEEduAplctVO.rsdne}" defaultValue='' --%>
<%-- defaultText='전체' --%>

View File

@ -252,7 +252,7 @@
<th>교육구분코드</th>
<th>과정명</th>
<th>교육기간</th>
<th>신청자/정원</th>
<th>승인자/정원</th>
<th>상태</th>
<th>강사배정</th>
<!-- <th>공개여부</th> -->

View File

@ -40,6 +40,39 @@
$(this).val('');
});
}
function fn_eduRegPopup(eduAplctOrd, eduChasiOrd){
var data ={
"eduAplctOrd": eduAplctOrd,
"eduChasiOrd": eduChasiOrd
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListPopup.do"
, 800
, 800
, data
, "N"
, "instrAsgnmListPopup"
);
}
function fn_eduExchnPopup(exchnOrd){
var data ={
"exchnOrd": exchnOrd
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup.do"
, 800
, 800
, data
, "N"
, "instrAsgnmListPopup"
);
}
</script>
<!-- cont -->
@ -95,7 +128,6 @@
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
@ -114,13 +146,13 @@
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyy.MM.dd"/> <!-- 요일 구하기 -->
<c:choose>
<c:when test="${list.notiCnt == 0}">
<tr class="new_cont" onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;">
<tr class="new_cont">
</c:when>
<c:otherwise>
<tr onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;">
<tr>
</c:otherwise>
</c:choose>
<td>
<td onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;">
<p>
<c:if test="${vEInstrAsgnmVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((vEInstrAsgnmVO.pageIndex -1)*vEInstrAsgnmVO.pageUnit) ) - status.index }"/>
@ -130,9 +162,9 @@
</c:if>
</p>
</td>
<td><p>${list.eduHopeDt}</p></td>
<td><p><fmt:formatDate value="${eduHopeDt}" pattern="E"/></p></td>
<td><p>
<td onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;"><p>${list.eduHopeDt}</p></td>
<td onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;"><p><fmt:formatDate value="${eduHopeDt}" pattern="E"/></p></td>
<td onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;"><p>
<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"/>
(<c:out value='${list.lrnTm}'/>분)
@ -175,6 +207,8 @@
</c:when>
</c:choose>
<td><span class="app_status1">${statCd}</span></td>
</tr>
</c:forEach>
<c:if test="${empty vEInstrAsgnmVOList}">
@ -183,6 +217,7 @@
</tbody>
</table>
</div>
<div class="tb_list01_m">
<c:forEach var="list" items="${vEInstrAsgnmVOList}" varStatus="status">
@ -244,7 +279,7 @@
</span>
</li>
<li>
<li>
<span>신청상태</span>
<c:set var="statCd" value="" />
@ -278,3 +313,58 @@
</div>
</form:form>
</div>
<!-- 교육대상자 확인 -->
<%-- <div class="tooltip-wrap">
<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>교환 대상 강사 아이디</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>
<colgroup>
<col style="width:38%;">
<col style="width:auto;">
</colgroup>
<tr>
<th>성명</th>
<td>
<input type="text" id="trgtNm">
</td>
</tr>
<!-- <tr> -->
<!-- <th>주민번호앞자리</th> -->
<!-- <td> -->
<!-- <div class="calendar_wrap"> -->
<!-- <duet-date-picker identifier="date" id="dBirth" class="startDate" id="" min="1940-01-01"></duet-date-picker> -->
<!-- </div> -->
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker2.js"></script>
<!-- </td> -->
<!-- </tr> -->
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" onclick="fn_confirm()">제출</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> --%>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->

View File

@ -65,6 +65,42 @@
, "scholPop"
);
}
function fn_eduRegPopup(eduAplctOrd, eduChasiOrd){
var data ={
"eduAplctOrd": eduAplctOrd,
"eduChasiOrd": eduChasiOrd
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListPopup.do"
, 800
, 800
, data
, "N"
, "instrAsgnmListPopup"
);
}
function fn_eduExchnPopup(exchnOrd){
var data ={
"exchnOrd": exchnOrd
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup.do"
, 800
, 800
, data
, "N"
, "instrAsgnmListPopup"
);
}
</script>
<!-- cont -->
@ -121,6 +157,7 @@
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
@ -132,6 +169,7 @@
<th scope="col">기관(학교)명</th>
<th scope="col">교육대상</th>
<th scope="col">신청상태</th>
<th scope="col">교환상태</th>
</tr>
</thead>
<tbody>
@ -219,6 +257,39 @@
</c:when>
</c:choose>
</td>
<td>
<c:set var="exchnCd" value="" />
<!--
신청상태가 대기면
${list.asgnmAprvlCd eq '20'}
-->
<c:choose>
<c:when test="${list.asgnmAprvlCd eq '20'}">
<c:if test="${empty list.exchnOrd }">
<c:set var="exchnCd" value="신청" />
</c:if>
<c:if test="${not empty list.exchnOrd
and list.exchnCd eq '10'}">
<c:set var="exchnCd" value="진행중" />
</c:if>
<c:if test="${not empty list.exchnOrd
and list.exchnCd eq '20'}">
<c:set var="exchnCd" value="완료" />
</c:if>
<c:if test="${not empty list.exchnOrd
and list.exchnCd eq '30'}">
<c:set var="exchnCd" value="거절" />
</c:if>
<button type="button" class="btnType04" onclick="fn_eduRegPopup('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" ><c:out value='${exchnCd}'/></button>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<%-- <button class="btnType06 btn_list" data-tooltip="target_confirm_popup" ><c:out value='${exchnCd}'/></button> --%>
</td>
</tr>
</c:forEach>
<c:if test="${empty vEInstrAsgnmVOList}">
@ -318,3 +389,82 @@
</div>
</form:form>
</div>
<div class="cont_wrap" id="sub" style="margin-top: 60px;">
<div class="cont_tit">
<h2>교환강의요청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="tb_list01">
<table>
<colgroup>
<%-- <col style="width: 8%;"> --%>
<col style="width: 15%;">
<col style="width: 10%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
<!-- <th scope="col">번호</th> -->
<th scope="col">요청자</th>
<th scope="col">요청시간</th>
<th scope="col">요청상태</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${veaLctrExchnInfo}" varStatus="status">
<%-- <fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyy.MM.dd"/> <!-- 요일 구하기 --> --%>
<tr>
<%-- <td onclick="fncGoDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');" style="cursor:pointer;"> --%>
<!-- <p> -->
<%-- <c:if test="${vEInstrAsgnmVO.searchSortOrd eq 'desc' }"> --%>
<%-- <c:out value="${ ( paginationInfo.totalRecordCount - ((vEInstrAsgnmVO.pageIndex -1)*vEInstrAsgnmVO.pageUnit) ) - status.index }"/> --%>
<%-- </c:if> --%>
<%-- <c:if test="${vEInstrAsgnmVO.searchSortOrd eq 'asc' }"> --%>
<%-- <c:out value="${(vEInstrAsgnmVO.pageIndex - 1) * vEInstrAsgnmVO.pageUnit + status.count}"/> --%>
<%-- </c:if> --%>
<!-- </p> -->
<!-- </td> -->
<td><p><c:out value='${list.instrNm}'/></p></td>
<td><p><c:out value='${list.frstRegistPnttm}'/></p></td>
<td><p><c:out value='${list.exchnCd}'/></p></td>
<td>
<c:choose>
<c:when test="${not empty list.exchnOrd
and list.exchnCd eq '10'}">
<c:set var="exchnCd" value="확인" />
</c:when>
<c:when test="${not empty list.exchnOrd
and list.exchnCd eq '20'}">
<c:set var="exchnCd" value="완료" />
</c:when>
<c:when test="${not empty list.exchnOrd
and list.exchnCd eq '30'}">
<c:set var="exchnCd" value="거절" />
</c:when>
</c:choose>
<button type="button" class="btnType04" onclick="fn_eduExchnPopup('<c:out value="${list.exchnOrd}"/>');" ><c:out value='${exchnCd}'/></button>
</td>
</tr>
</c:forEach>
<c:if test="${empty veaLctrExchnInfo}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- <div class="page"> -->
<%-- <ui:pagination paginationInfo = "${paginationTowInfo}" type="image" jsFunction="linkPage" /> --%>
<!-- </div> -->
</div>

View File

@ -0,0 +1,231 @@
<%@ 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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ 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="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<script type="text/javascript">
function fncGoScholList(){
linkPage(1);
}
function linkPage(pageNo){
var data = {
pageIndex : pageNo,
searchKeyword : $("#searchKeyword").val(),
pageUnit : 5,
// formId : $("#formId").val(),
}
fncScholList(data);
}
function fncScholList(paramObj) {
if(paramObj == undefined || paramObj == ''){
paramObj = {
pageIndex : 1,
searchKeyword : "",
pageUnit : 5,
// formId : $("#formId").val(),
};
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/asgnmInfo/popup/instrAsgnmListExchnPopup.do"
, 800
, 800
, paramObj
, "N"
, "instrAsgnmListPopup"
);
}
function fcnCallData(toUserId) {
document.reqForm.toUserId.value = toUserId;
var data = new FormData(document.getElementById("reqForm"));
if(confirm("강의교환을 신청하시겠습니까?")){
$.ajax({
type: "POST",
url:"<c:url value='/web/ve/instr/adultVisitEdu/asgnmInfo/insertVeaLctrExchnAjax.do'/>",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){
alert("완료되었습니다..");
location.reload();
} else if(status== 'fail'){
alert("처리에 실패하였습니다.");
}
},
error: function (e) { alert("처리에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
</script>
<form id="reqForm" name="reqForm">
<input type="hidden" name="toUserId" value="" />
<input type="hidden" name="eduAplctOrd" value="<c:out value="${vEPrcsDetailVO.eduAplctOrd}" />" />
<input type="hidden" name="eduChasiOrd" value="<c:out value="${vEPrcsDetailVO.eduChasiOrd}" />" />
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
</form:form>
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="sub01_pop01" data-focus="sub01_pop01" data-focus-prev="sub01_pop01_close">
<div class="popup_tit">
<p>내 강의 목록</p>
<button class="btn_popup_close tooltip-close" data-focus="list_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="list_top">
<div class="pop_list_top_left">
<!-- <label for="searchCondition" class="label">학교급 선택</label> -->
<%-- <kc:select codeId="VE0009" id="searchCondition" name="searchCondition" styleClass="selType1" defaultText="선택" defaultValue="" selectedValue="${scholInfoVO.searchCondition}"/> --%>
</div>
<div class="btn_wrap">
<label for="searchKeyword" class="label">검색어 입력</label>
<input type="text" name="searchKeyword" id="searchKeyword" value="<c:out value='${vEPrcsDetailVO.searchKeyword}' />" placeholder="검색어 입력" size="20"
onKeypress="javascript:if(event.keyCode==13) {fncGoScholList(); return false;}"/>
<button type="button" class="btnType07" onclick="fncGoScholList(); return false;">검색</button>
</div>
</div>
<div class="pop_tb_type02">
<table>
<colgroup>
<col style="width: 8%;">
<col style="width: 15%;">
<col style="width: 8%;">
<col style="width: auto">
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">교육일자</th>
<th scope="col">요일</th>
<th scope="col">차시</th>
<th scope="col">지역</th>
<th scope="col">기관(학교)명</th>
<th scope="col">교육대상</th>
<th scope="col">신청상태</th>
<th scope="col">교환상태</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${vEInstrAsgnmVOList}" varStatus="status">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyy.MM.dd"/> <!-- 요일 구하기 -->
<c:choose>
<c:when test="${list.notiCnt == 0}">
<tr class="new_cont">
</c:when>
<c:otherwise>
<tr>
</c:otherwise>
</c:choose>
<td>
<c:if test="${vEInstrAsgnmVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((vEInstrAsgnmVO.pageIndex -1)*vEInstrAsgnmVO.pageUnit) ) - status.index }"/>
</c:if>
<c:if test="${vEInstrAsgnmVO.searchSortOrd eq 'asc' }">
<c:out value="${(vEInstrAsgnmVO.pageIndex - 1) * vEInstrAsgnmVO.pageUnit + status.count}"/>
</c:if>
</td>
<td>
${list.eduHopeDt}
</td>
<td>
<fmt:formatDate value="${eduHopeDt}" pattern="E"/>
</td>
<td>
<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"/>
(<c:out value='${list.lrnTm}'/>분)
</td>
<td>
<c:if test="${list.eduSlctCd eq '10'}">
(온)
</c:if>
<ve:code codeId="VE0008" code="${list.eduSlctAreaCd}"/>
</td>
<td>
<c:out value='${list.scholInsttNm}'/>
</td>
<td>
<c:out value='${list.trgt}'/>
</td>
<c:set var="statCd" value="" />
<c:choose>
<c:when test="${list.asgnmAprvlCd eq '20'}">
<!-- 배정 수락 요청 상태 -->
<c:set var="statCd" value="대기" />
</c:when>
<c:when test="${(list.asgnmAprvlCd eq '40' and list.userId eq loginVO.id) or
(list.hstryUserId eq loginVO.id and (list.hstryCd eq '10' or list.hstryCd eq '40'))}">
<!-- 배정 거절 or 내역 거절 or 내열에 변경요청 -->
<c:set var="statCd" value="거절" />
</c:when>
<c:when test="${list.asgnmAprvlCd eq '30' and list.userId eq loginVO.id}">
<c:set var="statCd" value="수락" />
</c:when>
</c:choose>
<td><span class="app_status1">${statCd}</span>
<c:choose>
<c:when test="${list.asgnmAprvlCd eq '20'}">
<!-- 배정 수락 요청 상태 -->
<!--
<button type="button" class="btnType01" onclick="fncChangeLctr(
'<c:out value='${list.userId}'/>'
, '<c:out value='${list.eduAplctOrd}'/>'
, '<c:out value='${list.eduChasiOrd}'/>'
); return false;">강의교환</button>
-->
</c:when>
</c:choose>
</td>
<td>
<button type="button" class="btnType01" onclick="fn_eduRegPopup('${list.userId}');">교환</button>
</td>
</tr>
</c:forEach>
<c:if test="${empty vEInstrAsgnmVOList}">
<tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,154 @@
<%@ 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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ 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="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<script type="text/javascript">
function fncGoScholList(){
linkPage(1);
}
function linkPage(pageNo){
var data = {
pageIndex : pageNo,
searchKeyword : $("#searchKeyword").val(),
pageUnit : 5,
eduAplctOrd : $('#eduAplctOrd').val(),
eduChasiOrd : $('#eduChasiOrd').val(),
}
fncScholList(data);
}
function fncScholList(paramObj) {
if(paramObj == undefined || paramObj == ''){
paramObj = {
pageIndex : 1,
searchKeyword : "",
pageUnit : 5,
eduAplctOrd : $('#eduAplctOrd').val(),
eduChasiOrd : $('#eduChasiOrd').val(),
// formId : $("#formId").val(),
};
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/instr/tngrVisitEdu/asgnmInfo/popup/instrAsgnmListPopup.do"
, 800
, 800
, paramObj
, "N"
, "instrAsgnmListPopup"
);
}
function fcnCallData(toUserId) {
document.reqForm.toUserId.value = toUserId;
var data = new FormData(document.getElementById("reqForm"));
console.log(';data : ', data);
if(confirm("강의교환을 신청하시겠습니까?")){
$.ajax({
type: "POST",
url:"<c:url value='/web/ve/instr/tngrVisitEdu/asgnmInfo/insertVeaLctrExchnAjax.do'/>",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){
alert("완료되었습니다..");
location.reload();
} else if(status== 'fail'){
alert("처리에 실패하였습니다.");
}
},
error: function (e) { alert("처리에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
</script>
<form id="reqForm" name="reqForm">
<input type="hidden" name="toUserId" value="" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="<c:out value="${vEInstrDetailVO.eduAplctOrd}" />" />
<input type="hidden" name="eduChasiOrd" id="eduChasiOrd" value="<c:out value="${vEInstrDetailVO.eduChasiOrd}" />" />
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEInstrDetailVO.pageIndex}' default='1' />"/>
</form:form>
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="sub01_pop01" data-focus="sub01_pop01" data-focus-prev="sub01_pop01_close">
<div class="popup_tit">
<p>교환 강사 목록</p>
<button class="btn_popup_close tooltip-close" data-focus="list_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="list_top">
<div class="pop_list_top_left">
<!-- <label for="searchCondition" class="label">학교급 선택</label> -->
<%-- <kc:select codeId="VE0009" id="searchCondition" name="searchCondition" styleClass="selType1" defaultText="선택" defaultValue="" selectedValue="${scholInfoVO.searchCondition}"/> --%>
</div>
<div class="btn_wrap">
<label for="searchKeyword" class="label">검색어 입력</label>
<input type="text" name="searchKeyword" id="searchKeyword" value="<c:out value='${vEInstrDetailVO.searchKeyword}' />" placeholder="검색어 입력" size="20"
onKeypress="javascript:if(event.keyCode==13) {fncGoScholList(); return false;}"/>
<button type="button" class="btnType07" onclick="fncGoScholList(); return false;">검색</button>
</div>
</div>
<div class="pop_tb_type02">
<table>
<colgroup>
<col style="width: 11%;">
<col style="width: 15%;">
<col style="width: 9%;">
</colgroup>
<thead>
<tr>
<th scope="col">이름</th>
<th scope="col">거주<br>지역</th>
<th scope="col">선택</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<td><c:out value='${list.instrNm}'/></td>
<td><c:out value='${list.rsdne}'/></td>
<td><button type="button" class="btnType01" onclick="fcnCallData('${list.userId}');">선택</button></td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3">강사를 검색해 주세요</td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</div>
</div>
</div>