INSERT INTO PART_BOM_REPORT (
OBJID
, OEM_OBJID
, CAR_OBJID
, PRODUCT_OBJID
, REGION_OBJID
, WRITER
, REGDATE
) VALUES (
${bomObjId}
, ${oemObjId}
, ${carObjId}
, ${productObjId}
, 0
, #{writer}
, NOW()
)
MERGE INTO PART_INFO T USING DUAL ON ( T.PART_NO = #{partNo} AND T.REV = #{revision} AND T.STATUS = #{status})
WHEN MATCHED THEN
UPDATE
SET
T.OEM_OBJID = #{oem},
T.CAR_OBJID = #{car},
T.PRODUCT_GROUP_OBJID = #{productFamily},
T.PRODUCT_OBJID = #{product},
T.RH_PART_OBJID = #{rhPartObjId},
T.PART_NAME = #{partName},
T.DRAWING_RELEASE_TYPE = #{drawReleaseType},
T.PART_TYPE = #{partType},
T.MATERIAL_TYPE_OBJID = #{materialType},
T.DRAWING_TYPE = #{drawType},
T.DRAWING_NO_OBJID = #{drawingNoObjId},
T.MATERIAL_OBJID = #{material},
T.PART_OPTION = #{optionSpec},
T.THICKNESS = #{thickness},
T.WEIGHT = #{weight},
T.APPLY_POINT_OBJID = #{applyPointType},
T.MNG_ITEM_TYPE = #{mngType},
T.IS_LAST = #{isLast}
WHEN NOT MATCHED THEN
INSERT(
OBJID,
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
PART_NO,
RH_PART_OBJID,
PART_NAME,
DRAWING_RELEASE_TYPE,
PART_TYPE,
REV,
MATERIAL_TYPE_OBJID,
DRAWING_TYPE,
DRAWING_NO_OBJID,
MATERIAL_OBJID,
PART_OPTION,
THICKNESS,
WEIGHT,
APPLY_POINT_OBJID,
MNG_ITEM_TYPE,
IS_LAST,
WRITER,
REGDATE,
STATUS
)
VALUES
(
#{objid},
#{oem},
#{car},
#{productFamily},
#{product},
#{partNo},
#{rhPartObjId},
#{partName},
#{drawReleaseType},
#{partType},
UPPER(#{revision}),
#{materialType},
#{drawType},
#{drawingNoObjId},
#{material},
#{optionSpec},
#{thickness},
#{weight},
#{applyPointType},
#{mngType},
#{isLast},
#{writer},
SYSDATE,
#{status}
)
MERGE INTO PART_INFO T USING DUAL ON ( T.OBJID = #{objid})
WHEN MATCHED THEN
UPDATE
SET
T.REV = UPPER(#{revision}),
T.RH_PART_OBJID = #{rhPartObjId},
T.DRAWING_NO_OBJID = #{drawingNoObjId},
T.IS_LAST = #{isLast},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT(
OBJID,
REV,
IS_LAST,
WRITER,
REGDATE,
RH_PART_OBJID,
DRAWING_NO_OBJID,
STATUS
)
VALUES
(
#{objid},
UPPER(#{revision}),
#{isLast},
#{writer},
SYSDATE,
#{rhPartObjId},
#{drawingNoObjId},
#{status}
)
DELETE PART_INFO WHERE OBJID = #{objid}
DELETE FROM PART_MGMT
WHERE PROJECT_MGMT_OBJID = #{PROJECT_MGMT_OBJID}::integer
AND DEL_YN='N'
AND STATUS='write'
AND REV IS NULL
UPDATE PART_MGMT
SET DEL_YN = 'Y'
WHERE PART_MGMT_OBJID IN(
SELECT O.PART_MGMT_OBJID FROM PART_MGMT O
START WITH O.PART_MGMT_OBJID=#{objId}
CONNECT BY NOCYCLE PRIOR O.PART_NO = O.PARENT_PART_NO)
UPDATE PART_MGMT
SET reg_date = now()
,part_name = #{part_name}
,spec_cd =#{spec_cd}
,qty =#{qty}
,process_cd =#{process_cd}
,sort_cd =#{sort_cd}
,sup_cd =#{supply_cd}
,mfa_cd =#{mfa_cd}
,change_cd =#{change_cd}
,sized =#{sized}
,material =#{material}
WHERE PART_MGMT_OBJID = #{objId}::integer
INSERT INTO PART_MGMT (
select DISTINCT
PART_MGMT_OBJID+1
,PART_MGMT_PARENT_OBJID
,#{copyprojectno}
,PART_NAME
,PART_NO
,PARENT_PART_NO
,SPEC_CD
,MFA_CD
,QTY
,PROCESS_CD
,SORT_CD
,SUP_CD
,REV
,IS_LAST
,REL_DATE
,REG_DATE
,REG_USER_ID
,CHANGE_CD
,STATUS
,DEL_YN
,
CASE WHEN SORT_CD IS NOT NULL
THEN 'PRTS00100'
ELSE ''
END AS REL_STATUS
,PRICE
,SUP_PRICE
FROM PART_MGMT T
WHERE T.PROJECT_MGMT_OBJID=#{projectno}
START WITH PART_NO = PARENT_PART_NO CONNECT BY NOCYCLE PRIOR PART_NO = PARENT_PART_NO )
INSERT INTO ATTACH_FILE_INFO (
select
T1.OBJID+1
,T1.TARGET_OBJID+1
,T1.SAVED_FILE_NAME
,T1.REAL_FILE_NAME
,T1.DOC_TYPE
,T1.DOC_TYPE_NAME
,T1.FILE_SIZE
,T1.FILE_EXT
,T1.FILE_PATH
,T1.WRITER
,T1.REGDATE
,T1.STATUS
FROM PART_MGMT T , ATTACH_FILE_INFO T1
WHERE T.PROJECT_MGMT_OBJID=#{projectno}
AND T.PART_MGMT_OBJID = T1.TARGET_OBJID)
UPDATE PART_MGMT SET STATUS = 'complete', IS_LAST = #{isLast} ,REV = #{REV} ,REL_DATE = now()
WHERE PART_MGMT_OBJID = #{targetObjId}::integer
UPDATE PART_MGMT
SET STATUS = 'complete'
,IS_LAST = '1'
,REL_DATE = now()
,PART_NAME = #{part_name}
,SPEC_CD =#{spec_cd}
,QTY = #{qty}
,PROCESS_CD =#{process_cd}
,SORT_CD =#{sort_cd}
,SUP_CD=#{supply_cd}
,CHANGE_CD = #{change_cd}
,MFA_CD = #{mfa_cd}
WHERE PART_MGMT_OBJID = #{objId}::integer
UPDATE PART_MGMT
SET IS_LAST = '0'
WHERE PART_NO = (SELECT o.PART_NO FROM PART_MGMT AS o WHERE o.PART_MGMT_OBJID = #{targetObjId}::integer)
AND PARENT_PART_NO = (SELECT o.PARENT_PART_NO FROM PART_MGMT AS o WHERE o.PART_MGMT_OBJID = #{targetObjId}::integer)
MERGE INTO PART_MNG_ITEM_RECEPT T USING DUAL ON ( T.TARGET_OBJID = #{partObjId} and T.SUB_OBJID = #{fileObjId} AND T.USER_ID = #{userId})
WHEN MATCHED THEN
UPDATE
SET
STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
OBJID
,TARGET_OBJID
,USER_ID
,STATUS
,SUB_OBJID
,REG_DATE
)
VALUES
(
#{newObjId}
,#{partObjId}
,#{userId}
,#{status}
,#{fileObjId}
,SYSDATE
)
DELETE REL_PART_SPEC WHERE MASTER_OBJID = #{objid}
delete from part_mgmt where part_mgmt_objid in(with recursive t1 ( part_mgmt_objid
,part_mgmt_parent_objid
,project_mgmt_objid
,part_name
,part_no
,parent_part_no
,spec_cd
,mfa_cd
,qty
,process_cd
,sort_cd
,sup_cd
,rev
,is_last
,rel_date
,reg_date
,reg_user_id
,change_cd
,status
,del_yn
,rel_status
,price
,sup_price
, lev,path,part_array,cycle) as (
SELECT t2.*,
1 AS lev,
t2.part_no::text,
ARRAY[t2.part_no] as part_array,
FALSE as CYCLE
from part_mgmt AS t2
where part_no = parent_part_no
union all
SELECT t3.*,
lev+1,
PATH||t3.part_no::text,
t1.part_array,
t3.part_no = ANY(part_array) as CYCLE
from part_mgmt AS t3, t1
WHERE t3.parent_part_no = t1.part_no
AND t3.parent_part_no != t3.part_no
AND t1.part_mgmt_objid = #{partObjid}::integer
and NOT CYCLE -- NOCYCLE 지정
)
SELECT part_mgmt_objid
from t1
WHERE t1.STATUS='write'
)
MERGE INTO REL_PART_SPEC T USING DUAL ON ( T.MASTER_OBJID = #{objid} AND T.SUB_OBJID = #{specObjid})
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
MASTER_OBJID,
SUB_OBJID,
WRITER,
REGDATE
)
VALUES
(
#{relObjid},
#{objid},
#{specObjid},
#{writer},
SYSDATE
)
DELETE ATTACH_FILE_INFO WHERE TARGET_OBJID = #{objid} AND DOC_TYPE = #{docType}
DELETE REL_PART_CHANGE_ITEM WHERE MASTER_OBJID = #{objid}
DELETE part_product_category WHERE PART_OBJID = #{objid}
MERGE INTO REL_PART_CHANGE_ITEM T USING DUAL ON ( T.MASTER_OBJID = #{objid} AND ITEM_NAME = #{changeItem})
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
MASTER_OBJID,
ITEM_NAME,
WRITER,
REGDATE
)
VALUES
(
#{relObjid},
#{objid},
#{changeItem},
#{writer},
SYSDATE
)
MERGE INTO part_product_category T USING DUAL ON ( T.PART_OBJID = #{objid} AND COMM_CODE = #{changeItem})
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
PART_OBJID,
COMM_CODE,
REGDATE,
PARENT_COMM_CODE
)
VALUES
(
#{relObjid},
#{objid},
#{changeItem},
SYSDATE,
#{parent_comm_code}
)
INSERT
INTO PART_INFO
(
OBJID,
CAR_OBJID,
DRAWING_NO_OBJID,
DRAWING_RELEASE_TYPE,
DRAWING_TYPE,
IS_LAST,
MATERIAL_OBJID,
MATERIAL_TYPE_OBJID,
MNG_ITEM_TYPE,
OEM_OBJID,
PART_NAME,
PART_NO,
PART_OPTION,
PART_TYPE,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
REGDATE,
RH_PART_OBJID,
STATUS,
THICKNESS,
WEIGHT,
WRITER
)
SELECT
#{newObjId},
CAR_OBJID,
DRAWING_NO_OBJID,
DRAWING_RELEASE_TYPE,
DRAWING_TYPE,
'0',
MATERIAL_OBJID,
MATERIAL_TYPE_OBJID,
MNG_ITEM_TYPE,
OEM_OBJID,
PART_NAME,
PART_NO,
PART_OPTION,
PART_TYPE,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
SYSDATE,
RH_PART_OBJID,
#{status},
THICKNESS,
WEIGHT,
#{writer}
FROM PART_INFO
WHERE OBJID = #{oldObjId}
INSERT
INTO PART_MGMT
(
PART_MGMT_OBJID
,PART_MGMT_PARENT_OBJID
,PROJECT_MGMT_OBJID
,PART_NAME
,PART_NO
,PARENT_PART_NO
,SPEC_CD
,MFA_CD
,QTY
,PROCESS_CD
,SORT_CD
,SUP_CD
,REV
,IS_LAST
,REL_DATE
,REG_DATE
,REG_USER_ID
,CHANGE_CD
,STATUS
,DEL_YN
,REL_STATUS
,SIZED
,MATERIAL
)
SELECT
#{objId}::integer
,PART_MGMT_PARENT_OBJID
,PROJECT_MGMT_OBJID
,PART_NAME
,PART_NO
,PARENT_PART_NO
,SPEC_CD
,MFA_CD
,QTY
,PROCESS_CD
,SORT_CD
,SUP_CD
,#{rev}
,'0'
,null
,now()
,REG_USER_ID
,#{change_cd}
,'write'
,DEL_YN
,'PRTS00100'
,SIZED
,MATERIAL
FROM PART_MGMT
WHERE PART_MGMT_OBJID = #{part_mgmt_objid}::integer
UPDATE ATTACH_FILE_INFO SET TARGET_OBJID = #{partObjId}, DOC_TYPE = #{docType}, DOC_TYPE_NAME = #{docTypeName} WHERE OBJID = #{fileObjId}
DELETE ATTACH_FILE_INFO WHERE TARGET_OBJID = #{partObjId} AND DOC_TYPE = #{docType}
INSERT INTO PART_BOM_QTY(BOM_REPORT_OBJID, OBJID, PARENT_OBJID, PARENT_PART_NO, PART_NO, QTY, REGION_OBJID, REGDATE) VALUES (
#{bomReportObjId}
, #{partObjId}
, #{parentObjId}
, #{parentPartNo}
, #{partNo}
, #{qty}
, #{regionObjId}
, SYSDATE
)
INSERT INTO PART_BOM_LEVEL(BOM_REPORT_OBJID, BOM_LAVEL, OBJID, PART_BOM_QTY_OBJID, REGDATE) VALUES (
#{bom_report_objid}
, #{bom_lavel}
, #{objid}
, #{part_bom_qty_objid}
, SYSDATE
)
DELETE FROM PART_BOM_QTY
WHERE OBJID IN (
SELECT OBJID
FROM PART_BOM_QTY
WHERE 1=1
START WITH OBJID = #{leftPartObjId}
CONNECT BY PRIOR OBJID = PARENT_OBJID
)
DELETE
FROM PART_BOM_QTY
WHERE 1=1
AND BOM_REPORT_OBJID = #{objId}
AND OBJID NOT IN (
SELECT OBJID
FROM PART_BOM_QTY
WHERE 1=1
START WITH PARENT_PART_NO IS NULL
CONNECT BY NOCYCLE PRIOR PART_NO = PARENT_PART_NO AND PRIOR BOM_REPORT_OBJID = BOM_REPORT_OBJID
)
UPDATE PART_BOM_QTY SET QTY = #{qty} WHERE PART_NO = #{partNo}
AND PARENT_PART_NO = #{parentPartNo}
AND PARENT_PART_NO IS NULL
AND BOM_REPORT_OBJID = #{bomReportObjId}
INSERT INTO STRUCTURE_TEMP_XLS_IMPORT_DATA (
TARGET_OBJID
, NO
, PARENT_PART_NO
, PART_NO
, QTY
, REGDATE
, MSG
, OBJID
) VALUES (
#{targetObjId}
, #{no}
, #{parentPartNo}
, #{partNo}
, #{qty}
, SYSDATE
, #{msg}
, #{objId}
)
DELETE FROM STRUCTURE_TEMP_XLS_IMPORT_DATA WHERE TARGET_OBJID = #{targetObjId}
INSERT INTO PART_BOM_QTY(
BOM_REPORT_OBJID
, PARENT_PART_NO
, PART_NO
, QTY
, REGION_OBJID
, REGDATE
, OBJID
) SELECT #{bomObjId} as BOM_REPORT_OBJID
, replace(PARENT_PART_NO, ' ', '')
, replace(PART_NO, ' ', '')
, CASE WHEN REGEXP_INSTR(QTY, '[^0-9]') = '1' THEN '1' ELSE QTY END AS QTY
, #{search_regionObjId} AS REGION_OBJID
, REGDATE
, OBJID
FROM STRUCTURE_TEMP_XLS_IMPORT_DATA
WHERE 1=1
AND TARGET_OBJID = #{targetObjId}
ORDER BY NO
DELETE FROM PART_BOM_QTY WHERE BOM_REPORT_OBJID = #{bomObjId}
INSERT INTO part_mng
(part_mgmt_objid
,part_mgmt_parent_objid
,project_mgmt_objid
,part_name
,part_no
,parent_part_no
,spec_cd
,mfa_cd
,qty
,process_cd
,sort_cd
,sup_cd
,is_last
,reg_date
,reg_user_id
,change_cd
,status
,del_yn
,rel_status
,sized
,material
)
VALUES (
#{PART_MGMT_OBJID}::integer
,#{PART_MGMT_PARENT_OBJID}::integer
,#{PROJECT_MGMT_OBJID}::integer
,#{PART_NAME}
,#{PART_NO}
,#{PARENT_PART_NO}
,#{SPEC_CD}
,#{MFA_CD}
,#{QTY}
,#{PROCESS_CD}
,#{SORT_CD}
,#{SUP_CD}
,'0'
,now()
,#{CONNECTUSERID}
,#{CHANGE_CD}
,'write'
,'N'
,#{REL_STATUS}
,#{SIZED}
,#{MATERIAL}
) ON
CONFLICT (part_mgmt_objid) DO
UPDATE
SET PART_NAME=#{PART_NAME}
,SPEC_CD=#{SPEC_CD}
,MFA_CD=#{MFA_CD}
,QTY=#{QTY}
,PROCESS_CD=#{PROCESS_CD}
,SORT_CD=#{SORT_CD}
,SUP_CD=#{SUP_CD}
,SIZED=#{SIZED}
,MATERIAL=#{MATERIAL}
INSERT INTO ATTACH_FILE_INFO
(
OBJID
,TARGET_OBJID
,SAVED_FILE_NAME
,REAL_FILE_NAME
,DOC_TYPE
,DOC_TYPE_NAME
,FILE_SIZE
,FILE_EXT
,FILE_PATH
,WRITER
,REGDATE
,STATUS
) VALUES (
#{OBJID}::integer
,#{TARGET_OBJID}::integer
,#{SAVED_FILE_NAME}
,#{REAL_FILE_NAME}
,#{DOC_TYPE}
,#{DOC_TYPE_NAME}
,#{FILE_SIZE}::integer
,#{FILE_EXT}
,#{FILE_PATH}
,#{WRITER}
,now()
,'Active'
)
INSERT INTO PART_MNG
(
OBJID
,PART_NO
,PART_NAME
,UNIT
,QTY
,SPEC
,MATERIAL
,SUB_MATERIAL
,WEIGHT
,REMARK
,STATUS
,REG_DATE
,WRITER
,IS_LAST
,PART_TYPE
,PRODUCT_MGMT_OBJID
-->
,REVISION
,EXCEL_UPLOAD_SEQ
,PARENT_PART_NO
) VALUES (
#{OBJID}::NUMERIC
,#{PART_NO}
,#{PART_NAME}
,#{UNIT}
,#{QTY}
,#{SPEC}
,#{MATERIAL}
,#{SUB_MATERIAL}
,#{WEIGHT}
,#{REMARK}
,'create'
,now()
,#{CONNECTUSERID}
,'0'
,#{PART_TYPE}
,#{PRODUCT_MGMT_OBJID}
-->
,#{REVISION}
,nextval('part_excel_upload_seq')
,COALESCE((SELECT P.OBJID::varchar FROM PART_MNG P WHERE P.PART_NO = #{PARENT_PART_NO} AND P.REVISION = #{PARENT_REVISION}),'')
)