민원 목록/상세, (추가)답변 등록 수정

master
mjkhan21 2 weeks ago
parent 9c0d0bb2a3
commit 6373dbb942

@ -65,6 +65,12 @@
<version>23.04.01-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
</dependencies>
<build>

@ -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:

@ -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@"
}
}

@ -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 /* 민원목록 조회일자수 */
}

@ -5,7 +5,7 @@
<property name="LOG_PATH" value="logs"/>
<property name="LOG_FILE_NAME" value="${applicationName}"/>
<property name="ERR_LOG_FILE_NAME" value="${LOG_FILE_NAME}-error"/>
<property name="LOG_PATTERN" value="%d{HH:mm:ss.SSS} %-5level [%logger{0}:%line] - %msg%n"/>
<property name="LOG_PATTERN" value="%d{HH:mm:ss.SSS} %-5level [%logger{0}:%line] %msg%n"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 민원목록/상세 조회 -->
<bean id="minwonReceiver" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="saeolService"/>
<property name="targetMethod" value="searchMinwons"/>
</bean>
<bean id="minwonReceiverTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="minwonReceiver" />
<property name="cronExpression" value="0 0/10 * * * ?" /> <!-- 10분마다 -->
</bean>
<!-- (추가)답변 등록 -->
<bean id="answerSender" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="saeolService"/>
<property name="targetMethod" value="registerAnswers"/>
</bean>
<bean id="answerSenderTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="answerSender" />
<property name="cronExpression" value="0 0/10 * * * ?" /> <!-- 10분마다 -->
</bean>
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="minwonReceiver" />
<ref bean="answerSender" />
<!--
-->
</list>
</property>
<property name="triggers">
<list>
<ref bean="minwonReceiverTrigger" />
<ref bean="answerSenderTrigger" />
<!--
-->
</list>
</property>
</bean>
</beans>

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.base.file.dao.FileMapper">
<resultMap id="fileRow" type="cokr.xit.base.file.FileInfo">
<result property="id" column="FILE_ID"/>
<result property="infoType" column="INF_TYPE"/>
<result property="infoKey" column="INF_KEY"/>
<result property="subType" column="SUB_TYPE"/>
<result property="subCode" column="SUB_CODE"/>
<result property="name" column="FILE_NM"/>
<result property="path" column="FILE_PATH"/>
<result property="url" column="URL"/>
<result property="mimeType" column="MIME_TYPE"/>
<result property="size" column="FILE_SIZE"/>
<result property="downloadCount" column="DNLD_CNT"/>
<result property="sortOrder" column="SRT_ORD"/>
<result property="createdAt" column="REG_DT"/>
<result property="createdBy" column="RGTR"/>
<result property="useYN" column="USE_YN"/>
</resultMap>
<sql id="fileDir">CONCAT('files/', DIR, DATE_FORMAT(CURRENT_DATE, '%Y/%m/%d/'))</sql>
<sql id="fileUrl">FILE_PATH</sql>
<sql id="fileDirs">SELECT INF_TYPE
,<include refid="cokr.xit.base.file.dao.FileMapper.fileDir" /> DIR
FROM (
SELECT '011' INF_TYPE, 'attachment/' DIR FROM DUAL
) FILE_DIRS</sql>
<sql id="selectFiles">
<if test="fileIDs != null">
SELECT A.*,<include refid="cokr.xit.base.file.dao.FileMapper.fileUrl" /> URL
FROM TB_FILE A
WHERE FILE_ID IN (<foreach collection="fileIDs" item="fileID" separator=",">#{fileID}</foreach>)
ORDER BY FILE_ID</if>
<if test="fileIDs == null"><include refid="utility.paging-prefix" />
SELECT A.*,<include refid="cokr.xit.base.file.dao.FileMapper.fileUrl" /> URL
FROM TB_FILE A
<where>
<if test="infoType != null"> AND A.INF_TYPE = #{infoType}</if>
<if test="infoKeys != null"> AND INF_KEY IN (<foreach collection="infoKeys" item="infoKey" separator=",">#{infoKey}</foreach>)</if>
AND USE_YN = 'Y'
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /></if></sql>
<select id="getFileList" parameterType="map" resultType="dataobject">/* 파일 목록 조회(fileMapper.getFileList) */
<include refid="selectFiles" /></select>
<select id="getFilesOf" parameterType="map" resultMap="fileRow">/* 파일 가져오기(fileMapper.getFilesOf) */
<include refid="selectFiles" /></select>
<select id="getFiles" parameterType="map" resultMap="fileRow">/* 파일 가져오기(fileMapper.getFiles) */
<include refid="selectFiles" /></select>
<insert id="insertFile" parameterType="map">/* 파일 등록(fileMapper.insertFile) */
<selectKey keyProperty="file.id,file.path" keyColumn="NEW_ID,PATH" resultType="map" order="BEFORE">
SELECT NEW_ID, CONCAT(DIR, NEW_ID, '.', #{file.extension}) PATH
FROM (
SELECT NVL(MAX(FILE_ID) + 1, CONCAT(THIS_DAY, '00001')) NEW_ID
FROM (<include refid="utility.selectThisDay" />) B LEFT OUTER JOIN TB_FILE A ON FILE_ID LIKE CONCAT(THIS_DAY, '%')
) T1, (
<include refid="fileDirs" />
WHERE INF_TYPE = #{file.infoType}
) T2</selectKey>
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}
,<include refid="utility.now" />
, 'Y'
)
</insert>
<update id="reorder" parameterType="map">/* 파일 순서 변경(fileMapper.reorder) */
UPDATE TB_FILE SET
SRT_ORD = CASE FILE_ID
<foreach collection="fileIDs" item="fileID" index="index" separator=" ">WHEN #{fileID} THEN #{index}
</foreach>
ELSE SRT_ORD END
WHERE FILE_ID IN (<foreach collection="fileIDs" item="fileID" separator=",">#{fileID}</foreach>)</update>
<update id="updateDownloadCount" parameterType="map">/* 다운로드 횟수 증가(fileMapper.updateDownloadCount) */
UPDATE TB_FILE SET
DNLD_CNT = DNLD_CNT + 1
WHERE USE_YN = 'Y'
AND FILE_ID IN (<foreach collection="fileIDs" item="fileID" separator=",">#{fileID}</foreach>)</update>
<update id="removeFiles" parameterType="map">/* 파일 제거(fileMapper.removeFiles) */
UPDATE TB_FILE SET
USE_YN = 'N'
WHERE USE_YN = 'Y'
<if test="fileIDs != null"> AND FILE_ID IN (<foreach collection="fileIDs" item="fileID" separator=",">#{fileID}</foreach>)</if>
<if test="infoKeys != null">
AND INF_TYPE = #{infoType}
AND INF_KEY IN (<foreach collection="infoKeys" item="infoKey" separator=",">#{infoKey}</foreach>)</if></update>
<delete id="deleteFiles" parameterType="map">/* 파일 삭제(fileMapper.deleteFiles) */
DELETE FROM TB_FILE
<if test="fileIDs != null">WHERE FILE_ID IN (<foreach collection="fileIDs" item="fileID" separator=",">#{fileID}</foreach>)</if>
</delete>
</mapper>

@ -2,6 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.foundation.test.TestMapper">
<select id="select" parameterType="map" resultType="dataobject">${sql}</select>
<insert id="insert" parameterType="map">${sql}</insert>
<update id="update" parameterType="map">${sql}</update>

@ -0,0 +1,370 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.interfaces.saeol.dao.SaeolMapper">
<!-- 새올 연계 정보 매퍼
========== 변경 이력 ==========
2024-10-10 mjkhan 최초 작성
============================ -->
<insert id="insertSOHNN00004" parameterType="map">/* 민원목록 등록(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 <!-- 파일id -->
, FILE_YN <!-- 첨부파일유무 -->
, SID <!-- 사용자시스템id -->
, 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} <!-- 파일id -->
, #{file_yn} <!-- 첨부파일유무 -->
, #{sid} <!-- 사용자시스템id -->
, #{qna_open_nm} <!-- 공개여부 -->
, 'N' <!-- 처리여부 -->
FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM TB_SOHNN00004 WHERE CNSL_QNA_NO = #{cnsl_qna_no}
)</insert>
<update id="updateSOHNN00004" parameterType="map">/* 민원목록 업데이트(saeolMapper.updateSOHNN00004) */
UPDATE TB_SOHNN00004
SET USR_NM = #{usr_nm}
WHERE CNSL_QNA_NO = #{cnsl_qna_no}
AND USR_NM != #{usr_nm}</update>
<update id="updateSOHNN00004Status" parameterType="map">/* 민원목록 상태 업데이트(saeolMapper.updateSOHNN00004Status) */
UPDATE TB_SOHNN00004
SET PROC_YN = 'Y'
<where><if test="cnsl_qna_nos != null"> AND CNSL_QNA_NO IN (<foreach collection="cnsl_qna_nos" item="cnsl_qna_no" separator=",">#{cnsl_qna_no}</foreach>)</if>
<if test="msg_keys != null"> AND MSG_KEY IN (<foreach collection="msg_keys" item="msg_key" separator=",">#{msg_key}</foreach>)</if>
AND PROC_YN = 'N'
</where></update>
<insert id="insertSOHNN00011" parameterType="map">/* 민원상세 등록(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 <!-- 답변자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 <!-- 답변자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 <!-- 민원인 첨부파일 고유id -->
, FILE_ID_P <!-- 답변자 첨부파일 고유id -->
, MW_ORG_CODE <!-- 최초등록기관 코드 -->
, INET_QNA_NO <!-- 최초등록기관 접수번호 -->
, SID <!-- 시스템사용자ID -->
, 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 <!-- SMS통지여부 -->
, 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 <!-- 선행상담QNA번호 -->
, 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} <!-- 답변자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} <!-- 답변자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} <!-- 민원인 첨부파일 고유id -->
, #{file_id_p} <!-- 답변자 첨부파일 고유id -->
, #{mw_org_code} <!-- 최초등록기관 코드 -->
, #{inet_qna_no} <!-- 최초등록기관 접수번호 -->
, #{sid} <!-- 시스템사용자id -->
, #{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} <!-- sms통지여부 -->
, #{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} <!-- 선행상담qna번호 -->
, #{pre_minwon_yn} <!-- 선행민원등록여부 -->
, 'N' <!-- 처리여부 -->
FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM TB_SOHNN00011 WHERE CNSL_QNA_NO = #{cnsl_qna_no}
)</insert>
<update id="updateSOHNN00011" parameterType="map">/* 민원상세 업데이트(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}</update>
<update id="updateSOHNN00011Status" parameterType="map">/* 민원상세 상태 업데이트(saeolMapper.updateSOHNN00011Status) */
UPDATE TB_SOHNN00011
SET PROC_YN = 'Y'
<where><if test="cnsl_qna_nos != null"> AND CNSL_QNA_NO IN (<foreach collection="cnsl_qna_nos" item="cnsl_qna_no" separator=",">#{cnsl_qna_no}</foreach>)</if>
<if test="msg_keys != null"> AND MSG_KEY IN (<foreach collection="msg_keys" item="msg_key" separator=",">#{msg_key}</foreach>)</if>
AND PROC_YN = 'N'
</where></update>
<insert id="insertSOHNN00011File" parameterType="map">/* 민원파일 등록(saeolMapper.insertSOHNN00011File) */
INSERT INTO TB_SOHNN00011_FILE (
CNSL_QNA_NO <!-- 답변접수번호 -->
, MSG_KEY <!-- 메시지 키 -->
, FILE_TYPE <!-- 파일유형(M:민원인, P:답변자) -->
, FILE_ID <!-- 파일 고유ID -->
, FILE_SEQ <!-- 파일순번 -->
, FILE_PATH <!-- 파일경로 -->
, SYS_FILE_NM <!-- 저장 파일이름 -->
, USR_FILE_NM <!-- 사용자 파일이름 -->
) VALUES (
#{cnsl_qna_no} <!-- 답변접수번호 -->
, #{msg_key} <!-- 메시지 키 -->
, #{file_type} <!-- 파일유형(m:민원인, p:답변자) -->
,<if test='file_type == "M"'>#{file_id_m}</if><if test='file_type == "P"'>#{file_id_p}</if> <!-- 파일 고유id -->
, #{file_seq} <!-- 파일순번 -->
, #{file_path} <!-- 파일경로 -->
, #{sys_file_nm} <!-- 저장 파일이름 -->
, #{usr_file_nm} <!-- 사용자 파일이름 -->
)</insert>
<resultMap id="answerRow" type="cokr.xit.interfaces.saeol.SOINN00050"> <!-- 답변 정보 -->
<result property="msgId" column="MSG_ID" /> <!-- 메시지 아이디 -->
<result property="request.cnsl_qna_no" column="CNSL_QNA_NO" /> <!-- 답변접수번호 -->
<result property="request.parent_qna_no" column="PARENT_QNA_NO" /> <!-- 상위QNA번호 -->
<result property="request.psal_vat_yn" column="PSAL_VAT_YN" /> <!-- 국민제안신청여부 -->
<result property="request.if_yn" column="IF_YN" /> <!-- 국민신문고연계여부 -->
<result property="request.s_userid" column="S_USERID" /> <!-- 담당자 ID -->
<result property="request.s_username" column="S_USERNAME" /> <!-- 담당자명 -->
<result property="request.mw_cnsl_sj" column="MW_CNSL_SJ" /> <!-- 처리구분 -->
<result property="request.mw_appl_cn" column="MW_APPL_CN" /> <!-- 답변내용 -->
<result property="request.telno" column="TELNO" /> <!-- 전화번호 -->
<result property="request.email" column="EMAIL" /> <!-- 이메일 -->
<result property="request.cnsl_dep_nm" column="CNSL_DEP_NM" /> <!-- 부서명 -->
<result property="request.dep_code" column="DEP_CODE" /> <!-- 부서코드 -->
<result property="request.mw_answ_cnt" column="MW_ANSW_CNT" /> <!-- 추가답변카운터 -->
<result property="request.mw_char_dep_se" column="MW_CHAR_DEP_SE" /> <!-- 민원담당부서구분 -->
<result property="request.mw_cnsl_se_code" column="MW_CNSL_SE_CODE" /> <!-- 민원구분코드 -->
<result property="request.mw_org_code" column="MW_ORG_CODE" /> <!-- 민원기관코드 -->
<result property="request.civil_gist" column="CIVIL_GIST" /> <!-- 민원요지 -->
<result property="request.civil_abstract" column="CIVIL_ABSTRACT" /> <!-- 민원처리결과요약 -->
<result property="request.pcd_gubun" column="PCD_GUBUN" /> <!-- 안전신고답변유형 -->
<result property="response.msg_key" column="MSG_KEY" /> <!-- 메시지키 -->
<result property="response.state_code" column="STATE_CODE" /> <!-- 상태코드 -->
<result property="response.state_msg" column="STATE_MSG" /> <!-- 상태메시지 -->
<result property="response.state_dtl" column="STATE_DTL" /> <!-- 처리일시 -->
</resultMap>
<select id="selectSOINN00050" parameterType="map" resultType="dataobject">/* 답변 조회(saeolMapper.selectSOINN00050) */
SELECT *
FROM TB_SOINN00050
WHERE MSG_ID = #{msg_id}
</select>
<select id="selectAnswers" resultMap="answerRow">/* 등록대상 답변 조회(saeolMapper.selectAnwserList) */
SELECT *
FROM TB_SOINN00050
WHERE STATE_CODE = '1'
ORDER BY MSG_ID</select>
<insert id="insertSOINN00050" parameterType="map">/* 답변등록(saeolMapper.insertSOINN00050) */
<selectKey keyProperty="msgId" keyColumn="NEW_ID" resultType="string" order="BEFORE">
SELECT CONCAT(TODAY, LPAD(NVL(SUBSTR(MAX(MSG_ID), 9) + 1, 1), 5, '0')) NEW_ID
FROM (<include refid="utility.selectToday" />) B
LEFT OUTER JOIN TB_SOINN00050 A ON MSG_ID LIKE CONCAT(TODAY, '%')</selectKey>
INSERT INTO TB_SOINN00050 (
MSG_ID <!-- 메시지 아이디 -->
, CNSL_QNA_NO <!-- 답변접수번호 -->
, PARENT_QNA_NO <!-- 상위QNA번호 -->
, PSAL_VAT_YN <!-- 국민제안신청여부 -->
, IF_YN <!-- 국민신문고연계여부 -->
, S_USERID <!-- 담당자 ID -->
, 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} <!-- 상위QNA번호 -->
, #{request.psal_vat_yn} <!-- 국민제안신청여부 -->
, #{request.if_yn} <!-- 국민신문고연계여부 -->
, #{request.s_userid} <!-- 담당자 ID -->
, #{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} <!-- 처리일시 -->
)</insert>
<update id="updateSOINN00050" parameterType="map">/* 답변등록 결과 업데이트(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}</update>
</mapper>

@ -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
}
}
]
}

@ -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 ;
*/
Loading…
Cancel
Save