(
SELECT
RM.OBJID,
RM.PART_OBJID,
PM.PART_NO,
(CASE WHEN PM.PART_NAME IS NULL THEN RM.PART_NAME ELSE PM.PART_NAME END) AS PART_NAME,
(CASE WHEN PM.SPEC IS NULL THEN RM.SPEC ELSE PM.SPEC END) AS SPEC,
(CASE WHEN PM.MATERIAL IS NULL THEN RM.MATERIAL ELSE PM.MATERIAL END) AS MATERIAL,
(CASE WHEN PM.UNIT IS NULL THEN RM.UNIT ELSE (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.UNIT) END) AS UNIT,
(CASE WHEN PM.WEIGHT IS NULL THEN RM.WEIGHT ELSE PM.WEIGHT END) AS WEIGHT,
RM.THICKNESS ,
RM.WIDTH ,
RM.HEIGHT ,
RM.OUT_DIAMETER,
RM.IN_DIAMETER ,
RM.LENGTH ,
RP.UNIT_PRICE,
RP.PERSON_PRICE,
RP.AGENCY_PRICE,
RP.REMARK,
RP.PRICE_REGDATE_TITLE,
REGDATE,
TO_CHAR(RM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RM.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
RM.WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RM.WRITER) AS WRITER_TITLE,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE 1 = 1 AND F.TARGET_OBJID = RM.OBJID AND F.DOC_TYPE = 'RESOURCE_MASTER_MNG_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS FILE_CNT,
CASE WHEN CAD.SAVED_FILE_NAME IS NOT NULL
THEN 1
ELSE 0 END AS CU01_CNT,
CASE WHEN DRAWING.SAVED_FILE_NAME IS NOT NULL
THEN 1
ELSE 0 END AS CU02_CNT,
CASE WHEN PDF.SAVED_FILE_NAME IS NOT NULL
THEN 1
ELSE 0 END AS CU03_CNT,
AF.SAVED_FILE_NAME,
AF.REAL_FILE_NAME,
REPLACE(AF.FILE_PATH, '\', '\\') AS FILE_PATH
FROM
RESOURCE_MNG RM
LEFT OUTER JOIN
(
SELECT
PARENT_OBJID,
UNIT_PRICE,
PERSON_PRICE,
AGENCY_PRICE,
REMARK,
TO_CHAR(RP.APPLY_DATE,'YYYY-MM-DD') AS PRICE_REGDATE_TITLE,
ROW_NUMBER() OVER(PARTITION BY PARENT_OBJID ORDER BY REGDATE DESC) AS RNUM
FROM
RESOURCE_PRICE RP
) RP
ON RM.OBJID = RP.PARENT_OBJID
AND RP.RNUM = 1
LEFT OUTER JOIN PART_MNG AS PM
ON RM.PART_OBJID = PM.OBJID::VARCHAR
LEFT OUTER JOIN
(
SELECT
TARGET_OBJID,
SAVED_FILE_NAME,
REAL_FILE_NAME,
FILE_PATH,
DOC_TYPE
FROM ATTACH_FILE_INFO
WHERE 1 = 1
AND DOC_TYPE IN ('3D_CAD')
AND STATUS = 'Active'
) CAD
ON PM.OBJID::varchar = CAD.TARGET_OBJID::varchar
LEFT OUTER JOIN
(
SELECT
TARGET_OBJID,
SAVED_FILE_NAME,
REAL_FILE_NAME,
FILE_PATH,
DOC_TYPE
FROM ATTACH_FILE_INFO
WHERE 1 = 1
AND DOC_TYPE IN ('2D_DRAWING_CAD')
AND STATUS = 'Active'
) DRAWING
ON PM.OBJID::varchar = DRAWING.TARGET_OBJID::varchar
LEFT OUTER JOIN
(
SELECT
TARGET_OBJID,
SAVED_FILE_NAME,
REAL_FILE_NAME,
FILE_PATH,
DOC_TYPE
FROM ATTACH_FILE_INFO
WHERE 1 = 1
AND DOC_TYPE IN ('2D_PDF_CAD')
AND STATUS = 'Active'
) PDF
ON PM.OBJID::varchar = PDF.TARGET_OBJID::varchar
LEFT OUTER JOIN
(
SELECT
TARGET_OBJID,
SAVED_FILE_NAME,
REAL_FILE_NAME,
FILE_PATH,
DOC_TYPE
FROM ATTACH_FILE_INFO
WHERE 1 = 1
AND DOC_TYPE IN ('PART_SHAPE_IMG')
AND STATUS = 'Active'
) AF
ON PM.OBJID::varchar = AF.TARGET_OBJID::varchar
)
(
SELECT
OBJID,
PARENT_OBJID,
UNIT_PRICE,
PERSON_PRICE,
AGENCY_PRICE,
REMARK,
REGDATE,
TO_CHAR(RP.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RP.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
TO_CHAR(RP.APPLY_DATE,'YYYY-MM-DD') AS APPLY_DATE_TITLE,
WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RP.WRITER) AS WRITER_TITLE
FROM
RESOURCE_PRICE RP
)
INSERT INTO RESOURCE_MNG
(
OBJID,
PART_OBJID,
PART_NAME,
SPEC,
MATERIAL,
UNIT,
WEIGHT,
REGDATE,
WRITER
,THICKNESS
,WIDTH
,HEIGHT
,OUT_DIAMETER
,IN_DIAMETER
,LENGTH
)
VALUES
(
#{OBJID}::numeric,
(CASE WHEN #{part_objid} = '' THEN '0' ELSE #{part_objid} END),
#{part_name},
#{spec},
#{material},
#{unit},
#{weight},
NOW(),
#{WRITER}
,#{THICKNESS }
,#{WIDTH }
,#{HEIGHT }
,#{OUT_DIAMETER }
,#{IN_DIAMETER }
,#{LENGTH }
) ON CONFLICT (OBJID) DO
UPDATE
SET
PART_NAME = #{part_name},
SPEC = #{spec},
MATERIAL = #{material},
UNIT = #{unit},
WEIGHT = #{weight},
WRITER = #{WRITER}
,THICKNESS = #{THICKNESS }
,WIDTH = #{WIDTH }
,HEIGHT = #{HEIGHT }
,OUT_DIAMETER = #{OUT_DIAMETER }
,IN_DIAMETER = #{IN_DIAMETER }
,LENGTH = #{LENGTH }
INSERT INTO RESOURCE_PRICE
(
OBJID
,PARENT_OBJID
,UNIT_PRICE
,PERSON_PRICE
,AGENCY_PRICE
,REMARK
,APPLY_DATE
,REGDATE
,WRITER
)
VALUES
(
#{OBJID}::numeric
,#{PARENT_OBJID}::numeric
,#{UNIT_PRICE}
,#{PERSON_PRICE}
,#{AGENCY_PRICE}
,#{REMARK}
,#{APPLY_DATE}::TIMESTAMP,NOW()
,NOW()
,#{WRITER}
)
DELETE FROM RESOURCE_MNG WHERE OBJID = #{OBJID}::numeric
DELETE FROM RESOURCE_PRICE WHERE PARENT_OBJID = #{OBJID}::numeric