Merge branch 'master_tolag3'

사용자 메뉴 정리 중
This commit is contained in:
leejunho 2025-10-28 15:45:32 +09:00
parent 02a063feba
commit 9853c06508
12 changed files with 1378 additions and 1287 deletions

View File

@ -1,10 +1,9 @@
package kcc.let.my.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -17,7 +16,6 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
@ -26,14 +24,7 @@ import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.notify.service.NotifyManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@ -60,277 +51,94 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@Controller
public class MyPageController {
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController.class);
// 로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
// 교육과정신청
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//온라인콘텐츠과정 관리
@Resource(name = "fndtnEnhanceTrnService")
private FndtnEnhanceTrnService fndtnEnhanceTrnService;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController.class);
private String p_lctr_div_cd = "60";
@RequestMapping(value = { "/web/my/myPageDashBoard.do" })
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO,
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("vEEduAplctVO") VEPrcsDetailVO vEPrcsDetailVO,
ModelMap model, BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); // SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model, request); // 로그인 정보가 없으면 로그인 페이지로 이동한다.
}
/*
* 청소년 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> tngrList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> tngrMap = tngrList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
//.collect(Collectors.partitioningBy(vo -> "60".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "tngrEnd" : "tngrIng",
entry -> entry.getValue().toString()
)
);
System.out.println(tngrMap);
System.out.println(tngrMap);
model.addAttribute("tngrMap", tngrMap);
model.addAttribute("tngrList", tngrList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingApplyList(vEEduAplctVO);
int tngrAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
tngrAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("tngrAplctCnt", tngrAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setSearchStartDt(vEEduAplctVO.getSearchStartDt());
vEEduChasiVO.setSearchEndDt(vEEduAplctVO.getSearchEndDt());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int tngrEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
tngrEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("tngrEndCnt", tngrEndCnt);
model.addAttribute("tngrList", vEEduChasiVOList);
}
/*
* 성인 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> adultList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> adultMap = adultList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "adultEnd" : "adultIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("adultMap", adultMap);
model.addAttribute("adultList", adultList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
int adultAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
adultAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("adultAplctCnt", adultAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int adultEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
adultEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("adultEndCnt", adultEndCnt);
model.addAttribute("adultList", vEEduChasiVOList);
}
/*
* 체험교실
* */
{
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 저작권
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setRecordCountPerPage(1000000);
vEEduAplctVO.setFirstIndex(0);
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
System.out.println("vEEduAplctVOList.size() :: "+vEEduAplctVOList.size());
// vEEduAplctVOList에서 10, 11, 12, 13 제거
List<VEEduAplctVO> filteredList = vEEduAplctVOList.stream()
/*
.filter(item -> !item.getAprvlCd().equals("10")
&& !item.getAprvlCd().equals("11")
&& !item.getAprvlCd().equals("12")
&& !item.getAprvlCd().equals("13"))
*/
.filter(item -> item.getAprvlCd().equals("80")
|| item.getAprvlCd().equals("20")
)
.collect(Collectors.toList());
// -- 종료 80
// -- 진행중 20~70
Map<String, String> exprnMap = filteredList.stream()
.collect(Collectors.partitioningBy(vo -> "80".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "exprnEnd" : "exprnIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("exprnMap", exprnMap);
model.addAttribute("exprnList", filteredList);
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
//5개만 select을 위한 설정
vEPrcsDetailVO.setPageUnit(5);
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
/*
* 실무역량강화
* */
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setRecordCountPerPage(1000000);
vEPrcsDetailVO.setFirstIndex(0);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 요청
long cont = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAprvlCd())).count();
// 미이수
long aplctStateCd10 = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAplctStateCd())).count();
// 이수완료
long aplctStateCd20 = vEPrcsDetailVOList.stream().filter(t-> "20".equals(t.getAplctStateCd())).count();
Map<String, String> fndtnMap = new HashMap<>();
fndtnMap.put("fndtnEnd", String.valueOf(aplctStateCd20));
fndtnMap.put("fndtnIng", String.valueOf(aplctStateCd10+cont));
model.addAttribute("fndtnMap", fndtnMap);
model.addAttribute("fndtnList", vEPrcsDetailVOList);
//신청중, 수강중, 종료된 수량
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
model.addAttribute("countMap", countMap);
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
/*
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
// 문의 목록
{
*/
vEPrcsDetailVO.setSiteId(p_lctr_div_cd); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrAllList(vEPrcsDetailVO);
//List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllSspnldtmtDashboardCnt(vEPrcsDetailVO);
// 리스트 row마다 신청 확인하기
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap);
// Q&A 영역
// vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
// List<VEPrcsDetailVO> vEPrcsDetailQnaVOList = fndtnEnhanceTrnService.selectVeEduQna(vEPrcsDetailVO);
// model.addAttribute("qnaList", vEPrcsDetailQnaVOList);
// return "/web/ve/aplct/sspnIdtmt/main";
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setRecordCountPerPage(3);
vEPrcsDetailVO.setFirstIndex(0);
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
List<VEPrcsDetailVO> qnaList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
model.addAttribute("qnaList", qnaList);
}
// return "/web/cop/bbs/FaqListAjax";
return "web/my/myPageDashBoard";
}
@ -367,140 +175,12 @@ public class MyPageController {
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "web/my/myQnaMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngList.do" })
public String myNotifyMngList(
HttpServletRequest request
, @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
) throws Exception {
// try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
notifyManageService.updateM7DaysUseYnN();
//1.pageing step1
PaginationInfo paginationInfo = this.setNotiPagingStep1(notifyManageVO);
//2. pageing step2
notifyManageVO = this.setNotiPagingStep2(notifyManageVO, paginationInfo);
//
notifyManageVO.setToUserId(loginVO.getUniqId());
/*if(StringUtils.isNotEmpty(notifyManageVO.getSearchStatus())) {
String status = "";
if("Y".equals(notifyManageVO.getSearchStatus()))
status = "IS NOT NULL";
if("N".equals(notifyManageVO.getSearchStatus()))
status = "IS NULL";
notifyManageVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
} */
List<NotifyManageVO> notifyManageVOList = notifyManageService.selectPagingList(notifyManageVO);
//3.pageing step3
paginationInfo = this.setNotiPagingStep3(notifyManageVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", notifyManageVOList);
// } catch (Exception e) {
// e.printStackTrace();
// // TODO: handle exception
// }
// return "web/my/myQnaMngList";
return "web/my/myNotifyMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngDetail.do"})
public String myNotifyMngDetail(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, 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, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//과정 조회
NotifyManageVO notifyManageInfo = notifyManageService.findById(notifyManageVO);
model.addAttribute("info", notifyManageInfo);
try {
if ("30".equals(notifyManageInfo.getLctrDivCd())){ //체험교실은 다른게 바로가기를 만든다.
//eduAplctOrd:eduAplct_00000015581
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm("eduAplctOrd");
tInfo.setParams(notifyManageInfo.getEduAplctOrd());
notifyParamList.add(tInfo);
model.addAttribute("notifyParamList", notifyParamList);
}else{
//세부과정 목록 조회
String[] a_params = notifyManageInfo.getParams().split(",");
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
for (int i=0;i<a_params.length;i++) {
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm(a_params[i].split(":")[0]);
tInfo.setParams(a_params[i].split(":")[1]);
notifyParamList.add(tInfo);
}
model.addAttribute("notifyParamList", notifyParamList);
}
}catch(Exception ex) {
ex.printStackTrace();
}
return "web/my/myNotifyMngDetail";
}
@RequestMapping(value = { "/web/my/myQnaMngDetail.do"})
public String myQnaMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
@ -531,43 +211,9 @@ public class MyPageController {
return "web/my/myQnaMngDetail";
}
@RequestMapping(value = { "/web/my/myNotifyMngDeleteAjax.do"})
public ModelAndView myNotifyMngDeleteAjax(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
, String[] chk
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
modelAndView.addObject("result", "loginFail");
}
//로그인 처리====================================
try {
notifyManageVO.setCmmNotifyOrdArr(chk);
notifyManageService.updateChkedUseYnN(notifyManageVO);
modelAndView.addObject("result", "success");
}catch(Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
}
//세부과정 목록 조회
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
@ -621,41 +267,28 @@ public class MyPageController {
return p_paginationInfo;
}
private String dateChk(VEPrcsDetailVO vEPrcsDetailVO , LocalDate currentDate) {
String returnDate = "";
private PaginationInfo setNotiPagingStep1(NotifyManageVO notifyManageVO) {
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex());
paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit());
paginationInfo.setPageSize(notifyManageVO.getPageSize());
return paginationInfo;
String targetDateString = vEPrcsDetailVO.getEduStrtPnttm();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
// 문자열로부터 LocalDate 객체를 생성합니다.
LocalDate targetDate = LocalDate.parse(targetDateString, formatter);
// 교육종료 날짜와 현재날짜 비교
if (currentDate.isBefore(targetDate)) { //현재날짜가 종료날짜보다 이전이면 0
returnDate = "0";
} else if (currentDate.isAfter(targetDate)) { //현재날짜가 종료날짜 이후면 1
returnDate = "1";
} else { // 종료날짜와 같으면 2
returnDate = "2";
}
return returnDate;
}
private NotifyManageVO setNotiPagingStep2(NotifyManageVO notifyManageVO, PaginationInfo paginationInfo) {
// pageing step2
notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(notifyManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
notifyManageVO.setSearchSortCnd("prcs_ord");
notifyManageVO.setSearchSortOrd("desc");
}
return notifyManageVO;
}
private PaginationInfo setNotiPagingStep3(List<NotifyManageVO> vEPrcsDetailVOList, PaginationInfo paginationInfo) {
// pageing step3
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
return paginationInfo;
}
}

View File

@ -0,0 +1,667 @@
package kcc.let.my.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.notify.service.NotifyManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
/**
* 게시물 관리를 위한 컨트롤러 클래스
*
* @author 공통 서비스 개발팀 이삼섭
* @since 2009.03.19
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.03.19 이삼섭 최초 생성
* 2009.06.29 한성곤 2단계 기능 추가 (댓글관리, 만족도조사)
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
//@Controller
public class MyPageController_back_251028 {
// 로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
// 교육과정신청
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//온라인콘텐츠과정 관리
@Resource(name = "fndtnEnhanceTrnService")
private FndtnEnhanceTrnService fndtnEnhanceTrnService;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController_back_251028.class);
@RequestMapping(value = { "/web/my/myPageDashBoard.do" })
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO,
ModelMap model, BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); // SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model, request); // 로그인 정보가 없으면 로그인 페이지로 이동한다.
}
/*
* 청소년 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> tngrList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> tngrMap = tngrList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
//.collect(Collectors.partitioningBy(vo -> "60".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "tngrEnd" : "tngrIng",
entry -> entry.getValue().toString()
)
);
System.out.println(tngrMap);
System.out.println(tngrMap);
model.addAttribute("tngrMap", tngrMap);
model.addAttribute("tngrList", tngrList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingApplyList(vEEduAplctVO);
int tngrAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
tngrAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("tngrAplctCnt", tngrAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setSearchStartDt(vEEduAplctVO.getSearchStartDt());
vEEduChasiVO.setSearchEndDt(vEEduAplctVO.getSearchEndDt());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int tngrEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
tngrEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("tngrEndCnt", tngrEndCnt);
model.addAttribute("tngrList", vEEduChasiVOList);
}
/*
* 성인 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> adultList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> adultMap = adultList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "adultEnd" : "adultIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("adultMap", adultMap);
model.addAttribute("adultList", adultList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
int adultAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
adultAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("adultAplctCnt", adultAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int adultEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
adultEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("adultEndCnt", adultEndCnt);
model.addAttribute("adultList", vEEduChasiVOList);
}
/*
* 체험교실
* */
{
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 저작권
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setRecordCountPerPage(1000000);
vEEduAplctVO.setFirstIndex(0);
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
System.out.println("vEEduAplctVOList.size() :: "+vEEduAplctVOList.size());
// vEEduAplctVOList에서 10, 11, 12, 13 제거
List<VEEduAplctVO> filteredList = vEEduAplctVOList.stream()
/*
.filter(item -> !item.getAprvlCd().equals("10")
&& !item.getAprvlCd().equals("11")
&& !item.getAprvlCd().equals("12")
&& !item.getAprvlCd().equals("13"))
*/
.filter(item -> item.getAprvlCd().equals("80")
|| item.getAprvlCd().equals("20")
)
.collect(Collectors.toList());
// -- 종료 80
// -- 진행중 20~70
Map<String, String> exprnMap = filteredList.stream()
.collect(Collectors.partitioningBy(vo -> "80".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "exprnEnd" : "exprnIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("exprnMap", exprnMap);
model.addAttribute("exprnList", filteredList);
}
/*
* 실무역량강화
* */
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setRecordCountPerPage(1000000);
vEPrcsDetailVO.setFirstIndex(0);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 요청
long cont = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAprvlCd())).count();
// 미이수
long aplctStateCd10 = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAplctStateCd())).count();
// 이수완료
long aplctStateCd20 = vEPrcsDetailVOList.stream().filter(t-> "20".equals(t.getAplctStateCd())).count();
Map<String, String> fndtnMap = new HashMap<>();
fndtnMap.put("fndtnEnd", String.valueOf(aplctStateCd20));
fndtnMap.put("fndtnIng", String.valueOf(aplctStateCd10+cont));
model.addAttribute("fndtnMap", fndtnMap);
model.addAttribute("fndtnList", vEPrcsDetailVOList);
//신청중, 수강중, 종료된 수량
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
model.addAttribute("countMap", countMap);
}
// 문의 목록
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setRecordCountPerPage(3);
vEPrcsDetailVO.setFirstIndex(0);
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
List<VEPrcsDetailVO> qnaList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
model.addAttribute("qnaList", qnaList);
}
// return "/web/cop/bbs/FaqListAjax";
return "web/my/myPageDashBoard";
}
@RequestMapping(value = { "/web/my/myQnaMngList.do" })
public String myQnaMngList(
HttpServletRequest request
, @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) {
String status = "";
if("Y".equals(vEPrcsDetailVO.getSearchStatus()))
status = "IS NOT NULL";
if("N".equals(vEPrcsDetailVO.getSearchStatus()))
status = "IS NULL";
vEPrcsDetailVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "web/my/myQnaMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngList.do" })
public String myNotifyMngList(
HttpServletRequest request
, @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
) throws Exception {
// try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
notifyManageService.updateM7DaysUseYnN();
//1.pageing step1
PaginationInfo paginationInfo = this.setNotiPagingStep1(notifyManageVO);
//2. pageing step2
notifyManageVO = this.setNotiPagingStep2(notifyManageVO, paginationInfo);
//
notifyManageVO.setToUserId(loginVO.getUniqId());
/*if(StringUtils.isNotEmpty(notifyManageVO.getSearchStatus())) {
String status = "";
if("Y".equals(notifyManageVO.getSearchStatus()))
status = "IS NOT NULL";
if("N".equals(notifyManageVO.getSearchStatus()))
status = "IS NULL";
notifyManageVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
} */
List<NotifyManageVO> notifyManageVOList = notifyManageService.selectPagingList(notifyManageVO);
//3.pageing step3
paginationInfo = this.setNotiPagingStep3(notifyManageVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", notifyManageVOList);
// } catch (Exception e) {
// e.printStackTrace();
// // TODO: handle exception
// }
// return "web/my/myQnaMngList";
return "web/my/myNotifyMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngDetail.do"})
public String myNotifyMngDetail(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, 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, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//과정 조회
NotifyManageVO notifyManageInfo = notifyManageService.findById(notifyManageVO);
model.addAttribute("info", notifyManageInfo);
try {
if ("30".equals(notifyManageInfo.getLctrDivCd())){ //체험교실은 다른게 바로가기를 만든다.
//eduAplctOrd:eduAplct_00000015581
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm("eduAplctOrd");
tInfo.setParams(notifyManageInfo.getEduAplctOrd());
notifyParamList.add(tInfo);
model.addAttribute("notifyParamList", notifyParamList);
}else{
//세부과정 목록 조회
String[] a_params = notifyManageInfo.getParams().split(",");
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
for (int i=0;i<a_params.length;i++) {
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm(a_params[i].split(":")[0]);
tInfo.setParams(a_params[i].split(":")[1]);
notifyParamList.add(tInfo);
}
model.addAttribute("notifyParamList", notifyParamList);
}
}catch(Exception ex) {
ex.printStackTrace();
}
return "web/my/myNotifyMngDetail";
}
@RequestMapping(value = { "/web/my/myQnaMngDetail.do"})
public String myQnaMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, 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) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
//세부과정 목록 조회
return "web/my/myQnaMngDetail";
}
@RequestMapping(value = { "/web/my/myNotifyMngDeleteAjax.do"})
public ModelAndView myNotifyMngDeleteAjax(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
, String[] chk
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
modelAndView.addObject("result", "loginFail");
}
//로그인 처리====================================
try {
notifyManageVO.setCmmNotifyOrdArr(chk);
notifyManageService.updateChkedUseYnN(notifyManageVO);
modelAndView.addObject("result", "success");
}catch(Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
}
//세부과정 목록 조회
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 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.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 setPagingStep3(
List<VEPrcsDetailVO> p_vEPrcsDetailVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
private PaginationInfo setNotiPagingStep1(NotifyManageVO notifyManageVO) {
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex());
paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit());
paginationInfo.setPageSize(notifyManageVO.getPageSize());
return paginationInfo;
}
private NotifyManageVO setNotiPagingStep2(NotifyManageVO notifyManageVO, PaginationInfo paginationInfo) {
// pageing step2
notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(notifyManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
notifyManageVO.setSearchSortCnd("prcs_ord");
notifyManageVO.setSearchSortOrd("desc");
}
return notifyManageVO;
}
private PaginationInfo setNotiPagingStep3(List<NotifyManageVO> vEPrcsDetailVOList, PaginationInfo paginationInfo) {
// pageing step3
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
return paginationInfo;
}
}

View File

@ -92,4 +92,7 @@ public interface VEPrcsAplctPrdService {
//교육확정상태 대상자 리스트 가져오기
List<VEPrcsDetailVO> selectTrgtList4_60(VEPrcsDetailVO vEPrcsDetailVO) throws Exception;
//신청목록-실무역량강화, 기소유예 new -설문조사, 이수증 처리용
List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO);
}

View File

@ -170,4 +170,8 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectTrgtList4_60", vEPrcsDetailVO);
}
public List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO) {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.findByAprvlQustnrAllList", vEPrcsDetailVO);
}
}

View File

@ -383,6 +383,10 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
@Override
public List<VEPrcsDetailVO> selectTrgtList4_60(VEPrcsDetailVO paramVO) throws Exception{
return vEPrcsAplctPrdDAO.selectTrgtList4_60(paramVO);
}
public List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.findByAprvlQustnrAllList(vEPrcsDetailVO);
}

View File

@ -448,7 +448,7 @@ public class MainController {
BoardVO boardVO = new BoardVO();
boardVO.setRecordCountPerPage(5); //게시글
boardVO.setFirstIndex(0); //
boardVO.setBbsId("BBSMSTR_000000000653");
boardVO.setBbsId("BBSMSTR_000000000010");
List<BoardVO> vo = bbsMngService.selectMainBoardRecent(boardVO);
//게시글 내용 html 태그 삭제
for(int i=0; i<vo.size(); i++) {

View File

@ -848,6 +848,7 @@
AND b.sex = #sex#
and c.edu_strt_pnttm >= TO_CHAR(NOW(),'YYYY.MM.DD')
AND a.aprvl_cd in ('10','20','60')
</select>
<!-- 기소유예 대상자 확인 STEP00 -->

View File

@ -1701,6 +1701,241 @@
AND aprvl_cd='20'
</select>
</select>
<!-- 교육 확정 목록 (설문조사, 이수증 수정)-->
<select id="findByAprvlQustnrAllList" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.findByAprvlQustnrAllList */
select
COUNT(1) OVER() AS totCnt ,
a.edu_aplct_ord AS eduAplctOrd ,
vpap.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd ,
vp.prcs_nm AS prcsNm ,
vp.prcs_cn AS prcsCn ,
vp.prcs_div AS prcsDiv ,
vpap.title AS title ,
vpap.strt_pnttm AS strtPnttm ,
vpap.end_pnttm AS endPnttm ,
vpap.edu_strt_pnttm AS eduStrtPnttm ,
vpap.edu_ddln_pnttm AS eduDdlnPnttm ,
case
when to_char(now(),'YYYY.MM.DD HH24') >= concat(vpap.qustnr_strt_pnttm, ' ', vpap.qustnr_tm) and vpap.qustnr_tm>'' then 1
else 0
end as qustnrTm,
CASE
WHEN to_char(now(), 'YYYY.MM.DD') > COALESCE(vpap.edu_ddln_pnttm,vpap.edu_strt_pnttm) THEN 1
ELSE 0
END AS qestRsltExists,
a.APRVL_CD AS aprvlCd,
vpap.ddln_cd AS ddlnCd,
vadi.APLCT_STATE_CD AS aplctStateCd,
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
/* 설문지 정보 */
I10.qustnr_tmplat_id AS qustnrTmplatId ,
COALESCE(qustnr01.QESTNR_ID_10, I10.qestnr_id_10) AS qestnrId10 ,
COALESCE(qustnr01.QESTNR_ID_20, I20.qestnr_id_20) AS qestnrId20 ,
COALESCE(qustnr01.QESTNR_ID_30, I30.qestnr_id_30) AS qestnrId30 ,
/* 답변 정보 */
COALESCE(qustnr01.QESTNR_ID_10_CNT,0) AS qestnrId10Cnt ,
COALESCE(qustnr01.QESTNR_ID_20_CNT,0) AS qestnrId20Cnt ,
COALESCE(qustnr01.QESTNR_ID_30_CNT,0) AS qestnrId30Cnt ,
a.lctr_div_cd AS lctrDivCd
from
VE_EDU_APLCT a
join ve_prcs_aplct_prd vpap
on a.prcs_ord = vpap.prcs_aplct_prd_ord
join ve_prcs vp /* 과정 */
on vpap.prcs_ord = vp.prcs_ord
left join vea_aplct_detail_info vadi /* 신청상세정보 */
on a.edu_aplct_ord = vadi.edu_aplct_ord
and vpap.prcs_aplct_prd_ord = vadi.prcs_aplct_prd_ord
LEFT OUTER JOIN (
SELECT
aa.EDU_APLCT_ORD ,
aa.prcs_ord,
aa.QUSTNR_TMPLAT_ID ,
aa.user_id
, max(CASE WHEN bb.site_id_cd = '10' THEN aa.QESTNR_ID END) AS QESTNR_ID_10
, max(CASE WHEN bb.site_id_cd = '20' THEN aa.QESTNR_ID END) AS QESTNR_ID_20
, max(CASE WHEN bb.site_id_cd = '30' THEN aa.QESTNR_ID END) AS QESTNR_ID_30
, SUM(CASE WHEN bb.site_id_cd = '10' THEN 1 ELSE 0 END) AS QESTNR_ID_10_CNT
, SUM(CASE WHEN bb.site_id_cd = '20' THEN 1 ELSE 0 END) AS QESTNR_ID_20_CNT
, SUM(CASE WHEN bb.site_id_cd = '30' THEN 1 ELSE 0 END) AS QESTNR_ID_30_CNT
FROM (
SELECT
a.EDU_APLCT_ORD ,
a.prcs_ord,
b.QUSTNR_TMPLAT_ID ,
b.QESTNR_ID
, a.user_id
FROM
ve_edu_aplct a ,
LETTNQESTNRRSLTDETAIL b
WHERE
1 = 1
AND a.edu_aplct_ord = b.edu_aplct_ord
AND (b.EDU_CHASI_ORD IS NULL or b.EDU_CHASI_ORD = '')
AND a.user_id=#userId#
)aa
, lettnqestnrinfo bb
WHERE aa.qustnr_tmplat_id=bb.qustnr_tmplat_id
AND aa.qestnr_id=bb.qestnr_id
GROUP BY
aa.EDU_APLCT_ORD ,
aa.prcs_ord,
aa.QUSTNR_TMPLAT_ID ,
aa.user_id
) qustnr01
on(
a.edu_aplct_ord = qustnr01.edu_Aplct_Ord
AND a.PRCS_ORD = qustnr01.prcs_Ord
)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
SELECT
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
/*
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID END) AS QESTNR_ID_10
*/
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID ELSE a.QESTNR_ID END) AS QESTNR_ID_10
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
/*
AND a.SITE_ID_CD IN ('10')
*/
/*
AND a.STTUS IN ('1')
*/
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
LIMIT 1
) I10 ON
(1 = 1)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
SELECT
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
/*
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID END) AS QESTNR_ID_20
*/
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID ELSE a.QESTNR_ID END) AS QESTNR_ID_20
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
/*
AND a.SITE_ID_CD IN ('20')
*/
/*
AND a.STTUS IN ('1')
*/
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
LIMIT 1
) I20 ON
(1 = 1)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
SELECT
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
/*
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID END) AS QESTNR_ID_30
*/
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID ELSE a.QESTNR_ID END) AS QESTNR_ID_30
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
/*
AND a.SITE_ID_CD IN ('30')
*/
/*
AND a.STTUS IN ('1')
*/
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
LIMIT 1
) I30 ON
(1 = 1)
where
a.user_id = #userId#
<isNotEmpty property="searchStartDt">
AND vpap.edu_strt_pnttm <![CDATA[ >= ]]> #searchStartDt#
</isNotEmpty>
<isNotEmpty property="searchEndDt">
AND vpap.edu_strt_pnttm <![CDATA[ <= ]]> #searchEndDt#
</isNotEmpty>
<isEqual property="searchStatus" compareValue="5"> /*VEA003 미이수 : 수강중 강의*/
AND vadi.aplct_state_cd = '10'
</isEqual>
<isEqual property="searchStatus" compareValue="30"> /*취소 : 취소*/
AND vadi.aplct_state_cd = #searchStatus#
</isEqual>
<isEqual property="searchStatus" compareValue="20"> /*이수완료 : 종료 강의*/
AND vadi.aplct_state_cd is not null
AND a.aprvl_cd = #searchStatus#
</isEqual>
<isEqual property="searchStatus" compareValue="15"> /*수강중 강의*/
AND vadi.aplct_state_cd is null
AND a.aprvl_cd = '20'
</isEqual>
<isEqual property="searchStatus" compareValue="10"> /*요청 : 요청 강의*/
AND a.aprvl_cd = #searchStatus#
</isEqual>
ORDER BY vpap.edu_strt_pnttm desc
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
</sqlMap>

View File

@ -174,11 +174,11 @@ function bbsMasterExcelDownload(){
<input type="text" id="searchWrd" name="searchWrd" value="<c:out value='${searchVO.searchWrd}'/>" class="search_input" placeholder="검색어를 입력하세요" onkeyDown="press(event);">
<button class="btn_search" onclick="javascript:linkPage('1'); return false;">검색</button>
<c:if test="${bbsAttrMngAuth}">
<%-- <c:if test="${bbsAttrMngAuth}">
<input type="checkbox" name="useAt" id="useAt" value="N" onclick="javascript:linkPage('1'); return false;"
<c:if test="${'N' eq searchVO.useAt}"> checked='checked' </c:if> >
<label for="useAt"></label>미사용
</c:if>
</c:if> --%>
<select class="sel2 sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>

View File

@ -138,7 +138,6 @@
${resultListTit.menuNm }
</c:if>
</c:forEach>
<!-- 상표권 교육조건부 기소유예 -->
</strong>
<p>지식재산보호교육시스템</p>
</div>

View File

@ -162,8 +162,8 @@ function fn_egov_inqire_data(bbsId, nttId) {
<div class="box">
<p class="title">상표권 교육조건부 기소유예</p>
<div class="link_area">
<a href="#" class="btn line">교육안내</a>
<a href="#" class="btn fill">교육신청</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduInfo.do" class="btn line">교육안내</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctList.do" class="btn fill">교육신청</a>
</div>
</div>
</li>
@ -171,8 +171,8 @@ function fn_egov_inqire_data(bbsId, nttId) {
<div class="box">
<p class="title">부정경쟁행위 시정명령</p>
<div class="link_area">
<a href="#" class="btn line">교육안내</a>
<a href="#" class="btn fill">교육신청</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/eduInfo.do" class="btn line">교육안내</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/eduAplctList.do" class="btn fill">교육신청</a>
</div>
</div>
</li>
@ -180,8 +180,8 @@ function fn_egov_inqire_data(bbsId, nttId) {
<div class="box">
<p class="title">상표권 침해·부정경쟁 행위 예방</p>
<div class="link_area">
<a href="#" class="btn line">교육안내</a>
<a href="#" class="btn fill">교육신청</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/prevent/eduInfo.do" class="btn line">교육안내</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/prevent/eduAplctList.do" class="btn fill">교육신청</a>
</div>
</div>
</li>
@ -368,12 +368,15 @@ function fn_egov_inqire_data(bbsId, nttId) {
</div>
<ul class="list">
<li>
<a href="#">
<strong class="title">2025 대전지역 도메인이름 분쟁조정(DNDR) 세미나 </strong>
<p class="date">2025.09.12</p>
</a>
</li>
<c:forEach var="notiList" items="${bbsList}" varStatus="sts">
<li>
<a href="#">
<strong class="title">2025 대전지역 도메인이름 분쟁조정(DNDR) 세미나 </strong>
<p class="date">2025.09.12</p>
</a>
</li>
</c:forEach>
<li>
<a href="#">
<strong class="title">특허분쟁 위험경보 시스템 회원가입 이벤트(6/16~6/30) </strong>

File diff suppressed because it is too large Load Diff