2025-10-27 10:38 이수증 관리

This commit is contained in:
myname 2025-10-27 10:38:28 +09:00
parent f51657303b
commit 97e4d7e031
3 changed files with 316 additions and 1 deletions

View File

@ -165,7 +165,7 @@ public class PreventMngController {
//파일 처리 egov
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil egovFileMngUtil;
//파일 체크 util
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;

View File

@ -3,6 +3,10 @@
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 강사 --><!-- 기본셋 -->
<sqlMap resource="egovframework/sqlmap/ve/instr/VEInstrDetailActvtHstry_SQL_Postgresql.xml"/><!-- 강사활동내역신청테이블 -->
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Postgresql.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcsOnlnCntnt_SQL_Postgresql.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml"/>

View File

@ -0,0 +1,311 @@
<?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="VEInstrDetailApptHchkHstry">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="VEInstrDetailActvtHstryVO" type="kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO"/>
<!-- 공통 테이블 명 -->
<sql id="VEInstrDetailActvtHstryDAO.table_name">
ve_instr_detail_actvt_hstry
</sql>
<!-- 저장용 공통 컬럼 명 -->
<sql id="VEInstrDetailActvtHstryDAO.column_name">
instr_detail_actvt_hstry_ord
, user_id
, instr_detail_ord
, aplct_pnttm
, state_cd
, state_pnttm
, aplct_atch_file_id
, cmpnn_cn
, frst_regist_pnttm
, frst_register_id
, last_updt_pnttm
, last_updusr_id
, docu_nmbr
, sex
, purpose
, bsns_nmbr
, bsns_nm
</sql>
<!-- 조회용 공통 컬럼 명 -->
<sql id="VEInstrDetailActvtHstryDAO.select_column_name">
a.instr_detail_actvt_hstry_ord as instrDetailActvtHstryOrd
, a.user_id as userId
, a.instr_detail_ord as instrDetailOrd
, TO_CHAR(a.aplct_pnttm,'YYYY-MM-DD') AS aplctPnttm
, a.state_cd as stateCd
, TO_CHAR(a.state_pnttm,'YYYY-MM-DD') AS statePnttm
, a.aplct_atch_file_id as aplctAtchFileId
, a.cmpnn_cn as cmpnnCn
, 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 frstRegistPnttm
, a.last_updusr_id as lastUpdusrId
, a.docu_nmbr AS docuNmbr
, a.sex
, a.purpose
, a.bsns_nmbr AS bsnsNmbr
, a.bsns_nm AS bsnsNm
, a.actvt_period AS actvtPeriod
</sql>
<insert id="VEInstrDetailActvtHstryDAO.insert" parameterClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.insert */
INSERT INTO <include refid="VEInstrDetailActvtHstryDAO.table_name"/> (
<include refid="VEInstrDetailActvtHstryDAO.column_name"/>
)VALUES(
#instrDetailActvtHstryOrd#
, #userId#
, #instrDetailOrd#
, SYSDATE
, #stateCd#
, SYSDATE
, #aplctAtchFileId#
, #cmpnnCn#
, SYSDATE
, #frstRegisterId#
, ''
, #lastUpdusrId#
, #docuNmbr#
, #sex#
, #purpose#
, #bsnsNmbr#
, #bsnsNm#
)
</insert>
<select id="VEInstrDetailActvtHstryDAO.selectList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectList */
SELECT
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
WHERE
user_id = #userId#
</select>
<select id="VEInstrDetailActvtHstryDAO.selectPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectPagingList */
SELECT
COUNT(1) OVER() AS totCnt ,
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.INSTR_NM AS instrNm ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
AND b.INSTR_DIV = #instrDiv#
WHERE
1=1
<isNotEmpty prepend="AND" property="searchKeyword">
b.INSTR_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
ORDER BY a.aplct_pnttm desc
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.selectSignPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectSignPagingList */
SELECT
COUNT(1) OVER() AS totCnt ,
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.INSTR_NM AS instrNm ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
, c.cnt
, c.chasiSum
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
left outer join
(
SELECT c.USER_ID AS userId
, count(*) AS cnt
, sum(b.chasi) AS chasiSum
FROM ve_edu_aplct a
, ve_edu_chasi b
, ve_edu_chasi_instr_asgnm c
WHERE a.EDU_APLCT_ORD =b.EDU_APLCT_ORD
AND b.EDU_APLCT_ORD =c.EDU_APLCT_ORD
AND b.EDU_CHASI_ORD =c.EDU_CHASI_ORD
AND a.aprvl_cd='60'
AND c.asgnm_aprvl_Cd='30'
GROUP BY c.USER_ID
)c
on(
a.user_id=c.userId
)
WHERE
1=1
AND a.docu_nmbr IS not null
<isNotEmpty prepend="AND" property="searchKeyword">
b.INSTR_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList */
SELECT
COUNT(1) OVER() AS totCnt
, a.PRCS_APLCT_PRD_ORD as prcsAplctPrdOrd
, b.LCTR_DIV_CD AS lctrDivCd
, b.EDU_STRT_PNTTM AS eduStrtPnttm
, a.EDU_APLCT_ORD as eduAplctOrd
, a.APLCT_STATE_CD as aplctStateCd
, a.EDU_CMPLT_CRTFC_NMBR as eduCmpltCrtfcNmbr
, c.PRCS_NM as prcsNm
, c.PRCS_DIV as prcsDiv
, d.USER_ID as userId
, e.MBER_NM as mberNm
, to_char( a.LAST_UPDT_PNTTM ,'YYYY.MM.DD' ) AS lastUpdtPnttm
FROM
vea_aplct_detail_info a
LEFT JOIN ve_prcs_aplct_prd b
ON a.PRCS_APLCT_PRD_ORD = b.PRCS_APLCT_PRD_ORD
LEFT JOIN ve_prcs c
ON b.PRCS_ORD = c.PRCS_ORD
LEFT JOIN VE_EDU_APLCT d
ON a.EDU_APLCT_ORD = d.EDU_APLCT_ORD
LEFT JOIN LETTNGNRLMBER e
ON e.MBER_ID = d.USER_ID
WHERE
a.APLCT_STATE_CD ='20'
AND
b.LCTR_DIV_CD !='60'
AND
a.EDU_CMPLT_CRTFC_NMBR IS NOT null
<isNotEmpty prepend="AND" property="searchKeyword">
e.MBER_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.LAST_UPDT_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.LAST_UPDT_PNTTM,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
ORDER BY a.EDU_CMPLT_CRTFC_NMBR desc
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.findById" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/*VEInstrDetailActvtHstryDAO.findById */
SELECT
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.user_id AS userId ,
b.instr_nm as instrNm ,
b.phone ,
b.post ,
b.addr ,
b.addr_detail as addrDetail ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
WHERE
a.instr_detail_actvt_hstry_ord = #instrDetailActvtHstryOrd#
</select>
<update id="VEInstrDetailActvtHstryDAO.updateStateCd" parameterClass="VEInstrDetailActvtHstryVO">
UPDATE
<include refid="VEInstrDetailActvtHstryDAO.table_name" />
SET
state_cd = #stateCd#
<isEqual property="stateCd" compareValue="30">
, docu_nmbr = NVL(
(
SELECT nvl(max(docu_nmbr),0) AS docuNmbr
FROM ve_instr_detail_actvt_hstry a
WHERE state_cd='30'
AND to_char(a.state_pnttm,'YYYY')=(
SELECT to_char(sysdate,'YYYY')
FROM dual
)
GROUP BY to_char(a.state_pnttm,'YYYY')
),0
)+1
</isEqual>
<isNotEmpty property="cmpnnCn">
, cmpnn_cn = #cmpnnCn#
</isNotEmpty>
, state_pnttm = SYSDATE
, LAST_UPDT_PNTTM = SYSDATE
, LAST_UPDUSR_ID = #lastUpdusrId#
WHERE
instr_detail_actvt_hstry_ord = #instrDetailActvtHstryOrd#
</update>
<update id="VEInstrDetailActvtHstryDAO.updateActvtPeriod" parameterClass="VEInstrDetailActvtHstryVO">
UPDATE
<include refid="VEInstrDetailActvtHstryDAO.table_name" />
SET
actvt_period = #actvtPeriod#
WHERE
instr_detail_actvt_hstry_ord = #instrDetailActvtHstryOrd#
</update>
</sqlMap>