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}),'') )