- Add Docker Compose configurations for dev, prod, and standalone environments - Add database initialization scripts (init-db.sh, init-db-docker.sh) - Add enhanced start-docker-linux.sh with DB init support - Add comprehensive database initialization guide - Support for automatic dbexport.pgsql import on first run - Include safety checks for production environment
7516 lines
230 KiB
XML
7516 lines
230 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="partMng">
|
|
|
|
<sql id="v_bom_qty">
|
|
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 A.BOM_REPORT_OBJID = #{bomReportObjId}
|
|
-->
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND STATUS NOT IN ('deleting', 'deleted')
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
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
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND STATUS NOT IN ('deleting', 'deleted')
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND B.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
)
|
|
</sql>
|
|
|
|
<sql id="partMngBaseSimple">
|
|
(
|
|
<!--
|
|
WITH V_F AS (
|
|
SELECT *
|
|
FROM ATTACH_FILE_INFO F
|
|
WHERE F.DOC_TYPE IN ('3D_CAD', '2D_DRAWING_CAD','2D_PDF_CAD')
|
|
AND F.STATUS = 'Active'
|
|
)
|
|
-->
|
|
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,
|
|
<!--
|
|
T3.CHANGE_OPTION_NAME,
|
|
(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.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,
|
|
<!--
|
|
(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = P.SOURCING_CODE) AS SOURCING_NAME,
|
|
-->
|
|
SUPPLY_CODE
|
|
<!--
|
|
(SELECT SUPPLY_NAME FROM admin_supply_mng O WHERE O.objid::varchar = P.SUPPLY_CODE) AS SUPPLY_NAME
|
|
-->
|
|
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!-- AND F.STATUS = 'Active'--> 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.STATUS = 'Active'--> 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.STATUS = 'Active'--> 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.STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_PDF_CAD','2D_DRAWING_CAD')) CU_TOTAL_CNT
|
|
FROM PART_MNG P
|
|
<!--
|
|
LEFT OUTER JOIN ATTACH_FILE_INFO F
|
|
ON P.OBJID = CAD.TARGET_OBJID::varchar
|
|
AND F.DOC_TYPE IN ('3D_CAD', '2D_DRAWING_CAD','2D_PDF_CAD')
|
|
AND F.STATUS = 'Active'
|
|
-->
|
|
|
|
<!--
|
|
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 P.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 P.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 P.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 ('2D_PDF_CAD','2D_DRAWING_CAD')
|
|
AND STATUS = 'Active'
|
|
) PDFDRA
|
|
ON P.OBJID::varchar = PDFDRA.TARGET_OBJID::varchar
|
|
-->
|
|
)
|
|
</sql>
|
|
|
|
<!-- Part 관리 기본 조회 -->
|
|
<sql id="partMngBase">
|
|
(
|
|
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')
|
|
<!--
|
|
AND AF.STATUS = 'Active'
|
|
-->
|
|
LEFT OUTER JOIN V_FILE AF_ECD
|
|
ON P.OBJID = AF_ECD.TARGET_OBJID
|
|
AND AF_ECD.DOC_TYPE IN ('ECD_DOC')
|
|
<!--
|
|
AND AF_ECD.STATUS = 'Active'
|
|
-->
|
|
LEFT OUTER JOIN V_FILE CAD
|
|
ON P.OBJID = CAD.TARGET_OBJID
|
|
AND CAD.DOC_TYPE IN ('3D_CAD')
|
|
<!--
|
|
AND CAD.STATUS = 'Active'
|
|
-->
|
|
LEFT OUTER JOIN V_FILE DRAWING
|
|
ON P.OBJID = DRAWING.TARGET_OBJID
|
|
AND DRAWING.DOC_TYPE IN ('2D_DRAWING_CAD')
|
|
<!--
|
|
AND DRAWING.STATUS = 'Active'
|
|
-->
|
|
LEFT OUTER JOIN V_FILE PDF
|
|
ON P.OBJID = PDF.TARGET_OBJID
|
|
AND PDF.DOC_TYPE IN ('2D_PDF_CAD')
|
|
<!--
|
|
AND PDF.STATUS = 'Active'
|
|
-->
|
|
LEFT OUTER JOIN V_FILE PDFDRA
|
|
ON P.OBJID = PDFDRA.TARGET_OBJID
|
|
AND PDFDRA.DOC_TYPE IN ('2D_PDF_CAD', '2D_DRAWING_CAD')
|
|
<!--
|
|
AND PDFDRA.STATUS = 'Active'
|
|
-->
|
|
|
|
<!--
|
|
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 P.OBJID::varchar = AF.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 ('ECD_DOC')
|
|
AND STATUS = 'Active'
|
|
) AF_ECD
|
|
ON P.OBJID::varchar = AF_ECD.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 ('3D_CAD')
|
|
AND STATUS = 'Active'
|
|
) CAD
|
|
ON P.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 P.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 P.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 ('2D_PDF_CAD','2D_DRAWING_CAD')
|
|
AND STATUS = 'Active'
|
|
) PDFDRA
|
|
ON P.OBJID::varchar = PDFDRA.TARGET_OBJID::varchar
|
|
-->
|
|
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
|
|
)
|
|
</sql>
|
|
|
|
<sql id="partMngBase2">
|
|
(
|
|
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
|
|
)
|
|
</sql>
|
|
|
|
<!-- Part 등록 -->
|
|
<update id="mergePartMng" parameterType="map">
|
|
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},
|
|
<!-- #{CHANGE_OPTION_Arr}, -->
|
|
#{DESIGN_APPLY_POINT},
|
|
#{MANAGEMENT_FLAG},
|
|
#{REVISION},
|
|
<!--
|
|
'release',
|
|
-->
|
|
'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},
|
|
<!-- CHANGE_OPTION = #{CHANGE_OPTION_Arr}, -->
|
|
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}
|
|
|
|
</update>
|
|
|
|
<!-- Part 설변등록 -->
|
|
<update id="mergePartMngchangeDesign" parameterType="map">
|
|
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},
|
|
<!-- #{CHANGE_OPTION_Arr}, -->
|
|
#{DESIGN_APPLY_POINT},
|
|
#{MANAGEMENT_FLAG},
|
|
UPPER(#{REVISION}),
|
|
#{STATUS},
|
|
NOW(),
|
|
#{WRITER},
|
|
<!--
|
|
'1',
|
|
-->
|
|
COALESCE(#{IS_LAST}, '0'),
|
|
#{PARENT_PART_NO},
|
|
#{SUB_MATERIAL},
|
|
#{EO_NO},
|
|
<!--
|
|
(SELECT 'EO'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),6,8)::INTEGER+1,1) FROM part_mng WHERE EO_NO IS NOT NULL)||'', 4,'0')),
|
|
-->
|
|
#{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},
|
|
<!-- CHANGE_OPTION = #{CHANGE_OPTION_Arr}, -->
|
|
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}
|
|
</update>
|
|
<update id="mergePartMngHistory" parameterType="map">
|
|
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}
|
|
</update>
|
|
|
|
<select id="overlapPartMng" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="partMngBase"/> T
|
|
WHERE 1=1
|
|
AND T.OBJID != #{OBJID}
|
|
AND T.PART_NO = #{PART_NO}
|
|
<if test="REVISION != null and !''.equals(REVISION)">
|
|
AND T.REVISION = #{REVISION}
|
|
</if>
|
|
</select>
|
|
|
|
<select id="overlapPartMng2" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM PART_MNG T
|
|
WHERE 1=1
|
|
AND T.PART_NO = #{PART_NO}
|
|
</select>
|
|
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="structureDescendingList_Backup" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
UNIT_TITLE,
|
|
PART_OBJID,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
LEV + 1,
|
|
PATH||A.CHILD_OBJID::TEXT,
|
|
A.PARENT_OBJID = ANY(PATH)
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
|
|
) A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
),VIEW_TEMP(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
MATERIAL,
|
|
WEIGHT,
|
|
PART_OBJID,
|
|
LEV,
|
|
PATH1,
|
|
PART_ARRAY1,
|
|
CYCLE1
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
A.PART_NO AS PART_NO_TITLE,
|
|
A.PART_NAME,
|
|
A.QTY,
|
|
A.REV,
|
|
A.MATERIAL,
|
|
A.WEIGHT,
|
|
A.PART_OBJID,
|
|
1,
|
|
ARRAY[A.PART_NO::TEXT],
|
|
ARRAY[A.PART_NO] AS PART_ARRAY1,
|
|
FALSE
|
|
FROM
|
|
VIEW_BOM A,
|
|
PART_BOM_REPORT B
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID::INTEGER = B.OBJID
|
|
|
|
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
|
|
AND B.OEM_OBJID = #{search_oemObjId}::NUMERIC
|
|
</if>
|
|
<if test="search_carObjId != null and !''.equals(search_carObjId)">
|
|
AND B.CAR_OBJID = #{search_carObjId}::NUMERIC
|
|
</if>
|
|
<if test="search_productObjId != null and !''.equals(search_productObjId)">
|
|
AND B.PRODUCT_OBJID = #{search_productObjId}
|
|
</if>
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(A.PART_NO_TITLE) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(A.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
UNION ALL
|
|
SELECT A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
A.PART_NO AS PART_NO_TITLE,
|
|
A.PART_NAME,
|
|
A.QTY,
|
|
A.REV,
|
|
A.MATERIAL,
|
|
A.WEIGHT,
|
|
A.PART_OBJID,
|
|
C.LEV+1,
|
|
PATH||A.PART_NO::TEXT,
|
|
C.PART_ARRAY1,
|
|
A.PART_NO = ANY(PART_ARRAY1) AS CYCLE1
|
|
FROM VIEW_BOM A,
|
|
PART_BOM_REPORT B,
|
|
VIEW_TEMP C
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID::INTEGER = B.OBJID
|
|
AND A.CHILD_OBJID = C.PARENT_OBJID
|
|
AND A.BOM_REPORT_OBJID = C.BOM_REPORT_OBJID
|
|
)
|
|
SELECT V.BOM_REPORT_OBJID,
|
|
V.PARENT_PART_NO,
|
|
V.PART_NO,
|
|
V.REGDATE,
|
|
<!-- V.PART_NO AS PART_NO_TITLE, -->
|
|
(SELECT o.part_no FROM part_mng AS o WHERE o.objid::NUMERIC = V.PART_NO::NUMERIC) AS PART_NO_TITLE,
|
|
V.PART_NAME,
|
|
V.QTY,
|
|
V.REV,
|
|
V.MATERIAL,
|
|
V.WEIGHT,
|
|
V.PART_OBJID,
|
|
V.LEV,
|
|
V.LEV AS LEVEL
|
|
<!-- ,(SELECT BOM_REPORT_OBJID
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND VT.LEV = 1
|
|
) AS SUB_ROOT_OBJID ,
|
|
V.PART_NO_TITLE LPAD_PART_NO ,
|
|
(SELECT COUNT(*)
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND V.PARENT_PART_NO = VT.PART_NO
|
|
) AS SUB_PART_CNT ,
|
|
(SELECT BOM_REPORT_OBJID
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND VT.LEV = 1
|
|
) AS ROOT_OBJID -->
|
|
FROM VIEW_TEMP V
|
|
WHERE 1=1
|
|
ORDER BY REGDATE DESC,
|
|
LEV,
|
|
PATH1
|
|
</select>
|
|
<select id="structureDescendingList" parameterType="map" resultType="map">
|
|
SELECT ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) AS RNUM, AA.*
|
|
FROM (
|
|
SELECT DISTINCT
|
|
PBM.OBJID,
|
|
PBM.PRODUCT_MGMT_OBJID,
|
|
PBM.PRODUCT_MGMT_SPEC,
|
|
PBM.PRODUCT_MGMT_UPG,
|
|
PBM.PRODUCT_MGMT_VC,
|
|
PBM.STATUS,
|
|
CASE UPPER(PBM.STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
PBM.WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = PBM.WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PBM.WRITER) AS USER_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID = PBM.PRODUCT_MGMT_OBJID) AS PRODUCT_CODE,
|
|
PBM.REV,
|
|
PBM.SPEC_NAME,
|
|
PBM.REGDATE AS REGDATE_ORG,
|
|
TO_CHAR(PBM.REGDATE, 'YYYY-MM-DD') AS REGDATE,
|
|
PBM.DEPLOY_DATE,
|
|
PBM.WRITER,
|
|
INFO.*
|
|
FROM BOM_PART_QTY A
|
|
LEFT JOIN PART_BOM_REPORT PBM
|
|
ON A.BOM_REPORT_OBJID = PBM.OBJID::TEXT
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
PMUD.*,
|
|
(SELECT model_CODE FROM product_mgmt_model O1
|
|
WHERE O1.product_category = (SELECT o.product_category from product_mgmt o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt o WHERE o.objid = PMUD.product_objid)
|
|
)||PMUD.UPG_CODE||'-'||PMUD.VC AS UPG_NO
|
|
FROM(
|
|
SELECT
|
|
DISTINCT
|
|
PMUD.OBJID AS DETAIL_OBJID,
|
|
PMUD.OBJID::VARCHAR AS CODE,
|
|
PMUD.UPG_NAME,
|
|
PMUD.UPG_NAME AS NAME,
|
|
PMUD.UPG_CODE AS CODE_CD,
|
|
PMUD.NOTE,
|
|
|
|
PMUD.TARGET_OBJID AS MASTER_OBJID,
|
|
PMUD.VC,
|
|
PMUD.PRODUCT_OBJID,
|
|
PMUD.UPG_CODE,
|
|
(SELECT SPEC_NAME FROM PRODUCT_MGMT_UPG_MASTER PMUM WHERE 1=1 AND PMUM.OBJID = PMUD.TARGET_OBJID) AS SPEC_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT PM WHERE 1=1 AND PM.OBJID = PMUD.PRODUCT_OBJID) AS PRODUCT_CODE
|
|
FROM
|
|
PRODUCT_MGMT_UPG_DETAIL PMUD
|
|
WHERE 1=1
|
|
) PMUD
|
|
) INFO
|
|
ON PBM.PRODUCT_MGMT_OBJID = INFO.PRODUCT_OBJID
|
|
AND PBM.PRODUCT_MGMT_SPEC = INFO.MASTER_OBJID
|
|
AND PBM.PRODUCT_MGMT_UPG = INFO.UPG_NO
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON A.PART_NO = PM.OBJID::TEXT
|
|
WHERE 1=1
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PBM.PRODUCT_MGMT_OBJID = #{product_code}::NUMERIC
|
|
</if>
|
|
<if test="product_mgmt_spec != null and product_mgmt_spec != ''">
|
|
AND PBM.PRODUCT_MGMT_SPEC = #{product_mgmt_spec}::NUMERIC
|
|
</if>
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND PBM.PRODUCT_MGMT_UPG = #{upg_no}
|
|
</if>
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(PM.PART_NO) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(PM.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
) AA
|
|
</select>
|
|
<select id="structureDescendingListPopup" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM_DESC AS (
|
|
SELECT A.PART_NO
|
|
, A.PARENT_PART_NO
|
|
, A.BOM_REPORT_OBJID
|
|
, A.REGDATE
|
|
, A.PART_NO AS ROOT_PART_NO
|
|
, 1 AS LEV
|
|
, ARRAY [A.PART_NO::TEXT] AS PATH
|
|
, FALSE AS CYCLE
|
|
FROM BOM_PART_QTY A, PART_MNG B, PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND A.PART_NO = B.OBJID::TEXT
|
|
AND A.BOM_REPORT_OBJID = C.objid::TEXT
|
|
|
|
<if test="bom_report_objid != null and bom_report_objid != ''">
|
|
AND A.BOM_REPORT_OBJID = #{bom_report_objid}
|
|
</if>
|
|
<if test="product_code != null and product_code != ''">
|
|
AND C.PRODUCT_MGMT_OBJID = #{product_code}::NUMERIC
|
|
</if>
|
|
<if test="product_mgmt_spec != null and product_mgmt_spec != ''">
|
|
AND C.PRODUCT_MGMT_SPEC = #{product_mgmt_spec}::NUMERIC
|
|
</if>
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND C.PRODUCT_MGMT_UPG = #{upg_no}
|
|
</if>
|
|
|
|
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
|
|
AND B.OEM_OBJID = #{search_oemObjId}::NUMERIC
|
|
</if>
|
|
<if test="search_carObjId != null and !''.equals(search_carObjId)">
|
|
AND B.CAR_OBJID = #{search_carObjId}::NUMERIC
|
|
</if>
|
|
<if test="search_productObjId != null and !''.equals(search_productObjId)">
|
|
AND B.PRODUCT_OBJID = #{search_productObjId}
|
|
</if>
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(B.PART_NO) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(B.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
|
|
UNION ALL
|
|
|
|
SELECT A.PART_NO
|
|
, A.PARENT_PART_NO
|
|
, A.BOM_REPORT_OBJID
|
|
, A.REGDATE
|
|
, V.ROOT_PART_NO
|
|
, V.LEV + 1 AS LEV
|
|
, V.PATH||A.PART_NO::TEXT AS PATH
|
|
, A.PARENT_PART_NO = ANY(V.PATH) AS CYCLE
|
|
FROM BOM_PART_QTY A, VIEW_BOM_DESC V
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID = V.BOM_REPORT_OBJID
|
|
AND A.PART_NO = V.PARENT_PART_NO
|
|
)
|
|
SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
|
|
FROM (SELECT DISTINCT VB.LEV
|
|
, VB.BOM_REPORT_OBJID
|
|
, VB.ROOT_PART_NO
|
|
, VB.PART_NO
|
|
, VB.PATH
|
|
, VB.REGDATE
|
|
, (CASE WHEN VB.CYCLE IS NULL THEN 1 ELSE 0 END) AS LEAF
|
|
FROM VIEW_BOM_DESC VB
|
|
) T1
|
|
,<include refid="partMngBase"/> T2
|
|
WHERE T1.PART_NO = T2.OBJID::TEXT
|
|
ORDER BY T1.BOM_REPORT_OBJID, T1.LEV, T1.PATH, T1.REGDATE
|
|
</select>
|
|
<select id="structureAscendingListPopup" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
BOM_PART_QTY A
|
|
where 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.BOM_REPORT_OBJID = #{bom_report_objid}
|
|
|
|
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.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::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
|
|
)
|
|
SELECT
|
|
V.BOM_REPORT_OBJID
|
|
,V.OBJID
|
|
,V.PARENT_OBJID
|
|
,V.CHILD_OBJID
|
|
,V.PARENT_PART_NO
|
|
,V.PART_NO AS PART_OBJID
|
|
,V.QTY
|
|
--,(SELECT PART_NAME FROM PART_MNG WHERE OBJID = V.PART_NO::INTEGER) AS PART_NAME
|
|
--,(SELECT PART_NO FROM PART_MNG WHERE OBJID = V.PART_NO::INTEGER) AS PART_NO
|
|
,(SELECT REVISION FROM PART_MNG WHERE OBJID = V.PART_NO::INTEGER) AS REVISION
|
|
,V.LEV
|
|
,(SELECT COUNT(*) FROM BOM_PART_QTY WHERE PARENT_OBJID = V.CHILD_OBJID) AS SUB_PART_CNT
|
|
,V.SEQ
|
|
, (CASE WHEN V.CYCLE IS NULL THEN 1 ELSE 0 END) AS LEAF
|
|
,T2.*
|
|
FROM VIEW_BOM V,
|
|
<include refid="partMngBase"/> T2
|
|
WHERE V.PART_NO = T2.OBJID::TEXT
|
|
ORDER BY V.SEQ
|
|
|
|
|
|
<!-- WITH RECURSIVE VIEW_BOM_DESC AS (
|
|
SELECT A.PART_NO
|
|
, A.PARENT_PART_NO
|
|
, A.BOM_REPORT_OBJID
|
|
, A.REGDATE
|
|
, A.PART_NO AS ROOT_PART_NO
|
|
, 1 AS LEV
|
|
, ARRAY [A.PART_NO::TEXT] AS PATH
|
|
, FALSE AS CYCLE
|
|
FROM BOM_PART_QTY A, PART_MNG B, PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND A.PART_NO = B.OBJID::TEXT
|
|
AND A.BOM_REPORT_OBJID = C.objid::TEXT
|
|
|
|
<if test="bom_report_objid != null and bom_report_objid != ''">
|
|
AND A.BOM_REPORT_OBJID = #{bom_report_objid}
|
|
</if>
|
|
<if test="product_code != null and product_code != ''">
|
|
AND C.PRODUCT_MGMT_OBJID = #{product_code}::NUMERIC
|
|
</if>
|
|
<if test="product_mgmt_spec != null and product_mgmt_spec != ''">
|
|
AND C.PRODUCT_MGMT_SPEC = #{product_mgmt_spec}::NUMERIC
|
|
</if>
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND C.PRODUCT_MGMT_UPG = #{upg_no}
|
|
</if>
|
|
|
|
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
|
|
AND B.OEM_OBJID = #{search_oemObjId}::NUMERIC
|
|
</if>
|
|
<if test="search_carObjId != null and !''.equals(search_carObjId)">
|
|
AND B.CAR_OBJID = #{search_carObjId}::NUMERIC
|
|
</if>
|
|
<if test="search_productObjId != null and !''.equals(search_productObjId)">
|
|
AND B.PRODUCT_OBJID = #{search_productObjId}
|
|
</if>
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(B.PART_NO) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(B.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
|
|
UNION ALL
|
|
|
|
SELECT A.PART_NO
|
|
, A.PARENT_PART_NO
|
|
, A.BOM_REPORT_OBJID
|
|
, A.REGDATE
|
|
, V.ROOT_PART_NO
|
|
, V.LEV + 1 AS LEV
|
|
, V.PATH||A.PART_NO::TEXT AS PATH
|
|
, A.PARENT_PART_NO = ANY(V.PATH) AS CYCLE
|
|
FROM BOM_PART_QTY A, VIEW_BOM_DESC V
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID = V.BOM_REPORT_OBJID
|
|
AND A.PART_NO = V.PARENT_PART_NO
|
|
),
|
|
VIEW_BOM_ASC AS (
|
|
SELECT A.PART_NO
|
|
, A.PARENT_PART_NO
|
|
, A.BOM_REPORT_OBJID
|
|
, A.REGDATE
|
|
, A.PART_NO AS ROOT_PART_NO
|
|
, 1 AS LEV
|
|
, ARRAY [A.PART_NO::TEXT] AS PATH
|
|
, FALSE AS CYCLE
|
|
FROM BOM_PART_QTY A,
|
|
( /*검색된 ROOT PART_NO */
|
|
SELECT DISTINCT BOM_REPORT_OBJID, PART_NO
|
|
FROM ( SELECT VB.BOM_REPORT_OBJID, VB.PART_NO
|
|
,DENSE_RANK() OVER(PARTITION BY VB.BOM_REPORT_OBJID, VB.ROOT_PART_NO ORDER BY VB.LEV DESC) AS LEV_TOP
|
|
FROM VIEW_BOM_DESC VB
|
|
) T
|
|
WHERE LEV_TOP = 1
|
|
) B
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
|
|
UNION ALL
|
|
|
|
SELECT A.PART_NO
|
|
, A.PARENT_PART_NO
|
|
, A.BOM_REPORT_OBJID
|
|
, A.REGDATE
|
|
, V.ROOT_PART_NO
|
|
, V.LEV + 1 AS LEV
|
|
, V.PATH||A.PART_NO::TEXT AS PATH
|
|
, A.PARENT_PART_NO = ANY(V.PATH) AS CYCLE
|
|
FROM BOM_PART_QTY A, VIEW_BOM_ASC V
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID = V.BOM_REPORT_OBJID
|
|
AND V.PART_NO = A.PARENT_PART_NO
|
|
)
|
|
SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
|
|
FROM (SELECT VB.LEV
|
|
, VB.BOM_REPORT_OBJID
|
|
, VB.ROOT_PART_NO
|
|
, VB.PART_NO
|
|
, VB.PATH
|
|
, VB.REGDATE
|
|
, (CASE WHEN VB.CYCLE IS NULL THEN 1 ELSE 0 END) AS LEAF
|
|
FROM VIEW_BOM_ASC VB
|
|
) T1
|
|
,<include refid="partMngBase"/> T2
|
|
WHERE T1.PART_NO = T2.OBJID::TEXT
|
|
ORDER BY T1.BOM_REPORT_OBJID, T1.LEV, T1.PATH, T1.REGDATE -->
|
|
</select>
|
|
|
|
<select id="partMngListCnt" parameterType="map" resultType="map">
|
|
SELECT
|
|
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
|
|
TOTAL_CNT::integer
|
|
FROM (
|
|
SELECT
|
|
COUNT(1)::float TOTAL_CNT
|
|
FROM (
|
|
SELECT T.*
|
|
FROM <include refid="partMngBaseSimple"/> T
|
|
WHERE T.status='release'
|
|
) AS PMS_PART_MGMT
|
|
WHERE 1=1
|
|
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND UPG_NO = #{upg_no}
|
|
</if>
|
|
|
|
<if test="SEARCH_YEAR != null and SEARCH_YEAR != ''">
|
|
AND REG_DATE_YEAR_TITLE = #{SEARCH_YEAR}
|
|
</if>
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<!-- EO 기능 개발 후 추가 -->
|
|
<!-- <if test="SEARCH_EO != null and SEARCH_EO != ''">
|
|
AND UPPER(EO_NO) LIKE UPPER('%${SEARCH_EO}%')
|
|
</if>
|
|
|
|
<if test="SEARCH_EO_DATE_FROM != null and SEARCH_EO_DATE_FROM != ''">
|
|
AND EO_DATE <![CDATA[ >= ]]> #{SEARCH_EO_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_EO_DATE_TO != null and SEARCH_EO_DATE_TO != ''">
|
|
AND EO_DATE <![CDATA[ <= ]]> #{SEARCH_EO_DATE_TO}::TIMESTAMP
|
|
</if> -->
|
|
|
|
<if test="SEARCH_DESIGN_DATE_FROM != null and SEARCH_DESIGN_DATE_FROM != ''">
|
|
AND TO_DATE(DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DESIGN_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DESIGN_DATE_TO != null and SEARCH_DESIGN_DATE_TO != ''">
|
|
AND TO_DATE(DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DESIGN_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
<if test="IS_LAST != null and IS_LAST != ''">
|
|
AND IS_LAST = #{IS_LAST}
|
|
</if>
|
|
|
|
<if test="EO != null and EO != ''">
|
|
AND EO_TEMP IS NULL OR EO_TEMP = ''
|
|
</if>
|
|
) AS T
|
|
</select>
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
|
|
FROM(
|
|
<!--
|
|
<include refid="v_bom_qty"/>
|
|
-->
|
|
SELECT
|
|
<!--
|
|
ROW_NUMBER() OVER(ORDER BY PART_NO, (CASE WHEN REVISION LIKE 'RE%' THEN 0 ELSE 1 END, REVISION) desc ) RNUM,
|
|
-->
|
|
T.*
|
|
<!--
|
|
,NVL((SELECT SUM(NVL(QTY, '0')::NUMERIC) FROM INVENTORY_MGMT IM WHERE IM.PART_OBJID = T.OBJID)::VARCHAR, '0') STOCK_QTY
|
|
-->
|
|
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_IN AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = T.OBJID
|
|
),0) - COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='')
|
|
THEN 0
|
|
ELSE REQUEST_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_OUT AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = T.OBJID
|
|
),0)) AS STOCK_QTY
|
|
,(SELECT SUM(I.QTY) FROM INVENTORY_MNG I, RESOURCE_MNG RM
|
|
WHERE RM.OBJID = I.PARENT_OBJID
|
|
AND I.IS_LAST = 'Y'
|
|
AND RM.PART_OBJID = T.OBJID::varchar
|
|
GROUP BY I.PARENT_OBJID
|
|
) AS INVEN_TOTAL_QTY
|
|
FROM <include refid="partMngBaseSimple"/> T
|
|
<!--
|
|
LEFT OUTER JOIN VIEW_BOM V
|
|
ON V.PART_OBJID = T.OBJID
|
|
-->
|
|
WHERE 1=1
|
|
AND T.status='release'
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND UPG_NO = #{upg_no}
|
|
</if>
|
|
<if test="SEARCH_YEAR != null and SEARCH_YEAR != ''">
|
|
AND REG_DATE_YEAR_TITLE = #{SEARCH_YEAR}
|
|
</if>
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NO_END != null and SEARCH_PART_NO_END != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO_END}')
|
|
</if>
|
|
<if test="SEARCH_PART_NO_EQ != null and SEARCH_PART_NO_EQ != ''">
|
|
AND UPPER(PART_NO) = #{SEARCH_PART_NO_EQ}
|
|
</if>
|
|
<if test="SEARCH_PART_NAME_EQ != null and SEARCH_PART_NAME_EQ != ''">
|
|
AND UPPER(PART_NAME) = #{SEARCH_PART_NAME_EQ}
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND PART_TYPE = #{SEARCH_PART_TYPE}
|
|
<!--
|
|
<choose>
|
|
<when test="'0001788'.equals(SEARCH_PART_TYPE)">구매품표준(241010)
|
|
AND PART_TYPE = '0001788'
|
|
AND IS_NEW = '1'
|
|
</when>
|
|
<otherwise>
|
|
</otherwise>
|
|
</choose>
|
|
-->
|
|
</if>
|
|
|
|
<if test="SEARCH_BOM_OBJID != null and SEARCH_BOM_OBJID != ''">
|
|
AND OBJID IN (SELECT PART_NO FROM BOM_PART_QTY Q
|
|
WHERE BOM_REPORT_OBJID = #{SEARCH_BOM_OBJID})
|
|
</if>
|
|
|
|
<!-- EO 기능 개발 후 추가 -->
|
|
<!-- <if test="SEARCH_EO != null and SEARCH_EO != ''">
|
|
AND UPPER(EO_NO) LIKE UPPER('%${SEARCH_EO}%')
|
|
</if>
|
|
|
|
<if test="SEARCH_EO_DATE_FROM != null and SEARCH_EO_DATE_FROM != ''">
|
|
AND EO_DATE <![CDATA[ >= ]]> #{SEARCH_EO_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_EO_DATE_TO != null and SEARCH_EO_DATE_TO != ''">
|
|
AND EO_DATE <![CDATA[ <= ]]> #{SEARCH_EO_DATE_TO}::TIMESTAMP
|
|
</if> -->
|
|
<if test="SEARCH_DESIGN_DATE_FROM != null and SEARCH_DESIGN_DATE_FROM != ''">
|
|
AND TO_DATE(DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DESIGN_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DESIGN_DATE_TO != null and SEARCH_DESIGN_DATE_TO != ''">
|
|
AND TO_DATE(DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DESIGN_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
<if test="IS_LAST != null and IS_LAST != ''">
|
|
AND IS_LAST = #{IS_LAST}
|
|
</if>
|
|
|
|
<if test="SEARCH_REVISION_RELEASE != null and SEARCH_REVISION_RELEASE != ''">
|
|
AND IS_LAST = #{SEARCH_REVISION_RELEASE}
|
|
</if>
|
|
|
|
<if test="EO != null and EO != ''">
|
|
AND EO_TEMP IS NULL OR EO_TEMP = ''
|
|
</if>
|
|
<!-- <if test="STATUS != null and STATUS != ''">
|
|
AND STATUS = #{STATUS}
|
|
</if> -->
|
|
) T
|
|
WHERE 1=1
|
|
|
|
<!--
|
|
<if test="PAGE_END != null and PAGE_END != ''">
|
|
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
|
|
</if>
|
|
<if test="PAGE_START != null and PAGE_START != ''">
|
|
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
|
|
</if>
|
|
-->
|
|
</select>
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY T.PART_NO, (CASE WHEN T.REVISION LIKE 'RE%' THEN 0 ELSE 1 END, T.REVISION) DESC ) NUM,
|
|
<!--
|
|
DENSE_RANK() OVER(PARTITION BY T.OBJID ORDER BY Q.SEQ) AS PART_SEQ,
|
|
-->
|
|
T.*
|
|
,DECODE(PART_TYPE, '0000063', '1', (SELECT SUM(CASE WHEN QTY = '' THEN '0' ELSE COALESCE(QTY, '0')END ::NUMERIC) FROM BOM_PART_QTY Q WHERE Q.LAST_PART_OBJID = T.OBJID)::CHARACTER ) BOM_QTY
|
|
<!--
|
|
,nvl((SELECT SUM(CASE WHEN QTY = '' THEN '0' ELSE COALESCE(QTY, '0')END ::NUMERIC) FROM BOM_PART_QTY Q WHERE Q.LAST_PART_OBJID = T.OBJID), QTY_P) BOM_QTY
|
|
,COALESCE(
|
|
(SELECT SUM(COALESCE(QTY, '0')::NUMERIC) FROM BOM_PART_QTY Q WHERE Q.LAST_PART_OBJID = T.OBJID)
|
|
,(SELECT SUM(COALESCE(QTY, '0')::NUMERIC) FROM BOM_PART_QTY Q WHERE Q.PART_NO = T.OBJID) ) BOM_QTY
|
|
,(SELECT SUM(I.QTY)
|
|
FROM INVENTORY_MNG I
|
|
, RESOURCE_MNG RM
|
|
WHERE RM.OBJID = I.PARENT_OBJID
|
|
AND I.IS_LAST = 'Y'
|
|
AND RM.PART_OBJID = T.OBJID::varchar
|
|
GROUP BY I.PARENT_OBJID
|
|
) AS INVEN_TOTAL_QTY
|
|
|
|
,Q.OBJID OBJID_QTY
|
|
,Q.CHILD_OBJID
|
|
,Q.QTY
|
|
,Q.QTY_TEMP
|
|
,(CASE WHEN Q.STATUS = 'deploy' THEN Q.QTY
|
|
WHEN (Q.QTY_TEMP IS NULL OR Q.QTY_TEMP = '') THEN Q.QTY
|
|
|
|
WHEN Q.STATUS != 'editing' WHEN
|
|
|
|
ELSE Q.QTY_TEMP END) Q_QTY
|
|
,(SELECT PART_NO||' '||PART_NAME FROM PART_MNG SP WHERE SP.OBJID = Q.PARENT_PART_NO) PARENT_PART_INFO
|
|
|
|
,B.CUSTOMER_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = B.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,B.CONTRACT_OBJID
|
|
,(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = B.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = B.CONTRACT_OBJID) AS PROJECT_NO
|
|
,B.UNIT_CODE
|
|
,(SELECT TASK_NAME FROM PMS_WBS_TASK_STANDARD AS O WHERE O.OBJID = B.UNIT_CODE) AS UNIT_NAME
|
|
-->
|
|
<!-- (SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T.UNIT_CODE) AS UNIT_NAME,
|
|
(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
-->
|
|
FROM <include refid="partMngBaseSimple"/> T
|
|
<!--
|
|
FROM <include refid="partMngBase"/> T
|
|
-->
|
|
|
|
<!--
|
|
LEFT OUTER JOIN BOM_PART_QTY Q
|
|
ON (
|
|
(Q.LAST_PART_OBJID = T.OBJID
|
|
AND Q.STATUS IN ('deploy'))
|
|
OR
|
|
|
|
ON T.OBJID = Q.PART_NO
|
|
|
|
|
|
|
|
(T.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)
|
|
AND Q.STATUS IN ('editing')
|
|
)
|
|
)
|
|
|
|
|
|
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
|
|
<choose>
|
|
<when test="ACTION_TYPE != null and !''.equals(ACTION_TYPE) and 'changeDesign'.equals(ACTION_TYPE)">
|
|
AND Q.STATUS IN ('deploy')
|
|
</when>
|
|
<otherwise>
|
|
AND Q.STATUS IN ('editing','deploy')
|
|
</otherwise>
|
|
</choose>
|
|
LEFT OUTER JOIN PART_BOM_REPORT B
|
|
ON B.OBJID = Q.BOM_REPORT_OBJID
|
|
-->
|
|
WHERE 1=1
|
|
AND T.status='release'
|
|
<if test="product_code != null and product_code != ''">
|
|
AND T.PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND T.UPG_NO = #{upg_no}
|
|
</if>
|
|
<if test="SEARCH_YEAR != null and SEARCH_YEAR != ''">
|
|
AND T.REG_DATE_YEAR_TITLE = #{SEARCH_YEAR}
|
|
</if>
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(T.PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_OBJID != null and SEARCH_PART_OBJID != ''">
|
|
AND T.OBJID = #{SEARCH_PART_OBJID}
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(T.PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(T.MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(T.SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND T.PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<!-- 설계변경 PART조회 -->
|
|
<if test="customer_cd != null and customer_cd != ''">
|
|
AND B.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != ''">
|
|
AND B.CONTRACT_OBJID = #{project_name}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND B.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
|
|
<!-- EO 기능 개발 후 추가 -->
|
|
<!-- <if test="SEARCH_EO != null and SEARCH_EO != ''">
|
|
AND UPPER(EO_NO) LIKE UPPER('%${SEARCH_EO}%')
|
|
</if>
|
|
|
|
<if test="SEARCH_EO_DATE_FROM != null and SEARCH_EO_DATE_FROM != ''">
|
|
AND EO_DATE <![CDATA[ >= ]]> #{SEARCH_EO_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_EO_DATE_TO != null and SEARCH_EO_DATE_TO != ''">
|
|
AND EO_DATE <![CDATA[ <= ]]> #{SEARCH_EO_DATE_TO}::TIMESTAMP
|
|
</if> -->
|
|
<if test="SEARCH_DESIGN_DATE_FROM != null and SEARCH_DESIGN_DATE_FROM != ''">
|
|
AND TO_DATE(T.DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DESIGN_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DESIGN_DATE_TO != null and SEARCH_DESIGN_DATE_TO != ''">
|
|
AND TO_DATE(T.DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DESIGN_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND T.WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
<if test="IS_LAST != null and IS_LAST != ''">
|
|
AND T.IS_LAST = #{IS_LAST}
|
|
</if>
|
|
<if test="EO != null and EO != ''">
|
|
AND T.EO_TEMP IS NULL OR EO_TEMP = ''
|
|
</if>
|
|
<!-- <if test="STATUS != null and STATUS != ''">
|
|
AND STATUS = #{STATUS}
|
|
</if> -->
|
|
</select>
|
|
|
|
|
|
<select id="partMngListByBom" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="partMngBase"/> T
|
|
WHERE 1=1
|
|
<!--
|
|
AND T.status='release'
|
|
-->
|
|
AND OBJID IN (SELECT NVL(LAST_PART_OBJID, PART_NO) FROM BOM_PART_QTY Q
|
|
WHERE BOM_REPORT_OBJID = #{SEARCH_BOM_OBJID}
|
|
<if test="qtyObjId != null and qtyObjId != ''">
|
|
AND Q.CHILD_OBJID = #{qtyObjId}
|
|
</if>
|
|
)
|
|
</select>
|
|
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngChangeGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY T.PART_NO, (CASE WHEN T.REVISION LIKE 'RE%' THEN 0 ELSE 1 END, T.REVISION) DESC ) NUM,
|
|
DENSE_RANK() OVER(PARTITION BY T.OBJID ORDER BY Q.SEQ) AS PART_SEQ,
|
|
T.*
|
|
,(SELECT SUM(I.QTY)
|
|
FROM INVENTORY_MNG I
|
|
, RESOURCE_MNG RM
|
|
WHERE RM.OBJID = I.PARENT_OBJID
|
|
AND I.IS_LAST = 'Y'
|
|
AND RM.PART_OBJID = T.OBJID::varchar
|
|
GROUP BY I.PARENT_OBJID
|
|
) AS INVEN_TOTAL_QTY
|
|
,Q.OBJID OBJID_QTY
|
|
,LAST_PART_OBJID
|
|
,Q.CHILD_OBJID
|
|
,Q.QTY
|
|
,Q.QTY_TEMP
|
|
,Q.STATUS Q_STATUS
|
|
,(CASE WHEN Q.STATUS = 'deploy' THEN Q.QTY
|
|
WHEN (Q.QTY_TEMP IS NULL OR Q.QTY_TEMP = '') THEN Q.QTY
|
|
<!--
|
|
WHEN Q.STATUS != 'editing' WHEN
|
|
-->
|
|
ELSE Q.QTY_TEMP END) Q_QTY
|
|
,(SELECT PART_NO||' '||PART_NAME FROM PART_MNG SP WHERE SP.OBJID = Q.PARENT_PART_NO) PARENT_PART_INFO
|
|
|
|
,B.CUSTOMER_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = B.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,B.CONTRACT_OBJID
|
|
,(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = B.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = B.CONTRACT_OBJID) AS PROJECT_NO
|
|
,B.UNIT_CODE
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = B.UNIT_CODE) AS UNIT_NAME
|
|
<!-- (SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T.UNIT_CODE) AS UNIT_NAME,
|
|
(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
-->
|
|
FROM <include refid="partMngBaseSimple"/> T
|
|
<!--
|
|
FROM <include refid="partMngBase"/> T
|
|
-->
|
|
LEFT OUTER JOIN BOM_PART_QTY Q
|
|
ON (
|
|
(Q.LAST_PART_OBJID = T.OBJID
|
|
AND Q.STATUS IN ('deploy', 'beforeEdit'))
|
|
OR
|
|
<!--
|
|
ON T.OBJID = Q.PART_NO
|
|
-->
|
|
(T.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)
|
|
AND Q.STATUS IN ('editing')
|
|
)
|
|
)
|
|
<!--
|
|
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
-->
|
|
<choose>
|
|
<when test="ACTION_TYPE != null and !''.equals(ACTION_TYPE) and 'changeDesign'.equals(ACTION_TYPE)">
|
|
AND Q.STATUS IN ('deploy', 'beforeEdit')
|
|
</when>
|
|
<otherwise>
|
|
AND Q.STATUS IN ('editing','deploy')
|
|
</otherwise>
|
|
</choose>
|
|
LEFT OUTER JOIN PART_BOM_REPORT B
|
|
ON B.OBJID = Q.BOM_REPORT_OBJID
|
|
WHERE 1=1
|
|
AND T.status='release'
|
|
<if test="product_code != null and product_code != ''">
|
|
AND T.PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND T.UPG_NO = #{upg_no}
|
|
</if>
|
|
<if test="SEARCH_YEAR != null and SEARCH_YEAR != ''">
|
|
AND T.REG_DATE_YEAR_TITLE = #{SEARCH_YEAR}
|
|
</if>
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(T.PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_OBJID != null and SEARCH_PART_OBJID != ''">
|
|
AND T.OBJID = #{SEARCH_PART_OBJID}
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(T.PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(T.MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(T.SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND T.PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<!-- 설계변경 PART조회 -->
|
|
<if test="customer_cd != null and customer_cd != ''">
|
|
AND B.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != ''">
|
|
<!-- 240326 아래 조건으로 변경(동시 프로젝트 같은 파트를 동시에 조회하여 설변하도록)
|
|
AND B.CONTRACT_OBJID = #{project_name}
|
|
-->
|
|
AND EXISTS (SELECT 'E' FROM PROJECT_MGMT SP
|
|
WHERE SP.OBJID = B.CONTRACT_OBJID
|
|
AND EXISTS
|
|
(SELECT 'E' FROM CONTRACT_MGMT SC
|
|
WHERE SC.OBJID = SP.CONTRACT_OBJID
|
|
AND EXISTS
|
|
(SELECT 'E' FROM PROJECT_MGMT SP2
|
|
WHERE SC.OBJID = SP2.CONTRACT_OBJID
|
|
AND SP2.OBJID = #{project_name})
|
|
)
|
|
)
|
|
</if>
|
|
<!--
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND B.UNIT_CODE = #{unit_code}
|
|
</if> 240326 아래 name으로 가져오는것으로 변경
|
|
-->
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND EXISTS (SELECT 'E' FROM PMS_WBS_TASK AS O
|
|
WHERE O.OBJID = B.UNIT_CODE
|
|
AND ( UPPER(O.TASK_NAME) = (SELECT UPPER(TASK_NAME) FROM PMS_WBS_TASK ST WHERE ST.OBJID = #{unit_code})
|
|
OR UPPER(O.UNIT_NO || '-' || O.TASK_NAME) = (SELECT UPPER(TASK_NAME) FROM PMS_WBS_TASK ST WHERE ST.OBJID = #{unit_code}) ) )
|
|
</if>
|
|
|
|
<!-- EO 기능 개발 후 추가 -->
|
|
<!-- <if test="SEARCH_EO != null and SEARCH_EO != ''">
|
|
AND UPPER(EO_NO) LIKE UPPER('%${SEARCH_EO}%')
|
|
</if>
|
|
|
|
<if test="SEARCH_EO_DATE_FROM != null and SEARCH_EO_DATE_FROM != ''">
|
|
AND EO_DATE <![CDATA[ >= ]]> #{SEARCH_EO_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_EO_DATE_TO != null and SEARCH_EO_DATE_TO != ''">
|
|
AND EO_DATE <![CDATA[ <= ]]> #{SEARCH_EO_DATE_TO}::TIMESTAMP
|
|
</if> -->
|
|
<if test="SEARCH_DESIGN_DATE_FROM != null and SEARCH_DESIGN_DATE_FROM != ''">
|
|
AND TO_DATE(T.DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DESIGN_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DESIGN_DATE_TO != null and SEARCH_DESIGN_DATE_TO != ''">
|
|
AND TO_DATE(T.DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DESIGN_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND T.WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
<if test="IS_LAST != null and IS_LAST != ''">
|
|
AND T.IS_LAST = #{IS_LAST}
|
|
</if>
|
|
<if test="EO != null and EO != ''">
|
|
AND T.EO_TEMP IS NULL OR EO_TEMP = ''
|
|
</if>
|
|
<!-- <if test="STATUS != null and STATUS != ''">
|
|
AND STATUS = #{STATUS}
|
|
</if> -->
|
|
</select>
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngTempList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
|
|
FROM(SELECT
|
|
T.*,
|
|
ROW_NUMBER() OVER(ORDER BY EXCEL_UPLOAD_SEQ ASC) RNUM
|
|
FROM(
|
|
SELECT
|
|
T.*,
|
|
CASE
|
|
WHEN T.REVISION IS NULL THEN '0'
|
|
ELSE T.REVISION
|
|
END AS SORT,
|
|
O.PARTNER_TITLE
|
|
FROM
|
|
<include refid="partMngBase"/> T
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PART_OBJID,
|
|
ARRAY_TO_STRING(ARRAY_AGG(PARTNER_TITLE), ',') AS PARTNER_TITLE
|
|
FROM(
|
|
SELECT
|
|
OBJID,
|
|
PART_OBJID,
|
|
SEQ || '. ' ||(
|
|
SELECT
|
|
SUPPLY_NAME
|
|
FROM
|
|
ADMIN_SUPPLY_MNG
|
|
WHERE
|
|
OBJID::VARCHAR = PARTNER_OBJID::VARCHAR
|
|
) AS PARTNER_TITLE
|
|
FROM
|
|
ORDER_SPEC_MNG OSM
|
|
ORDER BY
|
|
SEQ
|
|
) OSMO GROUP BY PART_OBJID
|
|
) O
|
|
ON T.OBJID::VARCHAR = O.PART_OBJID::VARCHAR
|
|
WHERE 1=1
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND UPG_NO = #{upg_no}
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
<!-- <if test="IS_LAST != null and IS_LAST != ''"> -->
|
|
<!-- AND IS_LAST = #{IS_LAST} -->
|
|
<!-- </if> -->
|
|
|
|
<if test="STATUS != null and STATUS != ''">
|
|
AND STATUS = #{STATUS}
|
|
</if>
|
|
) T
|
|
ORDER BY RNUM,PART_NO,SORT ASC
|
|
) T
|
|
WHERE 1=1
|
|
<if test="PAGE_END != null and PAGE_END != ''">
|
|
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
|
|
</if>
|
|
<if test="PAGE_START != null and PAGE_START != ''">
|
|
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
|
|
</if>
|
|
</select>
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngTempGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*,
|
|
CASE
|
|
WHEN T.REVISION IS NULL THEN '0'
|
|
ELSE T.REVISION
|
|
END AS SORT,
|
|
O.PARTNER_TITLE
|
|
,(SELECT PART_NO<!-- ||' '||PART_NAME --> FROM PART_MNG SP WHERE SP.OBJID = Q.PARENT_PART_NO) PARENT_PART_INFO
|
|
,Q.BOM_REPORT_OBJID
|
|
,Q.OBJID OBJID_QTY
|
|
,Q.CHILD_OBJID
|
|
,Q.QTY
|
|
,Q.QTY_TEMP
|
|
,(CASE WHEN Q.STATUS = 'deploy' THEN Q.QTY
|
|
WHEN (Q.QTY_TEMP IS NULL OR Q.QTY_TEMP = '') THEN NVL(Q.QTY, T.QTY)
|
|
<!--
|
|
WHEN Q.STATUS != 'editing' WHEN
|
|
-->
|
|
ELSE NVL(Q.QTY_TEMP, T.QTY) END) Q_QTY
|
|
FROM <include refid="partMngBaseSimple"/> T
|
|
<!--
|
|
FROM <include refid="partMngBase"/> T
|
|
-->
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PART_OBJID,
|
|
ARRAY_TO_STRING(ARRAY_AGG(PARTNER_TITLE), ',') AS PARTNER_TITLE
|
|
FROM(
|
|
SELECT
|
|
OBJID,
|
|
PART_OBJID,
|
|
SEQ || '. ' ||(
|
|
SELECT
|
|
SUPPLY_NAME
|
|
FROM
|
|
ADMIN_SUPPLY_MNG
|
|
WHERE
|
|
OBJID::VARCHAR = PARTNER_OBJID::VARCHAR
|
|
) AS PARTNER_TITLE
|
|
FROM
|
|
ORDER_SPEC_MNG OSM
|
|
ORDER BY
|
|
SEQ
|
|
) OSMO GROUP BY PART_OBJID
|
|
) O
|
|
ON T.OBJID::VARCHAR = O.PART_OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN BOM_PART_QTY Q
|
|
ON (
|
|
<!--
|
|
(Q.LAST_PART_OBJID = T.OBJID
|
|
AND Q.STATUS IN ('deploy'))
|
|
OR
|
|
-->
|
|
<!--
|
|
ON T.OBJID = Q.PART_NO
|
|
-->
|
|
<!--
|
|
-->
|
|
(T.OBJID in ( SELECT DISTINCT PM1.OBJID
|
|
FROM PART_MNG PM1
|
|
,PART_MNG PM2
|
|
<!--
|
|
WHERE PM1.IS_LAST = '1'
|
|
-->
|
|
WHERE PM1.STATUS = 'changing'
|
|
AND PM2.STATUS != 'changing'
|
|
AND PM2.OBJID = Q.PART_NO
|
|
AND PM1.PART_NO = PM2.PART_NO)
|
|
AND Q.STATUS IN ('beforeEdit')
|
|
)
|
|
)
|
|
WHERE 1=1
|
|
<if test="product_code != null and product_code != ''">
|
|
AND T.PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND T.UPG_NO = #{upg_no}
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(T.PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(T.PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(T.MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(T.SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND T.PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<if test="WRITER != null and WRITER != ''">
|
|
AND T.WRITER = #{WRITER}
|
|
</if>
|
|
|
|
<!-- <if test="IS_LAST != null and IS_LAST != ''"> -->
|
|
<!-- AND IS_LAST = #{IS_LAST} -->
|
|
<!-- </if> -->
|
|
|
|
<if test="STATUS != null and STATUS != ''">
|
|
AND T.STATUS = #{STATUS}
|
|
</if>
|
|
<if test="STATUS_ARR != null">
|
|
AND T.STATUS IN <foreach item="item" index="index" collection="STATUS_ARR" open="(" separator="," close=")">#{item}</foreach>
|
|
</if>
|
|
ORDER BY PARENT_PART_INFO, T.PART_NO
|
|
</select>
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngTempListCnt" parameterType="map" resultType="map">
|
|
SELECT
|
|
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
|
|
TOTAL_CNT::integer
|
|
FROM (
|
|
|
|
SELECT
|
|
COUNT(1)::float TOTAL_CNT
|
|
FROM
|
|
<include refid="partMngBase"/> T
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PART_OBJID,
|
|
ARRAY_TO_STRING(ARRAY_AGG(PARTNER_TITLE), ',') AS PARTNER_TITLE
|
|
FROM(
|
|
SELECT
|
|
OBJID,
|
|
PART_OBJID,
|
|
SEQ || '. ' ||(
|
|
SELECT
|
|
SUPPLY_NAME
|
|
FROM
|
|
ADMIN_SUPPLY_MNG
|
|
WHERE
|
|
OBJID::VARCHAR = PARTNER_OBJID::VARCHAR
|
|
) AS PARTNER_TITLE
|
|
FROM
|
|
ORDER_SPEC_MNG OSM
|
|
ORDER BY
|
|
SEQ
|
|
) OSMO GROUP BY PART_OBJID
|
|
) O
|
|
ON T.OBJID::VARCHAR = O.PART_OBJID::VARCHAR
|
|
WHERE 1=1
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND UPG_NO = #{upg_no}
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
<if test="STATUS != null and STATUS != ''">
|
|
AND STATUS = #{STATUS}
|
|
</if>
|
|
) T
|
|
</select>
|
|
|
|
<!-- <select id="partMngListCnt" parameterType="map" resultType="map">
|
|
SELECT
|
|
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
|
|
TOTAL_CNT::integer
|
|
FROM (
|
|
SELECT
|
|
COUNT(1)::float TOTAL_CNT
|
|
FROM(
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="partMngBase"/> T
|
|
WHERE 1=1
|
|
) T
|
|
)A WHERE 1=1
|
|
</select> -->
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="getToConnectPartMngList" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
OBJID,
|
|
PART_NO,
|
|
BOM_REPORT_OBJID,
|
|
PARENT_PART_NO,
|
|
QTY,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.QTY,
|
|
1,
|
|
ARRAY [A.PART_NO],
|
|
FALSE
|
|
FROM
|
|
PART_BOM_QTY A
|
|
WHERE 1=1
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
AND A.BOM_REPORT_OBJID = #{bomReportObjId}::NUMERIC
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
B.OBJID,
|
|
B.PART_NO,
|
|
B.BOM_REPORT_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.QTY,
|
|
LEV + 1,
|
|
PATH,
|
|
B.PARENT_PART_NO = ANY(PATH)
|
|
FROM
|
|
PART_BOM_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_PART_NO = VIEW_BOM.PART_NO
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
)
|
|
SELECT
|
|
T.*,
|
|
ROW_NUMBER() OVER(ORDER BY EXCEL_UPLOAD_SEQ ASC) RNUM
|
|
FROM(
|
|
SELECT
|
|
T.*
|
|
FROM
|
|
<include refid="partMngBase"/> T
|
|
WHERE 1=1
|
|
<!-- AND IS_LAST = '1' -->
|
|
<!-- AND NOT EXISTS
|
|
(
|
|
SELECT
|
|
1
|
|
FROM VIEW_BOM V
|
|
WHERE 1=1
|
|
AND V.PART_NO = T.PART_NO
|
|
) -->
|
|
<!-- EO 기능 말들고 추가 필요 -->
|
|
<if test="search_eo != null and search_eo != ''">
|
|
AND UPPER(EO_NO) LIKE UPPER('%${search_eo}%')
|
|
</if>
|
|
<if test="search_except_eo != null and search_except_eo != ''">
|
|
AND EO != #{search_except_eo}
|
|
AND (EO IS NULL OR EO = '' OR EO = '0')
|
|
</if>
|
|
<if test="search_eo_date_from != null and search_eo_date_from != ''">
|
|
AND EO_DATE <![CDATA[ >= ]]> #{search_eo_date_from}::TIMESTAMP
|
|
</if>
|
|
<if test="search_eo_date_to != null and search_eo_date_to != ''">
|
|
AND EO_DATE <![CDATA[ <= ]]> #{search_eo_date_to}::TIMESTAMP
|
|
</if>
|
|
<if test="search_product_mgmt_objid != null and search_product_mgmt_objid != ''">
|
|
AND PRODUCT_MGMT_OBJID = #{search_product_mgmt_objid}
|
|
</if>
|
|
<if test="search_part_no != null and search_part_no != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${search_part_no}%')
|
|
</if>
|
|
<if test="search_part_name != null and search_part_name != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${search_part_name}%')
|
|
</if>
|
|
<if test="search_spec != null and search_spec != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${search_spec}%')
|
|
</if>
|
|
<if test="search_maker != null and search_maker != ''">
|
|
AND UPPER(MAKER) LIKE UPPER('%${search_maker}%')
|
|
</if>
|
|
<if test="search_writer != null and search_writer != ''">
|
|
AND WRITER = #{search_writer}
|
|
</if>
|
|
<if test="IS_LAST != null and IS_LAST != ''">
|
|
AND IS_LAST = #{IS_LAST}
|
|
</if>
|
|
<if test="STATUS != null and STATUS != ''">
|
|
AND STATUS = #{STATUS}
|
|
</if>
|
|
<if test="searchTargetStatus != null and searchTargetStatus != '' and 'create'.equals(searchTargetStatus)">
|
|
AND STATUS = 'create'
|
|
</if>
|
|
<if test="searchTargetStatus != null and searchTargetStatus != '' and 'deploy'.equals(searchTargetStatus)">
|
|
AND STATUS = 'release'
|
|
</if>
|
|
<if test="searchTargetStatus != null and searchTargetStatus != '' and 'changeDesign'.equals(searchTargetStatus)">
|
|
AND STATUS = 'release'
|
|
</if>
|
|
|
|
<if test="search_product_mgmt_upg != null and !''.equals(search_product_mgmt_upg)">
|
|
AND UPG_NO = #{search_product_mgmt_upg}
|
|
</if>
|
|
|
|
ORDER BY PART_NO
|
|
) T
|
|
</select>
|
|
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="partMngBaseSimple"/> T
|
|
<!--
|
|
FROM <include refid="partMngBase"/> T
|
|
-->
|
|
WHERE 1=1
|
|
AND T.OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<!-- //구조등록 목록조회 -->
|
|
<select id="getBOMStandardStructureList" parameterType="map" resultType="map">
|
|
SELECT * FROM
|
|
|
|
(SELECT
|
|
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS RNUM,
|
|
OBJID,
|
|
CUSTOMER_OBJID,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
|
CONTRACT_OBJID,
|
|
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
|
|
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
|
|
UNIT_CODE,
|
|
<!-- (SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T.UNIT_CODE) AS UNIT_NAME,
|
|
(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
-->
|
|
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
STATUS,
|
|
CASE UPPER(STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
|
|
REGDATE AS REGDATE,
|
|
TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
|
DEPLOY_DATE,
|
|
REVISION,
|
|
<!-- (SELECT MAX(PM.REVISION) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS REVISION, -->
|
|
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
|
|
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
|
|
NOTE,
|
|
(SELECT COUNT(*) FROM BOM_PART_QTY AS A WHERE A.BOM_REPORT_OBJID = T.OBJID) AS BOM_CNT
|
|
FROM PART_BOM_REPORT AS T
|
|
WHERE 1=1
|
|
<if test="customer_cd != null and customer_cd != ''">
|
|
AND T.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != ''">
|
|
AND T.CONTRACT_OBJID = #{project_name}
|
|
</if>
|
|
<if test="project_no != null and project_no != ''">
|
|
AND T.CONTRACT_OBJID = #{project_no}
|
|
</if>
|
|
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND T.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="unit_name_eq != null and unit_name_eq != ''">
|
|
AND EXISTS (SELECT 'E' FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE AND (UPPER(O.TASK_NAME) = UPPER(#{unit_name_eq}) OR UPPER(O.UNIT_NO || '-' || O.TASK_NAME) = UPPER(#{unit_name_eq})) )
|
|
</if>
|
|
|
|
<if test="SEARCH_WRITER != null and !''.equals(SEARCH_WRITER)">
|
|
AND T.WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
<if test="SEARCH_OBJID != null and !''.equals(SEARCH_OBJID)">
|
|
AND T.OBJID = #{SEARCH_OBJID}
|
|
</if>
|
|
|
|
<if test="SEARCH_DEPLOY_DATE_FROM != null and SEARCH_DEPLOY_DATE_FROM != ''">
|
|
AND T.DEPLOY_DATE IS NOT NULL
|
|
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DEPLOY_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DEPLOY_DATE_TO != null and SEARCH_DEPLOY_DATE_TO != ''">
|
|
AND T.DEPLOY_DATE IS NOT NULL
|
|
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DEPLOY_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
|
|
<if test="status != null and !''.equals(status)">
|
|
AND T.STATUS = #{status}
|
|
</if>
|
|
<if test="checkArr != null and !''.equals(checkArr)">
|
|
AND T.OBJID = #{checkArr}
|
|
</if>
|
|
<if test="MULTI_MASTER_OBJID != null and !''.equals(MULTI_MASTER_OBJID)">
|
|
AND ( T.OBJID = #{MULTI_MASTER_OBJID}
|
|
OR T.MULTI_MASTER_OBJID = #{MULTI_MASTER_OBJID})
|
|
</if>
|
|
|
|
|
|
) AS T
|
|
WHERE 1=1
|
|
<if test="PAGE_END != null and PAGE_END != ''">
|
|
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
|
|
</if>
|
|
<if test="PAGE_START != null and PAGE_START != ''">
|
|
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
|
|
</if>
|
|
|
|
</select>
|
|
|
|
<!-- //구조등록 목록조회 -->
|
|
<select id="getBOMStandardStructureGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS NUM,
|
|
OBJID,
|
|
CUSTOMER_OBJID,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
|
CONTRACT_OBJID,
|
|
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
|
|
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
|
|
UNIT_CODE,
|
|
<!-- (SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T.UNIT_CODE) AS UNIT_NAME,
|
|
(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
-->
|
|
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
STATUS,
|
|
CASE UPPER(STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) || '/' || (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) as DEPT_USER_NAME,
|
|
REGDATE AS REGDATE,
|
|
TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
|
DEPLOY_DATE,
|
|
REVISION,
|
|
<!-- (SELECT MAX(PM.REVISION) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS REVISION, -->
|
|
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
|
|
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
|
|
NOTE,
|
|
T.MULTI_YN
|
|
,T.MULTI_MASTER_YN
|
|
,T.MULTI_BREAK_YN
|
|
,T.MULTI_MASTER_OBJID
|
|
,(SELECT COUNT(*) FROM BOM_PART_QTY AS A WHERE A.BOM_REPORT_OBJID = T.OBJID) AS BOM_CNT
|
|
FROM
|
|
PART_BOM_REPORT AS T
|
|
WHERE 1=1
|
|
<if test="customer_cd != null and customer_cd != ''">
|
|
AND T.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != ''">
|
|
AND T.CONTRACT_OBJID = #{project_name}
|
|
</if>
|
|
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND T.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="SEARCH_UNIT_NAME != null and SEARCH_UNIT_NAME != ''">
|
|
AND EXISTS (SELECT 'E' FROM PMS_WBS_TASK W WHERE W.OBJID = T.UNIT_CODE AND ( W.TASK_NAME LIKE UPPER('%'||#{SEARCH_UNIT_NAME}||'%')
|
|
OR W.UNIT_NO LIKE UPPER('%'||#{SEARCH_UNIT_NAME}||'%') ) )
|
|
</if>
|
|
|
|
<if test="SEARCH_WRITER != null and !''.equals(SEARCH_WRITER)">
|
|
AND T.WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
<if test="SEARCH_OBJID != null and !''.equals(SEARCH_OBJID)">
|
|
AND T.OBJID = #{SEARCH_OBJID}
|
|
</if>
|
|
|
|
<if test="SEARCH_DEPLOY_DATE_FROM != null and SEARCH_DEPLOY_DATE_FROM != ''">
|
|
AND T.DEPLOY_DATE IS NOT NULL
|
|
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DEPLOY_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DEPLOY_DATE_TO != null and SEARCH_DEPLOY_DATE_TO != ''">
|
|
AND T.DEPLOY_DATE IS NOT NULL
|
|
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DEPLOY_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
|
|
<if test="status != null and !''.equals(status)">
|
|
AND T.STATUS = #{status}
|
|
</if>
|
|
<if test="checkArr != null and !''.equals(checkArr)">
|
|
AND T.OBJID = #{checkArr}
|
|
</if>
|
|
<if test="SEARCH_UNIT_NAME != null and !''.equals(SEARCH_UNIT_NAME)">
|
|
AND (SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) LIKE '%' || #{SEARCH_UNIT_NAME} || '%'
|
|
</if>
|
|
|
|
</select>
|
|
|
|
<select id="getBOMStandardStructureListCnt" parameterType="map" resultType="map">
|
|
SELECT
|
|
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
|
|
TOTAL_CNT::integer
|
|
FROM (
|
|
SELECT
|
|
COUNT(1)::float TOTAL_CNT
|
|
FROM (
|
|
SELECT
|
|
OBJID,
|
|
CUSTOMER_OBJID,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
|
CONTRACT_OBJID,
|
|
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
|
|
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
|
|
UNIT_CODE,
|
|
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
STATUS,
|
|
CASE UPPER(STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
|
|
REGDATE AS REGDATE,
|
|
TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
|
DEPLOY_DATE,
|
|
(SELECT MAX(PM.REVISION) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS REVISION,
|
|
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
|
|
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
|
|
NOTE,
|
|
(SELECT COUNT(*) FROM BOM_PART_QTY AS A WHERE A.BOM_REPORT_OBJID = T.OBJID) AS BOM_CNT
|
|
FROM PART_BOM_REPORT T
|
|
WHERE 1=1
|
|
) T
|
|
WHERE 1=1
|
|
<if test="customer_cd != null and customer_cd != ''">
|
|
AND T.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != ''">
|
|
AND T.CONTRACT_OBJID = #{project_name}
|
|
</if>
|
|
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND T.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="unit_name_eq != null and unit_name_eq != ''">
|
|
AND EXISTS (SELECT 'E' FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE AND (UPPER(O.TASK_NAME) = UPPER(#{unit_name_eq}) OR UPPER(O.UNIT_NO || '-' || O.TASK_NAME) = UPPER(#{unit_name_eq})) )
|
|
</if>
|
|
|
|
<if test="SEARCH_WRITER != null and !''.equals(SEARCH_WRITER)">
|
|
AND T.WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
<if test="SEARCH_OBJID != null and !''.equals(SEARCH_OBJID)">
|
|
AND T.OBJID = #{SEARCH_OBJID}
|
|
</if>
|
|
|
|
<if test="SEARCH_DEPLOY_DATE_FROM != null and SEARCH_DEPLOY_DATE_FROM != ''">
|
|
AND T.DEPLOY_DATE IS NOT NULL
|
|
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DEPLOY_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DEPLOY_DATE_TO != null and SEARCH_DEPLOY_DATE_TO != ''">
|
|
AND T.DEPLOY_DATE IS NOT NULL
|
|
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DEPLOY_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
|
|
<if test="status != null and !''.equals(status)">
|
|
AND T.STATUS = #{status}
|
|
</if>
|
|
) A
|
|
WHERE 1=1
|
|
</select>
|
|
|
|
|
|
|
|
<!-- rev버젼 추출 -->
|
|
<select id="getBOMStructureRev" parameterType="string" resultType="map">
|
|
SELECT
|
|
case when COUNT(1)<![CDATA[ < ]]> 1 THEN 1
|
|
else count(*)+1
|
|
END::varchar as rev
|
|
FROM PART_BOM_REPORT PBM
|
|
WHERE PBM.PRODUCT_MGMT_OBJID =#{product_code}::numeric
|
|
</select>
|
|
|
|
|
|
|
|
<!-- //bomObjId를 통해 BOM 구조등록 기본정보 조회 -->
|
|
<select id="getBOMStructureStandardInfoByObjId" parameterType="string" resultType="map">
|
|
SELECT
|
|
OBJID,
|
|
CUSTOMER_OBJID,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
|
CONTRACT_OBJID,
|
|
(SELECT CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
|
|
(SELECT PROJECT_NO FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
|
|
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO2,
|
|
UNIT_CODE,
|
|
<!-- (SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T.UNIT_CODE) AS UNIT_NAME, -->
|
|
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
REVISION,
|
|
STATUS,
|
|
CASE UPPER(STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
|
|
REGDATE AS REGDATE,
|
|
TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
|
DEPLOY_DATE,
|
|
EO_NO,
|
|
EO_DATE,
|
|
NOTE
|
|
FROM PART_BOM_REPORT AS T
|
|
WHERE 1=1
|
|
|
|
<if test=" (OBJID == null or ''.equals(OBJID))
|
|
and ( (customer_cd == null or ''.equals(customer_cd))
|
|
or (project_name == null or ''.equals(project_name))
|
|
or (unit_code == null or ''.equals(unit_code)) ) ">
|
|
AND T.OBJID = '!@#$'
|
|
</if>
|
|
|
|
<if test="OBJID != null and OBJID != ''">
|
|
AND T.OBJID = #{OBJID}
|
|
</if>
|
|
<if test="customer_cd != null and customer_cd != ''">
|
|
AND T.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != ''">
|
|
AND T.CONTRACT_OBJID = #{project_name}
|
|
</if>
|
|
<if test="project_no != null and project_no != ''">
|
|
AND T.CONTRACT_OBJID = #{project_no}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND T.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
</select>
|
|
|
|
<select id="getBOMStructureStandardInfoByObjId_old" parameterType="string" resultType="map">
|
|
SELECT
|
|
A.OBJID
|
|
, A.CAR_OBJID
|
|
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
|
|
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
|
|
, A.OEM_OBJID
|
|
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
|
|
, (SELECT OEM_CODE FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_CODE
|
|
, A.PRODUCT_GROUP_OBJID
|
|
,(SELECT O.CODE_NAME FROM COMM_CODE O WHERE 1=1 AND O.CODE_ID = A.PRODUCT_GROUP_OBJID AND O.PARENT_CODE_ID = #{PRODUCT_GROUP_CODE}) AS PRODUCT_GROUP_NAME
|
|
, A.PRODUCT_OBJID
|
|
,(SELECT O.CODE_NAME FROM COMM_CODE O WHERE 1=1 AND O.CODE_ID = A.PRODUCT_OBJID AND O.PARENT_CODE_ID = A.PRODUCT_GROUP_OBJID) AS PRODUCT_NAME
|
|
, A.REGION_OBJID
|
|
, '' AS REGION_NAME
|
|
, A.WRITER
|
|
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS DEPT_NAME
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS USER_NAME
|
|
, REGDATE AS REGDATE_ORG
|
|
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
|
|
FROM PART_BOM_REPORT A
|
|
WHERE 1=1
|
|
AND OBJID = #{OBJID}::numeric
|
|
</select>
|
|
|
|
<!-- //BOM 구조등록 기본정보 등록 -->
|
|
<insert id="createBOMReportStructureStandardInfo" parameterType="map">
|
|
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>
|
|
|
|
<insert id="createBOMReportStructureStandardInfo_old" parameterType="map">
|
|
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()
|
|
)
|
|
</insert>
|
|
|
|
<select id="getBOMTreeList" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
LAST_PART_OBJID,
|
|
QTY,
|
|
QTY_TEMP,
|
|
REGDATE,
|
|
SEQ,
|
|
STATUS,
|
|
PART_MNG_NO,
|
|
PARENT_PART_MNG_NO,
|
|
LEV,
|
|
PATH,
|
|
PATH2,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.LAST_PART_OBJID,
|
|
A.QTY,
|
|
A.QTY_TEMP,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
A.STATUS,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::varchar = A.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::varchar = A.PARENT_PART_NO) AS PARENT_PART_MNG_NO,
|
|
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 A.BOM_REPORT_OBJID = #{bomReportObjId}
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND (A.STATUS NOT IN ('deleting', 'deleted') OR A.STATUS is null)
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.LAST_PART_OBJID,
|
|
B.QTY,
|
|
B.QTY_TEMP,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
B.STATUS,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::varchar = B.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::varchar = B.PARENT_PART_NO) AS PARENT_PART_MNG_NO,
|
|
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
|
|
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND (B.STATUS NOT IN ('deleting', 'deleted') OR B.STATUS IS null)
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND B.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
)
|
|
SELECT
|
|
V.BOM_REPORT_OBJID
|
|
,V.OBJID
|
|
,V.PARENT_OBJID
|
|
,V.CHILD_OBJID
|
|
,V.PARENT_PART_NO
|
|
,V.PART_NO PART_OBJID
|
|
,V.LAST_PART_OBJID BOM_LAST_PART_OBJID
|
|
<!-- ,V.PART_NO PART_NO_QTY -->
|
|
,( SELECT OBJID
|
|
FROM PART_MNG PM1
|
|
WHERE IS_LAST = '1'
|
|
AND PART_NO = (
|
|
( SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO)
|
|
)
|
|
) AS LAST_PART_OBJID
|
|
,V.QTY
|
|
,(CASE WHEN V.STATUS = 'deploy' THEN V.QTY
|
|
WHEN V.STATUS = 'beforeEdit' THEN V.QTY
|
|
WHEN V.STATUS != 'editing' AND (V.QTY_TEMP IS NULL OR V.QTY_TEMP = '') THEN V.QTY
|
|
ELSE COALESCE(V.QTY_TEMP, V.QTY) END) QTY_TEMP
|
|
<!-- 231208 위 설변된 최종part로 연결되게 수정
|
|
,( SELECT PART_NAME
|
|
FROM PART_MNG PM1
|
|
WHERE IS_LAST = '1'
|
|
AND PART_NO = (
|
|
( SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO)
|
|
)
|
|
) AS PART_NAME
|
|
,(SELECT PART_NO FROM PART_MNG WHERE OBJID = V.PART_NO) AS PART_NO
|
|
,(SELECT PART_NAME FROM PART_MNG WHERE OBJID = V.PART_NO) AS PART_NAME
|
|
,( SELECT REVISION
|
|
FROM PART_MNG PM1
|
|
WHERE IS_LAST = '1'
|
|
AND PART_NO = (
|
|
( SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO)
|
|
)
|
|
) AS REVISION
|
|
-->
|
|
,V.LEV AS LEVEL
|
|
,(SELECT COUNT(*) FROM BOM_PART_QTY WHERE PARENT_OBJID = V.CHILD_OBJID) AS SUB_PART_CNT
|
|
,V.SEQ
|
|
,V.STATUS
|
|
,(
|
|
SELECT CONTRACT_OBJID
|
|
FROM PART_MNG PM1
|
|
WHERE IS_LAST = '1'
|
|
AND PART_NO = (
|
|
(
|
|
SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO
|
|
)
|
|
)
|
|
) AS CONTRACT_OBJID
|
|
,P.OBJID LAST_PART_OBJID
|
|
,P.PART_NAME
|
|
,P.PART_NO
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.UNIT) AS UNIT_TITLE
|
|
,P.QTY
|
|
,P.SPEC
|
|
,P.MATERIAL
|
|
,P.WEIGHT
|
|
,(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
|
|
,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
|
|
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('3D_CAD')) AS CU01_CNT
|
|
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) AS CU02_CNT
|
|
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_PDF_CAD')) AS CU03_CNT
|
|
|
|
,V.LEV
|
|
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1 ORDER BY SEQ LIMIT 1) AS ROOT_OBJID
|
|
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1 ORDER BY SEQ LIMIT 1) AS SUB_ROOT_OBJID
|
|
,( SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 0 THEN 0
|
|
ELSE 1
|
|
END LEAF
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND V.PART_MNG_NO = VT.PARENT_PART_MNG_NO
|
|
) AS LEAF
|
|
FROM VIEW_BOM V
|
|
INNER JOIN PART_MNG P
|
|
<!--
|
|
ON P.OBJID = V.PART_NO
|
|
|
|
배포된 마지막 part
|
|
ON P.PART_NO = (
|
|
(
|
|
SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO
|
|
)
|
|
)
|
|
AND P.IS_LAST = '1'
|
|
|
|
아래는 봄에 배포된(설변된) 파트 기준으로 조회(240904)
|
|
ON (V.LAST_PART_OBJID = P.OBJID OR V.PART_NO = P.OBJID)
|
|
-->
|
|
<choose>
|
|
<when test="search_type == null or ''.equals(search_type)">
|
|
ON P.OBJID = NVL(V.LAST_PART_OBJID, V.PART_NO)
|
|
</when>
|
|
<otherwise>
|
|
ON P.OBJID = NVL(V.LAST_PART_OBJID, V.PART_NO)
|
|
<!-- 250212 아래에서 위로 수정(아래는 무조건 최신 part로 연결됨)
|
|
ON P.OBJID = ( SELECT OBJID
|
|
FROM PART_MNG PM1
|
|
WHERE IS_LAST = '1'
|
|
AND PART_NO = (
|
|
( SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO)
|
|
)
|
|
)
|
|
-->
|
|
</otherwise>
|
|
</choose>
|
|
|
|
WHERE 1=1
|
|
<!-- <if test="LEVEL != null and LEVEL != ''">
|
|
AND V.LEV = #{LEVEL}
|
|
</if> -->
|
|
<!-- ORDER BY V.SEQ -->
|
|
ORDER BY V.PATH2
|
|
|
|
</select>
|
|
|
|
<!-- //1레벨에 같은 part no가 있는지 체크 -->
|
|
<select id="getSameTopPartNoCnt" parameterType="map" resultType="map">
|
|
SELECT COUNT(*) AS CNT
|
|
FROM PART_BOM_QTY
|
|
WHERE 1=1
|
|
AND PARENT_PART_NO IS NULL
|
|
AND BOM_REPORT_OBJID = #{objId}::numeric
|
|
AND PART_NO IN <foreach item="item" index="index" collection="rightCheckedArr" open="(" separator="," close=")">#{item}</foreach>
|
|
</select>
|
|
|
|
<delete id="deletePartRelateInfo" parameterType="map">
|
|
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
|
|
)
|
|
|
|
<!-- 이상한 쿼리 -->
|
|
<!-- DELETE FROM PART_BOM_QTY
|
|
WHERE 1=1
|
|
AND BOM_REPORT_OBJID = #{objId}
|
|
<choose>
|
|
<when test="leftParentPartNo == null or ''.equals(leftParentPartNo)">
|
|
AND PARENT_PART_NO IS NULL
|
|
</when>
|
|
<otherwise>
|
|
AND PARENT_PART_NO = #{leftParentPartNo}
|
|
</otherwise>
|
|
</choose>
|
|
AND OBJID IN (
|
|
SELECT OBJID
|
|
FROM PART_BOM_QTY
|
|
WHERE 1=1
|
|
START WITH PART_NO = #{leftPartNo}
|
|
CONNECT BY PRIOR PART_NO = PARENT_PART_NO
|
|
) -->
|
|
</delete>
|
|
|
|
<delete id="deleteStatusPartRelateInfo" parameterType="map">
|
|
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
|
|
)
|
|
</delete>
|
|
|
|
<delete id="deletePartRelateInfoHis" parameterType="map">
|
|
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'
|
|
)
|
|
</delete>
|
|
|
|
|
|
|
|
<insert id="InsertPartTemp" parameterType="map">
|
|
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>
|
|
|
|
|
|
<select id="getPartTempList" parameterType="map" resultType="map">
|
|
SELECT T.*
|
|
FROM (
|
|
|
|
SELECT DISTINCT ON(T.real_part_no) T.real_part_no
|
|
,
|
|
T.part_no,
|
|
T.part_name,
|
|
T.revision,
|
|
T.unit,
|
|
T.qty,
|
|
T.spec,
|
|
T.material,
|
|
T.sub_material,
|
|
t.parent_part_no,
|
|
T.weight,
|
|
T.part_type,
|
|
T.remark,
|
|
T.seq,
|
|
(SELECT COUNT(1) FROM part_mng AS PM WHERE PM.part_no = T.real_part_no AND PM.revision = COALESCE(T.revision, '')) AS CNT
|
|
FROM (SELECT DISTINCT
|
|
T.PART_NO,
|
|
T.PART_NAME,
|
|
CASE WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R1'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R2'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R3'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R4'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R5'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R6'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R7'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R8'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R9'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R01'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R02'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R03'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R04'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R05'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R06'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R07'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R08'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R09'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R10'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R11'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R12'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R13'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R14'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R15'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R16'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R17'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R18'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R19'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R20'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R21'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R22'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R23'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R24'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R25'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
ELSE T.part_no
|
|
END AS real_part_no,
|
|
CASE WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R1'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R2'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R3'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R4'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R5'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R6'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R7'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R8'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R9'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R01'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R02'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R03'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R04'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R05'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R06'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R07'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R08'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R09'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R10'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R11'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R12'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R13'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R14'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R15'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R16'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R17'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R18'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R19'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R20'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R21'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R22'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R23'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R24'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R25'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
ELSE NULL
|
|
END AS revision,
|
|
T.UNIT,
|
|
T.QTY,
|
|
T.SPEC,
|
|
T.MATERIAL,
|
|
T.SUB_MATERIAL,
|
|
T.PARENT_PART_NO,
|
|
T.WEIGHT,
|
|
T.PART_TYPE,
|
|
T.REMARK,
|
|
T.SEQ::numeric
|
|
FROM part_mng_temp AS T
|
|
WHERE PART_REPORT_OBJID = #{targetObjId}::integer) AS T
|
|
) AS T
|
|
ORDER BY SEQ ASC
|
|
</select>
|
|
|
|
|
|
<select id="getPartBomTempList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.PARENT_PART_NO,
|
|
T.PART_NO,
|
|
T.QTY,
|
|
T.SEQ::numeric
|
|
FROM BOM_PART_QTY_TEMP AS T
|
|
WHERE T.BOM_REPORT_OBJID = #{targetObjId}
|
|
ORDER BY T.SEQ ASC
|
|
</select>
|
|
|
|
|
|
<!-- //BOM 구조등록 -->
|
|
<insert id="relatePartTempInfo" parameterType="map">
|
|
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>
|
|
|
|
|
|
<!-- //BOM 구조등록 -->
|
|
<insert id="relatePartInfo" parameterType="map">
|
|
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
|
|
<if test="DEPLOY_USER_ID != null and !''.equals(DEPLOY_USER_ID)">
|
|
,DEPLOY_USER_ID
|
|
</if>
|
|
<if test="DEPLOY_DATE != null and !''.equals(DEPLOY_DATE)">
|
|
,DEPLOY_DATE
|
|
</if>
|
|
) VALUES
|
|
(
|
|
#{BOM_REPORT_OBJID},
|
|
#{OBJID},
|
|
#{PARENT_OBJID},
|
|
#{CHILD_OBJID},
|
|
#{PARENT_PART_NO},
|
|
#{PART_NO},
|
|
<!-- (SELECT PART_NO FROM BOM_PART_QTY WHERE 1=1 AND CHILD_OBJID = #{PARENT_OBJID} AND BOM_REPORT_OBJID = #{BOM_REPORT_OBJID}),
|
|
#{PART_OBJID}, -->
|
|
#{QTY},
|
|
#{QTY_TEMP},
|
|
NOW(),
|
|
#{WRITER},
|
|
nextval('seq_bom_qty'),
|
|
#{STATUS},
|
|
#{LAST_PART_OBJID}
|
|
<if test="DEPLOY_USER_ID != null and !''.equals(DEPLOY_USER_ID)">
|
|
,#{DEPLOY_USER_ID}
|
|
</if>
|
|
<if test="DEPLOY_DATE != null and !''.equals(DEPLOY_DATE)">
|
|
,NOW()
|
|
</if>
|
|
)
|
|
</insert>
|
|
|
|
|
|
<!-- //BOM 엑셀구조등록 -->
|
|
<insert id="relateexcelPartInfo" parameterType="map">
|
|
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}
|
|
)
|
|
</insert>
|
|
|
|
<update id="structureQtySave" parameterType="map">
|
|
UPDATE BOM_PART_QTY
|
|
SET
|
|
<!--
|
|
QTY = #{QTY}::numeric
|
|
,STATUS = 'editing'
|
|
,STATUS = 'beforeEdit'
|
|
-->
|
|
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}
|
|
<!--
|
|
AND STATUS != 'adding'
|
|
AND QTY != #{QTY_TEMP}
|
|
-->
|
|
</update>
|
|
|
|
<update id="structureQtySaveHis" parameterType="map">
|
|
UPDATE PART_MNG_HISTORY
|
|
SET
|
|
<!--
|
|
QTY = #{QTY}::numeric
|
|
,STATUS = 'editing'
|
|
,STATUS = 'beforeEdit'
|
|
-->
|
|
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}
|
|
<!--
|
|
AND STATUS != 'adding'
|
|
AND QTY != #{QTY_TEMP}
|
|
-->
|
|
</update>
|
|
|
|
<update id="structureQtySave_org" parameterType="map">
|
|
UPDATE PART_BOM_QTY SET QTY = #{qty}::numeric WHERE PART_NO = #{partNo}
|
|
<choose>
|
|
<when test="parentPartNo != null and !''.equals(parentPartNo)">
|
|
AND PARENT_PART_NO = #{parentPartNo}
|
|
</when>
|
|
<otherwise>
|
|
AND (PARENT_PART_NO IS NULL OR PARENT_PART_NO = '')
|
|
AND BOM_REPORT_OBJID = #{bomReportObjId}::numeric
|
|
</otherwise>
|
|
</choose>
|
|
</update>
|
|
|
|
<update id="partMngDeploy" parameterType="map">
|
|
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),
|
|
<!-- 231215
|
|
-->
|
|
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
|
|
<!-- EO_NO = (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.PART_NO != P.PART_NO 231211 같은 part일때 중복 채번 제거
|
|
AND SP.REVISION != P.REVISION
|
|
)||'', 4,'0')) -->
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 동일 Part IS_LAST 초기화 -->
|
|
<update id="partMngIsLastInit" parameterType="map">
|
|
UPDATE PART_MNG
|
|
SET
|
|
IS_LAST = '0',
|
|
EDIT_DATE = NOW()
|
|
WHERE PART_NO = (
|
|
SELECT
|
|
PART_NO
|
|
FROM PART_MNG
|
|
WHERE OBJID = #{OBJID}
|
|
)
|
|
</update>
|
|
|
|
<!-- Part 이력등록 -->
|
|
<update id="insertPartMngHistory" parameterType="map">
|
|
INSERT INTO PART_MNG_HISTORY
|
|
(
|
|
SELECT
|
|
P.OBJID::numeric,
|
|
P.PRODUCT_MGMT_OBJID,
|
|
P.UPG_NO,
|
|
P.PART_NO,
|
|
P.PART_NAME,
|
|
P.UNIT,
|
|
<!--
|
|
P.QTY,
|
|
(CASE WHEN (Q.QTY_TEMP IS NULL OR Q.QTY_TEMP = '') THEN P.QTY ELSE Q.QTY_TEMP END),
|
|
-->
|
|
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,
|
|
<!--
|
|
P.PARENT_PART_NO,
|
|
#{PARENT_PART_NO},
|
|
'',
|
|
-->
|
|
(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
|
|
<!--
|
|
,PART_MNG PM1
|
|
-->
|
|
WHERE PM2.OBJID = Q.PART_NO
|
|
<!--
|
|
AND PM1.IS_LAST = '1'
|
|
AND PM1.PART_NO = PM2.PART_NO
|
|
-->
|
|
)
|
|
<choose>
|
|
<when test="HIS_STATUS != null and !''.equals(HIS_STATUS) and 'DEPLOY'.equals(HIS_STATUS)">
|
|
<!-- 설변대상 PART에서 온 건 -->
|
|
AND Q.STATUS = 'beforeEdit'
|
|
<!--
|
|
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
-->
|
|
</when>
|
|
<when test="HIS_STATUS != null and !''.equals(HIS_STATUS) and 'DEL'.equals(HIS_STATUS)">
|
|
</when>
|
|
<when test="HIS_STATUS != null and !''.equals(HIS_STATUS) and 'ADD'.equals(HIS_STATUS)">
|
|
</when>
|
|
<otherwise>
|
|
</otherwise>
|
|
</choose>
|
|
|
|
WHERE P.OBJID = #{OBJID}
|
|
)
|
|
</update>
|
|
|
|
<!-- Part삭제시 이력등록 -->
|
|
<insert id="insertPartMngHistoryWhenDelPartRelation" parameterType="map">
|
|
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,
|
|
<!--
|
|
P.QTY,
|
|
(CASE WHEN (Q.QTY_TEMP IS NULL OR Q.QTY_TEMP = '') THEN P.QTY ELSE Q.QTY_TEMP END),
|
|
-->
|
|
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,
|
|
<!--
|
|
P.PARENT_PART_NO,
|
|
#{PARENT_PART_NO},
|
|
-->
|
|
(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
|
|
)
|
|
)
|
|
</insert>
|
|
|
|
|
|
<!-- Part 삭제 -->
|
|
<delete id="partMngDelete" parameterType="map">
|
|
<!-- DELETE FROM PART_MNG WHERE OBJID = #{OBJID}::numeric -->
|
|
DELETE FROM PART_MNG
|
|
WHERE 1=1
|
|
<![CDATA[ AND POSITION(OBJID||',' in #{checkArr}||',') > 0 ]]>
|
|
</delete>
|
|
<delete id="partMngDelete2" parameterType="map">
|
|
DELETE FROM PART_MNG
|
|
WHERE OBJID = #{OBJID}
|
|
</delete>
|
|
<!-- 설계변경중인 파트 삭제시 구조정보 상태 원복 -->
|
|
<update id="rollbackBomPartQtyStatus" parameterType="map">
|
|
UPDATE BOM_PART_QTY
|
|
SET STATUS = 'deploy'
|
|
,EDIT_DATE = NOW()
|
|
,EDITER = #{WRITER}
|
|
WHERE CHILD_OBJID = #{CHILD_OBJID}
|
|
AND STATUS = 'beforeEdit'
|
|
</update>
|
|
|
|
<select id="selectBomPartQtyChanging" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
select * from BOM_PART_QTY
|
|
WHERE 1=1
|
|
AND CHILD_OBJID = #{CHILD_OBJID}
|
|
AND STATUS = 'beforeEdit'
|
|
</select>
|
|
|
|
|
|
<!-- //정전개 조회 쿼리 -->
|
|
<select id="selectStructureAscendingMultiList수정전" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
OBJID,
|
|
PART_NO,
|
|
BOM_REPORT_OBJID,
|
|
PARENT_PART_NO,
|
|
LEV,
|
|
PATH,
|
|
PART_ARRAY,
|
|
CYCLE,
|
|
QTY,
|
|
REVISION,
|
|
MATERIAL,
|
|
WEIGHT,
|
|
SPEC,
|
|
UNIT_TITLE,
|
|
REMARK,
|
|
PART_OBJID
|
|
) AS (
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
1,
|
|
ARRAY[A.PART_NO::TEXT],
|
|
ARRAY[A.PART_NO] AS PART_ARRAY,
|
|
FALSE AS CYCLE,
|
|
A.QTY,
|
|
B.REVISION,
|
|
B.MATERIAL,
|
|
B.WEIGHT,
|
|
B.SPEC,
|
|
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = B.UNIT) UNIT_TITLE,
|
|
B.REMARK,
|
|
B.OBJID AS PART_OBJID
|
|
FROM
|
|
PART_BOM_QTY A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.PRODUCT_MGMT_UPG IN(
|
|
SELECT OBJID FROM PRODUCT_MGMT_UPG_DETAIL AS O
|
|
WHERE O.TARGET_OBJID IN(
|
|
SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND O.UPG_NAME = (SELECT T.CODE_NAME FROM COMM_CODE T
|
|
WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
LEV + 1,
|
|
PATH||A.PART_NO::TEXT,
|
|
D.PART_ARRAY,
|
|
A.PART_NO = ANY(PART_ARRAY) AS CYCLE,
|
|
A.QTY,
|
|
B.REVISION,
|
|
B.MATERIAL,
|
|
B.WEIGHT,
|
|
B.SPEC,
|
|
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = B.UNIT) UNIT_TITLE,
|
|
B.REMARK,
|
|
B.OBJID AS PART_OBJID
|
|
FROM
|
|
PART_BOM_QTY A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
AND A.PARENT_PART_NO = D.PART_NO
|
|
AND D.BOM_REPORT_OBJID = A.BOM_REPORT_OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN(
|
|
SELECT OBJID FROM PRODUCT_MGMT_UPG_DETAIL AS O
|
|
WHERE O.TARGET_OBJID IN(
|
|
SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND O.UPG_NAME = (SELECT T.CODE_NAME FROM COMM_CODE T
|
|
WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
)
|
|
SELECT
|
|
V.LEV AS LEVEL
|
|
,V.LEV
|
|
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1) AS SUB_ROOT_OBJID
|
|
,V.PART_NO LPAD_PART_NO
|
|
,(
|
|
SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 0 THEN 0
|
|
ELSE 1
|
|
END LEAF
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND V.PART_NO = VT.PARENT_PART_NO
|
|
) AS LEAF
|
|
,V.OBJID
|
|
,V.PART_NO
|
|
,(SELECT PART_NAME FROM PART_MNG WHERE PART_NO = V.PART_NO) AS PART_NAME
|
|
,V.PARENT_PART_NO
|
|
,(SELECT COUNT(*) FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND V.PARENT_PART_NO = VT.PART_NO) AS SUB_PART_CNT
|
|
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1) AS ROOT_OBJID
|
|
,V.QTY
|
|
,V.REVISION
|
|
,V.MATERIAL
|
|
,V.WEIGHT
|
|
,V.SPEC
|
|
,V.UNIT_TITLE
|
|
,V.REMARK
|
|
,V.PART_OBJID
|
|
FROM VIEW_BOM V
|
|
WHERE 1=1
|
|
ORDER BY
|
|
BOM_REPORT_OBJID,
|
|
PATH
|
|
</select>
|
|
<select id="selectStructureAscendingMultiList" parameterType="map" resultType="map">
|
|
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
UNIT_TITLE,
|
|
PART_OBJID,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
PRODUCT_MGMT_UPG,
|
|
REMARK,
|
|
EO_NO,
|
|
EO_DATE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.PART_NO::TEXT],
|
|
FALSE,
|
|
C.PRODUCT_MGMT_UPG,
|
|
B.REMARK,
|
|
(SELECT EO_NO FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO) AS EO_NO,
|
|
(SELECT TO_CHAR(REG_DATE,'YYYY-MM-DD') FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO) AS EO_DATE
|
|
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
(
|
|
SELECT
|
|
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.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_OPTION,
|
|
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,
|
|
P.EDIT_DATE,
|
|
P.WRITER,
|
|
P.IS_LAST,
|
|
P.EO,
|
|
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
|
|
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
|
|
) B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO::numeric = B.OBJID::numeric
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
AND C.PRODUCT_MGMT_UPG IN(SELECT (SELECT model_CODE FROM product_mgmt_model O1 WHERE
|
|
O1.product_category = (SELECT o.product_category from product_mgmt AS o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt AS o WHERE o.objid = PMUD.product_objid))||PMUD.UPG_CODE||'-'|| PMUD.VC FROM PRODUCT_MGMT_UPG_DETAIL AS PMUD
|
|
WHERE PMUD.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND PMUD.upg_name = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
A.SEQ,
|
|
LEV + 1,
|
|
PATH||A.PART_NO::TEXT,
|
|
A.PARENT_PART_NO = ANY(PATH),
|
|
C.PRODUCT_MGMT_UPG,
|
|
B.REMARK,
|
|
(SELECT EO_NO FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO) AS EO_NO,
|
|
(SELECT TO_CHAR(REG_DATE,'YYYY-MM-DD') FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO) AS EO_DATE
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
|
|
) A,
|
|
(
|
|
SELECT
|
|
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.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_OPTION,
|
|
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,
|
|
P.EDIT_DATE,
|
|
P.WRITER,
|
|
P.IS_LAST,
|
|
P.EO,
|
|
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
|
|
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
|
|
) B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO::numeric = B.OBJID::numeric
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN(SELECT (SELECT model_CODE FROM product_mgmt_model O1 WHERE
|
|
O1.product_category = (SELECT o.product_category from product_mgmt AS o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt AS o WHERE o.objid = PMUD.product_objid))||PMUD.UPG_CODE||'-'|| PMUD.VC FROM PRODUCT_MGMT_UPG_DETAIL AS PMUD
|
|
WHERE PMUD.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND PMUD.upg_name = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
|
|
)
|
|
SELECT MIN(PATH ) PATH,
|
|
MIN(V.LEV ) LEV ,
|
|
MIN(V.PART_NO_TITLE) PART_NO ,
|
|
MIN(V.PART_NAME) AS PART_NAME ,
|
|
MIN(V.REV) AS REVISION,
|
|
MIN(V.MATERIAL ) AS MATERIAL ,
|
|
MIN(V.WEIGHT ) AS WEIGHT ,
|
|
MIN(V.SPEC ) AS SPEC ,
|
|
MIN(V.UNIT_TITLE ) AS UNIT_TITLE ,
|
|
MIN(V.REMARK ) AS REMARK ,
|
|
MIN(V.PART_OBJID ) AS PART_OBJID,
|
|
MIN(V.SEQ) AS SEQ,
|
|
MIN(V.EO_NO) AS EO_NO,
|
|
MIN(V.EO_DATE) AS EO_DATE
|
|
FROM VIEW_BOM V
|
|
WHERE 1=1
|
|
GROUP BY PATH, LEV, PART_NO, UNIT_TITLE, REV, MATERIAL, SPEC, WEIGHT, REMARK, PART_OBJID,SEQ
|
|
ORDER BY SEQ
|
|
|
|
<!-- WITH RECURSIVE VIEW_BOM(
|
|
OBJID,
|
|
PART_NO,
|
|
BOM_REPORT_OBJID,
|
|
PARENT_PART_NO,
|
|
LEV,
|
|
PATH,
|
|
PART_ARRAY,
|
|
CYCLE,
|
|
QTY,
|
|
REVISION,
|
|
MATERIAL,
|
|
WEIGHT,
|
|
SPEC,
|
|
UNIT_TITLE,
|
|
REMARK,
|
|
PART_OBJID
|
|
) AS (
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
1,
|
|
ARRAY[A.PART_NO::TEXT],
|
|
ARRAY[A.PART_NO] AS PART_ARRAY,
|
|
FALSE AS CYCLE,
|
|
A.QTY,
|
|
B.REVISION,
|
|
B.MATERIAL,
|
|
B.WEIGHT,
|
|
B.SPEC,
|
|
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = B.UNIT) UNIT_TITLE,
|
|
B.REMARK,
|
|
B.OBJID AS PART_OBJID
|
|
FROM
|
|
PART_BOM_QTY A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
AND B.IS_LAST = '1'
|
|
AND C.PRODUCT_MGMT_UPG IN(
|
|
SELECT UPG_CODE ||'-'|| (SELECT PRODUCT_CODE FROM PRODUCT_MGMT PM WHERE PM.OBJID = O.PRODUCT_OBJID) ||'-'|| VC FROM PRODUCT_MGMT_UPG_DETAIL AS O
|
|
WHERE O.TARGET_OBJID IN(
|
|
SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND O.UPG_NAME = (SELECT T.CODE_NAME FROM COMM_CODE T
|
|
WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
LEV + 1,
|
|
PATH||A.PART_NO::TEXT,
|
|
D.PART_ARRAY,
|
|
A.PART_NO = ANY(PART_ARRAY) AS CYCLE,
|
|
A.QTY,
|
|
B.REVISION,
|
|
B.MATERIAL,
|
|
B.WEIGHT,
|
|
B.SPEC,
|
|
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = B.UNIT) UNIT_TITLE,
|
|
B.REMARK,
|
|
B.OBJID AS PART_OBJID
|
|
FROM
|
|
PART_BOM_QTY A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
AND B.IS_LAST = '1'
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
AND A.PARENT_PART_NO = D.PART_NO
|
|
AND D.BOM_REPORT_OBJID = A.BOM_REPORT_OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN(
|
|
SELECT UPG_CODE ||'-'|| (SELECT PRODUCT_CODE FROM PRODUCT_MGMT PM WHERE PM.OBJID = O.PRODUCT_OBJID) ||'-'|| VC FROM PRODUCT_MGMT_UPG_DETAIL AS O
|
|
WHERE O.TARGET_OBJID IN(
|
|
SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND O.UPG_NAME = (SELECT T.CODE_NAME FROM COMM_CODE T
|
|
WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
)
|
|
SELECT MIN(PATH ) PATH,
|
|
MIN(V.LEV ) LEV ,
|
|
MIN(V.PART_NO) PART_NO ,
|
|
MIN((SELECT PART_NAME
|
|
FROM PART_MNG
|
|
WHERE PART_NO = V.PART_NO
|
|
AND IS_LAST = 1::TEXT
|
|
)) AS PART_NAME ,
|
|
MIN(V.REVISION::NUMERIC) AS REVISION,
|
|
MIN(V.MATERIAL ) AS MATERIAL ,
|
|
MIN(V.WEIGHT ) AS WEIGHT ,
|
|
MIN(V.SPEC ) AS SPEC ,
|
|
MIN(V.UNIT_TITLE ) AS UNIT_TITLE ,
|
|
MIN(V.REMARK ) AS REMARK ,
|
|
MIN(V.PART_OBJID ) AS PART_OBJID
|
|
FROM VIEW_BOM V
|
|
WHERE 1=1
|
|
GROUP BY PATH, LEV, PART_NO, UNIT_TITLE, REVISION, MATERIAL, SPEC, WEIGHT, REMARK, PART_OBJID
|
|
ORDER BY PATH -->
|
|
</select>
|
|
<select id="selectStructureAscendingMultiListVC" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
UNIT_TITLE,
|
|
PART_OBJID,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
PRODUCT_MGMT_UPG
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE,
|
|
C.PRODUCT_MGMT_UPG
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
(
|
|
SELECT
|
|
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.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_OPTION,
|
|
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,
|
|
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
|
|
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
|
|
) B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
AND C.PRODUCT_MGMT_UPG IN(SELECT (SELECT model_CODE FROM product_mgmt_model O1 WHERE
|
|
O1.product_category = (SELECT o.product_category from product_mgmt AS o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt AS o WHERE o.objid = PMUD.product_objid))||PMUD.UPG_CODE||'-'|| PMUD.VC FROM PRODUCT_MGMT_UPG_DETAIL AS PMUD
|
|
WHERE PMUD.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND PMUD.upg_name = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
A.SEQ,
|
|
LEV + 1,
|
|
PATH||A.CHILD_OBJID::TEXT,
|
|
A.PARENT_OBJID = ANY(PATH),
|
|
C.PRODUCT_MGMT_UPG
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
|
|
) A,
|
|
(
|
|
SELECT
|
|
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.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_OPTION,
|
|
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,
|
|
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
|
|
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
|
|
) B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN(SELECT (SELECT model_CODE FROM product_mgmt_model O1 WHERE
|
|
O1.product_category = (SELECT o.product_category from product_mgmt AS o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt AS o WHERE o.objid = PMUD.product_objid))||PMUD.UPG_CODE||'-'|| PMUD.VC FROM PRODUCT_MGMT_UPG_DETAIL AS PMUD
|
|
WHERE PMUD.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND PMUD.upg_name = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
|
|
)
|
|
SELECT DISTINCT
|
|
SPLIT_PART(V.PRODUCT_MGMT_UPG, '-', 2) AS VC
|
|
FROM VIEW_BOM V
|
|
ORDER BY 1
|
|
|
|
<!-- WITH RECURSIVE VIEW_BOM
|
|
(
|
|
OBJID,
|
|
PART_NO,
|
|
BOM_REPORT_OBJID,
|
|
PATH,
|
|
PART_ARRAY,
|
|
CYCLE,
|
|
QTY,
|
|
PRODUCT_MGMT_UPG
|
|
) AS
|
|
( SELECT A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
ARRAY[A.PART_NO::TEXT],
|
|
ARRAY[A.PART_NO] AS PART_ARRAY,
|
|
FALSE AS CYCLE,
|
|
A.QTY,
|
|
C.PRODUCT_MGMT_UPG
|
|
FROM part_bom_qty A,
|
|
part_mng B,
|
|
part_bom_report C
|
|
WHERE 1=1
|
|
AND A.PART_NO = B.PART_NO
|
|
AND B.IS_LAST = '1'
|
|
AND A.BOM_REPORT_OBJID = C.OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN
|
|
(SELECT UPG_CODE ||'-'|| (SELECT PRODUCT_CODE FROM PRODUCT_MGMT PM WHERE PM.OBJID = O.PRODUCT_OBJID) ||'-'|| VC FROM PRODUCT_MGMT_UPG_DETAIL AS O
|
|
WHERE O.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC )
|
|
AND O.UPG_NAME = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
AND ( A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '' )
|
|
UNION ALL
|
|
SELECT A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
PATH||A.PART_NO::TEXT,
|
|
D.PART_ARRAY,
|
|
A.PART_NO = ANY(PART_ARRAY) AS CYCLE,
|
|
A.QTY,
|
|
C.PRODUCT_MGMT_UPG
|
|
FROM part_bom_qty A,
|
|
part_mng B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
AND A.PART_NO = B.PART_NO
|
|
AND B.IS_LAST = '1'
|
|
AND A.BOM_REPORT_OBJID = C.OBJID
|
|
AND A.PARENT_PART_NO = D.PART_NO
|
|
AND A.BOM_REPORT_OBJID = D.BOM_REPORT_OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN
|
|
(SELECT UPG_CODE ||'-'|| (SELECT PRODUCT_CODE FROM PRODUCT_MGMT PM WHERE PM.OBJID = O.PRODUCT_OBJID) ||'-'|| VC FROM PRODUCT_MGMT_UPG_DETAIL AS O
|
|
WHERE O.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC )
|
|
AND O.UPG_NAME = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
)
|
|
SELECT DISTINCT
|
|
SPLIT_PART(V.PRODUCT_MGMT_UPG, '-', 3) AS VC
|
|
FROM VIEW_BOM V
|
|
ORDER BY 1 -->
|
|
</select>
|
|
<select id="selectStructureAscendingMultiListVCqty" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
UNIT_TITLE,
|
|
PART_OBJID,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
PRODUCT_MGMT_UPG,
|
|
REMARK
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
A.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.PART_NO::TEXT],
|
|
FALSE,
|
|
C.PRODUCT_MGMT_UPG,
|
|
B.REMARK
|
|
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
(
|
|
SELECT
|
|
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.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_OPTION,
|
|
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,
|
|
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
|
|
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
|
|
) B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
AND C.PRODUCT_MGMT_UPG IN(SELECT (SELECT model_CODE FROM product_mgmt_model O1 WHERE
|
|
O1.product_category = (SELECT o.product_category from product_mgmt AS o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt AS o WHERE o.objid = PMUD.product_objid))||PMUD.UPG_CODE||'-'|| PMUD.VC FROM PRODUCT_MGMT_UPG_DETAIL AS PMUD
|
|
WHERE PMUD.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND PMUD.upg_name = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
A.QTY,
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
A.SEQ,
|
|
LEV + 1,
|
|
PATH||A.PART_NO::TEXT,
|
|
A.PARENT_PART_NO = ANY(PATH),
|
|
C.PRODUCT_MGMT_UPG,
|
|
B.REMARK
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
|
|
) A,
|
|
(
|
|
SELECT
|
|
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.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_OPTION,
|
|
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,
|
|
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
|
|
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
|
|
) B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
AND C.PRODUCT_MGMT_UPG IN(SELECT (SELECT model_CODE FROM product_mgmt_model O1 WHERE
|
|
O1.product_category = (SELECT o.product_category from product_mgmt AS o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt AS o WHERE o.objid = PMUD.product_objid))||PMUD.UPG_CODE||'-'|| PMUD.VC FROM PRODUCT_MGMT_UPG_DETAIL AS PMUD
|
|
WHERE PMUD.TARGET_OBJID IN
|
|
(SELECT T.OBJID FROM PRODUCT_MGMT_UPG_MASTER AS T
|
|
WHERE T.TARGET_OBJID=#{root_code}::NUMERIC)
|
|
AND PMUD.upg_name = (SELECT T.CODE_NAME FROM COMM_CODE T WHERE T.CODE_ID=#{code_id})
|
|
)
|
|
|
|
)
|
|
SELECT PATH, QTY,
|
|
SPLIT_PART(V.PRODUCT_MGMT_UPG, '-', 2) AS VC
|
|
FROM VIEW_BOM V
|
|
ORDER BY 1
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- //정전개 조회 쿼리 -->
|
|
<select id="selectStructureAscendingList_old" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
REMARK,
|
|
MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
UNIT_TITLE,
|
|
PART_OBJID,
|
|
EO_NO,
|
|
EO_DATE,
|
|
THICKNESS,
|
|
WIDTH,
|
|
HEIGHT,
|
|
OUT_DIAMETER,
|
|
IN_DIAMETER,
|
|
LENGTH,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
MAKER
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.REMARK,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
(SELECT EO_NO FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO::varchar) AS EO_NO,
|
|
(SELECT TO_CHAR(REG_DATE,'YYYY-MM-DD') FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO::varchar) AS EO_DATE,
|
|
THICKNESS,
|
|
WIDTH,
|
|
HEIGHT,
|
|
OUT_DIAMETER,
|
|
IN_DIAMETER,
|
|
LENGTH,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE,
|
|
B.MAKER
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::varchar = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::varchar = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
<include refid="partMngBase"/> B,
|
|
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID::VARCHAR = A.BOM_REPORT_OBJID::VARCHAR
|
|
AND A.PART_NO::VARCHAR = B.OBJID::VARCHAR
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.REMARK,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
(SELECT EO_NO FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO) AS EO_NO,
|
|
(SELECT TO_CHAR(REG_DATE,'YYYY-MM-DD') FROM EO_MNG AS EO WHERE EO.OBJID::varchar = B.EO) AS EO_DATE,
|
|
THICKNESS,
|
|
WIDTH,
|
|
HEIGHT,
|
|
OUT_DIAMETER,
|
|
IN_DIAMETER,
|
|
LENGTH,
|
|
A.SEQ,
|
|
LEV + 1,
|
|
PATH||A.CHILD_OBJID::TEXT,
|
|
A.PARENT_OBJID = ANY(PATH),
|
|
B.MAKER
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
|
|
) A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO::varchar = B.OBJID::varchar
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
)
|
|
|
|
SELECT
|
|
V.BOM_REPORT_OBJID,
|
|
V.PARENT_PART_NO,
|
|
V.PART_NO,
|
|
V.REGDATE,
|
|
V.PART_NO_TITLE,
|
|
V.UNIT_TITLE,
|
|
V.PART_NAME,
|
|
V.QTY,
|
|
V.REV,
|
|
V.REMARK,
|
|
V.MATERIAL,
|
|
V.SPEC,
|
|
V.WEIGHT,
|
|
V.PART_OBJID,
|
|
V.EO_NO,
|
|
V.EO_DATE,
|
|
V.LEV,
|
|
V.LEV AS LEVEL,
|
|
V.PATH,
|
|
V.CYCLE,
|
|
(SELECT BOM_REPORT_OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1) AS SUB_ROOT_OBJID
|
|
,V.PART_NO_TITLE LPAD_PART_NO
|
|
,(
|
|
SELECT
|
|
CASE
|
|
WHEN COUNT(*) <![CDATA[ > ]]> 0 THEN 0
|
|
ELSE 1
|
|
END LEAF
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND V.PART_NO = VT.PARENT_PART_NO
|
|
) AS LEAF
|
|
,(SELECT COUNT(*) FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND V.PARENT_PART_NO = VT.PART_NO) AS SUB_PART_CNT
|
|
,(SELECT BOM_REPORT_OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1) AS ROOT_OBJID
|
|
,V.MAKER
|
|
FROM VIEW_BOM V
|
|
WHERE 1=1
|
|
ORDER BY SEQ ASC
|
|
<!-- BOM_REPORT_OBJID,REGDATE,PATH -->
|
|
</select>
|
|
|
|
<!-- //정전개 조회 쿼리 -->
|
|
<select id="selectStructureAscendingList" parameterType="map" resultType="map">
|
|
|
|
<!--
|
|
SELECT * FROM (
|
|
WITH V_QTY AS(
|
|
SELECT
|
|
BPQ.*
|
|
,(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO
|
|
,(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
)
|
|
-->
|
|
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
QTY,
|
|
QTY_TEMP,
|
|
DESIGN_DATE,
|
|
<!--
|
|
CHANGE_OPTION_NAME,
|
|
UNIT_TITLE,
|
|
-->
|
|
EO_NO,
|
|
EO_DATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
REV,
|
|
MATERIAL,
|
|
SUB_MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
PART_OBJID,
|
|
THICKNESS,
|
|
WIDTH,
|
|
HEIGHT,
|
|
OUT_DIAMETER,
|
|
IN_DIAMETER,
|
|
LENGTH,
|
|
LEV,
|
|
PATH,
|
|
PATH2,
|
|
CYCLE,
|
|
SEQ,
|
|
MAKER,
|
|
POST_PROCESSING,
|
|
PART_MNG_NO,
|
|
PARENT_PART_MNG_NO,
|
|
LAST_PART_OBJID
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
A.QTY,
|
|
A.QTY_TEMP,
|
|
B.DESIGN_DATE,
|
|
<!--
|
|
B.CHANGE_OPTION_NAME,
|
|
B.UNIT_TITLE,
|
|
-->
|
|
B.EO_NO,
|
|
B.EO_DATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
<!--
|
|
B.QTY,
|
|
-->
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SUB_MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.OBJID AS PART_OBJID,
|
|
B.THICKNESS,
|
|
B.WIDTH,
|
|
B.HEIGHT,
|
|
B.OUT_DIAMETER,
|
|
B.IN_DIAMETER,
|
|
B.LENGTH,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
ARRAY [A.SEQ::TEXT],
|
|
FALSE,
|
|
A.SEQ,
|
|
B.MAKER,
|
|
B.POST_PROCESSING,
|
|
A.PART_MNG_NO,
|
|
A.PARENT_PART_MNG_NO,
|
|
A.LAST_PART_OBJID
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*
|
|
,(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO
|
|
,(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
<!--
|
|
FROM V_QTY BQP
|
|
-->
|
|
WHERE (PARENT_PART_NO IS NULL OR PARENT_PART_NO = '')
|
|
<if test="customer_cd != null and !''.equals(customer_cd)">
|
|
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
|
|
WHERE R.CUSTOMER_OBJID = #{customer_cd}
|
|
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
|
|
</if>
|
|
<if test="project_name != null and !''.equals(project_name)">
|
|
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
|
|
WHERE R.CONTRACT_OBJID = #{project_name}
|
|
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
|
|
</if>
|
|
<if test="search_spec_name != null and !''.equals(search_spec_name)">
|
|
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
|
|
WHERE R.SPEC_NAME = #{search_spec_name}
|
|
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
|
|
</if>
|
|
<if test="unit_code != null and !''.equals(unit_code)">
|
|
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
|
|
WHERE R.UNIT_CODE = #{unit_code}
|
|
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
|
|
</if>
|
|
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND STATUS NOT IN ('deleting', 'deleted')
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
<!--
|
|
AND COALESCE(STATUS,'') IN ('beforeEdit', 'editing','deleting', 'deploy', '')
|
|
-->
|
|
</otherwise>
|
|
</choose>
|
|
) A,
|
|
PART_MNG B,
|
|
<!-- 231208 위로 바꿈(속도개선)
|
|
<include refid="partMngBase"/> B,
|
|
-->
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
<!-- 231208 아래 조건으로 변경(설변 전에는 마지막 PART로 연결해야 함)
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
-->
|
|
AND NVL(A.LAST_PART_OBJID, A.PART_NO) = B.OBJID
|
|
AND NVL(A.PARENT_OBJID, '') = ''
|
|
AND B.STATUS = 'release'
|
|
<!--
|
|
AND B.IS_LAST='1'
|
|
AND (C.STATUS = 'create' OR C.STATUS = 'deploy' AND B.IS_LAST='1')
|
|
-->
|
|
<if test="customer_cd != null and !''.equals(customer_cd)">
|
|
AND C.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
|
|
<if test="project_name != null and !''.equals(project_name)">
|
|
AND C.CONTRACT_OBJID = #{project_name}
|
|
</if>
|
|
|
|
<if test="search_spec_name != null and !''.equals(search_spec_name)">
|
|
AND C.SPEC_NAME = #{search_spec_name}
|
|
</if>
|
|
<if test="unit_code != null and !''.equals(unit_code)">
|
|
AND C.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="SEARCH_UNIT_NAME != null and !''.equals(SEARCH_UNIT_NAME)">
|
|
AND (SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = C.UNIT_CODE) LIKE '%' || #{SEARCH_UNIT_NAME} || '%'
|
|
</if>
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
A.QTY,
|
|
A.QTY_TEMP,
|
|
B.DESIGN_DATE,
|
|
<!--
|
|
B.CHANGE_OPTION_NAME,
|
|
B.UNIT_TITLE,
|
|
-->
|
|
B.EO_NO,
|
|
B.EO_DATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
<!--
|
|
B.QTY,
|
|
-->
|
|
B.REVISION AS REV,
|
|
B.MATERIAL,
|
|
B.SUB_MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.OBJID AS PART_OBJID,
|
|
B.THICKNESS,
|
|
B.WIDTH,
|
|
B.HEIGHT,
|
|
B.OUT_DIAMETER,
|
|
B.IN_DIAMETER,
|
|
B.LENGTH,
|
|
LEV + 1,
|
|
PATH||A.CHILD_OBJID::TEXT,
|
|
PATH2||A.SEQ::TEXT,
|
|
A.PARENT_OBJID = ANY(PATH),
|
|
A.SEQ,
|
|
B.MAKER,
|
|
B.POST_PROCESSING,
|
|
<!--
|
|
A.PART_MNG_NO,
|
|
A.PARENT_PART_MNG_NO,
|
|
-->
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = A.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = A.PARENT_PART_NO) AS PARENT_PART_MNG_NO,
|
|
A.LAST_PART_OBJID
|
|
FROM
|
|
<!--
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
WHERE 1=1
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND STATUS NOT IN ('deleting', 'deleted')
|
|
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
|
|
</when>
|
|
<otherwise>
|
|
AND STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
) A,
|
|
-->
|
|
BOM_PART_QTY A
|
|
,PART_MNG B
|
|
<!--
|
|
<include refid="partMngBase"/> B,
|
|
-->
|
|
,PART_BOM_REPORT C
|
|
,VIEW_BOM D
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.LAST_PART_OBJID = B.OBJID
|
|
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
AND A.STATUS NOT IN ('deleting', 'deleted')
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND A.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
<!--
|
|
AND B.IS_LAST = '1'
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
-->
|
|
<!--
|
|
AND A.PART_NO = B.OBJID
|
|
-->
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
)
|
|
SELECT
|
|
V.BOM_REPORT_OBJID,
|
|
V.PARENT_PART_NO,
|
|
V.REGDATE,
|
|
V.DESIGN_DATE,
|
|
<!--
|
|
V.CHANGE_OPTION_NAME,
|
|
-->
|
|
V.EO_NO,
|
|
V.EO_DATE,
|
|
(SELECT O.PART_NO FROM PART_MNG AS O WHERE O.OBJID = V.CHILD_OBJID) AS PART_NO_TITLE,
|
|
V.PART_NAME,
|
|
V.QTY,
|
|
V.QTY_TEMP,
|
|
V.REV,
|
|
V.MATERIAL,
|
|
V.SUB_MATERIAL,
|
|
V.WEIGHT,
|
|
V.PART_OBJID,
|
|
V.LEV,
|
|
V.LEV AS LEVEL,
|
|
B.REVISION,
|
|
B.PART_NO,
|
|
B.THICKNESS,
|
|
B.WIDTH,
|
|
B.HEIGHT,
|
|
B.OUT_DIAMETER,
|
|
B.IN_DIAMETER,
|
|
B.LENGTH,
|
|
B.SPEC,
|
|
B.REMARK,
|
|
B.UNIT_TITLE,
|
|
B.PART_TYPE_TITLE,
|
|
B.CU01_CNT AS FILE_3D_CNT,
|
|
B.CU02_CNT AS FILE_2D_CNT,
|
|
B.CU03_CNT AS FILE_PDF_CNT,
|
|
V.SEQ,
|
|
B.MAKER,
|
|
B.POST_PROCESSING,
|
|
V.PART_MNG_NO,
|
|
V.PARENT_PART_MNG_NO,
|
|
(
|
|
SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 0 THEN 0
|
|
ELSE 1
|
|
END LEAF
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND V.PART_MNG_NO = VT.PARENT_PART_MNG_NO
|
|
) AS LEAF
|
|
FROM
|
|
VIEW_BOM V
|
|
LEFT OUTER JOIN <include refid="partMngBase"/> B
|
|
ON V.PART_OBJID = B.OBJID
|
|
WHERE 1=1
|
|
|
|
<!--
|
|
<if test="search_level != null and !''.equals(search_level)">
|
|
AND ABCD.LEVEL <![CDATA[ >= ]]> #{search_level}::NUMERIC
|
|
</if>
|
|
-->
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(PART_MNG_NO) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
ORDER BY V.PATH2
|
|
<!--
|
|
ORDER BY V.SEQ
|
|
-->
|
|
<!--
|
|
) AS ABCD
|
|
WHERE 1=1
|
|
-->
|
|
|
|
|
|
</select>
|
|
|
|
<!--
|
|
//역전개 조회 쿼리
|
|
Level을 정전개를 통해가져온다.
|
|
-->
|
|
<select id="selectStructureDescendingList" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
DESIGN_DATE,
|
|
CHANGE_OPTION_NAME,
|
|
EO_DATE,
|
|
SUB_MATERIAL,
|
|
MATERIAL,
|
|
SPEC,
|
|
WEIGHT,
|
|
UNIT_TITLE,
|
|
PART_OBJID,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.DESIGN_DATE,
|
|
B.CHANGE_OPTION_NAME,
|
|
B.EO_DATE,
|
|
B.SUB_MATERIAL,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
PART_MNG B,
|
|
<!--
|
|
<include refid="partMngBase"/> B,
|
|
-->
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND (A.PARENT_PART_NO IS NULL OR A.PARENT_PART_NO = '')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
B.PART_NO AS PART_NO_TITLE,
|
|
B.PART_NAME,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.DESIGN_DATE,
|
|
<!--
|
|
B.CHANGE_OPTION_NAME,
|
|
-->
|
|
B.EO_DATE,
|
|
B.SUB_MATERIAL,
|
|
B.MATERIAL,
|
|
B.SPEC,
|
|
B.WEIGHT,
|
|
B.UNIT_TITLE,
|
|
B.OBJID AS PART_OBJID,
|
|
LEV + 1,
|
|
PATH||A.CHILD_OBJID::TEXT,
|
|
A.PARENT_OBJID = ANY(PATH)
|
|
FROM(
|
|
SELECT
|
|
BPQ.*,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
|
|
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
|
|
FROM BOM_PART_QTY BPQ
|
|
) A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
<!-- AND B.IS_LAST = '1' -->
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_MNG_NO = B.PART_NO
|
|
AND A.PARENT_OBJID = D.CHILD_OBJID
|
|
),VIEW_TEMP(
|
|
BOM_REPORT_OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
REGDATE,
|
|
PART_NO_TITLE,
|
|
PART_NAME,
|
|
QTY,
|
|
REV,
|
|
DESIGN_DATE,
|
|
CHANGE_OPTION_NAME,
|
|
EO_DATE,
|
|
SUB_MATERIAL,
|
|
MATERIAL,
|
|
WEIGHT,
|
|
PART_OBJID,
|
|
LEV,
|
|
PATH1,
|
|
PART_ARRAY1,
|
|
CYCLE1
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
A.PART_NO AS PART_NO_TITLE,
|
|
A.PART_NAME,
|
|
A.QTY,
|
|
A.REV,
|
|
A.DESIGN_DATE,
|
|
A.CHANGE_OPTION_NAME,
|
|
A.EO_DATE,
|
|
A.SUB_MATERIAL,
|
|
A.MATERIAL,
|
|
A.WEIGHT,
|
|
A.PART_OBJID,
|
|
1,
|
|
ARRAY[A.PART_NO::TEXT],
|
|
ARRAY[A.PART_NO] AS PART_ARRAY1,
|
|
FALSE
|
|
FROM
|
|
VIEW_BOM A,
|
|
PART_BOM_REPORT B
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID::INTEGER = B.OBJID
|
|
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(A.PART_NO_TITLE) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(A.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
UNION ALL
|
|
SELECT A.BOM_REPORT_OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.REGDATE,
|
|
A.PART_NO AS PART_NO_TITLE,
|
|
A.PART_NAME,
|
|
A.QTY,
|
|
A.REV,
|
|
A.DESIGN_DATE,
|
|
A.CHANGE_OPTION_NAME,
|
|
A.EO_DATE,
|
|
A.SUB_MATERIAL,
|
|
A.MATERIAL,
|
|
A.WEIGHT,
|
|
A.PART_OBJID,
|
|
C.LEV+1,
|
|
PATH||A.PART_NO::TEXT,
|
|
C.PART_ARRAY1,
|
|
A.PART_NO = ANY(PART_ARRAY1) AS CYCLE1
|
|
FROM VIEW_BOM A,
|
|
PART_BOM_REPORT B,
|
|
VIEW_TEMP C
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID::INTEGER = B.OBJID
|
|
AND A.CHILD_OBJID = C.PARENT_OBJID
|
|
AND A.BOM_REPORT_OBJID = C.BOM_REPORT_OBJID
|
|
)
|
|
SELECT
|
|
V.BOM_REPORT_OBJID,
|
|
V.PARENT_PART_NO,
|
|
V.REGDATE,
|
|
(SELECT O.PART_NO FROM PART_MNG AS O WHERE O.OBJID = V.PART_NO) AS PART_NO_TITLE,
|
|
V.PART_NAME,
|
|
V.QTY,
|
|
V.REV,
|
|
V.DESIGN_DATE,
|
|
V.CHANGE_OPTION_NAME,
|
|
V.EO_DATE,
|
|
V.SUB_MATERIAL,
|
|
V.MATERIAL,
|
|
V.WEIGHT,
|
|
V.PART_OBJID,
|
|
V.LEV,
|
|
V.LEV AS LEVEL,
|
|
|
|
B.PART_NO,
|
|
B.UNIT_TITLE,
|
|
B.EO_NO,
|
|
B.EO_DATE,
|
|
B.SPEC,
|
|
B.PART_TYPE_TITLE,
|
|
B.REMARK,
|
|
|
|
B.CU01_CNT AS FILE_3D_CNT,
|
|
B.CU02_CNT AS FILE_2D_CNT,
|
|
B.CU03_CNT AS FILE_PDF_CNT
|
|
FROM
|
|
VIEW_TEMP V
|
|
LEFT OUTER JOIN <include refid="partMngBase"/> B
|
|
ON V.PART_OBJID = B.OBJID
|
|
WHERE 1=1
|
|
ORDER BY
|
|
REGDATE DESC,
|
|
LEV,
|
|
PATH1
|
|
</select>
|
|
|
|
<!--
|
|
//역전개 조회 쿼리
|
|
Level을 정전개를 통해가져오지 않는다.
|
|
-->
|
|
<select id="selectStructureDescendingList2" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
OBJID,
|
|
PART_NO,
|
|
BOM_REPORT_OBJID,
|
|
PARENT_PART_NO,
|
|
LEV,
|
|
PATH,
|
|
PART_ARRAY,
|
|
CYCLE,
|
|
QTY,
|
|
REV,
|
|
EO_NO,
|
|
EO_ISSUE_DATE,
|
|
MATERIAL_NAME,
|
|
WEIGHT,
|
|
SIZE,
|
|
SURFACE_TREATMENT,
|
|
MOLD_DEV,
|
|
PART_OBJID
|
|
) AS (
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
1,
|
|
ARRAY[A.PART_NO::TEXT],
|
|
ARRAY[A.PART_NO] AS PART_ARRAY,
|
|
FALSE AS CYCLE,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.EO_NO,
|
|
B.EO_DATE AS EO_ISSUE_DATE,
|
|
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = B.MATERIAL AND O.PARENT_CODE_ID = #{MATERIAL_CODE}) AS MATERIAL_NAME,
|
|
B.WEIGHT,
|
|
B.SIZE,
|
|
B.SURFACE_TREATMENT,
|
|
B.MOLD_DEV,
|
|
B.OBJID AS PART_OBJID
|
|
FROM
|
|
PART_BOM_QTY A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
<!-- AND B.IS_LAST = 1 -->
|
|
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
|
|
AND C.OEM_OBJID = #{search_oemObjId}
|
|
</if>
|
|
<if test="search_carObjId != null and !''.equals(search_carObjId)">
|
|
AND C.CAR_OBJID = #{search_carObjId}
|
|
</if>
|
|
<if test="search_productObjId != null and !''.equals(search_productObjId)">
|
|
AND C.PRODUCT_OBJID = #{search_productObjId}
|
|
</if>
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(A.PART_NO) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(B.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
UNION ALL
|
|
|
|
SELECT
|
|
A.OBJID,
|
|
A.PART_NO,
|
|
A.BOM_REPORT_OBJID,
|
|
A.PARENT_PART_NO,
|
|
LEV + 1,
|
|
PATH||A.PART_NO::TEXT,
|
|
D.PART_ARRAY,
|
|
A.PART_NO = ANY(PART_ARRAY) AS CYCLE,
|
|
B.QTY,
|
|
B.REVISION AS REV,
|
|
B.EO_NO,
|
|
B.EO_DATE AS EO_ISSUE_DATE,
|
|
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = B.MATERIAL AND O.PARENT_CODE_ID = #{MATERIAL_CODE}) AS MATERIAL_NAME,
|
|
B.WEIGHT,
|
|
B.SIZE,
|
|
B.SURFACE_TREATMENT,
|
|
B.MOLD_DEV,
|
|
B.OBJID AS PART_OBJID
|
|
FROM
|
|
PART_BOM_QTY A,
|
|
<include refid="partMngBase"/> B,
|
|
PART_BOM_REPORT C,
|
|
VIEW_BOM D
|
|
WHERE 1=1
|
|
AND C.OBJID = A.BOM_REPORT_OBJID
|
|
AND A.PART_NO = B.PART_NO
|
|
AND A.PART_NO = D.PARENT_PART_NO
|
|
AND D.BOM_REPORT_OBJID = A.BOM_REPORT_OBJID
|
|
)
|
|
SELECT
|
|
V.LEV AS LEVEL
|
|
,V.LEV AS BASE_LEVEL
|
|
,V.LEV
|
|
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1) AS SUB_ROOT_OBJID
|
|
,V.PART_NO LPAD_PART_NO
|
|
,(
|
|
SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 0 THEN 0
|
|
ELSE 1
|
|
END LEAF
|
|
FROM VIEW_BOM VT
|
|
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
|
|
AND V.PART_NO = VT.PARENT_PART_NO
|
|
) AS LEAF
|
|
,V.OBJID
|
|
,V.PART_NO
|
|
,(SELECT PART_NAME FROM PART_MNG WHERE PART_NO = V.PART_NO) AS PART_NAME
|
|
,V.PARENT_PART_NO
|
|
,(SELECT COUNT(*) FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND V.PARENT_PART_NO = VT.PART_NO) AS SUB_PART_CNT
|
|
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1) AS ROOT_OBJID
|
|
,V.QTY
|
|
,V.REV AS REVISION
|
|
,V.REV
|
|
,V.EO_NO
|
|
,V.EO_ISSUE_DATE
|
|
,V.MATERIAL_NAME
|
|
,V.WEIGHT
|
|
,V.SIZE
|
|
,V.SURFACE_TREATMENT
|
|
,V.MOLD_DEV
|
|
,V.PART_OBJID
|
|
FROM VIEW_BOM V
|
|
WHERE 1=1
|
|
ORDER BY
|
|
BOM_REPORT_OBJID,
|
|
PATH
|
|
</select>
|
|
|
|
<!-- 선택된 구조등록을 삭제한다. -->
|
|
<delete id="deleteBomReport" parameterType="map">
|
|
DELETE FROM PART_BOM_REPORT
|
|
WHERE OBJID IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
</delete>
|
|
|
|
<!-- 선택된 구조등록 연결정보 삭제한다. -->
|
|
<delete id="deleteBomQty" parameterType="map">
|
|
<!-- DELETE FROM PART_BOM_QTY -->
|
|
DELETE FROM BOM_PART_QTY
|
|
WHERE BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
</delete>
|
|
|
|
<!-- 선택된 구조등록을 배포한다. -->
|
|
<update id="deployBomReport" parameterType="map">
|
|
UPDATE PART_BOM_REPORT
|
|
SET
|
|
DEPLOY_DATE = TO_CHAR(NOW(),'YYYY-MM-DD')
|
|
<!-- ,EO_DATE = TO_CHAR(NOW(),'YYYY-MM-DD')
|
|
,EO_NO = (SELECT 'EO'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),6,8)::INTEGER+1,1) FROM PART_MNG WHERE EO_NO IS NOT NULL)||'', 4,'0')) -->
|
|
,STATUS = 'deploy'
|
|
,REVISION = #{REVISION}
|
|
WHERE OBJID = #{checkArr}
|
|
</update>
|
|
|
|
<!-- 선택된 구조에 연결된 part를 배포한다. -->
|
|
<update id="deployPartInfo" parameterType="map">
|
|
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'
|
|
</update>
|
|
|
|
|
|
<!-- 선택된 구조등록 연결PART를 삭제한다.. -->
|
|
<delete id="deleteBomQtyPart" parameterType="map">
|
|
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
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
)
|
|
</delete>
|
|
|
|
|
|
<!-- 구조변경시 BomReport의 상태값을 변경한다. -->
|
|
<update id="changeStatusBomReport" parameterType="map">
|
|
UPDATE PART_BOM_REPORT
|
|
SET
|
|
STATUS = (CASE WHEN STATUS != 'create' THEN 'changeDesign' ELSE STATUS END)
|
|
WHERE OBJID = #{BOM_REPORT_OBJID}
|
|
</update>
|
|
|
|
<!-- 구조변경시 BomReport의 상태값을 변경한다. -->
|
|
<update id="changeStatusBomReportByPartNo" parameterType="map">
|
|
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>
|
|
|
|
<!-- 구조변경시 BomReport의 상태값을 변경한다. -->
|
|
<update id="changeStatusBomReportByPartObjid" parameterType="map">
|
|
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>
|
|
|
|
<select id="selectBomPartQtyInfoByWorkingPartObjid" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT Q.BOM_REPORT_OBJID
|
|
FROM BOM_PART_QTY Q
|
|
,PART_MNG P
|
|
,PART_MNG P2
|
|
WHERE 1=1
|
|
AND P.OBJID = #{OBJID}
|
|
AND P.STATUS IN ('create', 'changing')
|
|
AND Q.STATUS IN ('beforeEdit')
|
|
AND P.PART_NO = P2.PART_NO
|
|
AND P2.OBJID = Q.PART_NO
|
|
</select>
|
|
|
|
<!-- 선택된 구조등록을 배포한다. -->
|
|
<update id="deployBomPartQty" parameterType="map">
|
|
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')
|
|
</update>
|
|
|
|
<update id="deployBomPartQtyDelete" parameterType="map">
|
|
DELETE FROM BOM_PART_QTY
|
|
WHERE BOM_REPORT_OBJID = #{checkArr}
|
|
AND COALESCE(STATUS, '') = 'deleting'
|
|
</update>
|
|
|
|
<!-- 구조 배포시 하위 연결된 PART의 EO 및 EODATE를 업데이트 한다. -->
|
|
<update id="deployPartEoDate" parameterType="map">
|
|
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,
|
|
<!-- EO_NO = (SELECT 'EO'||TO_CHAR(NOW(),'yy')::VARCHAR ||'-'||LPAD((SELECT COALESCE(SUBSTR(MAX(EO_NO),6,8)::INTEGER+1,1) FROM part_mng WHERE EO_NO IS NOT NULL)||'', 4,'0')), -->
|
|
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 PM.EO_NO IS NULL
|
|
-->
|
|
AND COALESCE(PM.EO_NO, '') = ''
|
|
AND BOM_REPORT_OBJID = #{checkArr}
|
|
)
|
|
</update>
|
|
|
|
<update id="deployPartHisStatus" parameterType="map">
|
|
UPDATE PART_MNG_HISTORY
|
|
SET
|
|
BOM_STATUS = 'deploy'
|
|
,BOM_DEPLOY_DATE = NOW()
|
|
WHERE BOM_REPORT_OBJID = #{checkArr}
|
|
</update>
|
|
|
|
<!-- 구조 배포시 하위 연결된 PART의 CONTRACT_OBJID를 업데이트 한다. -->
|
|
<update id="deployPartContractObjid" parameterType="map">
|
|
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}
|
|
)
|
|
</update>
|
|
|
|
<!-- 파트 설변요청 파일 인써트 -->
|
|
<insert id="insertChangeDesignPartFile" parameterType="map">
|
|
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
|
|
</insert>
|
|
|
|
<!-- // part no가 있는지 체크 -->
|
|
<select id="getPART_NOCnt" parameterType="map" resultType="map">
|
|
SELECT COUNT(*) AS CNT
|
|
FROM PART_MNG
|
|
WHERE 1=1
|
|
AND PART_NO = #{PART_NO}
|
|
</select>
|
|
|
|
<!-- //countExcelpart 상세조회 -->
|
|
<select id="countExcelpart" parameterType="map" resultType="map">
|
|
SELECT
|
|
(
|
|
SELECT COUNT(*) FROM
|
|
(SELECT T.* ,
|
|
(SELECT COUNT(1) FROM part_mng AS PM WHERE PM.part_no = T.real_part_no AND PM.revision = COALESCE(T.revision, '')) AS CNT
|
|
FROM (SELECT DISTINCT
|
|
T.PART_NO,
|
|
char_length(T.PART_NO),
|
|
substring(T.PART_NO,char_length(T.PART_NO)-1),
|
|
CASE WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R1'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R2'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R3'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R4'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R5'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R6'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R7'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R8'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R9'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R01'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R02'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R03'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R04'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R05'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R06'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R07'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R08'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R09'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R10'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R11'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R12'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R13'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R14'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R15'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R16'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R17'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R18'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R19'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R20'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R21'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R22'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R23'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R24'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R25'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
ELSE T.part_no
|
|
END AS real_part_no,
|
|
CASE WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R1'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R2'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R3'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R4'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R5'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R6'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R7'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R8'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R9'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R01'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R02'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R03'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R04'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R05'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R06'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R07'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R08'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R09'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R10'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R11'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R12'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R13'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R14'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R15'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R16'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R17'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R18'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R19'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R20'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R21'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R22'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R23'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R24'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R25'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
ELSE NULL
|
|
END AS revision,
|
|
|
|
T.PART_NAME,
|
|
T.UNIT,
|
|
T.QTY,
|
|
T.SPEC,
|
|
T.MATERIAL,
|
|
T.WEIGHT,
|
|
T.PART_TYPE,
|
|
T.REMARK,
|
|
T.SEQ::numeric
|
|
FROM part_mng_temp AS T
|
|
WHERE PART_REPORT_OBJID = #{targetObjId}::integer) AS T
|
|
ORDER BY SEQ ASC) AS T
|
|
WHERE T.cnt > 0
|
|
|
|
) AS dup_cnt,
|
|
(
|
|
SELECT COUNT(*) FROM
|
|
(SELECT T.* ,
|
|
(SELECT COUNT(1) FROM part_mng AS PM WHERE PM.part_no = T.real_part_no AND PM.revision = COALESCE(T.revision, '')) AS CNT
|
|
FROM (SELECT DISTINCT
|
|
T.PART_NO,
|
|
char_length(T.PART_NO),
|
|
substring(T.PART_NO,char_length(T.PART_NO)-1),
|
|
CASE WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R1'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R2'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R3'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R4'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R5'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R6'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R7'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R8'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R9'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R01'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R02'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R03'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R04'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R05'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R06'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R07'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R08'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R09'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R10'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R11'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R12'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R13'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R14'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R15'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R16'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R17'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R18'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R19'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R20'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R21'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R22'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R23'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R24'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R25'::VARCHAR THEN substring(T.PART_NO,0,char_length(T.PART_NO)-2)
|
|
ELSE T.part_no
|
|
END AS real_part_no,
|
|
CASE WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R1'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R2'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R3'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R4'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R5'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R6'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R7'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R8'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-1)::VARCHAR = 'R9'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-1,1)||'0'||substring(T.PART_NO,char_length(T.PART_NO),1)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R01'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R02'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R03'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R04'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R05'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R06'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R07'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R08'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R09'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R10'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R11'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R12'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R13'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R14'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R15'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R16'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R17'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R18'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R19'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R20'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R21'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R22'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R23'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R24'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
WHEN substring(T.PART_NO,char_length(T.PART_NO)-2)::VARCHAR = 'R25'::VARCHAR THEN substring(T.PART_NO,char_length(T.PART_NO)-2)
|
|
ELSE NULL
|
|
END AS revision,
|
|
|
|
T.PART_NAME,
|
|
T.UNIT,
|
|
T.QTY,
|
|
T.SPEC,
|
|
T.MATERIAL,
|
|
T.WEIGHT,
|
|
T.PART_TYPE,
|
|
T.REMARK,
|
|
T.SEQ::numeric
|
|
FROM part_mng_temp AS T
|
|
WHERE PART_REPORT_OBJID = #{targetObjId}::integer) AS T
|
|
ORDER BY SEQ ASC) AS T
|
|
WHERE T.cnt = 0
|
|
|
|
) AS now_cnt
|
|
|
|
</select>
|
|
|
|
<!-- 도면 연결 배치대상 파트목록 조회 -->
|
|
<select id="getBatchTargetPartList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="partMngBase"/> T
|
|
WHERE 1=1
|
|
AND T.CU_TOTAL_CNT <![CDATA[ < ]]> 3
|
|
</select>
|
|
|
|
|
|
<select id="getSourceBomPartList" parameterType="map" resultType="map">
|
|
SELECT
|
|
parent_objid
|
|
,child_objid
|
|
,parent_part_no
|
|
,part_no
|
|
,qty::varchar
|
|
,seq::varchar
|
|
FROM BOM_PART_QTY T
|
|
WHERE BOM_REPORT_OBJID = #{REV}
|
|
</select>
|
|
|
|
<!-- Part 삭제 -->
|
|
<delete id="deleteBomPart" parameterType="map">
|
|
DELETE FROM BOM_PART_QTY WHERE BOM_REPORT_OBJID = #{TARGET_REV}
|
|
</delete>
|
|
|
|
|
|
<insert id="insertBomCopyData" parameterType="map">
|
|
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>
|
|
|
|
|
|
<insert id="insertPartBomReport" parameterType="map">
|
|
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}
|
|
)
|
|
</insert>
|
|
|
|
<select id="structureAscendingList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) AS RNUM,
|
|
AA.*
|
|
FROM (
|
|
SELECT DISTINCT
|
|
PBM.OBJID,
|
|
PBM.PRODUCT_MGMT_OBJID,
|
|
PBM.PRODUCT_MGMT_SPEC,
|
|
PBM.PRODUCT_MGMT_UPG,
|
|
PBM.PRODUCT_MGMT_VC,
|
|
PBM.STATUS,
|
|
CASE UPPER(PBM.STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
PBM.WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = PBM.WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PBM.WRITER) AS USER_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID = PBM.PRODUCT_MGMT_OBJID) AS PRODUCT_CODE,
|
|
PBM.REV,
|
|
PBM.SPEC_NAME,
|
|
PBM.REGDATE AS REGDATE_ORG,
|
|
TO_CHAR(PBM.REGDATE, 'YYYY-MM-DD') AS REGDATE,
|
|
PBM.DEPLOY_DATE,
|
|
PBM.WRITER,
|
|
INFO.*,
|
|
(SELECT COUNT(*) FROM SALES_BOM_PART_QTY WHERE BOM_REPORT_OBJID = A.BOM_REPORT_OBJID) AS PART_CNT,
|
|
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = SBP.WRITER) AS SALES_DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SBP.WRITER) AS SALES_USER_NAME,
|
|
|
|
SBP.REGDATE AS SALES_REGDATE_ORG,
|
|
TO_CHAR(SBP.REGDATE, 'YYYY-MM-DD') AS SALES_REGDATE
|
|
|
|
FROM BOM_PART_QTY A
|
|
|
|
LEFT JOIN SALES_BOM_REPORT SBP
|
|
ON A.BOM_REPORT_OBJID = SBP.BOM_REPORT_OBJID::TEXT
|
|
|
|
LEFT JOIN PART_BOM_REPORT PBM
|
|
ON A.BOM_REPORT_OBJID = PBM.OBJID::TEXT
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
PMUD.*,
|
|
(SELECT model_CODE FROM product_mgmt_model O1
|
|
WHERE O1.product_category = (SELECT o.product_category from product_mgmt o WHERE o.objid = PMUD.product_objid)
|
|
AND O1.MODEL_NAME = (SELECT o.PRODUCT_CODE from product_mgmt o WHERE o.objid = PMUD.product_objid)
|
|
)||PMUD.UPG_CODE||'-'||PMUD.VC AS UPG_NO
|
|
FROM(
|
|
SELECT
|
|
DISTINCT
|
|
PMUD.OBJID AS DETAIL_OBJID,
|
|
PMUD.OBJID::VARCHAR AS CODE,
|
|
PMUD.UPG_NAME,
|
|
PMUD.UPG_NAME AS NAME,
|
|
PMUD.UPG_CODE AS CODE_CD,
|
|
PMUD.NOTE,
|
|
|
|
PMUD.TARGET_OBJID AS MASTER_OBJID,
|
|
PMUD.VC,
|
|
PMUD.PRODUCT_OBJID,
|
|
PMUD.UPG_CODE,
|
|
(SELECT SPEC_NAME FROM PRODUCT_MGMT_UPG_MASTER PMUM WHERE 1=1 AND PMUM.OBJID = PMUD.TARGET_OBJID) AS SPEC_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT PM WHERE 1=1 AND PM.OBJID = PMUD.PRODUCT_OBJID) AS PRODUCT_CODE
|
|
FROM
|
|
PRODUCT_MGMT_UPG_DETAIL PMUD
|
|
WHERE 1=1
|
|
) PMUD
|
|
) INFO
|
|
ON PBM.PRODUCT_MGMT_OBJID = INFO.PRODUCT_OBJID
|
|
AND PBM.PRODUCT_MGMT_SPEC = INFO.MASTER_OBJID
|
|
AND PBM.PRODUCT_MGMT_UPG = INFO.UPG_NO
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON A.PART_NO = PM.OBJID::TEXT
|
|
WHERE 1=1
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PBM.PRODUCT_MGMT_OBJID::VARCHAR = #{product_code}::VARCHAR
|
|
</if>
|
|
<if test="product_mgmt_spec != null and product_mgmt_spec != ''">
|
|
AND PBM.SPEC_NAME::VARCHAR = #{product_mgmt_spec}::VARCHAR
|
|
</if>
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND PBM.PRODUCT_MGMT_UPG = #{upg_no}
|
|
</if>
|
|
<if test="search_partNo != null and !''.equals(search_partNo)">
|
|
AND UPPER(PM.PART_NO) LIKE UPPER('%${search_partNo}%')
|
|
</if>
|
|
<if test="search_partName != null and !''.equals(search_partName)">
|
|
AND UPPER(PM.PART_NAME) LIKE UPPER('%${search_partName}%')
|
|
</if>
|
|
) AA
|
|
</select>
|
|
|
|
|
|
<update id="structureSeqSave" parameterType="map">
|
|
UPDATE BOM_PART_QTY SET SEQ = #{SEQ}::numeric WHERE CHILD_OBJID = #{CHILD_OBJID}
|
|
</update>
|
|
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="partMngDeployList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY PART_NO) RNUM,
|
|
P.*,
|
|
T3.CHANGE_OPTION_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
|
|
|
|
FROM PART_MNG_HISTORY 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 STATUS = 'Active'
|
|
) AF
|
|
ON P.OBJID::varchar = AF.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 ('3D_CAD')
|
|
AND STATUS = 'Active'
|
|
) CAD
|
|
ON P.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 P.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 P.OBJID::varchar = PDF.TARGET_OBJID::varchar
|
|
|
|
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
|
|
|
|
WHERE 1=1
|
|
AND P.status='release'
|
|
|
|
|
|
<if test="product_code != null and product_code != ''">
|
|
AND PRODUCT_MGMT_OBJID = #{product_code}
|
|
</if>
|
|
|
|
<if test="upg_no != null and upg_no != ''">
|
|
AND UPG_NO = #{upg_no}
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_MATERIAL != null and SEARCH_MATERIAL != ''">
|
|
AND UPPER(MATERIAL) LIKE UPPER('%${SEARCH_MATERIAL}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_PART_TYPE != null and SEARCH_PART_TYPE != ''">
|
|
AND PART_TYPE = #{SEARCH_PART_TYPE}
|
|
</if>
|
|
|
|
<if test="SEARCH_DESIGN_DATE_FROM != null and SEARCH_DESIGN_DATE_FROM != ''">
|
|
AND TO_DATE(DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> #{SEARCH_DESIGN_DATE_FROM}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_DESIGN_DATE_TO != null and SEARCH_DESIGN_DATE_TO != ''">
|
|
AND TO_DATE(DESIGN_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DESIGN_DATE_TO}::TIMESTAMP
|
|
</if>
|
|
<if test="SEARCH_WRITER != null and SEARCH_WRITER != ''">
|
|
AND WRITER = #{SEARCH_WRITER}
|
|
</if>
|
|
|
|
|
|
<if test="EO != null and EO != ''">
|
|
AND EO_TEMP IS NULL OR EO_TEMP = ''
|
|
</if>
|
|
</select>
|
|
|
|
<!-- OBJID 추출 -->
|
|
<select id="getPartObjid" parameterType="string" resultType="map">
|
|
SELECT
|
|
OBJID::VARCHAR AS PART_OBJID
|
|
FROM PART_MNG
|
|
WHERE IS_LAST='1'
|
|
AND PART_NO=#{PART_NO}
|
|
</select>
|
|
|
|
|
|
<!-- BOM_PART_QTY OBJID 추출 -->
|
|
<select id="getBomPartQtyObjid" parameterType="string" resultType="map">
|
|
SELECT
|
|
BPQ.CHILD_OBJID
|
|
FROM BOM_PART_QTY AS BPQ
|
|
WHERE BOM_REPORT_OBJID =#{BOM_REPORT_OBJID}
|
|
AND BPQ.PART_NO IN (SELECT OBJID::VARCHAR FROM PART_MNG AS O WHERE O.PART_NO = #{PART_NO})
|
|
AND COALESCE(STATUS, '') NOT IN ('deleting', 'deleted')
|
|
</select>
|
|
|
|
|
|
<insert id="insertpartInfo" parameterType="map">
|
|
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>
|
|
|
|
<!-- 계약제품, 업체명으로 BOM에 등록된 부품정보 조회 -->
|
|
<select id="partLinkedBomContractList" parameterType="map" resultType="map">
|
|
SELECT P.OBJID AS PART_OBJID
|
|
,P.PART_NO AS DO_NO
|
|
,(SELECT SUM(I.QTY) FROM INVENTORY_MNG I, RESOURCE_MNG RM
|
|
WHERE RM.OBJID = I.PARENT_OBJID
|
|
AND I.IS_LAST = 'Y'
|
|
AND RM.PART_OBJID::INTEGER = P.OBJID
|
|
GROUP BY I.PARENT_OBJID
|
|
) AS INVEN_TOTAL_QTY
|
|
,P.*
|
|
FROM PART_BOM_REPORT PBR
|
|
,BOM_PART_QTY BPQ
|
|
,PART_MNG P
|
|
,PRODUCT_MGMT PDM
|
|
,CONTRACT_MGMT CM
|
|
WHERE PBR.OBJID = BPQ.BOM_REPORT_OBJID::NUMERIC
|
|
AND BPQ.CHILD_OBJID::NUMERIC = P.OBJID
|
|
AND PBR.PRODUCT_MGMT_OBJID = PDM.OBJID
|
|
AND PDM.PRODUCT_CODE = CM.PRODUCT_CODE
|
|
<if test="contract_mgmt_objid != null and contract_mgmt_objid != ''">
|
|
AND CM.OBJID = #{contract_mgmt_objid}::NUMERIC /*계약번호*/
|
|
</if>
|
|
<if test="supply_code != null and supply_code != ''">
|
|
AND P.SUPPLY_CODE = #{supply_code} /*공급업체*/
|
|
</if>
|
|
</select>
|
|
|
|
|
|
|
|
<!-- rev버젼 추출 -->
|
|
<select id="getBOMContractinfo" parameterType="string" resultType="map">
|
|
SELECT
|
|
(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PRODUCT) AS PRODUCT_NAME
|
|
,PRODUCT
|
|
,CUSTOMER_PROJECT_NAME
|
|
FROM PROJECT_MGMT
|
|
WHERE OBJID =#{project_name}
|
|
</select>
|
|
|
|
<select id="partMngHistList" parameterType="map" resultType="map">
|
|
SELECT PM.OBJID
|
|
,PM.EO_NO
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS YEAR
|
|
,COALESCE(CM.CUSTOMER_PROJECT_NAME, CM2.CUSTOMER_PROJECT_NAME) AS PROJECT_NAME
|
|
,COALESCE(CM2.PROJECT_NO, CM.PROJECT_NO) PROJECT_NO
|
|
,(SELECT PART_NO||' '||PART_NAME FROM PART_MNG SP WHERE SP.OBJID = PM.PARENT_PART_NO) PARENT_PART_INFO
|
|
<!-- ,PM.PART_NO -->
|
|
,CASE WHEN CHANGE_OPTION = '0001790' THEN PM.PART_NO || '->' || PM.CHG_PART_NO
|
|
ELSE PM.PART_NO
|
|
END
|
|
,PM.PART_NAME
|
|
,CASE WHEN CHANGE_OPTION = '0001790' THEN PM.PART_NAME || '->' || (SELECT PART_NAME FROM PART_MNG P WHERE P.OBJID = PM.CHG_PART_OBJID::VARCHAR)
|
|
ELSE PM.PART_NAME
|
|
END
|
|
,PM.BOM_QTY_STATUS
|
|
,CASE WHEN PM.BOM_QTY_STATUS = 'adding' THEN PM.QTY_TEMP
|
|
ELSE PM.QTY END QTY
|
|
,CASE
|
|
WHEN PM.BOM_QTY_STATUS = 'adding' THEN ''
|
|
WHEN PM.BOM_QTY_STATUS = 'beforeEdit' and PM.QTY = PM.QTY_TEMP THEN ''
|
|
ELSE PM.QTY_TEMP END QTY_TEMP
|
|
,'' AS EO_STEP
|
|
,PM.CHANGE_TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PM.CHANGE_TYPE) AS CHANGE_TYPE_NAME
|
|
,PM.CHANGE_OPTION
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PM.CHANGE_OPTION) AS CHANGE_OPTION_NAME
|
|
<!-- ,PM.REVISION -->
|
|
,CASE WHEN CHANGE_OPTION = '0001790' THEN PM.REVISION || '->' || PM.CHG_PART_REV
|
|
ELSE PM.REVISION
|
|
END
|
|
,PM.EO_DATE
|
|
,PM.PART_TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PM.PART_TYPE) AS PART_TYPE_NAME
|
|
,PM.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) AS WRITER_NAME
|
|
,WTS.UNIT_NO || '-' || WTS.TASK_NAME AS UNIT_NAME
|
|
,TO_CHAR(PM.HIS_REG_DATE,'YYYY-MM-DD') AS HIS_REG_DATE_TITLE
|
|
,BOM_DEPLOY_DATE
|
|
,TO_CHAR(PM.BOM_DEPLOY_DATE,'YYYY-MM-DD') AS BOM_DEPLOY_DATE_TITLE
|
|
FROM PART_MNG_HISTORY PM
|
|
LEFT OUTER JOIN PROJECT_MGMT CM
|
|
ON PM.CONTRACT_OBJID = CM.OBJID
|
|
LEFT OUTER JOIN PART_BOM_REPORT B
|
|
ON PM.BOM_REPORT_OBJID = B.OBJID
|
|
LEFT OUTER JOIN PROJECT_MGMT CM2
|
|
ON B.CONTRACT_OBJID = CM2.OBJID
|
|
LEFT OUTER JOIN PMS_WBS_TASK WTS
|
|
ON B.UNIT_CODE = WTS.OBJID
|
|
WHERE 1=1
|
|
<!-- 파트 신규등록건 조회 제외 -->
|
|
AND NOT ( PM.HIS_STATUS = 'DEPLOY'
|
|
AND PM.CHANGE_TYPE IS NULL
|
|
AND PM.REVISION = 'RE')
|
|
AND PM.REVISION IS NOT NULL
|
|
AND NVL(PM.BOM_STATUS, '') = 'deploy'
|
|
<!--
|
|
-->
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE, 'YYYY') = #{Year}
|
|
</if>
|
|
<if test="contract_objid !=null and contract_objid != '' ">
|
|
AND CM.OBJID = #{contract_objid}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND B.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="part_no !=null and part_no != '' ">
|
|
<!--
|
|
AND PM.PART_NO = #{part_no}
|
|
-->
|
|
AND UPPER(PM.PART_NO) LIKE UPPER('%${part_no}%')
|
|
</if>
|
|
<if test="part_name !=null and part_name != '' ">
|
|
<!--
|
|
AND PM.PART_NAME = #{part_name}
|
|
-->
|
|
AND UPPER(PM.PART_NAME) LIKE UPPER('%${part_name}%')
|
|
</if>
|
|
<if test="change_option !=null and change_option != '' ">
|
|
AND PM.CHANGE_OPTION = #{change_option}
|
|
</if>
|
|
<if test="eo_start_date !=null and eo_start_date != '' ">
|
|
AND TO_DATE(PM.EO_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{eo_start_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="eo_end_date !=null and eo_end_date != '' ">
|
|
AND TO_DATE(PM.EO_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{eo_end_date} , 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="change_type !=null and change_type != '' ">
|
|
AND PM.CHANGE_TYPE = #{change_type}
|
|
</if>
|
|
<if test="part_type !=null and part_type != '' ">
|
|
AND PM.PART_TYPE = #{part_type}
|
|
</if>
|
|
<if test="writer_id !=null and writer_id != '' ">
|
|
AND PM.WRITER = #{writer_id}
|
|
</if>
|
|
<if test="STATUS != null and STATUS != ''">
|
|
AND PM.STATUS = #{STATUS}
|
|
</if>
|
|
<if test="STATUS_NQ != null and STATUS_NQ != ''">
|
|
AND PM.STATUS != #{STATUS_NQ}
|
|
</if>
|
|
<if test="SEARCH_TYPE != null and SEARCH_TYPE != '' and 'CHANGE_LIST'.equals(SEARCH_TYPE) ">
|
|
AND ( PM.STATUS != 'create'
|
|
AND COALESCE(PM.REVISION, '') != ''
|
|
)
|
|
</if>
|
|
|
|
ORDER BY COALESCE(PM.HIS_REG_DATE, PM.REG_DATE) DESC, PM.PART_NO
|
|
</select>
|
|
|
|
|
|
<insert id="insertpartfileInfo" parameterType="map">
|
|
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>
|
|
|
|
<!-- is last 업데이트 -->
|
|
<update id="updateislast" parameterType="map">
|
|
UPDATE
|
|
PART_MNG
|
|
SET
|
|
IS_LAST = '0'
|
|
WHERE PART_NO = #{PART_NO}
|
|
</update>
|
|
<update id="updateislastByBomPartQty" parameterType="map">
|
|
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 STATUS IN ('editing')
|
|
-->
|
|
AND P.OBJID = Q.PART_NO
|
|
AND P.STATUS IN ('changeDesign')
|
|
)
|
|
</update>
|
|
|
|
|
|
<!-- PART 관리 목록 조회 -->
|
|
<select id="parttypeInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
CODE_ID
|
|
FROM COMM_CODE
|
|
WHERE CODE_NAME=#{CODE_NAME}
|
|
AND PARENT_CODE_ID='0000062'
|
|
</select>
|
|
|
|
<!-- 배포 사유 저장 -->
|
|
<update id="saveChangeDesignInfo" parameterType="map">
|
|
UPDATE PART_BOM_REPORT SET NOTE = #{NOTE}
|
|
<!-- 240326 아래 다건 적용
|
|
WHERE OBJID = #{OBJID}
|
|
-->
|
|
WHERE <![CDATA[ POSITION(OBJID||',' in #{OBJID}||',') > 0 ]]>
|
|
</update>
|
|
|
|
<select id="relatePartMng" parameterType="map" resultType="map">
|
|
SELECT
|
|
*
|
|
FROM
|
|
BOM_PART_QTY
|
|
WHERE 1=1
|
|
AND BOM_REPORT_OBJID = #{}
|
|
</select>
|
|
|
|
|
|
|
|
<!-- 백업 240710-->
|
|
<sql id="sql_adminDeleteBomWhere">
|
|
</sql>
|
|
<insert id="bak_insertDelPartBom" parameterType="map">
|
|
INSERT INTO PART_BOM_REPORT_DEL
|
|
SELECT * FROM PART_BOM_REPORT
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
</insert>
|
|
<insert id="bak_insertDelPartMng" parameterType="map">
|
|
INSERT INTO PART_MNG_DEL
|
|
SELECT * FROM PART_MNG P
|
|
WHERE EXISTS (
|
|
SELECT 'E' FROM BOM_PART_QTY Q
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE Q.BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE Q.BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 'E' FROM BOM_PART_QTY Q
|
|
<if test="OBJID != null">
|
|
WHERE Q.BOM_REPORT_OBJID != #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE Q.BOM_REPORT_OBJID NOT IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
AND (Q.LAST_PART_OBJID = P.OBJID OR Q.PART_NO = P.OBJID)
|
|
<!--
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID
|
|
-->
|
|
)
|
|
</insert>
|
|
<insert id="bak_insertDelPartQty" parameterType="map">
|
|
INSERT INTO BOM_PART_QTY_DEL
|
|
SELECT * FROM BOM_PART_QTY
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
</insert>
|
|
<!-- 삭제 -->
|
|
<delete id="deletePartBom" parameterType="map">
|
|
DELETE FROM PART_BOM_REPORT
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
</delete>
|
|
<delete id="deletePartMng" parameterType="map">
|
|
DELETE FROM PART_MNG P
|
|
WHERE EXISTS (
|
|
SELECT 'E' FROM BOM_PART_QTY Q
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE Q.BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE Q.BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 'E' FROM BOM_PART_QTY Q
|
|
<if test="OBJID != null">
|
|
WHERE Q.BOM_REPORT_OBJID != #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE Q.BOM_REPORT_OBJID NOT IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
AND (Q.LAST_PART_OBJID = P.OBJID OR Q.PART_NO = P.OBJID)
|
|
<!--
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID
|
|
-->
|
|
)
|
|
</delete>
|
|
<delete id="deletePartQty" parameterType="map">
|
|
DELETE FROM BOM_PART_QTY
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
</delete>
|
|
<!-- 삭제 복구 -->
|
|
<insert id="res_insertPartBom" parameterType="map">
|
|
INSERT INTO PART_BOM_REPORT
|
|
SELECT * FROM PART_BOM_REPORT_DEL
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
</insert>
|
|
<insert id="res_insertPartMng" parameterType="map">
|
|
INSERT INTO PART_MNG
|
|
SELECT * FROM PART_MNG_DEL P
|
|
WHERE EXISTS (
|
|
SELECT 'E' FROM BOM_PART_QTY_DEL Q
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE Q.BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE Q.BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
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
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE Q.BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE Q.BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = P.OBJID
|
|
AND SP.OBJID = NVL(Q.LAST_PART_OBJID, Q.PART_NO)
|
|
)
|
|
</insert>
|
|
<insert id="res_insertPartQty" parameterType="map">
|
|
INSERT INTO BOM_PART_QTY
|
|
SELECT * FROM BOM_PART_QTY_DEL
|
|
<if test="OBJID = null and checkArr = null">
|
|
WHERE 1=2
|
|
</if>
|
|
<if test="OBJID != null">
|
|
WHERE BOM_REPORT_OBJID = #{OBJID}
|
|
</if>
|
|
<if test="checkArr != null">
|
|
WHERE BOM_REPORT_OBJID IN
|
|
<foreach collection="checkArr" item="fobjid" index="index" separator="," open="(" close=")">
|
|
'${fobjid}'
|
|
</foreach>
|
|
</if>
|
|
</insert>
|
|
|
|
<select id="existPartNoCheck" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM PART_MNG T
|
|
WHERE 1=1
|
|
<!-- AND T.OBJID != #{OBJID} -->
|
|
<!-- AND IS_LONGD = '1' -->
|
|
AND REPLACE(TRIM(UPPER(T.PART_NO)), ' ', '') = REPLACE(TRIM(UPPER(#{partNo})), ' ', '')
|
|
</select>
|
|
|
|
<insert id="changeRelatePartInfo" parameterType="map">
|
|
UPDATE BOM_PART_QTY
|
|
SET LAST_PART_OBJID = #{RIGHT_OBJID}
|
|
WHERE BOM_REPORT_OBJID = #{BOM_REPORT_OBJID}
|
|
AND OBJID = #{B_OBJID}
|
|
</insert>
|
|
|
|
<update id="insertPartChangeHistory" parameterType="map">
|
|
INSERT INTO PART_MNG_HISTORY
|
|
(
|
|
SELECT
|
|
P.OBJID::numeric,
|
|
P.PRODUCT_MGMT_OBJID,
|
|
P.UPG_NO,
|
|
P.PART_NO,
|
|
P.PART_NAME,
|
|
P.UNIT,
|
|
<!--
|
|
P.QTY,
|
|
(CASE WHEN (Q.QTY_TEMP IS NULL OR Q.QTY_TEMP = '') THEN P.QTY ELSE Q.QTY_TEMP END),
|
|
-->
|
|
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,
|
|
<!--
|
|
P.PARENT_PART_NO,
|
|
#{PARENT_PART_NO},
|
|
'',
|
|
-->
|
|
(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
|
|
<!--
|
|
,PART_MNG PM1
|
|
-->
|
|
WHERE PM2.OBJID = Q.PART_NO
|
|
<!--
|
|
AND PM1.IS_LAST = '1'
|
|
AND PM1.PART_NO = PM2.PART_NO
|
|
-->
|
|
)
|
|
AND BOM_REPORT_OBJID = '801248820'
|
|
<choose>
|
|
<when test="HIS_STATUS != null and !''.equals(HIS_STATUS) and 'DEPLOY'.equals(HIS_STATUS)">
|
|
<!-- 설변대상 PART에서 온 건 -->
|
|
AND Q.STATUS = 'beforeEdit'
|
|
<!--
|
|
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
-->
|
|
</when>
|
|
<when test="HIS_STATUS != null and !''.equals(HIS_STATUS) and 'DEL'.equals(HIS_STATUS)">
|
|
</when>
|
|
<when test="HIS_STATUS != null and !''.equals(HIS_STATUS) and 'ADD'.equals(HIS_STATUS)">
|
|
</when>
|
|
<otherwise>
|
|
</otherwise>
|
|
</choose>
|
|
|
|
WHERE P.OBJID = #{BOM_REPORT_OBJID}
|
|
)
|
|
</update>
|
|
|
|
</mapper> |