Merge branch 'master_tolag3'

faq 개발
This commit is contained in:
leejunho 2025-10-23 16:10:16 +09:00
parent 64e7eb15ff
commit 86303a8755
22 changed files with 647 additions and 45 deletions

View File

@ -357,7 +357,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
userManageVO.setUniqId(uniqId);
String pass = "1";
if("ROLE_ADMIN".equals(userManageVO.getAuthorCode()) || "ROLE_VISIT".equals(userManageVO.getAuthorCode())){
if(
"ROLE_ADMIN".equals(userManageVO.getAuthorCode()) //최고 관리자
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) //찾교 관리자
|| "ROLE_ADR_JRSDC".equals(userManageVO.getAuthorCode()) //기소유예관할
|| "ROLE_ADR_KIPO".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
|| "ROLE_ADR_PREV".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
){
//패스워드 암호화
//pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
@ -368,8 +374,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
userManageVO.setEmplyrSttusCode("P"); //강제승인
if( !("ROLE_ADMIN".equals(userManageVO.getAuthorCode())
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) )) {
if( !(
"ROLE_ADMIN".equals(userManageVO.getAuthorCode()) //최고 관리자
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) //찾교 관리자
|| "ROLE_ADR_JRSDC".equals(userManageVO.getAuthorCode()) //기소유예관할
|| "ROLE_ADR_KIPO".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
|| "ROLE_ADR_PREV".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
)) {
userManageDAO.insertOffeudUser(userManageVO);
}else {
@ -380,8 +391,14 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
authorGroup.setUniqId(uniqId);
authorGroup.setAuthorCode(userManageVO.getAuthorCode());
//authorGroup.setAuthorCode("ROLE_ADMIN");
if(!"ROLE_ADMIN".equals(userManageVO.getAuthorCode())
|| !"ROLE_VISIT".equals(userManageVO.getAuthorCode())){
if(!(
"ROLE_ADMIN".equals(userManageVO.getAuthorCode()) //최고 관리자
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) //찾교 관리자
|| "ROLE_ADR_JRSDC".equals(userManageVO.getAuthorCode()) //기소유예관할
|| "ROLE_ADR_KIPO".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
|| "ROLE_ADR_PREV".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
)
){
authorGroup.setMberTyCode("GNR");
}else {

View File

@ -1,6 +1,7 @@
package kcc.ve.aplct.cmdTrgt.web;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
@ -1250,14 +1251,23 @@ public class CmdTrgtController {
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd());
}
//FAQ 조회
BoardVO boardVO = new BoardVO();
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID
boardVO.setFirstIndex(0); //페이징 미처리
boardVO.setRecordCountPerPage(1000); //페이징 미처리
Map<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
List<BoardVO> resultList = (List<BoardVO>)map.get("resultList");
model.addAttribute("FAQList", resultList);
//FAQ 조회
VEPrcsDetailVO vEPrcsDetailVO2 = new VEPrcsDetailVO();
vEPrcsDetailVO2.setLctrDivCd(VeConstants.LCTR_DIV_CD_75);
vEPrcsDetailVO2.setFirstIndex(0);
vEPrcsDetailVO2.setRecordCountPerPage(10000);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO2);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
vEPrcsDetailVOList.forEach(t -> {
LocalDateTime ldt = LocalDateTime.parse(t.getFrstRegistPnttm(), dtf);
String dateOnly = ldt.format(outputFormatter);
t.setFrstRegistPnttm(dateOnly);
});
model.addAttribute("FAQList", vEPrcsDetailVOList);
//Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값

View File

@ -1,6 +1,7 @@
package kcc.ve.aplct.prevent.web;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
@ -1251,13 +1252,21 @@ public class PreventController {
}
//FAQ 조회
BoardVO boardVO = new BoardVO();
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID
boardVO.setFirstIndex(0); //페이징 미처리
boardVO.setRecordCountPerPage(1000); //페이징 미처리
Map<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
List<BoardVO> resultList = (List<BoardVO>)map.get("resultList");
model.addAttribute("FAQList", resultList);
VEPrcsDetailVO vEPrcsDetailVO2 = new VEPrcsDetailVO();
vEPrcsDetailVO2.setLctrDivCd(VeConstants.LCTR_DIV_CD_85);
vEPrcsDetailVO2.setFirstIndex(0);
vEPrcsDetailVO2.setRecordCountPerPage(10000);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO2);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
vEPrcsDetailVOList.forEach(t -> {
LocalDateTime ldt = LocalDateTime.parse(t.getFrstRegistPnttm(), dtf);
String dateOnly = ldt.format(outputFormatter);
t.setFrstRegistPnttm(dateOnly);
});
model.addAttribute("FAQList", vEPrcsDetailVOList);
//Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값

View File

@ -1,6 +1,7 @@
package kcc.ve.aplct.sspnIdtmt.web;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
@ -1241,14 +1242,22 @@ public class SspnIdtmtController {
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd());
}
//FAQ 조회
BoardVO boardVO = new BoardVO();
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID
boardVO.setFirstIndex(0); //페이징 미처리
boardVO.setRecordCountPerPage(1000); //페이징 미처리
Map<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
List<BoardVO> resultList = (List<BoardVO>)map.get("resultList");
model.addAttribute("FAQList", resultList);
VEPrcsDetailVO vEPrcsDetailVO2 = new VEPrcsDetailVO();
vEPrcsDetailVO2.setLctrDivCd(VeConstants.LCTR_DIV_CD_65);
vEPrcsDetailVO2.setFirstIndex(0);
vEPrcsDetailVO2.setRecordCountPerPage(10000);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO2);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
vEPrcsDetailVOList.forEach(t -> {
LocalDateTime ldt = LocalDateTime.parse(t.getFrstRegistPnttm(), dtf);
String dateOnly = ldt.format(outputFormatter);
t.setFrstRegistPnttm(dateOnly);
});
model.addAttribute("FAQList", vEPrcsDetailVOList);
//Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값

View File

@ -43,15 +43,30 @@ public class VeConstants {
*/
public static final String LCTR_DIV_CD_60 = "60";
/**
* 조건부 기소유예 Faq
*/
public static final String LCTR_DIV_CD_65 = "65";
/**
* 시정명령
*/
public static final String LCTR_DIV_CD_70 = "70";
/**
* 시정명령 Faq
*/
public static final String LCTR_DIV_CD_75 = "75";
/**
* 예방교육
*/
public static final String LCTR_DIV_CD_80 = "80";
/**
* 예방교육 Faq
*/
public static final String LCTR_DIV_CD_85 = "85";
public static final String STATUS_CD_SBMT = "10"; // 요청

View File

@ -39,4 +39,7 @@ public interface VEPrcsService {
void qnaUpdate(VEPrcsDetailVO vEPrcsDetailVO);
void updateFaqUpsert(VEPrcsDetailVO vEPrcsDetailVO);
void deleteFaq(VEPrcsDetailVO vEPrcsDetailVO);
}

View File

@ -97,4 +97,13 @@ public class VEPrcsDAO extends EgovAbstractDAO {
update("VEPrcsDAO.qnaUpdate", vEPrcsDetailVO);
}
public void updateFaqUpsert(VEPrcsDetailVO vEPrcsDetailVO) {
update("VEPrcsDAO.updateFaqUpsert", vEPrcsDetailVO);
}
public void deleteFaq(VEPrcsDetailVO vEPrcsDetailVO) {
delete("VEPrcsDAO.deleteFaq", vEPrcsDetailVO);
}
}

View File

@ -85,4 +85,17 @@ public class VEPrcsServiceImpl implements VEPrcsService {
vEPrcsDAO.qnaUpdate(vEPrcsDetailVO);
}
@Override
public void updateFaqUpsert(VEPrcsDetailVO vEPrcsDetailVO) {
vEPrcsDAO.updateFaqUpsert(vEPrcsDetailVO);
}
@Override
public void deleteFaq(VEPrcsDetailVO vEPrcsDetailVO) {
vEPrcsDAO.deleteFaq(vEPrcsDetailVO);
}
}

View File

@ -146,6 +146,10 @@ public class CmdTrgtMngController {
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
/*
// 교육신청 서비스단
@ -2668,6 +2672,157 @@ public class CmdTrgtMngController {
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngList.do")
public String cndtnEduFaqMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_75);
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
// }
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 "oprtn/cmdTrgt/cndtnEduFaqMngList";
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDetail.do")
public String cndtnEduFaqMngDetail(
@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(vEPrcsDetailVO != null && StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
}
return "oprtn/cmdTrgt/cndtnEduFaqMngDetail";
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngUpdateAjax.do")
public ModelAndView cndtnEduFaqMngUpdateAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_75);
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
}
vEPrcsService.updateFaqUpsert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDeleteAjax.do")
public ModelAndView cndtnEduFaqMngDeleteAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsService.deleteFaq(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -141,6 +141,10 @@ public class CndtnTrgtMngController {
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
/*
// 교육신청 서비스단
@ -2662,6 +2666,154 @@ public class CndtnTrgtMngController {
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList.do")
public String cndtnEduFaqMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_65);
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
// }
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 "oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList";
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDetail.do")
public String cndtnEduFaqMngDetail(
@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(vEPrcsDetailVO != null && StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
}
return "oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDetail";
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngUpdateAjax.do")
public ModelAndView cndtnEduFaqMngUpdateAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_65);
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
}
vEPrcsService.updateFaqUpsert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDeleteAjax.do")
public ModelAndView cndtnEduFaqMngDeleteAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsService.deleteFaq(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -146,6 +146,10 @@ public class PreventNewMngController {
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
/*
// 교육신청 서비스단
@ -2652,6 +2656,157 @@ public class PreventNewMngController {
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngList.do")
public String cndtnEduFaqMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_85);
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
// }
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 "oprtn/prevent/cndtnEduFaqMngList";
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngDetail.do")
public String cndtnEduFaqMngDetail(
@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(vEPrcsDetailVO != null && StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
}
return "oprtn/prevent/cndtnEduFaqMngDetail";
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngUpdateAjax.do")
public ModelAndView cndtnEduFaqMngUpdateAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_85);
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
}
vEPrcsService.updateFaqUpsert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngDeleteAjax.do")
public ModelAndView cndtnEduFaqMngDeleteAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsService.deleteFaq(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -55,6 +55,12 @@
roleHierarchyString="
ROLE_ADMIN > ROLE_ADR_ADMIN
ROLE_ADMIN > ROLE_VISIT
ROLE_ADMIN > ROLE_ADR_JRSDC
ROLE_ADMIN > ROLE_ADR_KIPO
ROLE_ADMIN > ROLE_ADR_PREV
ROLE_ADR_JRSDC > ROLE_USER_MANAGER
ROLE_ADR_KIPO > ROLE_USER_MANAGER
ROLE_ADR_PREV > ROLE_USER_MANAGER
ROLE_ADR_ADMIN > ROLE_USER_MANAGER
ROLE_VISIT > ROLE_USER_MANAGER
ROLE_USER_MANAGER > ROLE_USER_MEMBER

View File

@ -215,7 +215,7 @@
GROUP BY A.MENU_NO
</isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT')
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
GROUP BY A.MENU_NO
</isNotEqual>
ORDER BY

View File

@ -158,7 +158,7 @@
GROUP BY A.MENU_NO, A.MENU_NM, A.PROGRM_FILE_NM, A.UPPER_MENU_NO, A.MENU_ORDR, A.MENU_DC, A.RELATE_IMAGE_PATH, A.RELATE_IMAGE_NM, A.MENU_USER_TYPE, B.USE_YN
</isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT')
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
GROUP BY A.MENU_NO, A.MENU_NM, A.PROGRM_FILE_NM, A.UPPER_MENU_NO, A.MENU_ORDR, A.MENU_DC, A.RELATE_IMAGE_PATH, A.RELATE_IMAGE_NM, A.MENU_USER_TYPE, B.USE_YN
</isNotEqual>
ORDER BY

View File

@ -246,7 +246,7 @@
</isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT')
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
/*
GROUP BY A.MENU_NO
*/

View File

@ -102,7 +102,7 @@
AND B.AUTHOR_CODE IN ('ROLE_ANONYMOUS', 'ROLE_USER_MEMBER', 'ROLE_USER_MANAGER')
</isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT')
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
</isNotEqual>
</isNotEmpty>
LIMIT 1

View File

@ -102,7 +102,7 @@
AND B.AUTHOR_CODE IN ('ROLE_ANONYMOUS', 'ROLE_USER_MEMBER', 'ROLE_USER_MANAGER')
</isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT')
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
</isNotEqual>
</isNotEmpty>
LIMIT 1

View File

@ -662,4 +662,44 @@
edu_aplct_ord = #eduAplctOrd#
</update>
<!-- Faq upsert -->
<update id="VEPrcsDAO.updateFaqUpsert" parameterClass="VEPrcsDetailVO" >
/* VEPrcsDAO.FaqUpsert */
INSERT INTO VEA_PRCS_APLCT_PRD_QNA (
PRCS_APLCT_PRD_QNA_ORD,
LCTR_DIV_CD,
QNA_CN,
QNA_ANSWER_CN,
FRST_REGISTER_ID,
FRST_REGIST_PNTTM
)
VALUES (
#prcsAplctPrdQnaOrd#,
#lctrDivCd#,
#qnaCn#,
#qnaAnswerCn#,
#frstRegisterId#,
NOW()
)
ON CONFLICT (PRCS_APLCT_PRD_QNA_ORD)
DO UPDATE
SET
QNA_CN = #qnaCn#,
QNA_ANSWER_CN = #qnaAnswerCn#,
LAST_UPDUSR_ID = #lastUpdusrId#,
LAST_UPDT_PNTTM = NOW()
</update>
<!-- Faq delete -->
<update id="VEPrcsDAO.deleteFaq" parameterClass="VEPrcsDetailVO" >
/* VEPrcsDAO.deleteFaq */
DELETE
FROM VEA_PRCS_APLCT_PRD_QNA
WHERE PRCS_APLCT_PRD_QNA_ORD = #prcsAplctPrdQnaOrd#
</update>
</sqlMap>

View File

@ -72,6 +72,7 @@ $( document ).ready(function(){
$('#userWork_case1').show();
$('#userWork_case2').hide();
$('#userWork_case3').hide();
});
@ -89,18 +90,20 @@ function authorChange(obj) {
}
if (obj.options[obj.selectedIndex].value=='ROLE_ADR_JRSDC'
|| obj.options[obj.selectedIndex].value=='ROLE_ADR_KIPO'
// || obj.options[obj.selectedIndex].value=='ROLE_ADR_KIPO'
){ //기소유예검찰담당자
$('#userWork_case1').hide();
$('#userWork_case2').show();
$('#userWork_case3').hide();
}else if (obj.options[obj.selectedIndex].value=='ROLE_VISIT'){ //찾교담당자
}
/* else if (obj.options[obj.selectedIndex].value=='ROLE_VISIT'){ //찾교담당자
$('#userWork_case1').hide();
$('#userWork_case2').hide();
$('#userWork_case3').show();
}else{
} */
else{
$('#userWork_case1').show();
$('#userWork_case2').hide();
$('#userWork_case3').hide();

View File

@ -176,8 +176,9 @@
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<div>
<p class="qst_cont">${FAQList.nttSj}</p>
<p class="date">${FAQList.frstRegisterPnttm}</p>
<%-- <p class="qst_cont">${FAQList.nttSj}</p> --%>
<p class="qst_cont">${FAQList.qnaCn}</p>
<p class="date">${FAQList.frstRegistPnttm}</p>
</div>
</button>
@ -185,7 +186,8 @@
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<div>
<p class="awr_cont">${FAQList.nttCn }</p>
<%-- <p class="awr_cont">${FAQList.nttCn }</p> --%>
<p class="awr_cont" style="white-space: pre-line;">${FAQList.qnaAnswerCn }</p>
</div>
</div>
</div>

View File

@ -176,8 +176,9 @@
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<div>
<p class="qst_cont">${FAQList.nttSj}</p>
<p class="date">${FAQList.frstRegisterPnttm}</p>
<%-- <p class="qst_cont">${FAQList.nttSj}</p> --%>
<p class="qst_cont">${FAQList.qnaCn}</p>
<p class="date">${FAQList.frstRegistPnttm}</p>
</div>
</button>
@ -185,7 +186,8 @@
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<div>
<p class="awr_cont">${FAQList.nttCn }</p>
<%-- <p class="awr_cont">${FAQList.nttCn }</p> --%>
<p class="awr_cont" style="white-space: pre-line;">${FAQList.qnaAnswerCn }</p>
</div>
</div>
</div>

View File

@ -176,8 +176,9 @@
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<div>
<p class="qst_cont">${FAQList.nttSj}</p>
<p class="date">${FAQList.frstRegisterPnttm}</p>
<%-- <p class="qst_cont">${FAQList.nttSj}</p> --%>
<p class="qst_cont">${FAQList.qnaCn}</p>
<p class="date">${FAQList.frstRegistPnttm}</p>
</div>
</button>
@ -185,7 +186,8 @@
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<div>
<p class="awr_cont">${FAQList.nttCn }</p>
<%-- <p class="awr_cont">${FAQList.nttCn }</p> --%>
<p class="awr_cont" style="white-space: pre-line;">${FAQList.qnaAnswerCn }</p>
</div>
</div>
</div>