diff --git a/pom.xml b/pom.xml
index 190aa43..ae23003 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,12 @@
23.04.01-SNAPSHOT
+
+ org.quartz-scheduler
+ quartz
+ 2.3.2
+
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index abc8f48..e07a834 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -35,13 +35,13 @@ spring:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# MariaDB
# jdbc-url: jdbc:log4jdbc:mariadb://호스트:포트/DB이름?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
- jdbc-url: jdbc:log4jdbc:mariadb://211.119.124.9:4407/electricparking_pt?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
+ jdbc-url: jdbc:log4jdbc:mariadb://localhost:3114/xit-base?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
# Oracle
# jdbc-url: jdbc:log4jdbc:oracle:thin:@호스트:포트:SID
# username: 사용자 아이디
# password: 사용자 비밀번호
- username: fimsweb
- password: fimsweb!@
+ username: root
+ password: mjkhan
auto-commit: false
mvc:
diff --git a/src/main/resources/intf-conf/gpki.conf b/src/main/resources/intf-conf/gpki.conf
index d989a36..21273fc 100644
--- a/src/main/resources/intf-conf/gpki.conf
+++ b/src/main/resources/intf-conf/gpki.conf
@@ -1,25 +1,26 @@
{
"enabled": true, /* 활성화(사용) 여부 */
"license": "C:\\GPKI\\Lic", /* 이용기관 GPKI API 라이센스 디렉토리 */
- "charset": "UTF-8", /* 문자셋 */
+ "charset": "EUC-KR", /* 문자셋 */
"server": {
- "local": "SVR1311000030", /* 이용기관 서버 CN */
- "targets": "SVR1500000015" /* 대상기관 서버인증서 아이디, 여러 개일 경우 컴마(,)로 구분 */
+ "local": "SVR3160269001", /* 이용기관 서버 CN */
+ "targets": "SVR3160000003" /* 대상기관 서버인증서 아이디, 여러 개일 경우 컴마(,)로 구분 */
},
"ldapUrl": "ldap://10.1.7.118:389/cn=", /* 대상기관 인증서 다운로드를 위한 행정망 LDAP URL */
/*"ldapUrl": "ldap://152.99.57.127:389/cn=", 대상기관 인증서 다운로드를 위한 인터넷망 LDAP URL */
"certDir": "C:\\GPKI\\Certificate\\class1", /* 서버 인증서, 키 저장 디렉토리 */
+ "targetCert": "{serverID}_env.cer",
"env": { /* 이용기관 서버 인증서 */
- "certFile": "SVR1311000030_env.cer",
- "privateKeyFile": "SVR1311000030_env.key",
- "privateKeyPassword": "기후대기3395!"
+ "certFile": "SVR3160269001_env.cer",
+ "privateKeyFile": "SVR3160269001_env.key",
+ "privateKeyPassword": "elddy5720@"
},
"sig": { /* 이용기관 서버 전자서명 */
- "certFile": "SVR1311000030_sig.cer",
- "privateKeyFile": "SVR1311000030_sig.key",
- "privateKeyPassword": "기후대기3395!"
+ "certFile": "SVR3160269001_sig.cer",
+ "privateKeyFile": "SVR3160269001_sig.key",
+ "privateKeyPassword": "elddy5720@"
}
}
\ No newline at end of file
diff --git a/src/main/resources/intf-conf/xit-saeol.conf b/src/main/resources/intf-conf/xit-saeol.conf
index d42c0cb..5571af9 100644
--- a/src/main/resources/intf-conf/xit-saeol.conf
+++ b/src/main/resources/intf-conf/xit-saeol.conf
@@ -3,12 +3,23 @@
"sido": "", /* 시도코드 */
"sigungu": "", /* 시군구 코드 */
+ "deptCodes": ["12345"], /* 부서코드 */
- "sources": ["3010000"], /* 이용기관 정보 */
+ "k_anc_code": "3150000", /* 기관코드 */
+ "k_anc_id": "SU44526786720", /* 연계 ID */
+ "k_anc_passwd": "ZUDDN1129404", /* 연계 비밀번호 */
+
+ "logXml": "files/xml/{date}/{interfaceID}/{msgKey}.xml", /* xml 로그파일 이름 패턴, 로그파일을 남기지 않으려면 제거할 것 */
+ "logToDatabase": true, /* 전문 데이터베이스 사용 여부 */
+ "attachmentDir": "files/attachment/{date}", /* 첨부파일 디렉토리 경로 패턴, 전문 데이터베이스를 사용하지 않을 경우에만 유효 */
+ "sources": ["3160004"], /* 이용기관 정보 */
+
"target": { /* 제공기관 정보 */
- "org": "4640000", /* 기관코드 */
- "url": "http://10.46.147.212:3100/stmr/websvc/std/ws?wsdl={interfaceID}", /* 서비스 제공 URL, {interfaceID} = 연계 ID */
- "certServer": "SVR1311000030" /* 세올행정 서버인증서 아이디 */
- }
+ "org": "3160004", /* 기관코드 */
+ "url": "http://98.17.2.101:3100/stmr/websvc/std/ws?wsdl={interfaceID}", /* 서비스 제공 URL, {interfaceID} = 연계 ID */
+ "certServer": "SVR3160000003" /* 세올행정 서버인증서 아이디 */
+ },
+
+ "minwonDates": 5 /* 민원목록 조회일자수 */
}
\ No newline at end of file
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index 29f62ca..69dbda3 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/src/main/resources/spring/context-scheduler.xml b/src/main/resources/spring/context-scheduler.xml
new file mode 100644
index 0000000..7d78a5d
--- /dev/null
+++ b/src/main/resources/spring/context-scheduler.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/sql/mapper/base/file-mapper.xml b/src/main/resources/sql/mapper/base/file-mapper.xml
new file mode 100644
index 0000000..019e077
--- /dev/null
+++ b/src/main/resources/sql/mapper/base/file-mapper.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CONCAT('files/', DIR, DATE_FORMAT(CURRENT_DATE, '%Y/%m/%d/'))
+FILE_PATH
+
+SELECT INF_TYPE
+ , DIR
+ FROM (
+ SELECT '011' INF_TYPE, 'attachment/' DIR FROM DUAL
+ ) FILE_DIRS
+
+
+
+SELECT A.*, URL
+ FROM TB_FILE A
+ WHERE FILE_ID IN (#{fileID})
+ ORDER BY FILE_ID
+
+SELECT A.*, URL
+ FROM TB_FILE A
+
+ AND A.INF_TYPE = #{infoType}
+ AND INF_KEY IN (#{infoKey})
+ AND USE_YN = 'Y'
+
+
+
+
+
+
+
+
+
+
+/* 파일 등록(fileMapper.insertFile) */
+
+SELECT NEW_ID, CONCAT(DIR, NEW_ID, '.', #{file.extension}) PATH
+ FROM (
+ SELECT NVL(MAX(FILE_ID) + 1, CONCAT(THIS_DAY, '00001')) NEW_ID
+ FROM () B LEFT OUTER JOIN TB_FILE A ON FILE_ID LIKE CONCAT(THIS_DAY, '%')
+ ) T1, (
+
+ WHERE INF_TYPE = #{file.infoType}
+ ) T2
+INSERT INTO TB_FILE (
+ FILE_ID
+ , INF_TYPE
+ , INF_KEY
+ , SUB_TYPE
+ , SUB_CODE
+ , FILE_NM
+ , FILE_PATH
+ , MIME_TYPE
+ , FILE_SIZE
+ , DNLD_CNT
+ , SRT_ORD
+ , RGTR
+ , REG_DT
+ , USE_YN
+) VALUES (
+ #{file.id}
+ , #{file.infoType}
+ , #{file.infoKey}
+ , #{file.subType}
+ , #{file.subCode}
+ , #{file.name}
+ , #{file.path}
+ , #{file.mimeType}
+ , #{file.size}
+ , #{file.downloadCount}
+ , #{file.sortOrder}
+ , #{currentUser.id}
+ ,
+ , 'Y'
+)
+
+
+/* 파일 순서 변경(fileMapper.reorder) */
+UPDATE TB_FILE SET
+ SRT_ORD = CASE FILE_ID
+ WHEN #{fileID} THEN #{index}
+
+ ELSE SRT_ORD END
+WHERE FILE_ID IN (#{fileID})
+
+/* 다운로드 횟수 증가(fileMapper.updateDownloadCount) */
+UPDATE TB_FILE SET
+ DNLD_CNT = DNLD_CNT + 1
+ WHERE USE_YN = 'Y'
+ AND FILE_ID IN (#{fileID})
+
+/* 파일 제거(fileMapper.removeFiles) */
+UPDATE TB_FILE SET
+ USE_YN = 'N'
+ WHERE USE_YN = 'Y'
+ AND FILE_ID IN (#{fileID})
+
+ AND INF_TYPE = #{infoType}
+ AND INF_KEY IN (#{infoKey})
+
+/* 파일 삭제(fileMapper.deleteFiles) */
+DELETE FROM TB_FILE
+WHERE FILE_ID IN (#{fileID})
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/sql/mapper/base/test-mapper.xml b/src/main/resources/sql/mapper/base/test-mapper.xml
index d674130..8a897ec 100644
--- a/src/main/resources/sql/mapper/base/test-mapper.xml
+++ b/src/main/resources/sql/mapper/base/test-mapper.xml
@@ -2,6 +2,8 @@
+
+
${sql}
${sql}
diff --git a/src/main/resources/sql/mapper/saeol/saeol-mapper.xml b/src/main/resources/sql/mapper/saeol/saeol-mapper.xml
new file mode 100644
index 0000000..7b1eaa4
--- /dev/null
+++ b/src/main/resources/sql/mapper/saeol/saeol-mapper.xml
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+/* 민원목록 등록(saeolMapper.insertSOHNN00004) */
+INSERT INTO TB_SOHNN00004 (
+ CNSL_QNA_NO
+ , MSG_KEY
+ , ROW_NO
+ , MW_CNSL_SJ
+ , REG_DT
+ , INQ_NUM
+ , DEAL_STATE_NM
+ , TOT_CNT
+ , BBS_SNO
+ , IN_CNSL_QNA_NO
+ , PROCESS_STATE
+ , MW_CHAR_DEP_SE
+ , USR_NM
+ , ANS_ANSW_LMT
+ , DEP_CODE
+ , CNSL_DEP_NM
+ , ANS_USR_NM
+ , BBS_SE_NM
+ , TAKE_SE_NM
+ , FILE_ID
+ , FILE_YN
+ , SID
+ , QNA_OPEN_NM
+ , PROC_YN
+)
+SELECT #{cnsl_qna_no}
+ , #{msg_key}
+ , #{row_no}
+ , #{mw_cnsl_sj}
+ , #{reg_dt}
+ , #{inq_num}
+ , #{deal_state_nm}
+ , #{tot_cnt}
+ , #{bbs_sno}
+ , #{in_cnsl_qna_no}
+ , #{process_state}
+ , #{mw_char_dep_se}
+ , #{usr_nm}
+ , #{ans_answ_lmt}
+ , #{dep_code}
+ , #{cnsl_dep_nm}
+ , #{ans_usr_nm}
+ , #{bbs_se_nm}
+ , #{take_se_nm}
+ , #{file_id}
+ , #{file_yn}
+ , #{sid}
+ , #{qna_open_nm}
+ , 'N'
+ FROM DUAL
+ WHERE NOT EXISTS (
+ SELECT * FROM TB_SOHNN00004 WHERE CNSL_QNA_NO = #{cnsl_qna_no}
+ )
+
+/* 민원목록 업데이트(saeolMapper.updateSOHNN00004) */
+UPDATE TB_SOHNN00004
+ SET USR_NM = #{usr_nm}
+ WHERE CNSL_QNA_NO = #{cnsl_qna_no}
+ AND USR_NM != #{usr_nm}
+
+/* 민원목록 상태 업데이트(saeolMapper.updateSOHNN00004Status) */
+UPDATE TB_SOHNN00004
+ SET PROC_YN = 'Y'
+ AND CNSL_QNA_NO IN (#{cnsl_qna_no})
+ AND MSG_KEY IN (#{msg_key})
+ AND PROC_YN = 'N'
+
+
+/* 민원상세 등록(saeolMapper.insertSOHNN00011) */
+INSERT INTO TB_SOHNN00011 (
+ CNSL_QNA_NO
+ , MSG_KEY
+ , CLASS_SYS_CODE
+ , MW_CNSL_SJ
+ , MW_APPL_CN
+ , ANSW_CHASU
+ , SPEC_ITEM
+ , EL_BAS
+ , QNA_OPEN_NM
+ , USR_ID
+ , USR_NM
+ , MWIN_DETAIL_ADDR
+ , TELNO
+ , HPNO
+ , POST_NO
+ , EMAIL
+ , ANS_ANSW_LMT
+ , DEP_CODE
+ , CNSL_DEP_NM
+ , MW_CNSL_SE_CODE
+ , REMW_WHY
+ , MW_DEAL_ORG_CODE
+ , TAKE_SE
+ , REGR_ID
+ , REG_DT
+ , MW_ANSW_CNT
+ , DEAL_STATE_NM
+ , MW_CHAR_DEP_SE
+ , CNSL_QNA_NO_M
+ , CLASS_SYS_CODE_M
+ , MW_CNSL_SJ_M
+ , MW_APPL_CN_M
+ , USR_NM_M
+ , MWIN_DETAIL_ADDR_M
+ , TELNO_M
+ , HPNO_M
+ , POST_NO_M
+ , EMAIL_M
+ , REG_DT_M
+ , TAKE_SE_NM
+ , FILE_ID_M
+ , FILE_ID_P
+ , MW_ORG_CODE
+ , INET_QNA_NO
+ , SID
+ , INQ_NUM
+ , TAKE_NM
+ , CNTCT_TELNO
+ , RMNT_ORG_CODE
+ , TAKE_NO
+ , APPL_NO
+ , CL_HIS_SNO
+ , RE_CL_RQST_CNT
+ , MW_LTTR_NOTIFY_YN
+ , EMAIL_RPRT_YN
+ , SMS_RPRT_YN
+ , MW_DRP_YN
+ , MW_DRP_WHY
+ , MW_DRP_DT
+ , DELETE_YN
+ , BBS_SE
+ , BBS_SNO
+ , SATF_RATNG_CN
+ , SATF_RATNG_PNT
+ , CIVIL_GIST
+ , CIVIL_ABSTRACT
+ , PETI_PATH_GUBUN
+ , PCD_GUBUN
+ , PRE_CNSL_QNA_NO
+ , PRE_MINWON_YN
+ , PROC_YN
+)
+SELECT #{cnsl_qna_no}
+ , #{msg_key}
+ , #{class_sys_code}
+ , #{mw_cnsl_sj}
+ , #{mw_appl_cn}
+ , #{answ_chasu}
+ , #{spec_item}
+ , #{el_bas}
+ , #{qna_open_nm}
+ , #{usr_id}
+ , #{usr_nm}
+ , #{mwin_detail_addr}
+ , #{telno}
+ , #{hpno}
+ , #{post_no}
+ , #{email}
+ , #{ans_answ_lmt}
+ , #{dep_code}
+ , #{cnsl_dep_nm}
+ , #{mw_cnsl_se_code}
+ , #{remw_why}
+ , #{mw_deal_org_code}
+ , #{take_se}
+ , #{regr_id}
+ , #{reg_dt}
+ , #{mw_answ_cnt}
+ , #{deal_state_nm}
+ , #{mw_char_dep_se}
+ , #{cnsl_qna_no_m}
+ , #{class_sys_code_m}
+ , #{mw_cnsl_sj_m}
+ , #{mw_appl_cn_m}
+ , #{usr_nm_m}
+ , #{mwin_detail_addr_m}
+ , #{telno_m}
+ , #{hpno_m}
+ , #{post_no_m}
+ , #{email_m}
+ , #{reg_dt_m}
+ , #{take_se_nm}
+ , #{file_id_m}
+ , #{file_id_p}
+ , #{mw_org_code}
+ , #{inet_qna_no}
+ , #{sid}
+ , #{inq_num}
+ , #{take_nm}
+ , #{cntct_telno}
+ , #{rmnt_org_code}
+ , #{take_no}
+ , #{appl_no}
+ , #{cl_his_sno}
+ , #{re_cl_rqst_cnt}
+ , #{mw_lttr_notify_yn}
+ , #{email_rprt_yn}
+ , #{sms_rprt_yn}
+ , #{mw_drp_yn}
+ , #{mw_drp_why}
+ , #{mw_drp_dt}
+ , #{delete_yn}
+ , #{bbs_se}
+ , #{bbs_sno}
+ , #{satf_ratng_cn}
+ , #{satf_ratng_pnt}
+ , #{civil_gist}
+ , #{civil_abstract}
+ , #{peti_path_gubun}
+ , #{pcd_gubun}
+ , #{pre_cnsl_qna_no}
+ , #{pre_minwon_yn}
+ , 'N'
+ FROM DUAL
+ WHERE NOT EXISTS (
+ SELECT * FROM TB_SOHNN00011 WHERE CNSL_QNA_NO = #{cnsl_qna_no}
+ )
+
+/* 민원상세 업데이트(saeolMapper.updateSOHNN00011) */
+UPDATE TB_SOHNN00011
+ SET CNSL_QNA_NO_M = #{cnsl_qna_no_m}
+ WHERE CNSL_QNA_NO = #{cnsl_qna_no}
+ AND CNSL_QNA_NO_M != #{cnsl_qna_no_m}
+
+/* 민원상세 상태 업데이트(saeolMapper.updateSOHNN00011Status) */
+UPDATE TB_SOHNN00011
+ SET PROC_YN = 'Y'
+ AND CNSL_QNA_NO IN (#{cnsl_qna_no})
+ AND MSG_KEY IN (#{msg_key})
+ AND PROC_YN = 'N'
+
+
+/* 민원파일 등록(saeolMapper.insertSOHNN00011File) */
+INSERT INTO TB_SOHNN00011_FILE (
+ CNSL_QNA_NO
+ , MSG_KEY
+ , FILE_TYPE
+ , FILE_ID
+ , FILE_SEQ
+ , FILE_PATH
+ , SYS_FILE_NM
+ , USR_FILE_NM
+) VALUES (
+ #{cnsl_qna_no}
+ , #{msg_key}
+ , #{file_type}
+ ,#{file_id_m}#{file_id_p}
+ , #{file_seq}
+ , #{file_path}
+ , #{sys_file_nm}
+ , #{usr_file_nm}
+)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* 답변등록(saeolMapper.insertSOINN00050) */
+
+SELECT CONCAT(TODAY, LPAD(NVL(SUBSTR(MAX(MSG_ID), 9) + 1, 1), 5, '0')) NEW_ID
+ FROM () B
+ LEFT OUTER JOIN TB_SOINN00050 A ON MSG_ID LIKE CONCAT(TODAY, '%')
+INSERT INTO TB_SOINN00050 (
+ MSG_ID
+ , CNSL_QNA_NO
+ , PARENT_QNA_NO
+ , PSAL_VAT_YN
+ , IF_YN
+ , S_USERID
+ , S_USERNAME
+ , MW_CNSL_SJ
+ , MW_APPL_CN
+ , TELNO
+ , EMAIL
+ , CNSL_DEP_NM
+ , DEP_CODE
+ , MW_ANSW_CNT
+ , MW_CHAR_DEP_SE
+ , MW_CNSL_SE_CODE
+ , MW_ORG_CODE
+ , CIVIL_GIST
+ , CIVIL_ABSTRACT
+ , PCD_GUBUN
+ , MSG_KEY
+ , STATE_CODE
+ , STATE_MSG
+ , STATE_DTL
+) VALUES (
+ #{msgId}
+ , #{request.cnsl_qna_no}
+ , #{request.parent_qna_no}
+ , #{request.psal_vat_yn}
+ , #{request.if_yn}
+ , #{request.s_userid}
+ , #{request.s_username}
+ , #{request.mw_cnsl_sj}
+ , #{request.mw_appl_cn}
+ , #{request.telno}
+ , #{request.email}
+ , #{request.cnsl_dep_nm}
+ , #{request.dep_code}
+ , #{request.mw_answ_cnt}
+ , #{request.mw_char_dep_se}
+ , #{request.mw_cnsl_se_code}
+ , #{request.mw_org_code}
+ , #{request.civil_gist}
+ , #{request.civil_abstract}
+ , #{request.pcd_gubun}
+ , #{response.msg_key}
+ , #{response.state_code}
+ , #{response.state_msg}
+ , #{response.state_dtl}
+)
+
+/* 답변등록 결과 업데이트(saeolMapper.updateSOINN00050) */
+UPDATE TB_SOINN00050
+ SET MSG_KEY = #{response.msg_key}
+ , STATE_CODE = #{response.state_code}
+ , STATE_MSG = #{response.state_msg}
+ , STATE_DTL = #{response.state_dtl}
+ WHERE CNSL_QNA_NO = #{response.cnsl_qna_no}
+ AND MSG_ID = #{msgId}
+
+
\ No newline at end of file
diff --git a/src/main/resources/xit-crypto.conf b/src/main/resources/xit-crypto.conf
new file mode 100644
index 0000000..0158b7d
--- /dev/null
+++ b/src/main/resources/xit-crypto.conf
@@ -0,0 +1,13 @@
+{ "enabled": true,
+ "cryptoDefs": [
+ { "name": "xit-aria",
+ "class": "cokr.xit.base.crypto.bean.XitAria",
+ "settings": {
+ "version": 1,
+ "charset": "EUC-KR",
+ "key": "3AsrGqpYYnkHIu3D",
+ "keySize": 128
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/sql/xit-saeol-mariadb.sql b/src/sql/xit-saeol-mariadb.sql
new file mode 100644
index 0000000..de58444
--- /dev/null
+++ b/src/sql/xit-saeol-mariadb.sql
@@ -0,0 +1,187 @@
+CREATE OR REPLACE TABLE TB_SOHNN00004 (
+ CNSL_QNA_NO CHAR(18) COMMENT '민원접수번호',
+ MSG_KEY VARCHAR(25) COMMENT '메시지 키',
+ ROW_NO INT COMMENT '순번',
+
+ MW_CNSL_SJ VARCHAR(500) COMMENT '글제목',
+ REG_DT VARCHAR(14) COMMENT '접수일자',
+ INQ_NUM VARCHAR(4) COMMENT '조회수',
+ DEAL_STATE_NM VARCHAR(20) COMMENT '처리상태',
+ TOT_CNT VARCHAR(4) COMMENT '총건수',
+ BBS_SNO VARCHAR(9) COMMENT '게시물번호',
+ IN_CNSL_QNA_NO CHAR(18) COMMENT '내부접수번호',
+ PROCESS_STATE VARCHAR(500) COMMENT '진행상태',
+ MW_CHAR_DEP_SE VARCHAR(4) COMMENT '부서구분',
+ USR_NM VARCHAR(60) COMMENT '사용자명',
+ ANS_ANSW_LMT VARCHAR(14) COMMENT '민원답변기한',
+ DEP_CODE CHAR(11) COMMENT '부서코드',
+ CNSL_DEP_NM VARCHAR(600) COMMENT '부서명',
+ ANS_USR_NM VARCHAR(60) COMMENT '담당자명',
+ BBS_SE_NM VARCHAR(20) COMMENT '게시판종류',
+ TAKE_SE_NM VARCHAR(100) COMMENT '접수경로',
+ FILE_ID VARCHAR(50) COMMENT '파일id',
+ FILE_YN CHAR(1) COMMENT '첨부파일유무',
+ SID VARCHAR(13) COMMENT '사용자시스템id',
+ QNA_OPEN_NM VARCHAR(10) COMMENT '공개여부',
+
+ PROC_YN VARCHAR(1) COMMENT '처리여부',
+
+ PRIMARY KEY (CNSL_QNA_NO),
+ INDEX (DEP_CODE)
+) COMMENT '민원목록';
+
+CREATE OR REPLACE TABLE TB_SOHNN00011 (
+ CNSL_QNA_NO CHAR(18) COMMENT '민원접수번호',
+ MSG_KEY VARCHAR(25) COMMENT '메시지 키',
+
+ CLASS_SYS_CODE VARCHAR(50) COMMENT '시스템연계구분코드',
+ MW_CNSL_SJ VARCHAR(500) COMMENT '답변제목',
+ MW_APPL_CN TEXT COMMENT '답변내용',
+ ANSW_CHASU CHAR(1) COMMENT '추가답변차수',
+ SPEC_ITEM VARCHAR(250) COMMENT '특기사항',
+ EL_BAS VARCHAR(200) COMMENT '관련근거',
+ QNA_OPEN_NM VARCHAR(8) COMMENT '공개여부',
+ USR_ID VARCHAR(20) COMMENT '답변자ID',
+ USR_NM VARCHAR(60) COMMENT '답변자명',
+ MWIN_DETAIL_ADDR VARCHAR(400) COMMENT '답변자주소',
+ TELNO VARCHAR(20) COMMENT '답변자전화번호',
+ HPNO VARCHAR(20) COMMENT '답변자핸드폰',
+ POST_NO CHAR(6) COMMENT '우편번호',
+ EMAIL CHAR(50) COMMENT '이메일',
+ ANS_ANSW_LMT VARCHAR(14) COMMENT '답변처리기한',
+ DEP_CODE CHAR(11) COMMENT '답변자부서코드',
+ CNSL_DEP_NM VARCHAR(600) COMMENT '답변자부서명',
+ MW_CNSL_SE_CODE CHAR(3) COMMENT '민원상담구분코드',
+ REMW_WHY VARCHAR(2000) COMMENT '이송사유',
+ MW_DEAL_ORG_CODE CHAR(7) COMMENT '민원처리기관코드',
+ TAKE_SE CHAR(3) COMMENT '접수구분코드',
+ REGR_ID VARCHAR(20) COMMENT '답변자ID',
+ REG_DT VARCHAR(14) COMMENT '답변일자',
+ MW_ANSW_CNT CHAR(1) COMMENT '추가답변카운트',
+ DEAL_STATE_NM VARCHAR(8) COMMENT '처리상태',
+ MW_CHAR_DEP_SE VARCHAR(4) COMMENT '부서구분',
+ CNSL_QNA_NO_M CHAR(18) COMMENT '답변접수번호',
+ CLASS_SYS_CODE_M VARCHAR(50) COMMENT '시스템연계구분코드(민원)',
+ MW_CNSL_SJ_M VARCHAR(500) COMMENT '민원제목',
+ MW_APPL_CN_M TEXT COMMENT '민원내용',
+ USR_NM_M VARCHAR(60) COMMENT '민원인명',
+ MWIN_DETAIL_ADDR_M VARCHAR(400) COMMENT '민원인주소',
+ TELNO_M VARCHAR(20) COMMENT '민원인전화번호',
+ HPNO_M VARCHAR(20) COMMENT '민원인핸드폰',
+ POST_NO_M CHAR(6) COMMENT '우편번호(민원)',
+ EMAIL_M CHAR(50) COMMENT '이메일(민원)',
+ REG_DT_M VARCHAR(14) COMMENT '민원등록일시',
+ TAKE_SE_NM VARCHAR(100) COMMENT '접수경로',
+ FILE_ID_M VARCHAR(50) COMMENT '민원인 첨부파일 고유id',
+ FILE_ID_P VARCHAR(50) COMMENT '답변자 첨부파일 고유id',
+ MW_ORG_CODE VARCHAR(7) COMMENT '최초등록기관 코드',
+ INET_QNA_NO VARCHAR(18) COMMENT '최초등록기관 접수번호',
+ SID VARCHAR(13) COMMENT '시스템사용자ID',
+ INQ_NUM INT COMMENT '민원조회수',
+ TAKE_NM VARCHAR(60) COMMENT '방문접수 담당자명',
+ CNTCT_TELNO VARCHAR(20) COMMENT '방문접수 담당자 전화번호',
+ RMNT_ORG_CODE CHAR(7) COMMENT '이송된 기관코드',
+ TAKE_NO VARCHAR(18) COMMENT '신문고 접수번호',
+ APPL_NO VARCHAR(18) COMMENT '신문고 신청번호',
+ CL_HIS_SNO VARCHAR(12) COMMENT '분류이력일련번호',
+ RE_CL_RQST_CNT INT COMMENT '재분류요청건수',
+ MW_LTTR_NOTIFY_YN CHAR(1) COMMENT '서신통지여부',
+ EMAIL_RPRT_YN CHAR(1) COMMENT '이메일통지여부',
+ SMS_RPRT_YN CHAR(1) COMMENT 'SMS통지여부',
+ MW_DRP_YN CHAR(1) COMMENT '취하여부',
+ MW_DRP_WHY TEXT COMMENT '취하사유',
+ MW_DRP_DT CHAR(14) COMMENT '취하일시',
+ DELETE_YN CHAR(1) COMMENT '삭제여부',
+ BBS_SE VARCHAR(3) COMMENT '게시판번호',
+ BBS_SNO VARCHAR(9) COMMENT '게시물번호',
+ SATF_RATNG_CN VARCHAR(500) COMMENT '만족도평가내용',
+ SATF_RATNG_PNT INT COMMENT '만족도점수',
+ CIVIL_GIST VARCHAR(512) COMMENT '민원요지',
+ CIVIL_ABSTRACT TEXT COMMENT '민원처리결과요약',
+ PETI_PATH_GUBUN VARCHAR(8) COMMENT '신문고민원구분',
+ PCD_GUBUN VARCHAR(8) COMMENT '안전신고답변유형 또는 처리구분',
+ PRE_CNSL_QNA_NO CHAR(18) COMMENT '선행상담QNA번호',
+ PRE_MINWON_YN VARCHAR(1) COMMENT '선행민원등록여부',
+
+ PROC_YN VARCHAR(1) COMMENT '처리여부',
+
+ PRIMARY KEY (CNSL_QNA_NO),
+ INDEX (DEP_CODE)
+) COMMENT '민원상세';
+
+CREATE OR REPLACE TABLE TB_SOHNN00011_FILE (
+ CNSL_QNA_NO CHAR(18) COMMENT '민원접수번호',
+ MSG_KEY VARCHAR(25) COMMENT '메시지 키',
+
+ FILE_TYPE CHAR(1) COMMENT '첨부파일 유형(M: 민원인, P: 답변자)',
+ FILE_ID VARCHAR(50) COMMENT '첨부파일 고유ID',
+ FILE_SEQ INT COMMENT '파일순번',
+ FILE_PATH VARCHAR(2000) COMMENT '파일시스템파일경로',
+ SYS_FILE_NM VARCHAR(200) COMMENT '파일시스템실제저장파일명',
+ USR_FILE_NM VARCHAR(200) COMMENT '사용자파일명',
+
+ PRIMARY KEY (CNSL_QNA_NO, FILE_TYPE, FILE_ID, FILE_SEQ)
+) COMMENT '민원상세 파일';
+
+CREATE OR REPLACE TABLE TB_FILE (
+ FILE_ID VARCHAR(13) NOT NULL COMMENT '파일 ID',
+ INF_TYPE VARCHAR(3) NOT NULL COMMENT '관련정보 유형',
+ INF_KEY VARCHAR(64) NOT NULL COMMENT '관련정보 Key',
+ SUB_TYPE VARCHAR(3) COMMENT '관련정보 하위 분류(애플리케이션에서 정의)',
+ SUB_CODE VARCHAR(64) COMMENT '관련정보 하위 코드(애플리케이션에서 정의)',
+ FILE_NM VARCHAR(128) NOT NULL COMMENT '파일 이름',
+ FILE_PATH VARCHAR(256) NOT NULL COMMENT '파일 경로',
+ MIME_TYPE VARCHAR(80) COMMENT '파일 유형',
+ FILE_SIZE DECIMAL(8) NOT NULL COMMENT '파일 사이즈',
+ DNLD_CNT DECIMAL(5) DEFAULT 0 NOT NULL COMMENT '다운로드 횟수',
+ SRT_ORD TINYINT NOT NULL COMMENT '정렬 순서',
+ REG_DT DATE NOT NULL COMMENT '등록 일자',
+ RGTR VARCHAR(20) NOT NULL COMMENT '등록자 ID',
+ USE_YN VARCHAR(1) DEFAULT 'Y' NOT NULL COMMENT '사용 여부(Y:사용 , N:사용하지 않음)',
+ PRIMARY KEY (FILE_ID),
+ INDEX (INF_TYPE, INF_KEY)
+) COMMENT = '관련 파일(답변 첨부 파일)';
+
+CREATE OR REPLACE TABLE TB_SOINN00050 (
+ MSG_ID VARCHAR(13) COMMENT '메시지 아이디',
+ CNSL_QNA_NO CHAR(18) COMMENT '답변접수번호',
+ PARENT_QNA_NO CHAR(18) COMMENT '상위QNA번호',
+ PSAL_VAT_YN CHAR(1) COMMENT '국민제안신청여부',
+ IF_YN CHAR(1) COMMENT '국민신문고연계여부',
+ S_USERID VARCHAR(20) COMMENT '담당자 ID',
+ S_USERNAME VARCHAR(60) COMMENT '담당자명',
+ MW_CNSL_SJ VARCHAR(500) COMMENT '처리구분',
+ MW_APPL_CN TEXT COMMENT '답변내용',
+ TELNO VARCHAR(20) COMMENT '전화번호',
+ EMAIL VARCHAR(50) COMMENT '이메일',
+ CNSL_DEP_NM VARCHAR(600) COMMENT '부서명',
+ DEP_CODE CHAR(11) COMMENT '부서코드',
+ MW_ANSW_CNT CHAR(1) COMMENT '추가답변카운터',
+ MW_CHAR_DEP_SE CHAR(1) COMMENT '민원담당부서구분',
+ MW_CNSL_SE_CODE CHAR(3) COMMENT '민원구분코드',
+ MW_ORG_CODE CHAR(7) COMMENT '민원기관코드',
+ CIVIL_GIST VARCHAR(512) COMMENT '민원요지',
+ CIVIL_ABSTRACT TEXT COMMENT '민원처리결과요약',
+ PCD_GUBUN VARCHAR(8) COMMENT '안전신고답변유형',
+ MSG_KEY VARCHAR(25) COMMENT '메시지키',
+ STATE_CODE VARCHAR(3) COMMENT '상태코드',
+ STATE_MSG VARCHAR(100) COMMENT '상태메시지',
+ STATE_DTL VARCHAR(15) COMMENT '처리일시',
+
+ PRIMARY KEY (MSG_ID),
+ INDEX (CNSL_QNA_NO)
+) COMMENT '답변등록/추가답변';
+
+/*
+DELIMITER $$
+CREATE FUNCTION NVL(IP_DATA VARCHAR(100), IP_CONVERT VARCHAR(100)) RETURNS VARCHAR(100)
+BEGIN
+ DECLARE RTN_DATA VARCHAR(100);
+
+ SET RTN_DATA := IFNULL(IP_DATA, IP_CONVERT);
+
+ RETURN RTN_DATA;
+END $$
+
+DELIMITER ;
+*/
\ No newline at end of file