Compare commits

...

115 Commits

Author SHA1 Message Date
fd6e048d03 Merge branch 'master' into master_tolag3 2025-12-05 16:30:49 +09:00
myname
08d7e27a67 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-12-05 16:30:10 +09:00
myname
7edbc40222 2025-12-05 16:30 인증 오류 수정 2025-12-05 16:29:56 +09:00
1aac9cde48 인증관련 수정 2025-12-05 15:23:51 +09:00
6bee6c93b8 인증관련 수정 2025-12-05 12:29:05 +09:00
myname
84c6fccf16 2025-12-05 11:32 2factor 인증 처리 2025-12-05 11:33:05 +09:00
myname
c99d9068d2 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-12-05 11:31:34 +09:00
myname
987ca4eec5 2025-12-05 11:31 2factor 인증 완료 2025-12-05 11:31:14 +09:00
24f0fb14e9 Merge branch 'master_tolag3' 2025-12-05 11:29:55 +09:00
09f90f8504 개발서버 본인인증 로그인 적용 2025-12-05 11:29:23 +09:00
myname
19cfebd258 2025-12-02 17:21 관할청 선택 추가 2025-12-02 17:21:25 +09:00
myname
a0e1207b21 2025-12-02 14:45 대상자 목록 정렬가능하도록 수정 2025-12-02 14:45:57 +09:00
myname
c33247459a Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-12-02 11:30:20 +09:00
myname
6286362798 2025 12-02 11:29 의뢰번호 고정 2025-12-02 11:29:55 +09:00
598d6767e2 Merge branch 'master_tolag3' 2025-12-01 10:38:17 +09:00
d3b4910d39 개발서버 본인인증 로그인 적용 2025-12-01 10:37:57 +09:00
myname
ef697f2070 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-28 17:36:50 +09:00
myname
700e4c02ac 2025-11-28 17:35 설문 및 이수증 쿼리 수정 2025-11-28 17:36:34 +09:00
d3c1a663b1 Merge branch 'master_tolag3'
# Conflicts:
#	src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngReg.jsp
#	src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngReg.jsp
#	src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduPrcsAplctPrdMngReg.jsp
2025-11-28 17:09:12 +09:00
81f88f270a 글로벌프로퍼티스 정리 및 추가
코어 세팅 변경
알림톡 발송 개발
2025-11-28 17:08:02 +09:00
myname
b77138dc92 2025-11-28 12:13 버튼 수정 및 문구 모듈화 2025-11-28 12:13:43 +09:00
myname
f486cbdd26 2025-11-27 17:18 과정 신청기간 등록시 오류 수정 2025-11-27 17:18:22 +09:00
subsub
a1ae5d5592 메뉴별 교육소개 페이지 추가 2025-11-26 14:30:18 +09:00
fba9f82725 글로벌프로퍼티스 정리 및 추가
코어 세팅 변경
알림톡 발송 개발
2025-11-25 14:24:59 +09:00
9932a1eb0e Merge branch 'master_tolag3' 2025-11-20 14:36:19 +09:00
c449055c7d 글로벌프로퍼티스 정리 및 추가
코어 세팅 변경
2025-11-20 14:35:18 +09:00
myname
5d148c9acb 2025-11-20 10:16 게시판관리 홈페이지링크 수정 2025-11-20 10:16:53 +09:00
1aa40a5074 Merge branch 'master_tolag3' 2025-11-19 12:13:02 +09:00
4f0daf71ad 사용자 메뉴 정리 2025-11-19 12:12:17 +09:00
myname
9ac11235a6 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-19 12:11:46 +09:00
myname
0bcc804ddd 2025-11-19 12:11 본인인증 적용 중 2025-11-19 12:11:25 +09:00
subsub
dada5725ff 로그인 수정 2025-11-19 09:49:06 +09:00
845611ee30 Merge branch 'master_tolag3'
# Conflicts:
#	src/main/webapp/WEB-INF/jsp/web/kccadr/login/SsoLoginUsr.jsp
2025-11-18 18:21:35 +09:00
6fec0efb19 본인인증 개발 2025-11-18 18:16:25 +09:00
myname
e3ffab2c85 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-18 16:30:14 +09:00
myname
50f9f950eb 2025-11-18 16:30 로그 관리 수정 2025-11-18 16:29:53 +09:00
subsub
cbf0c9f95f 본인인증페이지 추가 2025-11-18 15:39:42 +09:00
myname
6965042708 2025-11-14 09:44 로그 관리 수정, excel 문구 수정 2025-11-14 09:45:08 +09:00
myname
f9932ed489 2025-11-13 14:21 종료된 강의 목록 2025-11-13 14:21:20 +09:00
myname
bb393667c0 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-12 12:08:28 +09:00
myname
1e36a5619f 2025-11-12 12:07 만족도 평가 주관식 추가 2025-11-12 12:08:05 +09:00
b1b012a44e Merge branch 'master_tolag3' 2025-11-11 16:18:22 +09:00
a823092947 예방교육 게시판 생성 2025-11-11 16:17:37 +09:00
myname
b3a3337147 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-11 12:30:21 +09:00
myname
9407d70f19 2025-11-11 12:29 마이페이지 설문 노출 수정 2025-11-11 12:30:07 +09:00
41608ea647 Merge branch 'master_tolag3' 2025-11-11 11:16:25 +09:00
e1258edbab 이수증 수정 완료 2025-11-11 11:15:27 +09:00
myname
c83956611d 2025-11-10 18:12 대상자 excel 목록 데이터 수정 2025-11-10 18:13:01 +09:00
myname
d6fb0c2c0f Merge branch 'master' of
http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1

Conflicts:
	src/main/webapp/WEB-INF/jsp/oprtn/prevent/cndtnEduPrcsAplctCfnMngDetail.jsp
2025-11-10 16:22:09 +09:00
myname
ac7be2aeaa 2025-11-10 16:16 설문내용 수정 2025-11-10 16:17:04 +09:00
2d7e80b59e Merge branch 'master_tolag3' 2025-11-10 14:29:28 +09:00
3826e5af93 이수증 수정 중 2025-11-10 14:28:52 +09:00
myname
986b400838 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-07 11:25:30 +09:00
myname
55c7a09bd9 2025-11-07 11:25 예전 링크를 수정 2025-11-07 11:25:16 +09:00
601ae4397c Merge branch 'master_tolag3'
# Conflicts:
#	src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduPrcsAplctCfnMngDetail.jsp
2025-11-07 11:19:22 +09:00
a000478d0f 이수증 수정 중 2025-11-07 11:14:58 +09:00
myname
910ec55e95 2025-11-07 11:00 에방교육 상세 화면 수정 2025-11-07 10:59:12 +09:00
myname
4d91a41a9c 2025-11-07 10:57 시정명령 수동 신청자 처리 수정 2025-11-07 10:57:44 +09:00
myname
6995de24d6 2025-11-07 10:48 수동 신청자 정보 노출 수정 2025-11-07 10:49:15 +09:00
myname
ecba06bcd4 2025-11-06 17:11 시정명령 설문 오류 수정 2025-11-06 17:11:41 +09:00
myname
3975b6df2e Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-06 12:10:42 +09:00
myname
5e89e3c7a0 2025-11-06 12:10 통계 정보 수정 2025-11-06 12:10:23 +09:00
subsub
627dbdfce7 Merge branch 'sub' 2025-11-06 11:05:28 +09:00
subsub
dd31e8a976 (사용자) 메인 교육일정 타이틀 수정 / (관리자) 달력 디자인 수정 2025-11-06 10:36:37 +09:00
myname
53bc290264 2025-11-06 09:57 강사관리 기소유예로 모두 변경 2025-11-06 09:57:46 +09:00
myname
da77ab8943 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-05 18:21:42 +09:00
myname
6db8042ba3 2025-11-05 118:21 강사 관리 정보 수정 2025-11-05 18:21:27 +09:00
81a18bd8b9 메인화면 작업 중 2025-11-05 18:19:40 +09:00
ab1d18db08 메인화면 작업 중 2025-11-05 18:18:04 +09:00
0eb02134f3 Merge branch 'master_tolag3' 2025-11-05 16:24:52 +09:00
2e3692f3ec 메인화면 작업 중 2025-11-05 16:24:23 +09:00
subsub
25a6d46071 Merge branch 'sub' 2025-11-05 15:55:31 +09:00
subsub
91fcb6edcf 메인 교육일정 색상 추가 2025-11-05 15:54:49 +09:00
myname
9a917564a0 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-05 15:54:41 +09:00
myname
10230c90a1 2025-11-05 강사 관리 작업 2025-11-05 15:54:19 +09:00
068e39122b 메인페이지 작업 중 2025-11-04 16:51:12 +09:00
subsub
a118951837 (사용자) 메인 날짜 레이아웃 수정, 버튼 틀어지는 거 수정 2025-11-03 16:13:28 +09:00
42bb8d2482 Merge branch 'master_tolag3'
아이피 체크임시 해제
2025-11-03 14:57:25 +09:00
6fc463c5dc Merge branch 'master_tolag3' 2025-11-03 14:09:15 +09:00
5bca6f3752 이수증,메인화면 작업중 2025-11-03 14:08:51 +09:00
myname
2d425a0cfe Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-11-03 10:20:24 +09:00
myname
e6404b8f4f 2025-11-03 10:19 설문조사 및 이수증 노출 조건 수정 2025-11-03 10:19:16 +09:00
JIWOO
d96b4ad57d 이지우 - 사용자 마이페이지 > 설문 여부 조회 조건 수정 2025-10-31 17:39:59 +09:00
JIWOO
fabda3522e 이지우 - 시정명령 대상자 테이블 변경 2025-10-31 16:51:14 +09:00
JIWOO
490c34cff3 이지우 - 사용자 교육 신청화면 > 교육장소 or 관련 URL을 관련 URL로 고정 2025-10-31 14:56:35 +09:00
JIWOO
d9165cfe54 Merge branch 'jiwoo' 2025-10-30 18:32:15 +09:00
JIWOO
db04ecd1b0 이지우 - 기소유예, 시정명령 의뢰취소 관련 작업 2025-10-30 18:31:41 +09:00
19763eb412 Merge branch 'master_tolag3'
칸 맞추기
2025-10-30 17:05:27 +09:00
69d43c2daf Merge branch 'master_tolag3' 2025-10-30 17:03:50 +09:00
43db418a24 Merge branch 'master_tolag3'
사용자 문의 완료
2025-10-30 17:03:17 +09:00
myname
46d67b3fc2 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-10-30 16:53:51 +09:00
myname
e7e45af734 2025-10-30 16:53 설문 등록시 오류 2025-10-30 16:53:35 +09:00
JIWOO
01060da67e Merge branch 'jiwoo' 2025-10-30 16:46:02 +09:00
JIWOO
9192c55bfd 이지우 - 관리자 > 강사 관련 첨부파일(강의계획서, 결과보고서) 숨김 처리 2025-10-30 16:45:37 +09:00
myname
41d99290d0 Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-10-30 16:22:22 +09:00
myname
4a2615df54 2025-10-30 16:21 시정명령 설문 수정 2025-10-30 16:22:06 +09:00
subsub
3ddd385a55 메인 css 수정, 팝업 폰트 크기 수정 2025-10-30 16:03:22 +09:00
subsub
baafaaecc1 Merge branch 'sub' 2025-10-30 15:03:23 +09:00
subsub
dd5e1a1b5a (사용자) 신청인 정보 팝업 개인정보동의 영역 수정, 교육대상자확인 팝업 닫는 기능 수정, 교육신청 리스트 신청 버튼 팝업 기능
삭제, 푸터 새창열림 추가.
2025-10-30 15:02:36 +09:00
subsub
7acd46a14d test 2025-10-30 15:01:44 +09:00
subsub
c33b6281ee 2025-10-30 15:01:26 +09:00
subsub
8a51555c1d (사용자) 신청인 정보 팝업 개인정보동의 영역 수정, 교육대상자확인 팝업 닫는 기능 수정, 교육신청 리스트 신청 버튼 팝업 기능
삭제, 푸터 새창열림 추가
2025-10-30 14:59:54 +09:00
JIWOO
b4a20fcf77 Merge branch 'jiwoo' 2025-10-30 12:34:31 +09:00
JIWOO
3b4fde1ffb 이지우 - 기소,시정,예방 교육 처리 작업 중 2025-10-30 12:34:00 +09:00
f37666b311 Merge branch 'master_tolag3' 2025-10-30 12:20:38 +09:00
2df0492298 Merge branch 'fix/restore-20251029-143323' into master_tolag3
신청 수정 중
2025-10-30 12:20:14 +09:00
JIWOO
35c3637aa4 Merge branch 'jiwoo' 2025-10-29 18:31:52 +09:00
JIWOO
32063540ab 이지우 - 사용자 교육 현황 수정, 교육 신청 페이지에서 신청마감,교육확정 상태 체크 2025-10-29 18:31:09 +09:00
JIWOO
6ff5abf561 이지우 - 사용자 > 예방교육 신청 > 대상자 목록 체크 제거 2025-10-29 16:54:10 +09:00
myname
b280be2efa Merge branch 'master' of http://yongjoon.cho@vcs.iten.co.kr:9999/itnAdmin/koipa_edu_2025-1 2025-10-29 16:16:50 +09:00
myname
11b846e583 2025-10-29 16:15 대상자 등록 위치 수정 2025-10-29 16:16:26 +09:00
subsub
684c837e34 Merge branch 'sub' 2025-10-29 15:57:29 +09:00
subsub
9674f43c6c (사용자)이수증 도장 추가, 교육문의 추가, 모바일화면 인증해제 추가, 기소유예>교육신청>신청팝업 생년월일 수정 및 성별 삭제 /
(관리자) 메인대시보드 타이틀 추가
2025-10-29 15:56:43 +09:00
JIWOO
cc25bd8e57 이지우 - 관리자 과정/과정기간 조회 시 과정 조회 조건 use_yn 조건 수정 2025-10-29 15:36:24 +09:00
cace638003 헤더에 아이디 말고 이름으로 표시 2025-10-29 15:05:02 +09:00
247 changed files with 16297 additions and 6878 deletions

11
.gitignore vendored
View File

@ -201,3 +201,14 @@ rebel.xml
#Mac OS
.DS_Store
/src/main/java/kcc/web/.editorconfig
/.smarttomcat/ipedu/conf/catalina.policy
/.smarttomcat/ipedu/conf/catalina.properties
/.smarttomcat/ipedu/conf/context.xml
/.smarttomcat/ipedu/conf/jaspic-providers.xml
/.smarttomcat/ipedu/conf/jaspic-providers.xsd
/.smarttomcat/ipedu/conf/logging.properties
/.smarttomcat/ipedu/conf/server.xml
/.smarttomcat/ipedu/conf/tomcat-users.xml
/.smarttomcat/ipedu/conf/tomcat-users.xsd
/.smarttomcat/ipedu/conf/web.xml

47
pom.xml
View File

@ -339,24 +339,6 @@
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/simplecaptcha-1.2.1_exp.jar</systemPath>
</dependency>
<!-- sci 평가 siren24. 본인인증 -->
<dependency>
<groupId>sciSecuPCC</groupId>
<artifactId>sciSecuPCC</artifactId>
<version>2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/sciSecuPCC.jar</systemPath>
</dependency>
<dependency>
<groupId>sciSecuPIN_v3</groupId>
<artifactId>sciSecuPIN_v3</artifactId>
<version>2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/sciSecuIPIN_v3.jar</systemPath>
</dependency>
<!-- magicline 공동인증서 시작 -->
<dependency>
<groupId>jcaos</groupId>
@ -560,8 +542,21 @@
<artifactId>spring-security-crypto</artifactId>
<version>4.2.13.RELEASE</version> <!-- 프로젝트와 호환되는 4.x 라인 -->
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- sci본인인증 v3 -->
<dependency>
<groupId>com.sci.v3</groupId>
<artifactId>sciSecuPCC_v3</artifactId>
<version>v3</version>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
@ -659,6 +654,20 @@
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
<plugin>
<groupId>org.zeroturnaround</groupId>
<artifactId>jrebel-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>generate-rebel-xml</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>

View File

@ -60,7 +60,7 @@ public class LoginVO implements Serializable{
private String siteNm;
private String authority;
/** 로그인 후 리턴 url */
private String beforeUrl;
/** 회원탈퇴 사유 */

View File

@ -56,9 +56,6 @@ public class EgovFileDownloadController {
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
@Value("#{globalSettings['Globals.pdf.makepath.out']}")
private String pdfMakepathOut; //c:/usr/local/tomcat/file/sht/out
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class);
/**
@ -231,7 +228,7 @@ public class EgovFileDownloadController {
String s_path = (String) commandMap.get("path");
String s_file = (String) commandMap.get("file");
File uFile = new File(pdfMakepathOut + "/" + s_path, s_file);
File uFile = new File("/usr/local/tomcat/file/sht/out/" + s_path, s_file);
String mimetype = "application/x-msdownload";

View File

@ -111,6 +111,8 @@ public class QustnrCommonUtil {
, String p_eduChasiOrd
, VEALettnQestnrMIXService p_vEALettnQestnrMIXService
)throws Exception{
//답변결과 정보
System.out.println("===========!답변결과정보!===========");
VEAQestnrVO vEAQestnrVO = new VEAQestnrVO();
vEAQestnrVO.setSiteId(p_siteId); //청소년
vEAQestnrVO.setSiteIdCd(p_siteIdCd); //10-기본설문, 20-신청자설문, 30-강사설문
@ -125,9 +127,41 @@ public class QustnrCommonUtil {
p_model.addAttribute("chasiSrvyList",chasiSrvyList);
}
List<VEAQestnrVO> chasiSrvyAllList = p_vEALettnQestnrMIXService.selectDetail_MIX_LQI_03_ALL(vEAQestnrVO);
if(chasiSrvyAllList.size() > 0) {
p_model.addAttribute("chasiSrvyAllList",chasiSrvyAllList);
}
return p_model;
}
public ModelMap _chasiSrvyItemList(
ModelMap p_model
, String p_siteId
, String p_siteIdCd
, String p_eduAplctOrd
, String p_eduChasiOrd
, VEALettnQestnrMIXService p_vEALettnQestnrMIXService
)throws Exception{
//항목 정보
VEAQestnrVO vEAQestnrVO = new VEAQestnrVO();
vEAQestnrVO.setSiteId(p_siteId); //청소년
vEAQestnrVO.setSiteIdCd(p_siteIdCd); //10-기본설문, 20-신청자설문, 30-강사설문
vEAQestnrVO.setEduAplctOrd(p_eduAplctOrd);
vEAQestnrVO.setEduChasiOrd(p_eduChasiOrd);
vEAQestnrVO = p_vEALettnQestnrMIXService.selectDetail_MIX_LQI_02(vEAQestnrVO);
System.out.println("===========!항목별 문항 정보!===========");
List<VEAQestnrVO> chasiSrvyList = p_vEALettnQestnrMIXService.selectDetail_MIX_LQI_05(vEAQestnrVO);
if(chasiSrvyList.size() > 0) {
p_model.addAttribute("chasiSrvyItemList",chasiSrvyList);
}
return p_model;
}
public ModelMap _chasiSrvyList_TA(
ModelMap p_model
, String p_siteId
@ -163,6 +197,7 @@ public class QustnrCommonUtil {
)throws Exception{
//설문지 정보
System.out.println("===========!개별만족도정보!===========");
System.out.println("===========!설문지정보!===========");
VEAQestnrVO vEAQestnrVO = new VEAQestnrVO();
vEAQestnrVO.setSiteId(p_siteId); //청소년

View File

@ -1,26 +1,6 @@
package kcc.kccadr.xxx.web;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.CmmUtil;
@ -30,18 +10,43 @@ import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.kccadr.xxx.service.XxxService;
import kcc.kccadr.xxx.service.XxxVO;
import kcc.ve.cmm.VeConstants;
import kcc.ve.cmm.crt.CertPhoneRequestUtill;
import kcc.ve.cmm.sendAt.SendAtUtill;
import kcc.ve.cmm.sendAt.SendService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.*;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
/**
* 대국민(사용자)
* XXX에 관한 controller 클래스를 정의한다.
* @author 이준호
* @since 2021.08.09
* @version 1.0
* @see
*
* <pre>
* @author 이준호
* @version 1.0
* @see <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
@ -49,6 +54,7 @@ import kcc.kccadr.xxx.service.XxxVO;
* 2021.08.09 이준호 최초 생성
*
* </pre>
* @since 2021.08.09
*/
@Controller
public class XxxWebController {
@ -66,36 +72,57 @@ public class XxxWebController {
// eGov 공통코드
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
// global 프로퍼티
@Resource(name="globalSettings")
@Resource(name = "globalSettings")
protected Properties propertiesService;
//첨부파일 경로, realPath 설정
@Resource(name="EgovFileMngUtil")
@Resource(name = "EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
// 첨부파일 정보
@Resource(name="EgovFileMngService")
private EgovFileMngService fileMngService;
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileMngService;
// 첨부파일 정보
@Resource(name = "certPhoneRequestUtill")
private CertPhoneRequestUtill certPhoneRequestUtill;
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
@Resource(name = "SendService")
private SendService sendService;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//과정차시 관리
@Resource(name = "sendAtUtill")
private SendAtUtill sendAtUtill;
/**
* XXX 목록 화면
*/
@RequestMapping("/web/kccadr/xxx/xxxList.do")
public String xxxList(@ModelAttribute("searchVO") XxxVO xxxVO, ModelMap model) throws Exception {
public String xxxList( @ModelAttribute("searchVO") XxxVO xxxVO, ModelMap model ) throws Exception {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); //로그인 정보
model.addAttribute("user", user);
List<XxxVO> xxxList = xxxService.selectXxxList(xxxVO); // 목록 조회
// 페이징 처리 객체
PaginationInfo paginationInfo = CmmUtil.getPageing(xxxVO, xxxVO.getPageUnit());
paginationInfo.setTotalRecordCount(xxxList.size() > 0 ? xxxList.get(0).getTotCnt() : 0);
//최초조회시 최신것 조회List
if("".equals(xxxVO.getSearchSortCnd())){
if("".equals(xxxVO.getSearchSortCnd())) {
xxxVO.setSearchSortCnd("xxxId");
xxxVO.setSearchSortOrd("desc");
}
@ -113,7 +140,7 @@ public class XxxWebController {
* XXX 등록화면
*/
@RequestMapping("/web/kccadr/xxx/xxxRegist.do")
public String xxxRegist(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model) throws Exception {
public String xxxRegist( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model ) throws Exception {
return "/web/kccadr/xxx/xxxRegist";
}
@ -122,42 +149,42 @@ public class XxxWebController {
* XXX 등록 처리
*/
@RequestMapping("/web/kccadr/xxx/insertXxx.do")
public String insertXxx(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap mode, RedirectAttributes redirectAttributes) throws Exception {
public String insertXxx( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap mode, RedirectAttributes redirectAttributes ) throws Exception {
xxxService.insertXxx(xxxVO); // 등록
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); // 공통메세지
return "redirect:/web/kccadr/xxx/xxxList.do";
}
/**
* XXX 등록 Ajax
*/
@RequestMapping(value = {"/web/kccadr/xxx/insertXxxAjax.do"})
public ModelAndView insertXxxAjax(final MultipartHttpServletRequest multiRequest
* XXX 등록 Ajax
*/
@RequestMapping(value = { "/web/kccadr/xxx/insertXxxAjax.do" })
public ModelAndView insertXxxAjax( final MultipartHttpServletRequest multiRequest
, XxxVO xxxVO
, RedirectAttributes redirectAttributes
, HttpServletRequest request) throws Exception {
, HttpServletRequest request ) throws Exception {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String atchFileId = "";
final Map<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
if(!files.isEmpty()) {
//XXX_로 첨부파일 네이밍
List<FileVO> result = fileUtil.parseFileInf(files, "XXX_", 0, "", "", "");
atchFileId = fileMngService.insertFileInfs(result);
//첨부파일Id(atchFileId) 해당 VO atchFileId변수에 저장
xxxVO.setAtchFileId(atchFileId);
}
xxxVO.setFrstRegisterId(user.getId());
//게시글 등록 서비스
xxxService.insertXxx(xxxVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@ -166,7 +193,7 @@ public class XxxWebController {
* XXX 상세화면
*/
@RequestMapping("/web/kccadr/xxx/xxxDetail.do")
public String xxxDetail(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model) throws Exception {
public String xxxDetail( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model ) throws Exception {
XxxVO result = xxxService.selectXxxDetail(xxxVO); // 상세 조회
model.addAttribute("result", result);
@ -178,7 +205,7 @@ public class XxxWebController {
* XXX 수정화면
*/
@RequestMapping("/web/kccadr/xxx/xxxModify.do")
public String xxxModify(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model) throws Exception {
public String xxxModify( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model ) throws Exception {
XxxVO result = xxxService.selectXxxDetail(xxxVO); // 상세 조회
model.addAttribute("result", result);
@ -190,34 +217,34 @@ public class XxxWebController {
* XXX 수정 처리
*/
@RequestMapping("/web/kccadr/xxx/updateXxx.do")
public String updateXxx(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap mode, RedirectAttributes redirectAttributes) throws Exception {
public String updateXxx( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap mode, RedirectAttributes redirectAttributes ) throws Exception {
xxxService.updateXxx(xxxVO); // 수정
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); // 공통메세지
return "redirect:/web/kccadr/xxx/xxxDetail.do";
}
/**
* xxx 수정 Ajax
*/
@RequestMapping(value = {"/web/kccadr/xxx/updateXxxAjax.do"})
public ModelAndView updateXxxAjax(final MultipartHttpServletRequest multiRequest
* xxx 수정 Ajax
*/
@RequestMapping(value = { "/web/kccadr/xxx/updateXxxAjax.do" })
public ModelAndView updateXxxAjax( final MultipartHttpServletRequest multiRequest
, XxxVO xxxVO
, RedirectAttributes redirectAttributes
, HttpServletRequest request) throws Exception {
, HttpServletRequest request ) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String atchFileId = "";
final Map<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
if ("".equals(atchFileId)) {
if(!files.isEmpty()) {
if("".equals(atchFileId)) {
//XXX_로 첨부파일 네이밍
List<FileVO> result = fileUtil.parseFileInf(files, "XXX_", 0, atchFileId, "", "");
atchFileId = fileMngService.insertFileInfs(result);
//첨부파일Id(atchFileId) 해당 VO atchFileId변수에 저장
xxxVO.setAtchFileId(atchFileId);
@ -226,13 +253,13 @@ public class XxxWebController {
fvo.setAtchFileId(atchFileId);
int cnt = fileMngService.getMaxFileSN(fvo);
List<FileVO> result = fileUtil.parseFileInf(files, "XXX_", cnt, atchFileId, "", "");
fileMngService.updateFileInfs(result);
}
}
//게시글 수정 서비스
xxxService.updateXxx(xxxVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@ -241,29 +268,29 @@ public class XxxWebController {
* XXX 삭제 처리
*/
@RequestMapping("/web/kccadr/xxx/deleteXxx.do")
public String deleteXxx(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap mode, RedirectAttributes redirectAttributes) throws Exception {
public String deleteXxx( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap mode, RedirectAttributes redirectAttributes ) throws Exception {
xxxService.deleteXxx(xxxVO); // 삭제
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); // 공통메세지
return "redirect:/web/kccadr/xxx/xxxList.do";
}
/**
* XXX 삭제 처리(delete가 아닌 useYn컬럼을 상태값으로 'N'처리할때)
* XXX 삭제 처리(delete가 아닌 useYn컬럼을 상태값으로 'N'처리할때)
*/
@RequestMapping("/web/kccadr/xxx/deleteXxx2.do")
public String deleteXxx2(HttpServletRequest request, @ModelAttribute("searchVO") XxxVO xxxVO,
ModelMap model, RedirectAttributes redirectAttributes)throws Exception {
public String deleteXxx2( HttpServletRequest request, @ModelAttribute("searchVO") XxxVO xxxVO,
ModelMap model, RedirectAttributes redirectAttributes ) throws Exception {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
xxxVO.setLastUpdusrId(user.getUniqId());
xxxVO.setLastUpdusrNm(user.getName()); // 변경이력에 사용
xxxVO.setLastUpdusrNm(user.getName()); // 변경이력에 사용
xxxService.deleteXxx2(xxxVO);
xxxVO.setPageIndex(1); //삭제후 첫페이지로 로딩
redirectAttributes.addAttribute("pageIndex", xxxVO.getPageIndex());
redirectAttributes.addAttribute("searchCnd", xxxVO.getSearchCnd());
redirectAttributes.addAttribute("searchWrd", xxxVO.getSearchWrd());
@ -271,15 +298,13 @@ public class XxxWebController {
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.useN"));
return "redirect:/web/kccadr/xxx/xxxList.do";
}
/**
* XXX 팝업화면
*/
@RequestMapping("/web/kccadr/xxx/xxxDetailPop.do")
public String xxxDetailPop(@ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model) throws Exception {
public String xxxDetailPop( @ModelAttribute("xxxVO") XxxVO xxxVO, ModelMap model ) throws Exception {
XxxVO result = xxxService.selectXxxDetail(xxxVO); // 상세 조회
model.addAttribute("result", result);
@ -291,21 +316,44 @@ public class XxxWebController {
* XXX YYYY(처리) Ajax 처리
*/
@RequestMapping("/web/kccadr/xxx/xxxYyyyAjax.do")
public ModelAndView xxxYyyyAjax(@ModelAttribute("xxxVO") XxxVO xxxVO, BindingResult bindingResult) throws Exception {
public ModelAndView xxxYyyyAjax( @ModelAttribute("xxxVO") XxxVO xxxVO, BindingResult bindingResult ) throws Exception {
String result = "success";
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
// YYYY 처리 로직
// YYYY 처리 상태 체크
if (1 == 0) {
if(1 == 0) {
result = "fail";
}
modelAndView.addObject("result", result);
return modelAndView;
}
/**
* XXX YYYY(처리) Ajax 처리
*/
@RequestMapping("/web/kccadr/xxx/atTest.do")
public String atTest() throws Exception {
// Map<String, String> chihwan = new HashMap<>();
// chihwan.put("content", "귀하의 상표권 교육조건부 기소유예 교육 신청이 완료되었습니다.\n");
// chihwan.put("eduDay", "2025.11.28 (금) 9시~18시");
// chihwan.put("eduRegDay", "(교육등록:8:50~9시)");
// chihwan.put("eduPlace", "서울 강남구 테헤란로 131, 한국지식재산센터 지하 1층 훈민정음 홀 (역삼역 4번출구 인근)");
//
// sendService.sendAt("01030266269", "TEMPLATE_EDU_SUBMIT", chihwan);
// sendService.sendSms("01030266269", "테스트문자제목", "테스트 내용", "SMS");
Map<String, String> chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_70, "prcsAplctPrd_0000240");
return null;
}
}

View File

@ -39,9 +39,6 @@ public class pdfViewerSampleController {
/** 로그설정 */
private static final Logger LOGGER = LoggerFactory.getLogger(pdfViewerSampleController.class);
@Value("#{globalSettings['Globals.pdf.webpath']}")
private String pdfWebpath; // /pdf/out/
@Resource(name="adjstIncidentService")
private AdjstIncidentService adjstIncidentService;
@ -83,11 +80,11 @@ public class pdfViewerSampleController {
//compare session & register_userid
if (loginVO.getUniqId().equals(master.getFrstRegisterId())) {
model.addAttribute("file", pdfWebpath + s_webFile + "/pdf/"+s_time_dir+"/"+s_bookmark_name);
model.addAttribute("file", "/pdf/out/" + s_webFile + "/pdf/"+s_time_dir+"/"+s_bookmark_name);
}else {
//model.addAttribute("file", "");
model.addAttribute("file", pdfWebpath + s_webFile + "/pdf/"+s_time_dir+"/"+s_bookmark_name);
model.addAttribute("file", "/pdf/out/" + s_webFile + "/pdf/"+s_time_dir+"/"+s_bookmark_name);
}

View File

@ -1,29 +1,31 @@
package kcc.let.cop.bbs.web;
import java.io.OutputStream;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import NiceID.Check.CPClient;
import com.penta.scpdb.ScpDbAgent;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.*;
import kcc.com.cmm.service.*;
import kcc.com.cmm.util.StringUtil;
import kcc.com.cmm.util.WebUtil;
import kcc.com.uss.ion.cnf.service.ProhibitMngService;
import kcc.com.uss.ion.cnf.service.WordFilterService;
import kcc.com.uss.ion.cnf.service.WordFilterVO;
import kcc.com.utl.fcc.service.EgovStringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.cop.bbs.service.*;
import kcc.let.sym.mnu.mpm.service.EgovMenuManageService;
import kcc.let.sym.mnu.mpm.service.MenuManageVO;
import kcc.let.sym.site.service.EgovSiteManagerService;
import kcc.let.sym.site.service.SiteManagerVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.let.utl.sim.service.EgovClntInfo;
import kcc.ve.cmm.VeConstants;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@ -46,47 +48,15 @@ import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springmodules.validation.commons.DefaultBeanValidator;
import com.penta.scpdb.ScpDbAgent;
import com.sci.v2.pcc.secu.SciSecuManager;
import com.sci.v2.pcc.secu.hmac.SciHmac;
import NiceID.Check.CPClient;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.EgovMessageSource;
import kcc.com.cmm.EgovMultiPartEmail;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.ReadVO;
import kcc.com.cmm.UserVO;
import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.service.ReadService;
import kcc.com.cmm.util.StringUtil;
import kcc.com.cmm.util.WebUtil;
import kcc.com.uss.ion.cnf.service.ProhibitMngService;
import kcc.com.uss.ion.cnf.service.WordFilterService;
import kcc.com.uss.ion.cnf.service.WordFilterVO;
import kcc.com.utl.fcc.service.EgovStringUtil;
import kcc.let.cop.bbs.service.Board;
import kcc.let.cop.bbs.service.BoardChgHst;
import kcc.let.cop.bbs.service.BoardMaster;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.cop.bbs.service.EgovBBSAttributeManageService;
import kcc.let.cop.bbs.service.EgovBBSManageService;
import kcc.let.sym.mnu.mpm.service.EgovMenuManageService;
import kcc.let.sym.mnu.mpm.service.MenuManageVO;
import kcc.let.sym.site.service.EgovSiteManagerService;
import kcc.let.sym.site.service.SiteManagerVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.let.utl.sim.service.EgovClntInfo;
import kcc.ve.cmm.VeConstants;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.OutputStream;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Map.Entry;
/**
* 게시물 관리를 위한 컨트롤러 클래스
@ -163,6 +133,10 @@ public class EgovBBSManageController {
//알림
@Resource(name = "iTNotiUtil")
private ITNotiUtil iTNotiUtil;
// 로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
private static final Logger LOGGER = LoggerFactory.getLogger(EgovBBSManageController.class);
@ -1487,14 +1461,24 @@ public class EgovBBSManageController {
BoardMasterVO brdMstrVO ,
RedirectAttributes redirectAttributes ) throws Exception {
SsoLoginVO ssoLoginVO = new SsoLoginVO();
/*SsoLoginVO ssoLoginVO = new SsoLoginVO();
if(null != request.getSession().getAttribute("SSOLoginVO")) {
ssoLoginVO = (SsoLoginVO) request.getSession().getAttribute("SSOLoginVO");
boardVO.setNtcrId(ssoLoginVO.getMembId());
boardVO.setNtcrNm(ssoLoginVO.getMembName());
}else {
return "redirect:/";
}
}*/
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
boardVO.setNtcrId(loginVO.getUniqId());
boardVO.setNtcrNm(loginVO.getMembName());
/*UserVO userVO = new UserVO();
if(null != request.getSession().getAttribute("userVO")) { //세션체크
@ -2255,7 +2239,7 @@ public class EgovBBSManageController {
redirectAttributes.addAttribute("bbsId", boardVO.getBbsId());
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
/*return "redirect:/web/cop/bbsWeb/selectBoardList.do";*/
return "redirect:/web/cop/bbs/selectBoardList2024.do";
return "redirect:/web/cop/bbsWeb/selectBoardList.do";
}
/**
@ -2326,21 +2310,21 @@ public class EgovBBSManageController {
request.getSession().setAttribute("reqNum", reqNum); // 결과값 복호화시 필요
//01. 암호화 모듈 선언
SciSecuManager seed = new SciSecuManager();
//02. 1차 암호화
String encStr = "";
String reqInfo = SELFAUTH_SITE_ID+"^"+SELFAUTH_SRV_NO+"^"+reqNum+"^"+certDate+"^"+certGb+"^"+addVar+"^"+exVar; // 데이터 암호화
encStr = seed.getEncPublic(reqInfo);
//03. 위변조 검증 생성
String hmacMsg = SciHmac.HMacEncriptPublic(encStr);
//03. 2차 암호화
reqInfo = seed.getEncPublic(encStr + "^" + hmacMsg + "^" + "0000000000000000"); //2차암호화
request.getSession().setAttribute("reqInfo", reqInfo); // 본인확인 요청 정보
// //01. 암호화 모듈 선언
// SciSecuManager seed = new SciSecuManager();
//
// //02. 1차 암호화
// String encStr = "";
// String reqInfo = SELFAUTH_SITE_ID+"^"+SELFAUTH_SRV_NO+"^"+reqNum+"^"+certDate+"^"+certGb+"^"+addVar+"^"+exVar; // 데이터 암호화
// encStr = seed.getEncPublic(reqInfo);
//
// //03. 위변조 검증 생성
// String hmacMsg = SciHmac.HMacEncriptPublic(encStr);
//
// //03. 2차 암호화
// reqInfo = seed.getEncPublic(encStr + "^" + hmacMsg + "^" + "0000000000000000"); //2차암호화
//
// request.getSession().setAttribute("reqInfo", reqInfo); // 본인확인 요청 정보
request.getSession().setAttribute("SITE_URL", SITE_URL); // 사이트 URL
return "web/cop/selfauth/selfauth";
@ -2356,41 +2340,41 @@ public class EgovBBSManageController {
@RequestMapping("/web/cop/selfauth/resultSeed.do")
public String resultSeed(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception {
String retInfo = request.getParameter("retInfo").trim();
String cookiereqNum = (String)request.getSession().getAttribute("reqNum");
//복화화용 변수
String encPara = "";
String encMsg = "";
String msgChk = "N";
// 1. 암호화 모듈 (jar) Loading
SciSecuManager sciSecuMg = new SciSecuManager();
//쿠키에서 생성한 값을 Key로 생성 한다.
retInfo = sciSecuMg.getDec(retInfo, cookiereqNum);
// 2.1차 파싱---------------------------------------------------------------
String[] aRetInfo1 = retInfo.split("\\^");
encPara = aRetInfo1[0]; //암호화된 통합 파라미터
encMsg = aRetInfo1[1]; //암호화된 통합 파라미터의 Hash값
String encMsg2 = sciSecuMg.getMsg(encPara);
// 3./변조 검증 ---------------------------------------------------------------
if(encMsg2.equals(encMsg)) msgChk="Y";
if(msgChk.equals("N")) {
// 비정상 접근 처리
}
retInfo = sciSecuMg.getDec(encPara, cookiereqNum);
String[] aRetInfo = retInfo.split("\\^");
String name = aRetInfo[0]; //성명
// String retInfo = request.getParameter("retInfo").trim();
// String cookiereqNum = (String)request.getSession().getAttribute("reqNum");
//
// //복화화용 변수
// String encPara = "";
// String encMsg = "";
// String msgChk = "N";
//
// // 1. 암호화 모듈 (jar) Loading
// SciSecuManager sciSecuMg = new SciSecuManager();
// //쿠키에서 생성한 값을 Key로 생성 한다.
// retInfo = sciSecuMg.getDec(retInfo, cookiereqNum);
//
// // 2.1차 파싱---------------------------------------------------------------
// String[] aRetInfo1 = retInfo.split("\\^");
//
// encPara = aRetInfo1[0]; //암호화된 통합 파라미터
// encMsg = aRetInfo1[1]; //암호화된 통합 파라미터의 Hash값
//
// String encMsg2 = sciSecuMg.getMsg(encPara);
// // 3./변조 검증 ---------------------------------------------------------------
// if(encMsg2.equals(encMsg)) msgChk="Y";
//
// if(msgChk.equals("N")) {
// // 비정상 접근 처리
// }
//
// retInfo = sciSecuMg.getDec(encPara, cookiereqNum);
//
// String[] aRetInfo = retInfo.split("\\^");
// String name = aRetInfo[0]; //성명
// String birYMD = aRetInfo[1]; //생년월일
// String sex = aRetInfo[2]; //성별
// String fgnGbn = aRetInfo[3]; //내외국인 구분값
String di = aRetInfo[4]; //DI
// String di = aRetInfo[4]; //DI
// String ci1 = aRetInfo[5]; //CI
// String ci2 = aRetInfo[6]; //CI
// String civersion = aRetInfo[7]; //CI Version
@ -2404,8 +2388,8 @@ public class EgovBBSManageController {
// 사용자 세션생성
UserVO userVO = new UserVO();
userVO.setName(name);
userVO.setMblDn(di);
// userVO.setName(name);
// userVO.setMblDn(di);
request.getSession().setAttribute("userVO", userVO);
String url = (String)request.getSession().getAttribute("url");

View File

@ -643,10 +643,11 @@ public class EgovMainController {
SiteManagerVO siteManagerVO = new SiteManagerVO();
siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO);
int i_session_time = 60;//기본 시간 60분
int i_session_time = 10;//기본 시간 60분
//운영관리-코드관리-ITN014- 코드6의 코드설명 값을 기본 시간의 분으로 가져온다.
try{
// i_session_time = Integer.parseInt(siteManagerVO.getSessionTimeCdText());
i_session_time = Integer.parseInt(siteManagerVO.getSessionTimeCdText());
}catch(Exception ex) {
ex.printStackTrace();
}

View File

@ -2,6 +2,7 @@ package kcc.let.my.web;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -16,15 +17,17 @@ 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.fdl.idgnr.EgovIdGnrService;
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.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@ -69,7 +72,13 @@ public class MyPageController {
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
private String p_lctr_div_cd = "60";
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
//온라인콘텐츠과정 관리
@Resource(name = "fndtnEnhanceTrnService")
private FndtnEnhanceTrnService fndtnEnhanceTrnService;
@RequestMapping(value = { "/web/my/myPageDashBoard.do" })
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("vEEduAplctVO") VEPrcsDetailVO vEPrcsDetailVO,
@ -85,35 +94,86 @@ public class MyPageController {
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
//5개만 select을 위한 설정
vEPrcsDetailVO.setPageUnit(5);
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrAllList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
Map<String, Object> countMap = new HashMap<>();
vEPrcsDetailVO.setSearchStatus("Completed");
List<VEPrcsDetailVO> vEPrcsDetailVOListCnt = vEPrcsAplctPrdService.findByAprvlQustnrAllList(vEPrcsDetailVO);
countMap.put("COUNT_END_CD", vEPrcsDetailVOListCnt.size());
vEPrcsDetailVO.setSearchStatus("InClass");
vEPrcsDetailVOListCnt = vEPrcsAplctPrdService.findByAprvlQustnrAllList(vEPrcsDetailVO);
countMap.put("COUNT_APRVL_CD_20", vEPrcsDetailVOListCnt.size());
vEPrcsDetailVO.setSearchStatus("Aplct");
vEPrcsDetailVOListCnt = vEPrcsAplctPrdService.findByAprvlQustnrAllList(vEPrcsDetailVO);
countMap.put("COUNT_APRVL_CD_10", vEPrcsDetailVOListCnt.size());
//vEPrcsAplctPrdService.findAllSspnldtmtDashboardCnt(vEPrcsDetailVO);
//Map<String,Object> countMap = vEPrcsAplctPrdService.findAllSspnldtmtDashboardCnt(vEPrcsDetailVO);
// 리스트 row마다 신청 확인하기
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap);
return "web/my/myPageDashBoard";
}
/**
* 신청중 강의 리스트
* @param request
* @param vEPrcsDetailVO
* @param model
* @param boardVO
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping(value = { "/web/my/myPageAplctDashBoard.do" })
public String myPageAplctDashBoard(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) {
//이전 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);
//로그인 처리====================================
//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();
@ -128,28 +188,129 @@ public class MyPageController {
//대상 리스트, 페이징 정보 전달
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";
return "web/my/myPageDashBoard";
return "web/my/myPageAplctDashBoard";
}
/**
* 수강중 강의 리스트
* @param request
* @param vEPrcsDetailVO
* @param model
* @param boardVO
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping(value = { "/web/my/myPageInClassDashBoard.do" })
public String myPageInClassDashBoard(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) {
//이전 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);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrAllList(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);
return "web/my/myPageInClassDashBoard";
}
/**
* 완료된 강의 리스트
* @param request
* @param vEPrcsDetailVO
* @param model
* @param boardVO
* @param redirectAttributes
* @return
* @throws Exception
*/
@RequestMapping(value = { "/web/my/myPageCompletedDashBoard.do" })
public String myPageCompletedDashBoard(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) {
//이전 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);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
vEPrcsDetailVO.setSearchStatus("Completed");
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrAllList(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);
return "web/my/myPageCompletedDashBoard";
}
@RequestMapping(value = { "/web/my/myQnaMngList.do" })
public String myQnaMngList(
HttpServletRequest request
, @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) 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); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//2. pageing step2
@ -210,6 +371,69 @@ public class MyPageController {
return "web/my/myQnaMngDetail";
}
@RequestMapping(value = { "/web/my/myQnaMngRegist.do" })
public String myQnaMngRegist(
HttpServletRequest request
, ModelMap model
) 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); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
return "web/my/myQnaMngRegist";
}
@RequestMapping("/web/my/myQnaMngRegistAjax.do")
public ModelAndView myQnaMngRegistAjax(
@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.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
String msg = "등록되었습니다";
try {
fndtnEnhanceTrnService.insertVeEduQna(vEPrcsDetailVO);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
msg = "등록에 실패하였습니다. 관리자에게 문의해주세요";
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", "success");
return modelAndView;
}

View File

@ -71,6 +71,8 @@ public interface EgovLoginLogService {
public EgovMap selectMethodEgov(LoginLog loginLog) throws Exception;
public void updateLogMethod(LoginLog tempLoginLog) throws Exception;
public void updateLogMethodAuto(LoginLog tempLoginLog) throws Exception;
public void insertLogMethod(LoginLog loginLog) throws Exception;

View File

@ -130,6 +130,8 @@ public class LoginLog extends ComDefaultVO implements Serializable {
/*관리자 메소드 부분 추가*/
private String methodNm; //메소드 이름
private String methodCd; //메소드 타입
private String param; //파라미터
private String admotId; //메소드 ID
@ -499,5 +501,13 @@ public class LoginLog extends ComDefaultVO implements Serializable {
public void setSortNum(String sortNum) {
this.sortNum = sortNum;
}
public String getMethodCd() {
return methodCd;
}
public void setMethodCd(String methodCd) {
this.methodCd = methodCd;
}
}

View File

@ -206,6 +206,11 @@ public class EgovLoginLogServiceImpl extends EgovAbstractServiceImpl implements
loginLogDAO.updateLogMethod(loginLog);
}
@Override
public void updateLogMethodAuto(LoginLog loginLog) throws Exception {
loginLogDAO.updateLogMethodAuto(loginLog);
}
@Override
public void insertLogMethod(LoginLog loginLog) throws Exception {
loginLogDAO.insertLogMethod(loginLog);

View File

@ -128,6 +128,11 @@ public class LoginLogDAO extends EgovAbstractDAO {
public void updateLogMethod(LoginLog loginLog) throws Exception{
update("LoginLogDAO.updateLogMethod", loginLog);
}
//위의 동일한 명칭을 한번에 수정하기 위해서 만듬
public void updateLogMethodAuto(LoginLog loginLog) throws Exception{
update("LoginLogDAO.updateLogMethodAuto", loginLog);
}
public void insertLogMethod(LoginLog loginLog) throws Exception{
insert("LoginLogDAO.insertLogMethod", loginLog);

View File

@ -107,7 +107,7 @@ public class EgovLoginLogController {
loginLog.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(loginLog.getSearchSortCnd())){ //최초조회시 최신것 조회List
loginLog.setSearchSortCnd("a.CREAT_DT");
loginLog.setSearchSortCnd("b.CREAT_DT");
loginLog.setSearchSortOrd("desc");
}
@ -462,7 +462,60 @@ public class EgovLoginLogController {
loginLog.setAdmotId(loginLog.getAdmotId().trim());
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginLogService.updateLogMethod(loginLog);
loginLogService.updateLogMethod(loginLog);
//사업 런칭 초기나 등등 같은 데이터를 한번에 수정하기 위해서 추가함...오류 발생시 주석처리 할것.
System.out.println(loginLog.getMethodNm());
System.out.println(loginLog.getMethodNm());
System.out.println(loginLog.getMethodNm());
String[] s_arr_1 = null;
try {
s_arr_1 = loginLog.getMethodNm().split("\\?");
System.out.println(s_arr_1.length);
System.out.println(s_arr_1.length);
System.out.println(loginLog.getMethodNm().split("\\?").length);
System.out.println(loginLog.getMethodNm().split("\\?")[0]);
}catch(Exception ex) {
ex.printStackTrace();
}
String[] s_arr_2 = null;
try {
s_arr_2 = loginLog.getMethodNm().split("\\;");
System.out.println(s_arr_2.length);
System.out.println(s_arr_2.length);
System.out.println(loginLog.getMethodNm().split("\\;").length);
System.out.println(loginLog.getMethodNm().split("\\;")[0]);
}catch(Exception ex) {
ex.printStackTrace();
}
//BBSMSTR_000000000010 - 공지사항
//BBSMSTR_000000000040 - 교육자료실
//BBSMSTR_000000000030 - FAQ
if (loginLog.getMethodNm().indexOf("BBSMSTR_000000000010")>-1
|| loginLog.getMethodNm().indexOf("BBSMSTR_000000000040")>-1
|| loginLog.getMethodNm().indexOf("BBSMSTR_000000000030")>-1
) {
//loginLog.setMethodNm(loginLog.getMethodNm().substring(0, loginLog.getMethodNm().split("\\?")[0].length()));
;
}else {
if (s_arr_2.length>1) {
loginLog.setMethodNm(loginLog.getMethodNm().substring(0, loginLog.getMethodNm().split("\\;")[0].length()));
}else if (s_arr_1.length>1) {
loginLog.setMethodNm(loginLog.getMethodNm().substring(0, loginLog.getMethodNm().split("\\?")[0].length()));
}
//loginLogService.updateLogMethodAuto(loginLog);
}
loginLogService.updateLogMethodAuto(loginLog);
model.addAttribute("message", egovMessageSource.getMessage("success.common.update"));
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/sym/log/clg/SelectLogMethodList.do");

View File

@ -66,9 +66,6 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
LoginVO loginVO = null;
String s_password = vo.getPassword();
String s_ci = vo.getMberCi();
System.out.println("======1========================"+s_password);
System.out.println("======1========================"+EgovNewPasswordUtil.hashPassword(s_password));
System.out.println("======1========================"+EgovFileScrty.encryptPassword(s_password, vo.getId()));
//step1.new 로그인인 경우 loginvo ret
//최고관리자를 제외한 사용자 sso 로그인으로 비밀번호 암호화 삭제(210818, 이준호)

File diff suppressed because it is too large Load Diff

View File

@ -1,48 +0,0 @@
package kcc.let.uat.uia.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class SsoAgentInfo {
//SSO agent 관련 설정
private static String ssoUri;
private static String clientId;
private static String clientSecret;
private static String scope;
@Value("#{globalSettings['Globals.sso.ssoUri']}")
public void setSsoUri(String ssoUri) {
SsoAgentInfo.ssoUri = ssoUri;
}
@Value("#{globalSettings['Globals.sso.clientId']}")
public void setClientId(String clientId) {
SsoAgentInfo.clientId = clientId;
}
@Value("#{globalSettings['Globals.sso.clientSecret']}")
public void setClientSecret(String clientSecret) {
SsoAgentInfo.clientSecret = clientSecret;
}
@Value("#{globalSettings['Globals.sso.scope']}")
public void setScope(String scope) {
SsoAgentInfo.scope = scope;
}
public String getSsoUri() {
return ssoUri;
}
public String getClientId() {
return clientId;
}
public String getClientSecret() {
return clientSecret;
}
public String getScope() {
return scope;
}
}

View File

@ -1,156 +0,0 @@
package kcc.let.uat.uia.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bandi.oauth.BandiSSOAgent;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
public class SsoLogin {
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileMngUtil.class);
//실서버 적용시 변경
// agent 관련 설정
/*private static String ssoUri = "https://devsso.copyright.or.kr/oauth2/token.do"; // 개발서버 URL
private static String clientId = "해당 시스템의 클라이언트 아이디";
private static String clientId = "30354835c3684ff79e7fb1bfd3a768f6";
private static String clientSecret = "해당 시스템의 클라이언트 시크릿";
private static String clientSecret = "1ueil5ee05wr0t1gjy1ppt212";
private static String scope = "http://sso.copyright.or.kr"; // 고정
*/
// 1 : id/pw 로그인, 2 : hp/pw 로그인, 3 : seq/ci 로그인
private static String type = "1";
public static String SsoLogin(String Id, String Password, HttpServletRequest request) throws Exception {
SsoAgentInfo ssoagentinfo = new SsoAgentInfo();
// SSO 로그인 연계 "BandiSSOAgent 생성" 참조
/*BandiSSOAgent agent = new BandiSSOAgent(ssoUri, clientId, clientSecret, scope);*/
BandiSSOAgent agent = new BandiSSOAgent(ssoagentinfo.getSsoUri(), ssoagentinfo.getClientId(), ssoagentinfo.getClientSecret(), ssoagentinfo.getScope());
// 사용자 접속 ip
// agent.getLocalServerIp(request);
String client_ip = "127.0.0.1";
// https://devoneid.copyright.or.kr 에서 가입함 ID/PW 입력
/*String user_id = "itn0801@gmail.com";*/
String user_id = Id;
/*String user_pwd = "itntest123$";*/
String user_pwd = Password;
SsoLoginVO ssoLoginVO = new SsoLoginVO();
// SSO 로그인 연계 "accessToken 함수 요청" "accessToken 함수 결과" 참조
HashMap<String, String> login = agent.accessToken(user_id, user_pwd, client_ip, type);
/*에러코드*/
String error = login.get("error");
/*에러 메시지*/
String error_message = login.get("error_message");
/*에러 콘솔 로거*/
LOGGER.debug("error : ", error);
LOGGER.debug("error_message : ", error_message);
// try {
if(login.get("error").equals("0000") || login.get("error").equals("VL-3130")) {
String access_token = login.get("access_token");
String refresh_token = login.get("refresh_token");
/*쿠키유지시간*/
String expires_in = login.get("expires_in");
// userInfo의 type은 무조건 1을 입력한다.
// SSO 로그인 연계 "userInfo 함수 요청" "userInfo 함수 결과" 참조
HashMap<String, String> userInfo = agent.userInfo(access_token, client_ip, type);
//법인회원 정보 처리
if(userInfo.get("corpUserInfo") != null) {
List<Map<String, String>> info = new Gson().fromJson(String.valueOf(userInfo.get("corpUserInfo")),
new TypeToken<List<Map<String, Object>>>(){}.getType());
for (Map<String, String> userInfo2 : info) {
userInfo.put("compAddr", userInfo2.get("compAddr"));
userInfo.put("mangCelnum", userInfo2.get("mangCelnum"));
userInfo.put("membEmail", userInfo2.get("membEmail"));
userInfo.put("membType", userInfo2.get("membType"));
userInfo.put("membDivis", userInfo2.get("membDivis"));
userInfo.put("compZipcd", userInfo2.get("compZipcd"));
userInfo.put("compDetAddr", userInfo2.get("compDetAddr"));
userInfo.put("membBuisnRegnum", userInfo2.get("membBuisnRegnum"));
userInfo.put("membCorpnum", userInfo2.get("membCorpnum"));
userInfo.put("mangName", userInfo2.get("mangName"));
}
}
userInfo.remove("corpUserInfo");
//map -> vo 매칭
ObjectMapper test = new ObjectMapper();
ssoLoginVO = test.convertValue(userInfo, SsoLoginVO.class);
//통합회원 SSO연동 유효성 체크를 위한 토큰값 set
ssoLoginVO.setAccess_token(access_token);
ssoLoginVO.setRefresh_token(refresh_token);
if(userInfo.get("error").equals("0000")) {
// "userInfo 함수 결과" 필드를 기준으로 맵핑
/*Object[] keys = (Object[]) userInfo.keySet().toArray();
for(int i=0;i<userInfo.size();i++) {
System.out.println("["+keys[i]+"] "+userInfo.get(keys[i]));
}*/
// 세션에 access_token, refresh_token 저장
// 통합회원 연동시 유효성 검증을 위해 필요
/*SsoLoginVO생성 해서 SsoLoginVo를 세션에 저장*/
/* 컨트롤러에 미리 선언 -> HttpServletRequest request*/
HttpSession session = request.getSession();
session.setMaxInactiveInterval(Integer.parseInt(expires_in));
//SSOLoginVO세션 생성
ssoLoginVO.setOtherUser("N");
session.setAttribute("SSOLoginVO", ssoLoginVO);
// **중요(필요시)
// 연동 완료시 저장한 개별사이트의 통함회원 아이디와 SSO로그인시 취득한 통합회원 아이디가 다른경우에는 개별사이트의 통합회원 아이디를 SSO로그인시 취득한 통합외원 아이디로 갱신 필요
return "sucess";
} else {
// 사용자 정보 조회 오류
System.out.println("[getUserInfo error] "+userInfo.get("error"));
System.out.println("[getUserInfo error_message] "+userInfo.get("error_message"));
return "fail";
}
} else {
// 로그인 실패
// 사용자 정보 조회 오류
System.out.println("[login error] "+login.get("error"));
System.out.println("[login error_message] "+login.get("error_message"));
return "fail";
}
// } catch (Exception e) {
// e.getStackTrace();
// throw new BaseException("시퀀스관리 조회 오류") ;
// }
// return "sucess";
}
}

View File

@ -1,135 +0,0 @@
package kcc.let.uat.uia.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bandi.oauth.BandiSSOAgent;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
public class SsoTokenLogin {
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileMngUtil.class);
/*//실서버 적용시 변경
// agent 관련 설정
private static String ssoUri = "https://devsso.copyright.or.kr/oauth2/token.do"; // 개발서버 URL
private static String clientId = "해당 시스템의 클라이언트 아이디";
private static String clientId = "30354835c3684ff79e7fb1bfd3a768f6";
private static String clientSecret = "해당 시스템의 클라이언트 시크릿";
private static String clientSecret = "1ueil5ee05wr0t1gjy1ppt212";
private static String scope = "http://sso.copyright.or.kr"; // 고정
*/
// 1 : id/pw 로그인, 2 : hp/pw 로그인, 3 : seq/ci 로그인
private static String type = "1";
public static String SsoTokenLogin(String access_token, String refresh_token, HttpServletRequest request) throws Exception {
SsoAgentInfo ssoagentinfo = new SsoAgentInfo();
// SSO 로그인 연계 "BandiSSOAgent 생성" 참조
/*BandiSSOAgent agent = new BandiSSOAgent(ssoUri, clientId, clientSecret, scope);*/
BandiSSOAgent agent = new BandiSSOAgent(ssoagentinfo.getSsoUri(), ssoagentinfo.getClientId(), ssoagentinfo.getClientSecret(), ssoagentinfo.getScope());
// 사용자 접속 ip
// agent.getLocalServerIp(request);
String client_ip = "127.0.0.1";
SsoLoginVO ssoLoginVO = new SsoLoginVO();
// try {
HashMap<String, String> tokenValid = agent.tokenValid(access_token, client_ip);
if(tokenValid.get("error").equals("0000")) {
/*쿠키유지시간*/
// String expires_in = login.get("expires_in");
// userInfo의 type은 무조건 1을 입력한다.
// SSO 로그인 연계 "userInfo 함수 요청" "userInfo 함수 결과" 참조
HashMap<String, String> userInfo = agent.userInfo(access_token, client_ip, type);
//법인회원 정보 처리
if(userInfo.get("corpUserInfo") != null) {
List<Map<String, String>> info = new Gson().fromJson(String.valueOf(userInfo.get("corpUserInfo")),
new TypeToken<List<Map<String, Object>>>(){}.getType());
for (Map<String, String> userInfo2 : info) {
userInfo.put("compAddr", userInfo2.get("compAddr"));
userInfo.put("mangCelnum", userInfo2.get("mangCelnum"));
userInfo.put("membEmail", userInfo2.get("membEmail"));
userInfo.put("membType", userInfo2.get("membType"));
userInfo.put("membDivis", userInfo2.get("membDivis"));
userInfo.put("compZipcd", userInfo2.get("compZipcd"));
userInfo.put("compDetAddr", userInfo2.get("compDetAddr"));
userInfo.put("membBuisnRegnum", userInfo2.get("membBuisnRegnum"));
userInfo.put("membCorpnum", userInfo2.get("membCorpnum"));
userInfo.put("mangName", userInfo2.get("mangName"));
}
}
userInfo.remove("corpUserInfo");
//map -> vo 매칭
ObjectMapper test = new ObjectMapper();
ssoLoginVO = test.convertValue(userInfo, SsoLoginVO.class);
//통합회원 SSO연동 유효성 체크를 위한 토큰값 set
ssoLoginVO.setAccess_token(access_token);
ssoLoginVO.setRefresh_token(refresh_token);
if(userInfo.get("error").equals("0000")) {
// "userInfo 함수 결과" 필드를 기준으로 맵핑
Object[] keys = (Object[]) userInfo.keySet().toArray();
for(int i=0;i<userInfo.size();i++) {
System.out.println("["+keys+"] "+userInfo.get(keys[i]));
}
// 세션에 access_token, refresh_token 저장
// 통합회원 연동시 유효성 검증을 위해 필요
/*SsoLoginVO생성 해서 SsoLoginVo를 세션에 저장*/
/* 컨트롤러에 미리 선언 -> HttpServletRequest request*/
HttpSession session = request.getSession();
session.setMaxInactiveInterval(Integer.parseInt("7200"));
//SSOLoginVO세션 생성
ssoLoginVO.setOtherUser("N");
session.setAttribute("SSOLoginVO", ssoLoginVO);
// **중요(필요시)
// 연동 완료시 저장한 개별사이트의 통함회원 아이디와 SSO로그인시 취득한 통합회원 아이디가 다른경우에는 개별사이트의 통합회원 아이디를 SSO로그인시 취득한 통합외원 아이디로 갱신 필요
return "sucess";
} else {
// 사용자 정보 조회 오류
System.out.println("[getUserInfo error] "+userInfo.get("error"));
System.out.println("[getUserInfo error_message] "+userInfo.get("error_message"));
return "fail";
}
} else {
// 로그인 실패
// 사용자 정보 조회 오류
// System.out.println("[login error] "+login.get("error"));
// System.out.println("[login error_message] "+login.get("error_message"));
return "fail";
}
// } catch (Exception e) {
// System.out.println("Exception Error");
// }
// return "sucess";
}
}

View File

@ -132,6 +132,9 @@ public class QustnrRespondInfoVO implements Serializable {
private String prcsAplctPrdOrd = "";
private String qestnTyCode = "";
// 20231124 이호영
// 강화 기반은 라디오 버튼이라 변수 추가함
@ -674,6 +677,18 @@ public class QustnrRespondInfoVO implements Serializable {
public void setUserId(String userId) {
this.userId = userId;
}
public String getQestnTyCode() {
return qestnTyCode;
}
public void setQestnTyCode(String qestnTyCode) {
this.qestnTyCode = qestnTyCode;
}
}

View File

@ -556,6 +556,13 @@ public class EgovUserManageController {
*/
userManageVO = egovCryptoUtil.encryptUserManageVO(userManageVO);
if ("on".equals(userManageVO.getAreaNo())) {
userManageVO.setAreaNo("Y");
}else {
userManageVO.setAreaNo("N");
}
userManageService.insertUser(userManageVO);
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
}catch(Exception e){
@ -1050,6 +1057,17 @@ public class EgovUserManageController {
userManageService.insertUserHistory(userManageVO);
userManageVO = egovCryptoUtil.encryptUserManageVO(userManageVO);
System.out.println("userManageVO.getAreaNo()");
System.out.println(userManageVO.getAreaNo());
System.out.println(userManageVO.getAreaNo());
if ("on".equals(userManageVO.getAreaNo())) {
userManageVO.setAreaNo("Y");
}else {
userManageVO.setAreaNo("N");
}
userManageService.updateUser(userManageVO);
//권한업데이트 - null 아닌 경우에만 update
//System.out.println("System.out.println(authorGroup.getAuthorCode());");

View File

@ -1,5 +1,8 @@
package kcc.let.utl.sim.service;
import java.net.Inet6Address;
import java.net.InetAddress;
import javax.servlet.http.HttpServletRequest;
//import kcc.com.cmm.service.EgovProperties;
@ -35,29 +38,44 @@ public class EgovClntInfo {
return ipAddr;
}*/
public static String getClntIP(HttpServletRequest request) throws Exception {
// IP주소
//String ipAddr = request.getRemoteAddr();
String ip = request.getHeader("X-Forwarded-For");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
// 여러 IP가 있을 경우 번째 IP 사용
if (ip != null && ip.contains(",")) {
ip = ip.split(",")[0].trim();
}
// IPv6 IPv4 변환
try {
InetAddress inetAddress = InetAddress.getByName(ip);
if (inetAddress instanceof Inet6Address) {
if (ip.startsWith("::ffff:")) { // IPv4-mapped IPv6
ip = ip.substring(7);
} else {
// 실제 IPv6이면 그대로 두거나 원하는 경우 공백 반환
// ip = ""; // IPv6은 제외하고 싶을
}
}
} catch (Exception e) {
// 무시 (유효하지 않은 IP일 있음)
}
return ip;
}
/**

View File

@ -1,10 +1,12 @@
package kcc.ve.aplct.cmdTrgt.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import kcc.ve.cmm.sendAt.SendService;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@ -54,6 +56,9 @@ public class CmdTrgtServiceImpl implements CmdTrgtService {
// 교육신청발송이력
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
@Resource(name = "SendService")
private SendService sendService;
@Override
public void insertVeEduAplct(VEEduAplctVO paramVO) {
@ -136,6 +141,7 @@ public class CmdTrgtServiceImpl implements CmdTrgtService {
String id="";
String next=""; //?
String smsYn = ""; //휴대폰 인증 번호 발송 여부
String reqStateCd = ""; //의뢰상태
try {
result="";
//
@ -170,6 +176,9 @@ public class CmdTrgtServiceImpl implements CmdTrgtService {
}else { //대상자 있음
id = cndtnTrgtMngVOList.get(0).getCmdTrgtInfoOrd();
//의뢰 상태가 의뢰취소(40)라면 스텝4에서 fail 처리
reqStateCd = cndtnTrgtMngVOList.get(0).getReqStateCd();
//step2.대상이 완료 상태인지 확인
cndtnTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep2(cmdTrgtMngVO);
@ -201,13 +210,20 @@ public class CmdTrgtServiceImpl implements CmdTrgtService {
msg = "이미 신청한 교육이 있습니다.";
next = ""; //?
}else {//신청한 과정이 없다.
result = "success";
msg = "";
//id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd();
//id = "";
next = "Y";
smsYn = "Y";
//next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자
if("40".equals(reqStateCd)) {
result = "fail";
msg = "의뢰 취소 상태로 과정대상자가 아닙니다. 관리자에게 문의 바랍니다.";
next = "Y"; //?
}else {
result = "success";
msg = "";
//id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd();
//id = "";
next = "Y";
smsYn = "Y";
//next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자
}
}
}
@ -225,6 +241,11 @@ public class CmdTrgtServiceImpl implements CmdTrgtService {
vEEduAplctVO.setClphone(cmdTrgtMngVO.getClphone());
vEEduAplctVO.setSndFlag("B");
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
Map<String, String> chihwan = new HashMap<>();
chihwan.put("certNo", code);
sendService.sendAt(vEEduAplctVO.getClphone(), "TEMPLATE_CERT_NO", chihwan);
//문자 발송 성공
if("1".equals(resultMap.get("result_code"))){
//발송 로그
@ -247,6 +268,9 @@ public class CmdTrgtServiceImpl implements CmdTrgtService {
vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO);
}
//인증번호 임시노출 실서버 운영 삭제_이준호_251030
modelAndView.addObject("crtfdNumber", code);
}

View File

@ -3,12 +3,15 @@ package kcc.ve.aplct.cmdTrgt.web;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import kcc.ve.cmm.sendAt.SendAtUtill;
import kcc.ve.cmm.sendAt.SendService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -186,6 +189,12 @@ public class CmdTrgtController {
//알림
@Resource(name = "iTNotiUtil")
private ITNotiUtil iTNotiUtil;
@Resource(name = "sendAtUtill")
private SendAtUtill sendAtUtill;
@Resource(name = "SendService")
private SendService sendService;
private String p_lctr_div_cd = "70"; //시정명령 코드, 기소유예 - 60, 예방교육 - 80
@ -696,8 +705,9 @@ public class CmdTrgtController {
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setChrgNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone()));
vEEduAplctVO.setPhone(vEPrcsDetailVO.getPhone());
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
@ -739,6 +749,11 @@ public class CmdTrgtController {
}
result = "success";
//신청 알림톡 발송
Map<String, String> chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_70, vEPrcsDetailVO.getPrcsAplctPrdOrd());
sendService.sendAt(vEPrcsDetailVO.getPhone().trim().replaceAll("-", ""), "TEMPLATE_EDU_SUBMIT", chihwan);
} catch (Exception e) {
// TODO: handle exception
}
@ -817,7 +832,8 @@ public class CmdTrgtController {
*/
@RequestMapping("/web/ve/aplct/cmdTrgt/popup/eduCancelPopupAjax.do")
public ModelAndView filePopupAjax(
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO,
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
@ -879,7 +895,7 @@ public class CmdTrgtController {
//step2.파일 처리====================================
try {
/*
System.out.println("vEEduRprtVO.getAprvlCn()");
System.out.println(vEEduRprtVO.getEduAplctOrd());
System.out.println(vEEduRprtVO.getAprvlCn());
@ -895,7 +911,16 @@ public class CmdTrgtController {
//취소요청 정보 저장
vEEduAplctService.update(vEEduAplctVO);
*/
/*
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);
}catch(Exception ex) {
System.out.println("Exception vEEduRsltRprtService.insert");

View File

@ -1,5 +1,7 @@
package kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.web;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import javax.annotation.Resource;
@ -28,6 +30,8 @@ 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.oprtn.qestnr.service.VEALettnQestnrMIXService;
/**
@ -92,6 +96,9 @@ public class ScholInfoController {
@Resource(name = "vEALettnQestnrMIXService")
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
/**
* 학교정보 검색 팝업 리스트
*/
@ -448,71 +455,24 @@ public class ScholInfoController {
*/
@RequestMapping("popup/certPopList.do")
public String certPopList(
@ModelAttribute("vEEduChasiVO") VEEduChasiVO vEEduChasiVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, QustnrRespondInfoVO qustnrRespondInfoVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
String s_action = request.getParameter("action"); //insert or select
System.out.println("s_action");
System.out.println(s_action);
System.out.println(vEEduChasiVO.getQustnrTmplatId());
System.out.println(vEEduChasiVO.getQestnrId());
System.out.println(vEEduChasiVO.getQustnrRespondId());
vEPrcsDetailVO = vEPrcsAplctPrdService.selectCompleteDocDetail(vEPrcsDetailVO);
vEPrcsDetailVO.setTrgtNm(egovCryptoUtil.decrypt(vEPrcsDetailVO.getTrgtNm()));
vEPrcsDetailVO.setChrgNm(egovCryptoUtil.decrypt(vEPrcsDetailVO.getChrgNm()));
//기본정보
model.addAttribute("completeDocDetail", vEPrcsDetailVO);
System.out.println(qustnrRespondInfoVO.getQustnrTmplatId());
System.out.println(qustnrRespondInfoVO.getQestnrId());
System.out.println(qustnrRespondInfoVO.getQustnrRespondId());
//차시 정보
/*
try {
vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_10); //10-청소년 강사, 20-성인강사 VE0001
VEEduChasiVO ChasiInfo = vEEduMIXService.selectChasiInfo(vEEduChasiVO);
ChasiInfo.setInstrNm(egovCryptoUtil.decrypt(ChasiInfo.getInstrNm()));
ChasiInfo.setStrtTm(ChasiInfo.getStrtTm().substring(0,2)+":"+ChasiInfo.getStrtTm().substring(2,4));
ChasiInfo.setEndTm(ChasiInfo.getEndTm().substring(0,2)+":"+ChasiInfo.getEndTm().substring(2,4));
model.addAttribute("chasiInfo", ChasiInfo);
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
*/
//참석 답변 정보
try {
List<QustnrRespondInfoVO> chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyFndtnList202312(qustnrRespondInfoVO);
//model.addAttribute("qestnrRespondent", chasiSrvyList.get(0).getQestnrRespondent());
//model.addAttribute("qestnrParticipant", chasiSrvyList.get(0).getQestnrParticipant());
System.out.println("chasiSrvyList.get(0).getPrcsAplctPrdOrd()");
System.out.println(chasiSrvyList.get(0).getPrcsAplctPrdOrd());
System.out.println(chasiSrvyList.get(0).getPrcsAplctPrdOrd());
model.addAttribute("chasiSrvyList", chasiSrvyList);
model.addAttribute("chasiSrvyListCnt", chasiSrvyList.size());
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
//설문 참여 정보
/*
try {
model = qustnrCommonUtil._qustnrQesItm(
model
, VeConstants.LCTR_DIV_CD_10 //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001"
, vEALettnQestnrMIXService
, egovQustnrRespondInfoService
);
}catch(Exception ex) {
ex.printStackTrace();
}
*/
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일");
String todayStr = today.format(formatter);
model.addAttribute("todayStr", todayStr);
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/certPopList";
}

View File

@ -1,10 +1,12 @@
package kcc.ve.aplct.prevent.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import kcc.ve.cmm.sendAt.SendService;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@ -54,6 +56,9 @@ public class PreventServiceImpl implements PreventService {
// 교육신청발송이력
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
@Resource(name = "SendService")
private SendService sendService;
@Override
public void insertVeEduAplct(VEEduAplctVO paramVO) {
@ -155,7 +160,7 @@ public class PreventServiceImpl implements PreventService {
}
*/
/*
// step1.신청 가능한 대상이 있는지 찾는다.-대상자 존재 여부만 확인
List<CmdTrgtMngVO> cndtnTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep1(cmdTrgtMngVO);
@ -212,6 +217,13 @@ public class PreventServiceImpl implements PreventService {
}
}
*/
/* 예방교육의 경우 대상자 목록, 대상자 체크가 불필요 */
result = "success";
msg = "";
next = "Y";
smsYn = "Y";
//핸드폰으로 인증번호 발송
if ("Y".equals(smsYn) && !"Y".equals(cmdTrgtMngVO.getChkYn())) {
@ -225,6 +237,11 @@ public class PreventServiceImpl implements PreventService {
vEEduAplctVO.setClphone(cmdTrgtMngVO.getClphone());
vEEduAplctVO.setSndFlag("B");
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
Map<String, String> chihwan = new HashMap<>();
chihwan.put("certNo", code);
sendService.sendAt(vEEduAplctVO.getClphone(), "TEMPLATE_CERT_NO", chihwan);
//문자 발송 성공
if("1".equals(resultMap.get("result_code"))){
//발송 로그
@ -247,6 +264,9 @@ public class PreventServiceImpl implements PreventService {
vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO);
}
//인증번호 임시노출 실서버 운영 삭제_이준호_251030
modelAndView.addObject("crtfdNumber", code);
}

View File

@ -9,6 +9,8 @@ import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import kcc.ve.cmm.sendAt.SendAtUtill;
import kcc.ve.cmm.sendAt.SendService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -185,6 +187,12 @@ public class PreventController {
//알림
@Resource(name = "iTNotiUtil")
private ITNotiUtil iTNotiUtil;
@Resource(name = "sendAtUtill")
private SendAtUtill sendAtUtill;
@Resource(name = "SendService")
private SendService sendService;
private String p_lctr_div_cd = "80"; //시정명령 코드, 기소유예 - 60, 예방교육 - 80
@ -697,7 +705,7 @@ public class PreventController {
vEEduAplctVO.setChrgNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone()));
vEEduAplctVO.setPhone(vEPrcsDetailVO.getPhone());
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
@ -739,6 +747,10 @@ public class PreventController {
}
result = "success";
//신청 알림톡 발송
Map<String, String> chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_80, vEPrcsDetailVO.getPrcsAplctPrdOrd());
sendService.sendAt(vEPrcsDetailVO.getPhone().trim().replaceAll("-", ""), "TEMPLATE_EDU_SUBMIT", chihwan);
} catch (Exception e) {
// TODO: handle exception
}
@ -817,7 +829,8 @@ public class PreventController {
*/
@RequestMapping("/web/ve/aplct/prevent/popup/eduCancelPopupAjax.do")
public ModelAndView filePopupAjax(
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO,
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
@ -879,7 +892,7 @@ public class PreventController {
//step2.파일 처리====================================
try {
/*
System.out.println("vEEduRprtVO.getAprvlCn()");
System.out.println(vEEduRprtVO.getEduAplctOrd());
System.out.println(vEEduRprtVO.getAprvlCn());
@ -895,7 +908,17 @@ public class PreventController {
//취소요청 정보 저장
vEEduAplctService.update(vEEduAplctVO);
*/
/*
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);
}catch(Exception ex) {
System.out.println("Exception vEEduRsltRprtService.insert");

View File

@ -21,6 +21,7 @@ public interface SspnIdtmtService {
//교육대상자 확인 - new
ModelAndView checkSspnIdtmt(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
//교육대상자 확인 - new
ModelAndView sendCertSMS(String p_Clphone, String p_uniqId);
}

View File

@ -1,5 +1,6 @@
package kcc.ve.aplct.sspnIdtmt.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -16,6 +17,7 @@ import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeSendSMS;
import kcc.ve.cmm.sendAt.SendService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctSndHstryService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduAplctDAO;
@ -55,6 +57,9 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
// 교육신청발송이력
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
@Resource(name = "SendService")
private SendService sendService;
@Override
public void insertVeEduAplct(VEEduAplctVO paramVO) {
@ -137,6 +142,7 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
String id="";
String next=""; //?
String smsYn = ""; //휴대폰 인증 번호 발송 여부
String reqStateCd = ""; //의뢰상태
try {
result="";
//
@ -171,8 +177,11 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
}else { //대상자 있음
id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd();
//의뢰 상태가 의뢰취소(40)라면 스텝4에서 fail 처리
reqStateCd = cndtnTrgtMngVOList.get(0).getReqStateCd();
//step2.대상이 완료 상태인지 확인
cndtnTrgtMngVOList = cndtnTrgtInfoMngDAO.checkSspnIdtmtStep2(cndtnTrgtInfoMngVO);
cndtnTrgtMngVOList = cndtnTrgtInfoMngDAO.checkSspnIdtmtStep2(cndtnTrgtInfoMngVO);
int i_cnt = 0;
@ -202,13 +211,20 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
msg = "이미 신청한 교육이 있습니다.";
next = ""; //?
}else {//신청한 과정이 없다.
result = "success";
msg = "";
//id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd();
//id = "";
next = "Y";
smsYn = "Y";
//next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자
if("40".equals(reqStateCd)) {
result = "fail";
msg = "의뢰 취소 상태로 과정대상자가 아닙니다. 관리자에게 문의 바랍니다.";
next = "Y"; //?
}else {
result = "success";
msg = "";
//id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd();
//id = "";
next = "Y";
smsYn = "Y";
//next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자
}
}
}
@ -271,17 +287,32 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
}
//핸드폰으로 인증번호 발송 chkYn-본인인증 여부 Y-본인인증 완료된 경우
if ("Y".equals(smsYn) && !"Y".equals(cndtnTrgtInfoMngVO.getChkYn())) {
if ("Y".equals(smsYn) && !"Y".equals(cndtnTrgtInfoMngVO.getChkYn())) {
//데이터 암호화
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO); //핸드폰번호 복호화
//인증번호 생성
String code = RandomStringUtils.randomNumeric(6);
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
//발송 log 남기기 - result code
_sendSMSNLog(code, "교육 대상자 인증", "안녕하세요. 한국지식재산보호원입니다.\n인증번호는 " + code + " 입니다.", cndtnTrgtInfoMngVO.getClphone(), loginVO.getUniqId());
/*
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
VeSendSMS sendSMS = new VeSendSMS();
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO); //핸드폰번호 복호화
vEEduAplctVO.setEduAplctOrd("기소유예 대상자 인증");
vEEduAplctVO.setSndCn("안녕하세요. 저작권배움터 기소유예 담당자입니다.\n인증번호는 " + code + " 입니다.");
vEEduAplctVO.setEduAplctOrd("교육 대상자 인증");
vEEduAplctVO.setSndCn("안녕하세요. 한국지식재산보호원입니다.\n인증번호는 " + code + " 입니다.");
vEEduAplctVO.setClphone(cndtnTrgtInfoMngVO.getClphone());
vEEduAplctVO.setSndFlag("B");
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
Map<String, String> chihwan = new HashMap<>();
chihwan.put("certNo", code);
sendService.sendAt(vEEduAplctVO.getClphone(), "TEMPLATE_CERT_NO", chihwan);
//문자 발송 성공
if("1".equals(resultMap.get("result_code"))){
//발송 로그
@ -304,6 +335,10 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO);
}
*/
//인증번호 임시노출 실서버 운영 삭제_이준호_251030
modelAndView.addObject("crtfdNumber", code);
}
@ -339,4 +374,94 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
return modelAndView;
}
@Override
public ModelAndView sendCertSMS(String p_Clphone, String p_uniqId) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String result="";
String msg="";
String id="";
try {
result="";
//인증번호 생성
String code = RandomStringUtils.randomNumeric(6);
//발송 log 남기기 - result code
_sendSMSNLog(code, "교육 대상자 인증", "안녕하세요. 한국지식재산보호원입니다.\n인증번호는 " + code + " 입니다.", p_Clphone, p_uniqId);
} catch (Exception e) {
result="fail";
msg = "오류가 발생하였습니다 관리자에게 문의하세요. ";
e.printStackTrace();
// TODO: handle exception
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("id", id);
modelAndView.addObject("result", result);
return modelAndView;
}
///////////////////////////////////////////////////////////////////////////////////
//
// PRIVATE
//
/////////////////////////////////////////////////////////////////////////////////
private String _sendSMSNLog(String p_code, String p_title, String p_cn, String p_clphone, String p_uniqId) throws Exception{
//인증번호 생성
//String code = RandomStringUtils.randomNumeric(6);
//문자 발송 부분
Map<String, String> chihwan = new HashMap<>();
chihwan.put("certNo", p_code);
sendService.sendAt(p_clphone, "TEMPLATE_CERT_NO", chihwan);
//문자 발송 로그 부분
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
VeSendSMS sendSMS = new VeSendSMS();
vEEduAplctVO.setEduAplctOrd(p_title);
vEEduAplctVO.setSndCn(p_cn);
vEEduAplctVO.setClphone(p_clphone);
vEEduAplctVO.setSndFlag("B");
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
//문자 발송 성공
if("1".equals(resultMap.get("result_code"))){
//발송 로그
//LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
String snd_ord = sndGnrService.getNextStringId();
vEEduAplctVO.setSndHstryOrd(snd_ord);
vEEduAplctVO.setSndId(p_uniqId);
vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
vEEduAplctVO.setSndCd("10");
vEEduAplctVO.setTrgtId(p_uniqId);
vEEduAplctSndHstryService.insert(vEEduAplctVO);
//인증번호 row 생성 (기존 강사인증 테이블 사용)
VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO();
vEInstrDetailVO.setEmail(vEEduAplctVO.getClphone());
vEInstrDetailVO.setCrtfdNumber(p_code);
vEInstrDetailVO.setUserId(p_uniqId);
vEInstrMixService.deleteInstrEmailCrtfd(vEInstrDetailVO);
vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO);
}
//인증번호 임시노출 실서버 운영 삭제_이준호_251030
//modelAndView.addObject("crtfdNumber", code);
return p_code;
}
}

View File

@ -9,6 +9,8 @@ import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import kcc.ve.cmm.sendAt.SendAtUtill;
import kcc.ve.cmm.sendAt.SendService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -178,6 +180,12 @@ public class SspnIdtmtController {
//알림
@Resource(name = "iTNotiUtil")
private ITNotiUtil iTNotiUtil;
@Resource(name = "sendAtUtill")
private SendAtUtill sendAtUtill;
@Resource(name = "SendService")
private SendService sendService;
private String p_lctr_div_cd = "60";
@ -686,8 +694,9 @@ public class SspnIdtmtController {
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setChrgNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone()));
vEEduAplctVO.setPhone(vEPrcsDetailVO.getPhone());
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
@ -729,6 +738,10 @@ public class SspnIdtmtController {
}
result = "success";
//신청 알림톡 발송
Map<String, String> chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_60, vEPrcsDetailVO.getPrcsAplctPrdOrd());
sendService.sendAt(vEPrcsDetailVO.getPhone().trim().replaceAll("-", ""), "TEMPLATE_EDU_SUBMIT", chihwan);
} catch (Exception e) {
// TODO: handle exception
}

View File

@ -970,7 +970,9 @@ public class EduEndTngrController {
System.out.println(a_qustnrQesitmId.length);
System.out.println(a_qustnrQesitmId.length);
int j = 0;
for (int i=0;i<i_chasiSrvyListSize;i++) {
String[] a_answer = request.getParameterValues("answer");
//String s_answer = request.getParameter("answer_"+Integer.toString(i+1));
String s_responseRadio = request.getParameter("resultList["+Integer.toString(i)+"].responseRadio");
@ -985,6 +987,8 @@ public class EduEndTngrController {
qustnrRespondInfoVO.setDissatisfied("0");
qustnrRespondInfoVO.setVeryDissatisfied("0");
qustnrRespondInfoVO.setAnswer("");
if ("5".equals(s_responseRadio)) {
qustnrRespondInfoVO.setVerySatisfied("1");
@ -1000,6 +1004,9 @@ public class EduEndTngrController {
}else if ("1".equals(s_responseRadio)) {
qustnrRespondInfoVO.setVeryDissatisfied("1");
}else {
qustnrRespondInfoVO.setAnswer(a_answer[j]);
j=j+1;
}
//qustnrRespondInfoVO.setQustnrQesitmId(a_qustnrQesitmId[i]);

View File

@ -21,8 +21,6 @@ public class VeSendMail {
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileMngUtil.class);
@Value("#{globalSettings['Globals.edu.mail.template']}")
private String TEMPLATE_URI;
//================================================================
//찾교 메일 발송 계정 ID, PW 넣는 부분

View File

@ -0,0 +1,81 @@
package kcc.ve.cmm.crt;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class CertPhoneInfo {
private static String cryptoUrl;
private static String reqNo;
private static String id;
private static String clientId;
private static String srvNo;
private static String retUrl;
private static String accessToken;
private static String stosUrl;
@Value("#{globalSettings['globals.certPhone.cryptoUrl']}")
public void setCryptoUrl(String value) {
CertPhoneInfo.cryptoUrl = value;
}
public String getCryptoUrl() {
return cryptoUrl;
}
@Value("#{globalSettings['globals.certPhone.reqNo']}")
public void setReqNo(String value) {
CertPhoneInfo.reqNo = value;
}
public String getReqNo() {
return reqNo;
}
@Value("#{globalSettings['globals.certPhone.id']}")
public void setId(String value) {
CertPhoneInfo.id = value;
}
public String getId() {
return id;
}
@Value("#{globalSettings['globals.certPhone.clientId']}")
public void setClientId(String value) {
CertPhoneInfo.clientId = value;
}
public String getClientId() {
return clientId;
}
@Value("#{globalSettings['globals.certPhone.srvNo']}")
public void setSrvNo(String value) {
CertPhoneInfo.srvNo = value;
}
public String getSrvNo() {
return srvNo;
}
@Value("#{globalSettings['globals.certPhone.retUrl']}")
public void setRetUrl(String value) {
CertPhoneInfo.retUrl = value;
}
public String getRetUrl() {
return retUrl;
}
@Value("#{globalSettings['globals.certPhone.accessToken']}")
public void setAccessToken(String value) {
CertPhoneInfo.accessToken = value;
}
public String getAccessToken() {
return accessToken;
}
@Value("#{globalSettings['globals.certPhone.stosUrl']}")
public void setStosUrl(String value) {
CertPhoneInfo.stosUrl = value;
}
public String getStosUrl() {
return stosUrl;
}
}

View File

@ -0,0 +1,240 @@
package kcc.ve.cmm.crt;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.ModelAndView;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service(value = "certPhoneRequestUtill")
public class CertPhoneRequestUtill {
public String requestResult( HttpServletRequest request, ModelAndView modelAndView ) throws Exception {
String result = "fail";
CertPhoneInfo certPhoneInfo = new CertPhoneInfo();
String url = certPhoneInfo.getCryptoUrl();
String reqNo = certPhoneInfo.getReqNo();
String id = certPhoneInfo.getId();
String clientId = certPhoneInfo.getClientId();
String srvNo = certPhoneInfo.getSrvNo();
String retUrl = certPhoneInfo.getRetUrl() + "web/cmm/crt/certPhoneReturn.do";
String accessToken = certPhoneInfo.getAccessToken();
Date currentDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String reqDate = sdf.format(currentDate);
RestTemplate restTemplate = new RestTemplate();
// 1. Header 설정
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "bearer " + accessToken);
// 2. Body 생성
Map<String, Object> dataHeader = new HashMap<>();
dataHeader.put("lang_code", "kr");
Map<String, Object> dataBody = new HashMap<>();
dataBody.put("client_id", clientId);
dataBody.put("req_date", reqDate);
dataBody.put("req_no", reqNo);
dataBody.put("enc_mode", "1");
Map<String, Object> requestJson = new HashMap<>();
requestJson.put("dataHeader", dataHeader);
requestJson.put("dataBody", dataBody);
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestJson, headers);
// 3. POST 요청 호출
ResponseEntity<String> response = restTemplate.exchange(
url,
HttpMethod.POST,
entity,
String.class
);
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> json = mapper.readValue(response.getBody(), Map.class);
Map<String, Object> resDataBody = (Map<String, Object>) json.get("dataBody");
String cryptoTokenId = (String) resDataBody.get("crypto_token_id");
String cryptoToken = (String) resDataBody.get("crypto_token");
String reqInfo = getReqData(id
, srvNo
, reqNo
, "72" + retUrl
, reqDate
, "H"); //4번시트 5 본인확인 서비스 요청데이터 암호화 항목참조
String symmetricKey = createSymmetricKey(reqDate, reqNo, cryptoToken);
String key = symmetricKey.substring(0, 16);
String iv = symmetricKey.substring(symmetricKey.length() - 16, symmetricKey.length());
request.getSession().setAttribute("reqkey", key);
request.getSession().setAttribute("reqiv", iv);
reqInfo = getEncReqData(key, iv, reqInfo);
String hmacKey = symmetricKey.substring(0, 32);
byte[] hmacSha256 = hmac256(hmacKey.getBytes(), reqInfo.getBytes());
String integrityValue = Base64.getEncoder().encodeToString(hmacSha256);
String baseEncStr = Base64.getEncoder().encodeToString(hmacSha256);
result = "success";
modelAndView.addObject("reqInfo", reqInfo);
modelAndView.addObject("cryptoTokenId", cryptoTokenId);
modelAndView.addObject("integrityValue", integrityValue);
modelAndView.addObject("verSion", "3");
return result;
}
public ModelAndView devLogin( HttpServletRequest request ) throws Exception{
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
// 1. 클라이언트에서 넘어온 평문 JSON 문자열
String retInfo = request.getParameter("retInfo");
// 2. 세션에서 /IV 가져오기
String reqkey = request.getSession().getAttribute("reqkey").toString();
String reqiv = request.getSession().getAttribute("reqiv").toString();
// 3. AES 암호화 설정
SecretKeySpec secureKey = new SecretKeySpec(reqkey.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secureKey, new IvParameterSpec(reqiv.getBytes("UTF-8")));
// 4. 평문 JSON 문자열을 바이트로 변환 암호화
byte[] plainBytes = retInfo.getBytes("UTF-8");
byte[] cipherBytes = cipher.doFinal(plainBytes);
// 5. 암호문을 Base64 인코딩해서 최종 문자열로 변환
String encRetInfo = Base64.getEncoder().encodeToString(cipherBytes);
// 필요하다면 응답에 포함
modelAndView.addObject("result", "success");
modelAndView.addObject("encRetInfo", encRetInfo);
return modelAndView;
}
///////// private Function
private String getEncReqData( String key, String iv, String reqData ) throws Exception {
String reqInfo = "";
try {
SecretKey secureKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secureKey, new IvParameterSpec(iv.getBytes()));
byte[] encrypted;
encrypted = cipher.doFinal(reqData.trim().getBytes());
reqInfo = Base64.getEncoder().encodeToString(encrypted);
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) getEncReqData Exception : %s", e.getMessage()));
e.printStackTrace();
throw e;
}
return reqInfo;
}
private String createSymmetricKey( String req_dtim, String req_no, String token_val ) throws Exception {
String symmetricKey = "";
String value = req_dtim.trim() + req_no.trim() + token_val.trim();
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-256");
md.update(value.getBytes());
byte[] arrHashValue = md.digest();
symmetricKey = Base64.getEncoder().encodeToString(arrHashValue);
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) createSymmetricKey Exception : %s", e.getMessage()));
e.printStackTrace();
throw e;
}
return symmetricKey;
}
private byte[] hmac256( byte[] secretKey, byte[] message ) throws Exception {
byte[] hmac256 = null;
try {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec sks = new SecretKeySpec(secretKey, "HmacSHA256");
mac.init(sks);
hmac256 = mac.doFinal(message);
return hmac256;
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) hmac256 Exception : %s", e.getMessage()));
e.printStackTrace();
throw e;
}
}
private String getReqData( String id, String srvNo, String reqNum, String retUrl, String certDate, String certGb ) {
JSONObject msgMap = new JSONObject();
msgMap.put("id", id);
msgMap.put("srvNo", srvNo);
msgMap.put("reqNum", reqNum);
msgMap.put("retUrl", retUrl);
msgMap.put("certDate", certDate);
msgMap.put("certGb", certGb);
String reqData = msgMap.toJSONString();
return reqData;
}
//복호화
private JSONObject getResData( String req_info, String key, String iv ) throws Exception {
SecretKey secureKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher c;
String resData = "";
try {
c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.DECRYPT_MODE, secureKey, new IvParameterSpec(iv.getBytes()));
/*byte[] cipherEnc = Base64.getDecoder().decode(encData);*/
byte[] cipherEnc = Base64.getDecoder().decode(req_info);
resData = new String(c.doFinal(cipherEnc), "utf-8");
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) getResData Exception : %s", e.getMessage()));
e.printStackTrace();
return null;
}
JSONParser parser = new JSONParser();
JSONObject jsonResData = (JSONObject) parser.parse(resData);
return jsonResData;
}
}

View File

@ -0,0 +1,333 @@
package kcc.ve.cmm.crt;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.crypto.Cipher;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service(value = "certPhoneResultUtill")
public class CertPhoneResultUtill {
CertPhoneInfo certPhoneInfo = new CertPhoneInfo();
public String createCryptoTokenUrl = certPhoneInfo.getCryptoUrl();
public String access_token = certPhoneInfo.getAccessToken();
public String client_id = certPhoneInfo.getClientId();
public String certResult( HttpServletRequest request ) throws Exception {
String reqcryptotokenid = request.getParameter("crypto_token_id");
String integrity_value = request.getParameter("integrity_value");
String id = certPhoneInfo.getId();
String url = certPhoneInfo.getStosUrl();
//암호화키 얻기
Date currentDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String reqDate = sdf.format(currentDate);
String reqNo = certPhoneInfo.getReqNo();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
String cryptoToken = callCreateCryptoTokenAPI(currentDate, reqNo);
JSONParser parser = new JSONParser();
JSONObject cryptoTokenJson = (JSONObject) parser.parse(cryptoToken);
JSONObject dataBody = (JSONObject) cryptoTokenJson.get("dataBody");
String crypto_token_id = (String) dataBody.get("crypto_token_id");
String token_val = (String) dataBody.get("crypto_token");
String reqInfo = getReqData(id, reqcryptotokenid);
String day = formatter.format(currentDate);
String symmetricKey = createSymmetricKey(day, reqNo, token_val);
String key = symmetricKey.substring(0, 16); // 데이터 암호화할 대칭키
String iv = symmetricKey.substring(symmetricKey.length() - 16, symmetricKey.length());// 데이터 암호화할 lnitail Vector
reqInfo = getEncReqData(key, iv, reqInfo);
//복호화
try {
RestTemplate restTemplate = new RestTemplate();
// 1. Header 설정
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 2. Body 생성
Map<String, Object> dataHeader = new HashMap<>();
dataHeader.put("CNTY_CD", "kr");
dataHeader.put("TRAN_ID", id);
Map<String, Object> dataBody2 = new HashMap<>();
dataBody2.put("crypto_token_id", crypto_token_id);
dataBody2.put("reqInfo", reqInfo);
dataBody2.put("integrity_value", integrity_value);
Map<String, Object> requestJson = new HashMap<>();
requestJson.put("dataHeader", dataHeader);
requestJson.put("dataBody", dataBody2);
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestJson, headers);
// 3. POST 요청 호출
ResponseEntity<String> response = restTemplate.exchange(
url,
HttpMethod.POST,
entity,
String.class
);
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> json = mapper.readValue(response.getBody(), Map.class);
Map<String, Object> resDataBody = (Map<String, Object>) json.get("dataBody");
String retInfo = (String) resDataBody.get("RET_INFO");
// AES 복호화 설정 (AES/CBC/PKCS5Padding)
String reqkey = request.getSession().getAttribute("reqkey").toString();
String reqiv = request.getSession().getAttribute("reqiv").toString();
SecretKeySpec secureKey = new SecretKeySpec(reqkey.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secureKey, new IvParameterSpec(reqiv.getBytes("UTF-8")));
// Base64 디코딩 복호화 수행
byte[] cipherEnc = Base64.getDecoder().decode(retInfo);
String resData = new String(cipher.doFinal(cipherEnc), "UTF-8");
/*
===== 복호화된 결과 =====
Commid = KTM
reqNum = koipa_edu
gender = M
di = MC0GCCqGSIb3DQIJAyEAu7FiVqtM/qf7o/KlCxGNQtWWSEoxUzcLWNtM3gXU/hA=
ci = BWqlL7enYj5t2aDsrbvX97vk5wW2+MD08M6e7NtHI9GVeWfWioe8L2m7mheHWKht4uxDUC3k8xG81YgRnUP2lw==
celNo = 01030266269
fgnGbn = 1
certGb = H
userName = 이준호
ci2 = 00
result = Y
addVar =
certdate = 20251118123928
birYMD = 19890202
ciVersion = 1
utf8Name = %EC%9D%B4%EC%A4%80%ED%98%B8
id = SKIP001
===== 복호화된 결과 =====
Commid = LGT
reqNum = koipa_edu
gender = F
di = MC0GCCqGSIb3DQIJAyEAHq52+k0nurs/FS2kArC2+JTfs+3Xa8KPvSTY2WtgMDY=
ci = vDDZDokeyyUJ3i3jaktyXRVGib2XoZZUvp4Rb9tOOWg1sATqRChD4qRNSCaY78EKpsggJMZ/j6jwcLngkXxZtg==
celNo = 01057058729
fgnGbn = 1
certGb = H
userName = 정수빈
ci2 =
result = Y
addVar =
certdate = 20251118125047
birYMD = 19970829
ciVersion = 1
utf8Name = %EC%A0%95%EC%88%98%EB%B9%88
id = SKIP001
*/
return retInfo;
} catch(Exception e) {
System.out.println(e.getMessage());
return "fail";
}
}
public String callCreateCryptoTokenAPI( Date currentDate, String req_no ) throws Exception {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
long current_timestamp = currentDate.getTime() / 1000;
String authorization = "bearer " + access_token;
Map<String, String> requestPropertyMap = new HashMap<>();
requestPropertyMap.put("Content-Type", "application/json");
requestPropertyMap.put("Authorization", authorization);
HttpURLConnection connection = getURLConnection(createCryptoTokenUrl, "POST", requestPropertyMap, true, false);
JSONObject dataHeader = new JSONObject();
dataHeader.put("lang_code", "kr");
JSONObject dataBody = new JSONObject();
dataBody.put("client_id", client_id);
dataBody.put("req_date", formatter.format(currentDate));
dataBody.put("req_no", req_no);
dataBody.put("enc_mode", "1");
JSONObject msgMap = new JSONObject();
msgMap.put("dataHeader", dataHeader);
msgMap.put("dataBody", dataBody);
String msg = msgMap.toJSONString();
if(send(connection.getOutputStream(), msg)) return "";
String receiveMsg = receive(connection.getInputStream());
return receiveMsg;
}
public String getEncReqData( String key, String iv, String reqData ) throws Exception {
String req_info = "";
try {
SecretKey secureKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secureKey, new IvParameterSpec(iv.getBytes()));
byte[] encrypted;
encrypted = cipher.doFinal(reqData.trim().getBytes());
req_info = Base64.getEncoder().encodeToString(encrypted);
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) getEncReqData Exception : %s", e.getMessage()));
throw e;
}
return req_info;
}
public byte[] hmac256( byte[] secretKey, byte[] message ) throws Exception {
byte[] hmac256 = null;
try {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec sks = new SecretKeySpec(secretKey, "HmacSHA256");
mac.init(sks);
hmac256 = mac.doFinal(message);
return hmac256;
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) hmac256 Exception : %s", e.getMessage()));
throw e;
}
}
public String createSymmetricKey( String req_dtim, String req_no, String token_val ) throws Exception {
String symmetricKey = "";
String value = req_dtim.trim() + req_no.trim() + token_val.trim();
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-256");
md.update(value.getBytes());
byte[] arrHashValue = md.digest();
symmetricKey = Base64.getEncoder().encodeToString(arrHashValue);
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) createSymmetricKey Exception : %s", e.getMessage()));
throw e;
}
return symmetricKey;
}
public Boolean send( OutputStream outputStream, String sendMsg ) throws Exception {
Boolean isFail = true;
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8"));
bufferedWriter.write(sendMsg);
bufferedWriter.flush();
isFail = false;
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) send Exception : %s", e.getMessage()));
throw e;
} finally {
if(bufferedWriter != null) {
bufferedWriter.close();
}
}
return isFail;
}
private static HttpsURLConnection openHttps12( String urlStr ) throws Exception {
URL url = new URL(urlStr);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
ctx.init(null, null, new SecureRandom());
conn.setSSLSocketFactory(ctx.getSocketFactory());
return conn;
}
public String receive( InputStream inputStream ) throws Exception {
String receiveMsg = "";
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
StringBuilder stringBuilder = new StringBuilder();
String inputLine;
while((inputLine = bufferedReader.readLine()) != null) {
stringBuilder.append(inputLine);
}
receiveMsg = stringBuilder.toString();
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) receive Exception : %s", e.getMessage()));
throw e;
} finally {
if(bufferedReader != null) {
bufferedReader.close();
}
}
return receiveMsg;
}
public HttpURLConnection getURLConnection( String urlStr, String method, Map<String, String> requestPropertyMap, Boolean isNeedOutput, Boolean isHttps ) throws Exception {
try {
URL url = new URL(urlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(method);
connection.setDoInput(true);
if(isNeedOutput) connection.setDoOutput(true);
for(String key : requestPropertyMap.keySet()) {
connection.setRequestProperty(key, requestPropertyMap.get(key));
}
return connection;
} catch(Exception e) {
System.out.println(String.format("(APICERT)(ERR) getURLConnection Exception : %s", e.getMessage()));
throw e;
} finally {
}
}
public String getReqData( String id, String reqcryptotokenid ) {
JSONObject msgMap = new JSONObject();
msgMap.put("id", id);
msgMap.put("reqcryptotokenid", reqcryptotokenid);
String reqData = msgMap.toJSONString();
return reqData;
}
}

View File

@ -0,0 +1,62 @@
package kcc.ve.cmm.crt;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class CertPhoneWebController {
// 첨부파일 정보
@Resource(name = "certPhoneRequestUtill")
private CertPhoneRequestUtill certPhoneRequestUtill;
// 첨부파일 정보
@Resource(name = "certPhoneResultUtill")
private CertPhoneResultUtill certPhoneResultUtill;
/**
* 본인인증
*/
@RequestMapping("/web/cmm/crt/certPhoneRequestAjax.do")
public ModelAndView certPhoneRequestAjax( HttpServletRequest request ) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String result = certPhoneRequestUtill.requestResult(request, modelAndView);
modelAndView.addObject("result", result);
return modelAndView;
}
@RequestMapping("/web/cmm/crt/certPhoneReturn.do")
public String certPhoneReturn( HttpServletRequest request, ModelMap model ) throws Exception {
String retInfo = certPhoneResultUtill.certResult(request);
model.addAttribute("retInfo", retInfo);
return "web/kccadr/login/CertPhoneResultPop";
}
@RequestMapping("/web/cmm/crt/certPhoneRequestAjax_dev.do")
public ModelAndView certPhoneRequestAjax_dev( HttpServletRequest request ) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView = certPhoneRequestUtill.devLogin(request);
return modelAndView;
}
}

View File

@ -0,0 +1,60 @@
package kcc.ve.cmm.sendAt;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class PpurioGlobalSet {
private static String id;
private static String pw;
private static String host;
private static String senderKey;
private static String from;
@Value("#{globalSettings['ppurio.id']}")
public void setId(String id) {
PpurioGlobalSet.id = id;
}
public String getId() {
return id;
}
@Value("#{globalSettings['ppurio.pw']}")
public void setPw(String pw) {
PpurioGlobalSet.pw = pw;
}
public String getPw() {
return pw;
}
@Value("#{globalSettings['ppurio.host']}")
public void setHost(String host) {
PpurioGlobalSet.host = host;
}
public String getHost() {
return host;
}
@Value("#{globalSettings['ppurio.senderKey']}")
public void setSenderKey(String senderKey) {
PpurioGlobalSet.senderKey = senderKey;
}
public String getSenderKey() {
return senderKey;
}
@Value("#{globalSettings['ppurio.from']}")
public void setFrom(String from) {
PpurioGlobalSet.from = from;
}
public String getFrom() {
return from;
}
}

View File

@ -0,0 +1,66 @@
package kcc.ve.cmm.sendAt;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import lombok.*;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
@Component(value = "sendAtUtill")
public class SendAtUtill{
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
public Map<String, String> chihwanSet(String lctrDivCd, String prcsAplctPrdOrd) throws Exception {
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd);
VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO);
String[] prvtMemoCn = vEPrcsDetailVODetail.getPrvtMemoCn().split(Pattern.quote("|"));
String content = "";
String eduDay = "";
String eduRegDay = "";
String eduPlace = "";
if(VeConstants.LCTR_DIV_CD_60.equals(lctrDivCd)){
content = "귀하의 상표권 교육조건부 기소유예 교육 신청이 완료되었습니다.";
}else if(VeConstants.LCTR_DIV_CD_70.equals(lctrDivCd)){
content = "귀하의 부정경쟁행위 시정명령 교육 신청이 완료되었습니다.";
}else if(VeConstants.LCTR_DIV_CD_80.equals(lctrDivCd)){
content = "귀하의 상표권 침해・부정경쟁행위 예방 교육 신청이 완료되었습니다.";
}else{
content = "귀하의 교육 신청이 완료되었습니다.";
}
if(prvtMemoCn.length > 0){
eduDay = prvtMemoCn[0];
eduRegDay = prvtMemoCn[1];
eduPlace = prvtMemoCn[2];
}
Map<String, String> chihwan = new HashMap<>();
chihwan.put("content", content);
chihwan.put("eduDay", eduDay);
chihwan.put("eduRegDay", eduRegDay);
chihwan.put("eduPlace", eduPlace);
return chihwan;
}
}

View File

@ -0,0 +1,88 @@
package kcc.ve.cmm.sendAt;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.*;
import java.io.Serializable;
import java.util.Map;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendAtVO implements Serializable {
private static final long serialVersionUID = 1L;
@JsonIgnore
private String accesstoken;
private String type;
@JsonIgnore
private String expired;
private String account;
private String refkey;
private String from;
private String to;
private Content content;
private Resend resend;
private Recontent recontent;
@JsonIgnore
private Map<String, String> chihwan;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Content {
private At at;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class At {
private String senderkey;
private String templatecode;
private String message;
}
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Resend {
private String first;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Recontent {
private Lms lms;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Lms {
private String message;
}
}
public String toJson() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(this);
}
}

View File

@ -0,0 +1,57 @@
package kcc.ve.cmm.sendAt;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
@Controller
public class SendController {
private static final Logger LOGGER = LoggerFactory.getLogger(SendController.class);
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
@Resource(name = "SendService")
private SendService sendService;
@RequestMapping("/cmm/sendAt/smsSendAjax.do")
public ModelAndView atSendAjax( SendSmsVO sendSmsVO ) throws Exception {
ModelAndView modelAndView = new ModelAndView();
if(StringUtil.isEmpty(sendSmsVO.getSmsContent())) {
sendSmsVO.setSmsContent("");
}
String msgType = msgType(sendSmsVO.getSmsContent());
sendService.sendSms(sendSmsVO.getTo(), "지식재산보호원", sendSmsVO.getSmsContent(), msgType);
return modelAndView;
}
@RequestMapping("/cmm/sendAt/smsSend.do")
public String smsSend() throws Exception {
return "ve/cmm/sendAt/SmsSend";
}
private String msgType( String content ) throws UnsupportedEncodingException {
// EUC-KR 기준 바이트 길이 계산
int byteLength = content.getBytes("EUC-KR").length;
// SMS/LMS 판별
String msgType = byteLength > 90 ? "LMS" : "SMS";
return msgType;
}
}

View File

@ -0,0 +1,177 @@
package kcc.ve.cmm.sendAt;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@Component
public class SendScheduler {
@Resource(name = "SendService")
private SendService sendService;
@Resource(name = "egovCryptoUtil")
private EgovCryptoUtil egovCryptoUtil;
@Value("${Globals.prod.islocal}")
private String isLocal;
private static final Logger LOGGER = LoggerFactory.getLogger(SendScheduler.class);
/**
* 매일 새벽 1시에 실행
* cron = "0 0 1 * * ?" 요일
*/
@Scheduled(cron = "0 0 9 * * ?")
public void sevenDaybeforeAt() {
// svr 일때만 실행
if(!"real".equals(isLocal)){
LOGGER.info("[sevenDaybeforeAt] Skipped - Globals.prod.islocal=" + isLocal);
return;
}
try {
List<VEPrcsDetailVO> targetList = sendService.select7DaybeforeAt(7);
targetList.stream().forEach(t ->
{
if(StringUtils.isNotEmpty(t.getPhone())){
String[] phone = t.getPhone().split(",");
Arrays.stream(phone).forEach( b ->
{
String to = egovCryptoUtil.decrypt(egovCryptoUtil.decrypt(b));
if(StringUtils.isNotEmpty(t.getPrvtMemoCn())){
Map<String, String> chihwan = getSevenDaybeforeAtChihwanMap(t);
try {
sendService.sendAt(to, "TEMPLATE_EDU_SUBMIT", chihwan);
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
});
}
});
} catch(Exception e) {
throw new RuntimeException(e);
}
}
@Scheduled(cron = "0 1 9 * * ?")
public void oneDaybeforeAt() {
// svr 일때만 실행
if(!"real".equals(isLocal)){
LOGGER.info("[sevenDaybeforeAt] Skipped - Globals.prod.islocal=" + isLocal);
return;
}
try {
List<VEPrcsDetailVO> targetList = sendService.select7DaybeforeAt(1);
targetList.stream().forEach(t ->
{
if(StringUtils.isNotEmpty(t.getPhone())){
String[] phone = t.getPhone().split(",");
Arrays.stream(phone).forEach( b ->
{
String to = egovCryptoUtil.decrypt(egovCryptoUtil.decrypt(b));
if(StringUtils.isNotEmpty(t.getPrvtMemoCn())){
Map<String, String> chihwan = getOneDaybeforeAtChihwanMap(t);
try {
sendService.sendAt(to, "TEMPLATE_EDU_SUBMIT", chihwan);
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
});
}
});
} catch(Exception e) {
throw new RuntimeException(e);
}
}
private static Map<String, String> getSevenDaybeforeAtChihwanMap( VEPrcsDetailVO t ) {
String[] prvtMemoCn = t.getPrvtMemoCn().split(Pattern.quote("|"));
String content = "";
String eduDay = "";
String eduRegDay = "";
String eduPlace = "";
if(VeConstants.LCTR_DIV_CD_60.equals(t.getLctrDivCd())){
content = "귀하의 상표권 교육조건부 기소유예 교육 안내입니다.";
}else if(VeConstants.LCTR_DIV_CD_70.equals(t.getLctrDivCd())){
content = "귀하의 부정경쟁행위 시정명령 교육 안내입니다.";
}else if(VeConstants.LCTR_DIV_CD_80.equals(t.getLctrDivCd())){
content = "귀하의 상표권 침해・부정경쟁행위 예방 교육 안내입니다.";
}else{
content = "귀하의 교육 안내입니다.";
}
if(prvtMemoCn.length > 0){
eduDay = prvtMemoCn[0];
eduRegDay = prvtMemoCn[1];
eduPlace = prvtMemoCn[2];
}
Map<String, String> chihwan = new HashMap<>();
chihwan.put("content", content);
chihwan.put("eduDay", eduDay);
chihwan.put("eduRegDay", eduRegDay);
chihwan.put("eduPlace", eduPlace);
return chihwan;
}
private static Map<String, String> getOneDaybeforeAtChihwanMap( VEPrcsDetailVO t ) {
String[] prvtMemoCn = t.getPrvtMemoCn().split(Pattern.quote("|"));
String content = "";
String eduDay = "";
String eduRegDay = "";
String eduPlace = "";
LocalDate tomorrow = LocalDate.now().plusDays(1);
String tomorrowStr = tomorrow.format(DateTimeFormatter.ofPattern("M/d"));
if(VeConstants.LCTR_DIV_CD_60.equals(t.getLctrDivCd())){
content = "귀하의 내일(" + tomorrowStr + ") 상표권 교육조건부 기소유예 교육 안내입니다.";
}else if(VeConstants.LCTR_DIV_CD_70.equals(t.getLctrDivCd())){
content = "귀하의 내일(" + tomorrowStr + ") 부정경쟁행위 시정명령 교육 안내입니다.";
}else if(VeConstants.LCTR_DIV_CD_80.equals(t.getLctrDivCd())){
content = "귀하의 내일(" + tomorrowStr + ") 상표권 침해・부정경쟁행위 예방 교육 안내입니다.";
}else{
content = "귀하의 내일(" + tomorrowStr + ") 교육 안내입니다.";
}
if(prvtMemoCn.length > 0){
eduDay = prvtMemoCn[0];
eduRegDay = prvtMemoCn[1];
eduPlace = prvtMemoCn[2];
eduPlace += "\r\n※주차 지원이 불가하오니 대중교통을 이용바랍니다.";
}
Map<String, String> chihwan = new HashMap<>();
chihwan.put("content", content);
chihwan.put("eduDay", eduDay);
chihwan.put("eduRegDay", eduRegDay);
chihwan.put("eduPlace", eduPlace);
return chihwan;
}
}

View File

@ -0,0 +1,52 @@
package kcc.ve.cmm.sendAt;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import java.util.List;
import java.util.Map;
public interface SendService {
/**
* @methodName : sendAt
* @author : JunHo Lee
* @date : 2024.12.09
* @description :
* @param to
* @param templateCode
* @param chihwan
*
* @packageName : kcc.com.snd.service
* @templatecode
* @신청인_접수확인_1 :
* TEMPLATE_APP_JUBSU
* @chihwan : 없음
* @신청인_담당자배정_2 :
* TEMPLATE_APP_BAEJUNG
* @chihwan : "respondent", "caseNo", "team", "examiner", "tel", "email"
* @양당사자_분쟁조정협의회 안건상정 :
* TEMPLATE_BOTH_SANGJUNG
* @chihwan : "caseNo", "cfrnc", "tel", "email"
* @양당사자_출석요구 n차 :
* TEMPLATE_BOTH_CHULSUK
* @chihwan : "caseNo", "nCha"
* @양당사자_통지 :
* TEMPLATE_BOTH_TONGJI
* @chihwan : "caseNo", "cfrnc"
* @신청인_보완요구 n차 :
* TEMPLATE_APP_BOWAN
* @chihwan : "caseNo", "nCha"
*
*/
void sendAt(String to, String templateCode, Map<String, String> chihwan) throws Exception;
Map<String, Object> sendSms(String to, String subject, String smsContent, String type) throws Exception;
SendSmsVO selectSendSet() throws Exception;
void updateSendSet(SendSmsVO sendSmsVO) throws Exception;
public List<VEPrcsDetailVO> select7DaybeforeAt(Integer diffDay) throws Exception;
}

View File

@ -0,0 +1,24 @@
package kcc.ve.cmm.sendAt;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
public class SendSmsVO extends SendAtVO implements Serializable {
private static final long serialVersionUID = 1L;
private String subject;
private String smsContent;
private String atYn;
private String smsYn;
private String emailYn;
}

View File

@ -0,0 +1,35 @@
package kcc.ve.cmm.sendAt.impl;
import kcc.com.cmm.service.impl.EgovComAbstractDAO;
import kcc.ve.cmm.sendAt.SendAtVO;
import kcc.ve.cmm.sendAt.SendSmsVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("sendDAO")
public class SendDAO extends EgovComAbstractDAO {
public SendAtVO selectToken() throws Exception{
return (SendAtVO) select("sendDAO.selectToken");
}
public void updateToken(SendAtVO SendAtVO) throws Exception{
update("sendDAO.updateToken", SendAtVO);
}
public SendSmsVO selectSendSet() throws Exception{
return (SendSmsVO) select("sendDAO.selectSendSet");
}
public void updateSendSet(SendSmsVO sendSmsVO) throws Exception{
update("sendDAO.updateSendSet", sendSmsVO);
}
public List<VEPrcsDetailVO> select7DaybeforeAt(Integer diffDay) throws Exception{
return (List<VEPrcsDetailVO>) list("sendDAO.select7DaybeforeAt", diffDay);
}
}

View File

@ -0,0 +1,548 @@
package kcc.ve.cmm.sendAt.impl;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import kcc.ve.cmm.sendAt.SendAtVO.Content;
import kcc.ve.cmm.sendAt.SendAtVO.Content.At;
import kcc.ve.cmm.sendAt.SendAtVO.Resend;
import kcc.ve.cmm.sendAt.SendAtVO.Recontent;
import kcc.ve.cmm.sendAt.SendAtVO.Recontent.Lms;
import kcc.ve.cmm.sendAt.PpurioGlobalSet;
import kcc.ve.cmm.sendAt.SendAtVO;
import kcc.ve.cmm.sendAt.SendService;
import kcc.ve.cmm.sendAt.SendSmsVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import org.apache.commons.beanutils.BeanUtils;
import org.json.JSONObject;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.text.SimpleDateFormat;
import java.util.*;
@Service("SendService")
public class SendServiceImpl extends EgovAbstractServiceImpl implements SendService {
@Resource(name = "sendDAO")
private SendDAO sendDAO;
@Override
public void sendAt(
String to
, String templateCode
, Map<String, String> chihwan
) throws Exception {
SendAtVO vo = new SendAtVO();
vo = sendDAO.selectToken();
//이전 발급 토큰이 만료되었는지 시간비교
if(timeDiffBefore(vo.getExpired())) {
//토큰 발급
if(this.getPpurioToken(vo)) {
//토큰 갱신
sendDAO.updateToken(vo);
} else {
System.out.println("토큰 갱신 실패");
throw new Exception();
}
}
vo = vo.builder()
.accesstoken(vo.getAccesstoken())
.expired(vo.getExpired())
.refkey("test1234")
.type(vo.getType())
.to(to)
.content(Content.builder()
.at(At.builder()
.templatecode(templateCode)
.build()
)
.build()
)
.chihwan(chihwan)
.build();
this.sendAt(vo);
}
@Override
public Map<String, Object> sendSms(
String to
, String subject
, String smsContent
, String type
) throws Exception {
Boolean success = true;
int successCnt = 0;
SendAtVO vo = new SendAtVO();
vo = sendDAO.selectToken();
//이전 발급 토큰이 만료되었는지 시간비교
if(timeDiffBefore(vo.getExpired())) {
//토큰 발급
if(this.getPpurioToken(vo)) {
//토큰 갱신
sendDAO.updateToken(vo);
} else {
System.out.println("토큰 갱신 실패");
throw new Exception();
}
}
SendSmsVO smsVO = new SendSmsVO();
BeanUtils.copyProperties(smsVO, vo);
smsVO.setSubject(subject);
smsVO.setSmsContent(smsContent);
smsVO.setType(type);
String[] phoneNums = to.split(",");
for(String phone : phoneNums) {
smsVO.setTo(phone);
boolean result = this.sendSmsPrcs(smsVO);
if(result) {
successCnt++;
} else {
success = false;
System.out.println("문자 발송 실패: " + phone);
}
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("success", success);
resultMap.put("successCnt", successCnt);
return resultMap;
}
@Override
public SendSmsVO selectSendSet() throws Exception {
return sendDAO.selectSendSet();
}
@Override
public void updateSendSet( SendSmsVO sendSmsVO ) throws Exception {
sendDAO.updateSendSet(sendSmsVO);
}
@Override
public List<VEPrcsDetailVO> select7DaybeforeAt(Integer diffDay) throws Exception{
return sendDAO.select7DaybeforeAt(diffDay);
}
/**
* @param str
* @return :
* !str이 현재 시간보다 이전이면 true
* !str이 현재 시간보다 이후이면 false
* @methodName : timeDiffBefore
* @author : JunHo Lee
* @date : 2024.12.09
* @description :
*/
private Boolean timeDiffBefore( String str ) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date diffDate = sdf.parse(str);
Date currentDate = new Date();
if(diffDate.before(currentDate)) {
return true;
} else {
return false;
}
} catch(Exception e) {
return false;
}
}
public static String sendAt( SendAtVO sendAtVO ) {
StringBuffer result = new StringBuffer();
String input = null;
PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet();
try {
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
if(!ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) {
TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted( X509Certificate[] chain, String authType ) {
}
public void checkServerTrusted( X509Certificate[] chain, String authType ) {
}
} };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
URL url = new URL(ppurioGlobalSet.getHost() + "/v3/message");
/** Connection 설정 **/
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept-Charset", "UTF-8");
connection.addRequestProperty("Authorization", "Bearer " + sendAtVO.getAccesstoken());
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(15000);
/** Request **/
At at = sendAtVO.getContent().getAt();
at = messageSet(at, sendAtVO.getChihwan());
sendAtVO = sendAtVO.builder()
.account(ppurioGlobalSet.getId())
.refkey(sendAtVO.getRefkey())
.type("at")
.from(ppurioGlobalSet.getFrom())
.to(sendAtVO.getTo())
.content(Content.builder()
.at(At.builder()
.senderkey(ppurioGlobalSet.getSenderKey())
.templatecode(at.getTemplatecode())
.message(at.getMessage())
.build()
)
.build())
.resend(Resend.builder()
.first("lms")
.build())
.recontent(Recontent.builder()
.lms(Lms.builder()
.message(at.getMessage())
.build())
.build())
.build();
// Request body 전송
try(OutputStream os = connection.getOutputStream()) {
os.write(sendAtVO.toJson().getBytes("UTF-8"));
os.flush();
}
// 서버 응답 처리
int responseCode = connection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK) {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
while((input = reader.readLine()) != null) {
result.append(input);
}
}
} else {
// 오류 응답 처리
try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) {
StringBuilder errorResponse = new StringBuilder();
while((input = reader.readLine()) != null) {
errorResponse.append(input);
}
System.out.println("Error Response: " + errorResponse.toString());
return "Error: " + errorResponse.toString();
}
}
connection.disconnect();
System.out.println("Response : " + result.toString());
JSONObject jObject = new JSONObject(result.toString());
// status = jObject.getString("description");
} catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
// return status;
}
public static Boolean sendSmsPrcs( SendSmsVO sendSmsVO ) {
Boolean success = true;
StringBuffer result = new StringBuffer();
String input = null;
PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet();
try {
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
if(!ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) {
TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted( X509Certificate[] chain, String authType ) {
}
public void checkServerTrusted( X509Certificate[] chain, String authType ) {
}
} };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
URL url = new URL(ppurioGlobalSet.getHost() + "/v3/message");
/** Connection 설정 **/
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept-Charset", "UTF-8");
connection.addRequestProperty("Authorization", "Bearer " + sendSmsVO.getAccesstoken());
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(15000);
/*SMS LMS 구분처리*/
JSONObject sms = new JSONObject();
sms.put("message", sendSmsVO.getSmsContent());
if("LMS".equals(sendSmsVO.getType())) {
sms.put("subject", sendSmsVO.getSubject());
}
JSONObject content = new JSONObject();
if("SMS".equals(sendSmsVO.getType())) {
content.put("sms", sms);
} else {
content.put("lms", sms);
}
JSONObject json = new JSONObject();
json.put("account", ppurioGlobalSet.getId());
json.put("type", sendSmsVO.getType().toLowerCase());
json.put("from", ppurioGlobalSet.getFrom());
json.put("to", sendSmsVO.getTo());
json.put("content", content);
json.put("refkey", "test1234");
String body = json.toString();
// Request body 전송
try(OutputStream os = connection.getOutputStream()) {
os.write(body.getBytes("UTF-8"));
os.flush();
}
// 서버 응답 처리
int responseCode = connection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK) {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
while((input = reader.readLine()) != null) {
result.append(input);
}
}
} else {
// 오류 응답 처리
try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) {
StringBuilder errorResponse = new StringBuilder();
while((input = reader.readLine()) != null) {
errorResponse.append(input);
}
System.out.println("Error Response: " + errorResponse.toString());
success = false;
//return "Error: " + errorResponse.toString();
}
}
connection.disconnect();
System.out.println("Response : " + result.toString());
JSONObject jObject = new JSONObject(result.toString());
// status = jObject.getString("description");
} catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
success = false;
} catch(KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
success = false;
} catch(NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
success = false;
}
return success;
// return status;
}
public static Boolean getPpurioToken( SendAtVO sendAtVO ) {
StringBuffer result = new StringBuffer();
String input = null;
PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet();
try {
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
if(!ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) {
TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted( X509Certificate[] chain, String authType ) {
}
public void checkServerTrusted( X509Certificate[] chain, String authType ) {
}
} };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
URL url = new URL(ppurioGlobalSet.getHost() + "/v1/token");
/** Connection 설정 **/
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept-Charset", "UTF-8");
//Base64 인코딩
String idpw = ppurioGlobalSet.getId() + ":" + ppurioGlobalSet.getPw();
String authData = Base64.getEncoder().encodeToString(idpw.getBytes());
connection.addRequestProperty("Authorization", "Basic " + authData);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(15000);
/** Request **/
OutputStream os = connection.getOutputStream();
os.flush();
/** Response **/
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
while((input = in.readLine()) != null) {
result.append(input);
}
connection.disconnect();
if(result.length() > 0) {
JSONObject jObject = new JSONObject(result.toString());
if(
jObject.has("accesstoken")
&& !jObject.isNull("accesstoken")
&& jObject.has("type")
&& !jObject.isNull("type")
&& jObject.has("expired")
&& !jObject.isNull("expired")
) {
sendAtVO.setAccesstoken(jObject.getString("accesstoken"));
sendAtVO.setType(jObject.getString("type"));
sendAtVO.setExpired(jObject.getString("expired"));
} else {
System.out.println("response data not found or is null");
return false;
}
} else {
System.out.println("Empty response");
return false;
}
} catch(IOException e) {
System.out.println(e.getMessage());
return false;
} catch(KeyManagementException e) {
System.out.println(e.getMessage());
return false;
} catch(NoSuchAlgorithmException e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
private static At messageSet(
At at,
Map<String, String> chihwan
) {
String content = "";
Map<String, String[]> requiredPlaceholders = new HashMap<>();
switch(at.getTemplatecode()) {
case "TEMPLATE_EDU_SUBMIT": // 교육신청
at.setTemplatecode("bizp_2025112512494050432369880");
content =
"[한국지식재산보호원]\r\n"
+ "#{content}\r\n"
+ "\r\n"
+ "--교육 일정 안내--\r\n"
+ "1.일시 : #{eduDay}\r\n"
+ "#{eduRegDay}\r\n"
+ "※시간 엄수! 지각 시 교육등록이 불가할 수 있으니 시간을 꼭 지켜주시기 바랍니다.\r\n"
+ "\r\n"
+ "2.장소 : #{eduPlace}\r\n"
+ "\r\n"
+ "3.준비물 : 필기구, 실물신분증\r\n"
+ "\r\n"
+ "문의처:1670-1271";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{ "content", "eduDay", "eduRegDay", "eduPlace" });
break;
case "TEMPLATE_CERT_NO": // 교육신청
at.setTemplatecode("bizp_2025120212451011178763650");
content =
"[한국지식재산보호원]\r\n"
+ "전송된 인증번호를 입력해 주세요.\r\n"
+ "\r\n"
+ "인증번호 : #{certNo}";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{ "certNo"});
break;
}
String[] placeholders = requiredPlaceholders.get(at.getTemplatecode());
if(placeholders != null) {
for(String placeholder : placeholders) {
String value = chihwan.get(placeholder);
if(value == null || value.isEmpty()) {
throw new IllegalArgumentException(placeholder + " 값이 없습니다.");
}
content = content.replace("#{" + placeholder + "}", value);
}
}
at.setMessage(content);
return at;
}
}

View File

@ -103,12 +103,16 @@ public interface VEEduMIXService {
void updateEduStateCd(VEEduAplctVO vEEduAplctVO);
void updateCmdEduStateCd(VEEduAplctVO vEEduAplctVO);
void updateAplctEmail(VEEduAplctVO vEEduAplctVO);
List<VEEduAplctVO> selectTrgtList(VEEduAplctVO paramVO);
List<VEEduAplctVO> selectTrgtList4Cmplt(VEEduAplctVO paramVO);
List<VEEduAplctVO> selectCmdTrgtList4Cmplt(VEEduAplctVO paramVO);
//저작권 체험교실 이력 과정 목록
List<VEEduAplctVO> selectExprnHstryPagingList(VEEduAplctVO paramVO) throws Exception;
@ -130,4 +134,6 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception;
void updateCnclStatus(VEEduAplctVO vEEduAplctVO);
List<VEEduAplctVO> selectCrtfcMngList( VEEduAplctVO paramVO );
}

View File

@ -256,9 +256,17 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTrgtList4Cmplt", paramVO);
}
public List<VEEduAplctVO> selectCmdTrgtList4Cmplt(VEEduAplctVO paramVO) {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCmdTrgtList4Cmplt", paramVO);
}
public void updateEduStateCd(VEEduAplctVO paramVO) {
update("VEEduMIXDAO.updateEduStateCd", paramVO);
}
public void updateCmdEduStateCd(VEEduAplctVO paramVO) {
update("VEEduMIXDAO.updateCmdEduStateCd", paramVO);
}
public void updateAplctEmail(VEEduAplctVO paramVO) {
update("VEEduMIXDAO.updateAplctEmail", paramVO);
@ -314,4 +322,8 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnRsltFileDownList", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectCrtfcMngList(VEEduAplctVO paramVO) {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCrtfcMngList", paramVO);
}
}

View File

@ -222,11 +222,21 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public List<VEEduAplctVO> selectTrgtList4Cmplt(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectTrgtList4Cmplt(paramVO);
}
public List<VEEduAplctVO> selectCmdTrgtList4Cmplt(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectCmdTrgtList4Cmplt(paramVO);
}
@Override
public void updateEduStateCd(VEEduAplctVO paramVO) {
vEEduMIXDAO.updateEduStateCd(paramVO);
}
@Override
public void updateCmdEduStateCd(VEEduAplctVO paramVO) {
vEEduMIXDAO.updateCmdEduStateCd(paramVO);
}
@Override
@ -282,5 +292,10 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public void updateCnclStatus(VEEduAplctVO paramVO) {
vEEduMIXDAO.updateCnclStatus(paramVO);
}
}
@Override
public List<VEEduAplctVO> selectCrtfcMngList( VEEduAplctVO paramVO ) {
return vEEduMIXDAO.selectCrtfcMngList(paramVO);
}
}

View File

@ -225,6 +225,139 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable {
private String actvtPeriod;
//지적재산권 컬럼 추가
private String carer; //경력
private String yearCnt; //1년간배정횟수
private String repQf; //대표자격
public String getRepQf() {
return repQf;
}
public void setRepQf(String repQf) {
this.repQf = repQf;
}
public String getSubQf() {
return subQf;
}
public void setSubQf(String subQf) {
this.subQf = subQf;
}
public String getWorkArea() {
return workArea;
}
public void setWorkArea(String workArea) {
this.workArea = workArea;
}
public String getLctAvlArea1() {
return lctAvlArea1;
}
public void setLctAvlArea1(String lctAvlArea1) {
this.lctAvlArea1 = lctAvlArea1;
}
public String getLctAvlArea2() {
return lctAvlArea2;
}
public void setLctAvlArea2(String lctAvlArea2) {
this.lctAvlArea2 = lctAvlArea2;
}
public String getLctAvlArea3() {
return lctAvlArea3;
}
public void setLctAvlArea3(String lctAvlArea3) {
this.lctAvlArea3 = lctAvlArea3;
}
public String getLctAvlArea4() {
return lctAvlArea4;
}
public void setLctAvlArea4(String lctAvlArea4) {
this.lctAvlArea4 = lctAvlArea4;
}
public String getLctAvlArea5() {
return lctAvlArea5;
}
public void setLctAvlArea5(String lctAvlArea5) {
this.lctAvlArea5 = lctAvlArea5;
}
public String getLctAvlArea6() {
return lctAvlArea6;
}
public void setLctAvlArea6(String lctAvlArea6) {
this.lctAvlArea6 = lctAvlArea6;
}
public String getAvlLctCntnt1() {
return avlLctCntnt1;
}
public void setAvlLctCntnt1(String avlLctCntnt1) {
this.avlLctCntnt1 = avlLctCntnt1;
}
public String getAvlLctCntnt2() {
return avlLctCntnt2;
}
public void setAvlLctCntnt2(String avlLctCntnt2) {
this.avlLctCntnt2 = avlLctCntnt2;
}
public String getAvlLctCntnt3() {
return avlLctCntnt3;
}
public void setAvlLctCntnt3(String avlLctCntnt3) {
this.avlLctCntnt3 = avlLctCntnt3;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getRcrtCtgr() {
return rcrtCtgr;
}
public void setRcrtCtgr(String rcrtCtgr) {
this.rcrtCtgr = rcrtCtgr;
}
public String getApntDt() {
return apntDt;
}
public void setApntDt(String apntDt) {
this.apntDt = apntDt;
}
public String getActvDt() {
return actvDt;
}
public void setActvDt(String actvDt) {
this.actvDt = actvDt;
}
public String getOvrlSrvy() {
return ovrlSrvy;
}
public void setOvrlSrvy(String ovrlSrvy) {
this.ovrlSrvy = ovrlSrvy;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
private String subQf; //세부자격
private String workArea; //근무지역
private String lctAvlArea1; //강의가능지역1-수도권Y/N
private String lctAvlArea2; //강의가능지역2-강원도Y/N
private String lctAvlArea3; //강의가능지역3-충청도Y/N
private String lctAvlArea4; //강의가능지역4-전라도Y/N
private String lctAvlArea5; //강의가능지역5-경상도Y/N
private String lctAvlArea6; //강의가능지역6-제주도Y/N
private String avlLctCntnt1; //강의가능내용1-상표권교육(1)Y/N
private String avlLctCntnt2; //강의가능내용2-상표권교육(2)Y/N
private String avlLctCntnt3; //강의가능내용3-부정경쟁행위교육Y/N
private String gender; //성별-M/F
private String rcrtCtgr; //모집구분
private String apntDt; //위촉일
private String actvDt; //활동일
private String ovrlSrvy; //종합 만족도 조사
public String getDesc1() {
return desc1;
}
@ -1133,5 +1266,17 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable {
public void setActvtPeriod(String actvtPeriod) {
this.actvtPeriod = actvtPeriod;
}
public String getCarer() {
return carer;
}
public void setCarer(String carer) {
this.carer = carer;
}
public String getYearCnt() {
return yearCnt;
}
public void setYearCnt(String yearCnt) {
this.yearCnt = yearCnt;
}
}

View File

@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.impl.VEPrcsAplctPrdDAO;
public interface VEPrcsAplctPrdService {
@ -95,4 +96,8 @@ public interface VEPrcsAplctPrdService {
//신청목록-실무역량강화, 기소유예 new -설문조사, 이수증 처리용
List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO);
public VEPrcsDetailVO selectCompleteDocDetail(VEPrcsDetailVO vEPrcsDetailVO);
public List<VEPrcsDetailVO> selectMainContent() throws Exception ;
}

View File

@ -52,6 +52,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String eduAplctOrd; //교육신청순번
private List<String> eduAplctOrdList; //교육신청순번
private List<String> sspnIdtmtTrgtOrdList;
private List<String> cmdTrgtInfoOrdList;
private String eduChasiOrd; //교육차시순번
private String cnt;
@ -222,7 +223,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
* 라인 배경컬러
*/
private String color;
/*
private String ddlnCd; //교육과정상태 - VEA004
private String aprvlCd; //교육신청상태 - VE0003
@ -1120,5 +1121,11 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setDdlnCdNm(String ddlnCdNm) {
this.ddlnCdNm = ddlnCdNm;
}
public List<String> getCmdTrgtInfoOrdList() {
return cmdTrgtInfoOrdList;
}
public void setCmdTrgtInfoOrdList(List<String> cmdTrgtInfoOrdList) {
this.cmdTrgtInfoOrdList = cmdTrgtInfoOrdList;
}
}

View File

@ -174,4 +174,13 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.findByAprvlQustnrAllList", vEPrcsDetailVO);
}
public VEPrcsDetailVO selectCompleteDocDetail(VEPrcsDetailVO vEPrcsDetailVO) {
return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectCompleteDocDetail", vEPrcsDetailVO);
}
public List<VEPrcsDetailVO> selectMainContent() throws Exception {
List<VEPrcsDetailVO> tlist = (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectMainContent");
return tlist;
}
}

View File

@ -191,6 +191,7 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
String s_reqNo = vEPrcsDetailVO.getReqNo();
String lctrDivCd = vEPrcsDetailVO.getLctrDivCd(); //60-기소유예 70-시정명령 80-예방교육
if ("2-1".equals(s_reqNo) //사용자 신청 취소
|| "3-1".equals(s_reqNo) //관리자 승인 취소
@ -207,7 +208,12 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
vEEduAplctDAO.delete(vEEduAplctVO);
vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
if("60".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if("70".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateCmdIdmtTrgtCancelNew(vEPrcsDetailVO);
}
}else if ("4".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육신청후 관리자가 반려 처리
@ -222,7 +228,12 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
if("60".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if("70".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateCmdIdmtTrgtCancelNew(vEPrcsDetailVO);
}
}else if ("6".equals(vEPrcsDetailVO.getReqNo())) {
//교육확정
@ -250,7 +261,12 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
if("60".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if("70".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateCmdIdmtTrgtCancelNew(vEPrcsDetailVO);
}
}else if ("6-2".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육 취소 신청 승인(취소 승인-교육종료)
@ -266,8 +282,12 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
//vEEduAplctDAO.delete(vEEduAplctVO);
//vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
if("60".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if("70".equals(lctrDivCd)) {
vEPrcsMIXDAO.updateCmdIdmtTrgtCancelNew(vEPrcsDetailVO);
}
}else if ("6-3".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육 취소 신청 반려(취소 반려-교육계속)
@ -389,5 +409,15 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
return vEPrcsAplctPrdDAO.findByAprvlQustnrAllList(vEPrcsDetailVO);
}
@Override
public VEPrcsDetailVO selectCompleteDocDetail(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.selectCompleteDocDetail(vEPrcsDetailVO);
}
@Override
public List<VEPrcsDetailVO> selectMainContent() throws Exception {
return vEPrcsAplctPrdDAO.selectMainContent();
}
}

View File

@ -71,4 +71,8 @@ public class VEPrcsMIXDAO extends EgovAbstractDAO {
public int updateSspnIdmtTrgtCancelNew(VEPrcsDetailVO paramVO) throws Exception {
return update("VEPrcsDAO.updateSspnIdmtTrgtCancelNew", paramVO);
}
public int updateCmdIdmtTrgtCancelNew(VEPrcsDetailVO paramVO) throws Exception {
return update("VEPrcsDAO.updateCmdIdmtTrgtCancelNew", paramVO);
}
}

View File

@ -47,6 +47,7 @@ public class CmdTrgtMngVO extends ComDefaultVO implements Serializable {
private List<String> searchSelStatusList;
private List<String> sspnIdtmtTrgtOrdList;
private List<String> cmdTrgtInfoOrdList;
private String eduAplctOrd; //신청한 교육 순번
private String rmrks; //비고
@ -72,6 +73,8 @@ public class CmdTrgtMngVO extends ComDefaultVO implements Serializable {
//private String cmptntAthrtNm; // 대상상태코드 VEA002
private String sexNm; // 성별명
private String orderByQuery;
public String getTitle() {
return title;
@ -362,5 +365,17 @@ public class CmdTrgtMngVO extends ComDefaultVO implements Serializable {
public void setSexNm(String sexNm) {
this.sexNm = sexNm;
}
public List<String> getCmdTrgtInfoOrdList() {
return cmdTrgtInfoOrdList;
}
public void setCmdTrgtInfoOrdList(List<String> cmdTrgtInfoOrdList) {
this.cmdTrgtInfoOrdList = cmdTrgtInfoOrdList;
}
public String getOrderByQuery() {
return orderByQuery;
}
public void setOrderByQuery(String orderByQuery) {
this.orderByQuery = orderByQuery;
}
}

View File

@ -8,6 +8,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import kcc.com.cmm.LoginVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.ve.cmm.VeConstants;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -665,43 +668,51 @@ public class CmdInstrMngController {
*/
@RequestMapping("/kccadr/oprtn/cmdTrgt/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
@ModelAttribute("vEEduAplctVO") VEEduAplctVO paramVO
, 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);
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println();
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(paramVO.getPageIndex());
paginationInfo.setRecordCountPerPage(paramVO.getPageUnit());
paginationInfo.setPageSize(paramVO.getPageSize());
paramVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
paramVO.setLastIndex(paginationInfo.getLastRecordIndex());
paramVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(paramVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
paramVO.setSearchSortCnd("a.frst_regist_pnttm");
paramVO.setSearchSortOrd("DESC");
}
//과정 신청자 정보 가져오기
//해당 과정을 제출한 사용자 정보를 가져온다.
paramVO.setSbmtYn("Y");
paramVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_70); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCrtfcMngList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("paginationInfo", paginationInfo);
// 검색어 복호화
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/cmdTrgt/instrActvtHstrySignAndCmpltCrtfcMngList";
}
@ -852,7 +863,9 @@ public class CmdInstrMngController {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no1(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -928,8 +941,9 @@ public class CmdInstrMngController {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no2(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1006,8 +1020,9 @@ public class CmdInstrMngController {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no3(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1085,8 +1100,9 @@ public class CmdInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no4(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1162,8 +1178,9 @@ public class CmdInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no5(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no5(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no5(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1243,7 +1260,9 @@ public class CmdInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
//vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no7(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1328,7 +1347,9 @@ public class CmdInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
//List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_cmdTrgt_no6(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);

View File

@ -1319,7 +1319,7 @@ public class CmdPrcsInfoMngController {
paramVO.setSiteId(LCTR_DIV_CD); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소, 70-시정명령
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectTrgtList4Cmplt(paramVO);
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCmdTrgtList4Cmplt(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
@ -1483,7 +1483,7 @@ public class CmdPrcsInfoMngController {
// 기소유예 대상자 상태값 udpate
vEEduMIXService.updateEduStateCd(vEEduAplctVO);
vEEduMIXService.updateCmdEduStateCd(vEEduAplctVO);
// 알림 영역
@ -2404,8 +2404,9 @@ public class CmdPrcsInfoMngController {
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setChrgNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone()));
vEEduAplctVO.setPhone(vEPrcsDetailVO.getPhone());
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
@ -2567,7 +2568,7 @@ public class CmdPrcsInfoMngController {
//VEPrcsDetailVO info = vEPrcsAplctPrdService.findByCnclInfo(vEPrcsDetailVO);
System.out.println("=====================");
System.out.println("===================== :: "+ vEPrcsDetailVO.getSspnIdtmtTrgtOrdList().toString());
System.out.println("===================== :: "+ vEPrcsDetailVO.getCmdTrgtInfoOrdList().toString());
//파일 정보 가져오기
// FileVO fileVO = new FileVO();
@ -2814,6 +2815,8 @@ 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

@ -220,6 +220,13 @@ public class CmdTrgtMngController {
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
//검색 기본 조건 설정
if (cndtnTrgtInfoMngVO.getSearchEduStateCd() == null) {
cndtnTrgtInfoMngVO.setSearchEduStateCd("10");
}
//검색 조회
String selectCondition = "";
@ -246,6 +253,21 @@ public class CmdTrgtMngController {
cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
//정렬
System.out.println("cndtnTrgtInfoMngVO.getSearchSortCnd()");
System.out.println(cndtnTrgtInfoMngVO.getSearchSortCnd());
System.out.println(cndtnTrgtInfoMngVO.getSearchSortCnd());
System.out.println(cndtnTrgtInfoMngVO.getOrderByQuery());
System.out.println(cndtnTrgtInfoMngVO.getOrderByQuery());
if("prcs_ord".equals(cndtnTrgtInfoMngVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
cndtnTrgtInfoMngVO.setOrderByQuery("");
}else{
cndtnTrgtInfoMngVO.setOrderByQuery(cndtnTrgtInfoMngVO.getSearchSortCnd() + " " +cndtnTrgtInfoMngVO.getSearchSortOrd());
}
// List<CndtnTrgtInfoMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
List<CmdTrgtMngVO> cndtnTrgtInfoMngVOList = null;
try {
@ -299,11 +321,11 @@ public class CmdTrgtMngController {
// 대괄호 제거
List<String> resultList = new ArrayList<>();
for (String list : cndtnTrgtMngVO.getSspnIdtmtTrgtOrdList()) {
for (String list : cndtnTrgtMngVO.getCmdTrgtInfoOrdList()) {
resultList.add(list.replace("[","").replace("]","")); // 내부 리스트의 모든 요소를 resultList에 추가
}
cndtnTrgtMngVO.setSspnIdtmtTrgtOrdList(resultList);
cndtnTrgtMngVO.setCmdTrgtInfoOrdList(resultList);
try {
cmdTrgtInfoMngService.updateEduStateCdAndReqStateCdAjax(cndtnTrgtMngVO);
@ -381,7 +403,7 @@ public class CmdTrgtMngController {
return userWork;
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngList.do")
@RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngList_old.do")
public String trgtMngList(
@ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
@ -704,85 +726,96 @@ public class CmdTrgtMngController {
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 로그인 정보 가져오기
try {
//로그인 처리====================================
//로그인 정보 가져오기
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 로그인 정보 가져오기
//step2.파일 처리====================================
//파일 정상 처리 여부와 첨부 파일 정보
//String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO);
//파일 제한 수량 가져오기, 없으면 기본값 사용
int i_file_limit = checkFileUtil.getLimitCount(request); // file count
int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
String s_file_exts = checkFileUtil.getS_exts(); // file exts
//step2.파일 처리====================================
//파일 정상 처리 여부와 첨부 파일 정보
//String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO);
//파일 제한 수량 가져오기, 없으면 기본값 사용
int i_file_limit = checkFileUtil.getLimitCount(request); // file count
int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
String s_file_exts = checkFileUtil.getS_exts(); // file exts
String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert(
multiRequest, modelAndView
, "APLCT_" //file_name_prefix
, s_file_exts
, i_limit_size
, i_file_limit
); //EXT, MB size and ea
System.out.println("s_scholSealAtchFileId");
System.out.println(s_scholSealAtchFileId);
System.out.println(s_scholSealAtchFileId);
if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView;
// 사건번호
// 형식 : - 예시로 A-서울중앙-100-23-1 경우
// A (성인/미성년 구분), 서울중앙, 100, 23, 1
// 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
try {
if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) {
cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth());
}
System.out.println(cndtnTrgtInfoMngVO.getdBirth());
cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO));
cndtnTrgtInfoMngVO.setCmdTrgtInfoOrd(trgtOrdService.getNextStringId());
cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert(
multiRequest, modelAndView
, "APLCT_" //file_name_prefix
, s_file_exts
, i_limit_size
, i_file_limit
); //EXT, MB size and ea
if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView;
//암호화
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO);
cmdTrgtInfoMngService.insert(cndtnTrgtInfoMngVO);
// 병합을 하기위한 key
modelAndView.addObject("cmdTrgtInfoOrd", cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd());
modelAndView.addObject("result", "success");
//첨부파일 이름 변경하기
List<FileVO> result = new ArrayList<>();
FileVO fileCheck = new FileVO();
fileCheck.setAtchFileId(s_scholSealAtchFileId);
result = fileService.selectFileInfs(fileCheck);
for(int i=0; i < result.size(); i++) {
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO);
String orignlFileNm = cndtnTrgtInfoMngVO.getTrgtNm() + "_"+cndtnTrgtInfoMngVO.getDBirth()+"_"+cndtnTrgtInfoMngVO.getCmptntAthrtNm();
orignlFileNm = orignlFileNm+"_"+(i+1);
orignlFileNm = orignlFileNm +"."+ result.get(i).getFileExtsn();
result.get(i).setOrignlFileNm(orignlFileNm);
fileService.updateFileName(result.get(i));
}
}catch(Exception ex) {
ex.printStackTrace();
modelAndView.addObject("result", "fail");
}
}catch(Exception ex) {
ex.printStackTrace();
}
// 사건번호
// 형식 : - 예시로 A-서울중앙-100-23-1 경우
// A (성인/미성년 구분), 서울중앙, 100, 23, 1
// 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
try {
if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) {
cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth());
}
System.out.println(cndtnTrgtInfoMngVO.getdBirth());
cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO));
cndtnTrgtInfoMngVO.setCmdTrgtInfoOrd(trgtOrdService.getNextStringId());
cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
//암호화
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO);
cmdTrgtInfoMngService.insert(cndtnTrgtInfoMngVO);
// 병합을 하기위한 key
modelAndView.addObject("cmdTrgtInfoOrd", cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd());
modelAndView.addObject("result", "success");
//첨부파일 이름 변경하기
List<FileVO> result = new ArrayList<>();
FileVO fileCheck = new FileVO();
fileCheck.setAtchFileId(s_scholSealAtchFileId);
result = fileService.selectFileInfs(fileCheck);
for(int i=0; i < result.size(); i++) {
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO);
String orignlFileNm = cndtnTrgtInfoMngVO.getTrgtNm() + "_"+cndtnTrgtInfoMngVO.getDBirth()+"_"+cndtnTrgtInfoMngVO.getCmptntAthrtNm();
orignlFileNm = orignlFileNm+"_"+(i+1);
orignlFileNm = orignlFileNm +"."+ result.get(i).getFileExtsn();
result.get(i).setOrignlFileNm(orignlFileNm);
fileService.updateFileName(result.get(i));
}
}catch(Exception ex) {
ex.printStackTrace();
modelAndView.addObject("result", "fail");
}
return modelAndView;

View File

@ -72,6 +72,9 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
//private String cmptntAthrtNm; // 대상상태코드 VEA002
private String sexNm; // 성별명
private String orderByQuery;
private String userWork;
public String getTitle() {
return title;
@ -362,5 +365,17 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
public void setSexNm(String sexNm) {
this.sexNm = sexNm;
}
public String getOrderByQuery() {
return orderByQuery;
}
public void setOrderByQuery(String orderByQuery) {
this.orderByQuery = orderByQuery;
}
public String getUserWork() {
return userWork;
}
public void setUserWork(String userWork) {
this.userWork = userWork;
}
}

View File

@ -191,6 +191,12 @@ public class CndtnTrgtMngController {
, HttpServletRequest request
) throws Exception {
System.out.println("cndtnTrgtInfoMngVO.getSearchSortCnd()");
System.out.println(cndtnTrgtInfoMngVO.getSearchSortCnd());
System.out.println(cndtnTrgtInfoMngVO.getSearchSortCnd());
System.out.println(cndtnTrgtInfoMngVO.getOrderByQuery());
System.out.println(cndtnTrgtInfoMngVO.getOrderByQuery());
//로그인 처리====================================
//로그인 정보 가져오기
// LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
@ -215,6 +221,13 @@ public class CndtnTrgtMngController {
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
//검색 기본 조건 설정
if (cndtnTrgtInfoMngVO.getSearchEduStateCd() == null) {
cndtnTrgtInfoMngVO.setSearchEduStateCd("10");
}
//검색 조회
String selectCondition = "";
@ -238,8 +251,27 @@ public class CndtnTrgtMngController {
selectCondition += " AND a.d_birth ='" + egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordTo()) + "' ";
}
//관할청
if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getUserWork())){
selectCondition += " AND a.cmptnt_athrt ='" + cndtnTrgtInfoMngVO.getUserWork() + "' ";
}
cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
//정렬
System.out.println("cndtnTrgtInfoMngVO.getSearchSortCnd()");
System.out.println(cndtnTrgtInfoMngVO.getSearchSortCnd());
System.out.println(cndtnTrgtInfoMngVO.getSearchSortCnd());
System.out.println(cndtnTrgtInfoMngVO.getOrderByQuery());
System.out.println(cndtnTrgtInfoMngVO.getOrderByQuery());
if("prcs_ord".equals(cndtnTrgtInfoMngVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
cndtnTrgtInfoMngVO.setOrderByQuery("");
}else{
cndtnTrgtInfoMngVO.setOrderByQuery(cndtnTrgtInfoMngVO.getSearchSortCnd() + " " +cndtnTrgtInfoMngVO.getSearchSortOrd());
}
// List<CndtnTrgtInfoMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = null;
@ -253,7 +285,7 @@ public class CndtnTrgtMngController {
//3.pageing step3
paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
model.addAttribute("cndtnTrgtInfoMngVO", cndtnTrgtInfoMngVO);
model.addAttribute("paginationInfo", paginationInfo);
@ -375,7 +407,7 @@ public class CndtnTrgtMngController {
return userWork;
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngList.do")
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngList_old.do")
public String trgtMngList(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model

View File

@ -8,6 +8,10 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import kcc.com.cmm.LoginVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.ve.cmm.VeConstants;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -665,46 +669,55 @@ public class CndtnInstrMngController {
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
@ModelAttribute("vEEduAplctVO") VEEduAplctVO paramVO
, 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()));
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println();
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(paramVO.getPageIndex());
paginationInfo.setRecordCountPerPage(paramVO.getPageUnit());
paginationInfo.setPageSize(paramVO.getPageSize());
paramVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
paramVO.setLastIndex(paginationInfo.getLastRecordIndex());
paramVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(paramVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
paramVO.setSearchSortCnd("a.frst_regist_pnttm");
paramVO.setSearchSortOrd("DESC");
}
//과정 신청자 정보 가져오기
//해당 과정을 제출한 사용자 정보를 가져온다.
paramVO.setSbmtYn("Y");
paramVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCrtfcMngList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("paginationInfo", paginationInfo);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList";
}
/**
* 교육실적통계 화면-개별
*/

View File

@ -1339,7 +1339,6 @@ public class CndtnPrcsInfoMngController {
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
//설문 문항 정보
try {
model = qustnrCommonUtil._qustnrQesItm(
@ -1371,7 +1370,8 @@ public class CndtnPrcsInfoMngController {
model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
*/
try{
//설문조사 결과(?)
try{
model = qustnrCommonUtil._chasiSrvyList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
@ -1387,6 +1387,22 @@ public class CndtnPrcsInfoMngController {
ex.printStackTrace();
}
// 설문조사 문항항목
try{
model = qustnrCommonUtil._chasiSrvyItemList(
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{
@ -2201,6 +2217,7 @@ public class CndtnPrcsInfoMngController {
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
@ -2240,6 +2257,15 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO.setInstrDiv(LCTR_DIV_CD); //20
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
//정렬
if("".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
vEPrcsDetailVO.setOrderByQuery("A.SBMT_PNTTM DESC");
}else{
vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd());
}
List<VEInstrDetailVO> vEInstrDetailVOList = vEPrcsAplctPrdService.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO);
try {
@ -2574,8 +2600,9 @@ public class CndtnPrcsInfoMngController {
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setTrgtNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setChrgNm(vEPrcsDetailVO.getTrgtNm());
vEEduAplctVO.setdBirth(vEPrcsDetailVO.getdBirth());
vEEduAplctVO.setPhone(egovCryptoUtil.encrypt(vEPrcsDetailVO.getPhone()));
vEEduAplctVO.setPhone(vEPrcsDetailVO.getPhone());
vEEduAplctVO.setEmail(vEPrcsDetailVO.getEmail());
String result = "";
@ -2984,6 +3011,8 @@ public class CndtnPrcsInfoMngController {
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//사용 중인 과정만 조회
vEPrcsDetailVO.setUseYn("Y");
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3
@ -3382,8 +3411,8 @@ public class CndtnPrcsInfoMngController {
p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord");
p_vEPrcsDetailVO.setSearchSortOrd("desc");
// //p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord");//
//p_vEPrcsDetailVO.setSearchSortOrd("desc");
}
return p_vEPrcsDetailVO;
@ -3443,8 +3472,9 @@ public class CndtnPrcsInfoMngController {
p_cndtnTrgtInfoMngVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_cndtnTrgtInfoMngVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_cndtnTrgtInfoMngVO.setSearchSortCnd("prcs_ord");
p_cndtnTrgtInfoMngVO.setSearchSortOrd("desc");
//p_cndtnTrgtInfoMngVO.setSearchSortCnd("prcs_ord");
//p_cndtnTrgtInfoMngVO.setSearchSortOrd("desc");
}
return p_cndtnTrgtInfoMngVO;

View File

@ -86,7 +86,7 @@ import kcc.ve.instr.tngrVisitEdu.rsdncInfo.service.VERsdncVO;
@Controller
public class OprtnInstrAdultPrflContoller {
public class OprtnInstrAdultPrflOldContoller {
private static final Logger LOGGER = LoggerFactory.getLogger(InstrPrflController.class);
@ -202,7 +202,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 1.강사등록신청 목록 조회 -
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngList.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngList.do")
public String instrPrflList(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -277,7 +277,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 2. 강사등록신청 등록 화면
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctReg.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctReg.do")
public String instrAplctReg(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -311,7 +311,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 2. 강사등록신청 거주지 팝업
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/popup/instrRsdnePopup.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/popup/instrRsdnePopup.do")
public String instrRsdnePopup(
@ModelAttribute("vERsdncVO") VERsdncVO vERsdncVO
@ -345,7 +345,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 성인대상 강사 등록Ajax -
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegAjax.do")
public ModelAndView instrPrflRegAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
, final MultipartHttpServletRequest multiRequest
@ -402,7 +402,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 2. 강사등록신청 등록 화면 (Excel)
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegExcel.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegExcel.do")
public String instrAplctRegExcel(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -444,7 +444,7 @@ public class OprtnInstrAdultPrflContoller {
*/
@RequestMapping(value=
{
"/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegExcelAjax.do"
"/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegExcelAjax.do"
}
)
public ModelAndView insertAddrAgencyAjax(
@ -471,8 +471,8 @@ public class OprtnInstrAdultPrflContoller {
//필요 쿼리 생성 처리 - 계좌번호만 작성된 파일 처리
String s_split = "\t";
int i_data_column_size = 16;
int i_data_start_row = 0;
int i_data_column_size = 27;
int i_data_start_row = 2;
//1.파일 정상 처리 여부와 첨부 파일 정보
@ -491,6 +491,10 @@ public class OprtnInstrAdultPrflContoller {
sb = checkFileUtil.extractFromExcelFile(multiRequest, sb, 0, i_data_column_size, i_data_start_row);
}
System.out.println("sb.toString()===================================");
System.out.println(sb.toString());
System.out.println(sb.toString());
@ -517,31 +521,60 @@ public class OprtnInstrAdultPrflContoller {
vEInstrDetailVO.setUseYn("Y");
vEInstrDetailVO.setInstrDiv(p_s_instr_div);
vEInstrDetailVO.setInstrNm(s_tmp[3]);
vEInstrDetailVO.setPhone(s_tmp[9]);
vEInstrDetailVO.setEmail(s_tmp[10]);
vEInstrDetailVO.setPost(s_tmp[14]);
vEInstrDetailVO.setAddr(s_tmp[13]);
vEInstrDetailVO.setRmrks(s_tmp[15]);
vEInstrDetailVO.setInstrNm(s_tmp[2]);
vEInstrDetailVO.setPhone(s_tmp[17]);
vEInstrDetailVO.setEmail(s_tmp[18]);
//vEInstrDetailVO.setPost(s_tmp[14]);
vEInstrDetailVO.setAddr(s_tmp[20]);
vEInstrDetailVO.setRmrks(s_tmp[26]);
//vEInstrDetailVO.setAddrDetail(s_tmp[6]);
vEInstrDetailVO.setRsdne(s_tmp[12]);
vEInstrDetailVO.setdBirth(s_tmp[5].replaceAll("[.]", ""));
vEInstrDetailVO.setRsdne(s_tmp[6]);
vEInstrDetailVO.setdBirth(s_tmp[19].replaceAll("[.]", ""));
//vEInstrDetailVO.setFinalSchol(s_tmp[9]);
//vEInstrDetailVO.setMjr(s_tmp[10]);
vEInstrDetailVO.setApptYr(s_tmp[1]);
vEInstrDetailVO.setApptDiv(s_tmp[2].replaceAll("신규", "10").replaceAll("재위촉", "30").replaceAll("위촉", "20"));
vEInstrDetailVO.setBlng(s_tmp[6]);
//vEInstrDetailVO.setApptYr(s_tmp[1]);
//vEInstrDetailVO.setApptDiv(s_tmp[2].replaceAll("신규", "10").replaceAll("재위촉", "30").replaceAll("위촉", "20"));
//vEInstrDetailVO.setBlng(s_tmp[6]);
vEInstrDetailVO.setPstn(s_tmp[7]);
vEInstrDetailVO.setPrfsnFld(s_tmp[8]);
vEInstrDetailVO.setDivCd(s_tmp[4].replaceAll("입문", "10").replaceAll("전문", "20").replaceAll("내부", "30"));
//vEInstrDetailVO.setPstn(s_tmp[7]);
//vEInstrDetailVO.setPrfsnFld(s_tmp[8]);
//vEInstrDetailVO.setDivCd(s_tmp[4].replaceAll("입문", "10").replaceAll("전문", "20").replaceAll("내부", "30"));
vEInstrDetailVO.setRepQf(s_tmp[3]);
vEInstrDetailVO.setSubQf(s_tmp[4]);
vEInstrDetailVO.setWorkArea(s_tmp[5]);
vEInstrDetailVO.setLctAvlArea1(s_tmp[7].equals("")?"Y":"N");
vEInstrDetailVO.setLctAvlArea2(s_tmp[8].equals("")?"Y":"N");
vEInstrDetailVO.setLctAvlArea3(s_tmp[9].equals("")?"Y":"N");
vEInstrDetailVO.setLctAvlArea4(s_tmp[10].equals("")?"Y":"N");
vEInstrDetailVO.setLctAvlArea5(s_tmp[11].equals("")?"Y":"N");
vEInstrDetailVO.setLctAvlArea6(s_tmp[12].equals("")?"Y":"N");
vEInstrDetailVO.setAvlLctCntnt1(s_tmp[13].equals("")?"Y":"N");
vEInstrDetailVO.setAvlLctCntnt2(s_tmp[14].equals("")?"Y":"N");
vEInstrDetailVO.setAvlLctCntnt3(s_tmp[15].equals("")?"Y":"N");
vEInstrDetailVO.setCarer(s_tmp[16]);
vEInstrDetailVO.setGender(s_tmp[21].equals("")?"M":"F");
vEInstrDetailVO.setRcrtCtgr(s_tmp[22]);
vEInstrDetailVO.setApntDt(s_tmp[23]);
vEInstrDetailVO.setActvDt(s_tmp[24]);
vEInstrDetailVO.setOvrlSrvy(s_tmp[25]);
//암호화
System.out.println(vEInstrDetailVO.toString());
//암호화
vEInstrDetailVO = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVO);
System.out.println(vEInstrDetailVO.toString());
System.out.println(vEInstrDetailVO.toString());
System.out.println(vEInstrDetailVO.toString());
//ve_instr 데이터 존재여부 확인 - 이름, 핸드폰으로 해야 .
VEInstrDetailVO vEInstrVO = new VEInstrDetailVO();
@ -645,7 +678,7 @@ public class OprtnInstrAdultPrflContoller {
*/
@RequestMapping(value=
{
"/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegScholExcelAjax.do"
"/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegScholExcelAjax.do"
}
)
public ModelAndView instrAplctRegScholExcelAjax(
@ -817,7 +850,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 2. 강사등록신청 상세 조회
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetail.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetail.do")
public String instrPrflDetial(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -851,7 +884,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 2. 강사 신청 삭제
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetailDeleteAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetailDeleteAjax.do")
public ModelAndView instrAplctMngDetailDeleteAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -902,7 +935,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 3. 강사등록신청 위촉확인 처리
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctApptAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctApptAjax.do")
public ModelAndView instrAplctApptAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -954,7 +987,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 3. 강사등록신청 승인, 반려 처리
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMdfyAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMdfyAjax.do")
public ModelAndView instrPrflMdfyAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1013,7 +1046,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 4. 강사등록신청 반려 처리 팝업
*/
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctCmpnnPopup.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctCmpnnPopup.do")
public String addRpplPop(@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO, ModelMap model) throws Exception {
return "/oprtn/adultVisitEdu/instrAplctCmpnnPopup";
@ -1023,7 +1056,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 5.강사 관리 목록(성인)
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do")
public String instrMngList(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1114,7 +1147,7 @@ public class OprtnInstrAdultPrflContoller {
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/instrInfo/eduAplctExcelDownLoad.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/instrInfo/eduAplctExcelDownLoad.do")
public ModelAndView eduAplctExcelDownLoad(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
, ModelMap model) throws Exception {
@ -1246,7 +1279,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 6. 강사 관리 상세 조회
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngDetail.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngDetail.do")
public String instrMngDetail(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1308,7 +1341,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 6. 강사 관리 상세 조회
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngDetailStng.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngDetailStng.do")
public String instrMngDetailStng(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1352,7 +1385,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 7. 강사 관리 강의설정 팝업
*/
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/instrInfo/instrLctrStngPopup.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrLctrStngPopup.do")
public String instrLctrStngPopup(
@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO
,@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
@ -1402,7 +1435,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 7-1. 강사 관리 강의설정 승인 팝업
*/
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/instrInfo/instrLctrStngConfirmPopup.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrLctrStngConfirmPopup.do")
public String instrLctrStngConfirmPopup(
@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO
,@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
@ -1462,7 +1495,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 7-2.강사 강의설정 승인/반려처리Ajax
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngAprvlConfirmAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngAprvlConfirmAjax.do")
public ModelAndView lctrStngAprvlConfirmAjax(
@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
, final MultipartHttpServletRequest multiRequest
@ -1511,7 +1544,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 7-3.강사 강의설정 반려처리Ajax
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngAprvlRejectAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngAprvlRejectAjax.do")
public ModelAndView lctrStngAprvlRejectAjax(
@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
, final MultipartHttpServletRequest multiRequest
@ -1560,7 +1593,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 7. 강사 관리 강의설정 팝업
*/
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/instrInfo/instrLctrDetailStngPopup.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrLctrDetailStngPopup.do")
public String instrLctrDetailStngPopup(
@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO
,@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
@ -1610,7 +1643,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 1.강사 강의설정 등록Ajax
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngRegAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngRegAjax.do")
public ModelAndView lctrStngRegAjax(
@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
, final MultipartHttpServletRequest multiRequest
@ -1666,7 +1699,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 1.강사 강의설정 수정Ajax
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngMdfyAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/lctrStngMdfyAjax.do")
public ModelAndView lctrStngMdfyAjax(
@ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
, ModelMap model
@ -1718,7 +1751,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 8. 강사 관리 수정요청 팝업
*/
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMdfyRqstPopup.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMdfyRqstPopup.do")
public String instrMdfyRqstPopup(@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO, ModelMap model, HttpServletRequest request) throws Exception {
//로그인 처리====================================
@ -1755,7 +1788,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 8. 강사신청 등록 사진 팝업
*/
@RequestMapping(value = "/ve/oprtn/instr/adultVisitEdu/popup/instrAplctPhotoPopup.do")
@RequestMapping(value = "/web/ve/oprtn/instr/adultVisitEdu/popup/instrAplctPhotoPopup.do")
public String instrAplctPhotoPopup(@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO, ModelMap model, HttpServletRequest request) throws Exception {
//로그인 처리====================================
@ -1777,7 +1810,7 @@ public class OprtnInstrAdultPrflContoller {
/**
* 강사 위촉, 해촉 처리
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrqlfctEndYnMdfy.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrqlfctEndYnMdfy.do")
public String instrqlfctEndYnMdfy(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1815,13 +1848,13 @@ public class OprtnInstrAdultPrflContoller {
vEInstrDetailService.update(vEInstrDetailVO);
vEInstrService.update(vEInstrDetailVO);
return "redirect:/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do";
return "redirect:/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do";
}
/**
* 강사 정보 수정
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMdfyAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMdfyAjax.do")
public ModelAndView instrMdfyAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1851,14 +1884,14 @@ public class OprtnInstrAdultPrflContoller {
//return "redirect:/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do";
//return "redirect:/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do";
return modelAndView;
}
/**
* 강사 정보 수정
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrCmpltMdfyAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrCmpltMdfyAjax.do")
public ModelAndView instrCmpltMdfyAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ -1890,14 +1923,14 @@ public class OprtnInstrAdultPrflContoller {
//return "redirect:/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do";
//return "redirect:/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do";
return modelAndView;
}
/**
* 2. 강사신청 수정
*/
@RequestMapping("/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetailUpdateAjax.do")
@RequestMapping("/web/ve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetailUpdateAjax.do")
public ModelAndView instrAplctMngDetailUpdateAjax(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
, final MultipartHttpServletRequest multiRequest

View File

@ -841,6 +841,7 @@ public class PreventMngController {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail.setLctrDivCd(LCTR_DIV_CD);
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail);
@ -914,43 +915,51 @@ public class PreventMngController {
*/
@RequestMapping("/kccadr/oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
@ModelAttribute("vEEduAplctVO") VEEduAplctVO paramVO
, 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()));
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println();
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(paramVO.getPageIndex());
paginationInfo.setRecordCountPerPage(paramVO.getPageUnit());
paginationInfo.setPageSize(paramVO.getPageSize());
paramVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
paramVO.setLastIndex(paginationInfo.getLastRecordIndex());
paramVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(paramVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
paramVO.setSearchSortCnd("a.frst_regist_pnttm");
paramVO.setSearchSortOrd("DESC");
}
//과정 신청자 정보 가져오기
//해당 과정을 제출한 사용자 정보를 가져온다.
paramVO.setSbmtYn("Y");
paramVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_80); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCrtfcMngList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
// return "oprtn/cmm/instrActvtHstrySignMngList";
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("paginationInfo", paginationInfo);
return "oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList";
}
@ -2902,6 +2911,8 @@ 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

View File

@ -382,7 +382,7 @@ public class PreventNewMngController {
return userWork;
}
@RequestMapping("/kccadr/oprtn/prevent/trgtMngList.do")
@RequestMapping("/kccadr/oprtn/prevent/trgtMngList_old.do")
public String trgtMngList(
@ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model

View File

@ -15,7 +15,13 @@ public interface VEALettnQestnrMIXService {
//관리자 청소년,성인 - 만족도 평가
List<VEAQestnrVO> selectDetail_MIX_LQI_03(VEAQestnrVO paramVO) throws Exception; // R
//관리자 청소년,성인 - 만족도 평가
List<VEAQestnrVO> selectDetail_MIX_LQI_03_ALL(VEAQestnrVO paramVO) throws Exception; // R
//관리자 청소년,성인 - 개별 만족도 리스트
List<VEAQestnrVO> selectDetail_MIX_LQI_04(VEAQestnrVO paramVO) throws Exception; // R
//관리자 청소년,성인 - 설문항목
List<VEAQestnrVO> selectDetail_MIX_LQI_05(VEAQestnrVO paramVO) throws Exception; // R
}

View File

@ -95,6 +95,42 @@ public class VEAQestnrVO extends ComDefaultVO implements Serializable {
private String qustnrBirth; //개별설문등록자생년월일
private String qustnrScore; //개별설문등록자점수
private String sn1;
private String sn2;
private String sn3;
public String getSn1() {
return sn1;
}
public void setSn1(String sn1) {
this.sn1 = sn1;
}
public String getSn2() {
return sn2;
}
public void setSn2(String sn2) {
this.sn2 = sn2;
}
public String getSn3() {
return sn3;
}
public void setSn3(String sn3) {
this.sn3 = sn3;
}
public String getSn4() {
return sn4;
}
public void setSn4(String sn4) {
this.sn4 = sn4;
}
public String getSn5() {
return sn5;
}
public void setSn5(String sn5) {
this.sn5 = sn5;
}
private String sn4;
private String sn5;
public String getQestnrQesitmId() {
return qestnrQesitmId;

View File

@ -28,8 +28,18 @@ public class VEALettnQestnrMIXDAO extends EgovAbstractDAO {
return tlist;
}
public List<VEAQestnrVO> selectDetail_MIX_LQI_03_ALL(VEAQestnrVO paramVO) throws Exception {
List<VEAQestnrVO> tlist = (List<VEAQestnrVO>) list("VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03_ALL", paramVO);
return tlist;
}
public List<VEAQestnrVO> selectDetail_MIX_LQI_04(VEAQestnrVO paramVO) throws Exception {
List<VEAQestnrVO> tlist = (List<VEAQestnrVO>) list("VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_04", paramVO);
return tlist;
}
public List<VEAQestnrVO> selectDetail_MIX_LQI_05(VEAQestnrVO paramVO) throws Exception {
List<VEAQestnrVO> tlist = (List<VEAQestnrVO>) list("VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_05", paramVO);
return tlist;
}
}

View File

@ -35,9 +35,19 @@ public class VEALettnQestnrMIXServiceImpl implements VEALettnQestnrMIXService {
public List<VEAQestnrVO> selectDetail_MIX_LQI_03(VEAQestnrVO paramVO) throws Exception{
return vEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03(paramVO);
}
//관리자 (청년, 성인) 만족도 평가
public List<VEAQestnrVO> selectDetail_MIX_LQI_03_ALL(VEAQestnrVO paramVO) throws Exception{
return vEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03_ALL(paramVO);
}
//관리자 (청년, 성인) 만족도 평가
public List<VEAQestnrVO> selectDetail_MIX_LQI_04(VEAQestnrVO paramVO) throws Exception{
return vEALettnQestnrMIXDAO.selectDetail_MIX_LQI_04(paramVO);
}
//관리자 설문 문항
public List<VEAQestnrVO> selectDetail_MIX_LQI_05(VEAQestnrVO paramVO) throws Exception{
return vEALettnQestnrMIXDAO.selectDetail_MIX_LQI_05(paramVO);
}
}

View File

@ -4,15 +4,10 @@ import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import javax.activation.DataHandler;
import javax.activation.DataSource;
@ -34,6 +29,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kcc.com.cmm.util.StringUtil;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Value;
@ -97,6 +93,8 @@ import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@ -190,6 +188,9 @@ public class MainController {
@Resource(name="vEInstrService")
private VEInstrService vEInstrService;
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
@Value("#{globalSettings['Globals.email.host']}")
private String Globals_email_host;
@Value("#{globalSettings['Globals.email.port']}")
@ -204,23 +205,7 @@ public class MainController {
private String Globals_email_toEmail;
@Value("#{globalSettings['Globals.email.toEmail.BCC']}")
private String Globals_email_toEmail_BCC;
/** SSO return URL */
@Value("#{globalSettings['Globals.sso.returnSiteUrl']}")
private String returnSiteUrlGlobal;
@Value("#{globalSettings['Globals.sso.returnSiteCode']}")
private String returnSiteCodeGlobal;
/** SSO 회원관련 URL */
@Value("#{globalSettings['Globals.sso.joinUrl']}")
private String joinUrl_Global;
@Value("#{globalSettings['Globals.sso.modifyUrl']}")
private String modifyUrl_Global;
@Value("#{globalSettings['Globals.sso.idFindUrl']}")
private String idFindUrl_Global;
@Value("#{globalSettings['Globals.sso.pwFindUrl']}")
private String pwFindUrl_Global;
/** 구동 환경 */
@Value("#{property['Globals.prod.islocal']}")
private String environment;
@ -384,95 +369,44 @@ public class MainController {
@RequestMapping(value = "/web/main/mainPage.do")
public String siteMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception{
//메인이미지
try {
String referer = (String)request.getHeader("REFERER");
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
model.addAttribute("userAuthority", userAuthority); //권한 - 강사일 메인의 청소년, 성인, 체험교실, 콘텐츠 메뉴 링크이동 막기 위해 추가
/** EgovPropertyService.sample */
MainzoneVO mainzoneVO = new MainzoneVO();
mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit"));
mainzoneVO.setPageSize(propertiesService.getInt("pageSize"));
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(mainzoneVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mainzoneVO.getPageUnit());
paginationInfo.setPageSize(mainzoneVO.getPageSize());
mainzoneVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mainzoneVO.setLastIndex(paginationInfo.getLastRecordIndex());
mainzoneVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
mainzoneVO.setUseYn("Y"); //사용하는것만
mainzoneVO.setDeviceType("P"); //PC
//디자인이 슬라이드가 아닌 한개의 메인화면으로 변경되어 수정
mainzoneVO.setRecordCountPerPage(1);
List<?> mainzoneList = egovPopupManageService.selectMainzoneList(mainzoneVO); //상단메인 이미지
// mainzoneVO.setDeviceType("M"); //모바일
// List<?> mainzoneListM = egovPopupManageService.selectMainzoneList(mainzoneVO); //상단메인 이미지
model.addAttribute("mainzoneList", mainzoneList); //PC
// model.addAttribute("mainzoneListM", mainzoneListM); //모바일
// 문자열을 바이트로 변환하고 Base64로 인코딩합니다.
byte[] encodedBytes = Base64.getEncoder().encode("5a2a72e2-16ce-420c-8816-57b3dda0e231:75f6288bae324cd6bd112e82d693aa01".getBytes());
// 바이트 배열을 다시 문자열로 변환하여 출력합니다.
String encodedString = new String(encodedBytes);
System.out.println("encodedString :: " + encodedString);
/** 메인존 */
model.addAttribute("mainzoneList", mainZone()); //PC
/** 팝업 알림창괸리 */
//if(!isMobile(request)){ //PC인경우만
PopupManageVO popupManageVO = new PopupManageVO();
popupManageVO.setRecordCountPerPage(10); //10개만
popupManageVO.setNtceAt("Y"); //사용만
popupManageVO.setMainPageFlag("Y") ; //메인화면의 용도(시작일 종료일 사이 조회)
List<?> popupList = egovPopupManageService.selectPopupMainList(popupManageVO);
model.addAttribute("popupList", popupList);
//}
model.addAttribute("popupList", popupList());
/** 팝업존 알림창괸리 */
//if(!isMobile(request)){
PopupzoneVO popupzoneVo = new PopupzoneVO();
popupzoneVo.setFirstIndex(0);
popupzoneVo.setSeCd("02"); //좌측팝업
popupzoneVo.setUseYn("Y");
List<?> popupzoneList = egovPopupManageService.selectPopupzoneList(popupzoneVo);
model.addAttribute("popupzoneList", popupzoneList);
//popupzoneVo.setSeCd("03");
//List<?> popupzoneTopList = egovPopupManageService.selectPopupzoneList(popupzoneVo);
//model.addAttribute("popupzoneTopList", popupzoneTopList);
//}
/** 게시판 조회 - 공지사항 */
BoardVO boardVO = new BoardVO();
boardVO.setRecordCountPerPage(5); //게시글
boardVO.setFirstIndex(0); //
boardVO.setBbsId("BBSMSTR_000000000010");
List<BoardVO> vo = bbsMngService.selectMainBoardRecent(boardVO);
//게시글 내용 html 태그 삭제
for(int i=0; i<vo.size(); i++) {
vo.get(i).setNttCn(vo.get(i).getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").split("<")[0]);
}
model.addAttribute("bbsList", vo);
model.addAttribute("popupzoneList", popupzoneList());
/** 게시판 조회 - 공지사항 */
Map<String, Object> noticeBbsList = noticeBbsList();
model.addAttribute("noticeBbsList", noticeBbsList.get("noticeBbsList"));
model.addAttribute("noticeBbsUrl", noticeBbsList.get("noticeBbsUrl"));
/** 게시판 조회 - 교육자료실 */
BoardVO boardVO_2 = new BoardVO();
boardVO_2.setRecordCountPerPage(5); //게시글
boardVO_2.setFirstIndex(0); //
boardVO_2.setBbsId("BBSMSTR_000000000000");
List<BoardVO> vo_2 = bbsMngService.selectMainBoardRecent(boardVO_2);
//게시글 내용 html 태그 삭제
for(int i=0; i<vo_2.size(); i++) {
vo_2.get(i).setNttCn(vo_2.get(i).getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").split("<")[0]);
}
Map<String, Object> atchBbsList = atchBbsList();
model.addAttribute("atchBbsList", atchBbsList.get("atchBbsList"));
model.addAttribute("atchBbsUrl", atchBbsList.get("atchBbsUrl"));
model.addAttribute("bbsList_2", vo_2);
System.out.println("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
System.out.println("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
/** 주요 교육일정 */
Map<String, List<VEPrcsDetailVO>> eduAplctList = eduAplctList();
model.addAttribute("eduAplctList", eduAplctList.get("eduAplctList"));
model.addAttribute("sspnIdtmtList", eduAplctList.get("sspnIdtmtList"));
model.addAttribute("cmdTrgtList", eduAplctList.get("cmdTrgtList"));
model.addAttribute("preventList", eduAplctList.get("preventList"));
}catch(Exception ex) {
ex.printStackTrace();
System.out.println(ex.getMessage());
@ -611,16 +545,6 @@ public class MainController {
model.addAttribute("ssoLoginVO", ssoLoginVO);
}
String returnSiteUrl = returnSiteUrlGlobal;
String returnSiteCode = returnSiteCodeGlobal;
String joinUrl = joinUrl_Global;
String modifyUrl = modifyUrl_Global;
model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl)));
model.addAttribute("returnSiteCode", returnSiteCode);
model.addAttribute("joinUrl", joinUrl);
model.addAttribute("modifyUrl", modifyUrl);
model.addAttribute("environment", environment); //로그인, 회원가입 URL 환경에 따른 구분 ex) local, dev, svr
if(loginVO != null)
@ -998,9 +922,22 @@ public class MainController {
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request , commandMap , tempMenuManageVO , resultVO , menuManageVO );
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO) ;
model.addAttribute("menuResultList", menuResultList);
String pageUrl = request.getRequestURI().replaceAll(request.getContextPath(), "");
if(menuResultList.size() < 1 && pageUrl.contains("/web/user/login/ssoLogin.do")){
MenuManageJTreeVO tmpMenuManageJTreeVO = new MenuManageJTreeVO();
tmpMenuManageJTreeVO.setDepths("1");
tmpMenuManageJTreeVO.setMenuNo("20251119");
tmpMenuManageJTreeVO.setMenuNm("로그인");
menuResultList.add(tmpMenuManageJTreeVO);
tmpMenuManageJTreeVO = new MenuManageJTreeVO();
tmpMenuManageJTreeVO.setDepths("2");
tmpMenuManageJTreeVO.setUrl("/web/user/login/ssoLogin.do");
tmpMenuManageJTreeVO.setUpperMenuId("20251119");
menuResultList.add(tmpMenuManageJTreeVO);
}
model.addAttribute("menuResultList", menuResultList);
String pageUri = pageUrl.substring(0, pageUrl.lastIndexOf("/"));
model.addAttribute("pageUri", pageUri);
}catch(Exception ex) {
@ -1387,7 +1324,8 @@ public class MainController {
&& !menuUrl.contains("/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctReg")
&& !menuUrl.contains("/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide")
&& !menuUrl.contains("/web/ve/aplct/otsdCprtnPrcs/lctrAplct/lctrAplctReg")
&& !menuUrl.contains("/web/my/myQnaMngRegist.do")
) {
String strUrl = menuUrl/*.replace("Info", "List")*/
.replace("CmpltDetail", "List")
@ -1501,8 +1439,7 @@ public class MainController {
tempMenuManageVO.setSearchCondition("Y");
//현재 메뉴
setViewMenu(request , commandMap , tempMenuManageVO , resultVO , menuManageVO );
String pageUrl = request.getRequestURI().replaceAll(request.getContextPath(), "");
String pageUri = pageUrl.substring(0, pageUrl.lastIndexOf("/"));
@ -2078,5 +2015,125 @@ public class MainController {
//mbp.setContent(html.replaceAll("(\r\n|\n)", "<br />"), "text/html; charset=utf-8"); //줄바꿈이 필요해서
return mbp;
}
private List<?> mainZone() throws Exception{
/** EgovPropertyService.sample */
MainzoneVO mainzoneVO = new MainzoneVO();
mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit"));
mainzoneVO.setPageSize(propertiesService.getInt("pageSize"));
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(mainzoneVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mainzoneVO.getPageUnit());
paginationInfo.setPageSize(mainzoneVO.getPageSize());
mainzoneVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mainzoneVO.setLastIndex(paginationInfo.getLastRecordIndex());
mainzoneVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
mainzoneVO.setUseYn("Y"); //사용하는것만
mainzoneVO.setDeviceType("P"); //PC
//디자인이 슬라이드가 아닌 한개의 메인화면으로 변경되어 수정
mainzoneVO.setRecordCountPerPage(1);
List<?> mainzoneList = egovPopupManageService.selectMainzoneList(mainzoneVO); //상단메인 이미지
return mainzoneList;
}
private List<?> popupList() throws Exception{
PopupManageVO popupManageVO = new PopupManageVO();
popupManageVO.setRecordCountPerPage(10); //10개만
popupManageVO.setNtceAt("Y"); //사용만
popupManageVO.setMainPageFlag("Y") ; //메인화면의 용도(시작일 종료일 사이 조회)
List<?> popupList = egovPopupManageService.selectPopupMainList(popupManageVO);
return popupList;
}
private List<?> popupzoneList() throws Exception{
PopupzoneVO popupzoneVo = new PopupzoneVO();
popupzoneVo.setFirstIndex(0);
popupzoneVo.setSeCd("02"); //좌측팝업
popupzoneVo.setUseYn("Y");
List<?> popupzoneList = egovPopupManageService.selectPopupzoneList(popupzoneVo);
return popupzoneList;
}
private Map<String, Object> noticeBbsList() throws Exception{
Map<String, Object> returnMap = new HashMap<String, Object>();
BoardVO boardVO = new BoardVO();
boardVO.setRecordCountPerPage(5); //게시글
boardVO.setFirstIndex(0); //
boardVO.setBbsId("BBSMSTR_000000000010");
List<BoardVO> vo = bbsMngService.selectMainBoardRecent(boardVO);
//게시글 내용 html 태그 삭제
for(int i=0; i<vo.size(); i++) {
vo.get(i).setNttCn(vo.get(i).getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").split("<")[0]);
}
returnMap.put("noticeBbsList", vo);
returnMap.put("noticeBbsUrl", boardVO.getBbsId());
return returnMap;
}
private Map<String, Object> atchBbsList() throws Exception{
Map<String, Object> returnMap = new HashMap<String, Object>();
BoardVO boardVO_2 = new BoardVO();
boardVO_2.setRecordCountPerPage(5); //게시글
boardVO_2.setFirstIndex(0); //
boardVO_2.setBbsId("BBSMSTR_000000000040");
List<BoardVO> vo_2 = bbsMngService.selectMainBoardRecent(boardVO_2);
//게시글 내용 html 태그 삭제
for(int i=0; i<vo_2.size(); i++) {
vo_2.get(i).setNttCn(vo_2.get(i).getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").split("<")[0]);
}
returnMap.put("atchBbsList", vo_2);
returnMap.put("atchBbsUrl", boardVO_2.getBbsId());
return returnMap;
}
private Map<String, List<VEPrcsDetailVO>> eduAplctList() throws Exception{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
//1.pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(1);
paginationInfo.setRecordCountPerPage(12);
paginationInfo.setPageSize(12);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
vEPrcsDetailVO.setLastIndex(paginationInfo.getLastRecordIndex());
vEPrcsDetailVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
vEPrcsDetailVO.setSearchSortCnd("prcs_ord");
vEPrcsDetailVO.setSearchSortOrd("desc");
//기반강화 조회
// vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd);
vEPrcsDetailVO.setUseYn("Y"); //공개 여부만 조회
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectMainContent();
Map<String, List<VEPrcsDetailVO>> returnMap = new HashMap<String, List<VEPrcsDetailVO>>();
returnMap.put("eduAplctList", vEPrcsDetailVOList.stream().limit(Math.min(vEPrcsDetailVOList.size(), 4)).collect(Collectors.toList()));
returnMap.put("sspnIdtmtList", vEPrcsDetailVOList.stream().filter(t -> "60".equals(t.getLctrDivCd())).collect(Collectors.toList()));
returnMap.put("cmdTrgtList", vEPrcsDetailVOList.stream().filter(t -> "70".equals(t.getLctrDivCd())).collect(Collectors.toList()));
returnMap.put("preventList", vEPrcsDetailVOList.stream().filter(t -> "80".equals(t.getLctrDivCd())).collect(Collectors.toList()));
return returnMap;
}
}

View File

@ -1,170 +1,88 @@
#-----------------------------------------------------------------------
#
# globals.properties : \uc2dc\uc2a4\ud15c
# globals.properties : \uC2DC\uC2A4\uD15C
#
#-----------------------------------------------------------------------
# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4.
# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5
# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5
# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9)
# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428)
# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/'
# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
# 1. key = value \uAD6C\uC870\uC785\uB2C8\uB2E4.
# 2. key\uAC12\uC740 \uACF5\uBC31\uBB38\uC790\uB97C \uD3EC\uD568\uBD88\uAC00, value\uAC12\uC740 \uACF5\uBC31\uBB38\uC790\uB97C \uAC00\uB2A5
# 3. key\uAC12\uC73C\uB85C \uD55C\uAE00\uC744 \uC0AC\uC6A9\uBD88\uAC00, value\uAC12\uC740 \uD55C\uAE00\uC0AC\uC6A9\uC774 \uAC00\uB2A5
# 4. \uC904\uC744 \uBC14\uAFC0 \uD544\uC694\uAC00 \uC788\uC73C\uBA74 '\'\uB97C \uB77C\uC778\uC758 \uB05D\uC5D0 \uCD94\uAC00(\uB9CC\uC57D '\'\uBB38\uC790\uB97C \uC0AC\uC6A9\uD574\uC57C \uD558\uB294 \uACBD\uC6B0\uB294 '\\'\uB97C \uC0AC\uC6A9)
# 5. Windows\uC5D0\uC11C\uC758 \uB514\uB809\uD1A0\uB9AC \uD45C\uC2DC : '\\' or '/' ('\' \uC0AC\uC6A9\uD558\uBA74 \uC548\uB428)
# 6. Unix\uC5D0\uC11C\uC758 \uB514\uB809\uD1A0\uB9AC \uD45C\uC2DC : '/'
# 7. \uC8FC\uC11D\uBB38 \uCC98\uB9AC\uB294 #\uC0AC\uC6A9
# 8. value\uAC12 \uB4A4\uC5D0 \uC2A4\uD398\uC774\uC2A4\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 \uC11C\uBE14\uB9BF\uC5D0\uC11C \uCC38\uC870\uD560\uB54C\uB294 \uC5D0\uB7EC\uBC1C\uC0DD\uD560 \uC218 \uC788\uC73C\uBBC0\uB85C trim()\uD558\uAC70\uB098 \uB9C8\uC9C0\uB9C9 \uACF5\uBC31\uC5C6\uC774 properties \uAC12\uC744 \uC124\uC815\uD560\uAC83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
# \uC6B4\uC601\uC11C\uBC84 \uD0C0\uC785(WINDOWS, UNIX)
Globals.OsType = WINDOWS
# G4C \uc5f0\uacb0\uc6a9 IP (localhost)
# G4C \uC5F0\uACB0\uC6A9 IP (localhost)
Globals.LocalIp = 127.0.0.1
# DB\uc11c\ubc84 \ud0c0\uc785(mysql,oracle,altibase,tibero) - datasource \ubc0f sqlMap \ud30c\uc77c \uc9c0\uc815\uc5d0 \uc0ac\uc6a9\ub428
Globals.DbType = tibero
# \uac1c\ubc1c\uc6a9 DB \uc11c\ubc84 tibero \uc5f0\ub3d9
Globals.UserName= EDUSCE
Globals.Password= edusce#23
# DB\uC11C\uBC84 \uD0C0\uC785(mysql,oracle,altibase,tibero) - datasource \uBC0F sqlMap \uD30C\uC77C \uC9C0\uC815\uC5D0 \uC0AC\uC6A9\uB428
Globals.DbType = postgresql
# \uAC1C\uBC1C\uC6A9 DB \uC11C\uBC84 tibero \uC5F0\uB3D9
# \uD1B5\uD569DB - ipict1
# schema - ipedu_scm
# User - ipedu_user
# password - qw3$kEduReal!
Globals.UserName= ipedu_user
Globals.Password= qw3$kEduReal!
Globals.DriverClassName=com.tmax.tibero.jdbc.TbDriver
#\ub85c\uceec DB
#Globals.Url=jdbc:tibero:thin:@192.168.0.30:8633:tibero
#\uc6b4\uc601 \uac1c\ubc1cDB - \ud14c\uc2a4\ud2b8 \uc644\ub8cc \ud6c4 \uc6b4\uc601 DB\ub85c \ubcc0\uacbd \uc608\uc815
Globals.DriverClassName=org.postgresql.Driver
#\uB85C\uCEEC DB
Globals.Url=jdbc:postgresql://172.25.1.93:5445/ipedu?stringtype=unspecified
#\uC6B4\uC601 \uAC1C\uBC1CDB
#Globals.Url=jdbc:tibero:thin:@10.255.3.58:8629:copydb
#\uc6b4\uc601 DB
Globals.Url=jdbc:tibero:thin:@172.17.0.10:8629:copydb
# \uc800\uc791\uc704 \ubb38\uc790\uc804\uc1a1 DB(\uac1c\ubc1c)
Globals.SMSDB.DriverClassName=oracle.jdbc.driver.OracleDriver
Globals.SMSDB.Url=jdbc:oracle:thin:@192.168.0.118:1521:xe
Globals.SMSDB.UserName=KCCADR
Globals.SMSDB.Password=kccadr
# \uc800\uc791\uc704 \ubb38\uc790\uc804\uc1a1 DB(\uc6b4\uc601)
#Globals.SMSDB.DriverClassName=oracle.jdbc.driver.OracleDriver
#Globals.SMSDB.Url=jdbc:oracle:thin:@222.231.43.26:1521:ora10g
#Globals.SMSDB.UserName=smsmanager
#Globals.SMSDB.Password=eksanswk2014
Globals.SMSDB.SendTelNo=02-2669-0042
Globals.SMSDB.TrId=kccadr
# \uc800\uc791\uc704 \uba54\uc77c\uc804\uc1a1
Globals.KccMail.URI=https://mail.copyright.or.kr/mail_api/form_send_mail
Globals.KccMail.api_key=#!@mail5455
Globals.KccMail.sender=adr@copyright.or.kr
Globals.KccMail.title=[\ud55c\uad6d\uc800\uc791\uad8c\uc704\uc6d0\ud68c] \ubd84\uc7c1\uc870\uc815\uc2dc\uc2a4\ud15c \uc54c\ub9bc
#SSO \uc811\uc18d\uc815\ubcf4
#\uac1c\ubc1c\uc11c\ubc84
Globals.sso.ssoUri=https://devsso.copyright.or.kr/oauth2/token.do
Globals.sso.clientId=30354835c3684ff79e7fb1bfd3a768f6
Globals.sso.clientSecret=1ueil5ee05wr0t1gjy1ppt212
Globals.sso.scope=http://sso.copyright.or.kr
Globals.sso.returnSiteUrl=http://219.240.88.15:8091/web/user/login/ssoUsrModifyResult.do
Globals.sso.returnSiteCode=SITE011
#\uc2e4\uc11c\ubc84
#Globals.sso.ssoUri=https://sso.copyright.or.kr/oauth2/token.do
#Globals.sso.clientId=30354835c3684ff79e7fb1bfd3a768f6
#Globals.sso.clientSecret=1ueil5ee05wr0t1gjy1ppt212
#Globals.sso.scope=http://sso.copyright.or.kr
#Globals.sso.returnSiteUrl=http://adr.copyright.or.kr/web/user/login/ssoUsrModifyResult.do
#Globals.sso.returnSiteCode=SITE011
#SSO \ud1b5\ud569\ud68c\uc6d0\uc0ac\uc774\ud2b8 URL
#\uac1c\ubc1c\uc11c\ubc84
Globals.sso.joinUrl=https://devoneid.copyright.or.kr/member/signUp/signUpStep1.do
Globals.sso.modifyUrl=https://devoneid.copyright.or.kr/member/baseInfo/baseInfoModify.do
Globals.sso.idFindUrl=https://devoneid.copyright.or.kr/member/infoFind/idFindStep1.do
Globals.sso.pwFindUrl=https://devoneid.copyright.or.kr/member/infoFind/passFindStep1.do
#\uc2e4\uc11c\ubc84
#Globals.sso.joinUrl=https://oneid.copyright.or.kr/member/signUp/signUpStep1.do
#Globals.sso.modifyUrl=https://oneid.copyright.or.kr/member/baseInfo/baseInfoModify.do
#Globals.sso.idFindUrl=https://oneid.copyright.or.kr/member/infoFind/idFindStep1.do
#Globals.sso.pwFindUrl=https://oneid.copyright.or.kr/member/infoFind/passFindStep1.do
#\uC6B4\uC601 DB
#Globals.Url=jdbc:tibero:thin:@172.17.0.10:8629:copydb
# MainPage Setting(admin)
Globals.MainPage = /cmm/main/mainPage.do
#\ucee8\ud150\uce20 \ud30c\uc77c\uc704\uce58
#\uCEE8\uD150\uCE20 \uD30C\uC77C\uC704\uCE58
#Globals.ckeditorUploadDir=/home/file/ckeditor/
Globals.ckeditorUploadDir=/usr/local/tomcat/file/ckeditor/
#TEST SERVER
Globals.RealCntFileFolder=C:/eGovFrameDev-3.9.0-64bit_ncms/workspace/ncms39/src/main/webapp/WEB-INF/jsp/cnt/
Globals.Solr.url=http://localhost:8983/solr
#SNS \ub85c\uadf8\uc778 KEY \uac12
#ITN \ub124\uc774\ubc84
Globals.kcc.naver.clentId=d9Ohvhty_RVsfrq9p_2J
Globals.kcc.naver.clientSecret=kwiEmpkLg5
Globals.kcc.naver.returnUrl=http://localhost:80/snsLogin/naverOauth.do
#ITN \uce74\uce74\uc624
Globals.kcc.kakao.restApiKey=10b66ad0c44b68b659855ddd64db2c44
Globals.kcc.kakao.returnUrl=http://localhost:80/snsLogin/kakaoOauth.do
#\uC0AC\uC774\uD2B8 \uC544\uC774\uB514 \uC81C\uAC70\uB85C JSP\uC5D0\uC11C siteId/siteNm \uBCF4\uC5EC\uC8FC\uAE30 \uC704\uD574
Globals.homepage.siteId=ipedu
Globals.homepage.siteNm=\uC9C0\uC2DD\uC7AC\uC0B0\uBCF4\uD638\uAD50\uC721\uC2DC\uC2A4\uD15C
#\uc0ac\uc774\ud2b8 \uc544\uc774\ub514 \uc81c\uac70\ub85c JSP\uc5d0\uc11c siteId/siteNm \ubcf4\uc5ec\uc8fc\uae30 \uc704\ud574
Globals.homepage.siteId=kccadr
Globals.homepage.siteNm=\uc804\uc790\uc870\uc815\uc2dc\uc2a4\ud15c
#pdf-url
##=====================================1.local(http://192.168.0.34:7080)=============================================================
##pdf\ubcc0\ud658\uc11c\ubc84 - WAS \uc5d0\uc11c \ud638\ucd9c\ud558\ub294 PDF \ubcc0\ud658 \uc11c\ubc84 IP \uc815\ubcf4\ub97c \ub123\ub294\ub2e4.
#Globals.pdf.serverUrl=192.168.0.200
##\uc6f9\ud398\uc774\uc9c0\ub97c pdf\ub85c \ubcc0\ud658\ud558\uae30 \uc704\ud55c api \ud638\ucd9curl - \uc870\uc815\uc2e0\uccad\uc11c \ub4f1 - WAS \uc11c\ubc84 \uc815\ubcf4\ub97c \ub123\ub294\ub2e4.
#Globals.pdf.apiUrl=http://192.168.0.34:7080
##pdf \uc11c\ubc84\uc758 \ub124\ud2b8\uc6cc\ud06c \uacbd\ub85c
##pdf\ubcc0\ud658 \uc11c\ube0c\ub97c \uc704\ud55c path - 1.pdf\ubcc0\ud658\uc758 \uacb0\uacfc\ubb3c\uc774 \uc0dd\uc131\ub418\ub294 \uacbd\ub85c - PDF \ubcc0\ud658 \uc11c\ubc84\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ud3f4\ub354 \uc815\ubcf4\ub97c \ub123\ub294\ub2e4.
#Globals.pdf.filepath.out=file:/z:/out/
##tomcat upload \uacbd\ub85c
##\ud30c\uc77c \uad00\ub9ac\ub97c \uc704\ud55c path - 2.pdf\ubcc0\ud658\uc744 \uc704\ud55c \uc5c5\ub85c\ub4dc \ud30c\uc77c \uacbd\ub85c - WAS \uc11c\ubc84\uc5d0\uc11c PDF \ubcc0\ud658 \uc9c0\uc6d0\uc744 \uc704\ud574 \uc81c\uc5b4 \ud558\ub294 \uacbd\ub85c
#Globals.pdf.makepath=y:/
##\ud30c\uc77c \uad00\ub9ac\ub97c \uc704\ud55c path - 3.pdf\ubcc0\ud658\uc758 \uacb0\uacfc\ubb3c\uc774 \uc0dd\uc131\ub418\ub294 \uacbd\ub85c - WAS \uc11c\ubc84\uc5d0\uc11c PDF \ubcc0\ud658 \uc9c0\uc6d0\uc744 \uc704\ud574 \uc81c\uc5b4 \ud558\ub294 \uacbd\ub85c
#Globals.pdf.makepath.out=y:/out/
##pdf\ubcc0\ud658 \ud30c\uc77c\uc758 \uc6f9\uc811\uadfc\uc744 \uc704\ud55c path - 4.pdf\ubcc0\ud658\uc758 \uacb0\uacfc\ubb3c\uc744 \uc6f9\uc5d0\uc11c \uc811\uadfc\ud558\uae30 \uc704\ud55c \uacbd\ub85c - \ubcc0\ud658\ub41c PDF \ud30c\uc77c\uc744 \uc6f9\ud398\uc774\uc9c0\uc5d0\uc11c \uc811\uadfc\ud558\uae30 \uc704\ud574 \uc124\uc815\ub41c \uacbd\ub85c \uc815\ubcf4
#Globals.pdf.webpath=/pdf/out/
##=====================================2.\uac1c\ubc1c\uc11c\ubc84(http://219.240.88.15:8091)=============================================================
## \uc0c1\uc138 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uc124\uba85\uc740 \uc0c1\ub2e8\uc5d0\uc11c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.
Globals.pdf.serverUrl=192.168.0.200
Globals.pdf.apiUrl=http://219.240.88.15:8091
Globals.pdf.filepath.out=file:/z:/out/
Globals.pdf.makepath=/usr/local/tomcat/file/sht/
Globals.pdf.makepath.out=/usr/local/tomcat/file/sht/out/
Globals.pdf.webpath=/pdf/out/
##=====================================3.\uc2e4\uc11c\ubc84(192.168.39.143, 192.168.39.144)=============================================================
## \uc0c1\uc138 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uc124\uba85\uc740 \uc0c1\ub2e8\uc5d0\uc11c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.
#Globals.pdf.serverUrl=192.168.39.147
#Globals.pdf.apiUrl=http://192.168.39.143:8080
#Globals.pdf.filepath.out=file:/z:/out/
#Globals.pdf.makepath=/usr/local/tomcat/file/sht/
#Globals.pdf.makepath.out=/usr/local/tomcat/file/sht/out/
#Globals.pdf.webpath=/pdf/out/
#prod \uac1c\ubc1c, \uc2e4\uc11c\ubc84 \uad6c\ubd84\uac12
#\ub85c\uceec
#prod \uAC1C\uBC1C, \uC2E4\uC11C\uBC84 \uAD6C\uBD84\uAC12
#\uB85C\uCEEC
#Globals.prod.islocal=local
#\uc6b4\uc601 \uac1c\ubc1c
#\uC6B4\uC601 \uAC1C\uBC1C
#Globals.prod.islocal=dev
#\uc6b4\uc601
#\uC6B4\uC601
Globals.prod.islocal=real
#\uB300\uC6A9\uB7C9 innorix license
Globals.Innorix.License=dev
Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/
#\ub300\uc6a9\ub7c9 innorix license
Globals.Innorix.License=svr
Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/
#\uad50\uc721 \uc54c\ub9bc \uba54\uc77c \ud15c\ud50c\ub9bf
Globals.edu.mail.template=/template/offeduMain.html
# ===========================
# Siren24 \uC778\uC99D \uAD00\uB828 \uC124\uC815
# ===========================
globals.certPhone.retUrl = https://www.koipa.re.kr/ipedu/
globals.certPhone.cryptoUrl = https://sciapi.siren24.com:52099/authentication/api/v1.0/common/crypto/token
globals.certPhone.reqNo = koipa_edu
globals.certPhone.id = SKIP001
globals.certPhone.clientId = 5a2a72e2-16ce-420c-8816-57b3dda0e231
globals.certPhone.srvNo = 003002
globals.certPhone.accessToken = 994b5d96-3788-4239-a5b0-a0ba2e0cf089
globals.certPhone.stosUrl = https://pcc.siren24.com/servlet/StoS
# ===========================
# \uBFCC\uB9AC\uC624 \uC54C\uB9BC\uD1A1, \uBB38\uC790 \uBC1C\uC1A1
# ===========================
ppurio.id=ipedu
ppurio.pw=a12711271!!
ppurio.host=https://api.bizppurio.com
ppurio.senderKey=2f3b0bb2cc106a3d98f248c85ac5d5376505f553
ppurio.from=16701271

View File

@ -1,31 +1,31 @@
#-----------------------------------------------------------------------
#
# globals.properties : \uc2dc\uc2a4\ud15c
# globals.properties : \uC2DC\uC2A4\uD15C
#
#-----------------------------------------------------------------------
# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4.
# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5
# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5
# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9)
# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428)
# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/'
# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
# 1. key = value \uAD6C\uC870\uC785\uB2C8\uB2E4.
# 2. key\uAC12\uC740 \uACF5\uBC31\uBB38\uC790\uB97C \uD3EC\uD568\uBD88\uAC00, value\uAC12\uC740 \uACF5\uBC31\uBB38\uC790\uB97C \uAC00\uB2A5
# 3. key\uAC12\uC73C\uB85C \uD55C\uAE00\uC744 \uC0AC\uC6A9\uBD88\uAC00, value\uAC12\uC740 \uD55C\uAE00\uC0AC\uC6A9\uC774 \uAC00\uB2A5
# 4. \uC904\uC744 \uBC14\uAFC0 \uD544\uC694\uAC00 \uC788\uC73C\uBA74 '\'\uB97C \uB77C\uC778\uC758 \uB05D\uC5D0 \uCD94\uAC00(\uB9CC\uC57D '\'\uBB38\uC790\uB97C \uC0AC\uC6A9\uD574\uC57C \uD558\uB294 \uACBD\uC6B0\uB294 '\\'\uB97C \uC0AC\uC6A9)
# 5. Windows\uC5D0\uC11C\uC758 \uB514\uB809\uD1A0\uB9AC \uD45C\uC2DC : '\\' or '/' ('\' \uC0AC\uC6A9\uD558\uBA74 \uC548\uB428)
# 6. Unix\uC5D0\uC11C\uC758 \uB514\uB809\uD1A0\uB9AC \uD45C\uC2DC : '/'
# 7. \uC8FC\uC11D\uBB38 \uCC98\uB9AC\uB294 #\uC0AC\uC6A9
# 8. value\uAC12 \uB4A4\uC5D0 \uC2A4\uD398\uC774\uC2A4\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 \uC11C\uBE14\uB9BF\uC5D0\uC11C \uCC38\uC870\uD560\uB54C\uB294 \uC5D0\uB7EC\uBC1C\uC0DD\uD560 \uC218 \uC788\uC73C\uBBC0\uB85C trim()\uD558\uAC70\uB098 \uB9C8\uC9C0\uB9C9 \uACF5\uBC31\uC5C6\uC774 properties \uAC12\uC744 \uC124\uC815\uD560\uAC83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
# \uC6B4\uC601\uC11C\uBC84 \uD0C0\uC785(WINDOWS, UNIX)
Globals.OsType = WINDOWS
# G4C \uc5f0\uacb0\uc6a9 IP (localhost)
# G4C \uC5F0\uACB0\uC6A9 IP (localhost)
Globals.LocalIp = 127.0.0.1
# DB\uc11c\ubc84 \ud0c0\uc785(mysql,oracle,altibase,tibero) - datasource \ubc0f sqlMap \ud30c\uc77c \uc9c0\uc815\uc5d0 \uc0ac\uc6a9\ub428
# DB\uC11C\uBC84 \uD0C0\uC785(mysql,oracle,altibase,tibero) - datasource \uBC0F sqlMap \uD30C\uC77C \uC9C0\uC815\uC5D0 \uC0AC\uC6A9\uB428
Globals.DbType = postgresql
# \uac1c\ubc1c\uc6a9 DB \uc11c\ubc84 tibero \uc5f0\ub3d9
# \ud1b5\ud569DB - ipict1
# \uAC1C\uBC1C\uC6A9 DB \uC11C\uBC84 tibero \uC5F0\uB3D9
# \uD1B5\uD569DB - ipict1
# schema - ipedu_scm
# User - ipedu_user
# password - qw3$kEduReal!
@ -33,143 +33,57 @@ Globals.UserName= koipaEdu
Globals.Password= koipaEdu123
Globals.DriverClassName=org.postgresql.Driver
#\ub85c\uceec DB
#\uB85C\uCEEC DB
Globals.Url=jdbc:postgresql://192.168.0.60:5432/koipaEduDB?stringtype=unspecified
#\uc6b4\uc601 \uac1c\ubc1cDB
#\uC6B4\uC601 \uAC1C\uBC1CDB
#Globals.Url=jdbc:tibero:thin:@10.255.3.58:8629:copydb
#\uc6b4\uc601 DB
#\uC6B4\uC601 DB
#Globals.Url=jdbc:tibero:thin:@172.17.0.10:8629:copydb
# \uc800\uc791\uc704 \ubb38\uc790\uc804\uc1a1 DB(\uac1c\ubc1c)
Globals.SMSDB.DriverClassName=oracle.jdbc.driver.OracleDriver
Globals.SMSDB.Url=jdbc:oracle:thin:@192.168.0.118:1521:xe
Globals.SMSDB.UserName=KCCADR
Globals.SMSDB.Password=kccadr
# \uc800\uc791\uc704 \ubb38\uc790\uc804\uc1a1 DB(\uc6b4\uc601)
#Globals.SMSDB.DriverClassName=oracle.jdbc.driver.OracleDriver
#Globals.SMSDB.Url=jdbc:oracle:thin:@222.231.43.26:1521:ora10g
#Globals.SMSDB.UserName=smsmanager
#Globals.SMSDB.Password=eksanswk2014
Globals.SMSDB.SendTelNo=02-2669-0042
Globals.SMSDB.TrId=kccadr
# \uc800\uc791\uc704 \uba54\uc77c\uc804\uc1a1
Globals.KccMail.URI=https://mail.copyright.or.kr/mail_api/form_send_mail
Globals.KccMail.api_key=#!@mail5455
Globals.KccMail.sender=adr@copyright.or.kr
Globals.KccMail.title=[\ud55c\uad6d\uc800\uc791\uad8c\uc704\uc6d0\ud68c] \ubd84\uc7c1\uc870\uc815\uc2dc\uc2a4\ud15c \uc54c\ub9bc
#SSO \uc811\uc18d\uc815\ubcf4
#\uac1c\ubc1c\uc11c\ubc84
Globals.sso.ssoUri=https://devsso.copyright.or.kr/oauth2/token.do
Globals.sso.clientId=30354835c3684ff79e7fb1bfd3a768f6
Globals.sso.clientSecret=1ueil5ee05wr0t1gjy1ppt212
Globals.sso.scope=http://sso.copyright.or.kr
Globals.sso.returnSiteUrl=http://219.240.88.15:8091/web/user/login/ssoUsrModifyResult.do
Globals.sso.returnSiteCode=SITE011
#\uc2e4\uc11c\ubc84
#Globals.sso.ssoUri=https://sso.copyright.or.kr/oauth2/token.do
#Globals.sso.clientId=30354835c3684ff79e7fb1bfd3a768f6
#Globals.sso.clientSecret=1ueil5ee05wr0t1gjy1ppt212
#Globals.sso.scope=http://sso.copyright.or.kr
#Globals.sso.returnSiteUrl=http://adr.copyright.or.kr/web/user/login/ssoUsrModifyResult.do
#Globals.sso.returnSiteCode=SITE011
#SSO \ud1b5\ud569\ud68c\uc6d0\uc0ac\uc774\ud2b8 URL
#\uac1c\ubc1c\uc11c\ubc84
Globals.sso.joinUrl=https://devoneid.copyright.or.kr/member/signUp/signUpStep1.do
Globals.sso.modifyUrl=https://devoneid.copyright.or.kr/member/baseInfo/baseInfoModify.do
Globals.sso.idFindUrl=https://devoneid.copyright.or.kr/member/infoFind/idFindStep1.do
Globals.sso.pwFindUrl=https://devoneid.copyright.or.kr/member/infoFind/passFindStep1.do
#\uc2e4\uc11c\ubc84
#Globals.sso.joinUrl=https://oneid.copyright.or.kr/member/signUp/signUpStep1.do
#Globals.sso.modifyUrl=https://oneid.copyright.or.kr/member/baseInfo/baseInfoModify.do
#Globals.sso.idFindUrl=https://oneid.copyright.or.kr/member/infoFind/idFindStep1.do
#Globals.sso.pwFindUrl=https://oneid.copyright.or.kr/member/infoFind/passFindStep1.do
# MainPage Setting(admin)
Globals.MainPage = /cmm/main/mainPage.do
#\ucee8\ud150\uce20 \ud30c\uc77c\uc704\uce58
#\uCEE8\uD150\uCE20 \uD30C\uC77C\uC704\uCE58
#Globals.ckeditorUploadDir=/home/file/ckeditor/
Globals.ckeditorUploadDir=/usr/local/tomcat/file/ckeditor/
#TEST SERVER
Globals.RealCntFileFolder=C:/eGovFrameDev-3.9.0-64bit_ncms/workspace/ncms39/src/main/webapp/WEB-INF/jsp/cnt/
Globals.Solr.url=http://localhost:8983/solr
#SNS \ub85c\uadf8\uc778 KEY \uac12
#ITN \ub124\uc774\ubc84
Globals.kcc.naver.clentId=d9Ohvhty_RVsfrq9p_2J
Globals.kcc.naver.clientSecret=kwiEmpkLg5
Globals.kcc.naver.returnUrl=http://localhost:80/snsLogin/naverOauth.do
#ITN \uce74\uce74\uc624
Globals.kcc.kakao.restApiKey=10b66ad0c44b68b659855ddd64db2c44
Globals.kcc.kakao.returnUrl=http://localhost:80/snsLogin/kakaoOauth.do
#\uC0AC\uC774\uD2B8 \uC544\uC774\uB514 \uC81C\uAC70\uB85C JSP\uC5D0\uC11C siteId/siteNm \uBCF4\uC5EC\uC8FC\uAE30 \uC704\uD574
Globals.homepage.siteId=ipedu
Globals.homepage.siteNm=\uC9C0\uC2DD\uC7AC\uC0B0\uBCF4\uD638\uAD50\uC721\uC2DC\uC2A4\uD15C
#\uc0ac\uc774\ud2b8 \uc544\uc774\ub514 \uc81c\uac70\ub85c JSP\uc5d0\uc11c siteId/siteNm \ubcf4\uc5ec\uc8fc\uae30 \uc704\ud574
Globals.homepage.siteId=kccadr
Globals.homepage.siteNm=\uc804\uc790\uc870\uc815\uc2dc\uc2a4\ud15c
#pdf-url
##=====================================1.local(http://192.168.0.34:7080)=============================================================
##pdf\ubcc0\ud658\uc11c\ubc84 - WAS \uc5d0\uc11c \ud638\ucd9c\ud558\ub294 PDF \ubcc0\ud658 \uc11c\ubc84 IP \uc815\ubcf4\ub97c \ub123\ub294\ub2e4.
#Globals.pdf.serverUrl=192.168.0.200
##\uc6f9\ud398\uc774\uc9c0\ub97c pdf\ub85c \ubcc0\ud658\ud558\uae30 \uc704\ud55c api \ud638\ucd9curl - \uc870\uc815\uc2e0\uccad\uc11c \ub4f1 - WAS \uc11c\ubc84 \uc815\ubcf4\ub97c \ub123\ub294\ub2e4.
#Globals.pdf.apiUrl=http://192.168.0.34:7080
##pdf \uc11c\ubc84\uc758 \ub124\ud2b8\uc6cc\ud06c \uacbd\ub85c
##pdf\ubcc0\ud658 \uc11c\ube0c\ub97c \uc704\ud55c path - 1.pdf\ubcc0\ud658\uc758 \uacb0\uacfc\ubb3c\uc774 \uc0dd\uc131\ub418\ub294 \uacbd\ub85c - PDF \ubcc0\ud658 \uc11c\ubc84\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ud3f4\ub354 \uc815\ubcf4\ub97c \ub123\ub294\ub2e4.
#Globals.pdf.filepath.out=file:/z:/out/
##tomcat upload \uacbd\ub85c
##\ud30c\uc77c \uad00\ub9ac\ub97c \uc704\ud55c path - 2.pdf\ubcc0\ud658\uc744 \uc704\ud55c \uc5c5\ub85c\ub4dc \ud30c\uc77c \uacbd\ub85c - WAS \uc11c\ubc84\uc5d0\uc11c PDF \ubcc0\ud658 \uc9c0\uc6d0\uc744 \uc704\ud574 \uc81c\uc5b4 \ud558\ub294 \uacbd\ub85c
#Globals.pdf.makepath=y:/
##\ud30c\uc77c \uad00\ub9ac\ub97c \uc704\ud55c path - 3.pdf\ubcc0\ud658\uc758 \uacb0\uacfc\ubb3c\uc774 \uc0dd\uc131\ub418\ub294 \uacbd\ub85c - WAS \uc11c\ubc84\uc5d0\uc11c PDF \ubcc0\ud658 \uc9c0\uc6d0\uc744 \uc704\ud574 \uc81c\uc5b4 \ud558\ub294 \uacbd\ub85c
#Globals.pdf.makepath.out=y:/out/
##pdf\ubcc0\ud658 \ud30c\uc77c\uc758 \uc6f9\uc811\uadfc\uc744 \uc704\ud55c path - 4.pdf\ubcc0\ud658\uc758 \uacb0\uacfc\ubb3c\uc744 \uc6f9\uc5d0\uc11c \uc811\uadfc\ud558\uae30 \uc704\ud55c \uacbd\ub85c - \ubcc0\ud658\ub41c PDF \ud30c\uc77c\uc744 \uc6f9\ud398\uc774\uc9c0\uc5d0\uc11c \uc811\uadfc\ud558\uae30 \uc704\ud574 \uc124\uc815\ub41c \uacbd\ub85c \uc815\ubcf4
#Globals.pdf.webpath=/pdf/out/
##=====================================2.\uac1c\ubc1c\uc11c\ubc84(http://219.240.88.15:8091)=============================================================
## \uc0c1\uc138 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uc124\uba85\uc740 \uc0c1\ub2e8\uc5d0\uc11c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.
Globals.pdf.serverUrl=192.168.0.200
Globals.pdf.apiUrl=http://219.240.88.15:8091
Globals.pdf.filepath.out=file:/z:/out/
Globals.pdf.makepath=/usr/local/tomcat/file/sht/
Globals.pdf.makepath.out=/usr/local/tomcat/file/sht/out/
Globals.pdf.webpath=/pdf/out/
##=====================================3.\uc2e4\uc11c\ubc84(192.168.39.143, 192.168.39.144)=============================================================
## \uc0c1\uc138 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uc124\uba85\uc740 \uc0c1\ub2e8\uc5d0\uc11c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.
#Globals.pdf.serverUrl=192.168.39.147
#Globals.pdf.apiUrl=http://192.168.39.143:8080
#Globals.pdf.filepath.out=file:/z:/out/
#Globals.pdf.makepath=/usr/local/tomcat/file/sht/
#Globals.pdf.makepath.out=/usr/local/tomcat/file/sht/out/
#Globals.pdf.webpath=/pdf/out/
#prod \uac1c\ubc1c, \uc2e4\uc11c\ubc84 \uad6c\ubd84\uac12
#\ub85c\uceec
#prod \uAC1C\uBC1C, \uC2E4\uC11C\uBC84 \uAD6C\uBD84\uAC12
#\uB85C\uCEEC
Globals.prod.islocal=local
#\uc6b4\uc601 \uac1c\ubc1c
#\uC6B4\uC601 \uAC1C\uBC1C
#Globals.prod.islocal=dev
#\uc6b4\uc601
#\uC6B4\uC601
#Globals.prod.islocal=real
#\ub300\uc6a9\ub7c9 innorix license
#\uB300\uC6A9\uB7C9 innorix license
Globals.Innorix.License=dev
Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/
Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/
#\uad50\uc721 \uc54c\ub9bc \uba54\uc77c \ud15c\ud50c\ub9bf
#Globals.edu.mail.template=/template/offeduMain.html
Globals.edu.mail.template=template/offeduMain.html
# ===========================
# Siren24 \uC778\uC99D \uAD00\uB828 \uC124\uC815
# ===========================
globals.certPhone.retUrl=https://dev-ipedu-cert.iten.co.kr/ipedu/
globals.certPhone.cryptoUrl=https://sciapi.siren24.com:52099/authentication/api/v1.0/common/crypto/token
globals.certPhone.reqNo=koipa_edu
globals.certPhone.id=SKIP001
globals.certPhone.clientId=5a2a72e2-16ce-420c-8816-57b3dda0e231
#globals.certPhone.srvNo=001003
globals.certPhone.srvNo=001003
globals.certPhone.accessToken=994b5d96-3788-4239-a5b0-a0ba2e0cf089
globals.certPhone.stosUrl=https://pcc.siren24.com/servlet/StoS
# ===========================
# \uBFCC\uB9AC\uC624 \uC54C\uB9BC\uD1A1, \uBB38\uC790 \uBC1C\uC1A1
# ===========================
ppurio.id=ipedu
ppurio.pw=a12711271!!
ppurio.host=https://api.bizppurio.com
ppurio.senderKey=2f3b0bb2cc106a3d98f248c85ac5d5376505f553
ppurio.from=16701271

View File

@ -25,5 +25,5 @@
</map>
</property>
</bean>
<util:properties id="globalSettings" location="classpath:/egovframework/egovProps/globals.properties" />
<util:properties id="globalSettings" location="classpath:/egovframework/egovProps/globals_#{systemProperties['spring.profiles.active']}.properties" />
</beans>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="egovframework/sqlmap/ve/cmm/sendAt/Send_SQL_Postgresql.xml"/>
</sqlMapConfig>

View File

@ -253,7 +253,9 @@
, LETTNADMINLOG b
, COMVNUSERMASTER c
WHERE 1=1
AND a.use_yn='Y'
AND a.method_cd='A'
AND a.METHOD_NM =b.PROGRM_FILE_NM
AND b.CONECT_ID =c.ESNTL_ID
@ -514,7 +516,7 @@
A.PRIVACY AS privacy,
A.USE_YN AS useYn,
A.SORT_NUM AS sortNum,
A.method_cd as dateType
A.method_cd as methodCd
FROM LETTNADMINMETHOD A
WHERE 1=1
<isNotEmpty property="admotId">
@ -571,9 +573,31 @@
<isNotEmpty property="sortNum">
, sort_num = CAST(#sortNum# as int)
</isNotEmpty>
<isNotEmpty property="methodCd">
, METHOD_CD = #methodCd#
</isNotEmpty>
WHERE ADMOT_ID = #admotId#
</update>
<!-- 관리자 로그설정 메소드 수정 -->
<update id="LoginLogDAO.updateLogMethodAuto" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* LoginLogDAO.LoginLogDAO.updateLogMethodAuto */
UPDATE LETTNADMINMETHOD
SET
PARAM = #param#
, MENU_NM = #menuNm#
, APPRO_NM = #approNm#
, PRIVACY = #privacy#
, USE_YN = #useYn#
<isNotEmpty property="sortNum">
, sort_num = CAST(#sortNum# as int)
</isNotEmpty>
<isNotEmpty property="methodCd">
, METHOD_CD = #methodCd#
</isNotEmpty>
WHERE METHOD_NM like CONCAT(CAST(#methodNm# as text), '%')
</update>
<insert id="LoginLogDAO.insertLogMethod" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* LoginLogDAO.insertLogMethod */
INSERT INTO LETTNADMINMETHOD
@ -849,8 +873,8 @@
</select>
<!-- 사용자 메뉴별 접속 로그 리스트 -->
<select id="LoginLogDAO.selectWebMenuLogList" parameterClass="loginLog" resultClass="loginLog">
/* 임시.*NOT_SQL_LOG.* LoginLogDAO.selectWebMenuLogList */
<select id="LoginLogDAO.selectWebMenuLogList_bak_20251104" parameterClass="loginLog" resultClass="loginLog">
/* 임시.*NOT_SQL_LOG.* LoginLogDAO.selectWebMenuLogList_bak_20251104 */
SELECT a.MENU_NM AS menuNm,
a.APPRO_NM AS approNm,
a.METHOD_NM AS methodNm,
@ -894,6 +918,60 @@
a.SORT_NUM
ORDER BY A.SORT_NUM
</select>
<!-- 사용자 메뉴별 접속 로그 리스트 -->
<select id="LoginLogDAO.selectWebMenuLogList" parameterClass="loginLog" resultClass="loginLog">
/* 임시.*NOT_SQL_LOG.* LoginLogDAO.selectWebMenuLogList */
SELECT a.MENU_NM AS menuNm,
a.APPRO_NM AS approNm,
substring(a.METHOD_NM from 0 for strpos(a.METHOD_NM, '.do')) as methodNm,
/*
a.METHOD_NM AS methodNm,
*/
a.SORT_NUM AS sortNum,
count(*) AS totCnt
FROM LETTNADMINMETHOD a
LEFT OUTER JOIN LETTNLOGINLOG b
ON (a.METHOD_NM =b.PROGRM_FILE_NM)
WHERE a.use_yn ='Y'
AND a.METHOD_CD ='U'
<isNotEmpty property="searchKeyword">
<isEqual prepend="AND" property="searchCondition" compareValue="">
( a.MENU_NM LIKE '%'||#searchKeyword#||'%'
OR
a.METHOD_NM LIKE '%'||#searchKeyword#||'%'
)
</isEqual>
<isEqual prepend="AND" property="searchCondition" compareValue="1">
a.MENU_NM LIKE '%'||#searchKeyword#||'%'
</isEqual>
<isEqual prepend="AND" property="searchCondition" compareValue="2">
a.METHOD_NM LIKE '%'||#searchKeyword#||'%'
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchStartDt">
AND TO_CHAR(b.CREAT_DT, 'YYYY.MM.DD' ) >= #searchStartDt#
</isNotEmpty>
<isNotEmpty property="searchEndDt">
AND #searchEndDt# >= TO_CHAR(b.CREAT_DT, 'YYYY.MM.DD' )
</isNotEmpty>
GROUP BY a.MENU_NM,
a.APPRO_NM,
substring(a.METHOD_NM from 0 for strpos(a.METHOD_NM, '.do')),
/*
a.METHOD_NM,
*/
a.SORT_NUM
ORDER BY A.SORT_NUM
</select>
<!-- 사용자 메뉴별 접속 로그 리스트 -->
<select id="LoginLogDAO.selectWebMenuLogList_bak" parameterClass="loginLog" resultClass="loginLog">

View File

@ -132,7 +132,7 @@
'' AS menuCours
/*getMenuCours(MENU_NO) AS menuCours*/
FROM LETTNMENUINFO
WHERE CAST(UPPER_MENU_NO AS VARCHAR) = #menuNo#;
WHERE UPPER_MENU_NO = #menuNo#;
]]>
</select>
</sqlMap>

View File

@ -60,7 +60,10 @@
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
/*
, ORGNZT_ID AS orgnztId
*/
, AREA_NO AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
@ -80,7 +83,7 @@
<!-- 비밀번호비교를 위한 데이터 가져오기 용 -->
<select id="loginDAO.actionLoginNew" resultMap="login">
/*loginDAO.actionLogin*/
/*loginDAO.loginDAO.actionLoginNew*/
<!-- 일반회원 -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
@ -90,6 +93,7 @@
, ihidNum AS ihidNum
, mber_email_adres AS email
, 'GNR' AS userSe
, '' AS membCelnum
, '-' AS orgnztId
, ESNTL_ID AS uniqId
, 0 AS passMiss
@ -109,7 +113,11 @@
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
/*
, ORGNZT_ID AS orgnztId
*/
, OFFM_TELNO AS membCelnum
, AREA_NO AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
@ -177,7 +185,7 @@
<!-- e배움터 연동 후 mber_seq가 아닌 mber_id로 로그인 -->
<select id="loginDAO.actionLoginMberId" resultMap="login">
/*loginDAO.actionLoginMberId*/
<!-- 일반회원 loginDAO.actionLoginDev -->
<!-- 일반회원 loginDAO.loginDAO.actionLoginMberId -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
SELECT mber_id AS id
@ -428,11 +436,15 @@
<!-- 사용자 권한 조회 -->
<select id="loginDAO.getUserAuth" parameterClass="loginVO" resultClass="loginVO" >
/* loginDAO.getUserAuth */
<![CDATA[
SELECT A.SCRTY_DTRMN_TRGET_ID id, A.AUTHOR_CODE AUTHORITY
FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID
AND B.USER_ID = #id#
, c.area_no orgnztId
FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
LEFT OUTER JOIN LETTNEMPLYRINFO C
ON (1=1 and b.esntl_id = c.esntl_id)
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID
AND B.USER_ID = #id#
]]>
</select>

View File

@ -127,7 +127,7 @@
A.LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.QESTN_SN,
A.QESTN_TY_CODE,
A.QESTN_TY_CODE "qestnTyCode",
A.QESTN_CN,
A.MXMM_CHOISE_CO,
A.QUSTNR_TMPLAT_ID "qestnrTmplatId"
@ -805,9 +805,9 @@
, d.answer1
, e.prcs_ord AS prcsAplctPrdOrd
, f.qestn_ty_code AS qestnTyCode
FROM lettnqustnrqesitm a
LEFT OUTER JOIN LETTNQESTNRRSLTDETAIL b
on(1=1
@ -862,6 +862,9 @@
AND a.qustnr_qesitm_id=d.qustnr_qesitm_id
)
LEFT OUTER JOIN lettnqustnrqesitm f
ON a.QUSTNR_QESITM_ID = f.QUSTNR_QESITM_ID
,(

View File

@ -526,7 +526,7 @@
SELECT CODE_NM
FROM LETTCCMMNDETAILCODE
WHERE USE_AT = 'Y'
AND CODE_ID = 'VEA002'
AND CODE_ID = 'VEA003'
AND CODE = a.edu_state_cd
)
END AS eduStateCdNm
@ -701,11 +701,17 @@
</isEmpty>
ORDER BY
<isEmpty property="orderByQuery">
a.req_pnttm DESC
, a.cmd_trgt_info_ord DESC
, a.prcs_aplct_prd_ord_cmplt DESC
, a.frst_regist_pnttm desc
</isEmpty>
<isNotEmpty property="orderByQuery">
$orderByQuery$
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
@ -756,6 +762,7 @@
a.cmd_trgt_info_ord AS cmdTrgtInfoOrd
, a.req_nmbr AS reqNmbr
, a.prsctr_nm AS prsctrNm
, a.req_state_cd AS reqStateCd
FROM
<include refid="CmdTrgtInfoMngDAO.table_name"/> a
WHERE
@ -937,7 +944,7 @@
, LAST_UPDUSR_ID = #lastUpdusrId#
<isNotEmpty property="rmrks">
, rmrks = rmrks || #rmrks#
, rmrks = COALESCE(rmrks, '') || #rmrks#
</isNotEmpty>
WHERE cmd_trgt_info_ord IN

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Send">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="sendAtVO" type="kcc.ve.cmm.sendAt.SendAtVO"/>
<typeAlias alias="sendSmsVO" type="kcc.ve.cmm.sendAt.SendSmsVO"/>
<typeAlias alias="vEPrcsDetailVO" type="kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO"/>
<select id="sendDAO.selectToken" resultClass="sendAtVO">
SELECT
A.ACCESSTOKEN,
A.TYPE,
A.EXPIRED
FROM
ppurio_token A
</select>
<update id="sendDAO.updateToken" parameterClass="sendAtVO">
UPDATE ppurio_token
SET
ACCESSTOKEN = #accesstoken#,
TYPE = #type#,
EXPIRED = #expired#
</update>
<select id="sendDAO.select7DaybeforeAt" parameterClass="java.lang.Integer" resultClass="vEPrcsDetailVO">
SELECT COUNT(1) OVER () AS totCnt,
a.prcs_aplct_prd_ord AS prcsAplctPrdOrd,
a.lctr_div_cd AS lctrDivCd,
a.strt_pnttm AS strtPnttm,
a.end_pnttm AS endPnttm,
a.use_yn AS useYn,
TO_CHAR(a.frst_regist_pnttm, 'YYYY-MM-DD') AS frstRegistPnttm,
a.frst_register_id AS frstRegisterId,
TO_CHAR(a.last_updt_pnttm, 'YYYY-MM-DD') AS lastUpdtPnttm,
a.last_updusr_id AS lastUpdusrId,
a.anncm_cn AS anncmCn,
a.popup_cn AS popupCn,
a.atch_file_id AS atchFileId,
a.title AS title,
(SELECT user_nm
FROM comvnusermaster
WHERE esntl_id = a.frst_register_id
LIMIT 1) AS frstRegisterNm,
(SELECT orignl_file_nm
FROM lettnfiledetail
WHERE atch_file_id = a.atch_file_id
LIMIT 1) AS atchFileNm,
b.prcs_nm as prcsNm,
b.prcs_div as prcsDiv,
a.edu_place as eduPlace,
a.qustnr_strt_pnttm AS qustnrStrtPnttm,
a.qustnr_tm AS qustnrTm,
a.dead_line_dt AS deadLineDt,
a.prcs_ord AS prcsOrd,
a.edu_part_cd AS eduPartCd,
a.nos AS nos,
a.ddln_cd AS ddlnCd,
a.edu_strt_pnttm AS eduStrtPnttm,
a.edu_ddln_pnttm AS eduDdlnPnttm,
a.prcs_cn AS prcsCn,
b.prcs_cn AS prcsCnTwo,
'' AS lctrPlanRsltAtchFileId,
a.prvt_memo_cn AS prvtMemoCn,
a.cn_atch_file_id AS cnAtchFileId,
phone_agg.phone_list AS phone
FROM ve_prcs_aplct_prd a
JOIN ve_prcs b
ON a.prcs_ord = b.prcs_ord
LEFT outer JOIN (SELECT e.prcs_ord,
string_agg(e.phone, ',' ORDER BY e.phone) AS phone_list
FROM ve_edu_aplct e
WHERE 1 = 1
AND e.sbmt_yn = 'Y'
AND e.use_yn = 'Y'
GROUP BY e.prcs_ord) phone_agg
ON phone_agg.prcs_ord = a.prcs_aplct_prd_ord
WHERE 1 = 1
AND to_date(a.strt_pnttm, 'YYYY.MM.DD') = current_date + #diffDay#
</select>
</sqlMap>

View File

@ -526,7 +526,7 @@
SELECT CODE_NM
FROM LETTCCMMNDETAILCODE
WHERE USE_AT = 'Y'
AND CODE_ID = 'VEA002'
AND CODE_ID = 'VEA003'
AND CODE = a.edu_state_cd
)
END AS eduStateCdNm
@ -702,10 +702,17 @@
ORDER BY
<isEmpty property="orderByQuery">
a.req_pnttm DESC
, a.sspn_idtmt_trgt_ord DESC
, a.prcs_aplct_prd_ord_cmplt DESC
, a.frst_regist_pnttm desc
</isEmpty>
<isNotEmpty property="orderByQuery">
$orderByQuery$
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
@ -756,6 +763,7 @@
a.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
, a.req_nmbr AS reqNmbr
, a.prsctr_nm AS prsctrNm
, a.req_state_cd AS reqStateCd
FROM
<include refid="CndtnTrgtInfoMngDAO.table_name"/> a
WHERE
@ -938,7 +946,7 @@
, LAST_UPDUSR_ID = #lastUpdusrId#
<isNotEmpty property="rmrks">
, rmrks = rmrks || #rmrks#
, rmrks = COALESCE(rmrks, '') || #rmrks#
</isNotEmpty>
WHERE SSPN_IDTMT_TRGT_ORD IN

View File

@ -806,7 +806,11 @@
ELSE ''
END trgtSex ,
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
/* 설문했으면 ID가 있음 - 예전 정보로 삭제*/
/*
qe.QESTNR_ID AS qestnrId ,
*/
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
vadi.CNCL_CN AS cnclCn, /* 취소사유 */
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId, /* 취소요청파일 */
@ -820,6 +824,217 @@
vsit.d_birth AS dBirth ,
CASE
WHEN to_char(NOW(),
'YYYY.MM.DD') >= COALESCE(vpap.edu_ddln_pnttm,
vpap.edu_strt_pnttm) THEN 1
ELSE 0
END AS qestRsltExists,
/* 설문지 정보 */
I.qustnr_tmplat_id AS qustnrTmplatId ,
COALESCE(i.qestnr_id_10, qustnr01.QESTNR_ID_10
) AS qestnrId10 ,
COALESCE(i.qestnr_id_20, qustnr01.QESTNR_ID_20
) AS qestnrId20 ,
COALESCE(i.qestnr_id_30, qustnr01.QESTNR_ID_30
) AS qestnrId30 ,
/* 답변 정보 */
qustnr01.QESTNR_ID_10_CNT AS qestnrId10Cnt ,
qustnr01.QESTNR_ID_20_CNT AS qestnrId20Cnt ,
qustnr01.QESTNR_ID_30_CNT AS qestnrId30Cnt
FROM
<include refid="VEEduMIXDAO.table_name"/> a
JOIN ve_prcs_aplct_prd vpap ON
a.PRCS_ORD = vpap.PRCS_APLCT_PRD_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 LETTNGNRLMBER le ON
/*
a.USER_ID = le.MBER_ID
*/
a.USER_ID = le.esntl_id
/*
LEFT JOIN LETTNQESTNRINFO qe ON
a.USER_ID = qe.FRST_REGISTER_ID
*/
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit
ON (
/*
a.user_id = vsit.user_id
AND a.edu_aplct_ord=vsit.edu_aplct_ord
*/
/*
신청할때 대상자 정보를 rnds_ord에 넣는다.
*/
a.rnds_ord=vsit.SSPN_IDTMT_TRGT_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 ELSE NULL END) AS QESTNR_ID_10,
MAX(CASE WHEN bb.site_id_cd = '20' THEN aa.QESTNR_ID ELSE NULL END) AS QESTNR_ID_20,
MAX(CASE WHEN bb.site_id_cd = '30' THEN aa.QESTNR_ID ELSE NULL 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 b.respond_id = a.user_id */
AND a.edu_aplct_ord = b.edu_aplct_ord
AND (b.EDU_CHASI_ORD IS NULL or b.EDU_CHASI_ORD = '')
)aa ,
lettnqestnrinfo bb
WHERE
/*
aa.qustnr_tmplat_id = bb.qustnr_tmplat_id
*/
1=1
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 ,
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
*/
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')
GROUP BY
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID
*/
) I ON
(replace(vpap.edu_strt_pnttm,'.','') between coalesce(I.qustnr_bgnde, '20000101') and coalesce(I.qustnr_endde,'99991231'))
WHERE
1=1
<isNotEmpty property="prcsOrd">
AND a.prcs_ord=#prcsOrd#
</isNotEmpty>
<isNotEmpty property="sbmtYn">
AND a.sbmt_yn=#sbmtYn#
</isNotEmpty>
<isNotEmpty property="searchSelStatus">
AND a.aprvl_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty property="searchQuery">
$searchQuery$
</isNotEmpty>
<isNotEmpty property="searchSmbtStartDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchSmbtStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchSmbtEndDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '')
</isNotEmpty>
AND a.use_yn = 'Y'
/* 승인(20), 취소요청(35), 취소승인(40), 확정(60)된 사람만 보여줌 old */
AND a.aprvl_cd IN ('20', '35', '40', '60')
/* 요청(10), 승인(20), 반려(30), 확정(60) 이건 교육확정된 것 이므로 확정된 사람기준으로 보여줌 */
AND a.aprvl_cd IN ('60')
ORDER BY a.frst_regist_pnttm ASC
</select>
<select id="VEEduMIXDAO.selectCmdTrgtList4Cmplt" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectCmdTrgtList4Cmplt */
SELECT
ROW_NUMBER() OVER(
ORDER BY a.frst_regist_pnttm ASC) AS rowNo,
vpap.TITLE AS title,
vsit.CMPTNT_ATHRT AS cmptntAthrt,
vsit.VNT_YEAR AS vntYear,
vsit.VNT_NMBR AS vntNmbr,
vsit.PRSCTR_NM AS prsctrNm,
vsit.req_nmbr AS reqNmbr,
CASE
WHEN vsit.sex = 'M' THEN '남성'
WHEN vsit.sex = 'F' THEN '여성'
ELSE ''
END trgtSex ,
/* 설문했으면 ID가 있음 - 옛날 방식으로 삭제처리함*/
/*
qe.QESTNR_ID AS qestnrId ,
*/
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,
<include refid="VEEduMIXDAO.select_column_name"/>,
vsit.trgt_nm AS trgtNm,
vsit.cmd_trgt_info_ord AS cmdTrgtInfoOrd,
vsit.clphone AS vs_clphone,
vsit.d_birth AS dBirth ,
CASE
WHEN to_char(NOW(),
'YYYY.MM.DD') > COALESCE(vpap.edu_ddln_pnttm,
@ -847,14 +1062,16 @@
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 */
JOIN LETTNGNRLMBER le ON
LEFT OUTER JOIN LETTNGNRLMBER le ON
/*
a.USER_ID = le.MBER_ID
*/
a.USER_ID = le.esntl_id
/*
LEFT JOIN LETTNQESTNRINFO qe ON
a.USER_ID = qe.FRST_REGISTER_ID
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit
a.USER_ID = qe.FRST_REGISTER_ID
*/
LEFT JOIN vea_cmd_trgt_info vsit
ON (
/*
a.user_id = vsit.user_id
@ -863,7 +1080,7 @@
/*
신청할때 대상자 정보를 rnds_ord에 넣는다.
*/
a.rnds_ord=vsit.SSPN_IDTMT_TRGT_ORD
a.rnds_ord=vsit.cmd_trgt_info_ord
)
@ -1805,7 +2022,7 @@
/*
ORDER BY 1=1
*/
ORDER BY
ORDER BY
<isNotEmpty property="orderByQuery">
$orderByQuery$
</isNotEmpty>
@ -8750,6 +8967,31 @@ VALUES
sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</update>
<update id="VEEduMIXDAO.updateCmdEduStateCd" parameterClass="VEEduAplctVO">
/* VEEduMIXDAO.updateEduStateCd */
UPDATE
vea_cmd_trgt_info
SET
edu_state_cd = #eduStateCd#
/* 교육코드가 10(미이수),60(연기) 이면 미완료 처리(교육이력을 남기기위해 의뢰와 구분용..의뢰는 교육 경험이 없는 경우, 미완료는 교육 이수에 실패한 경우) */
<isEqual property="eduStateCd" compareValue="10">
, req_state_cd = '35'
</isEqual>
<isEqual property="eduStateCd" compareValue="60">
, req_state_cd = '35'
</isEqual>
/* 교육코드가 20(이수) 이면 완료 처리 */
<isEqual property="eduStateCd" compareValue="20">
, req_state_cd = '30'
</isEqual>
WHERE
cmd_trgt_info_ord = #cmdTrgtInfoOrd#
</update>
<update id="VEEduMIXDAO.updateAplctEmail" parameterClass="VEEduAplctVO">
/* VEEduMIXDAO.AplctEmail */
@ -10259,7 +10501,7 @@ VALUES
<iterate open="(" close=")" conjunction="," property="rsltList" prepend="AND b.edu_chasi_ord IN" > #rsltList[]#</iterate>
ORDER BY b.EDU_HOPE_DT ASC, B.STRT_TM ASC;
</select>
<select id="VEEduMIXDAO.selectExprnRsltFileDownList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnRsltFileDownList */
SELECT
@ -10281,4 +10523,164 @@ VALUES
</iterate>
</select>
<select id="VEEduMIXDAO.selectCrtfcMngList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
SELECT
ROW_NUMBER() OVER ( ORDER BY a.frst_regist_pnttm ASC) AS rowNo
, count(*) over () AS totCnt
, vpap.TITLE AS title
, vsit.CMPTNT_ATHRT AS cmptntAthrt
, vsit.VNT_YEAR AS vntYear
, vsit.VNT_NMBR AS vntNmbr
, vsit.PRSCTR_NM AS prsctrNm
, vsit.req_nmbr AS reqNmbr
, CASE WHEN vsit.sex = 'M' THEN '남성' WHEN vsit.sex = 'F' THEN '여성' ELSE '' END trgtSex
, /* 설문했으면 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
, a.edu_aplct_ord AS eduAplctOrd
, a.lctr_div_cd AS lctrDivCd
, a.user_id AS userId
, a.prcs_ord AS prcsOrd
, a.edu_slct_cd AS eduSlctCd
, a.edu_slct_area_cd AS eduSlctAreaCd
, a.schol_instt_nm AS scholInsttNm
, a.schol_div_cd AS scholDivCd
, a.isltn_schol_yn AS isltnScholYn
, a.addr AS addr
, a.addr_detail AS addrDetail
, a.chrg_nm AS chrgNm
, a.d_birth AS dBirth
, a.clphone AS clphone
, a.phone AS phone
, a.email AS email
, a.edu_place AS eduPlace
, a.sbmt_yn AS sbmtYn
, TO_CHAR(a.sbmt_pnttm, 'YYYY-MM-DD') AS sbmtPnttm
, a.aprvl_cd AS aprvlCd
, TO_CHAR(a.aprvl_pnttm, 'YYYY-MM-DD') AS aprvlPnttm
, a.aprvl_cn AS aprvlCn
, a.instt_nm AS insttNm
, a.instt_div_cd AS insttDivCd
, a.hope_sbjct AS hopeSbjct
, a.rqst_cn AS rqstCn
, TO_CHAR(a.frst_regist_pnttm, 'YYYY-MM-DD') AS frstRegistPnttm
, a.frst_register_id AS frstRegisterId
, TO_CHAR(a.last_updt_pnttm, 'YYYY-MM-DD') AS lastUpdtPnttm
, a.last_updusr_id AS lastUpdusrId
, a.schol_seal_atch_file_id AS scholSealAtchFileId
, a.edu_trgt AS eduTrgt
, a.edu_prsnl AS eduPrsnl
, a.edu_cn AS eduCn
, a.strt_oprtn_dt AS strtOprtnDt
, a.end_oprtn_dt AS endOprtnDt
, a.rprt_sbmt_dt AS rprtSbmtDt
, a.trans_atch_file_id AS transAtchFileId
, a.use_yn AS useYn
, a.aplct_cn AS aplctCn
, a.rslt_atch_file_id AS rsltAtchFileId
, vsit.trgt_nm AS trgtNm
, vsit.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
, vsit.clphone AS vs_clphone
, vsit.d_birth AS dBirth
, CASE
WHEN TO_CHAR(NOW(), 'YYYY.MM.DD') > COALESCE(vpap.edu_ddln_pnttm, vpap.edu_strt_pnttm) THEN 1
ELSE 0 END AS qestRsltExists
, /* 설문지 정보 */ I.qustnr_tmplat_id AS qustnrTmplatId
, COALESCE(qustnr01.QESTNR_ID_10, i.qestnr_id_10) AS qestnrId10
, COALESCE(qustnr01.QESTNR_ID_20, i.qestnr_id_20) AS qestnrId20
, COALESCE(qustnr01.QESTNR_ID_30, i.qestnr_id_30) AS qestnrId30
, /* 답변 정보 */ qustnr01.QESTNR_ID_10_CNT AS qestnrId10Cnt
, qustnr01.QESTNR_ID_20_CNT AS qestnrId20Cnt
, qustnr01.QESTNR_ID_30_CNT AS qestnrId30Cnt
FROM
ve_edu_aplct a
JOIN ve_prcs_aplct_prd vpap ON a.PRCS_ORD = vpap.PRCS_APLCT_PRD_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 LETTNGNRLMBER le ON /* a.USER_ID = le.MBER_ID */ a.USER_ID = le.esntl_id
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit ON (a.rnds_ord = vsit.SSPN_IDTMT_TRGT_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 ELSE NULL END) AS QESTNR_ID_10
, MAX(CASE WHEN bb.site_id_cd = '20' THEN aa.QESTNR_ID ELSE NULL END) AS QESTNR_ID_20
, MAX(CASE WHEN bb.site_id_cd = '30' THEN aa.QESTNR_ID ELSE NULL 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 b.respond_id = a.user_id */
AND a.edu_aplct_ord = b.edu_aplct_ord
AND (b.EDU_CHASI_ORD IS NULL OR b.EDU_CHASI_ORD = '')) aa
, lettnqestnrinfo bb
WHERE /* aa.qustnr_tmplat_id = bb.qustnr_tmplat_id */
1 = 1
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
, 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 */
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = '60'
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')
GROUP BY a.QUSTNR_TMPLAT_ID , a.SITE_ID */ ) I
ON (vpap.edu_strt_pnttm BETWEEN COALESCE(I.qustnr_bgnde, '20000101')
AND COALESCE(I.qustnr_endde, '99991231'))
WHERE
1 = 1
AND a.sbmt_yn = 'Y'
AND a.use_yn = 'Y' /* 승인(20), 취소요청(35), 취소승인(40), 확정(60)된 사람만 보여줌 old */
AND a.aprvl_cd IN ('60')
AND a.lctr_div_cd = #lctrDivCd#
AND vadi.APLCT_STATE_CD = '20'
AND (qustnr01.QESTNR_ID_10_CNT <![CDATA[ > ]]> 0 or le.MBER_ID is null)
<isNotEmpty property="searchKeyword" prepend="AND">
convert_from(
decrypt_iv(
decode(a.chrg_nm, 'base64'),
convert_to('A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6', 'UTF8'),
convert_to('1234567890ABCDEF', 'UTF8'),
'aes-cbc'
),
'UTF8'
) = #searchKeyword#
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
</select>
</sqlMap>

View File

@ -57,6 +57,29 @@
memo,
sig_memo,
hope_edu_fld
, rep_qf
, sub_qf
, work_area
, lct_avl_area_1
, lct_avl_area_2
, lct_avl_area_3
, lct_avl_area_4
, lct_avl_area_5
, lct_avl_area_6
, avl_lct_cntnt_1
, avl_lct_cntnt_2
, avl_lct_cntnt_3
, gender
, rcrt_ctgr
, apnt_dt
, actv_dt
, ovrl_srvy
, carer
</sql>
@ -135,6 +158,28 @@
a.memo AS memo,
a.sig_memo AS sigMemo,
a.hope_edu_fld AS hopeEduFld
, a.rep_qf AS repQf
, a.sub_qf AS subQf
, a.work_area AS workArea
, a.lct_avl_area_1 AS lctAvlArea1
, a.lct_avl_area_2 AS lctAvlArea2
, a.lct_avl_area_3 AS lctAvlArea3
, a.lct_avl_area_4 AS lctAvlArea4
, a.lct_avl_area_5 AS lctAvlArea5
, a.lct_avl_area_6 AS lctAvlArea6
, a.avl_lct_cntnt_1 AS avlLctCntnt1
, a.avl_lct_cntnt_2 AS avlLctCntnt2
, a.avl_lct_cntnt_3 AS avlLctCntnt3
, a.gender AS gender
, a.rcrt_ctgr AS rcrtCtgr
, a.apnt_dt AS apntDt
, a.actv_dt AS actvDt
, a.ovrl_srvy AS ovrlSrvy
, a.carer AS carer
</sql>
@ -202,6 +247,72 @@
#memo#,
#sigMemo#,
#hopeEduFld#
, #repQf#
, #subQf#
, #workArea#
<isNotEmpty property="lctAvlArea1">
, 'Y'
</isNotEmpty><isEmpty property="lctAvlArea1">
, 'N'
</isEmpty>
<isNotEmpty property="lctAvlArea2">
, 'Y'
</isNotEmpty><isEmpty property="lctAvlArea2">
, 'N'
</isEmpty>
<isNotEmpty property="lctAvlArea3">
, 'Y'
</isNotEmpty><isEmpty property="lctAvlArea3">
, 'N'
</isEmpty>
<isNotEmpty property="lctAvlArea4">
, 'Y'
</isNotEmpty><isEmpty property="lctAvlArea4">
, 'N'
</isEmpty>
<isNotEmpty property="lctAvlArea5">
, 'Y'
</isNotEmpty><isEmpty property="lctAvlArea5">
, 'N'
</isEmpty>
<isNotEmpty property="lctAvlArea6">
, 'Y'
</isNotEmpty><isEmpty property="lctAvlArea6">
, 'N'
</isEmpty>
<isNotEmpty property="avlLctCntnt1">
, 'Y'
</isNotEmpty><isEmpty property="avlLctCntnt1">
, 'N'
</isEmpty>
<isNotEmpty property="avlLctCntnt2">
, 'Y'
</isNotEmpty><isEmpty property="avlLctCntnt2">
, 'N'
</isEmpty>
<isNotEmpty property="avlLctCntnt3">
, 'Y'
</isNotEmpty><isEmpty property="avlLctCntnt3">
, 'N'
</isEmpty>
, #gender#
, #rcrtCtgr#
, #apntDt#
, #actvDt#
, #ovrlSrvy#
, #carer#
)
</insert>
@ -266,6 +377,28 @@
#memo#,
#sigMemo#,
#hopeEduFld#
, #repQf#
, #subQf#
, #workArea#
, #lctAvlArea1#
, #lctAvlArea2#
, #lctAvlArea3#
, #lctAvlArea4#
, #lctAvlArea5#
, #lctAvlArea6#
, #avlLctCntnt1#
, #avlLctCntnt2#
, #avlLctCntnt3#
, #gender#
, #rcrtCtgr#
, #apntDt#
, #actvDt#
, #ovrlSrvy#
, #carer#
)
ON
@ -321,6 +454,44 @@
, hope_edu_fld =EXCLUDED.hope_edu_fld
</isNotEmpty>
<isNotEmpty property="repQf">
, rep_qf =EXCLUDED.rep_qf
</isNotEmpty><isNotEmpty property="subQf">
, sub_qf =EXCLUDED.sub_qf
</isNotEmpty><isNotEmpty property="workArea">
, work_area =EXCLUDED.work_area
</isNotEmpty><isNotEmpty property="lctAvlArea1">
, lct_avl_area_1 =EXCLUDED.lct_avl_area_1
</isNotEmpty><isNotEmpty property="lctAvlArea2">
, lct_avl_area_2 =EXCLUDED.lct_avl_area_2
</isNotEmpty><isNotEmpty property="lctAvlArea3">
, lct_avl_area_3 =EXCLUDED.lct_avl_area_3
</isNotEmpty><isNotEmpty property="lctAvlArea4">
, lct_avl_area_4 =EXCLUDED.lct_avl_area_4
</isNotEmpty><isNotEmpty property="lctAvlArea5">
, lct_avl_area_5 =EXCLUDED.lct_avl_area_5
</isNotEmpty><isNotEmpty property="lctAvlArea6">
, lct_avl_area_6 =EXCLUDED.lct_avl_area_6
</isNotEmpty><isNotEmpty property="avlLctCntnt1">
, avl_lct_cntnt_1 =EXCLUDED.avl_lct_cntnt_1
</isNotEmpty><isNotEmpty property="avlLctCntnt2">
, avl_lct_cntnt_2 =EXCLUDED.avl_lct_cntnt_2
</isNotEmpty><isNotEmpty property="avlLctCntnt3">
, avl_lct_cntnt_3 =EXCLUDED.avl_lct_cntnt_3
</isNotEmpty><isNotEmpty property="gender">
, gender =EXCLUDED.gender
</isNotEmpty><isNotEmpty property="rcrtCtgr">
, rcrt_ctgr =EXCLUDED.rcrt_ctgr
</isNotEmpty><isNotEmpty property="apntDt">
, apnt_dt =EXCLUDED.apnt_dt
</isNotEmpty><isNotEmpty property="actvDt">
, actv_dt =EXCLUDED.actv_dt
</isNotEmpty><isNotEmpty property="ovrlSrvy">
, ovrl_srvy =EXCLUDED.ovrl_srvy
</isNotEmpty><isNotEmpty property="carer">
, carer =EXCLUDED.carer
</isNotEmpty>
</insert>
<!-- 강사 등록 C -->
@ -602,6 +773,85 @@
<isNotEmpty property="repQf">
rep_qf =#repQf#,
</isNotEmpty><isNotEmpty property="subQf">
sub_qf =#subQf#,
</isNotEmpty><isNotEmpty property="workArea">
work_area =#workArea#,
</isNotEmpty>
<isNotEmpty property="lctAvlArea1">
lct_avl_area_1 ='Y',
</isNotEmpty><isEmpty property="lctAvlArea1">
lct_avl_area_1 ='N',
</isEmpty>
<isNotEmpty property="lctAvlArea2">
lct_avl_area_2 ='Y',
</isNotEmpty><isEmpty property="lctAvlArea2">
lct_avl_area_2 ='N',
</isEmpty>
<isNotEmpty property="lctAvlArea3">
lct_avl_area_3 ='Y',
</isNotEmpty><isEmpty property="lctAvlArea3">
lct_avl_area_3 ='N',
</isEmpty>
<isNotEmpty property="lctAvlArea4">
lct_avl_area_4 ='Y',
</isNotEmpty><isEmpty property="lctAvlArea4">
lct_avl_area_4 ='N',
</isEmpty>
<isNotEmpty property="lctAvlArea5">
lct_avl_area_5 ='Y',
</isNotEmpty><isEmpty property="lctAvlArea5">
lct_avl_area_5 ='N',
</isEmpty>
<isNotEmpty property="lctAvlArea6">
lct_avl_area_6 ='Y',
</isNotEmpty><isEmpty property="lctAvlArea6">
lct_avl_area_6 ='N',
</isEmpty>
<isNotEmpty property="avlLctCntnt1">
avl_lct_cntnt_1 ='Y',
</isNotEmpty><isEmpty property="avlLctCntnt1">
avl_lct_cntnt_1 ='N',
</isEmpty>
<isNotEmpty property="avlLctCntnt2">
avl_lct_cntnt_2 ='Y',
</isNotEmpty><isEmpty property="avlLctCntnt2">
avl_lct_cntnt_2 ='N',
</isEmpty>
<isNotEmpty property="avlLctCntnt3">
avl_lct_cntnt_3 ='Y',
</isNotEmpty><isEmpty property="avlLctCntnt3">
avl_lct_cntnt_3 ='N',
</isEmpty>
<isNotEmpty property="gender">
gender =#gender#,
</isNotEmpty><isNotEmpty property="rcrtCtgr">
rcrt_ctgr =#rcrtCtgr#,
</isNotEmpty><isNotEmpty property="apntDt">
apnt_dt =#apntDt#,
</isNotEmpty><isNotEmpty property="actvDt">
actv_dt =#actvDt#,
</isNotEmpty><isNotEmpty property="ovrlSrvy">
ovrl_srvy =#ovrlSrvy#,
</isNotEmpty><isNotEmpty property="carer">
carer =#carer#,
</isNotEmpty>
<!-- 요청 시 기존 반려 사유 삭제 -->
<isEqual property="aprvlCd" compareValue="10">

View File

@ -130,6 +130,28 @@
a.qlfct_end_cn AS qlfctEndCn,
a.div_cd AS divCd,
a.hope_edu_fld AS hopeEduFld
, a.rep_qf AS repQf
, a.sub_qf AS subQf
, a.work_area AS workArea
, a.lct_avl_area_1 AS lctAvlArea1
, a.lct_avl_area_2 AS lctAvlArea2
, a.lct_avl_area_3 AS lctAvlArea3
, a.lct_avl_area_4 AS lctAvlArea4
, a.lct_avl_area_5 AS lctAvlArea5
, a.lct_avl_area_6 AS lctAvlArea6
, a.avl_lct_cntnt_1 AS avlLctCntnt1
, a.avl_lct_cntnt_2 AS avlLctCntnt2
, a.avl_lct_cntnt_3 AS avlLctCntnt3
, a.gender AS gender
, a.rcrt_ctgr AS rcrtCtgr
, a.apnt_dt AS apntDt
, a.actv_dt AS actvDt
, a.ovrl_srvy AS ovrlSrvy
, a.carer AS carer
</sql>
<!-- 강사 정보 R -->

View File

@ -3035,7 +3035,7 @@
substring(req_nmbr,1,1) AS CMPTNT_ATHRT ,
count(*) AS cnt
FROM
vea_sspn_idmt_trgt a
vea_cmd_trgt_info a
,
ve_edu_aplct b ,
@ -3052,7 +3052,7 @@
AND SUBSTRING(c.edu_strt_pnttm, 1, 4)=#mngNmbrYr#
AND b.aprvl_cd = '60'
AND b.prcs_ord = c.prcs_aplct_prd_ord
AND a.sspn_idtmt_trgt_ord = b.rnds_ord
AND a.cmd_trgt_info_ord = b.rnds_ord
/* 병합제거시 주석 제거 할것

View File

@ -205,7 +205,12 @@
AND vid.aprvl_cd ='20'
*/
AND vid.instr_div =#lctrDivCd#
/*
AND vid.instr_div =lctrDivCd
*/
/* 기소유예의 강사만 사용하므로 고정한다. */
AND vid.instr_div ='60'
AND vid.use_yn ='Y'
</select>

View File

@ -92,6 +92,7 @@
INSERT INTO <include refid="table_name"/> (
<include refid="column_name"/>
,oprtn_atch_file_id
,prvt_memo_cn
)VALUES(
@ -129,6 +130,7 @@
,#qustnrTm#
,#oprtnAtchFileId#
,#prvtMemoCn#
)
</insert>
@ -302,7 +304,11 @@
<isNotEmpty property="oprtnAtchFileId">
, oprtn_atch_file_id = #oprtnAtchFileId#
</isNotEmpty>
</isNotEmpty>
<isNotEmpty property="prvtMemoCn">
, prvt_memo_cn = #prvtMemoCn#
</isNotEmpty>
WHERE
prcs_aplct_prd_ord = #prcsAplctPrdOrd#
@ -657,7 +663,7 @@
, (SELECT COUNT(*)
FROM ve_edu_aplct x
JOIN LETTNGNRLMBER le ON
LEFT OUTER JOIN LETTNGNRLMBER le ON
x.USER_ID = le.ESNTL_ID
WHERE x.prcs_ord = a.prcs_aplct_prd_ord
AND x.sbmt_yn='Y'
@ -921,12 +927,58 @@
a.rmrks AS rmrks,
a.memo AS memo,
a.sig_memo AS sigMemo
, a.rep_qf AS repQf
, a.sub_qf AS subQf
, a.work_area AS workArea
, a.lct_avl_area_1 AS lctAvlArea1
, a.lct_avl_area_2 AS lctAvlArea2
, a.lct_avl_area_3 AS lctAvlArea3
, a.lct_avl_area_4 AS lctAvlArea4
, a.lct_avl_area_5 AS lctAvlArea5
, a.lct_avl_area_6 AS lctAvlArea6
, a.avl_lct_cntnt_1 AS avlLctCntnt1
, a.avl_lct_cntnt_2 AS avlLctCntnt2
, a.avl_lct_cntnt_3 AS avlLctCntnt3
, a.gender AS gender
, a.rcrt_ctgr AS rcrtCtgr
, a.apnt_dt AS apntDt
, a.actv_dt AS actvDt
, a.ovrl_srvy AS ovrlSrvy
, a.carer AS carer
, COALESCE(c.cnt,0) as cnt
, COALESCE(c.yearcnt,0) as yearcnt
FROM
ve_instr b
, ve_instr_detail a
, ve_instr_detail a
LEFT OUTER JOIN (
select user_id, count(*) as cnt, sum(edu) as yearcnt
from (
select a.user_id
, CASE
WHEN 365 > (now()::date - b.edu_strt_pnttm::date) THEN 1
ELSE 0
END AS edu
from vea_prcs_aplct_prd_instr_asgnm a
, ve_prcs_aplct_prd b
where a.prcs_aplct_prd_ord =b.prcs_aplct_prd_ord
)aa
group by user_id
)c
ON(1=1 AND a.user_id = c.user_id)
WHERE
1=1
AND a.user_id=b.user_id
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
@ -1469,8 +1521,8 @@
where
a.lctr_div_cd = #lctrDivCd#
and a.user_id = #userId#
<!-- a.lctr_div_cd = #lctrDivCd#
and --> a.user_id = #userId#
<isNotEmpty property="eduAplctOrd">
AND a.edu_aplct_ord=#eduAplctOrd#
@ -1598,6 +1650,7 @@
, b.aplct_state_cd AS aplctStateCd
, c.lctr_div_cd AS lctrDivCd
FROM ve_prcs_aplct_prd a
, ve_edu_aplct c
@ -1726,7 +1779,7 @@
CASE
WHEN to_char(now(), 'YYYY.MM.DD') > COALESCE(vpap.edu_ddln_pnttm,vpap.edu_strt_pnttm) THEN 1
WHEN to_char(now(), 'YYYY.MM.DD') >= COALESCE(vpap.edu_ddln_pnttm,vpap.edu_strt_pnttm) THEN 1
ELSE 0
END AS qestRsltExists,
@ -1738,17 +1791,31 @@
/* 설문지 정보 */
I10.qustnr_tmplat_id AS qustnrTmplatId ,
/*
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 ,
I10.qestnr_id_10 as qestnrId10 ,
I20.qestnr_id_20 as qestnrId20 ,
I30.qestnr_id_30 as qestnrId30 ,
/*
COALESCE(I10.qestnr_id_10, qustnr01.QESTNR_ID_10) AS qestnrId10 ,
COALESCE(I20.qestnr_id_20, qustnr01.QESTNR_ID_20) AS qestnrId20 ,
COALESCE(I30.qestnr_id_30, qustnr01.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 ,
*/
coalesce(I10.qestnr_id_10_cnt, 0) as qestnrId10Cnt ,
0 as qestnrId20Cnt ,
0 as qestnrId30Cnt ,
a.lctr_div_cd AS lctrDivCd
from
@ -1761,87 +1828,112 @@
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')
*/
a.SITE_ID IN ('60','70','80')
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
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
*/
/*
SELECT site_id, min(qestnr_id_10) as qestnr_id_10
*/
select a00.prcs_ord,
a00.site_id,
a00.qestnr_id_10,
b00.cnt as qestnr_id_10_cnt,
a00.edu_aplct_ord
from (
SELECT a0.prcs_ord, a0.site_id, a0.qestnr_id_10, a0.edu_aplct_ord
FROM (
select
b0.prcs_ord,
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,
b0.edu_aplct_ord
from
LETTNQESTNRINFO a
, (
select
a.prcs_ord ,
b.edu_strt_pnttm ,
b.lctr_div_cd ,
a.edu_aplct_ord
from
ve_edu_aplct a
, ve_prcs_aplct_prd b
where
1 = 1
and a.user_id = #userId#
and a.prcs_ord=b.prcs_aplct_prd_ord
)b0
where
a.SITE_ID in ('60', '70', '80')/* 각 개별적인 분류를 볼때 a.SITE_ID = siteId */
and a.site_id=b0.lctr_div_cd
/*
AND a.SITE_ID_CD IN ('10') */
/*
AND a.STTUS IN ('1') */
and replace(b0.edu_strt_pnttm,'.','') 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')
)a0
/*
group by a0.site_id
*/
GROUP BY a0.prcs_ord, a0.site_id, a0.qestnr_id_10, a0.edu_aplct_ord
)a00
left outer join
(
select b.edu_aplct_ord, b.qestnr_id, count(*) cnt
from LETTNQESTNRRSLTDETAIL b
where b.frst_register_id =#userId#
group by b.edu_aplct_ord, b.qestnr_id
)b00
on(a00.qestnr_id_10=b00.qestnr_id
and a00.edu_aplct_ord=b00.edu_aplct_ord
)
) I10 ON
(1 = 1)
(1 = 1 and a.lctr_div_cd = I10.site_id
and a.prcs_ord = I10.prcs_ord
and a.edu_aplct_ord = I10.edu_aplct_ord
)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
@ -1905,7 +1997,7 @@
) I30 ON
(1 = 1)
where
where
a.user_id = #userId#
<isNotEmpty property="searchStartDt">
@ -1917,10 +2009,10 @@
</isNotEmpty>
<isEqual property="searchStatus" compareValue="5"> /*VEA003 미이수 : 수강중 강의*/
AND vadi.aplct_state_cd = '10'
</isEqual>
</isEqual>
<isEqual property="searchStatus" compareValue="30"> /*취소 : 취소*/
AND vadi.aplct_state_cd = #searchStatus#
</isEqual>
</isEqual>
<isEqual property="searchStatus" compareValue="20"> /*이수완료 : 종료 강의*/
AND vadi.aplct_state_cd is not null
AND a.aprvl_cd = #searchStatus#
@ -1928,14 +2020,290 @@
<isEqual property="searchStatus" compareValue="15"> /*수강중 강의*/
AND vadi.aplct_state_cd is null
AND a.aprvl_cd = '20'
</isEqual>
</isEqual>
<isEqual property="searchStatus" compareValue="10"> /*요청 : 요청 강의*/
AND a.aprvl_cd = #searchStatus#
</isEqual>
</isEqual>
<isEqual property="searchStatus" compareValue="Completed"> /*요청 : 완료된 강의*/
AND a.APRVL_CD ='60'
AND to_char(now(), 'YYYY.MM.DD') > vpap.edu_strt_pnttm
</isEqual>
<isEqual property="searchStatus" compareValue="InClass"> /*요청 : 수강중 강의*/
AND a.APRVL_CD ='60'
AND vpap.edu_strt_pnttm >= to_char(now(), 'YYYY.MM.DD')
</isEqual>
<isEqual property="searchStatus" compareValue="Aplct"> /*요청 : 수강중 강의*/
AND a.APRVL_CD IN('10', '20')
AND vpap.edu_strt_pnttm >= to_char(now(), 'YYYY.MM.DD')
</isEqual>
ORDER BY vpap.edu_strt_pnttm desc
LIMIT #recordCountPerPage# OFFSET #firstIndex#
<!-- LIMIT #recordCountPerPage# OFFSET #firstIndex# -->
</select>
<select id="selectCompleteDocDetail" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
SELECT b.prcs_aplct_prd_ord AS prcsAplctPdrOrd,
a.lctr_div_cd AS lctrDivCd,
b.edu_cmplt_crtfc_nmbr AS eduCmpltCrtfcNmbr,
c.title AS title,
c.edu_strt_pnttm AS eduStrtPnttm,
a.chrg_nm AS chrgNm
FROM ve_edu_aplct a
LEFT JOIN vea_aplct_detail_info b ON a.edu_aplct_ord = b.edu_aplct_ord
LEFT JOIN ve_prcs_aplct_prd c ON c.prcs_aplct_prd_ord = b.prcs_aplct_prd_ord
WHERE
b.prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND b.aplct_state_cd = '20'
AND a.edu_aplct_ord = #eduAplctOrd#
</select>
<select id="selectMainContent" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.selectPagingList4Fndth */
WITH
a AS (SELECT
t1.prcs_aplct_prd_ord
, t1.prcs_ord
, t1.lctr_div_cd
, t1.strt_pnttm
, t1.end_pnttm
, t1.use_yn
, t1.frst_regist_pnttm
, t1.frst_register_id
, t1.last_updt_pnttm
, t1.last_updusr_id
, t1.anncm_cn
, t1.popup_cn
, t1.atch_file_id
, t1.title
, t1.dead_line_dt
, t1.edu_part_cd
, t1.nos
, t1.ddln_cd
, t1.edu_strt_pnttm
, t1.edu_ddln_pnttm
, t1.dprtm_nm
, t1.cn_atch_file_id
, t1.oprtn_atch_file_id
FROM
(SELECT
t1.prcs_aplct_prd_ord
, t1.prcs_ord
, t1.lctr_div_cd
, t1.strt_pnttm
, t1.end_pnttm
, t1.use_yn
, t1.frst_regist_pnttm
, t1.frst_register_id
, t1.last_updt_pnttm
, t1.last_updusr_id
, t1.anncm_cn
, t1.popup_cn
, t1.atch_file_id
, t1.title
, t1.dead_line_dt
, t1.edu_part_cd
, t1.nos
, t1.ddln_cd
, t1.edu_strt_pnttm
, t1.edu_ddln_pnttm
, t1.dprtm_nm
, t1.cn_atch_file_id
, t1.oprtn_atch_file_id
FROM
ve_prcs_aplct_prd t1
WHERE
t1.lctr_div_cd = '60'
ORDER BY t1.prcs_aplct_prd_ord DESC
LIMIT 4) t1
UNION ALL
SELECT
t2.prcs_aplct_prd_ord
, t2.prcs_ord
, t2.lctr_div_cd
, t2.strt_pnttm
, t2.end_pnttm
, t2.use_yn
, t2.frst_regist_pnttm
, t2.frst_register_id
, t2.last_updt_pnttm
, t2.last_updusr_id
, t2.anncm_cn
, t2.popup_cn
, t2.atch_file_id
, t2.title
, t2.dead_line_dt
, t2.edu_part_cd
, t2.nos
, t2.ddln_cd
, t2.edu_strt_pnttm
, t2.edu_ddln_pnttm
, t2.dprtm_nm
, t2.cn_atch_file_id
, t2.oprtn_atch_file_id
FROM
(SELECT
t1.prcs_aplct_prd_ord
, t1.prcs_ord
, t1.lctr_div_cd
, t1.strt_pnttm
, t1.end_pnttm
, t1.use_yn
, t1.frst_regist_pnttm
, t1.frst_register_id
, t1.last_updt_pnttm
, t1.last_updusr_id
, t1.anncm_cn
, t1.popup_cn
, t1.atch_file_id
, t1.title
, t1.dead_line_dt
, t1.edu_part_cd
, t1.nos
, t1.ddln_cd
, t1.edu_strt_pnttm
, t1.edu_ddln_pnttm
, t1.dprtm_nm
, t1.cn_atch_file_id
, t1.oprtn_atch_file_id
FROM
ve_prcs_aplct_prd t1
WHERE
t1.lctr_div_cd = '70'
ORDER BY t1.prcs_aplct_prd_ord DESC
LIMIT 4) t2
UNION ALL
SELECT
t3.prcs_aplct_prd_ord
, t3.prcs_ord
, t3.lctr_div_cd
, t3.strt_pnttm
, t3.end_pnttm
, t3.use_yn
, t3.frst_regist_pnttm
, t3.frst_register_id
, t3.last_updt_pnttm
, t3.last_updusr_id
, t3.anncm_cn
, t3.popup_cn
, t3.atch_file_id
, t3.title
, t3.dead_line_dt
, t3.edu_part_cd
, t3.nos
, t3.ddln_cd
, t3.edu_strt_pnttm
, t3.edu_ddln_pnttm
, t3.dprtm_nm
, t3.cn_atch_file_id
, t3.oprtn_atch_file_id
FROM
(SELECT
t1.prcs_aplct_prd_ord
, t1.prcs_ord
, t1.lctr_div_cd
, t1.strt_pnttm
, t1.end_pnttm
, t1.use_yn
, t1.frst_regist_pnttm
, t1.frst_register_id
, t1.last_updt_pnttm
, t1.last_updusr_id
, t1.anncm_cn
, t1.popup_cn
, t1.atch_file_id
, t1.title
, t1.dead_line_dt
, t1.edu_part_cd
, t1.nos
, t1.ddln_cd
, t1.edu_strt_pnttm
, t1.edu_ddln_pnttm
, t1.dprtm_nm
, t1.cn_atch_file_id
, t1.oprtn_atch_file_id
FROM
ve_prcs_aplct_prd t1
WHERE
t1.lctr_div_cd = '80'
ORDER BY t1.prcs_aplct_prd_ord DESC
LIMIT 4) t3)
SELECT
COUNT(1) OVER () AS totCnt
, a.prcs_aplct_prd_ord AS prcsAplctPrdOrd
, a.lctr_div_cd AS lctrDivCd
, TO_CHAR(TO_DATE(a.strt_pnttm, 'YYYY.MM.DD'), 'MM.DD') AS strtPnttm
, TO_CHAR(TO_DATE(a.end_pnttm, 'YYYY.MM.DD'), 'MM.DD') AS endPnttm
, a.use_yn AS useYn
, TO_CHAR(a.frst_regist_pnttm, 'YYYY-MM-DD') AS frstRegistPnttm
, a.frst_register_id AS frstRegisterId
, TO_CHAR(a.last_updt_pnttm, 'YYYY-MM-DD') AS lastUpdtPnttm
, a.last_updusr_id AS lastUpdusrId
, a.anncm_cn AS anncmCn
, a.popup_cn AS popupCn
, a.atch_file_id AS atchFileId
, a.title AS title
, a.dead_line_dt AS deadLineDt
, a.prcs_ord AS prcsOrd
, a.edu_part_cd AS eduPartCd
, a.nos AS nos
, a.ddln_cd AS ddlnCd
, CASE
WHEN NULLIF(BTRIM(code.code_nm), '') IS NULL THEN
CASE
WHEN CURRENT_DATE <![CDATA[ < ]]> TO_DATE(a.strt_pnttm, 'YYYY.MM.DD') THEN '접수전'
WHEN CURRENT_DATE BETWEEN TO_DATE(a.strt_pnttm, 'YYYY.MM.DD')
AND TO_DATE(a.end_pnttm, 'YYYY.MM.DD') THEN '접수중'
ELSE '접수종료'
END
ELSE code.code_nm
END AS ddlncdNm
, a.edu_strt_pnttm AS eduStrtPnttm
, a.edu_ddln_pnttm AS eduDdlnPnttm
, a.dprtm_nm AS dprtmNm
, a.cn_atch_file_id AS cnAtchFileId
, a.oprtn_atch_file_id AS oprtnAtchFileId
, (SELECT
user_nm
FROM
comvnusermaster
WHERE
esntl_id = a.frst_register_id
ORDER BY user_nm DESC
LIMIT 1) AS frstRegisterNm
, (SELECT
orignl_file_nm
FROM
lettnfiledetail
WHERE
atch_file_id = a.atch_file_id
LIMIT 1) AS atchFileNm
, b.prcs_nm AS prcsNm
, b.prcs_div AS prcsDiv
, (SELECT
COUNT(*)
FROM
ve_edu_aplct x
LEFT OUTER JOIN lettngnrlmber le ON x.user_id = le.esntl_id
WHERE
x.prcs_ord = a.prcs_aplct_prd_ord
AND x.sbmt_yn = 'Y'
AND x.aprvl_cd != '100') AS nosCnt1
FROM
a
JOIN ve_prcs b ON a.prcs_ord = b.prcs_ord
LEFT OUTER JOIN lettccmmndetailcode code ON a.ddln_cd = code.code AND code.code_id = 'VEA004'
ORDER BY
a.lctr_div_cd, a.prcs_aplct_prd_ord DESC
</select>
</sqlMap>

View File

@ -225,7 +225,14 @@
AND a.lctr_div_cd=#lctrDivCd#
</isNotEmpty>
AND COALESCE(A.USE_YN,'Y')!='D'
<isNull property="useYn">
AND COALESCE(A.USE_YN,'Y')!='D'
</isNull>
<isEqual property="useYn" compareValue="Y">
AND A.USE_YN ='Y'
</isEqual>
<isNotEmpty property="searchSmbtStartDt">
/*등록일시*/
@ -627,6 +634,51 @@
sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</update>
<!-- 대상자 취소시 대상자 테이블 정보 수정 -->
<update id="VEPrcsDAO.updateCmdIdmtTrgtCancelNew" parameterClass="VEPrcsDetailVO">
/* VEPrcsDAO.updateCmdIdmtTrgtCancelNew */
UPDATE
vea_cmd_trgt_info
SET
LAST_UPDT_PNTTM = NOW()
,LAST_UPDUSR_ID = #lastUpdusrId#
<isEqual property="reqNo" compareValue="2-1">
/* 신청 후 취소 */
, user_id = NULL
, edu_aplct_ord = NULL
, prcs_aplct_prd_ord_cmplt = NULL
</isEqual>
<isEqual property="reqNo" compareValue="4">
/* 신청 후 반려 */
, user_id = NULL
, edu_aplct_ord = NULL
, prcs_aplct_prd_ord_cmplt = NULL
</isEqual>
<isEqual property="reqNo" compareValue="6">
/* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */
/* , edu_state_cd = '30' */
/* , req_state_cd = '20' 의뢰상태는 교육의 취소, 확정과 관계없이 대상자의 의뢰 상태를 변경 하는것 이므로 여기서는 제외한다. */
</isEqual>
<isEqual property="reqNo" compareValue="6-1">
/* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */
/* , edu_state_cd = '30' */
/* , req_state_cd = '20' 의뢰상태는 교육의 취소, 확정과 관계없이 대상자의 의뢰 상태를 변경 하는것 이므로 여기서는 제외한다. */
</isEqual>
<isEqual property="reqNo" compareValue="6-2">
/* 취소 신청 승은(교육중단) edu_state_cd=60,req_state_cd=40 */
, edu_state_cd = '60'
, req_state_cd = '35'
/* , req_state_cd = '40' 의뢰상태는 교육의 취소, 확정과 관계없이 대상자의 의뢰 상태를 변경 하는것 이므로 여기서는 제외한다. */
</isEqual>
WHERE
cmd_trgt_info_ord = #sspnIdtmtTrgtOrd#
</update>
<!-- 대상자 취소시 대상자 테이블 정보 수정 -->
<update id="VEPrcsDAO.updateAplctDetailInfo" parameterClass="VEPrcsDetailVO">
/* VEPrcsDAO.updateAplctDetailInfo */

View File

@ -170,7 +170,7 @@
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 REPLACE(c.edu_strt_pnttm,'.','') between coalesce(a.qustnr_bgnde, '20000101') and coalesce(a.qustnr_endde, '99991231')
/*
AND to_char(NOW(), 'YYYY.MM.DD') BETWEEN
@ -366,6 +366,27 @@
</select>
<!-- //관리자 청소년/성인 만족도 평가 R -->
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03_ALL" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03_ALL */
SELECT c00.qustnr_qesitm_id as qustnrQesitmId
, c00.very_satisfied AS verySatisfied
, c00.satisfied AS satisfied
, c00.neither AS neither
, c00.dissatisfied AS dissatisfied
, c00.very_dissatisfied AS veryDissatisfied
, c00.answer
FROM
LETTNQESTNRRSLTDetail c00 ,
ve_edu_aplct d00
WHERE
d00.prcs_ord = #eduAplctOrd#
AND d00.EDU_APLCT_ORD = c00.edu_aplct_ord
</select>
<!-- //관리자 청소년/성인 만족도 평가 R -->
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_04" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_04 */
@ -398,5 +419,36 @@
, a.qustnr_nm
, a.qustnr_birth
</select>
</select>
<!-- //관리자 청소년/성인 만족도 평가 R -->
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_05" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_05 */
SELECT
a.qestnr_id as qestnrId,
qustnr_qesitm_id as qustnrQesitmId
, max(case
when a.iem_sn = 1 then a.iem_cn
end) as sn1
, max(case
when a.iem_sn = 2 then a.iem_cn
end) as sn2
, max(case
when a.iem_sn = 3 then a.iem_cn
end) as sn3
, max(case
when a.iem_sn = 4 then a.iem_cn
end) as sn4
, max(case
when a.iem_sn = 5 then a.iem_cn
end) as sn5
FROM lettnqustnriem a
WHERE 1=1
and A.QESTNR_ID = #qestnrId#
GROUP BY a.qestnr_id, qustnr_qesitm_id
</select>
</sqlMap>

View File

@ -190,6 +190,8 @@
<!-- <pattern>*/tngrVisitEdu/popup/*Popup.do</pattern>
<pattern>*/adultVisitEdu/popup/*Popup.do</pattern> -->
<pattern>/kccadr/oprtn/cndtnSspnIdtmt/popup/printCertPopup.do</pattern>
</excludes>

View File

@ -466,6 +466,15 @@ function wrapWindowByMask(){
<form:errors path="emailAdres" cssClass="error" />
</td>
</tr>
<tr>
<th>추가인증</th>
<td colspan="3">
<input type="checkbox" id="areaNo" name="areaNo">
<label for="areaNo">핸드폰인증</label>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -76,6 +76,10 @@ $( document ).ready(function(){
}
_chgAuthorSelect("${userManageVO.authorCode}");
//핸드폰인증
if ("${userManageVO.areaNo}" == "Y") $("input[name='areaNo']").prop("checked", true);
/*
if("${userManageVO.authorCode}" == "ROLE_ADR_JRSDC"){
$('#userWork_case1').hide();
@ -508,6 +512,14 @@ function _chgAuthorSelect(p_obj_selectedIndex){
</td>
</tr>
<tr>
<th>추가인증</th>
<td colspan="3">
<input type="checkbox" id="areaNo" name="areaNo">
<label for="areaNo">핸드폰인증</label>
</td>
</tr>
<%-- <c:if test="${empty isAdmin and empty isMember}">
<tr>
<th>비밀번호확인</th>

View File

@ -76,6 +76,10 @@ $( document ).ready(function(){
}
_chgAuthorSelect("${userManageVO.authorCode}");
//핸드폰인증
if ("${userManageVO.areaNo}" == "Y") $("input[name='areaNo']").prop("checked", true);
/*
if("${userManageVO.authorCode}" == "ROLE_ADR_JRSDC"){
$('#userWork_case1').hide();
@ -512,6 +516,14 @@ function _chgAuthorSelect(p_obj_selectedIndex){
</td>
</tr>
<tr>
<th>추가인증</th>
<td colspan="3">
<input type="checkbox" id="areaNo" name="areaNo">
<label for="areaNo">핸드폰인증</label>
</td>
</tr>
<%-- <c:if test="${empty isAdmin and empty isMember}">
<tr>
<th>비밀번호확인</th>

View File

@ -275,7 +275,7 @@ function bbsMasterExcelDownload(){
<%-- <input type="button" value="게시판보기" class="btnType2" onclick="location.href='<c:url value='/cop/bbs/selectBoardList.do'/>?bbsId=<c:out value='${result.bbsId}'/>'"> --%>
<button type="button" class="btnType01 btn_look_notice" onclick="location.href='<c:url value='/cop/bbs/selectBoardList.do'/>?bbsId=<c:out value='${result.bbsId}'/>'">게시판보기</button>
<%-- <input type="button" value="홈페이지" class="btnType2" onclick="window.open('about:blank').location.href='${result.bbsHomeUrl}'"> --%>
<button type="button" class="btnType01 btn_homepage" onclick="window.open('about:blank').location.href='/offedu${result.bbsHomeUrl}'">홈페이지</button>
<button type="button" class="btnType01 btn_homepage" onclick="window.open('about:blank').location.href='/ipedu${result.bbsHomeUrl}'">홈페이지</button>
</td>
</tr>
</c:forEach>

View File

@ -299,10 +299,10 @@ function fn_egov_inqire_BBSMngInqire() {
<form:errors path="posblAtchFileSize" cssClass="error" />
</td>
</tr>
<tr style="display:none;">
<tr>
<th><span class="reqArea">방문자 글쓰기 사용여부</span></th>
<td>
<select id="useAt" name="writeYn" title="방문자 글쓰기 사용여부">
<select class="sel_type1" id="useAt" name="writeYn" title="방문자 글쓰기 사용여부">
<option value="Y" >사용</option>
<option value="N" selected='selected' >미사용</option>
</select>

View File

@ -369,8 +369,8 @@ $( document ).ready(function() {
</td>
</tr>
<tr style="display:none;">
<th><span class="reqArea">방문자 글쓰기 사용여부</span></th>
<tr>
<th><span class="sel_type1">방문자 글쓰기 사용여부</span></th>
<td>
<select id="useAt" name="writeYn" title="방문자 글쓰기 사용여부" class="sel_type1">
<option value="Y" <c:if test="${boardMaster.writeYn eq 'Y'}">selected="selected"</c:if> >사용</option>

View File

@ -53,6 +53,7 @@ function fncGoDetail(prcsAplctPrdOrd, url){
<%-- ===========================================
조건부 기소유예 시작
============================================ --%>
<div class="box_title">조건부기소유예</div>
<div class="box">
<div class="box_tit">
<p>조건부기소유예 대상자 목록 현황</p>
@ -148,6 +149,7 @@ function fncGoDetail(prcsAplctPrdOrd, url){
<%-- ===========================================
시정명령 시작
============================================ --%>
<div class="box_title">시정명령</div>
<div class="box">
<div class="box_tit">
<p>시정명령 대상자 정보 현황</p>
@ -243,6 +245,7 @@ function fncGoDetail(prcsAplctPrdOrd, url){
<%-- ===========================================
예방교육 시작
============================================ --%>
<div class="box_title">예방교육</div>
<div class="box">
<div class="box_tit">
<p>과정신청현황</p>

Some files were not shown because too many files have changed in this diff Show More