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}
)
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}
UPDATE STANDARD_DOC_INFO SET IS_LAST = '0' WHERE OBJID = #{objid}
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
)
DELETE SPEC_LINK_INFO WHERE CATEGORY_OBJID = #{categoryObjId} AND AFTER_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid})
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
)
DELETE SPEC_LINK_INFO WHERE CATEGORY_OBJID = #{categoryObjId} AND BEFORE_SPEC_NO = (SELECT SPEC_NO FROM STANDARD_DOC_INFO WHERE OBJID = #{targetObjid})