feat:강의교환 진행중

This commit is contained in:
hylee 2024-01-04 14:10:21 +09:00
parent 4426df5b72
commit cc37e5d61d
14 changed files with 1315 additions and 15 deletions

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

@ -164,6 +164,13 @@ public class VEInstrAsgnmVO extends ComDefaultVO implements Serializable {
private String selectRsdneQuery; // 지역쿼리
private String exchnOrd;
private String exchnCd;
private String toUserId;
private String toEduAplctOrd;
private String toEduChasiOrd;
public String getMemoCn() {
return memoCn;
@ -807,5 +814,35 @@ public class VEInstrAsgnmVO extends ComDefaultVO implements Serializable {
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

@ -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

@ -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

@ -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

@ -679,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

@ -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>