WITH RECURSIVE VIEW_BOM AS ( SELECT A.BOM_REPORT_OBJID, A.OBJID, A.PARENT_OBJID, A.CHILD_OBJID, A.PARENT_PART_NO, A.PART_NO, A.QTY, A.QTY_TEMP, A.REGDATE, A.SEQ, 1, ARRAY [A.CHILD_OBJID::TEXT], ARRAY [A.SEQ::TEXT], FALSE FROM BOM_PART_QTY A WHERE 1=1 AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '') AND STATUS NOT IN ('deleting', 'deleted') AND STATUS IN ('beforeEdit', 'editing','deleting', 'deploy') UNION ALL SELECT B.BOM_REPORT_OBJID, B.OBJID, B.PARENT_OBJID, B.CHILD_OBJID, B.PARENT_PART_NO, B.PART_NO, B.QTY, B.QTY_TEMP, B.REGDATE, B.SEQ, LEV + 1, PATH||B.CHILD_OBJID::TEXT, PATH2||B.SEQ::TEXT, B.PARENT_OBJID = ANY(PATH) FROM BOM_PART_QTY B JOIN VIEW_BOM ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID AND STATUS NOT IN ('deleting', 'deleted') AND B.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy') ) ( SELECT P.EXCEL_UPLOAD_SEQ, p.PARENT_PART_NO, p.DESIGN_DATE, p.DEPLOY_DATE, p.SUB_MATERIAL, P.OBJID, P.PRODUCT_MGMT_OBJID, P.UPG_NO, P.PART_NO, P.PART_NAME, P.UNIT, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.UNIT) AS UNIT_TITLE, NVL((SELECT QTY FROM BOM_PART_QTY Q WHERE Q.LAST_PART_OBJID = P.OBJID AND STATUS = 'deploy' ORDER BY DEPLOY_DATE DESC LIMIT 1), P.QTY) QTY, P.QTY QTY_P, P.SPEC, P.POST_PROCESSING, P.MATERIAL, P.WEIGHT, P.PART_TYPE, P.IS_LONGD, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.PART_TYPE) AS PART_TYPE_TITLE, P.REMARK, P.ES_SPEC, P.MS_SPEC, P.CHANGE_TYPE, P.DESIGN_APPLY_POINT, P.CHANGE_OPTION, (SELECT ARRAY_TO_STRING(ARRAY_AGG(CODE_NAME),',') FROM COMM_CODE AS CC WHERE CC.CODE_ID IN (SELECT UNNEST(STRING_TO_ARRAY(CHANGE_OPTION, ',')) AS CHANGE_OPTION FROM PART_MNG AS T WHERE T.OBJID = P.OBJID) ) CHANGE_OPTION_NAME, P.MANAGEMENT_FLAG, P.REVISION, P.STATUS, P.REG_DATE, TO_CHAR(P.REG_DATE,'YYYY-MM-DD') AS PART_REGDATE_TITLE, P.EDIT_DATE, P.WRITER, P.IS_LAST, P.EO_DATE, P.EO_NO, P.EO_TEMP, P.MAKER, P.CONTRACT_OBJID, P.THICKNESS, P.WIDTH, P.HEIGHT, P.OUT_DIAMETER, P.IN_DIAMETER, P.LENGTH, P.SOURCING_CODE, P.MAJOR_CATEGORY, P.SUB_CATEGORY, P.CODE1, P.CODE2, P.CODE3, P.CODE4, P.CODE5, P.IS_NEW, P.IS_LONGD, SUPPLY_CODE ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('3D_CAD')) CU01_CNT ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) CU02_CNT ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('2D_PDF_CAD')) CU03_CNT ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('2D_PDF_CAD','2D_DRAWING_CAD')) CU_TOTAL_CNT FROM PART_MNG P ) ( WITH V_FILE AS ( SELECT TARGET_OBJID , SAVED_FILE_NAME , REAL_FILE_NAME , FILE_PATH , DOC_TYPE , STATUS FROM ATTACH_FILE_INFO WHERE 1 = 1 AND DOC_TYPE IN ('PART_SHAPE_IMG','ECD_DOC','3D_CAD','2D_DRAWING_CAD','2D_PDF_CAD') AND STATUS = 'Active' ) SELECT DISTINCT P.EXCEL_UPLOAD_SEQ, p.PARENT_PART_NO, p.DESIGN_DATE, p.DEPLOY_DATE, p.SUB_MATERIAL, P.OBJID, P.PRODUCT_MGMT_OBJID, P.UPG_NO, P.PART_NO, P.PART_NAME, P.UNIT, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.UNIT) AS UNIT_TITLE, P.QTY, P.SPEC, P.POST_PROCESSING, P.MATERIAL, P.WEIGHT, P.PART_TYPE, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.PART_TYPE) AS PART_TYPE_TITLE, P.REMARK, P.ES_SPEC, P.MS_SPEC, P.CHANGE_TYPE, P.CHANGE_OPTION, T3.CHANGE_OPTION_NAME, P.DESIGN_APPLY_POINT, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.DESIGN_APPLY_POINT) AS DESIGN_APPLY_POINT_TITLE, P.MANAGEMENT_FLAG, P.REVISION, P.STATUS, P.REG_DATE, TO_CHAR(P.REG_DATE,'YYYY-MM-DD') AS PART_REGDATE_TITLE, P.EDIT_DATE, P.WRITER, P.IS_LAST, P.EO_DATE, P.EO_NO, P.EO_TEMP, P.MAKER, P.CONTRACT_OBJID, P.SOURCING_CODE, (SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = P.SOURCING_CODE) AS SOURCING_NAME, AF.SAVED_FILE_NAME, AF.REAL_FILE_NAME, REPLACE(AF.FILE_PATH, '\', '\\') AS FILE_PATH, 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, case when PDFDRA.SAVED_FILE_NAME is NOT NULL then 1 else 0 end as CU_TOTAL_CNT, AF_ECD.SAVED_FILE_NAME AS ECD_SAVED_FILE_NAME, AF_ECD.REAL_FILE_NAME AS ECD_REAL_FILE_NAME, REPLACE(AF_ECD.FILE_PATH, '\', '\\') AS ECD_FILE_PATH, CASE WHEN AF_ECD.SAVED_FILE_NAME IS NOT NULL THEN 'Y' ELSE 'N' END ECD_FLAG, THICKNESS, WIDTH, HEIGHT, OUT_DIAMETER, IN_DIAMETER, LENGTH, SUPPLY_CODE, (SELECT SUPPLY_NAME FROM admin_supply_mng O WHERE O.objid::varchar = P.SUPPLY_CODE) AS SUPPLY_NAME FROM PART_MNG P LEFT OUTER JOIN V_FILE AF ON P.OBJID = AF.TARGET_OBJID AND AF.DOC_TYPE IN ('PART_SHAPE_IMG') LEFT OUTER JOIN V_FILE AF_ECD ON P.OBJID = AF_ECD.TARGET_OBJID AND AF_ECD.DOC_TYPE IN ('ECD_DOC') LEFT OUTER JOIN V_FILE CAD ON P.OBJID = CAD.TARGET_OBJID AND CAD.DOC_TYPE IN ('3D_CAD') LEFT OUTER JOIN V_FILE DRAWING ON P.OBJID = DRAWING.TARGET_OBJID AND DRAWING.DOC_TYPE IN ('2D_DRAWING_CAD') LEFT OUTER JOIN V_FILE PDF ON P.OBJID = PDF.TARGET_OBJID AND PDF.DOC_TYPE IN ('2D_PDF_CAD') LEFT OUTER JOIN V_FILE PDFDRA ON P.OBJID = PDFDRA.TARGET_OBJID AND PDFDRA.DOC_TYPE IN ('2D_PDF_CAD', '2D_DRAWING_CAD') LEFT OUTER JOIN( SELECT TT.OBJID, ARRAY_TO_STRING(ARRAY_AGG((SELECT CODE_NAME FROM COMM_CODE AS CC WHERE CC.CODE_ID IN(TT.CHANGE_OPTION))),',') AS CHANGE_OPTION_NAME FROM ( SELECT T.OBJID, UNNEST(STRING_TO_ARRAY(CHANGE_OPTION, ',')) AS CHANGE_OPTION FROM PART_MNG AS T ) AS TT GROUP BY TT.OBJID ) AS T3 ON T3.OBJID = P.OBJID ) ( SELECT P.*, E.EO_NO, E.EO_DATE, TO_CHAR(E.EO_DATE,'YYYY-MM-DD') AS EO_DATE_TITLE FROM( SELECT P.OBJID, CASE WHEN P.CUSTOMER = '' THEN '0' WHEN P.CUSTOMER IS NULL THEN '0' ELSE P.CUSTOMER END CUSTOMER, CASE WHEN P.CAR_TYPE = '' THEN '0' WHEN P.CAR_TYPE IS NULL THEN '0' ELSE P.CAR_TYPE END CAR_TYPE, P.PRODUCT_GROUP, P.PRODUCT, P.PART_NO, P.MY_PART_NO, P.PART_NAME, CASE WHEN P.EO = '' THEN '0' WHEN P.EO IS NULL THEN '0' ELSE P.EO END EO, P.REVISION, P.RH_PART, P.RELEASE_TYPE, P.PART_TYPE, P.DRAWING_TYPE, P.SHOW_ON, P.QTY, P.MATERIAL, P.WEIGHT, P.SIZE, P.SURFACE_TREATMENT, P.SPEC_NO, P.MOLD_DEV, case P.MOLD_DEV when 'new' then '신작' when 'carryOver' then 'C/O' ELSE '' END MOLD_DEV_TITLE, P.CARRY_OVER_CAR, P.CHANGE_OPTION, case P.CHANGE_OPTION when 'changeModel' then '형상변경' when 'changeMaterial' then '재질변경' when 'changeAdd' then '추가변경' when 'changePakege' then '구성변경' when 'first' then '초도' when 'etc' then '기타' ELSE '' END CHANGE_OPTION_TITLE, P.DESIGN_APPLY_POINT, P.MANAGEMENT_ITEM, CASE P.MANAGEMENT_ITEM WHEN 'exist' THEN '유' WHEN 'notExist' THEN '무' ELSE '' END MANAGEMENT_ITEM_TITLE, P.STATUS, P.REG_DATE, TO_CHAR(P.REG_DATE,'YYYY-MM-DD') AS REG_DATE_TITLE, TO_CHAR(P.REG_DATE,'YYYY') AS REG_DATE_YEAR_TITLE, P.EDIT_DATE, P.WRITER, P.IS_LAST, AF.SAVED_FILE_NAME, AF.REAL_FILE_NAME, REPLACE(AF.FILE_PATH, '\', '\\') AS FILE_PATH, AF_ECD.SAVED_FILE_NAME AS ECD_SAVED_FILE_NAME, AF_ECD.REAL_FILE_NAME AS ECD_REAL_FILE_NAME, REPLACE(AF_ECD.FILE_PATH, '\', '\\') AS ECD_FILE_PATH, CASE WHEN AF_ECD.SAVED_FILE_NAME IS NOT NULL THEN 'Y' ELSE 'N' END ECD_FLAG, THICKNESS, WIDTH, HEIGHT, OUT_DIAMETER, IN_DIAMETER, LENGTH FROM PART_MNG P 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 UPPER(STATUS) = 'ACTIVE' ) AF ON P.OBJID::NUMERIC = AF.TARGET_OBJID 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 ('ECD_DOC') AND UPPER(STATUS) = 'ACTIVE' ) AF_ECD ON P.OBJID::NUMERIC = AF_ECD.TARGET_OBJID ) P LEFT OUTER JOIN EO_MNG E ON P.EO::NUMERIC = E.OBJID ) INSERT INTO PART_MNG ( OBJID, PRODUCT_MGMT_OBJID, UPG_NO, PART_NO, PART_NAME, UNIT, QTY, SPEC, MATERIAL, WEIGHT, PART_TYPE, REMARK, ES_SPEC, MS_SPEC, CHANGE_TYPE, CHANGE_OPTION, DESIGN_APPLY_POINT, MANAGEMENT_FLAG, REVISION, STATUS, REG_DATE, WRITER, IS_LAST, PARENT_PART_NO, SUB_MATERIAL, EO_DATE, DESIGN_DATE, THICKNESS, WIDTH, HEIGHT, OUT_DIAMETER, IN_DIAMETER, LENGTH, SUPPLY_CODE, MAKER, POST_PROCESSING, MAJOR_CATEGORY, SUB_CATEGORY ) VALUES ( #{OBJID}::NUMERIC, #{PRODUCT_MGMT_OBJID}, #{UPG_NO}, #{PART_NO}, #{PART_NAME}, #{UNIT}, #{QTY}, #{SPEC}, #{MATERIAL}, #{WEIGHT}, #{PART_TYPE}, #{REMARK}, #{ES_SPEC}, #{MS_SPEC}, #{CHANGE_TYPE}, #{CHANGE_OPTION}, #{DESIGN_APPLY_POINT}, #{MANAGEMENT_FLAG}, #{REVISION}, 'create', NOW(), #{WRITER}, '1', #{PARENT_PART_NO}, #{SUB_MATERIAL}, #{EO_DATE}, #{DESIGN_DATE}, #{THICKNESS}, #{WIDTH}, #{HEIGHT}, #{OUT_DIAMETER}, #{IN_DIAMETER}, #{LENGTH}, #{SUPPLY_CODE}, #{MAKER}, #{POST_PROCESSING}, #{MAJOR_CATEGORY}, #{SUB_CATEGORY} ) ON CONFLICT (OBJID) DO UPDATE SET PRODUCT_MGMT_OBJID = #{PRODUCT_MGMT_OBJID}, UPG_NO = #{UPG_NO}, PART_NO = #{PART_NO}, PART_NAME = #{PART_NAME}, UNIT = #{UNIT}, QTY = #{QTY}, SPEC = #{SPEC}, MATERIAL = #{MATERIAL}, WEIGHT = #{WEIGHT}, PART_TYPE = #{PART_TYPE}, REMARK = #{REMARK}, ES_SPEC = #{ES_SPEC}, MS_SPEC = #{MS_SPEC}, CHANGE_TYPE = #{CHANGE_TYPE}, CHANGE_OPTION = #{CHANGE_OPTION}, DESIGN_APPLY_POINT = #{DESIGN_APPLY_POINT}, MANAGEMENT_FLAG = #{MANAGEMENT_FLAG}, REVISION = #{REVISION}, STATUS = #{STATUS}, EDIT_DATE = NOW(), WRITER = #{WRITER}, PARENT_PART_NO = #{PARENT_PART_NO}, SUB_MATERIAL = #{SUB_MATERIAL}, EO_DATE = #{EO_DATE}, DESIGN_DATE = #{DESIGN_DATE}, THICKNESS = #{THICKNESS}, WIDTH = #{WIDTH}, HEIGHT = #{HEIGHT}, OUT_DIAMETER = #{OUT_DIAMETER}, IN_DIAMETER = #{IN_DIAMETER}, LENGTH = #{LENGTH}, SUPPLY_CODE = #{SUPPLY_CODE}, MAKER = #{MAKER}, POST_PROCESSING = #{POST_PROCESSING}, MAJOR_CATEGORY = #{MAJOR_CATEGORY}, SUB_CATEGORY = #{SUB_CATEGORY} INSERT INTO PART_MNG ( OBJID, PRODUCT_MGMT_OBJID, CONTRACT_OBJID, UPG_NO, PART_NO, PART_NAME, UNIT, QTY, SPEC, MATERIAL, WEIGHT, PART_TYPE, REMARK, ES_SPEC, MS_SPEC, CHANGE_TYPE, CHANGE_OPTION, DESIGN_APPLY_POINT, MANAGEMENT_FLAG, REVISION, STATUS, REG_DATE, WRITER, IS_LAST, PARENT_PART_NO, SUB_MATERIAL, EO_NO, EO_DATE, DESIGN_DATE, THICKNESS, WIDTH, HEIGHT, OUT_DIAMETER, IN_DIAMETER, LENGTH, MAKER, POST_PROCESSING, MAJOR_CATEGORY, SUB_CATEGORY, CODE1, CODE2, CODE3, CODE4, CODE5, IS_NEW, IS_LONGD ) VALUES ( #{OBJID}::NUMERIC, #{PRODUCT_MGMT_OBJID}, #{CONTRACT_OBJID}, #{UPG_NO}, #{PART_NO}, #{PART_NAME}, #{UNIT}, #{QTY}, #{SPEC}, #{MATERIAL}, #{WEIGHT}, #{PART_TYPE}, #{REMARK}, #{ES_SPEC}, #{MS_SPEC}, #{CHANGE_TYPE}, #{CHANGE_OPTION}, #{DESIGN_APPLY_POINT}, #{MANAGEMENT_FLAG}, UPPER(#{REVISION}), #{STATUS}, NOW(), #{WRITER}, COALESCE(#{IS_LAST}, '0'), #{PARENT_PART_NO}, #{SUB_MATERIAL}, #{EO_NO}, #{EO_DATE}, #{DESIGN_DATE}, #{THICKNESS}, #{WIDTH}, #{HEIGHT}, #{OUT_DIAMETER}, #{IN_DIAMETER}, #{LENGTH}, #{MAKER}, #{POST_PROCESSING}, #{MAJOR_CATEGORY}, #{SUB_CATEGORY}, #{CODE1}, #{CODE2}, #{CODE3}, #{CODE4}, #{CODE5}, #{IS_NEW}, #{IS_LONGD} ) ON CONFLICT (OBJID) DO UPDATE SET PRODUCT_MGMT_OBJID = #{PRODUCT_MGMT_OBJID}, UPG_NO = #{UPG_NO}, PART_NO = #{PART_NO}, PART_NAME = #{PART_NAME}, UNIT = #{UNIT}, QTY = #{QTY}, SPEC = #{SPEC}, MATERIAL = #{MATERIAL}, WEIGHT = #{WEIGHT}, PART_TYPE = #{PART_TYPE}, REMARK = #{REMARK}, ES_SPEC = #{ES_SPEC}, MS_SPEC = #{MS_SPEC}, CHANGE_TYPE = #{CHANGE_TYPE}, CHANGE_OPTION = #{CHANGE_OPTION}, DESIGN_APPLY_POINT = #{DESIGN_APPLY_POINT}, MANAGEMENT_FLAG = #{MANAGEMENT_FLAG}, REVISION = #{REVISION}, STATUS = #{STATUS}, EDIT_DATE = NOW(), WRITER = #{WRITER}, PARENT_PART_NO = #{PARENT_PART_NO}, SUB_MATERIAL = #{SUB_MATERIAL}, EO_DATE = #{EO_DATE}, DESIGN_DATE = #{DESIGN_DATE}, THICKNESS = #{THICKNESS}, WIDTH = #{WIDTH}, HEIGHT = #{HEIGHT}, OUT_DIAMETER = #{OUT_DIAMETER}, IN_DIAMETER = #{IN_DIAMETER}, LENGTH = #{LENGTH}, MAKER = #{MAKER}, POST_PROCESSING = #{POST_PROCESSING}, MAJOR_CATEGORY = #{MAJOR_CATEGORY}, SUB_CATEGORY = #{SUB_CATEGORY}, CODE1 = #{CODE1}, CODE2 = #{CODE2}, CODE3 = #{CODE3}, CODE4 = #{CODE4}, CODE5 = #{CODE5}, IS_NEW = #{IS_NEW}, IS_LONGD = #{IS_LONGD} INSERT INTO PART_MNG_HISTORY ( OBJID, PRODUCT_MGMT_OBJID, UPG_NO, PART_NO, PART_NAME, UNIT, QTY, SPEC, MATERIAL, WEIGHT, PART_TYPE, REMARK, ES_SPEC, MS_SPEC, CHANGE_TYPE, CHANGE_OPTION, DESIGN_APPLY_POINT, MANAGEMENT_FLAG, REVISION, STATUS, REG_DATE, WRITER, IS_LAST, PARENT_PART_NO, SUB_MATERIAL, EO_NO, EO_DATE, DESIGN_DATE, THICKNESS, WIDTH, HEIGHT, OUT_DIAMETER, IN_DIAMETER, LENGTH, CONTRACT_OBJID, MAKER ) VALUES ( #{OBJID}::NUMERIC, #{PRODUCT_MGMT_OBJID}, #{UPG_NO}, #{PART_NO}, #{PART_NAME}, #{UNIT}, #{QTY}, #{SPEC}, #{MATERIAL}, #{WEIGHT}, #{PART_TYPE}, #{REMARK}, #{ES_SPEC}, #{MS_SPEC}, #{CHANGE_TYPE}, #{CHANGE_OPTION}, #{DESIGN_APPLY_POINT}, #{MANAGEMENT_FLAG}, UPPER(#{REVISION}), #{STATUS}, NOW(), #{WRITER}, '0', #{PARENT_PART_NO}, #{SUB_MATERIAL}, (SELECT EO_NO FROM PART_MNG WHERE OBJID = #{OBJID}), #{EO_DATE}, #{DESIGN_DATE}, #{THICKNESS}, #{WIDTH}, #{HEIGHT}, #{OUT_DIAMETER}, #{IN_DIAMETER}, #{LENGTH}, #{CONTRACT_OBJID}, #{MAKER} ) ON CONFLICT (OBJID) DO UPDATE SET PRODUCT_MGMT_OBJID = #{PRODUCT_MGMT_OBJID}, UPG_NO = #{UPG_NO}, PART_NO = #{PART_NO}, PART_NAME = #{PART_NAME}, UNIT = #{UNIT}, QTY = #{QTY}, SPEC = #{SPEC}, MATERIAL = #{MATERIAL}, WEIGHT = #{WEIGHT}, PART_TYPE = #{PART_TYPE}, REMARK = #{REMARK}, ES_SPEC = #{ES_SPEC}, MS_SPEC = #{MS_SPEC}, CHANGE_TYPE = #{CHANGE_TYPE}, CHANGE_OPTION = #{CHANGE_OPTION}, DESIGN_APPLY_POINT = #{DESIGN_APPLY_POINT}, MANAGEMENT_FLAG = #{MANAGEMENT_FLAG}, REVISION = #{REVISION}, STATUS = #{STATUS}, EDIT_DATE = NOW(), WRITER = #{WRITER}, PARENT_PART_NO = #{PARENT_PART_NO}, SUB_MATERIAL = #{SUB_MATERIAL}, EO_DATE = #{EO_DATE}, DESIGN_DATE = #{DESIGN_DATE}, THICKNESS = #{THICKNESS}, WIDTH = #{WIDTH}, HEIGHT = #{HEIGHT}, OUT_DIAMETER = #{OUT_DIAMETER}, IN_DIAMETER = #{IN_DIAMETER}, LENGTH = #{LENGTH}, CONTRACT_OBJID = (SELECT CONTRACT_OBJID FROM PART_MNG WHERE OBJID = #{OBJID}), MAKER =#{MAKER} INSERT INTO PART_BOM_REPORT ( OBJID , CUSTOMER_OBJID , CONTRACT_OBJID , UNIT_CODE , STATUS , WRITER , REGDATE ,MULTI_YN ,MULTI_MASTER_YN ,MULTI_BREAK_YN ,MULTI_MASTER_OBJID ) VALUES ( #{OBJID} , #{CUSTOMER_OBJID} , #{CONTRACT_OBJID} , #{UNIT_CODE} , 'create' , #{WRITER} , NOW() ,#{MULTI_YN } ,#{MULTI_MASTER_YN } ,#{MULTI_BREAK_YN } ,#{MULTI_MASTER_OBJID } ) ON CONFLICT (OBJID) DO UPDATE SET WRITER = #{WRITER} INSERT INTO PART_BOM_REPORT ( OBJID , OEM_OBJID , CAR_OBJID , PRODUCT_GROUP_OBJID , PRODUCT_OBJID , REGION_OBJID , WRITER , REGDATE ) VALUES ( ${bomObjId}::NUMERIC , ${oemObjId}::NUMERIC , ${carObjId}::NUMERIC , #{productGroupObjId} , #{productObjId} , '' , #{writer} , NOW() ) WITH RECURSIVE VIEW_BOM( OBJID, PART_NO, BOM_REPORT_OBJID, PARENT_PART_NO, PARENT_OBJID, CHILD_OBJID, QTY, LEV, PATH, CYCLE ) AS ( SELECT A.OBJID, A.PART_NO, A.BOM_REPORT_OBJID, A.PARENT_PART_NO, A.PARENT_OBJID, A.CHILD_OBJID, A.QTY, 1, ARRAY [A.CHILD_OBJID], FALSE FROM BOM_PART_QTY A WHERE 1=1 AND CHILD_OBJID = #{leftObjId} AND A.BOM_REPORT_OBJID = #{OBJID} UNION ALL SELECT B.OBJID, B.PART_NO, B.BOM_REPORT_OBJID, B.PARENT_PART_NO, B.PARENT_OBJID, B.CHILD_OBJID, B.QTY, LEV + 1, PATH, B.PARENT_OBJID = ANY(PATH) FROM BOM_PART_QTY B JOIN VIEW_BOM ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID AND B.BOM_REPORT_OBJID = #{OBJID} ) DELETE FROM BOM_PART_QTY WHERE OBJID IN ( SELECT OBJID FROM VIEW_BOM ) WITH RECURSIVE VIEW_BOM( OBJID, PART_NO, BOM_REPORT_OBJID, PARENT_PART_NO, PARENT_OBJID, CHILD_OBJID, QTY, LEV, PATH, CYCLE ) AS ( SELECT A.OBJID, A.PART_NO, A.BOM_REPORT_OBJID, A.PARENT_PART_NO, A.PARENT_OBJID, A.CHILD_OBJID, A.QTY, 1, ARRAY [A.CHILD_OBJID], FALSE FROM BOM_PART_QTY A WHERE 1=1 AND CHILD_OBJID = #{leftObjId} AND A.BOM_REPORT_OBJID = #{OBJID} UNION ALL SELECT B.OBJID, B.PART_NO, B.BOM_REPORT_OBJID, B.PARENT_PART_NO, B.PARENT_OBJID, B.CHILD_OBJID, B.QTY, LEV + 1, PATH, B.PARENT_OBJID = ANY(PATH) FROM BOM_PART_QTY B JOIN VIEW_BOM ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID AND B.BOM_REPORT_OBJID = #{OBJID} AND B.STATUS NOT IN ('deleting', 'deleted') ) UPDATE BOM_PART_QTY SET EDIT_DATE = NOW(), STATUS = 'deleting' WHERE OBJID IN ( SELECT OBJID FROM VIEW_BOM ) WITH RECURSIVE VIEW_BOM( OBJID, PART_NO, BOM_REPORT_OBJID, PARENT_PART_NO, PARENT_OBJID, CHILD_OBJID, STATUS, QTY, LEV, PATH, CYCLE ) AS ( SELECT A.OBJID, A.PART_NO, A.BOM_REPORT_OBJID, A.PARENT_PART_NO, A.PARENT_OBJID, A.CHILD_OBJID, A.STATUS, A.QTY, 1, ARRAY [A.CHILD_OBJID], FALSE FROM BOM_PART_QTY A WHERE 1=1 AND CHILD_OBJID = #{leftObjId} AND A.BOM_REPORT_OBJID = #{OBJID} UNION ALL SELECT B.OBJID, B.PART_NO, B.BOM_REPORT_OBJID, B.PARENT_PART_NO, B.PARENT_OBJID, B.CHILD_OBJID, B.STATUS, B.QTY, LEV + 1, PATH, B.PARENT_OBJID = ANY(PATH) FROM BOM_PART_QTY B JOIN VIEW_BOM ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID AND B.BOM_REPORT_OBJID = #{OBJID} ) DELETE FROM PART_MNG_HISTORY WHERE QTY_CHILD_OBJID IN ( SELECT CHILD_OBJID FROM VIEW_BOM V WHERE V.STATUS = 'adding' ) INSERT INTO PART_MNG_TEMP ( PART_REPORT_OBJID, OBJID, PART_NO, PART_NAME, UNIT, QTY, SPEC, MATERIAL, WEIGHT, PART_TYPE, REMARK, SEQ, SUB_MATERIAL, PARENT_PART_NO ) VALUES ( #{PART_REPORT_OBJID}::integer, #{OBJID}::integer, #{PART_NO}, #{PART_NAME}, #{UNIT}, #{QTY}, #{SPEC}, #{MATERIAL}, #{WEIGHT}, #{PART_TYPE}, #{REMARK}, nextval('part_mng_temp_seq'), #{SUB_MATERIAL}, #{PARENT_PART_NO} ) INSERT INTO BOM_PART_QTY_TEMP ( BOM_REPORT_OBJID, OBJID, PARENT_OBJID, CHILD_OBJID, PARENT_PART_NO, PART_NO, QTY, REGDATE, SEQ ) VALUES ( #{BOM_REPORT_OBJID}, #{OBJID}, (SELECT PART_NO FROM BOM_PART_QTY_TEMP WHERE 1=1 AND PART_NO = PARENT_PART_NO), #{CHILD_OBJID}, (SELECT OBJID FROM PART_MNG WHERE PART_NO = #{PARENT_PART_NO} AND REVISION = #{REVISION_}), (SELECT OBJID FROM PART_MNG WHERE PART_NO = #{PART_NO} AND REVISION = #{REVISION}), #{QTY}::INTEGER, NOW(), nextval('seq_bom_qty') ) INSERT INTO BOM_PART_QTY ( BOM_REPORT_OBJID, OBJID, PARENT_OBJID, CHILD_OBJID, PARENT_PART_NO, PART_NO, QTY, QTY_TEMP, REGDATE, WRITER, SEQ, STATUS, LAST_PART_OBJID ,DEPLOY_USER_ID ,DEPLOY_DATE ) VALUES ( #{BOM_REPORT_OBJID}, #{OBJID}, #{PARENT_OBJID}, #{CHILD_OBJID}, #{PARENT_PART_NO}, #{PART_NO}, #{QTY}, #{QTY_TEMP}, NOW(), #{WRITER}, nextval('seq_bom_qty'), #{STATUS}, #{LAST_PART_OBJID} ,#{DEPLOY_USER_ID} ,NOW() ) INSERT INTO BOM_PART_QTY ( SELECT BOM_REPORT_OBJID, OBJID, (SELECT O.CHILD_OBJID FROM BOM_PART_QTY_TEMP AS O WHERE O.PART_NO =T.PARENT_PART_NO AND O.BOM_REPORT_OBJID = #{OBJID} AND T.seq > O.seq ORDER BY o.seq DESC LIMIT 1) AS PARENT_OBJID, CHILD_OBJID, PARENT_PART_NO, PART_NO, QTY, now(), seq FROM BOM_PART_QTY_TEMP AS t WHERE T.BOM_REPORT_OBJID = #{OBJID} ) UPDATE BOM_PART_QTY SET STATUS = (CASE WHEN COALESCE(#{STATUS},'') = '' THEN STATUS ELSE #{STATUS} END) ,QTY_TEMP = (CASE WHEN COALESCE(#{QTY_TEMP}::VARCHAR,'') = '' THEN QTY_TEMP ELSE #{QTY_TEMP}::VARCHAR END) WHERE CHILD_OBJID = #{CHILD_OBJID} UPDATE PART_MNG_HISTORY SET QTY_TEMP = (CASE WHEN COALESCE(#{QTY_TEMP}::VARCHAR,'') = '' THEN QTY_TEMP ELSE #{QTY_TEMP}::VARCHAR END) WHERE QTY_CHILD_OBJID = #{CHILD_OBJID} AND BOM_REPORT_OBJID = #{BOM_REPORT_OBJID} UPDATE PART_BOM_QTY SET QTY = #{qty}::numeric WHERE PART_NO = #{partNo} AND PARENT_PART_NO = #{parentPartNo} AND (PARENT_PART_NO IS NULL OR PARENT_PART_NO = '') AND BOM_REPORT_OBJID = #{bomReportObjId}::numeric UPDATE PART_MNG P SET IS_LAST = '1', EDIT_DATE = NOW(), DEPLOY_DATE = NOW(), STATUS = 'release', REVISION = (CASE WHEN COALESCE(REVISION,'') = '' THEN 'RE' ELSE REVISION END), EO_DATE = TO_CHAR(NOW(),'YYYY-MM-DD'), EO_NO = CASE WHEN P.IS_LONGD = '1' THEN (SELECT 'EOB'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),7,8)::INTEGER+1,1) FROM PART_MNG SP WHERE SP.EO_NO IS NOT NULL AND SP.EO_NO LIKE 'EOB' || TO_CHAR(NOW(),'yy') || '-%' AND SP.PART_NO != P.PART_NO AND SP.REVISION != P.REVISION )||'', 4,'0')) ELSE (SELECT 'EO'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),6,8)::INTEGER+1,1) FROM PART_MNG SP WHERE SP.EO_NO IS NOT NULL AND SP.EO_NO LIKE 'EO' || TO_CHAR(NOW(),'yy') || '-%' AND SP.PART_NO != P.PART_NO AND SP.REVISION != P.REVISION )||'', 4,'0')) END WHERE OBJID = #{OBJID} UPDATE PART_MNG SET IS_LAST = '0', EDIT_DATE = NOW() WHERE PART_NO = ( SELECT PART_NO FROM PART_MNG WHERE OBJID = #{OBJID} ) INSERT INTO PART_MNG_HISTORY ( SELECT P.OBJID::numeric, P.PRODUCT_MGMT_OBJID, P.UPG_NO, P.PART_NO, P.PART_NAME, P.UNIT, Q.QTY, P.SPEC, P.MATERIAL, P.WEIGHT, P.PART_TYPE, P.REMARK, P.ES_SPEC, P.MS_SPEC, (CASE WHEN (#{CHANGE_OPTION} IS NULL OR #{CHANGE_OPTION} = '') THEN P.CHANGE_OPTION ELSE #{CHANGE_OPTION} END), P.DESIGN_APPLY_POINT, P.MANAGEMENT_FLAG, P.REVISION, P.STATUS, P.REG_DATE, NOW(), #{WRITER}, P.IS_LAST, P.EO_NO, P.EO_TEMP, P.EXCEL_UPLOAD_SEQ, P.SOURCING_CODE, P.SUB_MATERIAL, (CASE WHEN (#{PARENT_PART_NO} IS NULL OR #{PARENT_PART_NO} = '') THEN Q.PARENT_PART_NO ELSE #{PARENT_PART_NO} END), P.DESIGN_DATE, P.EO_DATE, P.DEPLOY_DATE ,P.THICKNESS ,P.WIDTH ,P.HEIGHT ,P.OUT_DIAMETER ,P.IN_DIAMETER ,P.LENGTH ,P.SUPPLY_CODE ,(CASE WHEN (#{CHANGE_TYPE} IS NULL OR #{CHANGE_TYPE} = '') THEN P.CHANGE_TYPE ELSE #{CHANGE_TYPE} END) ,P.CONTRACT_OBJID ,P.MAKER ,Q.QTY_TEMP ,(CASE WHEN (#{BOM_REPORT_OBJID} IS NULL OR #{BOM_REPORT_OBJID} = '') THEN Q.BOM_REPORT_OBJID ELSE #{BOM_REPORT_OBJID} END) ,(CASE WHEN (#{PARENT_PART_OBJID} IS NULL OR #{PARENT_PART_OBJID} = '') THEN Q.PARENT_PART_NO ELSE #{PARENT_PART_OBJID} END) ,(CASE WHEN (#{PARENT_QTY_CHILD_OBJID} IS NULL OR #{PARENT_QTY_CHILD_OBJID} = '') THEN Q.PARENT_OBJID ELSE #{PARENT_QTY_CHILD_OBJID} END) ,Q.STATUS ,NOW() ,#{WRITER} ,#{HIS_STATUS} ,#{CHILD_OBJID} ,'' ,NULL ,#{CHG_PART_OBJID} ,#{CHG_PART_NO} ,#{CHG_PART_REV} FROM PART_MNG P LEFT OUTER JOIN BOM_PART_QTY Q ON Q.CHILD_OBJID = #{CHILD_OBJID} AND P.PART_NO IN (SELECT PM2.PART_NO FROM PART_MNG PM2 WHERE PM2.OBJID = Q.PART_NO ) AND Q.STATUS = 'beforeEdit' WHERE P.OBJID = #{OBJID} ) WITH RECURSIVE VIEW_BOM( OBJID, PART_NO, BOM_REPORT_OBJID, PARENT_PART_NO, PARENT_OBJID, CHILD_OBJID, QTY, LEV, PATH, CYCLE ) AS ( SELECT A.OBJID, A.PART_NO, A.BOM_REPORT_OBJID, A.PARENT_PART_NO, A.PARENT_OBJID, A.CHILD_OBJID, A.QTY, 1, ARRAY [A.CHILD_OBJID], FALSE FROM BOM_PART_QTY A WHERE 1=1 AND CHILD_OBJID = #{leftObjId} AND A.BOM_REPORT_OBJID = #{OBJID} UNION ALL SELECT B.OBJID, B.PART_NO, B.BOM_REPORT_OBJID, B.PARENT_PART_NO, B.PARENT_OBJID, B.CHILD_OBJID, B.QTY, LEV + 1, PATH, B.PARENT_OBJID = ANY(PATH) FROM BOM_PART_QTY B JOIN VIEW_BOM ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID AND B.BOM_REPORT_OBJID = #{OBJID} AND B.STATUS NOT IN ('deleting', 'deleted') ) INSERT INTO PART_MNG_HISTORY ( SELECT P.OBJID::numeric, P.PRODUCT_MGMT_OBJID, P.UPG_NO, P.PART_NO, P.PART_NAME, P.UNIT, Q.QTY, P.SPEC, P.MATERIAL, P.WEIGHT, P.PART_TYPE, P.REMARK, P.ES_SPEC, P.MS_SPEC, (CASE WHEN (#{CHANGE_OPTION} IS NULL OR #{CHANGE_OPTION} = '') THEN P.CHANGE_OPTION ELSE #{CHANGE_OPTION} END), P.DESIGN_APPLY_POINT, P.MANAGEMENT_FLAG, P.REVISION, P.STATUS, P.REG_DATE, NOW(), #{WRITER}, P.IS_LAST, P.EO_NO, P.EO_TEMP, P.EXCEL_UPLOAD_SEQ, P.SOURCING_CODE, P.SUB_MATERIAL, (CASE WHEN (#{PARENT_PART_NO} IS NULL OR #{PARENT_PART_NO} = '') THEN Q.PARENT_PART_NO ELSE #{PARENT_PART_NO} END), P.DESIGN_DATE, P.EO_DATE, P.DEPLOY_DATE ,P.THICKNESS ,P.WIDTH ,P.HEIGHT ,P.OUT_DIAMETER ,P.IN_DIAMETER ,P.LENGTH ,P.SUPPLY_CODE ,(CASE WHEN (#{CHANGE_TYPE} IS NULL OR #{CHANGE_TYPE} = '') THEN P.CHANGE_TYPE ELSE #{CHANGE_TYPE} END) ,P.CONTRACT_OBJID ,P.MAKER ,Q.QTY_TEMP ,(CASE WHEN (#{BOM_REPORT_OBJID} IS NULL OR #{BOM_REPORT_OBJID} = '') THEN Q.BOM_REPORT_OBJID ELSE #{BOM_REPORT_OBJID} END) ,(CASE WHEN (#{PARENT_PART_OBJID} IS NULL OR #{PARENT_PART_OBJID} = '') THEN Q.PARENT_PART_NO ELSE #{PARENT_PART_OBJID} END) ,(CASE WHEN (#{PARENT_QTY_CHILD_OBJID} IS NULL OR #{PARENT_QTY_CHILD_OBJID} = '') THEN Q.PARENT_OBJID ELSE #{PARENT_QTY_CHILD_OBJID} END) ,Q.STATUS ,NOW() ,#{WRITER} ,#{HIS_STATUS} ,Q.CHILD_OBJID ,'' FROM BOM_PART_QTY Q INNER JOIN PART_MNG P ON Q.LAST_PART_OBJID = P.OBJID WHERE Q.OBJID IN ( SELECT OBJID FROM VIEW_BOM ) ) DELETE FROM PART_MNG WHERE 1=1 0 ]]> DELETE FROM PART_MNG WHERE OBJID = #{OBJID} UPDATE BOM_PART_QTY SET STATUS = 'deploy' ,EDIT_DATE = NOW() ,EDITER = #{WRITER} WHERE CHILD_OBJID = #{CHILD_OBJID} AND STATUS = 'beforeEdit' DELETE FROM PART_BOM_REPORT WHERE OBJID IN #{objkey} DELETE FROM BOM_PART_QTY WHERE BOM_REPORT_OBJID IN #{objkey} UPDATE PART_BOM_REPORT SET DEPLOY_DATE = TO_CHAR(NOW(),'YYYY-MM-DD') ,STATUS = 'deploy' ,REVISION = #{REVISION} WHERE OBJID = #{checkArr} UPDATE part_mng SET status='release' WHERE OBJID IN (SELECT part_no FROM bom_part_qty as t WHERE t.bom_report_objid=#{checkArr}) AND status='create' DELETE FROM PART_MNG WHERE STATUS='create' AND OBJID IN(SELECT PART_NO FROM BOM_PART_QTY AS T WHERE T.BOM_REPORT_OBJID IN #{objkey} ) UPDATE PART_BOM_REPORT SET STATUS = (CASE WHEN STATUS != 'create' THEN 'changeDesign' ELSE STATUS END) WHERE OBJID = #{BOM_REPORT_OBJID} UPDATE PART_BOM_REPORT SET STATUS = 'changeDesign' ,EDIT_DATE = NOW() ,EDITER = #{WRITER} WHERE OBJID IN (SELECT Q.BOM_REPORT_OBJID FROM BOM_PART_QTY Q ,PART_MNG P WHERE P.PART_NO = #{PART_NO} AND P.OBJID = Q.PART_NO) AND STATUS != 'changeDesign' UPDATE PART_BOM_REPORT SET STATUS = 'changeDesign' ,EDIT_DATE = NOW() ,EDITER = #{WRITER} WHERE OBJID IN (SELECT Q.BOM_REPORT_OBJID FROM BOM_PART_QTY Q ,PART_MNG P ,PART_MNG P2 WHERE P.OBJID = #{OBJID} AND P.PART_NO = P2.PART_NO AND P2.OBJID = Q.PART_NO) AND STATUS != 'changeDesign' UPDATE BOM_PART_QTY Q SET STATUS = (CASE WHEN STATUS = 'deleting' THEN 'deleted' ELSE 'deploy' END ) ,DEPLOY_DATE = NOW() ,DEPLOY_USER_ID = #{WRITER} ,QTY = COALESCE(QTY_TEMP, QTY) ,QTY_TEMP = NULL ,LAST_PART_OBJID = (SELECT PM1.OBJID FROM PART_MNG PM1 ,PART_MNG PM2 WHERE PM1.IS_LAST = '1' AND PM2.OBJID = Q.PART_NO AND PM1.PART_NO = PM2.PART_NO) WHERE BOM_REPORT_OBJID = #{checkArr} AND COALESCE(STATUS, '') IN ('', 'beforeEdit', 'adding', 'deleting', 'editing') DELETE FROM BOM_PART_QTY WHERE BOM_REPORT_OBJID = #{checkArr} AND COALESCE(STATUS, '') = 'deleting' UPDATE PART_MNG P SET EO_DATE = TO_CHAR(NOW(),'YYYY-MM-DD'), EO_NO = CASE WHEN P.IS_LONGD = '1' THEN (SELECT 'EOB'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),7,8)::INTEGER+1,1) FROM PART_MNG SP WHERE SP.EO_NO IS NOT NULL AND SP.EO_NO LIKE 'EOB' || TO_CHAR(NOW(),'yy') || '-%' )||'', 4,'0')) ELSE (SELECT 'EO'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),6,8)::INTEGER+1,1) FROM PART_MNG SP WHERE SP.EO_NO IS NOT NULL AND SP.EO_NO LIKE 'EO' || TO_CHAR(NOW(),'yy') || '-%' )||'', 4,'0')) END, REVISION ='RE', STATUS = 'release' WHERE OBJID IN (SELECT PM.OBJID FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE 1=1 AND COALESCE(PM.EO_NO, '') = '' AND BOM_REPORT_OBJID = #{checkArr} ) UPDATE PART_MNG_HISTORY SET BOM_STATUS = 'deploy' ,BOM_DEPLOY_DATE = NOW() WHERE BOM_REPORT_OBJID = #{checkArr} UPDATE PART_MNG_HISTORY SET CONTRACT_OBJID = #{CONTRACT_OBJID}, CHANGE_TYPE = #{CHANGE_TYPE} WHERE OBJID IN (SELECT PM.OBJID FROM part_mng_history AS PM LEFT JOIN BOM_PART_QTY AS BP ON BP.PART_NO = PM.OBJID::VARCHAR WHERE 1=1 AND COALESCE(PM.CONTRACT_OBJID, '') = '' AND BP.BOM_REPORT_OBJID = #{checkArr} ) 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 ) SELECT #{NEW_FILE_OBJID}::INTEGER, #{NEW_PART_OBJID}::INTEGER, SAVED_FILE_NAME, REAL_FILE_NAME, DOC_TYPE, DOC_TYPE_NAME, FILE_SIZE, FILE_EXT, FILE_PATH, WRITER, REGDATE, STATUS FROM ATTACH_FILE_INFO WHERE OBJID = #{BEFORE_FILE_OBJID}::INTEGER DELETE FROM BOM_PART_QTY WHERE BOM_REPORT_OBJID = #{TARGET_REV} INSERT INTO BOM_PART_QTY ( BOM_REPORT_OBJID ,OBJID ,PARENT_OBJID ,CHILD_OBJID ,PARENT_PART_NO ,PART_NO ,QTY ,REGDATE ,SEQ ) VALUES ( #{BOM_REPORT_OBJID} ,#{OBJID} ,#{PARENT_OBJID} ,#{CHILD_OBJID} ,#{PARENT_PART_NO} ,#{PART_NO} ,#{QTY}::integer ,now() ,#{SEQ}::integer ) INSERT INTO PART_BOM_REPORT ( OBJID ,PRODUCT_MGMT_OBJID ,WRITER ,REGDATE ,STATUS ,REV ,SPEC_NAME ) VALUES ( #{OBJID}::integer ,#{product_code}::integer ,#{WRITER} ,now() ,'create' ,#{TARGET_REV} ,#{TARGET_SPEC_NAME} ) UPDATE BOM_PART_QTY SET SEQ = #{SEQ}::numeric WHERE CHILD_OBJID = #{CHILD_OBJID} INSERT INTO PART_MNG ( OBJID ,PART_NO ,PART_NAME ,UNIT ,QTY ,SPEC ,MATERIAL ,THICKNESS ,WIDTH ,HEIGHT ,OUT_DIAMETER ,IN_DIAMETER ,LENGTH ,REMARK ,STATUS ,REG_DATE ,WRITER ,IS_LAST ,PART_TYPE ,PRODUCT_MGMT_OBJID ,SUPPLY_CODE ,MAKER ,CONTRACT_OBJID ,POST_PROCESSING ) VALUES ( #{PART_OBJID}::NUMERIC ,#{PART_NO} ,#{PART_NAME} ,#{UNIT} ,#{QTY} ,#{SPEC} ,#{MATERIAL} ,#{THICKNESS} ,#{WIDTH} ,#{HEIGHT} ,#{OUT_DIAMETER} ,#{IN_DIAMETER} ,#{LENGTH} ,#{REMARK} ,'create' ,now() ,#{CONNECTUSERID} ,'1' ,#{PART_TYPE} ,#{PRODUCT_MGMT_OBJID} ,#{SUPPLY_CODE} ,#{MAKER} ,#{CONTRACT_OBJID} ,#{POST_PROCESSING} ) 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' ) UPDATE PART_MNG SET IS_LAST = '0' WHERE PART_NO = #{PART_NO} UPDATE PART_MNG SET IS_LAST = '0' WHERE OBJID IN (SELECT Q.PART_NO FROM BOM_PART_QTY Q ,PART_MNG P WHERE BOM_REPORT_OBJID = #{BOM_REPORT_OBJID} AND P.OBJID = Q.PART_NO AND P.STATUS IN ('changeDesign') ) UPDATE PART_BOM_REPORT SET NOTE = #{NOTE} WHERE 0 ]]> INSERT INTO PART_BOM_REPORT_DEL SELECT * FROM PART_BOM_REPORT WHERE 1=2 WHERE OBJID = #{OBJID} WHERE OBJID IN '${fobjid}' INSERT INTO PART_MNG_DEL SELECT * FROM PART_MNG P WHERE EXISTS ( SELECT 'E' FROM BOM_PART_QTY Q WHERE 1=2 WHERE Q.BOM_REPORT_OBJID = #{OBJID} WHERE Q.BOM_REPORT_OBJID IN '${fobjid}' AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID ) AND NOT EXISTS ( SELECT 'E' FROM BOM_PART_QTY Q WHERE Q.BOM_REPORT_OBJID != #{OBJID} WHERE Q.BOM_REPORT_OBJID NOT IN '${fobjid}' AND (Q.LAST_PART_OBJID = P.OBJID OR Q.PART_NO = P.OBJID) ) INSERT INTO BOM_PART_QTY_DEL SELECT * FROM BOM_PART_QTY WHERE 1=2 WHERE BOM_REPORT_OBJID = #{OBJID} WHERE BOM_REPORT_OBJID IN '${fobjid}' DELETE FROM PART_BOM_REPORT WHERE 1=2 WHERE OBJID = #{OBJID} WHERE OBJID IN '${fobjid}' DELETE FROM PART_MNG P WHERE EXISTS ( SELECT 'E' FROM BOM_PART_QTY Q WHERE 1=2 WHERE Q.BOM_REPORT_OBJID = #{OBJID} WHERE Q.BOM_REPORT_OBJID IN '${fobjid}' AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID ) AND NOT EXISTS ( SELECT 'E' FROM BOM_PART_QTY Q WHERE Q.BOM_REPORT_OBJID != #{OBJID} WHERE Q.BOM_REPORT_OBJID NOT IN '${fobjid}' AND (Q.LAST_PART_OBJID = P.OBJID OR Q.PART_NO = P.OBJID) ) DELETE FROM BOM_PART_QTY WHERE 1=2 WHERE BOM_REPORT_OBJID = #{OBJID} WHERE BOM_REPORT_OBJID IN '${fobjid}' INSERT INTO PART_BOM_REPORT SELECT * FROM PART_BOM_REPORT_DEL WHERE 1=2 WHERE BOM_REPORT_OBJID = #{OBJID} WHERE BOM_REPORT_OBJID IN '${fobjid}' INSERT INTO PART_MNG SELECT * FROM PART_MNG_DEL P WHERE EXISTS ( SELECT 'E' FROM BOM_PART_QTY_DEL Q WHERE 1=2 WHERE Q.BOM_REPORT_OBJID = #{OBJID} WHERE Q.BOM_REPORT_OBJID IN '${fobjid}' AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID ) AND NOT EXISTS ( SELECT 'E' FROM BOM_PART_QTY_DEL Q ,PART_MNG SP WHERE 1=2 WHERE Q.BOM_REPORT_OBJID = #{OBJID} WHERE Q.BOM_REPORT_OBJID IN '${fobjid}' AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID AND SP.OBJID = NVL(Q.LAST_PART_OBJID, Q.PART_NO) ) INSERT INTO BOM_PART_QTY SELECT * FROM BOM_PART_QTY_DEL WHERE 1=2 WHERE BOM_REPORT_OBJID = #{OBJID} WHERE BOM_REPORT_OBJID IN '${fobjid}' UPDATE BOM_PART_QTY SET LAST_PART_OBJID = #{RIGHT_OBJID} WHERE BOM_REPORT_OBJID = #{BOM_REPORT_OBJID} AND OBJID = #{B_OBJID} INSERT INTO PART_MNG_HISTORY ( SELECT P.OBJID::numeric, P.PRODUCT_MGMT_OBJID, P.UPG_NO, P.PART_NO, P.PART_NAME, P.UNIT, Q.QTY, P.SPEC, P.MATERIAL, P.WEIGHT, P.PART_TYPE, P.REMARK, P.ES_SPEC, P.MS_SPEC, (CASE WHEN (#{CHANGE_OPTION} IS NULL OR #{CHANGE_OPTION} = '') THEN P.CHANGE_OPTION ELSE #{CHANGE_OPTION} END), P.DESIGN_APPLY_POINT, P.MANAGEMENT_FLAG, P.REVISION, P.STATUS, P.REG_DATE, NOW(), #{WRITER}, P.IS_LAST, P.EO_NO, P.EO_TEMP, P.EXCEL_UPLOAD_SEQ, P.SOURCING_CODE, P.SUB_MATERIAL, (CASE WHEN (#{PARENT_PART_NO} IS NULL OR #{PARENT_PART_NO} = '') THEN Q.PARENT_PART_NO ELSE #{PARENT_PART_NO} END), P.DESIGN_DATE, P.EO_DATE, P.DEPLOY_DATE ,P.THICKNESS ,P.WIDTH ,P.HEIGHT ,P.OUT_DIAMETER ,P.IN_DIAMETER ,P.LENGTH ,P.SUPPLY_CODE ,(CASE WHEN (#{CHANGE_TYPE} IS NULL OR #{CHANGE_TYPE} = '') THEN P.CHANGE_TYPE ELSE #{CHANGE_TYPE} END) ,P.CONTRACT_OBJID ,P.MAKER ,Q.QTY_TEMP ,(CASE WHEN (#{BOM_REPORT_OBJID} IS NULL OR #{BOM_REPORT_OBJID} = '') THEN Q.BOM_REPORT_OBJID ELSE #{BOM_REPORT_OBJID} END) ,(CASE WHEN (#{PARENT_PART_OBJID} IS NULL OR #{PARENT_PART_OBJID} = '') THEN Q.PARENT_PART_NO ELSE #{PARENT_PART_OBJID} END) ,(CASE WHEN (#{PARENT_QTY_CHILD_OBJID} IS NULL OR #{PARENT_QTY_CHILD_OBJID} = '') THEN Q.PARENT_OBJID ELSE #{PARENT_QTY_CHILD_OBJID} END) ,Q.STATUS ,NOW() ,#{WRITER} ,#{HIS_STATUS} ,#{CHILD_OBJID} ,'' FROM PART_MNG P LEFT OUTER JOIN BOM_PART_QTY Q ON P.PART_NO IN (SELECT PM2.PART_NO FROM PART_MNG PM2 WHERE PM2.OBJID = Q.PART_NO ) AND BOM_REPORT_OBJID = '801248820' AND Q.STATUS = 'beforeEdit' WHERE P.OBJID = #{BOM_REPORT_OBJID} )