Restore reduced files to 73017623 snapshot

This commit is contained in:
leejunho 2025-10-29 14:34:37 +09:00
parent 5e18163bd3
commit 3c59329a8b
20 changed files with 1064 additions and 81 deletions

View File

@ -125,6 +125,8 @@ public class LoginVO implements Serializable{
private String mberCi;
private String joinType;
public String getId() {
return id;
}
@ -440,6 +442,13 @@ public class LoginVO implements Serializable{
public void setMberCi(String mberCi) {
this.mberCi = mberCi;
}
public String getJoinType() {
return joinType;
}
public void setJoinType(String joinType) {
this.joinType = joinType;
}

View File

@ -552,8 +552,14 @@ public class SspnIdtmtController {
try {
if (vEEduAplctVO !=null) {
vEPrcsAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd());
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
//나의 강의실, 신청목록에서 접근 해당 교육 정보 노출
//교육 신청목록에서 접근 가장 최근 정보 노출
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getEduAplctOrd())) {
vEPrcsAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
}else {
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
}
vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsAplctVO);
}
@ -801,7 +807,8 @@ public class SspnIdtmtController {
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/popup/eduCancelPopupAjax.do")
public ModelAndView filePopupAjax(
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO,
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
@ -869,16 +876,27 @@ public class SspnIdtmtController {
System.out.println(vEEduRprtVO.getAprvlCn());
System.out.println(s_atchFileId);
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEEduRprtVO.getEduAplctOrd());
/*
* VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
* vEEduAplctVO.setEduAplctOrd(vEEduRprtVO.getEduAplctOrd());
*
* vEEduAplctVO.setAplctCn(vEEduRprtVO.getAprvlCn());
* vEEduAplctVO.setRsltAtchFileId(s_atchFileId);
* vEEduAplctVO.setAprvlCd("35");
* vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
* vEEduAplctService.update(vEEduAplctVO);
*/
vEEduAplctVO.setAplctCn(vEEduRprtVO.getAprvlCn());
vEEduAplctVO.setRsltAtchFileId(s_atchFileId);
vEEduAplctVO.setAprvlCd("35");
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
/*
251023
ve_edu_aplct는 확정 상태 유지.
vea_aplct_detail_info에서 취소 관련 처리
*/
vEEduAplctVO.setAplctStateCd(VeConstants.EDU_CD_CANCLE_REQ); //취소요청 코드 35
vEEduAplctVO.setCnclAtchFileId(s_atchFileId);
vEEduAplctVO.setCnclCn(vEEduAplctVO.getAprvlCn()); //취소사유 - 기존에는 aprvlCn 사용
vEEduMIXService.updateCnclStatus(vEEduAplctVO);
//취소요청 정보 저장
vEEduAplctService.update(vEEduAplctVO);
}catch(Exception ex) {

View File

@ -268,6 +268,14 @@ public class VeConstants {
public static final String DDLN_CD_APP_ING = "40";
public static final String DDLN_CD_APP_END = "50";
/*
* VEA003 - edu_state_cd(vea_sspn_idmt_trgt), aplct_state_cd(vea_aplct_detail_info)
*/
public static final String EDU_CD_NOTCOMPLETE= "10"; //미이수
public static final String EDU_CD_COMPLETE = "20"; //이수
public static final String EDU_CD_CANCLE_REQ = "35"; //취소요청
public static final String EDU_CD_DELAY = "60"; //연기
}

View File

@ -128,4 +128,6 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectTngrRsltRprtList(VEEduAplctVO paramVO) throws Exception;
List<VEEduAplctVO> selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception;
void updateCnclStatus(VEEduAplctVO vEEduAplctVO);
}

View File

@ -174,10 +174,46 @@ public interface VEInstrMixService {
//교육실정통계- 3.대상별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//조건부기소유예관리 통계
//교육실정통계- 검찰청별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 대상별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//예방교육
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//시정명령 통계
//교육실정통계- 검찰청별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 3.대상별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//조건부기소유예관리 통계
//교육실정통계- 검찰청별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 대상별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception;
}

View File

@ -343,13 +343,68 @@ public class VEInstrMixDAO extends EgovAbstractDAO {
return tlist;
}
//통계정보-조건부기소유예관리-검찰청별 교육 의뢰 현황(그래프 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no4", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no5", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no6", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no7", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_prevent_no5", vEInstrDetailVO);
return tlist;
}
//통계정보-조건부기소유예관리-검찰청별 교육 의뢰 현황(그래프 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no1", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no2", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no3", vEInstrDetailVO);
return tlist;
}
//통계정보-조건부기소유예관리-검찰청별 교육 의뢰 현황(그래프 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no4", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no5", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no6", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no7", vEInstrDetailVO);
return tlist;
}
}

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

@ -38,8 +38,11 @@ import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.com.utl.user.service.QustnrCommonUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService;
import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
@ -57,6 +60,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
import kcc.ve.oprtn.qestnr.service.VEALettnQestnrMIXService;
/**
* 기반강화연수(관리자)
@ -174,6 +178,17 @@ public class CmdPrcsInfoMngController {
@Resource(name="eduAplctGnrService")
private EgovIdGnrService eduAplctGnrService;
// 설문 util
@Resource(name = "qustnrCommonUtil")
private QustnrCommonUtil qustnrCommonUtil;
// 설문 복합 VEA_
@Resource(name = "vEALettnQestnrMIXService")
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
@Resource(name = "egovQustnrRespondInfoService")
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
/**
* 기반강화연수 과정 관리 목록 화면
*/
@ -1328,6 +1343,92 @@ public class CmdPrcsInfoMngController {
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
//설문 문항 정보
try {
model = qustnrCommonUtil._qustnrQesItm(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001"
, vEALettnQestnrMIXService
, egovQustnrRespondInfoService
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
);
}catch(Exception ex) {
ex.printStackTrace();
}
/*
// 설문조사 정보
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20);
QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO);
// 설문조사 문항리스트 조회
Map <String, Object> commandMap =new HashMap<String, Object>();
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001");
commandMap.put("qestnrId",info.getQestnrId()); //문제 ID
model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
*/
try{
model = qustnrCommonUtil._chasiSrvyList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//개인별 만족도 관리 - chasiSrvyEAList
try{
model = qustnrCommonUtil._chasiSrvyEAList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//주관식 답변 정보
try {
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
//qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
qustnrRespondInfoVO.setEduChasiOrd("");
List<QustnrRespondInfoVO> subjList = egovQustnrRespondInfoService.selectSubjList(qustnrRespondInfoVO);
if (subjList.size()>=0) {
model.addAttribute("subjInfo", subjList.get(0));
}
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
System.out.println("=============================================chasiSrvyEAList=============================================");
return "/oprtn/cmdTrgt/cndtnEduPrcsAplctCfnMngDetail";
}
@ -2713,8 +2814,6 @@ public class CmdPrcsInfoMngController {
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//사용 중인 과정만 조회
vEPrcsDetailVO.setUseYn("Y");
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3

View File

@ -38,15 +38,23 @@ import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.com.utl.user.service.QustnrCommonUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService;
import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO;
import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
@ -57,6 +65,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
import kcc.ve.oprtn.qestnr.service.VEALettnQestnrMIXService;
/**
* 기반강화연수(관리자)
@ -161,12 +170,33 @@ public class PreventMngController {
//파일 처리 egov
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil egovFileMngUtil;
//파일 체크 util
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;
// 설문 util
@Resource(name = "qustnrCommonUtil")
private QustnrCommonUtil qustnrCommonUtil;
// 설문 복합 VEA_
@Resource(name = "vEALettnQestnrMIXService")
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
@Resource(name = "egovQustnrRespondInfoService")
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
//강의설정 MIX
@Resource(name = "vELctrMIXService")
private VELctrMIXService vELctrMIXService;
//rkdtk 관리
@Resource(name = "vEInstrMixService")
private VEInstrMixService vEInstrMixService;
// 첨부파일 정보
@Resource(name="vEInstrDetailActvtHstryService")
private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService;
/**
* 기반강화연수 과정 관리 목록 화면
@ -651,7 +681,278 @@ public class PreventMngController {
}
/**
* 교육실적통계 화면
*/
@RequestMapping("/kccadr/oprtn/prevent/newEduPrfrmMngList.do")
public String newEduPrfrmMngList(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, HttpSession session
, ModelMap model
) throws Exception {
//LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
//설정 리스트(과거~올해+1)
List<VELctrDetailVO> selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO);
model.addAttribute("selectStngYrList", selectStngYrList);
//차시별 정보
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO);
model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList);
//vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예
/*
//통계- 검찰청별 교육 의뢰 현황(그래프 포함)
{
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1);
model.addAttribute("list_no1",selectAsgnmInfoT2List_no1);
}
//통계- 월별 교육의뢰현황(그래프 포함)
{
//vEInstrDetailVODetail.setNo3("10"); * 10-횟수, 20-인원 *
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no2 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no2);
model.addAttribute("list_no2",selectAsgnmInfoT2List_no2);
}
//통계- 대상별 교육의뢰현황(그래프 포함)
{
// * 10-횟수, 20-인원 *
//vEInstrDetailVODetail.setNo3("20");
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3);
model.addAttribute("list_no3",selectAsgnmInfoT2List_no3);
}
//통계- 검찰청별 교육 수료 현황(그래프 포함)
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
model.addAttribute("list_no4",selectAsgnmInfoT4List_no4);
}
*/
// 월별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨
{
vEInstrDetailVODetail.setLctrDivCd(LCTR_DIV_CD);
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail);
model.addAttribute("list_no5",selectAsgnmInfoT5List);
}
/*
// 대상별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
}
// 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
//vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
model.addAttribute("list_no7",selectAsgnmInfoT7List);
}
*/
//통계- 인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no8 = vEInstrMixService.selectEduPrfrmInfo_tngr_no8(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no8 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no8);
model.addAttribute("list_no8",selectAsgnmInfoT2List_no8);
}
*/
//통계- 도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no9 = vEInstrMixService.selectEduPrfrmInfo_tngr_no9(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no9 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no9);
model.addAttribute("list_no9",selectAsgnmInfoT2List_no9);
}
*/
return "oprtn/prevent/newEduPrfrmMngList";
}
/**
* 교육실적통계 Excel - 조건부기소유예 - 5검찰청별 교육 이수 현황(그래프 포함)
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/prevent/eduPrfrmMngExcelDownLoad_csi_no5.do")
public ModelAndView eduPrfrmMngExcelDownLoad_csi_no5(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, ModelMap model
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
try {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
selectAsgnmInfoT2List.get(12).setCodeNm("합계");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT2List);
// 세팅값
String title = "교육실적통계-월별 교육 이수 현황";
int[] width = {
4000, 4000, 4000
}; // 너비
//33개 항목
String[] header = {
""
, "이수(명)"
, "횟수"
};
String[] order = {
"CodeNm"
, "Cnt"
, "Cnt2"
};
excelDown(
excelData,
title,
width,
header,
order,
model
);
}catch(Exception ep) {
ep.getStackTrace();
}
modelAndView.addObject(model);
return modelAndView;
}
/**
* @methodName : instrActvtHstrySignMngList
* @author : 이호영
* @date : 2023.12.28
* @description : 직인대장관리(이수증) - 기반 기소
* @param vEInstrDetailActvtHstryVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
//LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
// if (loginVO == null || ssoLoginVO == null) {
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// }
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO);
//2. pageing step2
vEInstrDetailActvtHstryVO = this.setPagingStep2_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO, paginationInfo);
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.encrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
// List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignPagingList(vEInstrDetailActvtHstryVO);
List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignAndCmpltCrtfcPagingList(vEInstrDetailActvtHstryVO);
vEInstrDetailActvtHstryVOList.stream().forEach(t-> t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//3.pageing step3
paginationInfo = this.setPagingStep3_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 검색어 복호화
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList";
}
/**
* 기소유예 신청기간 등록
@ -1322,6 +1623,93 @@ public class PreventMngController {
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
//설문 문항 정보
try {
model = qustnrCommonUtil._qustnrQesItm(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001"
, vEALettnQestnrMIXService
, egovQustnrRespondInfoService
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
);
}catch(Exception ex) {
ex.printStackTrace();
}
/*
// 설문조사 정보
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20);
QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO);
// 설문조사 문항리스트 조회
Map <String, Object> commandMap =new HashMap<String, Object>();
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001");
commandMap.put("qestnrId",info.getQestnrId()); //문제 ID
model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
*/
try{
model = qustnrCommonUtil._chasiSrvyList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//개인별 만족도 관리 - chasiSrvyEAList
try{
model = qustnrCommonUtil._chasiSrvyEAList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//주관식 답변 정보
try {
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
//qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
qustnrRespondInfoVO.setEduChasiOrd("");
List<QustnrRespondInfoVO> subjList = egovQustnrRespondInfoService.selectSubjList(qustnrRespondInfoVO);
if (subjList.size()>=0) {
model.addAttribute("subjInfo", subjList.get(0));
}
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
System.out.println("=============================================chasiSrvyEAList=============================================");
return "/oprtn/prevent/cndtnEduPrcsAplctCfnMngDetail";
}
@ -2514,8 +2902,6 @@ public class PreventMngController {
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//사용 중인 과정만 조회
vEPrcsDetailVO.setUseYn("Y");
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3
@ -2950,4 +3336,72 @@ public class PreventMngController {
return p_paginationInfo;
}
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1_VEInstrDetailActvtHstryVO(
VEInstrDetailActvtHstryVO p_vEEduAplctVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit());
paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEInstrDetailActvtHstryVO setPagingStep2_VEInstrDetailActvtHstryVO(
VEInstrDetailActvtHstryVO p_vEEduAplctVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEEduAplctVO.setSearchSortCnd("prcs_ord");
p_vEEduAplctVO.setSearchSortOrd("desc");
}
return p_vEEduAplctVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3_VEInstrDetailActvtHstryVO(
List<VEInstrDetailActvtHstryVO> p_vEEduAplctVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
@SuppressWarnings("unused")
private void excelDown(
List list,
String title,
int[] width,
String[] header,
String[] order,
ModelMap model
){
// 호출
SXSSFWorkbook workbook;
try {
workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title);
model.addAttribute("locale", Locale.KOREA);
model.addAttribute("workbook", workbook);
model.addAttribute("workbookName", title);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

View File

@ -25,7 +25,7 @@
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, '-' ORGNZT_ID, ESNTL_ID,
'-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY
, '' AS mber_seq
, '' AS mber_seq, JOIN_TYPE AS JOIN_TYPE
FROM COMVNUSERMASTER A
INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID
WHERE CONCAT(USER_SE, USER_ID) = ?"
@ -53,6 +53,7 @@
<egov-security:secured-object-config id="securedObjectConfig"
roleHierarchyString="
ROLE_ADMIN > ROLE_ADR_ADMIN
ROLE_ADMIN > ROLE_VISIT
ROLE_ADMIN > ROLE_ADR_JRSDC
ROLE_ADMIN > ROLE_ADR_KIPO
@ -60,6 +61,7 @@
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
ROLE_USER_MEMBER > ROLE_ANONYMOUS"

View File

@ -3,6 +3,10 @@
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 강사 --><!-- 기본셋 -->
<sqlMap resource="egovframework/sqlmap/ve/instr/VEInstrDetailActvtHstry_SQL_Postgresql.xml"/><!-- 강사활동내역신청테이블 -->
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Postgresql.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcsOnlnCntnt_SQL_Postgresql.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml"/>
@ -37,5 +41,8 @@
<sqlMap resource="egovframework/sqlmap/ve/tngr/VEAInstrHstryMng_SQL_Postgresql.xml"/> <!-- 강사이력관리 -->
<sqlMap resource="egovframework/sqlmap/ve/qustnr/VEALettnQestnrMIX_SQL_Postgresql.xml"/> <!-- 설문지 MIX 쿼리 -->
<!-- 통계 2024.01.10 -->
<sqlMap resource="egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Postgresql.xml"/><!-- 통계 쿼리 -->
</sqlMapConfig>

View File

@ -134,7 +134,9 @@
FROM LETTNQUSTNRQESITM A
WHERE 1=1
AND A.QESTNR_ID = #qestnrId#
AND A.QUSTNR_TMPLAT_ID = #qestnrTmplatId#
/*
AND A.QUSTNR_TMPLAT_ID = qestnrTmplatId
*/
ORDER BY A.QESTN_SN
</select>
<!-- 설문조사(설문등록):: 설문등록 /설문 항목정보 -->

View File

@ -218,7 +218,8 @@
]]>
</isEqual>
</isNotEmpty>
CRTFC_DN_VALUE )
CRTFC_DN_VALUE,
JOIN_TYPE )
VALUES (
#uniqId# ,
#emplyrId# ,
@ -256,7 +257,8 @@
#snsId# ,
#snsEmail# ,
</isNotEmpty>
#subDn# )
#subDn#,
#joinType# )
</insert>
<!-- <insert id="userManageDAO.insertUser_GNR">
@ -564,6 +566,7 @@
UPDATE LETTNEMPLYRINFO
SET
PASSWORD = #password#
, JOIN_TYPE = '1'
WHERE ESNTL_ID = #uniqId#
]]>
</update>

View File

@ -849,6 +849,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

@ -808,6 +808,8 @@
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
vadi.CNCL_CN AS cnclCn, /* 취소사유 */
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId, /* 취소요청파일 */
vsit.edu_state_cd AS eduStateCd,
le.MBER_NM AS userNm,
le.MBER_ID AS mberId,
@ -917,24 +919,35 @@
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
a.QESTNR_ID as QESTNR_ID_10 ,
null as QESTNR_ID_20 ,
null as QESTNR_ID_30 ,
a.qustnr_bgnde ,
a.qustnr_endde
/*
MAX(CASE WHEN a.site_id_cd = '10' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_10,
MAX(CASE WHEN a.site_id_cd = '20' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_20,
MAX(CASE WHEN a.site_id_cd = '30' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_30
MAX(CASE WHEN a.site_id_cd = '30' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_30
*/
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
AND a.SITE_ID_CD IN ('10', '20', '30')
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
/*
AND TO_CHAR(NOW(), 'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde, '2000.01.01') AND COALESCE(a.qustnr_endde, '9999.12.31')
GROUP BY
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ) I ON
(1 = 1)
a.SITE_ID
*/
) I ON
(vpap.edu_strt_pnttm between coalesce(I.qustnr_bgnde, '20000101') and coalesce(I.qustnr_endde,'99991231'))

View File

@ -147,7 +147,9 @@
lettnqustnrrespondinfo b
WHERE
b.edu_aplct_ord=#eduAplctOrd#
AND b.edu_chasi_ord=#eduChasiOrd#
/*
AND b.edu_chasi_ord=eduChasiOrd
*/
GROUP BY
b.QUSTNR_TMPLAT_ID ,
b.QESTNR_ID
@ -160,14 +162,22 @@
AND a.site_id_cd = #siteIdCd#
)b
on(1=1)
on(1=1)
, ve_prcs_aplct_prd c
WHERE 1 =1
AND A.SITE_ID = #siteId#
AND COALESCE(A.site_id_cd, '10')=#siteIdCd#
AND c.prcs_aplct_prd_ord=#eduAplctOrd#
AND c.edu_strt_pnttm between coalesce(a.qustnr_bgnde, '20000101') and coalesce(a.qustnr_endde, '99991231')
/*
AND to_char(NOW(), 'YYYY.MM.DD') BETWEEN
COALESCE(a.qustnr_bgnde,'2000.01.01') AND COALESCE(a.qustnr_endde,'9999.12.31')
*/
AND A.SITE_ID = #siteId#
AND COALESCE(A.site_id_cd, '10')=#siteIdCd#
ORDER BY A.QESTNR_ID DESC
LIMIT 1
@ -230,30 +240,42 @@
SELECT c02.*
FROM (
SELECT
c00.qustnr_tmplat_id
, c00.qestnr_id
, c00.qustnr_qesitm_id
, max(c00.qustnr_rslt_id) AS qustnr_rslt_id
c00.qestnr_id ,
c00.qustnr_qesitm_id ,
max(c00.qustnr_rslt_id) as qustnr_rslt_id
FROM
LETTNQESTNRRSLTDetail c00
, ve_edu_aplct d00
WHERE
c00.EDU_APLCT_ORD = #eduAplctOrd#
AND c00.EDU_CHASI_ORD = #eduChasiOrd#
d00.prcs_ord = #eduAplctOrd#
and d00.EDU_APLCT_ORD=c00.edu_aplct_ord
/*
and c00.EDU_CHASI_ORD = ''
*/
GROUP BY
c00.qustnr_tmplat_id
, c00.qestnr_id
, c00.qustnr_qesitm_id
c00.qestnr_id ,
c00.qustnr_qesitm_id
)c01
, LETTNQESTNRRSLTDetail c02
WHERE c01.qustnr_tmplat_id=c02.qustnr_tmplat_id
WHERE 1=1
/*
c01.qustnr_tmplat_id=c02.qustnr_tmplat_id
*/
AND c01.qestnr_id=c02.qestnr_id
AND c01.qustnr_qesitm_id=c02.qustnr_qesitm_id
AND c01.qustnr_rslt_id=c02.qustnr_rslt_id
) c
on(
1=1
/*
b.QUSTNR_TMPLAT_ID =c.QUSTNR_TMPLAT_ID
*/
AND b.QESTNR_ID =c.QESTNR_ID
AND b.QUSTNR_QESITM_ID =c.QUSTNR_QESITM_ID
@ -287,7 +309,10 @@
LEFT OUTER JOIN LETTNQUSTNRRESPONDINFO e
on
(
d.QUSTNR_TMPLAT_ID =e.QUSTNR_TMPLAT_ID
1=1
/*
d.QUSTNR_TMPLAT_ID =e.QUSTNR_TMPLAT_ID
*/
AND d.QESTNR_ID =e.QESTNR_ID
AND d.QUSTNR_RESPOND_ID =e.QUSTNR_RESPOND_ID
AND d.EDU_APLCT_ORD = e.EDU_APLCT_ORD
@ -321,7 +346,10 @@
)F
on(
1=1
/*
b.QUSTNR_TMPLAT_ID =f.QUSTNR_TMPLAT_ID
*/
AND b.QESTNR_ID =f.QESTNR_ID
AND b.QUSTNR_QESITM_ID =f.QUSTNR_QESITM_ID
@ -331,7 +359,9 @@
WHERE a.site_id=#siteId#
AND COALESCE(a.SITE_ID_CD,'10') =#siteIdCd#
AND b.QUSTNR_TMPLAT_ID =a.QUSTNR_TMPLAT_ID
/*
AND b.QUSTNR_TMPLAT_ID =a.QUSTNR_TMPLAT_ID
*/
AND b.QESTNR_ID =a.QESTNR_ID
</select>

View File

@ -845,37 +845,37 @@
</td>
<td>
<c:choose>
<c:when test="${list.aprvlCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:when test="${list.aplctStateCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
<button type="button" class="btn_type04" onclick="fncCancelUser('${list.eduAplctOrd}', '${info.prcsAplctPrdOrd}', '6-2')">취소승인</button>
<button type="button" class="btn_type05" onclick="fncCancelUser('${list.eduAplctOrd}', '${info.prcsAplctPrdOrd}', '6-3')">취소반려</button>
<br/>
<br/>
${list.aplctCn}
${list.cnclCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aprvlCd eq '40'}"><!-- 취소 승인 -->
<c:when test="${list.aplctStateCd eq '60' and not empty list.cnclCn}"><!-- 취소 승인 -->
취소승인
<br/>
<br/>
${list.aplctCn}
${list.cnclCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aprvlCd eq '60' and not empty list.aplctCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
<c:when test="${list.aplctStateCd ne '60' and not empty list.cnclCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
취소반려
<br/>
<br/>
${list.aplctCn}
${list.cnclCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
</c:import>
</c:when>
<c:otherwise>
@ -962,7 +962,8 @@
<button type="button" class="btn_type04" onclick="fn_statusChgList('20', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">이수</button>
<button type="button" class="btn_type04" onclick="fn_statusChgList('10', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">미이수</button>
</div>
</div>
</div>
<br/>
<div class="tb_tit01">
@ -1016,7 +1017,229 @@
<%-- <button type="button" class="btn_type04" onclick="location.href='<c:url value="/kccadr/oprtn/prevent/cndtnEduPrcsAplctCfnMngList.do" />'; return false;">교육확정목록</button> --%>
</div>
</div>
</div>
<!-- 문항리스트_상세 -->
<div class="tb_tit01">
<p>교육 내용에 대한 전반적 만족도 평가</p>
</div>
<!-- <div class="tb_type01"> -->
<!-- <table> -->
<%-- <c:if test="${!empty chasiSrvyList}"> --%>
<%-- <colgroup> --%>
<%-- <col style="width: 120px;"> --%>
<%-- <col style="width: auto;"> --%>
<%-- <col style="width: 120px;"> --%>
<%-- <col style="width: auto;"> --%>
<%-- </colgroup> --%>
<!-- <tbody class="ta_con"> -->
<!-- <tr> -->
<!-- <th scope="row"> -->
<!-- <p>참석자</p> -->
<!-- </th> -->
<!-- <td> -->
<%-- <input type="hidden" class="popupInput" id="qestnrParticipant" name="qestnrParticipant" value="<c:out value="${qestnrParticipant}"/>"> --%>
<%-- <c:out value="${qestnrParticipant}"/> --%>
<!-- </td> -->
<!-- <th scope="row"> -->
<!-- <p>응답율</p> -->
<!-- </th> -->
<!-- <td id="responseRate">-</td> -->
<!-- </tr> -->
<!-- <tr> -->
<!-- <th scope="row"> -->
<!-- <p>응답자</p> -->
<!-- </th> -->
<!-- <td> -->
<%-- <input type="hidden" class="popupInput" id="qestnrRespondent" name="qestnrRespondent" value="<c:out value="${qestnrRespondent}"/>"> --%>
<%-- <c:out value="${qestnrRespondent}"/> --%>
<!-- </td> -->
<!-- <th scope="row"> -->
<!-- <p>무응답</p> -->
<!-- </th> -->
<!-- <td id="noResponse">-</td> -->
<!-- </tr> -->
<!-- </tbody> -->
<%-- </c:if> --%>
<%-- <c:if test="${empty chasiSrvyList}"> --%>
<!-- <tr> -->
<!-- <td colspan="2">등록된 평가문항이 없습니다.</td> -->
<!-- </tr> -->
<%-- </c:if> --%>
<!-- </table> -->
<!-- </div> -->
<c:if test="${!empty chasiSrvyList}">
<div class="tb_type01 list2">
<table>
<colgroup>
<col style="width: auto;">
<col style="width: 12%;">
<col style="width: 12%;">
<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>
</tr>
</thead>
<tbody>
<c:forEach items="${Comtnqustnrqesitm}" var="QestmInfo" varStatus="status1">
<c:forEach items="${chasiSrvyList}" var="chasiSrvyInfo" varStatus="">
<c:if test="${QestmInfo.qestnrQesitmId eq chasiSrvyInfo.qestnrQesitmId}">
<tr>
<th scope="row" class="t_left">
${status1.count}) <c:out value="${QestmInfo.qestnCn}" escapeXml="true" />
</th>
<td>
<c:out value="${chasiSrvyInfo.verySatisfied}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.satisfied}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.neither}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.dissatisfied}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.veryDissatisfied}"/>
</td>
</tr>
</c:if>
</c:forEach>
</c:forEach>
</tbody>
</table>
</div>
</c:if>
<!-- 기타의견이 있으면 보여준다. -->
<c:if test="${not empty subjInfo}">
<div class="tb_type01 list2">
<table>
<caption>기타의견</caption>
<colgroup>
<col style="auto;">
</colgroup>
<thead>
<tr>
<th scope="col">기타의견</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<br/>
<c:out value="${fn:replace(subjInfo.qustnrCn , crlf , '<br/>')}" escapeXml="false" />
<br/>
<br/>
</th>
</tr>
</tbody>
</table>
<br/>
<br/>
<br/>
</div>
</c:if>
<!-- btn_wrap -->
<!--
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<c:if test="${!empty chasiSrvyList}">
<button class="btn_type02" onclick="fncExcelDown(); return false;">엑셀 다운로드</button>
</c:if>
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
<br/>
<br/>
-->
<c:choose>
<%-- <c:when test="${chasiSrvyList[0].neither ne '' and chasiSrvyList[0].neither ne null}"> --%>
<c:when test="${qestnrParticipant ne '' and qestnrParticipant ne null}">
<div class="btn_wrap">
<div class="btn_right">
<c:forEach var="list" items="${chasiQr}" varStatus="status">
<c:choose>
<c:when test="${not empty list.qestnrId10}">
<button type="button" class="btn_type04" data-info="${list.eduChasiOrd}" data-tooltip="sub37_pop20"
onclick="fn_chasiQRPop('${list.eduAplctOrd}','${list.eduChasiOrd}','10','print'
,'${list.qustnrTmplatId}','${list.qestnrId10}','${list.qustnrRespondId10}'
)" title="팝업 열림">설문QR</button>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:forEach>
<button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">수정</button>
<button type="button" class="btn_type01" onclick="fn_delete(); return false;">삭제</button>
</div>
</div>
</c:when>
<c:otherwise>
<!-- 등록버튼 추가 필요 -->
<div class="btn_wrap">
<div class="btn_right">
<c:forEach var="list" items="${chasiQr}" varStatus="status">
<c:choose>
<c:when test="${not empty list.qestnrId10}">
<button type="button" class="btn_type04" data-info="${list.eduChasiOrd}" data-tooltip="sub37_pop20"
onclick="fn_chasiQRPop('${list.eduAplctOrd}','${list.eduChasiOrd}','10','print'
,'${list.qustnrTmplatId}','${list.qestnrId10}','${list.qustnrRespondId10}'
)" title="팝업 열림">설문QR</button>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:forEach>
<!-- <button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">등록</button> -->
</div>
</div>
</c:otherwise>
</c:choose>
</div>
</div>

View File

@ -166,8 +166,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>
@ -175,8 +175,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>
@ -184,8 +184,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>
@ -372,12 +372,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>

View File

@ -24,9 +24,10 @@
}
function fncGoDetail(prcsAplctPrdOrd){
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.eduAplctOrd.value = eduAplctOrd;
viewForm.action = "<c:url value='/web/ve/aplct/cmdTrgt/eduAplctDetail.do'/>";
viewForm.submit();
}
@ -187,6 +188,7 @@
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
<input type="hidden" name="eduAplctOrd">
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
@ -234,7 +236,7 @@
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<!-- <td> -->
<c:choose>
@ -252,7 +254,12 @@
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<c:choose>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq '60' and not empty list.aplctStateCd}">
- <kc:code codeId="VEA003" code="${list.aplctStateCd}"/>
</c:if>
<%-- <c:choose>
<c:when test="${not empty list.aplctStateCd }">
<kc:code codeId="VEA003" code="${list.aplctStateCd}"/>
</c:when>
@ -265,8 +272,8 @@
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
</c:if>
<c:if test="${list.aprvlCd eq '60' and list.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button> --%>
</c:if>
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
</c:if> --%>
</td>
<td>
@ -355,7 +362,7 @@
<ul onclick="">
<li>
<span>교육과정</span>
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" >
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" >
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -383,7 +390,8 @@
</c:choose>
<c:if test="${(list.aprvlCd eq '10' or list.aprvlCd eq '20') and list.ddlnCd ne '20'}">
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">취소</button>
</c:if>
<c:if test="${list.aprvlCd eq '60' and list.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button> --%>

View File

@ -57,11 +57,18 @@
<div class="cont_wrap">
<div class="cont_tit">
<h2>교육신청</h2>
<div class="path">
<ul>
<li class="home"><a href="#" title="메인으로 가기"><i></i></a></li>
<li><a href="#">기소유예교육</a></li>
<li>교육신청</li>
</ul>
</div>
</div>
<ul class="tab line tab_02">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list" title="선택됨">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
<ul class="tab tab_02">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list" title="선택됨">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
<div class="tab_content on">
<div class="list_top right">
@ -156,7 +163,7 @@
<div class="pagination page">
<div class="pagination">
<button type="button" class="btn_page_first" title="첫 페이지 이동"><i></i></button>
<button type="button" class="btn_page_prev" title="이전 페이지 이동"><i></i></button>
<button type="button" class="page_num on" title="1 페이지 이동">1</button>