Files
wace_plm/WebContent/WEB-INF/classes/com/pms/mapper/spec.xml
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

839 lines
30 KiB
XML

<?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="spec">
<!-- 기술자료 목록을 가져온다. -->
<select id="getSpecDataList" parameterType="map" resultType="map">
SELECT *
FROM
(SELECT *
FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS RNUM,
SPEC_INFO.*,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = SPEC_INFO.PARENT_CATEGORY_OBJID
) PARENT_CATEGORY_NAME ,
(SELECT T.CATEGORY_NAME FROM (SELECT T.*,LEVEL AS LEV
FROM STANDARD_DOC_CATEGORY T
START WITH T.PARENT_OBJID IS NULL
CONNECT BY PRIOR T.OBJID =T.PARENT_OBJID) T
WHERE T.OBJID= (SELECT O.PARENT_OBJID FROM STANDARD_DOC_CATEGORY O WHERE O.OBJID = SPEC_INFO.PARENT_CATEGORY_OBJID)
)AS PARENT_PARENT_CATEGORY_NAME ,
(SELECT ROOT_NAME FROM (SELECT CONNECT_BY_ROOT CATEGORY_NAME AS ROOT_NAME,T.*,LEVEL AS LEV
FROM STANDARD_DOC_CATEGORY T
START WITH T.PARENT_OBJID IS NULL
CONNECT BY PRIOR T.OBJID =T.PARENT_OBJID) T
WHERE T.OBJID=SPEC_INFO.CATEGORY_OBJID)AS ROOT_CATEGORY_NAME
FROM
(SELECT OBJID,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) CATEGORY_NAME,
(SELECT PARENT_OBJID
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) PARENT_CATEGORY_OBJID,
(SELECT SPEC_INPUT_TYPE
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) SPEC_INPUT_TYPE,
CATEGORY_OBJID,
DOC_NO,
DOC_NAME,
(SELECT PRODUCT_GROUP_NAME
FROM PRODUCT_GROUP_MNG
WHERE OBJID = DOC_INFO.PRODUCT_GROUP_OBJID
) PRODUCT_GROUP_NAME,
PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_NAME
FROM PRODUCT_MNG
WHERE OBJID = DOC_INFO.PRODUCT_OBJID
) PRODUCT_NAME,
PRODUCT_OBJID,
(SELECT CAR_NAME
FROM CAR_MNG
WHERE OBJID = DOC_INFO.CAR_OBJID
) CAR_NAME,
CAR_OBJID,
GRADE_OBJID,
COMPATITION_CAR_NAME,
STANDARD_NAME,
DESCRIPTION,
CHANGE_HISTORY,
STEP,
REV,
REVISION_ORDER,
EO_NO,
ESTABLISH_DATE ESTABLISH_DATE_ORG,
TO_CHAR(ESTABLISH_DATE,'YYYY-MM-DD') ESTABLISH_DATE,
REVISION_DATE REVISION_DATE_ORG,
TO_CHAR(REVISION_DATE,'YYYY-MM-DD') REVISION_DATE,
IS_LAST,
WRITER,
(SELECT O1.USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = DOC_INFO.WRITER) AS WRITER_NAME,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = DOC_INFO.OBJID AND DOC_TYPE='DOC_SPEC' AND UPPER(STATUS) = 'ACTIVE') AS FILECNT,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
STATUS,
SPEC_NO
FROM STANDARD_DOC_INFO DOC_INFO
WHERE 1=1
) SPEC_INFO
WHERE 1=1
<!-- <choose>
<when test=" listType == 'SPEC' ">
AND SPEC_INPUT_TYPE = #{listType}
</when>
<when test=" listType == 'benchMarking' ">
AND SPEC_INPUT_TYPE = #{listType}
</when>
<otherwise>
AND SPEC_INPUT_TYPE NOT IN ('SPEC','benchMarking')
</otherwise>
</choose> -->
<if test="search_category != null and search_category != ''">
AND SPEC_INFO.CATEGORY_OBJID IN(SELECT OBJID FROM STANDARD_DOC_CATEGORY T
START WITH T.OBJID = #{search_category}
CONNECT BY PRIOR T.OBJID =T.PARENT_OBJID)
</if>
<if test="search_revisionFromDate != null and search_revisionFromDate != ''">
AND TO_DATE(REVISION_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_revisionFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_revisionToDate != null and search_revisionToDate != ''">
AND TO_DATE(REVISION_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_revisionToDate}, 'YYYY-MM-DD')
</if>
<if test="search_establishFromDate != null and search_establishFromDate != ''">
AND TO_DATE(ESTABLISH_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_establishFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_establishToDate != null and search_establishToDate != ''">
AND TO_DATE(ESTABLISH_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_establishToDate}, 'YYYY-MM-DD')
</if>
<if test="search_regFromDate != null and search_regFromDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_regFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_regToDate != null and search_regToDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_regToDate}, 'YYYY-MM-DD')
</if>
<if test="search_docName != null and search_docName != ''">
AND DOC_NAME LIKE '%${search_docName}%'
</if>
<if test="search_docNo != null and search_docNo != ''">
AND DOC_NO LIKE '%${search_docNo}%'
</if>
<if test="search_specNo != null and search_specNo != ''">
AND SPEC_NO LIKE '%${search_specNo}%'
</if>
<if test=" 1 == search_isLast ">
AND SPEC_INFO.IS_LAST = 1
</if>
<if test="search_eoNo != null and search_eoNo != ''">
AND UPPER(SPEC_INFO.EO_NO) LIKE UPPER('%${search_eoNo}%')
</if>
<if test="search_categoryName != null and search_categoryName != ''">
AND SPEC_INFO.CATEGORY_NAME = #{search_categoryName}
</if>
<if test="search_writer != null and search_writer != ''">
AND SPEC_INFO.WRITER_NAME LIKE UPPER('%${search_writer}%')
</if>
) TBL
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ WHERE RNUM <= #{PAGE_END} ]]>
</if>
)
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ WHERE RNUM >= #{PAGE_START} ]]>
</if>
</select>
<!-- 기술 문서 Revision List -->
<select id="getRevisionList" resultType="map" parameterType="map">
SELECT
T.OBJID
,NVL(TO_CHAR(T.REVISION_DATE,'YYYY-MM-DD'),'-') AS REVISION_DATE
,NVL(TO_CHAR(T.REGDATE,'YYYY-MM-DD'),'-') AS REG_DATE
,REV
,TRIM(TO_CHAR(T.DESCRIPTION)) AS DESCRIPTION
,NVL((SELECT WM_CONCAT(T1.OBJID) FROM ATTACH_FILE_INFO T1 WHERE T1.TARGET_OBJID = T.OBJID AND T1.Status='Active'),'-') AS FILE_OBJID
,NVL((SELECT WM_CONCAT(T1.REAL_FILE_NAME) FROM ATTACH_FILE_INFO T1 WHERE T1.TARGET_OBJID = T.OBJID AND T1.Status='Active'),'-') AS REAL_FILE_NAME
FROM STANDARD_DOC_INFO T
WHERE T.DOC_NO=#{DOC_NO}
AND T.REV <![CDATA[ < ]]> #{REV}
ORDER BY T.REV DESC
</select>
<!-- 기술자료 목록의 count를 가져온다. -->
<!-- 기술자료 목록의 count를 가져온다. -->
<select id="getSpecDataListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM
(SELECT
COUNT(1) TOTAL_CNT
FROM
(SELECT OBJID,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) CATEGORY_NAME,
(SELECT PARENT_OBJID
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) PARENT_CATEGORY_OBJID,
(SELECT SPEC_INPUT_TYPE
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) SPEC_INPUT_TYPE,
CATEGORY_OBJID,
DOC_NO,
DOC_NAME,
(SELECT PRODUCT_GROUP_NAME
FROM PRODUCT_GROUP_MNG
WHERE OBJID = DOC_INFO.PRODUCT_GROUP_OBJID
) PRODUCT_GROUP_NAME,
PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_NAME
FROM PRODUCT_MNG
WHERE OBJID = DOC_INFO.PRODUCT_OBJID
) PRODUCT_NAME,
PRODUCT_OBJID,
(SELECT CAR_NAME
FROM CAR_MNG
WHERE OBJID = DOC_INFO.CAR_OBJID
) CAR_NAME,
CAR_OBJID,
GRADE_OBJID,
COMPATITION_CAR_NAME,
STANDARD_NAME,
DESCRIPTION,
CHANGE_HISTORY,
STEP,
REV,
REVISION_ORDER,
EO_NO,
ESTABLISH_DATE ESTABLISH_DATE_ORG,
TO_CHAR(ESTABLISH_DATE,'YYYY-MM-DD') ESTABLISH_DATE,
REVISION_DATE REVISION_DATE_ORG,
TO_CHAR(REVISION_DATE,'YYYY-MM-DD') REVISION_DATE,
IS_LAST,
WRITER,
(SELECT O1.USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = DOC_INFO.WRITER) AS WRITER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
STATUS,
SPEC_NO
FROM STANDARD_DOC_INFO DOC_INFO
WHERE 1=1
) SPEC_INFO
WHERE 1=1
<!-- <choose>
<when test=" listType == 'SPEC' ">
AND SPEC_INPUT_TYPE = #{listType}
</when>
<when test=" listType == 'benchMarking' ">
AND SPEC_INPUT_TYPE = #{listType}
</when>
<otherwise>
AND SPEC_INPUT_TYPE NOT IN ('SPEC','benchMarking')
</otherwise>
</choose> -->
<if test="search_category != null and search_category != ''">
AND SPEC_INFO.CATEGORY_OBJID IN(SELECT OBJID FROM STANDARD_DOC_CATEGORY T
START WITH T.OBJID = #{search_category}
CONNECT BY PRIOR T.OBJID =T.PARENT_OBJID)
</if>
<if test="search_revisionFromDate != null and search_revisionFromDate != ''">
AND TO_DATE(REVISION_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_revisionFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_revisionToDate != null and search_revisionToDate != ''">
AND TO_DATE(REVISION_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_revisionToDate}, 'YYYY-MM-DD')
</if>
<if test="search_establishFromDate != null and search_establishFromDate != ''">
AND TO_DATE(ESTABLISH_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_establishFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_establishToDate != null and search_establishToDate != ''">
AND TO_DATE(ESTABLISH_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_establishToDate}, 'YYYY-MM-DD')
</if>
<if test="search_regFromDate != null and search_regFromDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_regFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_regToDate != null and search_regToDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_regToDate}, 'YYYY-MM-DD')
</if>
<if test="search_docName != null and search_docName != ''">
AND DOC_NAME LIKE '%${search_docName}%'
</if>
<if test="search_docNo != null and search_docNo != ''">
AND DOC_NO LIKE '%${search_docNo}%'
</if>
<if test="search_specNo != null and search_specNo != ''">
AND SPEC_NO LIKE '%${search_specNo}%'
</if>
<if test=" 1 == search_isLast ">
AND SPEC_INFO.IS_LAST = 1
</if>
<if test="search_eoNo != null and search_eoNo != ''">
AND UPPER(SPEC_INFO.EO_NO) LIKE UPPER('%${search_eoNo}%')
</if>
<if test="search_categoryName != null and search_categoryName != ''">
AND SPEC_INFO.CATEGORY_NAME = #{search_categoryName}
</if>
<if test="search_writer != null and search_writer != ''">
AND SPEC_INFO.WRITER_NAME LIKE UPPER('%${search_writer}%')
</if>
)
</select>
<!-- 기술자료 저장/수정 -->
<update id="saveSpecData" parameterType="map">
MERGE INTO STANDARD_DOC_INFO T USING DUAL ON ( T.OBJID = #{objid})
WHEN MATCHED THEN
UPDATE
SET
T.CATEGORY_OBJID = #{categoryObjid},
T.DOC_NO = #{docNo},
T.DOC_NAME = #{docName},
T.PRODUCT_GROUP_OBJID = #{productFamily},
T.PRODUCT_OBJID = #{product},
T.CAR_OBJID = #{car},
T.GRADE_OBJID = #{grade},
T.COMPATITION_CAR_NAME = #{compatitionCar},
T.OEM_OBJID = #{oem},
T.COMPANY_OBJID = #{compete},
T.STANDARD_NAME = #{standardName},
T.DESCRIPTION = #{description},
T.CHANGE_HISTORY = #{changeHistory},
T.STEP = #{step},
T.REV = #{revision},
T.REVISION_ORDER = #{revisionOrder},
T.EO_NO = #{eoNo},
T.IS_LAST = #{isLast},
T.SPEC_NO = #{specNo}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.CATEGORY_OBJID,
T.DOC_NO,
T.DOC_NAME,
T.PRODUCT_GROUP_OBJID,
T.PRODUCT_OBJID,
T.CAR_OBJID,
T.GRADE_OBJID,
T.COMPATITION_CAR_NAME,
T.COMPANY_OBJID,
T.OEM_OBJID,
T.STANDARD_NAME,
T.DESCRIPTION,
T.CHANGE_HISTORY,
T.STEP,
T.REV,
T.REVISION_ORDER,
T.EO_NO,
T.ESTABLISH_DATE,
T.REVISION_DATE,
T.IS_LAST,
T.WRITER,
T.REGDATE,
T.STATUS,
T.SPEC_NO
)
VALUES
(
#{objid},
#{categoryObjid},
#{docNo},
#{docName},
#{productFamily},
#{product},
#{car},
#{grade},
#{compatitionCar},
#{compete},
#{oem},
#{standardName},
#{description},
#{changeHistory},
#{step},
#{revision},
#{revisionOrder},
#{eoNo},
TO_DATE(#{establishDate}),
TO_DATE(#{revisionDate}),
#{isLast},
#{writer},
SYSDATE,
#{status},
#{specNo}
)
</update>
<insert id="revisionSpecData" parameterType="map">
INSERT
INTO STANDARD_DOC_INFO
(
CAR_OBJID,
CATEGORY_OBJID,
CHANGE_HISTORY,
COMPANY_OBJID,
COMPATITION_CAR_NAME,
COMPETE_COMPANY_OBJID,
DESCRIPTION,
DOC_NAME,
DOC_NO,
GRADE_OBJID,
IS_LAST,
OBJID,
OEM_OBJID,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
REGDATE,
REV,
REVISION_DATE,
SPEC_NO,
STANDARD_NAME,
STATUS,
STEP,
WRITER
)
SELECT CAR_OBJID,
CATEGORY_OBJID,
CHANGE_HISTORY,
COMPANY_OBJID,
COMPATITION_CAR_NAME,
COMPETE_COMPANY_OBJID,
DESCRIPTION,
DOC_NAME,
DOC_NO,
GRADE_OBJID,
'1' IS_LAST,
#{objid} OBJID,
OEM_OBJID,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
SYSDATE REGDATE,
#{revision} REV,
SYSDATE REVISION_DATE,
SPEC_NO,
STANDARD_NAME,
STATUS,
STEP,
WRITER
FROM STANDARD_DOC_INFO
WHERE OBJID = #{oldObjid}
</insert>
<update id="updateSpecDataIsLast" parameterType="map">
UPDATE STANDARD_DOC_INFO SET IS_LAST = '0' WHERE OBJID = #{objid}
</update>
<!-- 등록된 기술자료의 상세 내용을 가져온다. -->
<select id="getSpecDataInfo" parameterType="map" resultType="map">
SELECT * FROM(
SELECT OBJID,
CATEGORY_OBJID,
(SELECT SPEC_INPUT_TYPE FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.CATEGORY_OBJID) CATEGORY_TYPE,
(SELECT CATEGORY_NAME FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.CATEGORY_OBJID) CATEGORY_NAME,
(SELECT PARENT_OBJID FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.CATEGORY_OBJID) PARENT_CATEGORY_OBJID,
DOC_NO,
DOC_NAME,
PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PRODUCT_GROUP_OBJID) PRODUCT_GROUP_NAME,
PRODUCT_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) PRODUCT_NAME,
CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = CAR_OBJID) CAR_NAME,
GRADE_OBJID,
(SELECT GRADE_NAME FROM CAR_GRADE_MNG WHERE OBJID = GRADE_OBJID) GRADE_NAME,
COMPANY_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = COMPANY_OBJID) COMPANY_NAME,
OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = OEM_OBJID) OEM_NAME,
COMPATITION_CAR_NAME,
STANDARD_NAME,
DESCRIPTION,
CHANGE_HISTORY,
STEP,
REV,
REVISION_ORDER,
EO_NO,
ESTABLISH_DATE ESTABLISH_DATE_ORG,
TO_CHAR(ESTABLISH_DATE,'YYYY-MM-DD') ESTABLISH_DATE,
REVISION_DATE REVISION_DATE_ORG,
TO_CHAR(REVISION_DATE,'YYYY-MM-DD') REVISION_DATE,
IS_LAST,
WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) DEPT_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
STATUS,
SPEC_NO
FROM STANDARD_DOC_INFO T
WHERE 1=1
)WHERE 1=1
<if test=" objid != '' and objid != null">
AND OBJID = #{objid}
</if>
<if test=" search_specNo != '' and search_specNo != null ">
AND SPEC_NO = #{search_specNo}
</if>
<if test=" categoryObjid != '' and categoryObjid != null ">
AND CATEGORY_OBJID = #{categoryObjid}
</if>
<if test=" parentObjid != '' and parentObjid != null ">
AND PARENT_CATEGORY_OBJID = #{parentObjid}
</if>
</select>
<!-- 검색조건에 해당하는 기술자료 목록을 가져온다. -->
<select id="getSpecDataInfoList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS RNUM,
SPEC_INFO.*,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = SPEC_INFO.PARENT_CATEGORY_OBJID
) PARENT_CATEGORY_NAME
FROM
(SELECT OBJID,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) CATEGORY_NAME,
(SELECT PARENT_OBJID
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) PARENT_CATEGORY_OBJID,
(SELECT SPEC_INPUT_TYPE
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) SPEC_INPUT_TYPE,
CATEGORY_OBJID,
DOC_NO,
DOC_NAME,
(SELECT PRODUCT_GROUP_NAME
FROM PRODUCT_GROUP_MNG
WHERE OBJID = DOC_INFO.PRODUCT_GROUP_OBJID
) PRODUCT_GROUP_NAME,
PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_NAME
FROM PRODUCT_MNG
WHERE OBJID = DOC_INFO.PRODUCT_OBJID
) PRODUCT_NAME,
PRODUCT_OBJID,
(SELECT CAR_NAME
FROM CAR_MNG
WHERE OBJID = DOC_INFO.CAR_OBJID
) CAR_NAME,
CAR_OBJID,
GRADE_OBJID,
COMPATITION_CAR_NAME,
STANDARD_NAME,
DESCRIPTION,
CHANGE_HISTORY,
STEP,
REV,
ESTABLISH_DATE ESTABLISH_DATE_ORG,
TO_CHAR(ESTABLISH_DATE,'YYYY-MM-DD') ESTABLISH_DATE,
REVISION_DATE REVISION_DATE_ORG,
TO_CHAR(REVISION_DATE,'YYYY-MM-DD') REVISION_DATE,
IS_LAST,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
STATUS,
SPEC_NO
FROM STANDARD_DOC_INFO DOC_INFO
WHERE 1=1
) SPEC_INFO
WHERE 1=1
<if test=" search_docNo != '' and search_docNo != null ">
AND DOC_NO LIKE '%${search_docNo}%'
</if>
<if test=" search_specNo != '' and search_specNo != null ">
AND SPEC_NO LIKE '%${search_specNo}%'
</if>
<if test=" search_standardName != '' and search_standardName != null ">
AND STANDARD_NAME LIKE '%${search_standardName}%'
</if>
<if test=" search_docName != '' and search_docName != null ">
AND DOC_NAME LIKE '%${search_docName}%'
</if>
<if test=" listType != '' and listType != null ">
AND SPEC_INPUT_TYPE = #{listType}
</if>
</select>
<select id="getTransSpecDataTargetList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS RNUM,
SPEC_INFO.*,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = SPEC_INFO.PARENT_CATEGORY_OBJID
) PARENT_CATEGORY_NAME
FROM
(SELECT OBJID,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) CATEGORY_NAME,
(SELECT PARENT_OBJID
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) PARENT_CATEGORY_OBJID,
(SELECT SPEC_INPUT_TYPE
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = DOC_INFO.CATEGORY_OBJID
) SPEC_INPUT_TYPE,
CATEGORY_OBJID,
DOC_NO,
DOC_NAME,
(SELECT PRODUCT_GROUP_NAME
FROM PRODUCT_GROUP_MNG
WHERE OBJID = DOC_INFO.PRODUCT_GROUP_OBJID
) PRODUCT_GROUP_NAME,
PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_NAME
FROM PRODUCT_MNG
WHERE OBJID = DOC_INFO.PRODUCT_OBJID
) PRODUCT_NAME,
PRODUCT_OBJID,
(SELECT CAR_NAME
FROM CAR_MNG
WHERE OBJID = DOC_INFO.CAR_OBJID
) CAR_NAME,
CAR_OBJID,
GRADE_OBJID,
COMPATITION_CAR_NAME,
STANDARD_NAME,
DESCRIPTION,
CHANGE_HISTORY,
STEP,
REV,
ESTABLISH_DATE ESTABLISH_DATE_ORG,
TO_CHAR(ESTABLISH_DATE,'YYYY-MM-DD') ESTABLISH_DATE,
REVISION_DATE REVISION_DATE_ORG,
TO_CHAR(REVISION_DATE,'YYYY-MM-DD') REVISION_DATE,
IS_LAST,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
STATUS,
SPEC_NO
FROM STANDARD_DOC_INFO DOC_INFO
WHERE 1=1
AND IS_LAST = '1'
) SPEC_INFO
WHERE 1=1
<if test=" search_docNo != '' and search_docNo != null ">
AND DOC_NO LIKE '%${search_docNo}%'
</if>
<if test=" search_specNo != '' and search_specNo != null ">
AND SPEC_NO LIKE '%${search_specNo}%'
</if>
<if test=" search_standardName != '' and search_standardName != null ">
AND STANDARD_NAME LIKE '%${search_standardName}%'
</if>
<if test=" listType != '' and listType != null ">
AND SPEC_INPUT_TYPE = #{listType}
</if>
<if test=" categoryObjId != '' and categoryObjId != null ">
AND CATEGORY_OBJID = #{categoryObjId}
</if>
AND SPEC_NO NOT IN (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid})
AND NOT EXISTS (SELECT 1 FROM SPEC_LINK_INFO WHERE 1=1 AND AFTER_SPEC_NO IN(SPEC_NO) OR BEFORE_SPEC_NO IN(SPEC_NO))
</select>
<!-- 해당하는 기술정보의 카테고리 정보를 가져온다. -->
<select id="getSpecDataInfoCategorySet" parameterType="map" resultType="map">
SELECT T.*,
(SELECT CATEGORY_NAME FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.CATEGORY_HIGH_OBJID)CATEGORY_HIGH_CATEGORY_NAME
FROM(
SELECT
OBJID,
CATEGORY_NAME,
PARENT_OBJID,
(SELECT CATEGORY_NAME FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.PARENT_OBJID)PARENT_CATEGORY_NAME,
(SELECT PARENT_OBJID FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.PARENT_OBJID) CATEGORY_HIGH_OBJID,
STATUS,
USE_CAR,
USE_COMPATITION_CAR,
USE_DOC_LINK,
USE_PRODUCT,
USE_PRODUCT_GROUP,
USE_REVISION,
SPEC_INPUT_TYPE
FROM STANDARD_DOC_CATEGORY T
WHERE OBJID IN
(SELECT CATEGORY_OBJID
FROM STANDARD_DOC_INFO
WHERE OBJID = #{objid}
)
<if test=" status != '' and status != null ">
AND STATUS = #{status}
</if>
)T
</select>
<!-- 소분류 선택 후 기존에 등록된 기술자료가 있는 경우 문서번호를 자동으로 생성해온다. -->
<select id="createCategoryDocBaseInfo" parameterType="map" resultType="map">
SELECT T.*,
NVL2(DOC_MAX_NO,DOC_NO_RULE||'-'||LPAD(SUBSTR(DOC_MAX_NO,10,4)+1, 4, '0'),DOC_NO_RULE||'-'||LPAD(1, 4, '0')) DOC_NO
FROM
(SELECT OBJID CATEGORY_OBJID,
DOC_NO_RULE,
(SELECT MAX(DOC_NO)
FROM STANDARD_DOC_INFO
WHERE CATEGORY_OBJID = CATE.OBJID
)DOC_MAX_NO
FROM STANDARD_DOC_CATEGORY CATE
WHERE CATEGORY_TYPE = 'low'
AND OBJID = #{categoryObjid}
)T
</select>
<!-- 대상스펙을 From에 해당하는 스펙으로 치환한다. -->
<update id="mergeSpecDataTranseWithFrom">
MERGE INTO SPEC_LINK_INFO T USING DUAL ON (AFTER_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid}) AND BEFORE_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{fromObjid}))
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.AFTER_SPEC_NO,
T.BEFORE_SPEC_NO,
T.CATEGORY_OBJID,
T.REGDATE
)
VALUES
(
#{objid},
(SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid}),
(SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{fromObjid}),
#{categoryObjId},
SYSDATE
)
</update>
<!-- 연결된 스펙 삭제 -->
<delete id="deleteSpecDataTranseWithFrom">
DELETE SPEC_LINK_INFO WHERE CATEGORY_OBJID = #{categoryObjId} AND AFTER_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid})
</delete>
<!-- 대상스펙으로 TO에 해당하는 스펙을 치환한다. -->
<update id="mergeSpecDataTranseWithTo">
MERGE INTO SPEC_LINK_INFO T USING DUAL ON (AFTER_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{toObjid}) AND BEFORE_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid}))
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.AFTER_SPEC_NO,
T.BEFORE_SPEC_NO,
T.CATEGORY_OBJID,
T.REGDATE
)
VALUES
(
#{objid},
(SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{toObjid}),
(SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid}),
#{categoryObjId},
SYSDATE
)
</update>
<delete id="deleteSpecDataTranseWithTo">
DELETE SPEC_LINK_INFO WHERE CATEGORY_OBJID = #{categoryObjId} AND BEFORE_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid})
</delete>
<select id="getTransSpecDataFromList" parameterType="map" resultType="map">
SELECT *
FROM
(SELECT OBJID,
AFTER_SPEC_NO,
BEFORE_SPEC_NO,
REGDATE
FROM SPEC_LINK_INFO
WHERE AFTER_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{objid})
AND CATEGORY_OBJID = #{categoryObjId}
)LINK_INFO,
(SELECT OBJID DOC_OBJID,
DOC_NO,
STANDARD_NAME,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = CATEGORY_OBJID
) CATEGORY_NAME,
SPEC_NO,
IS_LAST
FROM STANDARD_DOC_INFO
)DOC_INFO
WHERE DOC_INFO.SPEC_NO = LINK_INFO.BEFORE_SPEC_NO
AND IS_LAST = '1'
</select>
<select id="getTransSpecDataToList" parameterType="map" resultType="map">
SELECT *
FROM
(SELECT OBJID,
AFTER_SPEC_NO,
BEFORE_SPEC_NO,
REGDATE
FROM SPEC_LINK_INFO
WHERE BEFORE_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{objid})
AND CATEGORY_OBJID = #{categoryObjId}
)LINK_INFO,
(SELECT OBJID DOC_OBJID,
DOC_NO,
STANDARD_NAME,
(SELECT CATEGORY_NAME
FROM STANDARD_DOC_CATEGORY
WHERE OBJID = CATEGORY_OBJID
) CATEGORY_NAME,
SPEC_NO,
IS_LAST
FROM STANDARD_DOC_INFO
)DOC_INFO
WHERE DOC_INFO.SPEC_NO = LINK_INFO.AFTER_SPEC_NO
AND IS_LAST = '1'
</select>
<select id="getcategoryName" parameterType="map" resultType="map">
SELECT
TO_CHAR(OBJID) AS CODE
,CATEGORY_NAME AS NAME
,'' AS CODE_CD
,'' AS STATUS
,'' AS ID
,'' AS EXT_VAL
FROM STANDARD_DOC_CATEGORY T
WHERE T.CATEGORY_TYPE='root'
</select>
</mapper>